Besplatni alat za privatnost
Šifriraj datoteku u pregledniku
Odaberi datoteku, odaberi pristupnu frazu i preuzmi šifriranu kopiju. AES-256-GCM, s ključem izvedenim u tvom pregledniku. Ništa se ne prenosi, a radi izvan mreže nakon učitavanja. Format je niže dokumentiran bajt po bajt, pa nam ništa ne moraš vjerovati na riječ.
Radi u cijelosti u ovoj kartici. Ništa se ne prenosi, a radi izvan mreže nakon učitavanja.
Bilo koja datoteka. Velike datoteke traže memoriju. Pogledaj poštena ograničenja niže.
Oporavka nema. Zaboravljena pristupna fraza znači datoteku koju nitko, ni mi, nikad neće moći otvoriti.
Svaki parametar, naveden
- Šifra
- AES-256-GCM (WebCrypto), 128-bitna oznaka
- Izvođenje ključa
- PBKDF2-HMAC-SHA-256, 600.000 iteracija
- KDF sol
- 16 bajtova, CSPRNG, nova za svaku datoteku
- GCM nonce
- 12 bajtova, CSPRNG, nov za svaku datoteku
- Autenticirani podaci
- cijelo zaglavlje od 42 bajta, pa diranje u bilo koji navedeni parametar onemogućuje dešifriranje
- Kodiranje pristupne fraze
- UTF-8, NFC-normalizirano (pa ista fraza upisana na bilo kojem uređaju daje isti ključ)
Pošteno o ograničenjima
Ovo nije format trezora iz aplikacije Sealby. Aplikacija ključeve izvodi Argon2idom kalibriranim po uređaju, omata ih u Secure Enclaveu i sadržaj sprema u spremnike s mogućnošću poricanja, podijeljene na blokove. Ništa od toga web-stranica ne može. Ova je stranica samostalan alat izgrađen na onome što preglednici nude sami po sebi.
PBKDF2 nije memorijski zahtjevan. To je jedina funkcija za izvođenje ključa koju preglednici izvorno nude, a 600.000 iteracija čini svaki pokušaj sporim, ali ga GPU stroj i dalje napada daleko brže nego Argon2id. Zato teret zaštite leži na tvojoj pristupnoj frazi: četiri nasumične riječi ili više, a ne lozinka.
WebCrypto šifrira u jednom potezu. Nema strujanja, pa cijela datoteka za vrijeme obrade stoji u memoriji dva do tri puta. Stotine megabajta u redu su na većini uređaja. Za arhive od više gigabajta upotrijebi alat na računalu. Šifrirani ispis usto otkriva približnu veličinu datoteke. Naziv je šifriran unutra, ali veličina nije skrivena.
Format, bajt po bajt
Sve što tehnički čitatelj treba da neovisno provjeri ispis ove stranice, ili da ga dešifrira u dvadeset redaka Pythona:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | verzija | 0x01 |
| 9 | algoritam | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iteracije | uint32, big-endian (600.000) |
| 14–29 | sol | 16 bajtova |
| 30–41 | nonce | 12 bajtova |
| 42–kraj | šifrat | AES-256-GCM korisnog tereta, AAD = bajtovi 0–41; zadnjih 16 bajtova je GCM oznaka |
Korisni teret prije šifriranja: [duljina naziva u 2 bajta, big-endian][naziv datoteke, UTF-8][bajtovi datoteke]. Izvorni naziv datoteke putuje šifriran; pri dešifriranju se vraća.
Referentni dešifrator (Python, biblioteka 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)Ovo je demo. Trezor je proizvod.
Jedna datoteka, jedna pristupna fraza, jedna stranica. To je ono što preglednik može. Sealby to radi kako treba: Argon2id kalibriran za tvoj uređaj, ključevi u Secure Enclaveu i skriveni trezori bez pohranjenog popisa ili broja.
iPhone i iPad · iOS 17+ · Besplatno