Gratis personvernverktøy
Krypter en fil i nettleseren din
Velg en fil, velg en passfrase, og last ned en kryptert kopi. AES-256-GCM, med nøkkelen utledet i nettleseren din. Ingenting lastes opp, og det fungerer offline når siden først er lastet. Formatet er dokumentert byte for byte nedenfor, så du slipper å ta oss på ordet for noe som helst.
Kjører i sin helhet i denne fanen. Ingenting lastes opp, og det fungerer offline når siden er lastet.
Hvilken som helst fil. Store filer krever minne. Se de ærlige begrensningene nedenfor.
Det finnes ingen gjenoppretting. En glemt passfrase betyr en fil som ingen, heller ikke vi, noen gang kan åpne.
Hver parameter, oppgitt
- Chiffer
- AES-256-GCM (WebCrypto), 128-bits tag
- Nøkkelutledning
- PBKDF2-HMAC-SHA-256, 600 000 iterasjoner
- KDF-salt
- 16 byte, CSPRNG, ferskt per fil
- GCM-nonce
- 12 byte, CSPRNG, ferskt per fil
- Autentiserte data
- hele headeren på 42 byte, så å manipulere en hvilken som helst oppgitt parameter bryter dekrypteringen
- Koding av passfrase
- UTF-8, NFC-normalisert (så den samme frasen tastet på hvilken som helst enhet utleder samme nøkkel)
Ærlige begrensninger
Dette er ikke hvelvformatet i Sealby-appen. Appen utleder nøkler med Argon2id kalibrert per enhet, pakker dem inn i Secure Enclave, og lagrer innhold i benektbare, oppdelte beholdere. Ingenting av det kan en nettside gjøre. Denne siden er et frittstående verktøy bygget på det nettlesere tilbyr innebygd.
PBKDF2 er ikke minnekrevende. Det er den eneste nøkkelutledningsfunksjonen nettlesere leverer innebygd, og 600 000 iterasjoner gjør hver gjetning treg, men en GPU-rigg angriper den fortsatt langt raskere enn Argon2id. Så beskyttelsen ligger i passfrasen din: fire tilfeldige ord eller flere, ikke et passord.
WebCrypto krypterer i én operasjon. Det finnes ingen strømming, så hele filen ligger i minnet i to til tre kopier mens den behandles. Hundrevis av megabyte går fint på de fleste enheter. For arkiver på flere gigabyte, bruk et skrivebordsverktøy. Det krypterte resultatet røper dessuten filens omtrentlige størrelse. Navnet er kryptert inni, men størrelsen er ikke skjult.
Formatet, byte for byte
Alt en teknisk leser trenger for å verifisere resultatet fra denne siden uavhengig, eller dekryptere det på tjue linjer Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | versjon | 0x01 |
| 9 | algoritme | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterasjoner | uint32, big-endian (600 000) |
| 14–29 | salt | 16 byte |
| 30–41 | nonce | 12 byte |
| 42–slutt | chiffertekst | AES-256-GCM av nyttelasten, AAD = byte 0–41; de siste 16 bytene er GCM-taggen |
Nyttelast før kryptering: [2-byte navnelengde, big-endian][filnavn, UTF-8][filbyte]. Det opprinnelige filnavnet reiser kryptert; ved dekryptering gjenopprettes det.
Referansedekrypterer (Python, cryptography-biblioteket)
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)Dette er demoen. Hvelvet er produktet.
Én fil, én passfrase, én side. Det er hva en nettleser kan få til. Sealby gjør det ordentlig: Argon2id kalibrert til enheten din, nøkler i Secure Enclave, og skjulte hvelv uten noen lagret liste eller telling.
iPhone og iPad · iOS 17+ · Gratis