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.
Pitseerimine…
Pitseeritud.
See on krüptitud fail. Ilma võtmeta ei saa seda lugeda mitte keegi — ei meie ega keegi teine.
Võti — kuvatakse ainult praegu
See võti eksisteerib ainult praegu sellel lehel. Seda ei talletata ega saadeta kuhugi. Kui võti kaob, ei saa keegi, ka meie, faili avada. Salvestage see enne lahkumist.
Või jagage võtit lingina
Võti asub lingis märgi # järel. Brauserid ei saada seda osa kunagi serverisse. Link avab selle lehe, kus vahekaart Ava on valmis ja võti sisestatud, ning eemaldab seejärel võtme aadressiribalt.
Saatke fail ja võti eraldi.
Igaüks, kellel on nii pitseeritud fail kui ka võti, saab selle avada. Saatke need eri kanalite kaudu, näiteks fail e-postiga ja võtmelingi tekstsõnumiga. Nii ei sisalda ükski postkast mõlemat.
Võti loeti lingist ja eemaldati aadressiribalt, et see ei jääks ajalukku.
Kontrollimine…
Selle pitseeritud faili sisu
Midagi pole veel salvestatud. Pitseeritud faili väitel sisaldab see järgmist:
- Nimi
- Maht
- Tüüp
Ettevaatust — seda tüüpi fail võib seadmes koodi käivitada
Dekrüptitud.
Fail dekrüptiti seadmes ja pakuti allalaadimiseks. Midagi selle kohta ei lahkunud kunagi sellelt lehelt.
Sealby loojatelt — krüptitud seif iPhone’ile
Sealby hoiab fotosid, faile ja märkmeid iPhone’i krüptitud seifides. Kontot ega servereid pole, lugeda saate ainult teie.
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:
| bytes | field | contents |
|---|---|---|
| 0–7 | tunnus | ASCII "SEALBY-W" |
| 8 | versioon | 0x01 — kõik muu lükatakse tagasi teatega „loodud uuema versiooniga” |
| 9 | algoritm | 0x01 = AES-256-GCM |
| 10–13 | pitseerimissool | 4 baiti, CSPRNG, iga pitseerimise jaoks uus |
| 14–15 | reserveeritud | peavad olema nullid |
| 16–lõpp | tükikaadrid | igaü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.
Täielik baiditäpne spetsifikatsioon (FORMAT-WEB-v1) ·Teadaoleva vastusega testvektorid (JSON)
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.
iPhone ja iPad · iOS 17+ · tasuta