Feldnotizen

Ein Schlüssel nach dem #: wie geteilte Links den Server außen vor lassen

Ein geteiltes Gespräch wird auf unserem Server gespeichert, und wir können es nicht öffnen. Wie das funktioniert, wo das Passwort ins Spiel kommt und was ein Link nicht schützen kann.

Teilen heißt meist, Ihre Worte demjenigen zu überlassen, der den Link speichert. Die geteilten Links von Undergrove sind so gebaut, dass der Server eine Kopie hält, die er nicht lesen kann. Der Trick ist alt und einfach, und er hat Grenzen, die man kennen sollte.

Der Teil nach dem #

Wenn Sie ein Gespräch teilen, erzeugt Ihr Browser einen neuen Zufallsschlüssel, verschlüsselt eine Kopie mit AES-GCM und lädt nur den Geheimtext hoch. Der Schlüssel kommt in den Link, hinter das #. Browser senden diesen Teil einer Adresse beim Laden einer Seite nicht an den Server, also erreicht der Schlüssel die Person, der Sie den Link schicken, und nie uns.

Wir bewahren den Geheimtext 1, 7 oder 30 Tage auf. Wir sehen seine ID, seine Größe und wann er erstellt und geöffnet wurde. Die Seite, die ihn öffnet, ruft den Geheimtext ab, liest den Schlüssel aus der Adressleiste und entschlüsselt ihn im Tab.

Auch ein Passwort

Ein Link kann auch ein Passwort verlangen. Dann ergibt sich der Schlüssel, der die Kopie öffnet, aus beidem: Das Passwort wird mit PBKDF2-SHA256 in 600.000 Iterationen gestreckt und über HKDF mit dem Schlüssel des Links kombiniert. Weder der Link noch das Passwort öffnet sie allein, und das Passwort wird im Tab an der bereits vorhandenen Kopie geprüft, sodass wir es nie sehen.

Einmal öffnen und Öffnungszeitpunkte

Ein Link kann sich einmal öffnen lassen. Der Server löscht seine Kopie beim ersten Lesen und behält nur den Zeitpunkt des Öffnens, sodass der Link sagen kann, dass er benutzt wurde, statt dass es ihn nie gab. Vor dem Abrufen bittet die Seite Sie um Bestätigung, damit die Linkvorschau einer Chat-App ihn nicht verbraucht.

Ein Link kann sich auch erst ab einem Datum öffnen lassen. Bis dahin verweigert der Server die Herausgabe des Geheimtexts. Das ist der Server, der sein Wort hält, keine Kryptografie: Die Kopie ist bereits gespeichert, und ihr Schlüssel steht bereits im Link.

Was ein Link nicht schützen kann

  • Wer den ganzen Link hat, kann die Kopie lesen. Behandeln Sie ihn wie das Gespräch selbst.
  • Chat- und E-Mail-Apps speichern die Nachrichten, die Sie senden, einschließlich Links, samt # und allem.
  • Die Seite, die die Kopie entschlüsselt, ist Code, den wir ausliefern. /verify vergleicht diesen Code mit dem veröffentlichten Manifest des Builds.

Die Datenschutzseite führt auf, was zu jedem Link gespeichert wird, und das Bedrohungsmodell, wer was sehen könnte.

Weitere Feldnotizen

  1. Was eine Attestierung belegt und was nicht

    Ihr Browser prüft die Enklave von Tinfoil, bevor er ein einziges Wort sendet. Was diese Prüfung belegt, wo sie endet und was sich in einem Browser noch nicht prüfen lässt.

  2. Was ein Relay, das nicht lesen kann, trotzdem sieht

    Unser Relay leitet Geheimtext weiter, den es nicht öffnen kann. Das ist nicht dasselbe, wie nichts zu sehen. Eine Bestandsaufnahme dessen, was es sieht, und warum.