Bezmaksas privātuma rīks

Šifrējiet failu savā pārlūkprogrammā

Izvēlieties failu un ieejas frāzi, pēc tam lejupielādējiet šifrētu kopiju. Tiek izmantots AES-256-GCM, un atslēga tiek atvasināta jūsu pārlūkprogrammā. Nekas netiek augšupielādēts; pēc lapas ielādes rīks darbojas arī bezsaistē. Tālāk formāts ir dokumentēts baitu pa baitam, tāpēc ikvienu apgalvojumu varat pārbaudīt patstāvīgi.

Pilnībā darbojas šajā cilnē. Nekas netiek augšupielādēts, un pēc lapas ielādes rīks darbojas arī bezsaistē.

Izvēlieties failu

Jebkurš fails. Lieliem failiem ir nepieciešama atmiņa. Skatiet godīgos ierobežojumus zemāk.

Atkopšana nav iespējama. Ja ieejas frāze ir aizmirsta, failu vairs nevar atvērt neviens, arī mēs.

Visi parametri ir norādīti

Šifrs
AES-256-GCM (WebCrypto), 128 bitu autentifikācijas birka
Atslēgas atvasināšana
PBKDF2-HMAC-SHA-256, 600 000 iterācijas
KDF sāls
16 baiti, CSPRNG; katram failam ģenerēta no jauna
GCM nonce
12 baiti, CSPRNG; katram failam ģenerēta no jauna
Autentificēti dati
visa 42 baitu galvene, tāpēc jebkura norādītā parametra manipulēšana pārtrauc atšifrēšanu
Ieejas frāzes kodējums
UTF-8, NFC normalizēts (viena un tā pati frāze jebkurā ierīcē rada vienu un to pašu atslēgu)

Godīgi ierobežojumi

Tas nav Sealby lietotnes seifu formāts. Lietotne atvasina atslēgas ar katrai ierīcei kalibrētu Argon2id, aizsargā tās ar Secure Enclave un glabā saturu noliedzamos, gabalos sadalītos konteineros. Tīmekļa lapa neko no tā nespēj. Šī lapa ir atsevišķs rīks, kas izmanto pārlūkā iebūvētās iespējas.

PBKDF2 nav funkcija ar lielu atmiņas patēriņu. Tā ir vienīgā atslēgas atvasināšanas funkcija, ko pārlūki atbalsta iebūvēti, un 600 000 iterāciju palēnina katru minējumu, tomēr GPU sistēma tai joprojām uzbrūk daudz ātrāk nekā Argon2id. Tāpēc aizsardzību nodrošina ieejas frāze: vismaz četri nejauši vārdi, nevis parole.

WebCrypto šifrē visu vienā reizē. Straumēšana nav pieejama, tāpēc apstrādes laikā viss fails atmiņā atrodas divās vai trijās kopijās. Vairums ierīču spēj apstrādāt simtiem megabaitu; vairāku gigabaitu arhīviem izmantojiet darbvirsmas rīku. Šifrētā izvade atklāj arī faila aptuveno lielumu. Faila nosaukums ir šifrēts, bet lielums netiek slēpts.

Formāts baitu pa baitam

Viss, kas tehniskajam lasītājam ir nepieciešams, lai neatkarīgi pārbaudītu šīs lapas izvadi vai atšifrētu to divdesmit Python rindās:

bytesfieldcontents
0–7signatūraASCII "SBXF0001"
8versija0x01
9algoritms0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13iterāciju skaitsuint32, big-endian (600 000)
14–29sāls16 baiti
30–41nonce12 baiti
42–beigāmšifrtekstsDatu daļa šifrēta ar AES-256-GCM, AAD = baiti 0–41; pēdējie 16 baiti ir GCM autentifikācijas birka

Datu daļa pirms šifrēšanas: [2 baitu nosaukuma garums, big-endian][faila nosaukums, UTF-8][faila baiti]. Sākotnējais faila nosaukums tiek šifrēts un atšifrēšanas laikā atjaunots.

Atsauces atšifrētājs (Python, kriptogrāfijas bibliotēka)
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)

Šī ir demonstrācija. Seifs ir produkts.

Viens fails, viena ieejas frāze, viena lapa — to spēj pārlūks. Sealby to dara pilnvērtīgi: jūsu ierīcei kalibrēts Argon2id, atslēgas Secure Enclave un slēpti seifi, kuru saraksts un skaits nekur netiek glabāts.

Lejupielādēt no App Store

iPhone un iPad · iOS 17+ · Bezmaksas