Cómo funciona el cifrado AES-256 en Krokanti Notes
Explicación técnica del modelo de cifrado en el lado del cliente para las notas seguras — derivación de claves PBKDF2 y AES-256-GCM.
Krokanti Notes utiliza cifrado AES-256-GCM estándar de la industria para las notas seguras. Esta página explica la implementación técnica para los usuarios que quieren entender exactamente cómo se protegen sus datos.
Descripción general
Cuando bloqueas una nota con un PIN, lo siguiente ocurre completamente en tu navegador (nunca en nuestros servidores):
- Derivación de clave: tu PIN se procesa mediante PBKDF2 para generar una clave de cifrado de 256 bits
- Cifrado: el contenido de la nota se cifra con AES-256-GCM usando esa clave
- Almacenamiento: solo el texto cifrado se envía y almacena en nuestros servidores
- Descifrado: cuando introduces tu PIN para desbloquear una nota, la clave se vuelve a derivar y se usa para descifrar el contenido localmente
Derivación de clave: PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) convierte tu PIN en una clave criptográfica:
- Algoritmo: PBKDF2-SHA-256
- Iteraciones: 310.000 (cumple las recomendaciones NIST 2023)
- Salt: 16 bytes aleatorios, generados de nuevo en cada operación de cifrado de nota
- Longitud de clave: 256 bits
El elevado número de iteraciones hace que los ataques de fuerza bruta sean costosos — un atacante con el texto cifrado no puede simplemente probar millones de PINs rápidamente.
Cifrado: AES-256-GCM
AES-256-GCM es un modo de cifrado autenticado:
- Algoritmo: AES (Advanced Encryption Standard), clave de 256 bits
- Modo: GCM (Galois/Counter Mode)
- IV: 12 bytes aleatorios, generados de nuevo en cada operación de cifrado
- Etiqueta de autenticación: 128 bits (GCM proporciona verificación de integridad — la manipulación se detecta)
El modo GCM proporciona tanto confidencialidad (el contenido está oculto) como autenticidad (se detecta cualquier manipulación). Si el texto cifrado se modifica después del cifrado, el descifrado fallará con un error de autenticación en lugar de devolver silenciosamente datos corruptos.
Formato del payload cifrado
La nota cifrada se almacena como un objeto JSON:
{
"v": 1,
"alg": "AES-256-GCM",
"salt": "<base64-encoded 16 bytes>",
"iv": "<base64-encoded 12 bytes>",
"ciphertext": "<base64-encoded encrypted content>"
}
Este payload se almacena literalmente en la columna content de la base de datos de notas. El salt y el iv se almacenan junto al texto cifrado (no son secretos — son valores aleatorios necesarios para el descifrado, pero no son suficientes por sí solos sin la clave).
Qué puede ver Krokanti Software
| Dato | ¿Visible para Krokanti? |
|---|---|
| Título de la nota | ✅ Sí |
| Contenido de la nota (cuerpo) | ❌ No — almacenado como texto cifrado |
| Tu PIN | ❌ Nunca — la clave derivada nunca sale de tu navegador |
| Clave de cifrado | ❌ Nunca — generada y descartada en el navegador |
| Etiquetas, metadatos | ✅ Sí |
Implementación
El cifrado se implementa usando la Web Crypto API — una interfaz de criptografía estandarizada y nativa del navegador. No se usan bibliotecas de cifrado de terceros en el proceso de cifrado de notas.
El código fuente relevante está en src/lib/crypto.ts (de código abierto como parte del proyecto).
No existe ninguna clave maestra, clave de recuperación ni puerta trasera. Si olvidas tu PIN, el contenido no puede recuperarse. Esto es así por diseño — el cifrado verdadero en el lado del cliente requiere que solo tú tengas la clave.
Modelo de amenazas
Este cifrado te protege de:
- ✅ Filtraciones de datos de los servidores de Krokanti
- ✅ Empleados malintencionados (no podemos leer tus notas seguras)
- ✅ Órdenes legales sobre datos de usuarios (solo podemos proporcionar el blob cifrado)
- ❌ Keyloggers en tu propio dispositivo (no podemos protegerte contra el malware en el cliente)
- ❌ Un atacante que te observe escribir tu PIN
- ❌ Fuerza bruta si tu PIN es demasiado corto (usa un PIN largo o una frase de contraseña)
Start taking better notes today
Free forever. No credit card required. Works on any device.
Create your free account →Related articles
Was this article helpful?
Can't find what you're looking for? Contact support