Brezplačno orodje za zasebnost
Šifriraj datoteko v brskalniku
Izberi datoteko, izberi geslo in prenesi šifrirano kopijo. AES-256-GCM, s ključem, izpeljanim v tvojem brskalniku. Nič se ne naloži, po nalaganju pa deluje brez povezave. Format je spodaj dokumentiran bajt za bajtom, da ti ni treba ničesar verjeti na besedo.
Teče v celoti v tem zavihku. Nič se ne naloži, po nalaganju deluje brez povezave.
Katera koli datoteka. Velike datoteke potrebujejo pomnilnik. Glej poštene omejitve spodaj.
Obnovitve ni. Pozabljeno geslo pomeni datoteko, ki je ne more nikoli odpreti nihče, niti mi ne.
Vsak parameter, naveden
- Šifra
- AES-256-GCM (WebCrypto), 128-bitna oznaka
- Izpeljava ključa
- PBKDF2-HMAC-SHA-256, 600.000 iteracij
- Sol za KDF
- 16 bajtov, CSPRNG, nova za vsako datoteko
- Nonce GCM
- 12 bajtov, CSPRNG, nov za vsako datoteko
- Overjeni podatki
- celotna 42-bajtna glava, zato poseg v kateri koli naveden parameter zlomi dešifriranje
- Kodiranje gesla
- UTF-8, normalizirano po NFC (da ista fraza, natipkana na kateri koli napravi, izpelje isti ključ)
Poštene omejitve
To ni format trezorja iz aplikacije Sealby. Aplikacija ključe izpelje z Argon2id, umerjenim za vsako napravo, jih ovije v Secure Enclave in vsebino hrani v vsebnikih po kosih, ki omogočajo zanikanje. Ničesar od tega spletna stran ne zmore. Ta stran je samostojen pripomoček, zgrajen na tem, kar brskalniki ponujajo izvorno.
PBKDF2 ni pomnilniško zahteven. Je edina funkcija za izpeljavo ključa, ki jo brskalniki prinašajo izvorno, in 600.000 iteracij vsako ugibanje upočasni, a naprava z grafičnimi karticami ga vseeno napade veliko hitreje kot Argon2id. Zato zaščita živi v tvojem geslu: štiri naključne besede ali več, ne geslo iz enega niza.
WebCrypto šifrira v enem kosu. Pretakanja ni, zato med obdelavo celotna datoteka dvakrat do trikrat hkrati leži v pomnilniku. Nekaj sto megabajtov je na večini naprav v redu. Za večgigabajtne arhive uporabi namizno orodje. Šifriran izhod razkrije tudi približno velikost datoteke. Ime je šifrirano znotraj, velikost pa ni skrita.
Format, bajt za bajtom
Vse, kar tehnični bralec potrebuje, da izhod te strani neodvisno preveri ali ga dešifrira v dvajsetih vrsticah Pythona:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | različica | 0x01 |
| 9 | algoritem | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iteracije | uint32, big-endian (600.000) |
| 14–29 | sol | 16 bajtov |
| 30–41 | nonce | 12 bajtov |
| 42–konec | šifropis | AES-256-GCM koristnega tovora, AAD = bajti 0–41; zadnjih 16 bajtov je oznaka GCM |
Koristni tovor pred šifriranjem: [2-bajtna dolžina imena, big-endian][ime datoteke, UTF-8][bajti datoteke]. Izvirno ime datoteke potuje šifrirano; ob dešifriranju se obnovi.
Referenčni dešifrirnik (Python, knjižnica 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)To je predstavitev. Izdelek je trezor.
Ena datoteka, eno geslo, ena stran. To je tisto, kar zmore brskalnik. Sealby to naredi, kot je treba: Argon2id, umerjen za tvojo napravo, ključi v Secure Enclave in skriti trezorji brez shranjenega seznama ali števila.
iPhone in iPad · iOS 17+ · Brezplačno