Messenger auf Linux Server

11/30/2015 13:58 Ares#1
Guten Mittag,

ich versuche mich gerade an der Idee, einen verschlüsselten Messenger für Smartphone & PC auf einem Linux Server zu installieren. Das heißt praktisch eine Messenger App alá WhatsApp, Signal, Threema & Co. + einen Client für PC oder über eine Website. Da die Konversationen mit beiden Clients sichtbar sein sollten, wird es wohl auf eine Client-Server-Verschlüsselung hinauslaufen (wenn das möglich sein sollte). Mein erster Ansatz war XMPP, da es offenbar bereits Clients für beide gibt. Geht das in die richtige Richtung bzw. ist so etwas überhaupt möglich?

Edit: Alternativ wären natürlich auch irgendwelche Fertiglösungen möglich, allerdings hat Signal afaik noch kein Desktop Client.
11/30/2015 14:32 Der-Eddy#2
Man kann seinen [Only registered and activated users can see links. Click Here To Register...], dadurch schafft man schon mal eine sichere TLS Verbindung zum Server

Zusätzlich kann man die Verbindung zwischen einander [Only registered and activated users can see links. Click Here To Register...]
Ein XMPP cmd client der das unterstützt wäre z.B. [Only registered and activated users can see links. Click Here To Register...]

Eine Liste an XMPP Clients (inklusive Browser Clients), findest du hier: [Only registered and activated users can see links. Click Here To Register...]
12/01/2015 13:03 -Tap-#3
das meiste hat zwar Eddy schon gesagt, ich empfehle dir aber Pidgin als Client. Dieser bietet dir z.B. auch [Only registered and activated users can see links. Click Here To Register...] als Plugin an.
12/01/2015 16:01 Zypr#4
Du brauchst [Only registered and activated users can see links. Click Here To Register...] und eine vernünftige Config.

Die hier nutze ich aktiv auf meinen Server. Ich nutze keinen Datentransfer darüber, deshalb müsstest du dir das entsprechende Modul und den Dienst dazu selber einstellen, wenn du es nutzen möchtest.




Module:
[Only registered and activated users can see links. Click Here To Register...]


Clients:
[Only registered and activated users can see links. Click Here To Register...]

Ich kann persönlich ChatSecure unter iOS/Android und Pidgin unter Windows/Linux empfehlen. Wenn du es webbasiert haben möchtest, dann kann ich dir [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] empfehlen. Ich habe beide nur "kurz" angetestet, nutze allerdings keine webbasierte Platform mehr.
12/03/2015 10:47 Ares#5
Ist das besser als Openfire?
12/03/2015 13:02 Zypr#6
Openfire = Java
Prosody = Lua

Ich bin ein Fan von leichtgewichtigen Systemen, deshalb ist Openfire für mich persönlich keine Option. Wenn du eine Alternative suchst, dann kannst du dir noch ejabberd anschauen.

Hier kannst du sehen, dass Openfire kaum genutzt wird:

[Only registered and activated users can see links. Click Here To Register...]
12/03/2015 21:24 Ares#7
Hab Prosody jetzt mal installiert, aber immer noch ein paar Fragen:
- Was bewirkt daemonize = true bei posix? Hab's mir durchgelesen, aber nicht ganz verstanden. (Du hast übrigens 2x posix).
- Bezüglich authentication stand in der Doku: "Once hashed, there is no way to go back to plain storage without resetting all users' passwords". Für mich hört sich das jetzt so an, als müsste man alle Passwörter resetten, wenn einer sein Passwort vergisst oder ist das dann wirklich nur bei einem?
- Muss man c2s_ports oder s2s_ports angeben oder nutzt er die default Ports? Benutzt default Ports
- Laut dieser schlauen Wikipedia-Tabelle ist Conversations etwas besser als ChatSecure Gerade gesehen, dass das was kostet
12/04/2015 00:23 Zypr#8
Quote:
Originally Posted by Ares View Post
- Was bewirkt daemonize = true bei posix? Hab's mir durchgelesen, aber nicht ganz verstanden. (Du hast übrigens 2x posix).
daemonize=true bewirkt, dass Prosody im RC-Skript in den Hintergrund rutscht und als Daemon agiert.
[Only registered and activated users can see links. Click Here To Register...]


Quote:
Originally Posted by Ares View Post
- Bezüglich authentication stand in der Doku: "Once hashed, there is no way to go back to plain storage without resetting all users' passwords". Für mich hört sich das jetzt so an, als müsste man alle Passwörter resetten, wenn einer sein Passwort vergisst oder ist das dann wirklich nur bei einem?
Du kannst das Passwort eines einzelnen Users ändern.

Code:
prosodyctl passwd JID
12/04/2015 17:01 Ares#9
Ich kann leider keine verschlüsselte Verbindung mehr aufbauen. Gestern Abend ging es komischerweise noch und ich habe nichts geändert.

Meine Config:

Hab's ohne und mit Legacyauth und Legacy SSL Port probiert.

Auszug prosody.log:

Teilweise steht auch da "Client connected" und in der selben Sekunde "Client disconnected".
Wenn ich in ChatSecure die verschlüsselte Verbindung aktivieren will, lädt der Balken einfach nur unendlich lange und nichts passiert. Und unverschlüsselt kann ich es ja eh nicht nutzen.

Edit:
// Freundschaftsanfragen kommen an

Noch mal dem Verständnis halber: Müssen beide Clients online sein, um verschlüsselt zu schreiben (auch wenn man vorher schon mal verschlüsselt geschrieben hat)? Also muss die Verschlüsselung praktisch immer neu aufgebaut werden?
12/05/2015 11:34 snafu#10
Ich weiß, dass es bei Otr in Pidgin so ist. Dort wird glaube ich auch mit dem Session key encrypted.
12/06/2015 00:16 Zypr#11
Prosody unterstützt von sich aus Offlinenachrichten, es sei denn du deaktivierst das.

[Only registered and activated users can see links. Click Here To Register...]

Wenn du die Schlüssel bereits ausgetauscht hast und beide Seite diese bestätigt haben, kannst du auch Nachrichten versenden, wenn ein Teilnehmer offline ist. Wenn der andere Teilnehmer wieder online kommt, wird die Nachricht von dem Server vermittelt. Wenn sich der Schlüssel nicht geändert hat, dann wird die Nachricht entschlüsselt und ist somit lesbar. Wenn nicht, sieht es so aus:

Code:
?OTR:AAIDAAAAAAEAAAACAAAAwCJkRqcjQvr/AgxOtKmpoMSAo8/zmlgYKpmVRhxFEQVCTs/m14r+dld9RHOtFX+YUfuGQjomGYrgNXbHSf7zPrRnQsoU12He0CzwRNpf1BqbqjSLXszdxtlvA2vfqaaKuJTV4WTCHuBi9YdllQ2dghgagdPCyZwjGTi2cu+soN2n6zfgVlkN5b5GUOY1/zmKRQmmLTCxf1jmCWsqK7vskmpJoxIc1b3So7V9iSAixOfgsO2cqRF/TayU6Y45FEhADgAAAAAAAAACAAAAAuyeaeTKM6pI6hM6PFD+H5FmzdxifMwAAAAA.