Instrument gratuit de confidențialitate
Criptează un fișier în browserul tău
Alege un fișier, alege o frază de acces și descarcă o copie criptată. AES-256-GCM, cu cheia derivată în browserul tău. Nimic nu se încarcă undeva și funcționează offline odată încărcată pagina. Formatul e documentat octet cu octet mai jos, ca să nu fii nevoit să ne crezi pe cuvânt.
Rulează integral în această filă. Nimic nu se încarcă undeva și funcționează offline odată încărcată pagina.
Orice fișier. Fișierele mari cer memorie. Vezi limitele spuse pe față mai jos.
Nu există recuperare. O frază de acces uitată înseamnă un fișier pe care nimeni, nici noi, nu îl va mai putea deschide vreodată.
Fiecare parametru, declarat
- Cifru
- AES-256-GCM (WebCrypto), etichetă de 128 de biți
- Derivarea cheii
- PBKDF2-HMAC-SHA-256, 600.000 de iterații
- Sare KDF
- 16 octeți, CSPRNG, nouă pentru fiecare fișier
- Nonce GCM
- 12 octeți, CSPRNG, nou pentru fiecare fișier
- Date autentificate
- întregul antet de 42 de octeți, așa că modificarea oricărui parametru declarat rupe decriptarea
- Codificarea frazei de acces
- UTF-8, normalizată NFC (astfel încât aceeași frază tastată pe orice dispozitiv derivă aceeași cheie)
Limite spuse pe față
Acesta nu este formatul de seif al aplicației Sealby. Aplicația derivă cheile cu Argon2id calibrat pentru fiecare dispozitiv, le învelește în Secure Enclave și stochează conținutul în containere negabile, împărțite în blocuri. O pagină web nu poate face nimic din toate astea. Această pagină este un utilitar de sine stătător, construit pe ce oferă nativ browserele.
PBKDF2 nu are cost ridicat de memorie. Este singura funcție de derivare a cheii pe care browserele o includ nativ, iar 600.000 de iterații fac fiecare încercare lentă, dar un sistem cu GPU-uri îl atacă totuși mult mai repede decât pe Argon2id. Așa că protecția stă în fraza ta de acces: patru cuvinte aleatorii sau mai multe, nu o parolă.
WebCrypto criptează dintr-o singură trecere. Nu există procesare în flux, așa că întregul fișier stă în memorie de două-trei ori în timpul procesării. Sute de megaocteți sunt în regulă pe majoritatea dispozitivelor. Pentru arhive de mai mulți gigaocteți, folosește un instrument de desktop. Rezultatul criptat dezvăluie și dimensiunea aproximativă a fișierului. Numele e criptat înăuntru, dar dimensiunea nu este ascunsă.
Formatul, octet cu octet
Tot ce îi trebuie unui cititor tehnic ca să verifice independent rezultatul acestei pagini sau ca să îl decripteze în douăzeci de linii de Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | versiune | 0x01 |
| 9 | algoritm | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterații | uint32, big-endian (600.000) |
| 14–29 | sare | 16 octeți |
| 30–41 | nonce | 12 octeți |
| 42–final | text cifrat | AES-256-GCM al payloadului, AAD = octeții 0–41; ultimii 16 octeți sunt eticheta GCM |
Payloadul înainte de criptare: [lungimea numelui pe 2 octeți, big-endian][numele fișierului, UTF-8][octeții fișierului]. Numele original călătorește criptat; la decriptare este restaurat.
Decriptor de referință (Python, biblioteca 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)Aceasta e demonstrația. Produsul e seiful.
Un fișier, o frază de acces, o pagină. Atât poate face un browser. Sealby o face cum trebuie: Argon2id calibrat pentru dispozitivul tău, chei în Secure Enclave și seifuri ascunse, fără vreo listă sau numărătoare stocată.
iPhone și iPad · iOS 17+ · Gratuit