Sicherheit
Was ihr schreibt, können nur ihr zwei lesen. Hier steht, wie das funktioniert, und wo es an Grenzen stößt.
Diese Seite erklärt die Technik in einfacher Sprache. Fachbegriffe stehen in Klammern. Die vollständige Beschreibung ist öffentlich: das Protokoll und das Bedrohungsmodell (beide auf Englisch).
Wer kann was lesen?
| Inhalt | Ihr | Wir als Team hinter der App | Apple und Google |
|---|---|---|---|
| Private Frage und Notiz | Nur du | Nein | Nein |
| Geteilte Frage | Ihr beide | Nein | Nein |
| Antwort | Ihr beide, sobald beide geantwortet haben | Nein | Nein |
| Kommentar | Ihr beide | Nein | Nein |
| Push-Nachricht | Nur ein allgemeiner Hinweis, nie der Text einer Frage | Nein | Nein |
So funktioniert die Verschlüsselung
Alles, was du schreibst, wird auf deinem Handy verschlüsselt, bevor es das Handy verlässt (Ende-zu-Ende-Verschlüsselung). Auf unserem Server liegen nur verschlüsselte Pakete. Die Schlüssel dazu gibt es nur auf euren Handys.
- Dein Schlüssel: Beim Einrichten erzeugt die App einen geheimen Grundschlüssel. Aus ihm leitet sie alle weiteren Schlüssel ab. Er lässt sich als Wiederherstellungs-Code aus zwölf Wörtern aufschreiben (BIP-39).
- Euer gemeinsamer Schlüssel: Wenn ihr euch verbindet, tauscht ihr öffentliche Schlüssel aus. Am sichersten nebeneinander mit einem Code zum Scannen. Verbindet ihr euch über einen Link, vergleicht ihr zusätzlich einen kurzen Sicherheitscode aus zehn Symbolen. So merkt ihr, wenn sich jemand dazwischengeschaltet hat.
- Jede Antwort hat ihren eigenen Schlüssel. Die andere Person bekommt nur eine befristete Leihgabe dieses Schlüssels. Das ist wichtig für die Trennung (weiter unten).
Wir setzen auf bewährte Verfahren und gepflegte, viel geprüfte Bibliotheken. Selbst erfunden ist keines davon: XChaCha20-Poly1305 für Inhalte, X25519 und HPKE (RFC 9180) für den Schlüsselaustausch, Ed25519 für Signaturen, HKDF-SHA256 zum Ableiten von Schlüsseln und Argon2id für die PIN der App-Sperre. Der Kern ist in Rust geschrieben.
Antworten erst, wenn beide geantwortet haben
Deine Antwort wird zweimal verschlossen. Den äußeren Schlüssel hinterlegt deine App auf dem Server. Der Server gibt ihn der anderen Person erst, wenn sie selbst eine Antwort hinterlegt hat. Den inneren Schlüssel hat der Server nie. Er allein kann deine Antwort also nicht lesen, und die andere Person kann sie nicht früher lesen, auch nicht mit einer veränderten App.
Ehrlich gesagt: Arbeiten der Server und die andere Person zusammen, könnten sie eine Antwort vorzeitig öffnen. Gegen diesen Fall schützt der Mechanismus nicht.
So funktioniert die Trennung
Trennt sich eine Person, löscht der Server sofort alle Schlüssel-Leihgaben zwischen euch. Beide Apps löschen die Antworten und Kommentare der anderen Person und deren Schlüssel. Die Fragen bleiben bei beiden.
Ist das andere Handy gerade offline, kann es die Inhalte noch so lange lesen, bis seine Leihgabe abläuft, höchstens 7 Tage nach der letzten Verbindung. Die App zeigt dir, ab wann die Inhalte spätestens unlesbar sind.
Ein Jahr lang könnt ihr die Trennung gemeinsam rückgängig machen. Danach löscht der Server alles, was noch zu eurer Verbindung gehört.
Was der Server trotzdem erfährt
| Der Server weiß | Der Server weiß nicht |
|---|---|
| Konto-Kennungen, öffentliche Schlüssel, Push-Token, Geräte-Kennungen | Namen, E-Mail-Adressen, Telefonnummern |
| Welche zwei Konten verbunden sind, ob getrennt und wann | Warum |
| Wann wer ein verschlüsseltes Paket hochgeladen hat und wie groß es ungefähr ist | Ob es eine Frage, Antwort oder Notiz ist, und was darin steht |
| Ob zu einer geteilten Frage 0, 1 oder 2 Antworten hinterlegt sind | Die Frage und die Antworten |
| Dass und wann eine Push-Nachricht an die andere Person geht | Welche Art von Nachricht |
| Die IP-Adresse während einer Anfrage | Sie wird nicht gespeichert |
Mehr als das können wir auch auf Anfrage einer Behörde nicht herausgeben.
Welche Dienste beteiligt sind
- Unser Server steht bei Hetzner Online GmbH in Deutschland. Er speichert nur verschlüsselte Inhalte.
- Apple und Google stellen Push-Nachrichten zu. Sie sind verschlüsselt und enthalten nie den Text einer Frage oder Antwort.
- Impulse kommen aus dem Gesprächsspiel „… einfach reden!“. Unser Server holt die Liste ab und reicht sie signiert weiter. Eure Handys fragen dort nie direkt an.
Mehr dazu in der Datenschutzerklärung.
Wo der Schutz endet
- Screenshots, Fotos und Abschreiben lassen sich nicht verhindern.
- Wer dein entsperrtes Handy in der Hand hat, sieht, was du siehst. Deshalb ist die App-Sperre von Anfang an an.
- Eine veränderte App oder ein manipuliertes Handy kann alles behalten, was es je lesen durfte.
- Verlierst du dein Handy und deinen Wiederherstellungs-Code, sind deine eigenen Inhalte weg. Wir können sie nicht zurückholen.
- Der Server weiß, wer mit wem verbunden ist und wann ihr aktiv seid (siehe oben).
Nachprüfen
Der gesamte Code ist öffentlich (AGPL-3.0). Vor dem Start prüfen wir die App selbst nach dem Standard OWASP MASVS. Eine Prüfung von außen gab es bisher nicht. Gibt es einen Prüfbericht, verlinken wir ihn hier.
Sicherheitslücke gefunden?
Bitte schreib uns an hello@ourquestiondiary.app, bevor du sie veröffentlichst. Wir antworten so schnell wie möglich und nennen dich auf Wunsch, wenn die Lücke behoben ist. Die Kontaktdaten stehen auch maschinenlesbar in der security.txt.
Später veröffentlichen wir hier einmal im Jahr, ob und wie oft Behörden Daten angefragt haben.