Kostenloses Privatsphäre-Tool
Eine Datei im Browser verschlüsseln
Datei wählen, Passphrase wählen und eine verschlüsselte Kopie herunterladen. AES-256-GCM, mit dem Schlüssel in deinem Browser abgeleitet. Nichts wird hochgeladen, und es funktioniert offline, sobald es geladen ist. Das Format ist unten Byte für Byte dokumentiert, damit du uns nichts glauben musst.
Läuft vollständig in diesem Tab. Nichts wird hochgeladen, und es funktioniert offline, sobald es geladen ist.
Jede Datei. Große Dateien brauchen Speicher. Siehe die ehrlichen Grenzen unten.
Es gibt keine Wiederherstellung. Eine vergessene Passphrase bedeutet eine Datei, die niemand, wir eingeschlossen, jemals öffnen kann.
Jeder Parameter, offengelegt
- Verfahren
- AES-256-GCM (WebCrypto), 128-Bit-Tag
- Schlüsselableitung
- PBKDF2-HMAC-SHA-256, 600.000 Iterationen
- KDF-Salt
- 16 Bytes, CSPRNG, pro Datei neu
- GCM-Nonce
- 12 Bytes, CSPRNG, pro Datei neu
- Authentifizierte Daten
- der gesamte 42-Byte-Header, sodass jede Manipulation eines angegebenen Parameters die Entschlüsselung bricht
- Kodierung der Passphrase
- UTF-8, NFC-normalisiert (damit dieselbe Phrase auf jedem Gerät denselben Schlüssel ergibt)
Ehrliche Grenzen
Das ist nicht das Tresorformat der Sealby-App. Die App leitet Schlüssel mit pro Gerät kalibriertem Argon2id ab, umschließt sie in der Secure Enclave und legt Inhalte in abstreitbaren, gestückelten Containern ab. Nichts davon kann eine Webseite. Diese Seite ist ein eigenständiges Werkzeug, gebaut auf dem, was Browser von Haus aus bieten.
PBKDF2 ist nicht speicherhart. Es ist die einzige Schlüsselableitungsfunktion, die Browser nativ mitbringen, und 600.000 Iterationen machen jeden Rateversuch langsam, aber eine GPU-Farm greift es trotzdem weit schneller an als Argon2id. Der Schutz liegt deshalb in deiner Passphrase: vier zufällige Wörter oder mehr, kein Passwort.
WebCrypto verschlüsselt in einem Rutsch. Es gibt kein Streaming, also liegt die ganze Datei während der Verarbeitung zwei- bis dreifach im Speicher. Hunderte Megabyte sind auf den meisten Geräten kein Problem. Für mehrere Gigabyte große Archive nimm ein Desktop-Tool. Die verschlüsselte Ausgabe verrät außerdem die ungefähre Größe der Datei. Der Name ist innen verschlüsselt, die Größe aber nicht verborgen.
Das Format, Byte für Byte
Alles, was technische Leser:innen brauchen, um die Ausgabe dieser Seite unabhängig zu überprüfen oder sie in zwanzig Zeilen Python zu entschlüsseln:
| bytes | field | contents |
|---|---|---|
| 0–7 | Magic | ASCII "SBXF0001" |
| 8 | Version | 0x01 |
| 9 | Algorithmus | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | Iterationen | uint32, Big-Endian (600.000) |
| 14–29 | Salt | 16 Bytes |
| 30–41 | Nonce | 12 Bytes |
| 42–Ende | Chiffrat | AES-256-GCM der Nutzdaten, AAD = Bytes 0–41; die letzten 16 Bytes sind das GCM-Tag |
Nutzdaten vor der Verschlüsselung: [2 Byte Namenslänge, Big-Endian][Dateiname, UTF-8][Dateibytes]. Der ursprüngliche Dateiname reist verschlüsselt mit; beim Entschlüsseln wird er wiederhergestellt.
Referenz-Entschlüsseler (Python, cryptography-Bibliothek)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)Das hier ist die Demo. Der Tresor ist das Produkt.
Eine Datei, eine Passphrase, eine Seite. Mehr kann ein Browser nicht. Sealby macht es richtig: Argon2id, kalibriert auf dein Gerät, Schlüssel in der Secure Enclave und versteckte Tresore ohne gespeicherte Liste oder Anzahl.
iPhone & iPad · iOS 17+ · Kostenlos