Eina de privadesa gratuïta
Segella un fitxer
Xifra un fitxer amb una clau d’un sol ús acabada de generar i envia’l pel canal que vulguis. Qui tingui la clau l’obre aquí mateix, en aquesta pàgina. No es puja res mai, no hi ha cap frase de pas per trencar i veus el que hi ha dins abans de desar res.
Funciona íntegrament en aquesta pestanya. Aquesta pàgina no pot parlar amb cap servidor.
S’està segellant…
Segellat.
Aquest és el teu fitxer xifrat. Sense la clau, ningú no el pot llegir. Ni nosaltres, ni ningú.
La clau — es mostra només ara
Aquesta clau només existeix en aquesta pàgina, ara mateix. No es desa ni s’envia enlloc. Si la perds, ningú no podrà obrir el fitxer, nosaltres inclosos. Desa-la abans de marxar.
O comparteix la clau com a enllaç
La clau va després del # de l’enllaç. Els navegadors no envien mai aquesta part a cap servidor. L’enllaç obre aquesta pàgina amb la pestanya Obre a punt i la clau ja posada, i després treu la clau de la barra d’adreces.
Envia el fitxer i la clau per separat.
Qualsevol que tingui alhora el fitxer segellat i la clau el pot obrir. Envia’ls per canals diferents, per exemple el fitxer per correu i l’enllaç de la clau per missatge. Així cap safata d’entrada no tindrà mai totes dues coses.
Clau llegida del teu enllaç i treta de la barra d’adreces, perquè no quedi a l’historial.
S’està comprovant…
Dins d’aquest fitxer segellat
Encara no s’ha desat res. Això és el que el fitxer segellat diu que conté:
- Nom
- Mida
- Tipus
Compte — aquest tipus de fitxer pot executar codi al teu dispositiu
Desxifrat.
El fitxer s’ha desxifrat al teu dispositiu i se t’ha ofert com a descàrrega. No n’ha sortit res mai d’aquesta pàgina.
Dels creadors de Sealby — la caixa forta xifrada per a l’iPhone
Sealby guarda fotos, fitxers i notes en caixes fortes xifrades al teu iPhone. Sense compte, sense servidors i llegibles per ningú més que tu.
Tots els paràmetres, declarats
- Xifratge
- AES-256-GCM (WebCrypto), etiqueta de 128 bits per bloc
- Clau
- 256 bits del CSPRNG del navegador, generats de nou per a cada segellat, usats un sol cop i derivats de res
- Partició en blocs
- un manifest xifrat (nom, mida, tipus) i després el fitxer en blocs d’1 MiB — cadascun autenticat per separat
- Nonce
- salt de segellat aleatori de 32 bits ‖ comptador de bloc de 64 bits — no es repeteix mai dins d’un fitxer, i, de tota manera, la clau és d’un sol ús
- Dades autenticades
- la capçalera sencera de 16 bytes més l’índex de cada bloc i el nombre total de blocs — reordenar, truncar o empeltar blocs trenca el desxifratge
- Cadena de la clau
- base64url, 47 caràcters: la clau de 32 bytes més una suma de verificació SHA-256 de 3 bytes, perquè una errada falli netament en lloc de produir escombraries
Respostes honestes sobre què fa això
Tot passa al teu navegador.
Tant el segellat com l’obertura llegeixen el fitxer a la memòria d’aquesta pàgina, hi executen AES-256-GCM amb el motor WebCrypto integrat del teu navegador i et tornen el resultat com una descàrrega. No es puja res. No hi ha compte ni processament al servidor. A diferència de la resta d’aquest web, aquesta pàgina ni tan sols carrega el comptador de visites sense galetes. Cap mena d’analítica.
Això no és només una promesa. La pàgina se serveix amb una Content-Security-Policy que només permet al navegador descarregar els fitxers estàtics d’aquest mateix web. No té cap manera d’enviar el teu fitxer, la teva clau ni res més a cap servidor, inclosos els nostres. Obre les eines de desenvolupament del navegador mentre segelles i veuràs que hi ha zero peticions. Per a la prova més contundent, instal·la la caixa d’eines i segella en mode avió. Amb la xarxa apagada, no en pot sortir res.
La clau ho és tot — i nosaltres no la tenim mai.
Cada segellat genera una clau aleatòria nova de 256 bits al teu navegador. Se’t mostra un sol cop i no es guarda enlloc: ni als nostres sistemes (no n’hi intervé cap), ni a l’emmagatzematge del teu navegador, ni al fitxer segellat. No hi ha cap frase de pas per endevinar ni res atacable per força bruta. Qui tingui la clau i el fitxer el pot obrir. Qui no, no.
Això té una conseqüència dura: si la clau es perd, el fitxer s’ha acabat. No hi ha restabliment, ni tiquet de suport, ni recuperació. No és que no vulguem ajudar. Una còpia que poguéssim recuperar seria una còpia que algú podria robar o exigir.
L’enllaç amb la clau no arriba mai a cap servidor.
L’enllaç per compartir posa la clau després del # de l’URL. Aquesta part, el fragment, se la queda el navegador. No s’inclou mai en el que el navegador envia a cap servidor, ni al nostre ni al de ningú. Quan aquesta pàgina es carrega amb una clau a l’enllaç, la llegeix, canvia a la pestanya Obre i tot seguit treu la clau de la barra d’adreces. Així no queda a l’URL visible ni a l’historial del navegador.
Tot i així, qualsevol que tingui alhora l’enllaç i el fitxer segellat el pot obrir. Per això aquesta pàgina et diu que enviïs el fitxer i la clau per canals diferents.
Veus què hi ha dins abans que es desi res.
Obrir es fa en dos passos. Primer la pàgina desxifra només un manifest petit: el nom del fitxer original, la mida i el tipus. T’ho mostra, amb un avís ben visible per als tipus de fitxer que poden executar codi (programes, scripts, instal·ladors, documents amb macros, HTML) i per als noms disfressats amb doble extensió, com ara invoice.pdf.exe. No s’escriu res fins que fas clic per desxifrar. La pàgina no obre ni mostra mai el contingut desxifrat. Només ofereix el fitxer per descarregar.
Tingues clar què demostra el xifratge i què no. Un fitxer segellat és confidencial durant el trajecte. Segellar-lo no diu res sobre qui l’ha enviat ni sobre si el seu contingut és segur. Tracta un fitxer segellat inesperat amb el mateix escepticisme que un fitxer adjunt inesperat.
On és realment la frontera de la confiança.
Estàs executant codi que t’ha servit aquest web. Si sealby.app o la teva connexió amb ell estiguessin compromesos, una pàgina maliciosa podria llegir el que hi posis. Això és cert per a qualsevol eina de xifratge basada en web, i preferim dir-ho que fer veure el contrari. Què hi fem: la pàgina és un fitxer estàtic i la mantenim lliure de codi de tercers. La caixa d’eines instal·lada et permet continuar fent servir una versió que ja tenies carregada. I el format està documentat més avall, així s’hi poden construir eines independents.
El teu propi dispositiu també és dins de la frontera. Les extensions del navegador amb accés a la pàgina, o el programari maliciós de la màquina, poden llegir tot el que pot llegir qualsevol pàgina. El fitxer segellat amaga el seu contingut, però no tot. Qualsevol que el tingui en pot veure la mida (aproximadament la de l’original) i que és un fitxer segellat de Sealby.
Límits en llenguatge planer
- Clau perduda = fitxer perdut. Sense excepcions, per disseny.
- No podem veure els teus fitxers ni les teves claus, així que tampoc els podem analitzar per detectar programari maliciós. L’avís sobre el tipus de fitxer es basa només en el nom. No és cap garantia de seguretat.
- Qualsevol que tingui alhora el fitxer segellat i la clau el pot obrir. L’eina no sap ni comprova qui és.
- La mida del fitxer segellat revela aproximadament la mida del fitxer original.
- Un fitxer, fins a 100 MB, per segellat. Si en són diversos, comprimeix-los primer.
El format, byte a byte
Tot el que un lector tècnic necessita per verificar la sortida d’aquesta pàgina pel seu compte, o per obrir un fitxer .sealed en trenta línies de Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | versió | 0x01 — qualsevol altre valor es rebutja com a «fet amb una versió més nova» |
| 9 | algorisme | 0x01 = AES-256-GCM |
| 10–13 | salt de segellat | 4 bytes, CSPRNG, nou per a cada segellat |
| 14–15 | reservat | ha de ser zero |
| 16–final | trames de blocs | cadascuna: longitud del text xifrat uint32 BE i després el text xifrat AES-GCM + etiqueta de 16 bytes |
El bloc 0 és el manifest: JSON en UTF-8 {"name":…,"size":…,"type":…}. Els blocs 1…N−1 són el fitxer en trossos d’1 MiB. Per a cada bloc i de N: nonce = salt ‖ uint64 BE i; dades autenticades = capçalera ‖ uint64 BE i ‖ uint64 BE N. Així, la manipulació, el truncament, el reordenament, la relocalització i l’empelt entre fitxers fallen tots l’autenticació. Cada cas està demostrat per una prova negativa incorporada al repositori.
Cadena de la clau: base64url (sense encoixinat) de la clau de 32 bytes seguida dels 3 primers bytes del seu SHA-256, 47 caràcters en total. Una errada falla la suma de verificació en lloc de produir escombraries.
Especificació completa byte a byte (FORMAT-WEB-v1) ·Vectors de prova de resposta coneguda (JSON)
Obridor de referència (Python, biblioteca 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"])Això és per als fitxers en trànsit. La caixa forta és per als fitxers en repòs.
Segellar protegeix un fitxer mentre va cap a algun lloc. Sealby protegeix tot el que es queda: fotos, fitxers i notes en caixes fortes xifrades al teu iPhone. Sense compte, sense servidors i llegibles per ningú més que tu.
iPhone i iPad · iOS 17+ · Gratuït