So funktioniert encryptor

Die Fakten hinter encryptor 3.0: Ablauf, Algorithmen, Dateiformat, Passwort, Grenzen.

Der Ablauf in 5 Schritten

  1. Sie wählen Text oder eine Datei. Ihr Browser liest sie lokal ein. Nichts wird hochgeladen.
  2. encryptor erzeugt ein Passwort. 130 Bit aus dem sicheren Zufallsgenerator Ihres Browsers.
  3. Argon2id leitet einen Schlüssel ab. Aus dem Passwort und einem zufälligen Salt, mit 64 MiB Speicher und 3 Durchläufen. Das macht jeden einzelnen Rateversuch teuer.
  4. AES-256-GCM verschlüsselt. Ein zufälliger Dateischlüssel verschlüsselt die Daten in Blöcken zu 1 MiB, samt Name und Typ. Der Dateischlüssel liegt verschlüsselt im Kopf.
  5. Sie verschicken Ergebnis und Passwort getrennt. Die .encrypted-Datei oder der ENCR3.-Text geht auf einem Weg, das Passwort auf einem anderen.

Algorithmen

AES-256-GCMVerschlüsselt Daten und Metadaten. Jeder Block trägt ein Authentifizierungs-Tag, jede Veränderung wird erkannt.
Argon2idRFC 9106, empfohlen in BSI TR-02102-1. Parameter: m = 64 MiB, t = 3, p = 4. Macht aus dem Passwort einen Schlüssel.
HKDF-SHA-512Leitet getrennte Schlüssel für getrennte Zwecke ab.
HMAC-SHA-512Authentifiziert den Kopf samt aller Parameter.

AES-256-GCM, HKDF und HMAC laufen über die Web Crypto API, die in Ihrem Browser eingebaut ist. Argon2id läuft über hash-wasm (WebAssembly), weil die Web Crypto API kein Argon2id kennt. hash-wasm wird wie jede andere Datei von encryptor.app ausgeliefert.

Format v3

Jede Datei beginnt mit einem Kopf von 140 Bytes. Er enthält:

  • die Kennung ENCR
  • die Formatversion
  • die Argon2id-Parameter
  • das Salt
  • die Nonce
  • den verschlüsselten Dateischlüssel
  • einen HMAC über den Kopf

Die Daten folgen in Blöcken zu 1 MiB. Jeder Block ist an seine Position und an das Dateiende gebunden. Entfernte, vertauschte oder angehängte Blöcke werden erkannt.

Metadaten wie Originalname und Typ sind verschlüsselt.

Eine Auffüllung nach dem Verfahren PADMÉ verschleiert die genaue Größe. Die ungefähre Größe bleibt sichtbar.

Verschlüsselter Text nutzt dasselbe Format, geschrieben als ENCR3. gefolgt von Base64url.

Passwort

  • Immer generiert. Eigene Passwörter gibt es nicht, daher hat jedes Passwort eine bekannte Stärke.
  • 130 Bit Zufall.
  • 26 Zeichen in Crockford Base32: Ziffern und Buchstaben ohne I, L, O und U, die leicht zu verwechseln sind.
  • 2 zusätzliche Prüfzeichen, um Tippfehler zu erkennen.
  • Angezeigt in Vierergruppen.
  • encryptor speichert das Passwort nicht.

Knackzeit

Ohne Passwort bleibt nur Raten. Die Rechnung, mit allen Annahmen:

Annahmen

  • 1 Million GPUs vom Typ RTX 5090.
  • Rund 3.000 Argon2id-Versuche pro Sekunde und GPU, jeder mit den vollen Argon2id-Kosten.
  • Durchschnittsfall: Das Passwort wird nach der Hälfte aller Möglichkeiten gefunden, also nach 2¹²⁹ Versuchen.

2¹²⁹ Versuche ÷ (10⁶ GPUs × 3.000 Versuche pro Sekunde) ≈ 2,3 × 10²⁹ Sekunden

Rund 7 × 10²¹ Jahre. Das ist etwa 500 Milliarden Mal das Alter des Universums (13,8 Milliarden Jahre).

Mehr Hardware verkürzt die Zeit im gleichen Verhältnis. Mit der 1.000-fachen Rechenleistung sind es immer noch rund 7 × 10¹⁸ Jahre.

Version 2 bleibt lesbar

