So funktioniert’s

Wie Crocodile deine Gespräche bei dir hält

Ein Rundgang durch Architektur und Protokoll in einfachen Worten. Jedes Kapitel beginnt mit der Idee; öffne „Unter der Haube“ für die technischen Details.

Kapitel 1

Vier Arten von Beteiligten

Crocodile teilt die Arbeit so auf, dass nur die Menschen, mit denen du sprichst, deine Worte sehen, und die Teile, die Fremde betreiben, nie.

Deine App

Verwahrt deine Schlüssel, verschlüsselt alles, was du sendest, und entschlüsselt, was du empfängst. Dein Nachrichtenverlauf liegt hier und nirgendwo sonst.

Weiß: Alles, was du sendest und empfängst: Es gehört dir.

Der Host

In jedem Sprachraum und Space wird die App eines Mitglieds gewählt, um den verschlüsselten Verkehr an die anderen weiterzugeben. Es ist ein Mitglied wie jedes andere.

Weiß: IP-Adressen der Mitglieder und wer spricht, nie, was gesagt wird.

Koordinationsserver

Von Freiwilligen betriebene Vermittlungsstellen: Sie verwahren Profile und Spaces, sagen, wer online ist, und wählen Hosts. Sie verbinden sich zu einem Netz.

Weiß: Profile, Mitgliedschaften und wer online ist, nie, was gesagt wird.

Das Verzeichnis

Ein Telefonbuch der Koordinationsserver, damit neue Apps wissen, wo sie anfangen. Über Menschen weiß es nichts.

Weiß: Nur die Liste der Server.

Kapitel 2

Dein Konto ist ein Schlüssel, kein Passwort

Wenn du Crocodile installierst, erzeugt deine App auf deinem Computer ein zufälliges, 32 Byte langes Geheimnis. Daraus entstehen zwei Schlüssel: einer zum Signieren dessen, was du veröffentlichst, und einer zum Empfangen verschlüsselter Nachrichten. Deine Nutzer-ID ist ein Fingerabdruck des Signaturschlüssels.

Weil die ID aus dem Schlüssel berechnet wird, kann ein Server keinen anderen Schlüssel unterschieben und sich als du ausgeben. Es gibt kein Passwort zum Stehlen und kein Zurücksetzen, zu dem sich ein Support überreden ließe. Das Geheimnis wird dir einmal als Wiederherstellungsschlüssel gezeigt und bleibt auf deinen Geräten, verschlüsselt mit dem Schlüsselbund deines Systems.

Unter der Haube
  • Aus dem 32-Byte-Seed entstehen ein Ed25519-Signaturschlüssel und ein X25519-Verschlüsselungsschlüssel. Die Nutzer-ID sind die ersten 26 Zeichen von base32(SHA-256(öffentlicher Signaturschlüssel)).
  • Jedes Gerät veröffentlicht einen signierten Gerätedatensatz mit einem Prekey-Bündel (X25519 + ML-KEM-768), das wöchentlich wechselt. Alte Prekey-Geheimnisse werden nach einer Übergangsfrist gelöscht.
  • Sicherheitsnummern erlauben zwei Menschen, ihre Schlüssel auf anderem Weg zu vergleichen, wie in anderen sicheren Messengern.
  • Lokale Daten (Identität, Prekeys, Verlauf) werden mit einem Schlüssel verschlüsselt gespeichert, den der Schlüsselbund des Betriebssystems schützt.

Kapitel 3

Den schnellsten Server finden

Deine App lädt die Liste der Koordinationsserver aus dem Verzeichnis, misst, wie schnell jeder antwortet, und verbindet sich mit dem schnellsten. Der zweitschnellste wartet in Bereitschaft, sodass deine App sofort wechselt, wenn dein Server verschwindet.

Vor allem anderen beweist der Server, wer er ist, und App und Server vereinbaren Schlüssel für diese Verbindung. Ab dann sind selbst die Metadaten, die sie austauschen, verschlüsselt, zusätzlich zu HTTPS, sodass es auch auf einem Heimserver sicher funktioniert.

