Sicherheit

Was der Server sieht, was er nicht sieht — und die eine Grenze, die wir nicht schließen können.

Wie die Verschlüsselung abläuft

Wenn Sie auf „Link erzeugen" drücken, geschieht Folgendes in Ihrem Browser, bevor irgendetwas gesendet wird:

  1. Ihr Browser erzeugt einen zufälligen Schlüssel mit 256 Bit.
  2. Er verschlüsselt Ihren Text mit AES-256-GCM. Das Verfahren verschlüsselt und erkennt nachträgliche Veränderungen: Ein einziges gekipptes Bit lässt die Entschlüsselung fehlschlagen, statt Unsinn zu liefern.
  3. Vor dem Verschlüsseln wird der Text auf ein Vielfaches von 256 Byte aufgefüllt. Sonst verriete allein die gespeicherte Länge, ob dort ein kurzes Kennwort oder ein langes Zertifikat liegt.
  4. Nur der Schlüsseltext wird an den Server gesendet. Der Schlüssel bleibt im Browser und wird an den Link gehängt, hinter das Rautezeichen.

Der Teil hinter dem Rautezeichen heißt Fragment. Browser senden ihn grundsätzlich nicht an Server; er dient zur Navigation innerhalb einer Seite. Deshalb steht der Schlüssel zwar im Link, erreicht uns aber nie.

Was auf dem Server liegt

Drei Angaben je Eintrag: eine zufällige Kennung, der Schlüsseltext und ein Ablaufzeitpunkt. Kein Erstellungszeitpunkt, keine IP-Adresse, kein Browserkennzeichen, kein Aufrufzähler. Die Zugriffsprotokolle des Webservers sind für diese Domain abgeschaltet.

Der Prüfstein, an dem wir jede Entscheidung messen: Wer die Datenbank und den ganzen Server erbeutet, darf nichts Lesbares finden.

Genau einmal — auch bei gleichzeitigen Abrufen

Gelesen und gelöscht wird in einer Datenbankanweisung. Ein Lesen mit anschließendem Löschen hätte dazwischen ein Fenster von Millisekunden, in dem zwei gleichzeitige Anfragen beide den Inhalt bekämen. Das ist kein theoretischer Fall: Mail-Gateways prüfen Links regelmäßig mehrfach und parallel.

Warum ein Knopf zwischen Link und Inhalt steht

Chat- und Mailprogramme rufen Links automatisch ab, um eine Vorschau zu erzeugen. Würde der Inhalt schon beim Öffnen der Seite ausgeliefert, wäre er verbraucht, bevor der Empfänger ihn sieht. Deshalb holt erst der Knopfdruck den Inhalt. Vorschaufunktionen führen kein JavaScript aus und senden keine solche Anfrage.

Die Grenze, die wir nicht schließen können

Die Verschlüsselung läuft in Ihrem Browser, aber das JavaScript dafür kommt von unserem Server. Ein manipulierter Server könnte Code ausliefern, der den Schlüssel zusätzlich mitschickt. Manipuliert durch uns, durch einen Angreifer oder durch eine Anordnung. Sie würden es beim Benutzen nicht bemerken.

Das gilt für jeden Dienst dieser Bauart, auch für die bekannten. Wer etwas anderes behauptet, hat entweder nicht nachgedacht oder rechnet damit, dass Sie es nicht tun.

Was dagegen hilft:

Quellcode

Der vollständige Quellcode liegt offen: github.com/Nicooo76/einmalpost.de

Er enthält keine Zugangsdaten, keinen Bauschritt und keine fremden Bibliotheken. Was Ihr Browser ausführt, steht dort im Klartext und lässt sich Zeile für Zeile mit dem vergleichen, was Ihnen diese Seite ausliefert.

Nicht enthalten sein wird die Gestaltung: Farben, Schriften und Bildmaterial. Wer das Projekt klont, bekommt einen vollständig bedienbaren Dienst in schlichtem Grau. Alles, was das Verhalten betrifft, ist einsehbar.

Was wir nicht versprechen

Wir versprechen nicht, dass ein Inhalt nach dem Löschen physisch nicht mehr rekonstruierbar ist; Datenbanken und Dateisysteme geben Speicher verzögert frei. Wir versprechen nicht, dass ein Angreifer mit Zugriff auf Ihr Gerät oder das des Empfängers nichts findet: Der Link steht im Browserverlauf, der Inhalt möglicherweise in der Zwischenablage. Und wir versprechen keine Anonymität gegenüber Ihrem Netzbetreiber.

Eine Schwachstelle melden

Wenn Sie eine Lücke finden, schreiben Sie an info@pixagentur.com. Melden Sie sie bitte, bevor Sie sie veröffentlichen. Und rechnen Sie mit einer Antwort, nicht mit einer Abmahnung.