Besplatni alat za privatnost
Zapečatite datoteku
Šifrirajte datoteku svježim jednokratnim ključem i pošaljite je kanalom kojim želite. Ko god ima ključ, otvorit će je upravo ovdje, na ovoj stranici. Ništa se nikad ne prenosi, nema pristupne fraze koju bi neko probijao, a sadržaj vidite prije nego što se išta spremi.
Radi u cijelosti u ovoj kartici. Ova stranica uopće ne može komunicirati ni s jednim serverom.
Pečatim…
Zapečaćeno.
Ovo je vaša šifrirana datoteka. Bez ključa je niko ne može pročitati. Ni mi, ni iko drugi.
Ključ — prikazan samo sada
Ovaj ključ postoji samo na ovoj stranici, upravo sada. Nigdje se ne sprema niti šalje. Izgubite li ga, niko ne može otvoriti datoteku, ni mi. Sačuvajte ga prije nego što odete.
Ili podijelite ključ kao link
Ključ stoji iza # u linku. Preglednici taj dio nikad ne šalju nijednom serveru. Link otvara ovu stranicu s pripremljenom karticom Otvori i upisanim ključem, a zatim uklanja ključ iz adresne trake.
Pošaljite datoteku i ključ odvojeno.
Ko god ima i zapečaćenu datoteku i ključ, može je otvoriti. Pošaljite ih različitim kanalima, naprimjer datoteku e-poštom, a link s ključem SMS-om. Tako nijedan sandučić nikad ne drži oboje.
Ključ je pročitan iz vašeg linka i uklonjen iz adresne trake, pa ne ulazi u historiju pregledača.
Provjeravam…
Unutar ove zapečaćene datoteke
Još ništa nije spremljeno. Ovo je ono što zapečaćena datoteka kaže da sadrži:
- Naziv
- Veličina
- Vrsta
Oprez — ova vrsta datoteke može pokrenuti kod na vašem uređaju
Dešifrirano.
Datoteka je dešifrirana na vašem uređaju i ponuđena za preuzimanje. Ništa o njoj nikad nije napustilo ovu stranicu.
Od tvoraca Sealbyja — šifriranog sefa za iPhone
Sealby drži fotografije, datoteke i bilješke u šifriranim sefovima na vašem iPhoneu. Bez naloga, bez servera, čitljivo samo vama.
Svaki parametar, naveden
- Šifra
- AES-256-GCM (WebCrypto), 128-bitna oznaka po dijelu
- Ključ
- 256 bitova iz CSPRNG-a pregledača, svjež za svako pečaćenje, upotrijebljen jednom, ni iz čega izveden
- Podjela na dijelove
- šifrirani manifest (naziv, veličina, vrsta), pa datoteka u dijelovima od 1 MiB — svaki zasebno autenticiran
- Nonce
- 32-bitna nasumična sol pečata ‖ 64-bitni brojač dijelova — nikad se ne ponavlja unutar datoteke, a ključ je ionako jednokratan
- Autenticirani podaci
- cijelo zaglavlje od 16 bajtova plus indeks svakog dijela i ukupan broj dijelova — presloživanje, odsijecanje ili spajanje dijelova onemogućuje dešifriranje
- Znakovni zapis ključa
- base64url, 47 znakova: 32-bajtni ključ plus 3-bajtna SHA-256 kontrolna suma, pa tipfeler uredno padne umjesto da proizvede smeće
Pošteni odgovori o tome šta ovo radi
Sve se događa u vašem pregledaču.
I pečaćenje i otvaranje učitavaju datoteku u memoriju ove stranice, tamo pokreću AES-256-GCM ugrađenim WebCrypto pogonom vašeg pregledača i rezultat vraćaju kao preuzimanje. Ništa se ne prenosi. Nema naloga ni obrade na serveru. Za razliku od ostatka ove stranice, ova ne učitava čak ni brojač posjeta bez kolačića. Nikakva analitika.
Ovo nije samo obećanje. Stranica se poslužuje s Content-Security-Policyjem koji pregledaču dopušta da dohvati samo statične datoteke same ove stranice. Nema načina da vašu datoteku, vaš ključ ili bilo šta drugo pošalje ijednom serveru, ni našem. Otvorite razvojne alate pregledača dok pečatite i vidjet ćete nula zahtjeva. Za najdirektniji dokaz, instalirajte Alatnicu i pečatite u avionskom režimu. S isključenom mrežom ništa ne može izaći.
Ključ je sve — a mi ga nikad nemamo.
Svako pečaćenje u vašem pregledaču stvara svjež nasumičan 256-bitni ključ. Prikazuje vam se jednom i ne čuva se nigdje: ni u našim sistemima (nijedan nije uključen), ni u memoriji vašeg pregledača, ni u zapečaćenoj datoteci. Nema pristupne fraze koju bi se pogađalo ni ičega za probijanje grubom silom. Ko ima ključ i datoteku, može je otvoriti. Ko nema, ne može.
To ima tvrdu posljedicu: izgubi li se ključ, datoteka je nepovratno izgubljena. Nema poništavanja, prijave podršci ni oporavka. Nismo mi neuslužni. Kopija koju bismo mi mogli vratiti bila bi kopija koju bi neko mogao ukrasti ili zatražiti.
Link s ključem nikad ne dolazi do servera.
Link za dijeljenje stavlja ključ iza # u URL-u. Taj dio, fragment, ostaje u pregledaču. Nikad se ne uključuje u ono što pregledač šalje ijednom serveru, ni našem ni ičijem. Kad se ova stranica učita s ključem u linku, ona ključ pročita, prebaci se na karticu Otvori i odmah ukloni ključ iz adresne trake. Tako ne ostaje u vidljivom URL-u ni u historiji pregledača.
Ipak, ko god ima i link i zapečaćenu datoteku, može je otvoriti. Zato vam ova stranica govori da datoteku i ključ šaljete različitim kanalima.
Vidite što je unutra prije nego što se išta spremi.
Otvaranje se odvija u dva koraka. Prvo stranica dešifrira samo mali manifest: originalni naziv, veličinu i vrstu. Pokaže vam to, uz glasno upozorenje za vrste datoteka koje mogu pokrenuti kod (programi, skripte, instalacijski programi, dokumenti s makronaredbama, HTML) i za nazive prerušene dvostrukim nastavkom poput invoice.pdf.exe. Ništa se ne zapisuje dok ne kliknete na dešifriranje. Stranica dešifrirani sadržaj nikad sama ne otvara niti prikazuje. Samo nudi datoteku na preuzimanje.
Važno je jasno razumjeti šta šifriranje dokazuje, a šta ne. Zapečaćena je datoteka povjerljiva u prijenosu. Pečaćenje ne govori ništa o tome ko ju je poslao ni je li njen sadržaj siguran. Prema neočekivanoj zapečaćenoj datoteci odnosite se jednako skeptično kao prema neočekivanom privitku.
Gdje je zapravo granica povjerenja.
Pokrećete kod koji vam je poslužila ova web-stranica. Da su sealby.app ili vaša veza s njim kompromitirani, zlonamjerna bi stranica mogla pročitati ono što u nju unosite. To vrijedi za svaki alat za šifriranje na webu i radije ćemo to reći nego se pretvarati. Šta mi činimo povodom toga: stranica je statična datoteka i držimo je bez koda trećih strana. Instalirana Alatnica omogućuje vam da nastavite koristiti verziju koju ste već učitali. A format je dokumentiran niže, pa se prema njemu mogu graditi nezavisni alati.
Unutar granice je i vaš vlastiti uređaj. Proširenja pregledača s pristupom stranicama ili zlonamjerni softver na uređaju mogu pročitati sve što može bilo koja stranica. Zapečaćena datoteka skriva svoj sadržaj, ali ne sve. Ko god je ima, može vidjeti njenu veličinu (otprilike veličinu originala) i to da je riječ o Sealbyjevoj zapečaćenoj datoteci.
Ograničenja, jednostavnim riječima
- Izgubljen ključ = izgubljena datoteka. Bez iznimke, po dizajnu.
- Ne možemo vidjeti vaše datoteke ni ključeve, pa ih ne možemo ni skenirati na zlonamjerni softver. Upozorenje o vrsti datoteke temelji se samo na nazivu. Nije jamstvo sigurnosti.
- Ko god ima i zapečaćenu datoteku i ključ, može je otvoriti. Alat ne zna i ne provjerava ko je to.
- Veličina zapečaćene datoteke otprilike otkriva veličinu originalne datoteke.
- Jedna datoteka, do 100 MB, po pečaćenju. Više datoteka prvo zapakirajte u zip.
Format, bajt po bajt
Sve što je tehničkom čitaocu potrebno da nezavisno provjeri rezultat ove stranice ili otvori .sealed datoteku u trideset redova Python koda:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | verzija | 0x01 — sve ostalo odbija se kao „izrađeno novijom verzijom” |
| 9 | algoritam | 0x01 = AES-256-GCM |
| 10–13 | sol pečata | 4 bajta, CSPRNG, nova za svako pečaćenje |
| 14–15 | rezervirano | mora biti nula |
| 16–kraj | okviri dijelova | svaki: uint32 BE dužina šifrata, pa AES-GCM šifrat + 16-bajtna oznaka |
Dio 0 je manifest: UTF-8 JSON {"name":…,"size":…,"type":…}. Dijelovi 1…N−1 su datoteka u komadima od 1 MiB. Za dio i od N: nonce = sol ‖ uint64 BE i; autenticirani podaci = zaglavlje ‖ uint64 BE i ‖ uint64 BE N. Pa diranje, odsijecanje, presložavanje, premještanje i spajanje između datoteka svi padaju na autentikaciji. Svaki je slučaj dokazan predanim negativnim testom.
Znakovni zapis ključa: base64url (bez dopune) 32-bajtnog ključa nakon kojeg slijede prva 3 bajta njegova SHA-256, ukupno 47 znakova. Tipfeler pada na kontrolnoj sumi umjesto da proizvede smeće.
Potpuna specifikacija tačna do bajta (FORMAT-WEB-v1) ·Testni vektori s poznatim odgovorima (JSON)
Referentni otvarač (Python, biblioteka 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"])Ovo je za datoteke u prijenosu. Sef je za datoteke u mirovanju.
Pečaćenje štiti datoteku na putu negdje. Sealby štiti sve što ostaje: fotografije, datoteke i bilješke u šifriranim sefovima na vašem iPhoneu. Bez naloga, bez servera, čitljivo samo vama.
iPhone i iPad · iOS 17+ · Besplatno