Unter der Haube
  • Das Verzeichnis listet jeden Server, signiert von diesem Server, mit verschleierter Adresse. Apps prüfen die Signatur, bevor sie einen Eintrag nutzen.
  • Das signierte Hello des Servers enthält ein frisches hybrides Schlüsselaustausch-Angebot (X25519 + ML-KEM-768). Die App prüft es gegen den Schlüssel im Verzeichnis, antwortet und signiert das Transkript. Jeder weitere Frame ist mit AES-256-GCM verschlüsselt und aufgefüllt.
  • Server beantworten außerdem STUN auf zwei Ports, sodass Apps ihre öffentliche Adresse und ihren NAT-Typ erfahren, ohne Google oder Cloudflare zu fragen.

Kapitel 4

Server, die nicht über dich lügen können

Dein Profil, die Spaces, die du erstellst, ihre Einladungen und wer Mitglied ist, sind kleine Datensätze, signiert von dem, der sie geschrieben hat. Server speichern und teilen sie, und jeder Server und jede App prüft die Signaturen. Ein Server kann sich weigern, einen Datensatz weiterzugeben, aber er kann keinen ändern oder erfinden.

Koordinationsserver finden einander und bilden ein Netz. Jeder Datensatz wird von einigen per Hash gewählten Servern gehalten, die Änderungen untereinander kopieren, sodass das Netz weiterläuft, wenn ein Server ausfällt.

Unter der Haube
  • Datensätze: Profil, versiegelte Freundesliste, Space, Einladung, Mitglied, Gerät und Notiz. Jeder hat einen Autor, der ihn schreiben darf; die Prüfung (Signatur, Berechtigung, Last-Writer-Wins-Version) ist auf Servern und Clients identisch.
  • Freundeslisten sind nur für die Geräte ihres Besitzers verschlüsselt, und Freundschaftsanfragen reisen als versiegelte Notizen ohne Absendernamen, sodass Server nicht erfahren, wer mit wem befreundet ist.
  • Jeder Datensatz gehört den ersten paar Servern auf einem Consistent-Hashing-Ring für seinen Shard. Die Besitzer replizieren Schreibvorgänge, holen per Sequenz-Cursor auf und übergeben Datensätze, wenn Server hinzukommen oder gehen.

Kapitel 5

Ein Freund hostet, eine Vertretung wartet

Wenn Leute einem Sprachraum beitreten oder einen Space öffnen, schaut sich der Koordinationsserver die Verbindungen aller an (wie offen ihr Netz ist, ihre Upload-Geschwindigkeit, ihr Computer, ob sie im Akkubetrieb sind) und wählt das am besten geeignete Mitglied zum Host. Das zweitbeste ist die Vertretung.

Alle verbinden sich mit der App des Hosts, die den verschlüsselten Ton weitergibt. Um die Last gering zu halten, leitet sie jedem Zuhörer die paar lautesten Sprecher weiter. Den Ton hat sie dabei nie im Klartext: Sie verschiebt nur versiegelte Pakete.

Verlässt der Host den Raum oder ist nicht mehr erreichbar, übernimmt die Vertretung und alle verbinden sich neu mit ihr, meist bevor es jemand merkt.

Unter der Haube
  • Der Host betreibt in seiner App eine kleine SFU (Selective Forwarding Unit). Jedes Mitglied öffnet eine WebRTC-Verbindung zu ihr, mit einer Upstream-Tonspur, fünf Downstream-Sprecherplätzen und einem Datenkanal.
  • Sprecherplätze werden anhand des RFC-6464-Audiopegel-Headers vergeben („last-N“), mit umgeschriebenen Sequenznummern, damit jeder Platz ein durchgehender Stream bleibt.
  • Angebote und Antworten werden mit Identitätsschlüsseln über Sitzung, Epoche, beide IDs und den DTLS-Fingerabdruck signiert, sodass sich kein Koordinationsserver dazwischenschalten kann.
  • Jeder Hostwechsel erhöht eine Epochennummer; veraltete Angebote werden ignoriert. Mitglieder, die den Host nicht erreichen, melden das, und sobald die Hälfte zustimmt, übernimmt die Vertretung.

Kapitel 6

Verschlüsselung in Schichten

