Tasuta privaatsustööriist

Pitseerige fail

Krüptige fail värske ühekordse võtmega ja saatke see soovitud kanali kaudu. Võtme omanik avab faili siinsamas sellel lehel. Midagi ei laadita kunagi üles, murdmiseks pole paroolifraasi ning enne salvestamist näeb faili sisu.

Töötab täielikult sellel vahekaardil. See leht ei saa üldse ühegi serveriga ühendust võtta.

Kõik parameetrid avalikult välja toodud

Šiffer
AES-256-GCM (WebCrypto), iga tüki kohta 128-bitine märgend
Võti
256 bitti brauseri CSPRNG-st, iga pitseerimise jaoks värskelt loodud, ühekordne ja mitte millestki tuletatud
Tükeldamine
krüptitud manifest (failinimi, maht, tüüp), seejärel fail 1 MiB tükkidena — igaüks eraldi autenditud
Nonce
32-bitine juhuslik pitseerimissool ‖ 64-bitine tükiloendur — failis ei kordu kunagi ning võti on niikuinii ühekordne
Autenditud andmed
kogu 16-baidine päis koos iga tüki indeksi ja tükkide koguarvuga — tükkide ümberjärjestamine, kärpimine või liitmine rikub dekrüptimise
Võtmestring
base64url, 47 märki: 32-baidine võti koos 3-baidise SHA-256 kontrollsummaga, nii et kirjaviga annab arusaadava vea, mitte rämpsu

Ausad vastused tööriista toimimise kohta

Kõik toimub brauseris.

Nii pitseerimisel kui ka avamisel loetakse fail selle lehe mällu, käitatakse seal brauseri sisseehitatud WebCrypto mootoriga AES-256-GCM ning antakse tulemus allalaadimiseks tagasi. Midagi ei laadita üles. Kontot ega serveripoolset töötlemist pole. Erinevalt ülejäänud saidist ei laadi see leht isegi küpsiseta külastusloendurit. Mingit analüütikat pole.

See pole pelgalt lubadus. Leht edastatakse Content-Security-Policyga, mis lubab brauseril laadida ainult selle saidi enda staatilisi faile. Lehel pole võimalust saata faili, võtit ega midagi muud ühelegi serverile, sealhulgas meie omale. Avage pitseerimise ajal brauseri arendajatööriistad ja näete, et päringuid pole. Kõige otsesemaks tõendiks paigaldage Toolbox ja pitseerige lennurežiimis. Väljalülitatud võrguga ei saa midagi lahkuda.

Võti on kõik — ja meie ei saa seda kunagi.

Iga pitseerimise jaoks loob brauser värske juhusliku 256-bitise võtme. Seda näidatakse üks kord ega hoita kusagil: mitte meie süsteemides (neid ei kasutata), brauseri salvestusruumis ega pitseeritud failis. Murdmiseks pole paroolifraasi ega midagi, mida jõumeetodil proovida. Võtme ja faili omanik saab faili avada. Teised ei saa.

Sellel on karm tagajärg: võtme kadumisel on fail läinud. Lähtestamist, tugipiletit ega taastamist pole. Asi pole abivalmiduse puudumises. Koopia, mida meie saaks taastada, oleks koopia, mida keegi saaks varastada või välja nõuda.

Võtmelink ei jõua kunagi serverisse.

Jagamislink asetab võtme URL-is märgi # järele. See osa ehk fragment jääb brauserisse. Seda ei lisata kunagi andmetele, mida brauser saadab meie või kellegi teise serverisse. Kui leht laaditakse lingis oleva võtmega, loeb see võtme, lülitub vahekaardile Ava ja eemaldab võtme kohe aadressiribalt. Nii ei jää see nähtavasse URL-i ega brauseri ajalukku.

Sellegipoolest saab igaüks, kellel on nii link kui ka pitseeritud fail, selle avada. Seepärast soovitab leht saata faili ja võtme eri kanalite kaudu.

Enne salvestamist näeb faili sisu.

Avamine toimub kahes etapis. Kõigepealt dekrüptib leht ainult väikese manifesti: algse failinime, mahu ja tüübi. See kuvab andmed koos silmatorkava hoiatusega failitüüpide puhul, mis võivad käivitada koodi (programmid, skriptid, paigaldajad, makrodega dokumendid, HTML), ning topeltlaiendiga maskeeritud nimede puhul, näiteks invoice.pdf.exe. Midagi ei kirjutata enne, kui klõpsate dekrüptimiseks. Leht ei ava ega kuva dekrüptitud sisu ise, vaid pakub faili ainult allalaadimiseks.

Olgu selge, mida krüptimine tõendab ja mida mitte. Pitseeritud fail on edastamisel konfidentsiaalne. Pitseerimine ei ütle midagi saatja ega sisu ohutuse kohta. Suhtuge ootamatusse pitseeritud faili sama skeptiliselt nagu ootamatusse manusesse.

