## Dezentrale Messenger

#### The very last word in instant messaging

(Motto vom XMPP-Client Converations)

genofire - Chaos Computer Club Bremen e.V.

## Agenda

- Dezentralität
- XMPP - Der Standard
- Software (Client und Server)
- Ist der Hoster gut
- Verschlüsselung
- Ausblick
- Alternativen

## Dezentralität

- vs. Zentralität

Leider von den meisten Messenger verwendet

## Dezentralität

- Federation

Kommunikation über verschieden unabhängige zentrale Komponenten

Federation - E-Mail (ISP: benutzer@hoster.de) - Telefonnummern (Addr: hat oftmals die ersten Ziffern für sich reserviert)

## Dezentralität

- Peer-to-Peer

Geräte tauschen direkt miteinander Nachrichten aus (ohne eine zentrale Componente)

P2P - Postkasten, jeder kann zum Empfänger gehen und selbst etwas in den Kasten werfen. (wenn es keine Post gibt)

## Dezentralität

#### Warum notwendig?

- Eröffnet ein Wettbewerb
- kleine und viele Angriffsziele
  - vor Kriminelle
  - vor Regierungen
  - alle Überwachen
  - blockieren / sperren (Zensur)
- Verringert Missbrauch durch Vertrauen

- Eröffnet einen Wettbewerb: damit fortschritt (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
- Nutzer müssen ggf. sich Ihre Adresse und Passwort merken

- Komplexität steigt: Da nicht nur Clients, sondern auch Server untereinander sicher (Ausfall, vertrauensvoll) kommunizieren müssen.
- kriminellen Elementen: wie bei jeder Technologie kann diese auch von Bösen genutzt werden.
- … sich merken: allerdings müssen Sie dies auch für Ihre E-Mail-Adresse, was noch Standard im Internet ist.

### Extensible Messaging and Presence Protocol (XMPP)

- Existiert seit 1999 (unter den Namen Jabber)

- IETF Standard seit 2002

- Google Talk 2005 - 2013 (entwickelte Jingle)

- Facebook 2010 - 2014

- WhatsApp nutzt es intern

- 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

- MUC (Multi User Chat): Gruppenchat

Als User

- benutzer@server/gerät

In MUC

- chatraum@muc-server/nickame

Transport - ganz unterschiedlich

## XMPP

Message

    <message from="geno@fireorbit.de"
     to="#ccchb@irc.hackint.org" type="groupchat">
    	Hello World
    </message>

Types:

- chat
- groupchat
- headline
- normal
- error

## XMPP

Present: Aktuelle Live Informationen

    <present to="#ccchb@irc.hackint.org" type="subscribe">
    </present>

Types:

- error
- probe
- subscribe(d)
- unavailable
- unsubscribe(d)

## XMPP

IQ (Instant Query): Abfragen mit Rückantworten

    <iq to="irc.hackint.org" type="get">
    	<ping xmlns='urn:xmpp:ping'/>
    </iq>

Types:

- get
- set
- result
- error

- Die Inhalte, die in diesen XML-Elementen drin sind, werden 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
  - alle

## Software Clients

Bombus - Client in J2ME für normale Telefone

## Software Server

- prosody in lua

  - leicht erweiterbar
  - riesige Sammlung an erweiterbaren Modulen (die man nutzen muss)

- ejabberd (Fork: mongooseIM) in erlang

  - besitzt alle nötigen Funktionen von Haus aus
  - sehr gut gewartet

- OpenFire in Java

## Ist der Hoster gut

Tools zum Testen des Servers (Auswahl an Servern)

- Compliance (support Alles / API)
- Status für S2S + Uptime

XEPs:

- PEP / PubSub
- MAM (für MUC)
- HTTP-Upload
- DNS-SRV for TLS (HTTPS)

- 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

- 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

- 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

# Demo

Anleitung

## Ausblick

- Transports
  - Biboumi: IRC
  - Spectrum2: e.g AIM, ICQ, MSN, Yahoo, Telegram, Twitter, “WhatsApp”
- PubSub
  - Blogging / Posting (siehe Movim)
- Commands
  - Internet of Things

XEP-Liste letzter Eintrag: XEP-0410: MUC Self-Ping (Schrödinger’s Chat)

- 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 genutzt werden
  - … (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 …)

# Ende

#### Hackerethik

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