Alles wird auf deinem Gerät verschlüsselt, bevor es das Gerät verlässt, und nur die Menschen im Gespräch haben die Schlüssel. So ergeht es einer Nachricht auf dem Weg nach draußen.

Eine Nachricht, vier Schichten

Deine App signiert die Nachricht, damit andere beweisen können, dass sie von dir stammt, füllt sie auf, damit ihre Länge nichts verrät, verschlüsselt sie mit einem Schlüssel, den nur die Mitglieder des Gesprächs haben, und sendet sie über eine Verbindung, die selbst verschlüsselt ist. Wer dazwischen sitzt, sieht nur durcheinandergewürfelte Bytes in Standardgröße.

Bereit für Quantencomputer

Schlüssel werden hybrid ausgetauscht: mit X25519, einem bewährten klassischen Verfahren, und ML-KEM-768, dem neuen Post-Quanten-Standard. Ein Angreifer müsste beide brechen. Das ist wichtig, denn jemand könnte heute verschlüsselten Verkehr aufzeichnen und warten, bis ein Quantencomputer ihn entschlüsselt.

Schlüssel, die weiterziehen

Der Schlüssel jedes Mitglieds dreht sich wie eine Ratsche: Nach jeder Nachricht wird er durch den nächsten in einer Kette ersetzt, die nur vorwärts geht, und der alte wird gelöscht. Wer heute einen Schlüssel stiehlt, kann die Nachrichten von gestern nicht lesen. Alle 30 Minuten und jedes Mal, wenn jemand geht, beginnen alle eine neue Kette mit neuen Zufallsschlüsseln, sodass ein gestohlener Schlüssel auch bald nutzlos wird.

Sprache, Frame für Frame

Deine Stimme wird in kleinen Frames verschlüsselt, etwa fünfzig pro Sekunde, direkt nach dem Mikrofon und bevor sie das Netz erreicht. Ein Frame, der sich nicht verschlüsseln lässt, wird verworfen, nie im Klartext gesendet. Sprache läuft mit konstanter Bitrate, sodass die Paketgröße nicht verrät, was du sagst.

Unter der Haube
  • Paarweise Geheimnisse (Verteilung der Sender-Keys, Verlaufssynchronisation, Geräteverknüpfung, Serverkanäle) kombinieren X25519 und ML-KEM-768 (FIPS 203) über HKDF-SHA256.
  • Sender-Keys haben zwei HKDF-Ketten: Die Textkette rückt nach jeder Nachricht vor, die Audiokette alle 30 Sekunden. Schlüssel werden alle 30 Minuten und beim Verlassen ersetzt und nur an Geräte gesendet, deren Mitgliedschaft die App selbst anhand signierter Datensätze geprüft hat.
  • Sprache: Ein Encoded-Transform-Worker verschlüsselt jeden Opus-Frame mit AES-256-GCM und einem authentifizierten Trailer im SFrame-Stil (Schlüssel-ID, Generation, Zähler).
  • Text: vom Autor signiert (Ed25519), mit Padmé aufgefüllt, mit der Textkette verschlüsselt.
  • Versiegelte Boxen an ein Gerät nutzen dessen aktuellen Prekey und sind vom Absender signiert, sodass selbst Nachrichten für Offline-Geräte Forward Secrecy haben.

Kapitel 7

Wenn keine direkte Verbindung möglich ist

Manche Netze, etwa strenge Firewalls in Büros oder Universitäten, blockieren direkte Verbindungen zwischen Computern. Crocodile sagt dir, wenn das passiert, und du kannst einen Koordinationsserver deinen Verkehr weiterleiten lassen.

Das Relay gibt Pakete weiter, die bereits Ende-zu-Ende verschlüsselt sind: Es sieht ihre Größe und ihr Timing, aber nicht ihren Inhalt. Die Erlaubnis gilt jeweils eine Stunde und wird nur verlängert, solange sie noch gebraucht wird.

