Nástroj pro soukromí zdarma
Zašifruj soubor v prohlížeči
Vyber soubor, zvol přístupovou frázi a stáhni zašifrovanou kopii. AES-256-GCM s klíčem odvozeným ve tvém prohlížeči. Nic se nenahrává a po načtení to funguje offline. Formát je níže zdokumentovaný bajt po bajtu, takže nám nemusíš nic věřit na slovo.
Běží celé v téhle záložce. Nic se nenahrává a po načtení funguje offline.
Jakýkoli soubor. Velké soubory potřebují paměť. Viz poctivé meze níže.
Žádná obnova neexistuje. Zapomenutá fráze znamená soubor, který nikdo, nás nevyjímaje, už nikdy neotevře.
Každý parametr, uvedený
- Šifra
- AES-256-GCM (WebCrypto), 128bitový tag
- Odvození klíče
- PBKDF2-HMAC-SHA-256, 600 000 iterací
- Sůl pro KDF
- 16 bajtů, CSPRNG, čerstvá pro každý soubor
- Nonce pro GCM
- 12 bajtů, CSPRNG, čerstvý pro každý soubor
- Autentizovaná data
- celá 42bajtová hlavička, takže zásah do kteréhokoli uvedeného parametru rozbije dešifrování
- Kódování fráze
- UTF-8, normalizované v NFC (takže tatáž fráze napsaná na jakémkoli zařízení odvodí tentýž klíč)
Poctivé meze
Tohle není formát trezoru z aplikace Sealby. Aplikace odvozuje klíče pomocí Argon2id kalibrovaného pro každé zařízení, obaluje je v Secure Enclave a ukládá obsah do popiratelných blokových kontejnerů. Nic z toho webová stránka neumí. Tahle stránka je samostatná pomůcka postavená na tom, co prohlížeče nabízejí nativně.
PBKDF2 není paměťově náročná. Je to jediná funkce pro odvození klíče, kterou prohlížeče nativně nabízejí, a 600 000 iterací dělá každý odhad pomalým, sestava s GPU ji ale pořád napadá mnohem rychleji než Argon2id. Ochrana tak leží ve tvé frázi: čtyři náhodná slova nebo víc, ne heslo.
WebCrypto šifruje najednou. Žádné streamování neexistuje, takže celý soubor sedí při zpracování v paměti dvakrát až třikrát. Stovky megabajtů jsou na většině zařízení v pohodě. Na víc než gigabajtové archivy použij desktopový nástroj. Zašifrovaný výstup navíc prozradí přibližnou velikost souboru. Název je zašifrovaný uvnitř, velikost ale skrytá není.
Formát, bajt po bajtu
Všechno, co technický čtenář potřebuje k nezávislému ověření výstupu téhle stránky, nebo k dešifrování ve dvaceti řádcích Pythonu:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | verze | 0x01 |
| 9 | algoritmus | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterace | uint32, big-endian (600 000) |
| 14–29 | sůl | 16 bajtů |
| 30–41 | nonce | 12 bajtů |
| 42–konec | šifrový text | AES-256-GCM datové části, AAD = bajty 0–41; posledních 16 bajtů je tag GCM |
Datová část před zašifrováním: [2bajtová délka názvu, big-endian][název souboru, UTF-8][bajty souboru]. Původní název souboru cestuje zašifrovaný; při dešifrování se obnoví.
Referenční dešifrátor (Python, knihovna cryptography)
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)Tohle je ukázka. Produktem je trezor.
Jeden soubor, jedna fráze, jedna stránka. Víc prohlížeč nesvede. Sealby to dělá pořádně: Argon2id kalibrovaný pro tvé zařízení, klíče v Secure Enclave a skryté trezory, jejichž seznam ani počet se nikde neukládá.
iPhone a iPad · iOS 17+ · Zdarma