So funktioniert's

WebRTC Peer-to-Peer-Chat, erklärt

Nach dem Handshake steht kein Server mehr im Weg — es gibt also nichts zu speichern und nichts herauszugeben. Hier siehst du genau, was das Backend sieht, und die drei Dinge, die Peer-to-Peer dir nicht garantiert.

Peer-to-Peer-Raum öffnen

Der Server macht nur die Vorstellung

Jede Chat-App, die du je genutzt hast, funktioniert im Kern gleich: Deine Nachricht geht hoch zum Server eines Unternehmens, der Server behält sie, und gibt sie dann an die andere Person weiter. Verschlüsselung entscheidet nur, wer diese Kopie lesen kann. Die Kopie existiert trotzdem.

Ein WebRTC-DataChannel überspringt genau diesen mittleren Schritt. Zwei Browser handeln eine direkte, verschlüsselte Verbindung aus, und sobald die steht, geht deine Nachricht ohne Umweg von deinem Gerät zu ihrem. FadeChats betreibt zwar einen Server, aber der arbeitet wie eine Telefonvermittlung: Er reicht den beiden Browsern die Details weiter, die sie brauchen, um sich zu finden, und ist danach aus dem Gespräch raus.

Das ist der ganze Trick, und deshalb gibt es auf dieser Seite keinen Button "Meine Daten löschen". Es gibt keine Nachrichtentabelle, aus der gelöscht werden müsste.

Zwei Menschen stehen nachts unter einer Straßenlaterne an einer Straßenecke und reden
Signaling ist jemand, der euch zueinander zeigt. Danach seid nur noch ihr beide da.Pexels · .M.Q Huang

Was zwischen dem Öffnen der Seite und der ersten Nachricht passiert

  1. Dein Browser schreibt ein Angebot

    Er baut ein SDP-Angebot, das den unterstützten Transport beschreibt, plus den Fingerabdruck eines Zertifikats, das er für diese Sitzung erzeugt hat. Das Angebot geht an den FadeChats-Server, geparkt unter einer zufälligen Raum-ID.

  2. Der andere Browser antwortet

    Dein Gast öffnet den einmaligen Einladungslink, holt sich das Angebot ab und schickt eine Antwort zurück. Beide Seiten tauschen außerdem ICE-Kandidaten aus: die Netzwerkadressen, unter denen sie jeweils erreichbar sein könnten, ermittelt mit Hilfe eines STUN-Servers.

  3. Die beiden Enden geben sich direkt die Hand

    ICE probiert Kandidatenpaare durch, bis eine Verbindung steht, dann führen die Browser darüber einen DTLS-Handshake. Sie leiten die Schlüssel selbst ab und prüfen sich gegenseitig anhand der Fingerabdrücke aus Schritt eins.

  4. Der Kanal öffnet sich, der Server ist fertig

    Text, Bilder, GIFs und Sticker reisen über einen SCTP-Stream innerhalb dieser DTLS-Sitzung, Browser zu Browser. Die Setup-Datensätze laufen nach einer TTL von 10 Minuten ab, die durch Aktivität erneuert wird.

Wer was sehen kann

Die eingeladene PersonDer FadeChats-ServerEin TURN-Relay, falls nötig
Nachrichten, Bilder, GIFsJa, das ist der SinnNieNur verschlüsselte Bytes
Die Raum-IDJaJaJa
Deine IP-AdresseJa, bei direkter VerbindungJa, während des SetupsJa, während des Relays
Dass der Raum aktiv warJaBis die TTL abläuftWährend des Relays
Irgendetwas, nachdem der Raum verblasst istNur, was sie festgehalten hatEs wurde nie etwas geschriebenNichts

Dass beide Seiten die Adresse der anderen erfahren, liegt am Transportprotokoll selbst, nicht an einer Einstellung, die man abschalten könnte.

