Ingyenes adatvédelmi eszköz
Pecsételj le egy fájlt
Titkosíts egy fájlt egy friss, egyszer használatos kulccsal, és küldd el bármilyen csatornán. Akinél a kulcs van, itt, ezen az oldalon nyitja meg. Semmi sem töltődik fel soha, nincs feltörhető jelmondat, és ami belül van, azt még mentés előtt megmutatjuk.
Teljes egészében ezen a lapon fut. Ez az oldal egyáltalán nem tud kommunikálni semmilyen szerverrel.
Lepecsételés…
Lepecsételve.
Ez a titkosított fájlod. A kulcs nélkül senki sem tudja elolvasni. Sem mi, sem senki más.
A kulcs – csak most látható
Ez a kulcs csak ezen az oldalon létezik, most. Sehol nem tároljuk és nem küldjük el. Ha elveszíted, senki sem tudja megnyitni a fájlt, minket is beleértve. Mentsd el, mielőtt továbblépsz.
Vagy oszd meg a kulcsot linkként
A kulcs a link # jele után áll. A böngészők ezt a részt soha nem küldik el egyetlen szervernek sem. A link ezen az oldalon nyílik meg, a Megnyitás fül készen áll, a kulcs kitöltve, majd az oldal eltávolítja a kulcsot a címsorból.
Küldd külön a fájlt és a kulcsot.
Bárki, akinél a lepecsételt fájl és a kulcs is megvan, meg tudja nyitni. Küldd őket különböző csatornákon, például a fájlt e-mailben, a kulcslinket SMS-ben. Így egyetlen postafiókban sem lesz ott mindkettő.
A kulcsot a linkedből olvastuk ki, és eltávolítottuk a címsorból, hogy ne kerüljön az előzményeidbe.
Ellenőrzés…
Mi van ebben a lepecsételt fájlban
Még semmit sem mentettünk el. Ezt állítja magáról a lepecsételt fájl:
- Név
- Méret
- Típus
Vigyázz – ez a fájltípus kódot futtathat az eszközödön
Visszafejtve.
A fájlt az eszközödön fejtettük vissza, és letöltésként ajánlottuk fel. A fájlból semmi nem hagyta el ezt az oldalt.
A Sealby készítőitől – a titkosított széf iPhone-ra
A Sealby titkosított széfekben tartja a fotókat, fájlokat és jegyzeteket az iPhone-odon. Se fiók, se szerverek, és rajtad kívül senki sem olvashatja.
Minden paraméter, kimondva
- Rejtjelező
- AES-256-GCM (WebCrypto), darabonként 128 bites címke
- Kulcs
- 256 bit a böngésző CSPRNG-jéből, pecsétenként frissen generálva, egyszer használva, semmiből nem levezetve
- Darabolás
- egy titkosított manifeszt (fájlnév, méret, típus), majd a fájl 1 MiB-os darabokban – mindegyik külön hitelesítve
- Nonce
- 32 bites véletlen pecsétsó ‖ 64 bites darabszámláló – egy fájlon belül soha nem ismétlődik, és a kulcs amúgy is egyszer használatos
- Hitelesített adat
- a teljes, 16 bájtos fejléc, plusz az egyes darabok indexe és a darabok teljes száma – a darabok átrendezése, csonkolása vagy beszúrása tönkreteszi a visszafejtést
- Kulcssztring
- base64url, 47 karakter: a 32 bájtos kulcs plusz egy 3 bájtos SHA-256 ellenőrzőösszeg, így egy elgépelés tisztán elbukik ahelyett, hogy szemetet állítana elő
Őszinte válaszok arról, hogy ez mit csinál
Minden a böngésződben történik.
A lepecsételés és a megnyitás egyaránt beolvassa a fájlt ennek az oldalnak a memóriájába, ott futtatja az AES-256-GCM-et a böngésződ beépített WebCrypto motorjával, és letöltésként adja vissza az eredményt. Semmi sem töltődik fel. Nincs fiók, és nincs szerveroldali feldolgozás. Az oldal többi részétől eltérően ez az oldal még a süti nélküli látogatásszámlálót sem tölti be. Semmilyen analitika.
Ez nem csak ígéret. Az oldalt olyan Content-Security-Policy mellett szolgáljuk ki, amely alatt a böngésző kizárólag ennek a webhelynek a saját statikus fájljait töltheti le. Nincs módja elküldeni a fájlodat, a kulcsodat vagy bármi mást semmilyen szervernek, a mieinknek sem. Nyisd meg a böngésződ fejlesztői eszközeit lepecsételés közben, és nulla kérést fogsz látni. A legnyersebb bizonyítékért telepítsd az Eszköztárat, és pecsételj repülőgép üzemmódban. A hálózat nélkül semmi sem távozhat.
A kulcs minden – és sosem kerül hozzánk.
Minden pecsételés friss, véletlenszerű 256 bites kulcsot generál a böngésződben. Egyszer mutatjuk meg, és sehol nem őrizzük meg: sem a rendszereinkben (ilyenek nem is vesznek részt), sem a böngésződ tárolójában, sem a lepecsételt fájlban. Nincs kitalálható jelmondat, és nincs mit nyers erővel törni. Akinél a kulcs és a fájl is megvan, meg tudja nyitni. Akinél nincs, nem.
Ennek kemény következménye van: ha a kulcs elvész, a fájl odavan. Nincs visszaállítás, nincs ügyfélszolgálati jegy, nincs helyreállítás. Ez nem tapintatlanság a részünkről. Egy olyan másolat, amelyet mi vissza tudnánk állítani, olyan másolat lenne, amelyet valaki ellophat vagy követelhet.
A kulcslink soha nem ér el szervert.
A megosztási link a kulcsot az URL # jele után teszi. Ezt a részt, a fragmentumot, a böngésző megtartja. Soha nem foglalja bele abba, amit bármely szervernek elküld, sem a miénknek, sem másénak. Amikor ez az oldal kulccsal a linkben töltődik be, kiolvassa a kulcsot, átvált a Megnyitás fülre, és azonnal eltávolítja a kulcsot a címsorból. Így nem marad ott a látható URL-ben vagy a böngészőelőzményekben.
Ettől még bárki, akinél a link és a lepecsételt fájl is megvan, meg tudja nyitni. Ezért mondja ez az oldal, hogy a fájlt és a kulcsot különböző csatornákon küldd.
Látod, mi van belül, mielőtt bármi mentődne.
A megnyitás két lépésben történik. Először az oldal csak egy kis manifesztet fejt vissza: az eredeti fájlnevet, méretet és típust. Ezt megmutatja neked, hangos figyelmeztetéssel azoknál a fájltípusoknál, amelyek kódot futtathatnak (programok, szkriptek, telepítők, makrós dokumentumok, HTML), és azoknál a neveknél, amelyeket kettős kiterjesztés álcáz, mint az invoice.pdf.exe. Semmi sem íródik ki, amíg a visszafejtésre nem kattintasz. Az oldal soha nem nyitja meg és nem jeleníti meg magát a visszafejtett tartalmat. Csak felkínálja a fájlt letöltésre.
Legyél tisztában azzal, mit bizonyít a titkosítás és mit nem. A lepecsételt fájl bizalmas marad út közben. A lepecsételés semmit sem mond arról, ki küldte, vagy hogy a tartalma biztonságos-e. Egy váratlan lepecsételt fájlt pontosan olyan gyanakvással kezelj, mint egy váratlan csatolmányt.
Hol húzódik valójában a bizalmi határ.
Olyan kódot futtatsz, amelyet ez a weboldal szolgált ki neked. Ha a sealby.app vagy a hozzá vezető kapcsolatod kompromittálódna, egy rosszindulatú oldal el tudná olvasni, amit beleteszel. Ez minden webes titkosítóeszközre igaz, és inkább kimondjuk, mint hogy úgy tegyünk, mintha nem így lenne. Amit ez ellen teszünk: az oldal statikus fájl, és harmadik féltől származó kódtól mentesen tartjuk. A telepített Eszköztárral egy már betöltött verziót használhatsz tovább. A formátumot pedig lent dokumentáljuk, hogy független eszközök is építhetők legyenek rá.
A saját eszközöd is a határon belül van. Az oldalhoz hozzáférő böngészőbővítmények vagy a gépen lévő kártevők mindent el tudnak olvasni, amihez bármelyik oldal hozzáfér. A lepecsételt fájl elrejti a tartalmát, de nem mindent. Aki nála van, látja a méretét (nagyjából az eredetiét) és azt, hogy Sealbyvel lepecsételt fájl.
Korlátok, közérthetően
- Elveszett kulcs = elveszett fájl. Kivétel nincs, ez a terv része.
- Nem látjuk a fájljaidat és a kulcsaidat, ezért kártevőre sem tudjuk átvizsgálni őket. A fájltípus-figyelmeztetés csak a fájlnéven alapul. Nem biztonsági garancia.
- Bárki, akinél a lepecsételt fájl és a kulcs is megvan, meg tudja nyitni. Az eszköz nem tudja és nem ellenőrzi, hogy ki az.
- A lepecsételt fájl mérete nagyjából elárulja az eredeti fájl méretét.
- Egy fájl, legfeljebb 100 MB, pecsétenként. Több fájlt előbb tömöríts.
A formátum, bájtról bájtra
Minden, amire egy technikai olvasónak szüksége van, hogy önállóan ellenőrizze ennek az oldalnak a kimenetét, vagy harminc sor Pythonban megnyisson egy .sealed fájlt:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | verzió | 0x01 – bármi más elutasítva, mint „újabb verzióval készült” |
| 9 | algoritmus | 0x01 = AES-256-GCM |
| 10–13 | pecsétsó | 4 bájt, CSPRNG, pecsétenként új |
| 14–15 | fenntartva | nullának kell lennie |
| 16–vég | darabkeretek | mindegyik: uint32 BE titkosítottszöveg-hossz, majd az AES-GCM titkosított szöveg + 16 bájtos címke |
A 0. darab a manifeszt: UTF-8 JSON {"name":…,"size":…,"type":…}. Az 1…N−1 darabok a fájl 1 MiB-os szeletei. Az N-ből az i. darabnál: nonce = só ‖ uint64 BE i; hitelesített adat = fejléc ‖ uint64 BE i ‖ uint64 BE N. Így a hamisítás, a csonkolás, az átrendezés, az áthelyezés és a fájlok közötti beszúrás mind megbukik a hitelesítésen. Mindegyik esetet egy-egy rögzített negatív teszt bizonyítja.
Kulcssztring: a 32 bájtos kulcs base64url kódolása (kitöltés nélkül), utána az SHA-256-ának első 3 bájtja, összesen 47 karakter. Egy elgépelés az ellenőrzőösszegen bukik el, nem szemetet állít elő.
Teljes, bájtpontos specifikáció (FORMAT-WEB-v1) ·Ismert válaszú tesztvektorok (JSON)
Referencia-megnyitó (Python, cryptography könyvtár)
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"])Ez az úton lévő fájloké. A széf azoké, amelyek maradnak.
A lepecsételés egy fájlt véd, amíg útra kel. A Sealby mindent véd, ami marad: fotókat, fájlokat és jegyzeteket titkosított széfekben az iPhone-odon. Se fiók, se szerverek, és rajtad kívül senki sem olvashatja.
iPhone és iPad · iOS 17+ · Ingyenes