Gratis privatlivsværktøj
Forsegl en fil
Krypter en fil under en frisk engangsnøgle, og send den gennem præcis den kanal, du vil. Den, der har nøglen, åbner den lige her på denne side. Intet uploades nogensinde, der er ingen adgangssætning at knække, og du ser, hvad der er indeni, før noget gemmes.
Kører udelukkende i denne fane. Denne side kan slet ikke tale med nogen server.
Forsegler…
Forseglet.
Dette er din krypterede fil. Uden nøglen kan ingen læse den. Ikke os, ikke nogen.
Nøglen — vises kun nu
Denne nøgle findes kun på denne side, lige nu. Den gemmes eller sendes ingen steder. Hvis du mister den, kan ingen åbne filen, heller ikke vi. Gem den, før du forlader siden.
Eller del nøglen som et link
Nøglen ligger efter # i linket. Browsere sender aldrig den del til nogen server. Linket åbner denne side med fanen Åbn klar og nøglen udfyldt og fjerner derefter nøglen fra adresselinjen.
Send filen og nøglen hver for sig.
Alle, der har både den forseglede fil og nøglen, kan åbne den. Send dem gennem forskellige kanaler, for eksempel filen på mail og nøglelinket i en sms. Så rummer ingen enkelt indbakke nogensinde begge.
Nøglen er læst fra dit link og fjernet fra adresselinjen, så den holdes ude af din historik.
Tjekker…
Inde i denne forseglede fil
Intet er gemt endnu. Dette er, hvad den forseglede fil siger, den indeholder:
- Navn
- Størrelse
- Type
Pas på — denne filtype kan køre kode på din enhed
Dekrypteret.
Filen blev dekrypteret på din enhed og tilbudt som download. Intet om den har nogensinde forladt denne side.
Fra folkene bag Sealby — den krypterede boks til iPhone
Sealby holder billeder, filer og noter i krypterede bokse på din iPhone. Ingen konto, ingen servere, læsbart for ingen andre end dig.
Hver parameter, oplyst
- Ciffer
- AES-256-GCM (WebCrypto), 128-bit tag pr. blok
- Nøgle
- 256 bit fra browserens CSPRNG, genereret på ny pr. forsegling, brugt én gang, afledt af ingenting
- Opdeling
- et krypteret manifest (filnavn, størrelse, type) og derefter filen i blokke på 1 MiB — hver autentificeret for sig
- Nonce
- 32-bit tilfældigt forseglingssalt ‖ 64-bit bloktæller — gentages aldrig inden for en fil, og nøglen er alligevel til engangsbrug
- Autentificerede data
- hele den 16 byte store header plus hver bloks indeks og det samlede antal blokke — at ombytte, afkorte eller splejse blokke ødelægger dekrypteringen
- Nøglestreng
- base64url, 47 tegn: den 32 byte store nøgle plus en 3 byte SHA-256-kontrolsum, så en tastefejl fejler rent i stedet for at give volapyk
Ærlige svar om, hvad dette gør
Alt sker i din browser.
Både forsegling og åbning læser filen ind i denne sides hukommelse, kører AES-256-GCM dér med din browsers indbyggede WebCrypto-motor og giver resultatet tilbage som en download. Intet uploades. Der er ingen konto og ingen behandling på serversiden. I modsætning til resten af dette websted indlæser denne side ikke engang den cookiefri besøgstæller. Ingen analytics overhovedet.
Det er ikke bare et løfte. Siden serveres med en Content-Security-Policy, der kun lader browseren hente dette websteds egne statiske filer. Den har ingen mulighed for at sende din fil, din nøgle eller noget andet til nogen server, heller ikke vores. Åbn din browsers udviklerværktøjer, mens du forsegler, og du vil se nul forespørgsler. For det mest håndgribelige bevis: installér værktøjskassen, og forsegl i flytilstand. Med netværket slukket kan intet forlade enheden.
Nøglen er alt — og vi har den aldrig.
Hver forsegling genererer en frisk, tilfældig 256-bit nøgle i din browser. Den vises for dig én gang og opbevares ingen steder: ikke i vores systemer (ingen er involveret), ikke i din browsers lager, ikke i den forseglede fil. Der er ingen adgangssætning at gætte og intet at brute-force. Den, der har nøglen og filen, kan åbne den. Den, der ikke har, kan ikke.
Det har en hård konsekvens: mistes nøglen, er filen væk. Der er ingen nulstilling, ingen supportsag, ingen gendannelse. Det er ikke, fordi vi er uvillige til at hjælpe. En kopi, vi kunne gendanne, ville være en kopi, nogen kunne stjæle eller kræve udleveret.
Nøglelinket når aldrig en server.
Delingslinket lægger nøglen efter # i URL’en. Den del, fragmentet, bliver i browseren. Den indgår aldrig i det, browseren sender til nogen server, hverken vores eller andres. Når denne side indlæses med en nøgle i linket, læser den nøglen, skifter til fanen Åbn og fjerner straks nøglen fra adresselinjen. Så den bliver ikke hængende i den synlige URL eller i browserhistorikken.
Alligevel kan alle, der har både linket og den forseglede fil, åbne den. Derfor siger denne side, at du skal sende filen og nøglen gennem forskellige kanaler.
Du ser indholdet, før noget gemmes.
At åbne sker i to trin. Først dekrypterer siden kun et lille manifest: det oprindelige filnavn, størrelse og type. Det viser den til dig, med en tydelig advarsel for filtyper, der kan køre kode (programmer, scripts, installationsprogrammer, makrodokumenter, HTML), og for navne forklædt med en dobbelt filendelse som invoice.pdf.exe. Intet skrives, før du klikker for at dekryptere. Siden åbner eller viser aldrig selv det dekrypterede indhold. Den tilbyder kun filen som download.
Vær klar over, hvad kryptering beviser og ikke beviser. En forseglet fil er fortrolig undervejs. Forseglingen siger intet om, hvem der sendte den, eller om indholdet er sikkert. Behandl en uventet forseglet fil lige så skeptisk som en uventet vedhæftet fil.
Hvor tillidsgrænsen i virkeligheden går.
Du kører kode, dette websted har serveret til dig. Hvis sealby.app eller din forbindelse til det blev kompromitteret, kunne en ondsindet side læse det, du lægger ind i den. Det gælder ethvert webbaseret krypteringsværktøj, og det siger vi hellere end at lade som om. Hvad vi gør ved det: siden er en statisk fil, og vi holder den fri for tredjepartskode. Den installerede værktøjskasse lader dig blive ved med at bruge en version, du allerede har indlæst. Og formatet er dokumenteret herunder, så uafhængige værktøjer kan bygges mod det.
Din egen enhed er også inden for grænsen. Browserudvidelser med sideadgang, eller malware på maskinen, kan læse alt, hvad enhver side kan. Den forseglede fil skjuler sit indhold, men ikke alt. Alle, der har den, kan se dens størrelse (omtrent originalens) og at det er en Sealby-forseglet fil.
Begrænsninger i klar tale
- Mistet nøgle = mistet fil. Ingen undtagelser, sådan er det designet.
- Vi kan ikke se dine filer eller nøgler, så vi kan heller ikke scanne dem for malware. Advarslen om filtype er kun baseret på filnavnet. Den er ikke en sikkerhedsgaranti.
- Alle med både den forseglede fil og nøglen kan åbne den. Værktøjet hverken ved eller tjekker, hvem de er.
- Den forseglede fils størrelse afslører groft den oprindelige fils størrelse.
- Én fil, op til 100 MB, pr. forsegling. Pak flere filer som zip først.
Formatet, byte for byte
Alt, hvad en teknisk læser skal bruge for selv at verificere denne sides output eller åbne en .sealed-fil på tredive linjer Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | version | 0x01 — alt andet afvises som »lavet med en nyere version« |
| 9 | algoritme | 0x01 = AES-256-GCM |
| 10–13 | forseglingssalt | 4 byte, CSPRNG, nyt pr. forsegling |
| 14–15 | reserveret | skal være nul |
| 16–slut | blokrammer | hver: uint32 BE chiffertekstlængde, derefter AES-GCM-chifferteksten + 16 byte tag |
Blok 0 er manifestet: UTF-8-JSON {"name":…,"size":…,"type":…}. Blok 1…N−1 er filen i stykker på 1 MiB. Pr. blok i af N: nonce = salt ‖ uint64 BE i; autentificerede data = header ‖ uint64 BE i ‖ uint64 BE N. Så manipulation, afkortning, ombytning, flytning og splejsning på tværs af filer fejler alle autentificeringen. Hvert tilfælde er bevist af en committet negativ test.
Nøglestreng: base64url (uden udfyldning) af den 32 byte store nøgle efterfulgt af de første 3 byte af dens SHA-256, 47 tegn i alt. En tastefejl fejler kontrolsummen i stedet for at give volapyk.
Fuld byte-eksakt specifikation (FORMAT-WEB-v1) ·Testvektorer med kendte svar (JSON)
Referenceåbner (Python, cryptography-biblioteket)
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"])Dette er til filer undervejs. Boksen er til filer, der bliver liggende.
Forsegling beskytter en fil på vej et sted hen. Sealby beskytter alt det, der bliver: billeder, filer og noter i krypterede bokse på din iPhone. Ingen konto, ingen servere, læsbart for ingen andre end dig.
iPhone & iPad · iOS 17+ · Gratis