Unter der Haube
  • Das Relay ist Standard-TURN (RFC 5766) auf dem UDP-Port des Koordinationsservers, mit kurzlebigen Zugangsdaten. Server begrenzen, wie viele Menschen es nutzen dürfen.
  • Beim Verbinden prüft die App ihr Netz gegen zwei STUN-Ports, stuft es als offen, eingeschränkt (symmetrisches NAT) oder blockiert ein und bietet bei Bedarf das Relay an.
  • Jede Verbindung protokolliert vier Schritte (Angebot, Antwort, Netzwerkpfad, verschlüsselter Kanal), sodass die App bei einem Fehler sagen kann, wo es hakt.

Kapitel 8

Nachrichten, die ihren Weg finden

Kein Server speichert deinen Verlauf, deshalb reichen sich die Apps von Crocodile Nachrichten gegenseitig weiter. So läuft es, wenn du jemandem schreibst, der offline ist.

  1. Sie wartet bei dir

    Die Nachricht kommt in den Postausgang deiner App und zeigt eine kleine Uhr.

  2. Dein Freund kommt online

    Sobald ihr beide online seid, übergibt deine App sie, versiegelt für sein Gerät.

  3. Bestätigt

    Seine App bestätigt den Empfang und die Uhr verschwindet. Mitglieder, die in einem Space Nachrichten verpasst haben, holen sie beim Host und der Vertretung nach.

  4. Oder das Postfach

    Optional hält ein Server Direktnachrichten bis zu 7 Tage, pro Gerät versiegelt, sodass er sie nicht lesen kann, und löscht sie nach der Zustellung.

Kapitel 9

Einen Computer hinzufügen

Dein neuer Computer zeigt einen kurzen Code. Tippe ihn auf einem Computer ein, auf dem du schon angemeldet bist, und prüfe dann, ob beide Bildschirme denselben sechsstelligen Sicherheitscode zeigen. Stimmen sie überein, wird dein Konto verschlüsselt übertragen und das neue Gerät ist drin.

Der Sicherheitscode deckt die Schlüssel beider Geräte ab. Versucht jemand, unterwegs einen auszutauschen, unterscheiden sich die Codes und du merkst es.

Glossar

Die Begriffe, die dir in Texten über Sicherheit begegnen, jeweils in ein, zwei Sätzen.

Ende-zu-Ende-Verschlüsselung
Nur Absender und Empfänger haben die Schlüssel. Was die Nachricht dazwischen transportiert, Server eingeschlossen, sieht nur durcheinandergewürfelte Daten.
Peer-to-Peer
Apps verbinden sich direkt miteinander statt über einen zentralen Server.
Post-Quanten-Kryptografie
Verschlüsselung, die künftigen Quantencomputern standhalten soll, die die heute im Internet verbreiteten Verfahren brechen könnten. ML-KEM ist der vom NIST 2024 veröffentlichte Standard.
Forward Secrecy
Wer heute einen Schlüssel stiehlt, kann vergangene Nachrichten nicht öffnen, weil deren Schlüssel gelöscht wurden.
Post-Compromise Security
Nach einem Schlüsseldiebstahl sperren frische Zufallsschlüssel den Dieb bald wieder aus. In Crocodile geschieht das innerhalb von 30 Minuten oder sofort, wenn jemand geht.
Digitale Signatur
Ein mathematisches Siegel, erstellt mit einem privaten Schlüssel. Jeder kann es mit dem öffentlichen Schlüssel prüfen, und niemand ohne den privaten Schlüssel kann es fälschen.
NAT, STUN und TURN
Heimrouter verstecken Computer hinter einer öffentlichen Adresse (NAT). STUN hilft Apps, ihre öffentliche Adresse herauszufinden, um sich direkt zu verbinden; TURN leitet den Verkehr weiter, wenn das nicht geht.
SFU
Eine Selective Forwarding Unit leitet den Ton jedes Sprechers an jeden Zuhörer weiter, ohne ihn zu mischen oder zu dekodieren. In Crocodile läuft sie in der App des Hosts.
Metadaten
Daten über ein Gespräch statt seines Inhalts: wer mit wem spricht, wann und wie viel. Crocodile verschlüsselt Inhalte vollständig und reduziert Metadaten, aber Server sehen noch einige.

Das vollständige Architekturdokument lesen (englisch)