Secure Chat
Ein bewusst kleiner Text-Chat für zwei Personen. Verschlüsselt wird ausschließlich im Client. Der Server ist ein stummes Relais: Er hält keine Schlüssel, entschlüsselt nichts und speichert keine Klartexte. Post für Abwesende liegt verschlüsselt bis zur Abholung.
Warum so gebaut
Schlüssel entstehen auf deinem Gerät und verlassen es nie. Der Web-Client nutzt WebCrypto und @noble/post-quantum, keine selbstgebauten Primitive.
Der Server leitet Chiffretext zwischen zwei Teilnehmern weiter. Räume liegen nur im Arbeitsspeicher und verschwinden, sobald sie leer sind.
Der Code bleibt absichtlich klein, damit man ihn von vorn bis hinten prüfen kann. Wird der Server kompromittiert, fällt nichts Lesbares an.
Vier Modi für den Live-Raum
-
DHKE
Flüchtiges ECDH P-256, Nachrichten mit geratschtem AES-256-GCM.
-
Post-Quanten
Hybrid aus ECDH P-256 und ML-KEM-768, über HKDF zusammengeführt.
-
AES-256
PBKDF2 mit 600.000 Runden aus einer gemeinsamen Passphrase plus frischer Nonce von beiden Seiten.
-
One-Time-Pad
XOR mit einem vorab geteilten Pad, dazu ein einmaliges HMAC-SHA-256-Tag. Das Pad reist per Bluetooth, USB, QR oder NFC, verschlüsselt mit Passphrase.
Wer da wirklich spricht
Jede Identität besteht aus Ed25519 und ML-DSA-65. Beide Signaturen müssen stimmen. Signiert wird ein Transkript mit frischen Nonces beider Seiten und der Raum-ID, damit sich kein Handshake wiederholen oder in einen anderen Raum verschieben lässt.
Beide Bildschirme zeigen dieselbe Nummer, abgeleitet aus beiden Identitäten. Ihr vergleicht sie persönlich. Bis zur Bestätigung sendet die App nichts und verwirft Eingehendes unentschlüsselt. Danach ist der Schlüssel festgenagelt, ein Wechsel löst eine laute Warnung aus.
Wer zuerst im Raum ist, besitzt ihn. Wer anklopft, wartet, bis der Besitzer Fingerabdruck und Vertrauensmarke gesehen hat und „Let them in“ drückt. Der Gast prüft den Schlüssel des Besitzers ebenso.
Was das Relais sieht
- Nachrichteninhalte oder Schlüssel
- Gefälschte, gespiegelte oder wiederholte Nachrichten, die durchgehen
- Einen unbemerkten Schlüsseltausch
- Vergangenes im Live-Raum (DHKE, Post-Quanten) nach Diebstahl des Gerätezustands
- Raum-IDs, Zeitpunkte und Größe jeder Nachricht. Es gibt kein Padding.
- Welche Handles du nachschlägst und wem du Post schickst
- Es kann Nachrichten verwerfen. Das fällt erst auf, wenn eine spätere ankommt.
- Es kann den Dienst verweigern.
So geht’s
Öffne den Web-Client oder die Onion-Adresse im Tor Browser. Lege mit „Create identity“ eine Identität mit Passphrase an. Für DHKE und Post-Quanten brauchst du eine.
Ein Chat-Code entsteht automatisch. Teile ihn über einen Kanal, dem du vertraust: als Text, Einladungslink oder QR-Code.
Beide wählen unter „Security options“ denselben Modus. DHKE ist der empfohlene Standard.
Wer den Code erzeugt hat, drückt zuerst „Connect“ und wird Besitzer. Die andere Person fügt den Code ein und verbindet sich.
Der Besitzer sieht den Fingerabdruck der anklopfenden Person und lässt sie herein. Im DHKE- und Post-Quanten-Modus bestätigt der Gast ebenfalls.
Vergleicht die Sicherheitsnummer persönlich. Nur bei Übereinstimmung „It matches“ drücken, sonst trennen.
Schreibt. Für jedes Gespräch ein neuer Code, am Ende „Disconnect“.
Überall derselbe Client
Als v3-Onion-Dienst. Die Adresse authentifiziert sich selbst, das Relais sieht keine Client-IP.
http://626vkwn6znrko2xhorirvv5ttrbzcr3xkdjmk65cks26qkvadplyk5id.onion
Eine WebView-Hülle mit exakt demselben Client im APK. Screenshots gesperrt, kein Backup, Rollback-Schutz über den Keystore.
Per SideStore sideloaden, mit kostenloser Apple-ID und Neusignierung alle sieben Tage. Oder als Home-Bildschirm-Web-App. Die iOS-App erreicht keine Onion-Adresse.
Geprüft, immer wieder
Sicherheitsaudit. Ein Fund hoch, drei mittel, drei niedrig. Alles behoben.
Vier Pentest-Runden, darunter Two-Time-Pad im OTP-Modus und der Start des Onion-Dienstes. Alle hohen Funde innerhalb eines Tages geschlossen.
Multi-Agenten-Red-Team. Nichts Kritisches, nichts Hohes. 47 Funde: 14 mittel, 18 niedrig, 15 Hinweise.
Gegen v0.5.0: nichts Kritisches, nichts Hohes. 19 Funde: 6 mittel, 4 niedrig, 9 Hinweise. Die mittleren sind offen und warten auf Entscheidung.
Was es nicht ist
- Kein Gruppenchat. Zwei Personen pro Raum, nur druckbares ASCII.
- Keine Anonymität des Servers. Das Onion verbirgt nicht, wo die Maschine steht.
- Kein Metadatenschutz. Zeitpunkte, Größen und Nachschlagevorgänge sind sichtbar.
- Keine Offline-Funktion und kein Service Worker.
- Schwache Passphrasen werden angemahnt, nicht abgelehnt.
- Keine Open-Source-Lizenz. Der Code ist einsehbar, aber nicht freigegeben.