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

Dezentralität

  • Peer-to-Peer

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

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

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

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

XMPP

Adressierung

JID (Jabber ID) genannt:

node@domain/ressource

URI-Format: (falls MUC mit ?join am Ende)

xmpp:node@domain?join

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

Software Clients

Empfehlungen:

  • Conversations (Android)
    • Pix-Art Messenger
  • ChatSecure (iPhone)
  • Gajim (Desktop)
  • ConverseJS (WebClient)
  • Viele mehr

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 nötigen Funktionen von Haus aus
    • sehr gut gewartet
  • OpenFire in Java

Ist der Hoster gut

Tools zum Testen des Servers (Auswahl an Servern)

XEPs:

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

XMPP

Verschlüsselung

  • Off-The-Record
  • OpenPGP
  • OX
  • OMEMO

Detailert: here

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

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)

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.