XMPP

XMPP (Extensible Messaging and Presence Protocol) ist eine offene XML Technologie für die Echtzeitkommunikation.

XMPP Webseite Conversations App

Das Protokoll

Damit wir untereinander Daten austauschen können, müssen Programme dieselbe Sprache sprechen. Ein Kommunikationsprotokoll dient als Regelwerk, welches den Vorgang der Kommunikation zwischen den Endpunkten exakt beschreibt. HTTP und SMTP sind bekannte Beispiele, die wie XMPP zur Internetprotokollfamilie gehören. HTTP wird verwendet, um Webseiten aus dem World Wide Web in einen Webbrowser zu laden. SMTP ist ein einfaches E-Mail-Transportprotokoll, um den Austausch von E-Mails in Computernetzen zu ermöglichen. Genauso wie zum Laden von Webseiten und Versenden von E-Mails gibt es einen offenen Standard für Instant Messaging (IM):
Das XMPP-Protokoll (früher Jabber) mit seinen Erweiterungen (XEPs) unterstützt Funktionen zur Nachrichtenübermittlung, Dateiübertragung, Gruppenchats und wird von unzähligen Instant-Messengern verwendet. Durch den Zusammenschluss unterschiedlichster Betreiber zu einer offenen Kommunikationsplattform können Nachrichten Serverübergreifend an alle Benutzer, die über einen Jabber IDentifier (JID) verfügen, gesendet werden. Die JID (johndoe@swissjabber.ch) kann mit einer E-Mail Adresse verglichen werden. Der Benutzer jondoe ist somit beim Server swissjabber.ch registriert.

Dem offenen Protokoll ist es zu verdanken, dass für fast jedes Betriebssystem ein entsprechender XMPP-Client zur Verfügung steht. Leider wird das Protokoll nicht von jeder Client-Anwendung (Messenger) vollumfänglich unterstützt. So beschränkt sich die App Chatsecure unter iOS im Moment lediglich auf die Basisfunktionen.

Der Facebook-Chat und Whatsapp basieren auf dem XMPP-Protokoll. Auch Google und Microsoft haben diesen Standard eine zeitlang unterstützt. Bis zum Mai 2015 war es XMPP Teilnehmer möglich, mittels XMPP API mit Facebook-Benutzern zu chatten. Ein Jahr nach der WhatsApp-Übernahme deaktivierte Facebook die API.
Im Unterschied zu den gängigen XMPP-CLients wird die JID bei Whatsapp nach der Installation der App anhand der Telefonnummer automatisch generiert (Telefonnummer@s.whatsapp.net). Über den Adressbuchabgleich der Telefonnummern können nun alle Kontakte gefunden werden, welche bei WhatsApp registriert sind. Diese praktische Funktion ist aus Sicht des Datenschutzes extrem fragwürdig.

Föderation vs. Zentralisierung

Obwohl das Internet dezentral funktioniert werden viele Dienste zentralisiert und die Kontrolle darüber liegt in den Händen ein paar weniger Grosskonzerne.
Dabei bietet Föderation gegenüber der Zentralisierung etliche Vorteile. In den meisten Fällen betreibt jede Firma einen eigenen Mailserver, auch habe ich als Benutzer die Möglichkeit ein Konto bei unterschiedlichen E-Mail-Anbietern zu eröffnen und trotz dezentraler Struktur, kann ich eine E-Mail an alle Teilnehmer jeglicher Anbieter zustellen. Es spielt keine Rolle welche Server- (Postfix, Exchange, Kolab, Lotus Notes etc.) beziehungsweise Clientsoftware (Thunderbird, Outlook, K-9 Mail etc.) eingesetzt wird. Sogar der Zugriff mittels Webinterface wird für alle Webbrowser (Firefox, Opera, Safari etc.) zur Verfügung gestellt. Alle Client- und Serveranwendungen können über das SMTP-Protokoll miteinander kommunizieren. Bei den sogenannten Walled-Gardens (ummauerter Garten, geschlossene Ökosysteme) wie Whatsapp, Facebook, Threema, Signal, Telegram usw. kann ich mich nur in deren Kosmos mit deren Anwendung unterhalten. Diese geschlossenen Inselsysteme wiedersprechen einem gemeinschaftlichen und freien Internet. Der Benutzer macht sich von einem einzigen Anbieter abhängig und ist in deren Blase gefangen.

