Esta guía completa explora conceptos avanzados de cifrado, algoritmos y protocolos utilizados en los sistemas modernos de comunicación segura. Ideal para desarrolladores y profesionales de la seguridad.
Algoritmos de Cifrado Simétrico
AES (Advanced Encryption Standard)
El estándar de oro para cifrado simétrico, adoptado por el gobierno de EE.UU. en 2001.
Características Clave
- Tamaños de clave: 128, 192 o 256 bits
- Tamaño de bloque: 128 bits
- Rondas: 10, 12 o 14 dependiendo del tamaño de clave
- Rendimiento: Altamente optimizado, aceleración por hardware disponible
Modos Comunes
- GCM (Galois/Counter Mode): Cifrado autenticado, recomendado para la mayoría de casos de uso
- CBC (Cipher Block Chaining): Modo tradicional, requiere MAC separado
- CTR (Counter): Paralelizable, usado en algunos protocolos
ChaCha20
Cifrador de flujo moderno diseñado por Daniel J. Bernstein, cada vez más popular como alternativa a AES.
Ventajas
- Más rápido que AES en dispositivos sin aceleración por hardware
- Implementación de tiempo constante (resistente a ataques de temporización)
- Diseño simple, más fácil de implementar de forma segura
- Usado con Poly1305 para cifrado autenticado
Cifrado Asimétrico
RSA (Rivest-Shamir-Adleman)
Ampliamente utilizado para intercambio de claves y firmas digitales.
Consideraciones Clave
- Tamaño mínimo de clave: 2048 bits (4096 bits recomendado para seguridad a largo plazo)
- Rendimiento: Computacionalmente costoso comparado con el cifrado simétrico
- Esquemas de relleno: Usa OAEP para cifrado, PSS para firmas
- Amenaza cuántica: Vulnerable a computadoras cuánticas (algoritmo de Shor)
Criptografía de Curva Elíptica (ECC)
Alternativa más eficiente a RSA con seguridad equivalente en tamaños de clave más pequeños.
Curvas Populares
- Curve25519: Diseñada para intercambio de claves ECDH, ampliamente adoptada
- Ed25519: Para firmas digitales, usada en SSH, GPG
- P-256 (secp256r1): Estándar NIST, ampliamente soportada
- P-384, P-521: Niveles de seguridad más altos
Ventajas Sobre RSA
- ECC de 256 bits ≈ seguridad RSA de 3072 bits
- Computación más rápida
- Claves y firmas más pequeñas
- Menores requisitos de ancho de banda y almacenamiento
Protocolos de Intercambio de Claves
Diffie-Hellman (DH)
Permite a dos partes establecer un secreto compartido sobre un canal inseguro.
Variantes
- DH clásico: Implementación original
- ECDH: Versión de Curva Elíptica (más eficiente)
- X25519: ECDH moderno usando Curve25519
Perfect Forward Secrecy (PFS)
Asegura que las comunicaciones pasadas permanezcan seguras incluso si las claves a largo plazo se ven comprometidas.
Implementación
- Genera pares de claves efímeras para cada sesión
- Destruye las claves de sesión después de usarlas
- Usado en TLS 1.3, Signal Protocol, etc.
Funciones Hash
Familia SHA-2
- SHA-256: Salida de 256 bits, ampliamente usado
- SHA-384, SHA-512: Niveles de seguridad más altos
- Aplicaciones: Firmas digitales, validación de certificados, hash de contraseñas (con técnicas apropiadas)
SHA-3 (Keccak)
- Construcción diferente a SHA-2 (función esponja)
- Resistente a ataques de extensión de longitud
- Adecuado para aplicaciones que requieren altos márgenes de seguridad
BLAKE2/BLAKE3
- Más rápido que SHA-2 y SHA-3
- Criptográficamente seguro
- BLAKE3: Altamente paralelizable, excelente para grandes volúmenes de datos
Funciones de Derivación de Claves (KDFs)
PBKDF2 (Password-Based Key Derivation Function 2)
- Propósito: Derivar claves criptográficas a partir de contraseñas
- Iteraciones: Mínimo 100.000 (recomendación OWASP)
- Caso de uso: Almacenamiento de contraseñas, derivación de claves
Argon2
Ganador del Password Hashing Competition (2015), recomendado para aplicaciones nuevas.
Variantes
- Argon2id: Híbrido (recomendado para la mayoría de casos de uso)
- Argon2i: Optimizado contra ataques de canal lateral
- Argon2d: Máxima resistencia a ataques GPU
scrypt
- Función de memoria intensiva (resistente a ataques de hardware)
- Usado por Litecoin, Tarsnap
- Buen equilibrio entre seguridad y compatibilidad
Códigos de Autenticación de Mensajes (MACs)
HMAC (Hash-based MAC)
- Combina función hash con clave secreta
- Proporciona autenticación e integridad
- Común: HMAC-SHA256, HMAC-SHA512
Poly1305
- Autenticador de un solo uso
- Usado con ChaCha20 para cifrado autenticado
- Rápido y de tiempo constante
Cifrado Autenticado
Por Qué Es Importante
El cifrado solo no garantiza la integridad. Un atacante podría modificar el texto cifrado sin ser detectado. El cifrado autenticado resuelve esto.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM: Más ampliamente soportado
- ChaCha20-Poly1305: Mejor en dispositivos móviles
- AES-CCM: Usado en algunos protocolos inalámbricos
Firmas Digitales
Firmas RSA
- Relleno: Usa PSS (Probabilistic Signature Scheme)
- Función hash: SHA-256 o superior
- Tamaño de clave: 2048 bits mínimo
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Firmas más pequeñas que RSA
- Requiere generación cuidadosa de nonce (RNG débil = clave comprometida)
- Variante determinística (RFC 6979) recomendada
Ed25519
- Determinístico (no requiere RNG)
- Generación y verificación de firmas rápida
- Firmas pequeñas (64 bytes)
- Resistente a ataques de canal lateral
Protocolos Modernos
Signal Protocol
Protocolo de cifrado de extremo a extremo de última generación usado por Signal, WhatsApp, Facebook Messenger.
Características Clave
- Double Ratchet: Actualiza continuamente las claves
- Perfect Forward Secrecy: Los mensajes pasados permanecen seguros
- Post-Compromise Security: Se recupera del compromiso de claves
- Asíncrono: Funciona incluso cuando el destinatario está desconectado
TLS 1.3
Última versión del protocolo Transport Layer Security.
Mejoras
- Eliminó algoritmos débiles y suites de cifrado
- Siempre proporciona forward secrecy
- Handshake más rápido (1-RTT, opción 0-RTT)
- Server Hello cifrado
Noise Protocol Framework
Framework de protocolo criptográfico moderno para construir sistemas de comunicación seguros.
Aplicaciones
- WireGuard VPN
- Lightning Network
- Mensajería I2P
Criptografía Post-Cuántica
La Amenaza
Las computadoras cuánticas pueden romper RSA y ECC usando el algoritmo de Shor. Los algoritmos simétricos se ven menos afectados pero requieren claves más grandes.
Candidatos Post-Cuánticos de NIST
- Kyber: Encapsulación de claves basada en retículas
- Dilithium: Firmas digitales basadas en retículas
- SPHINCS+: Firmas basadas en hash
Estrategia de Transición
- Enfoque híbrido: Combinar algoritmos clásicos y post-cuánticos
- Aumentar tamaños de clave simétrica a 256 bits
- Monitorear el proceso de estandarización de NIST
- Planificar para agilidad de algoritmos
Mejores Prácticas de Implementación
No Inventes Tu Propia Criptografía
Usa bibliotecas establecidas y revisadas por pares:
- libsodium: Alto nivel, fácil de usar
- OpenSSL: Completa, ampliamente soportada
- BoringSSL: Fork de OpenSSL de Google
- Ring: Biblioteca de criptografía Rust
Gestión de Claves
- Usa módulos de seguridad de hardware (HSMs) para claves críticas
- Implementa políticas de rotación de claves
- Nunca codifiques claves directamente en el código fuente
- Usa derivación de claves para múltiples propósitos
- Elimina de forma segura las claves de la memoria después de usarlas
Generación Segura de Números Aleatorios
- Usa RNG criptográficamente seguro (CSPRNG)
- Nunca uses funciones rand() estándar
- RNGs del sistema operativo: /dev/urandom (Linux), CryptGenRandom (Windows)
- Específicos del lenguaje: crypto.randomBytes (Node.js), módulo secrets (Python)
Prevención de Ataques de Temporización
- Usa comparación de tiempo constante para secretos
- Evita ramificaciones basadas en datos secretos
- Ten en cuenta los ataques de temporización de caché
- Usa bibliotecas diseñadas con resistencia a ataques de temporización
Pruebas y Validación
Auditorías de Seguridad
- Pruebas de penetración regulares
- Revisiones de código por expertos en seguridad
- Auditorías de seguridad de terceros
- Programas de recompensas por errores
Cumplimiento
- FIPS 140-2/3: Estándar del gobierno de EE.UU.
- Common Criteria: Certificación de seguridad internacional
- PCI DSS: Requisitos de la industria de tarjetas de pago
Recursos para Seguir Aprendiendo
Libros
- "Cryptography Engineering" de Ferguson, Schneier y Kohno
- "Serious Cryptography" de Jean-Philippe Aumasson
- "Applied Cryptography" de Bruce Schneier
Recursos en Línea
- Cryptopals Crypto Challenges
- Cursos de Criptografía de Stanford (Coursera)
- IACR ePrint Archive
- Crypto Stack Exchange