Herramienta de privacidad gratuita

Cifra un archivo en tu navegador

Elige un archivo, escoge una frase de acceso y descarga una copia cifrada. AES-256-GCM, con la clave derivada en tu navegador. No se sube nada y funciona sin conexión una vez cargado. El formato está documentado byte a byte más abajo, para que no tengas que creernos en nada.

Se ejecuta enteramente en esta pestaña. No se sube nada y funciona sin conexión una vez cargado.

Cualquier archivo. Los archivos grandes necesitan memoria. Consulta los límites honestos más abajo.

No hay recuperación. Una frase de acceso olvidada significa un archivo que nadie —nosotros incluidos— podrá abrir jamás.

Todos los parámetros, declarados

Cifrador
AES-256-GCM (WebCrypto), etiqueta de 128 bits
Derivación de claves
PBKDF2-HMAC-SHA-256, 600.000 iteraciones
Sal del KDF
16 bytes, CSPRNG, nueva en cada archivo
Nonce GCM
12 bytes, CSPRNG, nuevo en cada archivo
Datos autenticados
toda la cabecera de 42 bytes, así que manipular cualquier parámetro declarado rompe el descifrado
Codificación de la frase de acceso
UTF-8, normalizada en NFC (para que la misma frase escrita en cualquier dispositivo derive la misma clave)

Límites honestos

Este no es el formato de caja fuerte de la app Sealby. La app deriva las claves con Argon2id calibrado por dispositivo, las envuelve en el Secure Enclave y guarda el contenido en contenedores negables troceados. Nada de eso puede hacerlo una página web. Esta página es una utilidad independiente construida sobre lo que los navegadores ofrecen de forma nativa.

PBKDF2 no exige mucha memoria. Es la única función de derivación de claves que los navegadores incluyen de forma nativa, y 600.000 iteraciones hacen lenta cada conjetura, pero un equipo de GPU sigue atacándolo mucho más rápido que a Argon2id. Por eso la protección vive en tu frase de acceso: cuatro palabras aleatorias o más, no una contraseña.

WebCrypto cifra de una sola pasada. No hay flujo continuo, así que el archivo entero está en memoria dos o tres veces mientras se procesa. Cientos de megabytes van bien en la mayoría de dispositivos. Para archivos de varios gigabytes, usa una herramienta de escritorio. La salida cifrada también revela el tamaño aproximado del archivo. El nombre va cifrado dentro, pero el tamaño no queda oculto.

El formato, byte a byte

Todo lo que un lector técnico necesita para verificar por su cuenta la salida de esta página, o descifrarla en veinte líneas de Python:

bytesfieldcontents
0–7magicASCII "SBXF0001"
8versión0x01
9algoritmo0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13iteracionesuint32, big-endian (600.000)
14–29sal16 bytes
30–41nonce12 bytes
42–fintexto cifradoAES-256-GCM de la carga útil, AAD = bytes 0–41; los últimos 16 bytes son la etiqueta GCM

Carga útil antes del cifrado: [longitud del nombre en 2 bytes, big-endian][nombre del archivo, UTF-8][bytes del archivo]. El nombre original viaja cifrado; al descifrar se restaura.

Descifrador de referencia (Python, biblioteca cryptography)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0]          # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42])     # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)

Esto es la demo. La caja fuerte es el producto.

Un archivo, una frase de acceso, una página. Eso es lo que puede hacer un navegador. Sealby lo hace en condiciones: Argon2id calibrado para tu dispositivo, claves en el Secure Enclave y cajas fuertes ocultas sin ninguna lista ni recuento guardado.

Descargar en el App Store

iPhone y iPad · iOS 17+ · Gratis