Ohne Föderation könntest du E-Mails nur mit Personen austauschen, die denselben Anbieter (Mailbox, Gmail, GMX etc.) verwenden. Auch das Telefonieren wäre nur mit den Kunden eines gemeinsamen Netzbetreibers möglich. Oder stell dir vor, du bräuchtest für jede Webseite eine eigene Anwendung. Protokolle wie SMTP (Mail), HTTP (Internet) und XMPP (Kommunikation) sind offene Standards, die an keinen Anbieter (Server), Betriebssystem oder Anwendung gebunden sind und stehen somit nicht unter der Kontrolle einer einzigen Firma. Sollte ich mit dem Angebot eines E-Mail-Anbieters unzufrieden sein oder werden die AGB’s zu meinem Nachteil angepasst, kann ich diesen wechseln und bin trotzdem für alle erreichbar.

Wir müssen weg von zentralen und proprietären Lösungen hin zu freien und offenen Protokollen. Nur aufgrund des unglaublich hohen Marktanteils von Whatsapp nehmen wir die Mauern der Zentralisierung nicht mehr wahr.

Zentralisierung, Föderation, Punkt-zu-Punkt

Open-Source vs. Closed-Source

Quelloffen bedeutet nicht zwangsläufig, dass eine Software sicherer ist, aber die Möglichkeit den Code einzusehen bietet zumindest die Option für mehr Sicherheit. Leider fehlt der Open Source Community in manchen Fällen die nötigen Ressourcen um den Code sauber zu auditieren. Die Haltung, irgendwer hat das bestimmt geprüft, der Code ist schliesslich einsehbar bringt eben keine Sicherheit.
Aber gerade bei sicherheitsrelevanten Anwendungen ist Open-Source essentiell, da die stärkste Verschlüsselung nichts hilft, wenn durch Hintertüren in Closed-Source die Schlüsselinformationen entwendet werden. Das Maximum an Vertrauen kann NUR eine Quelloffene Anwendung bieten. Ohne die Möglichkeit, den Code zu prüfen, ist es praktisch unmöglich, Hintertüren zu entdecken.

Ziele der Kryptographie

Zum Schutz von Datenbeständen, Nachrichten und Übertragungskanälen gibt es in der Kryptographie vier Hauptziele.

  • Vertraulichkeit/Zugriffsschutz
    Vertraulichkeit ist in der Informationssicherheit der Schutz vor unbefugter Preisgabe von Informationen. Daten dürfen nur von berechtigen Personen gelesen werden.
  • Integrität/Änderungsschutz
    Die Integrität soll verhindern, dass Daten unautorisiert modifiziert werden.
  • Authentizität/Fälschungsschutz
    Authentizität bezeichnet die Eigenschaften der Echtheit, Überprüfbarkeit und Vertrauenswürdigkeit. Damit Nachrichten einem Sender bzw. Gerät zugeordnet werden können, muss der Fingerprint überprüft werden.
  • Verbindlichkeit/Nichtabstreitbarkeit
    Die Verbindlichkeit verhindert unzulässiges Abstreiten durchgeführter Handlungen. Es geht darum, sicher zu stellen, dass der Absender einer Nachricht nicht leugnen kann, dass er diese geschickt hat.

