Skip to content
Breachfolio
Ilustración de portada de: Criptografía que sí puedes usar.
NIVEL 2 CIBERSEGURIDAD

Criptografía que sí puedes usar.

Hashing frente a cifrado, simétrico frente a asimétrico y los tres primitivos a los que deberías recurrir antes de inventarte nada por tu cuenta.

9 min de lectura Breachfolio Research

La mayoría de los ingenieros en activo nunca necesitan implementar un cifrador. Necesitan saber cuál usar, qué aspecto tienen las entradas y las salidas, y dónde están las trampas. De eso trata exactamente este artículo.

El hashing no es cifrado

Un hash es una función de un solo sentido: entra una entrada arbitraria y sale una salida pseudoaleatoria de tamaño fijo. No puedes recuperar la entrada. Casos de uso: comprobaciones de integridad, huellas digitales y almacenamiento de contraseñas (con un hash lento).

$ echo -n "hello" | sha256sum
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824  -

El cifrado es reversible: tienes una clave, puedes descifrar. Casos de uso: transmitir y almacenar datos de forma confidencial.

Regla general

Si en algún momento puedes necesitar recuperar los datos, quieres cifrado. Si solo necesitas confirmar que dos valores son iguales (contraseñas, integridad de ficheros), quieres hashing.

Los dos tipos de cifrado

Simétrico: una clave, la misma para cifrar y descifrar. Rápido (gigabytes por segundo en CPU modernas). Difícil de hacer llegar la clave a la otra persona de forma segura.

Asimétrico: un par de claves. La pública para cifrar o verificar, la privada para descifrar o firmar. Lento (kilobytes por segundo). Fácil de compartir la mitad pública.

En la práctica casi todo usa ambos, como hace TLS: asimétrico para un handshake que establece una clave de sesión simétrica, y luego simétrico para el grueso del tráfico.

Los tres primitivos que deberías conocer por su nombre

PrimitivoTipoÚsalo para
AES-256-GCMAEAD simétricoCifrar ficheros, sesiones, cualquier cosa a granel
X25519 + Ed25519Asimétrico (ECC)Intercambio de claves y firmas
Argon2idHash de contraseñasAlmacenar contraseñas de usuario

Ese es el mínimo. Recurre a estos por su nombre en una revisión de código y acertarás el 95 % de las veces. El 5 % restante —interoperabilidad con sistemas antiguos, entornos regulados, limitaciones de hardware— necesita a un experto de todos modos.

AEAD: la palabra que te protege de ti mismo

Los cifradores más antiguos, como AES-CBC, cifran tus datos pero no detectan manipulaciones. AEAD (Authenticated Encryption with Associated Data, cifrado autenticado con datos asociados) hace ambas cosas a la vez. AES-GCM y ChaCha20-Poly1305 son AEAD. Producen un texto cifrado y una etiqueta; el descifrado falla de forma evidente si la etiqueta no cuadra.

En 2026 no deberías ver nunca AES-CBC, AES-CTR ni 3DES a secas en código nuevo. Si lo ves, sustitúyelo.

Almacenar contraseñas, bien hecho

Tres reglas:

  1. Haz hash, nunca cifres.
  2. Usa un hash lento diseñado para la tarea —Argon2id, scrypt o bcrypt—, no SHA-256.
  3. Ajusta los parámetros para que un solo inicio de sesión tarde entre 100 y 500 ms en tu hardware.
# configuración de referencia de libargon2, 2026
argon2id  memory=64MB  iterations=3  parallelism=4

¿Por qué memoria? Porque los atacantes crackean contraseñas en GPU, que tienen muchos núcleos pero poca memoria por núcleo. Una función que exige mucha memoria iguala el terreno de juego.

Cosas que te harán tropezar

  • Reutilizar un nonce con AES-GCM destruye la confidencialidad. Genera un nonce aleatorio de 96 bits nuevo en cada cifrado, o usa un contador.
  • Comparar secretos con == filtra información por tiempos. Usa una comparación de tiempo constante (hmac.compare_digest en Python, crypto.timingSafeEqual en Node).
  • Guardar una clave en la base de datos junto al texto cifrado echa por tierra todo el ejercicio. Las claves viven en un KMS, un HSM o una variable de entorno inyectada en tiempo de ejecución: en cualquier sitio donde no estén los datos.
  • Inventarte tu propio protocolo combinando primitivos. Usa una biblioteca de alto nivel —libsodium, age, Tink— que ya los haya combinado por ti.

Esos cuatro errores explican la gran mayoría de las brechas relacionadas con criptografía de las que leerás. Hazlos bien y estarás por delante de la mayor parte del sector.