Gratis integritetsverktyg

Försegla en fil

Kryptera en fil under en färsk engångsnyckel och skicka den via vilken kanal du vill. Den som har nyckeln öppnar filen direkt här, på den här sidan. Ingenting laddas någonsin upp, det finns ingen lösenfras att knäcka, och du ser vad som finns inuti innan något sparas.

Körs helt i den här fliken. Den här sidan kan inte prata med någon server överhuvudtaget.

Varje parameter, redovisad

Chiffer
AES-256-GCM (WebCrypto), 128-bitars tagg per block
Nyckel
256 bitar från webbläsarens CSPRNG, ny för varje försegling, används en gång, härledd ur ingenting
Uppdelning
ett krypterat manifest (filnamn, storlek, typ), sedan filen i block på 1 MiB — vart och ett autentiserat för sig
Nonce
32-bitars slumpmässigt förseglingssalt ‖ 64-bitars blockräknare — upprepas aldrig inom en fil, och nyckeln används ändå bara en gång
Autentiserade data
hela det 16 byte stora huvudet plus varje blocks index och det totala antalet block — att kasta om, kapa eller skarva in block förstör dekrypteringen
Nyckelsträng
base64url, 47 tecken: den 32 byte stora nyckeln plus en 3 byte lång SHA-256-kontrollsumma, så att ett skrivfel misslyckas rent i stället för att ge skräp

Ärliga svar om vad det här gör

Allting sker i din webbläsare.

Både försegling och öppning läser in filen i den här sidans minne, kör AES-256-GCM där med webbläsarens inbyggda WebCrypto-motor och lämnar tillbaka resultatet som en nedladdning. Ingenting laddas upp. Det finns inget konto och ingen serverbearbetning. Till skillnad från resten av den här webbplatsen laddar den här sidan inte ens den kakfria besöksräknaren. Ingen analysdata av något slag.

Det här är inte bara ett löfte. Sidan levereras med en Content-Security-Policy som bara låter webbläsaren hämta webbplatsens egna statiska filer. Den har inget sätt att skicka din fil, din nyckel eller något annat till någon server, vår egen inräknad. Öppna webbläsarens utvecklarverktyg medan du förseglar, så kommer du att se noll förfrågningar. För det trubbigaste beviset, installera verktygslådan och försegla i flygplansläge. Med nätverket avstängt kan ingenting lämna enheten.

Nyckeln är allt — och vi har den aldrig.

Varje försegling skapar en färsk slumpmässig 256-bitarsnyckel i din webbläsare. Den visas för dig en gång och sparas ingenstans: inte i våra system (inga är inblandade), inte i webbläsarens lagring, inte i den förseglade filen. Det finns ingen lösenfras att gissa och ingenting som går att knäcka med råstyrka. Den som har nyckeln och filen kan öppna den. Den som inte har det, kan inte.

Det har en hård konsekvens: om nyckeln tappas bort är filen borta. Det finns ingen återställning, inget supportärende, ingen räddning. Det handlar inte om att vi är ovilliga att hjälpa. En kopia vi skulle kunna återställa vore en kopia någon skulle kunna stjäla eller kräva ut.

Nyckellänken når aldrig en server.

Delningslänken lägger nyckeln efter # i URL:en. Den delen, fragmentet, stannar i webbläsaren. Den tas aldrig med i det webbläsaren skickar till någon server, vår eller någon annans. När den här sidan laddas med en nyckel i länken läser den nyckeln, byter till fliken Öppna och tar omedelbart bort nyckeln ur adressfältet. Så att den inte ligger kvar i den synliga URL:en eller i webbläsarhistoriken.

Ändå kan vem som helst som har både länken och den förseglade filen öppna den. Därför säger den här sidan åt dig att skicka filen och nyckeln via olika kanaler.

Du ser vad som finns inuti innan något sparas.