Auswahlkriterien

  • Kryptografie
    • Ende-zu-Ende-Verschlüsselung (E2E)
      Unter Ende-zu-Ende-Verschlüsselung versteht man die Verschlüsselung übertragener Daten über alle Übertragungsstationen hinweg. Bis auf den Versender und Empfänger hat niemand Zugriff auf den Dateninhalt (Vertraulichkeit). kuketz-blog.de - Grenzen der E2E Verschlüsselung
    • Folgenlosigkeit
      Sollte ein Angreifer irgendwann im Besitz meines privaten Schlüssels (Langzeitschlüssel) sein, kann er dank PFS (Perfect Forward Secrecy) die abgefangenen Pakete in der Vergangenheit sowie Zukunft trotzdem nicht entschlüsseln. Mit dem privaten Schlüssel werden Kurzzeitschlüssel erzeugt, die zur Verschlüsselung von Nachrichten ständig getauscht werden.
    • Glaubhafte Abtretbarkeit
      Glaubhafte Abtretbarkeit steht im Gegensatz zur Verbindlichkeit, ist aber zentral, damit sich nicht nachweisen lässt, ob eine Person einen bestimmten Schlüssel tatsächlich genutzt hat. Mir kann nicht bewiesen werden, dass ich zum Zeitpunkt Y mit der Person X in Kontakt war.
      Damit Politiker nicht zur Verantwortung gezogen werden können, ist dieses Konzept in Form von Führungsstrukturen und Befehlsketten seit jeher bekannt ;).
  • Metadaten
    Daten über Daten zu sammeln, ist für Unternehmen und Geheimdienste ein vorrangiges Ziel. Metadaten sagen sehr viel über eine Person aus und sollten so gut wie möglich vermieden werden.
    • Adressbuch
      Das Adressbuch (Telefonnummern) darf nicht vom Anbieter abgegriffen werden.
    • Identifier
      Aus datenschutzrechtlicher Sicht sollte ein alternativer Identifier und auf keinen Fall die Telefonnummer verwendet werden. Eine Telefonnummer wird nicht anonym vergeben!
  • Bezugsquelle
    Es sollte die Möglichkeit bestehen, die Anwendung ohne Apple-ID oder GMAIL-Adresse über F-Droid oder direkt beim Anbieter zu beziehen.
  • Dezentralisierung
    Das Internet mit den unterschiedlichsten offenen und einheitlichen Standards, ist wohl das bedeutendste dezentrale Netzwerk. Auch das kommunizieren über dieses Netzwerk sollte unabhängig von einer zentralen Stelle möglich sein. Sei es, in Form eines Peer-to-Peer Netzwerkes, wo die Teilnehmer direkt miteinander kommunizieren können oder über frei wählbare Server, die dank Föderation miteinander verbunden sind.
  • Quelloffen
    Überall wo personenbezogene Daten verarbeitet werden, muss Quelloffene Software eingesetzt werden.
  • Sicherheitsaudit
    Regelmässige Sicherheitsaudits des Quellcodes.
  • Plattformunabhängig
    Der Messenger sollte auf den gängigen Plattformen zur Verfügung stehen.
Quelle: kuketz-blog.de - Conversations: Sicherer Android Messenger

OMEMO Verschlüsselung

Die XMPP Erweiterung OMEMO steht für Multi-Client-Ende-zu-Ende-Verschlüsselung. Nebst Ende-zu-Ende Verschlüsselung bietet OMEMO Perfect Forward Secrecy sowie glaubhafte Abtretbarkeit. Bei OMEMO muss man sich nicht auf die Benutzeridentität verlassen, sondern kann den Kommunikationspartner mittels Geräteidentität verifizieren.
Der OMEMO-Fingerprint identifiziert den öffentlichen Geräteschlüssel des Gesprächspartners und wird beim Erhalt der ersten Nachricht eingeblendet. Mit der Verifizierung des Fingerabdrucks über einen anderen Kanal wird sichergestellt, dass eine sichere Verbindung der beiden Endgeräte aufgebaut wurde. Mit diesem Verfahren kann ein Man-in-the-Middle-Angriff ausgeschlossen werden.

Welche Clients OMEMO unterstützen, kannst du auf folgender Seite entnehmen: omemo.top

XMPP-Konto (JID) einrichten

Wie beim Einrichten einer Mailadresse muss auch hier ein Anbieter eines XMPP-Server gewählt werden. Unter XMPP.net wird eine entsprechende Serverliste angeboten. Beim trashserver.net kannst du dich direkt über die Webseite registrieren. Die Registrierung einer JID kann auch innerhalb des Client durchgeführt werden. Eine umfangreiche Liste von Clients (Apps) wird von der XMPP Foundation zur Verfügung gestellt.

Client-Empfehlung

Android: Conversations
iOS: Chatsecure
Linux: Gajim
Windows: Gajim
MacOS: Pidgin
Browser: Converse.JS

Server-Empfehlung

Eine Liste mit XMPP-Server die gut gewartet, immer die neusten Features unterstützen und in einem deutschen Datencenter betrieben werden, findest du auf der Seite von Daniel Gultsch:
gultsch.de - compliance ranked

Quellen und weiterführende Links