Cómo se utiliza
Cifrar un archivo
- Ve a la pestaña Cifrar.
- Elige una contraseña larga y única (o genera una clave hexadecimal aleatoria con el botón «Generar clave»).
- Selecciona el archivo que quieres proteger.
- Pulsa Cifrar. Se descargará un fichero
.crpt.
- Guarda tu contraseña o clave en un lugar seguro. Sin ella no hay recuperación posible.
Descifrar un archivo
- Ve a la pestaña Descifrar.
- Introduce la misma contraseña o clave que usaste al cifrar.
- Selecciona el archivo
.crpt.
- Pulsa Descifrar. Se descargará el archivo original.
Contraseña vs. clave hexadecimal
Tienes dos opciones para proteger tus archivos:
- Contraseña: fácil de recordar. Debe ser larga (mínimo 8 caracteres, recomendado 16 o más) y no usarse en ningún otro sitio. La derivación PBKDF2-SHA256 con 600.000 iteraciones la protege frente a ataques de fuerza bruta.
- Clave hexadecimal: 64 caracteres aleatorios (256 bits). Máxima seguridad, pero debes guardarla físicamente — no podrás memorizarla. Ideal para archivos que no necesitas descifrar con frecuencia o para automatización.
Ambas opciones usan el mismo proceso interno (PBKDF2 → AES-GCM). La diferencia está solo en la entropía del secreto de entrada.
Arquitectura técnica
Cifrado
- Se genera un
salt aleatorio de 128 bits.
- La contraseña o clave se procesa con PBKDF2-SHA256 (600.000 iteraciones) usando el
salt para derivar una clave AES-256.
- Se genera un
IV aleatorio de 96 bits.
- El archivo se cifra con AES-GCM-256.
- Se construye el paquete JSON con
salt, iv, cipherText y metadatos del archivo.
Descifrado
- Se extraen
salt, iv y cipherText del paquete.
- La contraseña se procesa con PBKDF2-SHA256 usando el
salt almacenado para reconstruir la misma clave AES-256.
- AES-GCM descifra y verifica el tag de autenticación. Si la contraseña es incorrecta o el archivo fue modificado, la operación falla.
{
"v": 1,
"file": { "name": "documento.pdf", "type": "application/pdf" },
"salt": "… (16 bytes en base64)",
"iv": "… (12 bytes en base64)",
"cipherText": "… (datos cifrados en base64)"
}
Modelo de amenazas · qué protege y qué no
Protege contra
- Lectura del contenido por quien no conozca la contraseña o clave.
- Modificación del contenido: el tag de autenticación GCM detecta cualquier alteración del archivo cifrado.
- Fuerza bruta sobre la contraseña: PBKDF2 con 600.000 iteraciones ralentiza significativamente los intentos de adivinación.
No protege contra
- Pérdida de la contraseña o clave: sin ella el archivo es irrecuperable. Intencionalmente no hay puerta trasera.
- Compromiso del dispositivo: malware, keyloggers o capturas de pantalla pueden robar la contraseña o el archivo antes de cifrarlo.
- Metadatos: el nombre y tipo del archivo original viajan en claro dentro del paquete.
- Análisis de tráfico: si envías el
.crpt por internet, un observador puede ver el tamaño aproximado del archivo original (el cifrado añade solo ~100 bytes de sobrecarga).
Seguridad
El esquema usa PBKDF2-SHA256 para derivar la clave desde la contraseña y AES-GCM-256 para el cifrado simétrico autenticado. Todo ocurre en tu equipo: la CSP bloquea cualquier conexión saliente (connect-src 'none', default-src 'none') y el código usa exclusivamente la Web Crypto API nativa del navegador, sin librerías de terceros.
Propiedades del cifrado
- Confidencialidad: AES-GCM-256 con IV aleatorio de 96 bits.
- Autenticación e integridad: el tag GCM (128 bits) garantiza que el contenido no fue alterado.
- Resistencia a fuerza bruta: PBKDF2-SHA256 con 600.000 iteraciones y salt aleatorio de 128 bits impide ataques con tablas precalculadas y ralentiza la adivinación.
- Aislamiento de red: la política CSP impide que el código envíe datos a ningún servidor. Puedes desconectar el equipo de internet y la página seguirá funcionando.
Limpieza de memoria
Los buffers de datos descifrados se sobrescriben con ceros tras su uso, aunque JavaScript no permite un control determinista completo sobre la memoria del navegador.
Formato de archivo e interoperabilidad
La extensión .crpt es propia de esta página: no es un estándar y ningún sistema operativo la reconoce de forma nativa. Sirve únicamente como convención visual para identificar los archivos cifrados generados aquí.
El archivo es en realidad un documento JSON con esta estructura:
{
"v": 1,
"file": { "name": "…", "type": "…" },
"salt": "… (16 bytes en base64)",
"iv": "… (12 bytes en base64)",
"cipherText": "… (datos cifrados en base64)"
}
Esto significa que no necesitas esta página para descifrar. Cualquier herramienta que implemente PBKDF2-SHA256 (600.000 iteraciones) + AES-GCM-256 puede recuperar el archivo original si conoces la clave. Por ejemplo, con OpenSSL, Python (PyCryptodome), o Node.js (crypto module). Basta con decodificar el JSON, extraer los campos salt, iv y cipherText, derivar la clave con PBKDF2 y descifrar con AES-GCM.
Usa Claves para generar contraseñas seguras.
Usa Criptercambio cuando necesites intercambiar archivos cifrados con otra persona verificando la identidad de ambos extremos.