Eine Person tippt nachts an einem Laptop neben einem Fenster, das Gesicht vom Bildschirm beleuchtet
Eine direkte Leitung läuft in beide Richtungen: Die eingeladene Person sieht, woher deine Pakete kommen.Pexels · VAZHNIK

Drei Dinge, die Peer-to-Peer dir nicht garantiert

  • Dein Gegenüber sieht deine IP-Adresse

    Eine direkte Verbindung hat zwei echte Endpunkte, also erfährt die eingeladene Person ungefähr deine Stadt und deinen Provider. Signal verbirgt das, indem alles über die eigenen Server läuft. FadeChats kann das nicht, weil genau dieses Durchleiten alles ablehnt, was das Projekt eigentlich vermeiden will.

  • Manchmal gibt es trotzdem ein Relay

    Symmetrisches NAT, Firmennetzwerke und manche Mobilfunkanbieter blockieren einen direkten Pfad. WebRTC weicht dann auf ein TURN-Relay aus, das DTLS-verschlüsselte Bytes weiterleitet, zu denen es keinen Schlüssel besitzt. Trotzdem eine dritte Maschine im Weg, und das sollte man klar sagen.

  • Der Handshake vertraut dem Signaling-Kanal

    Jede Seite prüft den Zertifikats-Fingerabdruck der anderen, aber der Fingerabdruck kam über den Server. Ein kompromittierter Signaling-Server könnte ihn im Prinzip austauschen und sich dazwischenschalten. Signal löst das mit Sicherheitsnummern, die man außerhalb des Kanals vergleicht; FadeChats hat keine solche Prüfung.

Wofür dieses Modell passt

Peer-to-Peer ist richtig, wenn zwei Menschen etwas einmal sagen müssen und wollen, dass davon nirgendwo eine Kopie bleibt: ein Passwort mit einer Rückfrage, eine Adresse, eine Diagnose, eine Nummer. Für eine Gruppe ist es die falsche Form, genauso für alles, was einen geschlossenen Tab überstehen muss, und für Situationen, in denen ein Irrtum über den Gegenüber echte Konsequenzen hätte.

Häufig gestellte Fragen

Braucht ein WebRTC-Chat überhaupt einen Server?

Ja, aber nur, um die beiden Browser einander vorzustellen. Ein Signaling-Server überträgt das Angebot, die Antwort und die Netzwerk-Kandidaten; ein STUN-Server sagt jedem Browser, wie seine öffentliche Adresse aussieht. Sobald der DataChannel offen ist, steht keiner der beiden mehr zwischen einer einzigen Nachricht.

Kann der Signaling-Server meine Nachrichten lesen?

Nein, er bekommt sie nie zu sehen. Der Kanal wird zwischen den Browsern ausgehandelt, und die Schlüssel gehören ihnen. Der FadeChats-Server hält nur die Setup-Datensätze, und die laufen nach einer TTL von 10 Minuten ab, die durch Aktivität erneuert wird.

Sieht die andere Person meine IP-Adresse?

Bei einer direkten Verbindung ja, und du siehst umgekehrt auch ihre. Genau das macht sie direkt. Wenn das vor deinem Gesprächspartner verborgen bleiben soll, nutz ein VPN oder ein Tool, das alles durchleitet, wie Signal.

Ist ein WebRTC-DataChannel Ende-zu-Ende verschlüsselt?

Der Transport ist es: SCTP innerhalb von DTLS, mit Schlüsseln, die die beiden Browser selbst ableiten. Der Vorbehalt ist der oben beschriebene Austausch der Fingerabdrücke. Ende-zu-Ende-Verschlüsselung bei WebRTC ist nur so vertrauenswürdig wie der Kanal, über den diese Fingerabdrücke liefen.

Muss ich etwas installieren, um es auszuprobieren?

Nein. WebRTC steckt in jedem aktuellen Browser, FadeChats ist also einfach eine Seite, die du öffnest. Kein Konto, keine Telefonnummer, keine App. Der Raum entsteht, wenn die Seite lädt, und fasst genau zwei Personen.