Ingyenes adatvédelmi eszköz

Titkosíts egy fájlt a böngésződben

Válassz fájlt, adj meg egy jelmondatot, és tölts le egy titkosított másolatot. AES-256-GCM, a kulcsot a böngésződben vezetjük le. Semmi sem töltődik fel, és betöltés után offline is működik. A formátumot lent bájtról bájtra dokumentáljuk, hogy semmit se kelljen a szavunkra elhinned.

Teljes egészében ezen a lapon fut. Semmi sem töltődik fel, és betöltés után offline is működik.

Bármilyen fájl. A nagy fájlok memóriát igényelnek. Lásd lent az őszinte korlátokat.

Nincs helyreállítás. Egy elfelejtett jelmondat olyan fájlt jelent, amelyet soha senki, minket is beleértve, nem tud megnyitni.

Minden paraméter, kimondva

Rejtjelező
AES-256-GCM (WebCrypto), 128 bites címke
Kulcslevezetés
PBKDF2-HMAC-SHA-256, 600 000 iteráció
KDF-só
16 bájt, CSPRNG, fájlonként új
GCM-nonce
12 bájt, CSPRNG, fájlonként új
Hitelesített adat
a teljes, 42 bájtos fejléc, így bármelyik megadott paraméter meghamisítása tönkreteszi a visszafejtést
Jelmondat kódolása
UTF-8, NFC-normalizált (így ugyanaz a kifejezés bármely eszközön begépelve ugyanazt a kulcsot adja)

Őszinte korlátok

Ez nem a Sealby app széfformátuma. Az app Argon2id-vel vezeti le a kulcsokat, eszközönként kalibrálva, a Secure Enclave-ben csomagolja be őket, és letagadható, darabolt konténerekben tárolja a tartalmat. Ezek egyikére sem képes egy weboldal. Ez az oldal önálló segédeszköz, arra építve, amit a böngészők natívan kínálnak.

A PBKDF2 nem memóriaigényes. Ez az egyetlen kulcslevezető függvény, amelyet a böngészők natívan kínálnak, és a 600 000 iteráció lassúvá tesz minden egyes tippet, de egy GPU-gép így is sokkal gyorsabban támadja, mint az Argon2id-t. A védelem ezért a jelmondatodban lakik: négy véletlen szó vagy több, nem egy jelszó.

A WebCrypto egy menetben titkosít. Nincs streamelés, így a teljes fájl két-háromszorosan is a memóriában ül feldolgozás közben. Néhány száz megabájt a legtöbb eszközön rendben van. Több gigabájtos archívumokhoz használj asztali eszközt. A titkosított kimenet ráadásul elárulja a fájl hozzávetőleges méretét. A nevet belül titkosítjuk, a méret viszont nincs elrejtve.

A formátum, bájtról bájtra

Minden, amire egy technikai olvasónak szüksége van, hogy önállóan ellenőrizze ennek az oldalnak a kimenetét, vagy húsz sor Pythonban visszafejtse:

bytesfieldcontents
0–7magicASCII "SBXF0001"
8verzió0x01
9algoritmus0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13iterációkuint32, big-endian (600 000)
14–2916 bájt
30–41nonce12 bájt
42–végtitkosított szövega hasznos teher AES-256-GCM-mel, AAD = 0–41. bájt; az utolsó 16 bájt a GCM-címke

A hasznos teher titkosítás előtt: [2 bájtos névhossz, big-endian][fájlnév, UTF-8][fájlbájtok]. Az eredeti fájlnév titkosítva utazik; visszafejtéskor helyreáll.

Referencia-visszafejtő (Python, cryptography könyvtár)
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)

Ez a bemutató. A széf a termék.

Egy fájl, egy jelmondat, egy oldal. Ennyire képes egy böngésző. A Sealby rendesen csinálja: az eszközödre kalibrált Argon2id, kulcsok a Secure Enclave-ben, és rejtett széfek, amelyekről nincs tárolt lista vagy darabszám.

Letöltés az App Store-ból

iPhone és iPad · iOS 17+ · Ingyenes