Att öppna sker i två steg. Först dekrypterar sidan bara ett litet manifest: originalets filnamn, storlek och typ. Den visar det för dig, med en tydlig varning för filtyper som kan köra kod (program, skript, installationsfiler, makrodokument, HTML) och för namn förklädda med dubbel filändelse som invoice.pdf.exe. Ingenting skrivs förrän du klickar för att dekryptera. Sidan öppnar eller visar aldrig själva det dekrypterade innehållet. Den erbjuder bara filen för nedladdning.

Var tydlig med vad kryptering bevisar och inte bevisar. En förseglad fil är konfidentiell under transporten. Förseglingen säger ingenting om vem som skickat den eller om innehållet är säkert. Behandla en oväntad förseglad fil lika skeptiskt som en oväntad bilaga.

Var förtroendegränsen egentligen går.

Du kör kod som den här webbplatsen levererat till dig. Om sealby.app eller din anslutning till den vore komprometterad skulle en illasinnad sida kunna läsa det du lägger in i den. Det gäller varje webbaserat krypteringsverktyg, och vi säger det hellre än att påstå något annat. Vad vi gör åt det: sidan är en statisk fil, och vi håller den fri från tredjepartskod. Den installerade verktygslådan låter dig fortsätta använda en version du redan laddat. Och formatet är dokumenterat nedan, så att oberoende verktyg kan byggas mot det.

Din egen enhet ligger också innanför gränsen. Webbläsartillägg med sidåtkomst, eller skadlig kod på maskinen, kan läsa allt som vilken sida som helst kan. Den förseglade filen döljer sitt innehåll, men inte allt. Den som har den kan se dess storlek (ungefär originalets) och att det är en Sealby-förseglad fil.

Begränsningar i klartext

  • Förlorad nyckel = förlorad fil. Inga undantag, av design.
  • Vi kan inte se dina filer eller nycklar, så vi kan inte heller söka igenom dem efter skadlig kod. Varningen om filtyp bygger bara på filnamnet. Den är ingen säkerhetsgaranti.
  • Vem som helst med både den förseglade filen och nyckeln kan öppna den. Verktyget vet eller kontrollerar inte vem de är.
  • Den förseglade filens storlek avslöjar ungefär originalfilens storlek.
  • En fil, upp till 100 MB, per försegling. Zippa flera filer först.

Formatet, byte för byte

Allt en teknisk läsare behöver för att verifiera sidans utdata på egen hand, eller öppna en .sealed-fil med trettio rader Python:

bytesfieldcontents
0–7magicASCII "SEALBY-W"
8version0x01 — allt annat avvisas som ”skapad med en nyare version”
9algoritm0x01 = AES-256-GCM
10–13förseglingssalt4 byte, CSPRNG, nytt per försegling
14–15reserveratmåste vara noll
16–slutblockramarvar och en: uint32 BE chiffertextlängd, sedan AES-GCM-chiffertexten + 16 byte tagg

Block 0 är manifestet: UTF-8-JSON {"name":…,"size":…,"type":…}. Block 1…N−1 är filen i bitar om 1 MiB. Per block i av N: nonce = salt ‖ uint64 BE i; autentiserade data = huvud ‖ uint64 BE i ‖ uint64 BE N. Så manipulering, kapning, omkastning, omplacering och skarvning mellan filer misslyckas alla i autentiseringen. Varje fall bevisas av ett incheckat negativt test.

Nyckelsträng: base64url (utan utfyllnad) av den 32 byte stora nyckeln följd av de tre första byten av dess SHA-256, 47 tecken totalt. Ett skrivfel faller på kontrollsumman i stället för att ge skräp.

Referensöppnare (Python, biblioteket 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"])

Det här är för filer på väg. Valvet är för filer som ligger still.

Försegling skyddar en fil på väg någonstans. Sealby skyddar allt som stannar: foton, filer och anteckningar i krypterade valv på din iPhone. Inget konto, inga servrar, läsbart för ingen annan än dig.

Hämta i App Store

iPhone & iPad · iOS 17+ · Gratis