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.

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:

bytesfieldcontents
0–7magicASCII "SEALBY-W"
8verzió0x01 – bármi más elutasítva, mint „újabb verzióval készült”
9algoritmus0x01 = AES-256-GCM
10–13pecsétsó4 bájt, CSPRNG, pecsétenként új
14–15fenntartvanullának kell lennie
16–végdarabkeretekmindegyik: 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ő.

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.

Letöltés az App Store-ból

iPhone és iPad · iOS 17+ · Ingyenes