@title[Dezentrales Messenger (XMPP)] @snap[midpoint]

Dezentrale Messenger


The very last word in instant messaging

(Motto vom XMPP-Client Converations) @snapend --- ## Agenda - Dezentralität - XMPP - Der Standard - Software (Client und Server) - Ist der Hoster gut - Verschlüsselung - Ausblick - Alternativen --- ## Dezentralität - **Peer-to-Peer** Geräte tauschen direkt miteinander Nachrichten aus (ohne eine zentrale Componente) - **Federation** Kommunikation über zentrale Komponenten Note: **P2P** - Postkasten, jeder kann zum Empfänger gehen und selbst etwas in den Kasten werfen. (wenn es keine Post gibt) **Federation** - E-Mail (ISP: benutzer@hoster.de) - Telefonnummern (Addr: hat oftmals die ersten Ziffern für sich reserviert) --- ## Dezentralität #### Warum notwendig? - Eröffnet einen Wettbewerb - kleine und viele Angriffsziele - vor Kriminelle - vor Regierungen - alle Überwachen - blockieren / sperren (Zensur) - Verringert Missbrauch durch Vertrauen Note: - _Eröffnet einen Wettbewerb:_ damit Fortschritt für neue Marktteilnehmer (Gewinne gehen zum größten Teile in die USA) - Entscheidungen: z.B. nur noch auf Englisch, Mark Zuckerberg darf Nachrichten löschen - _Angriffsziele:_ - Hacker können nicht alle Server kompromentieren - Regierungen können nicht - den Zugang zu allen Servern verlangen (NSA - Snowden) - alle Server blockieren (Telegram - Russland) - _Verringert Missbrauch durch vertrauen_ - **Auswirkung:** nicht alle Daten können **geklaut** oder **analysiert** werden - Analysiert zur Manipulation (Werbung oder Politisch, siehe Cambridge Analytica) - **Bei Missbrauch** leichterer Wechsel --- ## Dezentralität #### Nachteile - Komplexität steigt - Gewollte Verringerung an Marktanteil - Kann auch von kriminellen Elementen genutzt werden Note: - _Komplexität steigt:_ Da nicht nur Clients sondern auch Server untereinander sicher (Ausfall, Vertrauensvoll) kommunizieren müssen. --- ## XMPP - Existiert seit 1999 - IETF Standard seit 2002 - Google Talk 2005 - 2013 (entwickelte Jingle) - Facebook 2010 - 2014 - WhatsApp nutzt es intern Note: - Jingle: - Aushandlung von Datenverbindung (angelehnt an SIP) - für: Datenaustausch, Video/Voice-Chat, ... --- ## XMPP #### Adressierung JID (Jabber ID) genannt: ``` node@domain/ressource ``` URI-Format: (falls MUC mit `?join` am Ende) ``` xmpp:node@domain?join ``` Note: - MUC (Multi User Chat): Gruppenchat **Als User** - benutzer@server/gerät **In MUC** - chatraum@muc-server/nickame **Transport** - ganz unterschiedlich --- ## XMPP **Message** ```xml Hello World ``` Types: - chat - groupchat - headline - normal - error --- ## XMPP **Present**: Aktuelle Live Informationen ```xml ``` Types: - error - probe - subscribe(d) - unavailable - unsubscribe(d) --- ## XMPP **IQ** (Instant Query): Abfragen mit Rückantworten ```xml ``` Types: - get - set - result - error Note: - Der Inhalt der XML-Element ist im RFC nicht vorgegeben und kann für viele Funktionen genutzt werden. --- ## Software Clients #### Empfehlungen: - Conversations (Android) - Pix-Art Messenger - ChatSecure (iPhone) - Gajim (Desktop) - ConverseJS (WebClient) - Viele mehr - mit [OMEMO](https://omemo.top) - [alle](https://xmpp.org/software/clients.html) --- ## Software Clients Bombus - Client in J2ME für normale Telefone Wikipedia - Article Java --- ## Software Server - **prosody** in lua - leicht erweiterbar - riesige Sammlung an erweiterbaren Modulen (die man nutzen muss) - **ejabberd** (Fork: mongooseIM) in erlang - besitzt alle Funktionen von Haus aus - sehr gut gewartet - **OpenFire** in Java --- ## Ist der Hoster gut Auswahl des richtigen Servers - [Compliance](https://compliance.conversations.im/) ([support Alles](https://compliance.conversations.im/api/compliant_servers/) / API) - [Status](https://status.conversations.im/historical/) für S2S + Uptime XEPs: - PEP / PubSub - MAM (für MUC) - HTTP-Upload - DNS-SRV for TLS (HTTPS) Note: - Personal Eventing Protocol: Geolocation, Mood, Activity, Tune - Message Archive Management: - Vorteil gegenüber: Threema und WhatsApp (mit OMEMO auch gegenüber Telegram) - OMEMO: Neue Geräte können alte Nachrichten nicht entschlüsseln - HTTP-Upload: Offline und in MUC Datenaustausch - "umgeht" Firewalls --- ## XMPP ### Verschlüsselung - Off-The-Record - OpenPGP - OX - OMEMO Detailert: [here](https://conversations.im/omemo) Note: - Neben TLS (SSL) --- ## XMPP Verschlüsselung - Geräte erstellt **asynchrones** Schlüsselpaar - öffentlichen Schlüssel wird per PubSub auf dem Server hinterlegt - Kontakte werden durch PEP / PubSub über neuen Schlüssel informiert - Dieser muss diesen öffentlichen Schlüssel laden Note: - synchrone: entspricht einem Passwort, was allen Gesprächsteilnehmern bekannt ist. - asynchrone: mathematisches Verfahren mit Schlüsselpaaren (öffentlicher und privater Schlüssel) - Kontakte = Roster - den **neuen oder weiteren** öffentlichen Schlüssel - Signiert und Verschlüsselt - zurückziehen des Schlüssels --- @snap[midpoint]

Demo

[Anleitung](https://media.kuketz.de/blog/artikel/2016/conversations/Anleitung_Conversations_V1.1_CC-BY-SA.pdf) @snapend --- ## Ausblick - Transports - Biboumi: IRC - Spectrum2: e.g AIM, ICQ, MSN, Yahoo, Telegram, Twitter, "WhatsApp" - Commands - Internet of Things [XEP-Liste](https://xmpp.org/extensions/) letzter Eintrag: XEP-0410: MUC Self-Ping (Schrödinger's Chat) Note: - Transport WhatsApp Warnung, vor Protokolländerungen und Sperrungen --- ## Alternativen zu XMPP #### Peer-to-Peer - Nutzen das Tor netzwerk - **Tox** - **Briar** - kann auch Local per Wifi und Bluetooth arbeiten - ... (viele mehr) - libp2p - (mir sonst keine Weiteren bekannt ...) --- ## Alternativen zu XMPP #### Federation - **Matrix** (Riot): - Änderungsvorschläge am Protokoll werden durch das Unternehmen entschieden - (mir sonst keine Weiteren bekannt ...) --- @snap[midpoint]

Ende

Hackerethik

3. **Mißtraue Autoritäten – fördere Dezentralisierung.** @snapend