Kus usalduspiir tegelikult asub.

Käivitate koodi, mille see veebisait teile edastas. Kui sealby.app või ühendus sellega oleks kompromiteeritud, võiks pahatahtlik leht lugeda kõike, mis sellele antakse. See kehtib iga veebipõhise krüptimistööriista kohta ja ütleme seda pigem otse kui teeskleme vastupidist. Meie abinõud: leht on staatiline fail ja hoiame selle kolmanda poole koodist vabana. Paigaldatud Toolbox võimaldab jätkata juba laaditud versiooni kasutamist. Vorming on allpool dokumenteeritud, et selle jaoks saaks luua sõltumatuid tööriistu.

Usalduspiiri sees on ka teie seade. Lehele juurdepääsuga brauserilaiendid või seadmes olev pahavara võivad lugeda kõike, mida leht saab lugeda. Pitseeritud fail peidab sisu, kuid mitte kõike. Igaüks, kelle valduses fail on, näeb selle mahtu (ligikaudu sama mis originaalil) ja seda, et fail on Sealbyga pitseeritud.

Piirangud lihtsas keeles

  • Kadunud võti = kadunud fail. Erandeid pole; nii on see kavandatud.
  • Me ei näe faile ega võtmeid, mistõttu ei saa me neid ka pahavara suhtes kontrollida. Failitüübi hoiatus põhineb ainult failinimel. See ei taga ohutust.
  • Igaüks, kellel on nii pitseeritud fail kui ka võti, saab selle avada. Tööriist ei tea ega kontrolli, kes see on.
  • Pitseeritud faili maht paljastab ligikaudu algse faili mahu.
  • Üks kuni 100 MB fail ühe pitseerimise kohta. Pakkige mitu faili esmalt ZIP-failiks.

Vorming bait-baidilt

Kõik, mida tehniline lugeja vajab lehe väljundi sõltumatuks kontrollimiseks või .sealed-faili avamiseks kolmekümne Pythoni koodirea abil:

bytesfieldcontents
0–7tunnusASCII "SEALBY-W"
8versioon0x01 — kõik muu lükatakse tagasi teatega „loodud uuema versiooniga”
9algoritm0x01 = AES-256-GCM
10–13pitseerimissool4 baiti, CSPRNG, iga pitseerimise jaoks uus
14–15reserveeritudpeavad olema nullid
16–lõpptükikaadridigaüks: uint32 BE šifreeritud teksti pikkus, seejärel AES-GCM-i šifreeritud tekst + 16-baidine märgend

Tükk 0 on manifest: UTF-8 JSON {"name":…,"size":…,"type":…}. Tükid 1…N−1 on fail 1 MiB osadena. Iga tüki i puhul N-st: nonce = sool ‖ uint64 BE i; autenditud andmed = päis ‖ uint64 BE i ‖ uint64 BE N. Seega nurjuvad autentimisel muutmine, kärpimine, ümberjärjestamine, teisaldamine ja eri failide tükkide liitmine. Iga juhtumit tõendab hoidlasse lisatud negatiivne test.

Võtmestring: base64url (ilma täitemärkideta) 32-baidisest võtmest, millele järgnevad selle esimesed 3 SHA-256 baiti; kokku 47 märki. Kirjaviga nurjub kontrollsummal ega tekita rämpsu.

Näidisavaja (Python, teek cryptography)
import base64, hashlib, json, struct, sys
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SEALBY-W" and raw[8] == 1 and raw[9] == 1
assert raw[14:16] == b"\x00\x00"
header, salt = raw[:16], raw[10:14]
frames, off = [], 16
while off < len(raw):
    (n,) = struct.unpack(">I", raw[off:off + 4]); off += 4
    frames.append(raw[off:off + n]); off += n
assert off == len(raw)

kb = base64.urlsafe_b64decode(sys.argv[2] + "=")   # 47-char key string
key, check = kb[:32], kb[32:35]
assert hashlib.sha256(key).digest()[:3] == check    # typo check

N = len(frames)
def chunk(i):
    nonce = salt + struct.pack(">Q", i)
    aad = header + struct.pack(">QQ", i, N)
    return AESGCM(key).decrypt(nonce, frames[i], aad)

manifest = json.loads(chunk(0))
data = b"".join(chunk(i) for i in range(1, N))
assert len(data) == manifest["size"]
open(manifest["name"], "wb").write(data)
print("decrypted ->", manifest["name"])

See on edastatavate failide jaoks. Seif on hoiustatavate failide jaoks.

Pitseerimine kaitseb faili teel sihtkohta. Sealby kaitseb kõike, mis jääb alles: fotosid, faile ja märkmeid iPhone’i krüptitud seifides. Kontot ega servereid pole, lugeda saate ainult teie.

Laadi alla App Store’ist

iPhone ja iPad · iOS 17+ · tasuta