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:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | verzió | 0x01 |
| 9 | algoritmus | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterációk | uint32, big-endian (600 000) |
| 14–29 | só | 16 bájt |
| 30–41 | nonce | 12 bájt |
| 42–vég | titkosított szöveg | a 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.
iPhone és iPad · iOS 17+ · Ingyenes