Nástroj na súkromie zadarmo
Zapečať súbor
Zašifruj súbor čerstvým jednorazovým kľúčom a pošli ho ľubovoľným kanálom. Ten, kto má kľúč, ho potom otvorí priamo tu, na tejto stránke. Nič sa nikdy nenahráva, niet prístupovej frázy, ktorú by šlo prelomiť, a obsah uvidíš ešte pred tým, než sa čokoľvek uloží.
Beží celé v tejto karte. Táto stránka nemôže komunikovať s vôbec žiadnym serverom.
Pečatím…
Zapečatené.
Toto je tvoj zašifrovaný súbor. Bez kľúča ho neprečíta nikto. Ani my, ani ktokoľvek iný.
Kľúč — zobrazený len teraz
Tento kľúč existuje len na tejto stránke, práve teraz. Nikam sa neukladá ani neodosiela. Ak ho stratíš, súbor neotvorí nikto, ani my. Ulož si ho skôr, než odídeš.
Alebo zdieľaj kľúč ako odkaz
Kľúč je za znakom # v odkaze. Prehliadače túto časť nikdy neposielajú žiadnemu serveru. Odkaz otvorí túto stránku s pripravenou kartou Otvoriť a vyplneným kľúčom, ktorý potom z adresného riadka odstráni.
Súbor a kľúč posielaj oddelene.
Ktokoľvek, kto má zapečatený súbor aj kľúč, ho vie otvoriť. Pošli ich rôznymi kanálmi, napríklad súbor e-mailom a odkaz s kľúčom SMS-kou. Jedna schránka tak nikdy nedrží oboje.
Kľúč načítaný z tvojho odkazu a odstránený z adresného riadka, takže zostane mimo tvojej histórie.
Kontrolujem…
Vnútri tohto zapečateného súboru
Zatiaľ sa nič neuložilo. Zapečatený súbor o svojom obsahu tvrdí toto:
- Názov
- Veľkosť
- Typ
Pozor — tento typ súboru môže v tvojom zariadení spustiť kód
Dešifrované.
Súbor bol dešifrovaný v tvojom zariadení a ponúknutý na stiahnutie. Nič z neho nikdy neopustilo túto stránku.
Od tvorcov Sealby — šifrovaného trezora pre iPhone
Sealby drží fotky, súbory a poznámky v šifrovaných trezoroch v tvojom iPhone. Bez účtu, bez serverov, a neprečíta ich nikto okrem teba.
Každý parameter, priznaný
- Šifra
- AES-256-GCM (WebCrypto), 128-bitový tag na každý blok
- Kľúč
- 256 bitov z CSPRNG prehliadača, generovaný čerstvo pre každé zapečatenie, použitý raz, neodvodený od ničoho
- Delenie na bloky
- zašifrovaný manifest (názov súboru, veľkosť, typ), potom súbor v blokoch po 1 MiB — každý autentifikovaný zvlášť
- Nonce
- 32-bitová náhodná soľ zapečatenia ‖ 64-bitové počítadlo blokov — v rámci súboru sa nikdy neopakuje a kľúč je aj tak jednorazový
- Autentifikované dáta
- celá 16-bajtová hlavička plus index každého bloku a celkový počet blokov — zmena poradia, skrátenie či vloženie cudzích blokov rozbije dešifrovanie
- Reťazec kľúča
- base64url, 47 znakov: 32-bajtový kľúč plus 3-bajtový kontrolný súčet SHA-256, takže preklep zlyhá čisto namiesto toho, aby vyrobil nezmysly
Úprimné odpovede o tom, čo to robí
Všetko sa deje v tvojom prehliadači.
Pečatenie aj otváranie načítajú súbor do pamäte tejto stránky, spustia tam AES-256-GCM vstavaným enginom WebCrypto tvojho prehliadača a výsledok vrátia ako stiahnutie. Nič sa nenahráva. Neexistuje účet ani spracovanie na strane servera. Na rozdiel od zvyšku tohto webu si táto stránka nenačíta ani počítadlo návštev bez cookies. Žiadna analytika akéhokoľvek druhu.
Nie je to len sľub. Stránka sa doručuje s hlavičkou Content-Security-Policy, ktorá prehliadaču dovolí načítať len vlastné statické súbory tohto webu. Nemá ako poslať tvoj súbor, tvoj kľúč ani čokoľvek iné na akýkoľvek server, vrátane nášho. Otvor si počas pečatenia vývojárske nástroje prehliadača a uvidíš nula požiadaviek. Najpriamejší dôkaz: nainštaluj si Toolbox a zapečať v režime lietadlo. S vypnutou sieťou nemôže nič odísť.
Kľúč je všetko — a my ho nikdy nemáme.
Každé zapečatenie vygeneruje v tvojom prehliadači čerstvý náhodný 256-bitový kľúč. Zobrazí sa ti raz a neuchováva sa nikde: ani v našich systémoch (žiadne v tom nefigurujú), ani v úložisku tvojho prehliadača, ani v zapečatenom súbore. Neexistuje prístupová fráza na uhádnutie a niet čo lámať hrubou silou. Kto má kľúč a súbor, otvorí ho. Kto nie, neotvorí.
To má tvrdý dôsledok: ak sa kľúč stratí, súbor je preč. Žiadny reset, žiadny tiket na podporu, žiadna obnova. Nejde o našu neochotu. Kópia, ktorú by sme vedeli obnoviť, by bola kópiou, ktorú by niekto vedel ukradnúť alebo si vynútiť.
Odkaz s kľúčom sa nikdy nedostane na server.
Odkaz na zdieľanie umiestni kľúč za znak # v URL. Táto časť, fragment, zostáva v prehliadači. Nikdy sa nezahrnie do toho, čo prehliadač posiela akémukoľvek serveru, nášmu ani cudziemu. Keď sa táto stránka načíta s kľúčom v odkaze, prečíta ho, prepne na kartu Otvoriť a kľúč okamžite odstráni z adresného riadka. Nezdržiava sa tak vo viditeľnej URL ani v histórii prehliadača.
Aj tak platí, že ktokoľvek, kto má odkaz aj zapečatený súbor, ho vie otvoriť. Práve preto ti táto stránka hovorí, aby si súbor a kľúč posielal rôznymi kanálmi.
Obsah uvidíš skôr, než sa čokoľvek uloží.
Otváranie prebieha v dvoch krokoch. Stránka najprv dešifruje len malý manifest: pôvodný názov súboru, veľkosť a typ. Ukáže ti ho, s hlasným varovaním pri typoch súborov, ktoré môžu spustiť kód (programy, skripty, inštalátory, dokumenty s makrami, HTML), a pri názvoch maskovaných dvojitou príponou ako invoice.pdf.exe. Nič sa nezapíše, kým neklikneš na dešifrovanie. Stránka dešifrovaný obsah sama nikdy neotvára ani nezobrazuje. Len ponúkne súbor na stiahnutie.
Buď si vedomý toho, čo šifrovanie dokazuje a čo nie. Zapečatený súbor je dôverný počas prenosu. Pečatenie nehovorí nič o tom, kto ho poslal ani či je jeho obsah bezpečný. K neočakávanému zapečatenému súboru pristupuj rovnako skepticky ako k neočakávanej prílohe.
Kde naozaj leží hranica dôvery.
Spúšťaš kód, ktorý ti doručil tento web. Ak by bol sealby.app alebo tvoje spojenie s ním kompromitované, škodlivá stránka by mohla prečítať, čo do nej vložíš. Platí to o každom webovom šifrovacom nástroji a radšej to povieme, než by sme predstierali opak. Čo s tým robíme: stránka je statický súbor a držíme ju bez kódu tretích strán. Nainštalovaný Toolbox ti umožní ďalej používať verziu, ktorú si už načítal. A formát je nižšie zdokumentovaný, aby sa proti nemu dali stavať nezávislé nástroje.
Aj tvoje vlastné zariadenie je vnútri tejto hranice. Rozšírenia prehliadača s prístupom k stránke či malvér v počítači prečítajú všetko, čo prečíta akákoľvek stránka. Zapečatený súbor síce skrýva svoj obsah, ale nie všetko. Kto ho drží, vidí jeho veľkosť (zhruba tú pôvodnú) a to, že ide o súbor zapečatený Sealby.
Hranice povedané po lopate
- Stratený kľúč = stratený súbor. Bez výnimiek, zámerne.
- Nevidíme tvoje súbory ani kľúče, takže ich ani nevieme skontrolovať na malvér. Varovanie pri type súboru vychádza len z názvu súboru. Nie je to záruka bezpečnosti.
- Ktokoľvek, kto má zapečatený súbor aj kľúč, ho vie otvoriť. Nástroj nevie a neoveruje, kto to je.
- Veľkosť zapečateného súboru zhruba prezrádza veľkosť pôvodného súboru.
- Jeden súbor, max. 100 MB, na jedno zapečatenie. Viac súborov najprv zabaľ do zipu.
Formát, bajt po bajte
Všetko, čo technický čitateľ potrebuje na nezávislé overenie výstupu tejto stránky alebo na otvorenie súboru .sealed v tridsiatich riadkoch Pythonu:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | verzia | 0x01 — čokoľvek iné sa odmietne ako „vytvorené novšou verziou“ |
| 9 | algoritmus | 0x01 = AES-256-GCM |
| 10–13 | soľ zapečatenia | 4 bajty, CSPRNG, čerstvá pre každé zapečatenie |
| 14–15 | rezervované | musí byť nula |
| 16–koniec | rámce blokov | každý: uint32 BE dĺžka šifrovaného textu, potom šifrovaný text AES-GCM + 16-bajtový tag |
Blok 0 je manifest: JSON v UTF-8 {"name":…,"size":…,"type":…}. Bloky 1…N−1 sú súbor po kúskoch 1 MiB. Pre blok i z N: nonce = soľ ‖ uint64 BE i; autentifikované dáta = hlavička ‖ uint64 BE i ‖ uint64 BE N. Takže pozmenenie, skrátenie, zmena poradia, presun aj vloženie blokov z iného súboru zlyhajú na autentifikácii. Každý prípad je doložený zapísaným negatívnym testom.
Reťazec kľúča: base64url (bez výplne) z 32-bajtového kľúča, za ktorým nasledujú prvé 3 bajty jeho SHA-256, spolu 47 znakov. Preklep zlyhá na kontrolnom súčte namiesto toho, aby vyrobil nezmysly.
Úplná bajtovo presná špecifikácia (FORMAT-WEB-v1) ·Testovacie vektory so známymi odpoveďami (JSON)
Referenčný otvárač (Python, knižnica 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"])Toto je pre súbory na ceste. Trezor je pre súbory v pokoji.
Pečatenie chráni súbor cestou niekam. Sealby chráni všetko, čo zostáva: fotky, súbory a poznámky v šifrovaných trezoroch v tvojom iPhone. Bez účtu, bez serverov, a neprečíta ich nikto okrem teba.
iPhone a iPad · iOS 17+ · Zadarmo