Texte und Dateien aus Version 2 lassen sich weiterhin entschlüsseln. Neue Daten in Version 2 erzeugt encryptor nicht mehr.

Version 2 nutzte AES-256-GCM mit PBKDF2-SHA-256 und 100.000 Iterationen, mit einem selbst gewählten Passwort.

Die Sicherheit vorhandener Daten aus Version 2 hängt vom damals gewählten Passwort ab.

Was encryptor nicht schützt

  • Metadaten. Die ungefähre Dateigröße und wer mit wem kommuniziert, bleiben sichtbar.
  • Ein kompromittiertes Gerät. Ist das Gerät selbst befallen, hilft encryptor nicht.
  • Ein verlorenes Passwort. Ohne Passwort sind die Daten weg. Eine Wiederherstellung gibt es nicht.
  • Ein Passwort, das mit der Datei reist. Schicken Sie es immer auf einem anderen Weg.
  • Veränderter Code. Ihr Browser führt den Code aus, den diese Seite ausliefert, und muss ihm vertrauen. Deshalb veröffentlichen wir Prüfsummen für jede Datei.

Prüfsummen

Die SHA-256-Prüfsummen aller Dateien, die diese Seite ausliefert, stehen hier und im GitHub-Release.

0c4243f4ea4d8c5ff36a5f599b344b98489f2d426f6694a0b5483c4cd3c454b9  a/7d739eaf5a/core/bytes.js
9a1c8816065389c2c5dd8f0fcb7263ff52e21e0e25d915a5f9c367a52d5870b5  a/7d739eaf5a/core/crack-time.js
330fabe751bc5c1b918c885f28ea4af73d327c46a8e626717dfd4b424d433e55  a/7d739eaf5a/core/detect.js
66d650563ea1179b99f19775f6d07e80c47c32e19c95ff4c0362c63884e95ca6  a/7d739eaf5a/core/format-v3.js
7505a9870d76735a1a4be0b891f96a15e043cc5d089eacbf8ee4df42dc6a9cbc  a/7d739eaf5a/core/generator.js
68730265a4b3d788f82e2e9f56a8190c134f9a6406ad77e8f1caf861857e08ef  a/7d739eaf5a/core/kdf.js
eda2b46daf1bddf3597bd9f3f09eec2e2dc7e28bd2ee94492bb1d677fc2bd3b8  a/7d739eaf5a/core/legacy-v2.js
0d014df74f05e332b2c39b80415aad27dff6fa6e2b47d33d51ea307442d39198  a/7d739eaf5a/core/sanitize.js
dcec617a2e1b700fa132d1583a186cb70611113395e869f2dd6cc82b415d3094  a/7d739eaf5a/hash-wasm-argon2.js
31e6c5eca3877d73fbcb6ea5b2bcda4430855e0d93d4fcfe4e0d069688e57d45  a/7d739eaf5a/site.css
db7ad3710fe8851894bd71889ba41404141b8094e512defb6ab4079ab081d0d0  a/7d739eaf5a/site.js
00c97a49dce180b6a94bf0c876a2cfdfcd575b2e6821ab8920e750b9af316b9d  a/7d739eaf5a/theme.js
a0de0c61ef6423ed698081009a0b8438bb7e798d7679ded48a72ca2ddbe8ebba  a/7d739eaf5a/ui/contact.js
eda91156d64cc3f57654074accc18c2e425117aee44f02cf2ca1aa0414ac1330  a/7d739eaf5a/ui/decrypt-file.js
5f559b282a32c34ad78053609452845097f0e27ae089466a255e84d5555e1121  a/7d739eaf5a/ui/decrypt-text.js
429723fca270eb9c79bc2baa107b2934b182b66bafd20e86bdea6b7e5d8e7819  a/7d739eaf5a/ui/encrypt-file.js
61882f5fca076841a8326f22b729b76bf675be63817179ecd190d145e1ac5c59  a/7d739eaf5a/ui/encrypt-text.js
0d64a98a7a237b64914423c3dc04dbed2c1ffa2877c37648ec1cdf5dd7027f51  a/7d739eaf5a/ui/ui.js

Eine Datei selbst prüfen

macOS und Linux: shasum -a 256 <Datei>

Windows: certutil -hashfile <Datei> SHA256

Spezifikation

Die vollständige Spezifikation von Format v3 und der Quellcode der Web-Version liegen auf GitHub.

Auf GitHub ansehen

Jetzt verschlüsseln