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.

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:

bytesfieldcontents
0–7magicASCII "SEALBY-W"
8verzia0x01 — čokoľvek iné sa odmietne ako „vytvorené novšou verziou“
9algoritmus0x01 = AES-256-GCM
10–13soľ zapečatenia4 bajty, CSPRNG, čerstvá pre každé zapečatenie
14–15rezervovanémusí byť nula
16–koniecrámce blokovkaž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.

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.

Stiahnuť v App Store

iPhone a iPad · iOS 17+ · Zadarmo