Libreng tool para sa privacy
Mag-encrypt ng file sa browser mo
Pumili ng file, magtakda ng passphrase, at mag-download ng encrypted na kopya. AES-256-GCM, na may key na hinango sa browser mo. Walang ina-upload, at gumagana ito offline kapag na-load na. Nakadokumento sa ibaba ang format, bawat byte, kaya hindi mo kailangang basta maniwala sa sinasabi namin.
Ganap na tumatakbo sa tab na ito. Walang ina-upload, at gumagana ito offline kapag na-load na.
Anumang file. Kailangan ng memory para sa malalaking file. Tingnan ang tapat na paliwanag ng mga limitasyon sa ibaba.
Walang paraan ng pag-recover. Kapag nakalimutan ang passphrase, wala nang sinuman, pati kami, ang makakabukas sa file kailanman.
Malinaw na nakasaad ang bawat parameter
- Cipher
- AES-256-GCM (WebCrypto), 128-bit tag
- Paghalaw ng key
- PBKDF2-HMAC-SHA-256, 600,000 iteration
- KDF salt
- 16 bytes, CSPRNG, bago sa bawat file
- GCM nonce
- 12 bytes, CSPRNG, bago sa bawat file
- Authenticated data
- ang buong 42-byte header, kaya mabibigo ang pag-decrypt kapag pinakialaman ang alinmang nakasaad na parameter
- Encoding ng passphrase
- UTF-8, naka-normalize sa NFC (kaya ang parehong pariralang tina-type sa anumang device ay naghahango ng parehong key)
Tapat na paliwanag ng mga limitasyon
Hindi ito ang vault format ng Sealby app. Naghahango ang app ng mga key gamit ang Argon2id na naka-calibrate sa bawat device, binabalot ang mga ito sa Secure Enclave, at iniimbak ang content sa mga container na hinati sa mga chunk at maaaring maikaila ang pag-iral. Walang alinman dito ang kayang gawin ng isang web page. Ang pahinang ito ay isang hiwalay na utility na binuo gamit ang mga likas na kakayahan ng browser.
Hindi memory-hard ang PBKDF2. Ito lang ang key-derivation function na likas na kasama sa mga browser, at pinapabagal ng 600,000 iteration ang bawat hula, pero mas mabilis pa rin itong inaatake ng isang GPU rig kaysa sa Argon2id. Kaya nasa passphrase mo ang proteksiyon: apat o higit pang random na salita, hindi isang password.
Sabay-sabay na ini-encrypt ng WebCrypto ang lahat. Walang streaming, kaya nasa memory ang buong file nang dalawa hanggang tatlong ulit habang pinoproseso. Ayos lang ang daan-daang megabyte sa karamihan sa mga device. Para sa mga archive na maraming gigabyte, gumamit ng desktop tool. Ibinubunyag din ng encrypted na output ang tinatayang laki ng file. Naka-encrypt ang pangalan sa loob, pero hindi nakatago ang laki.
Ang format, bawat byte
Lahat ng kailangan ng isang teknikal na mambabasa upang hiwalay na maberipika ang output ng pahinang ito, o ma-decrypt ito sa dalawampung linya ng Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | bersiyon | 0x01 |
| 9 | algorithm | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | mga iteration | uint32, big-endian (600,000) |
| 14–29 | salt | 16 bytes |
| 30–41 | nonce | 12 bytes |
| 42–end | ciphertext | AES-256-GCM ng payload, AAD = bytes 0–41; ang huling 16 bytes ang GCM tag |
Payload bago ang encryption: [2-byte na haba ng pangalan, big-endian][filename, UTF-8][mga byte ng file]. Kasamang naka-encrypt ang orihinal na filename; ibinabalik ito sa pag-decrypt.
Decryptor na sanggunian (Python, cryptography library)
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)Ito ang demo. Ang vault ang produkto.
Isang file, isang passphrase, isang pahina. Iyan ang kayang gawin ng browser. Ginagawa ito nang maayos ng Sealby: Argon2id na naka-calibrate sa device mo, mga key sa Secure Enclave, at mga nakatagong vault na walang nakaimbak na listahan o bilang.
iPhone at iPad · iOS 17+ · Libre