Saltearse al contenido

Fundamentos de criptografía

La criptografía está por debajo de casi toda la seguridad: contraseñas (hashing), comunicaciones (TLS), tokens (JWT), certificados (PKI). No necesitas ser matemático, pero sí entender qué garantiza cada primitiva, cuándo se usa mal, y cómo se atacan las implementaciones débiles. En pentest, la cripto rota rara vez es el algoritmo —casi siempre es cómo se usa.

  • Hashing (un solo sentido): convierte datos en una huella fija e irreversible. MD5, SHA-1 (rotos), SHA-256, y para contraseñas bcrypt/scrypt/argon2 (lentos a propósito).
  • Cifrado simétrico (una clave): cifra y descifra con la misma clave. AES es el estándar. Rápido; el reto es compartir la clave.
  • Cifrado asimétrico (par de claves): clave pública cifra, privada descifra (y firma). RSA, ECC. Base de TLS y PKI.

Las contraseñas nunca se guardan en claro: se guarda su hash. El atacante que roba hashes intenta crackearlos:

# identificar el hash
hashid '$2b$...' # bcrypt
# crackear
hashcat -m 0 hashes.txt rockyou.txt # MD5
hashcat -m 1000 hashes.txt rockyou.txt # NTLM (Windows)
hashcat -m 3200 hashes.txt rockyou.txt # bcrypt
john --wordlist=rockyou.txt hashes.txt

Conceptos clave: salt (impide rainbow tables y hashes idénticos para iguales contraseñas), pepper, y por qué MD5/SHA-1 sin salt son indefendibles para contraseñas.

Dónde falla en la práctica (no el algoritmo)

Sección titulada «Dónde falla en la práctica (no el algoritmo)»
  • Hashes débiles o sin salt para contraseñas → crackeo rápido.
  • ECB mode en cifrado por bloques → patrones visibles (el “pingüino ECB”).
  • Claves/IV reutilizados, nonces repetidos.
  • Secretos hardcodeados en código o repos (ver Git para hacking/OSINT en repositorios de código).
  • JWT: alg: none, clave HMAC débil, confusión de algoritmo (ver Ataques a JWT).
  • Padding oracle, relleno de longitud (length extension) en MAC mal construidos.
  • Aleatoriedad predecible (PRNG no criptográfico para tokens/sesiones).

TLS cifra las comunicaciones y autentica al servidor con un certificado firmado por una CA. En pentest importa: versiones/cifrados débiles (SSLv3, RC4), certificados caducados/autofirmados, y la PKI corporativa (AD CS) como vía de escalada (ver AD CS (Active Directory Certificate Services)).

# auditar TLS de un servicio
sslscan target:443 ; testssl.sh target
openssl s_client -connect target:443

Base64, hex, URL-encoding NO cifran: solo representan datos. Un “token” en Base64 se decodifica trivialmente. Reconócelos y decodifícalos:

echo "dGVzdA==" | base64 -d # base64
echo -n "test" | xxd # hex

Crackear hashes volcados (SAM, NTDS, /etc/shadow) es post-explotación pura. Reconocer cripto mal usada (JWT inseguro, ECB, secretos hardcodeados, TLS débil) es hallazgo de auditoría. Y entender hashing/salt te deja explicar al cliente por qué su almacenamiento de contraseñas es (o no) defendible. Es transversal a casi todas las áreas.

No confundas los servicios: es el origen de la mayoría de fallos de uso.

Confidencialidad que nadie lea el dato -> cifrado (AES, RSA/ECC)
Integridad que no se altere -> hash, MAC
Autenticidad que venga de quien dice -> MAC (HMAC), firma digital
No repudio que no pueda negarlo -> firma digital (asimétrica)

Cifrar no da integridad (por eso existe AEAD: AES-GCM); un hash no da autenticidad (por eso existe HMAC, no hash(clave+mensaje)). Elegir la primitiva por el servicio que de verdad necesitas evita el 90% de los errores.

Mapa del área Criptografía (dónde profundiza cada tema)

Sección titulada «Mapa del área Criptografía (dónde profundiza cada tema)»
crypto-basics conceptos y catálogo de fallos de implementación
crypto-sym simétrica vs asimétrica y modos (ECB/CBC/CTR/GCM)
crypto-hash hashing, cracking, length extension, colisiones
crypto-pki asimétrica, certificados, cadena de confianza, JWT
crypto-tls TLS/handshake, PFS, ataques históricos (Heartbleed, POODLE...)
crypto-padding padding oracle (descifrar sin la clave)
crypto-rng aleatoriedad débil (tokens/claves predecibles)
crypto-stego esteganografía (ocultar en vez de cifrar)

Esta ficha es la panorámica transversal; cada bloque tiene su ficha con la explotación “a mano” y la defensa.

  • Diferencio hashing, cifrado simétrico y asimétrico
  • Explico salt, pepper y por qué MD5/SHA-1 no valen para contraseñas
  • Identifico y crackeo hashes con hashcat/john (modos comunes)
  • Reconozco fallos de uso: ECB, IV/nonce reusado, JWT inseguro
  • Distingo codificación (base64/hex) de cifrado y las decodifico
  • Audito TLS básico (sslscan/testssl) y reconozco cripto débil
  • Entiendo el papel de certificados/PKI y su relación con AD CS