Sicherheit · Protokoll v0.7.1 · noch nicht extern geprüft
So funktioniert die Verschlüsselung
Alles wird auf dem Handy verschlossen, bevor es das Gerät verlässt. Unser Server ist ein Briefkasten für verschlossene Umschläge, und die andere Person leiht sich die Schlüssel zu deinen Antworten nur aus.
Diese Seite zeigt Schritt für Schritt, was im Hintergrund passiert. Die kurze Fassung steht auf der Seite Sicherheit, die vollständige im Protokoll und im Bedrohungsmodell (beide auf Englisch). Maßgeblich ist das Protokoll.
Robin und Kim sind ein ausgedachtes Paar. Robin ist in der Akzentfarbe gezeichnet, Kim in der Textfarbe, der Server gestrichelt, Schlüssel kräftiger getönt.
- Verschlossen, bevor es rausgehtFragen, Antworten, Kommentare und Namen werden auf dem Handy verschlüsselt. Schlüssel haben nur eure beiden Handys.
- Antworten öffnen sich gemeinsamEin Torschlüssel liegt beim Server und wird erst frei, wenn beide geantwortet haben.
- Schlüssel sind geliehenDie Kopie deines Antwortschlüssels auf dem anderen Handy läuft nach 7 Tagen ab, wenn sie nicht erneuert wird.
Der Überblick
Lesbaren Text gibt es nur auf euren Handys. Dazwischen liegen nur verschlossene Umschläge.
Alle Schlüssel wachsen aus 12 Wörtern
Beim ersten Start erzeugt das Handy 128 Zufallsbits und zeigt sie als 12 englische Wörter an (BIP-39). Alle persönlichen Schlüssel werden daraus abgeleitet (HKDF-SHA256). Deshalb holen die Wörter allein ein Konto auf ein neues Handy zurück. Sie werden nirgendwohin gesendet.
Beide behalten ihn
Paar-Fragenschlüssel
Verschließt geteilte Fragen, Anzeigenamen und „besprochen“-Markierungen. Er wird nie zurückgenommen, deshalb überstehen geteilte Fragen eine Trennung.
Deiner, nur verliehen
Antwortschlüssel
Einer pro Person. Er öffnet deine Antworten und Kommentare. Die andere Person bekommt nur eine Leihgabe, die ohne Erneuerung nach 7 Tagen abläuft.
Neu für jeden Eintrag
Eintragsschlüssel
Verschlüsselt genau eine Antwort oder einen Kommentar und ist selbst mit dem Antwortschlüssel verschlossen. Ein neuer Antwortschlüssel verschließt nur diese kleinen Schlüssel neu, nie den Text.
Zwei Handys verbinden
Robin lädt Kim mit einem QR-Code oder Link ein. Der geheime Teil steht hinter dem # im Link, und den schicken Browser nie an einen Server. Damit können sich beide Handys gegenseitig beweisen, dass der Server keine fremden Schlüssel untergeschoben hat.
Eine Frage teilen
Jede Frage beginnt privat. Beim Teilen entsteht eine Kopie für euren gemeinsamen Bereich, die private Notiz bleibt zurück.
Antworten öffnen sich erst, wenn beide geantwortet haben
Eine Antwort bekommt ein zusätzliches Schloss, den Torschlüssel. Das Handy lädt zuerst die Antwort hoch und gibt dann den Torschlüssel beim Server ab. Der Server gibt ihn erst weiter, wenn die andere Person ebenfalls eine Antwort abgegeben hat.
Leihschlüssel, Zurückziehen und Trennen
Kims Handy erneuert bei jedem Abgleich die Leihgabe von Robins Antwortschlüssel. Robins Handy unterschreibt die Leihgabe dafür jeden Tag neu, mit Datum. Ist die Leihgabe weg, vergehen 7 Tage ohne Erneuerung oder ist Robins Unterschrift älter als 30 Tage, löscht das Handy den Schlüssel und jede Antwort, die davon abhängt. Eine einzelne Antwort zurückzuziehen funktioniert genauso: Robin wechselt zu einem neuen Antwortschlüssel, und der alte läuft ab.
Benachrichtigungen ohne Inhalt
Nur vier Ereignisse lösen sofort einen Push aus: eine neu geteilte Frage, beide Antworten freigegeben, ein neuer Kommentar und eine Trennung. Das sendende Handy versiegelt die Notiz selbst, deshalb erfahren weder unser Server noch Apple oder Google auch nur die Art.
Die Bausteine
Keines dieser Verfahren ist selbst erfunden. Der Kern der App ist in Rust geschrieben und nutzt gepflegte, viel geprüfte Bibliotheken.
| Wofür | Verfahren |
|---|---|
| Inhalte verschlüsseln | XChaCha20-Poly1305 |
| Einen Schlüssel für eine andere Person verschließen | HPKE (RFC 9180) mit X25519 |
| Signaturen | Ed25519 |
| Schlüssel ableiten | HKDF-SHA256 |
| Wiederherstellungs-Code | BIP-39-Wortliste, 12 Wörter, 128 Bit |
| Größe verbergen | Auffüllen auf 1, 4, 16 oder 64 KiB |
Was Verschlüsselung nicht leisten kann
- Eine veränderte App oder ein manipuliertes Handy kann alles behalten, was es je lesen konnte. Screenshots und Fotos lassen sich nicht verhindern.
- Ein Handy, das offline bleibt, kann zurückgezogene oder getrennte Inhalte noch bis zu 7 Tage lesen. Würde jemand unseren Server übernehmen und alte Leihgaben weiter ausliefern, wären es höchstens 30 Tage.
- Der Server könnte zusammen mit der anderen Person eine Antwort vorzeitig öffnen.
- Mit einer veränderten App könnte die andere Person eine sinnlose Antwort abgeben, um deine freizuschalten. Eine erneute Antwort danach wird dir angezeigt.
- Wer Handy und 12 Wörter verliert, verliert die eigenen Inhalte.
- Eine Prüfung von außen gab es bisher nicht.
Was der Server trotzdem erfährt und wie du eine Sicherheitslücke meldest, steht auf der Seite Sicherheit.