Criptografía Avanzada
En el Tema 2: Criptografía aplicada a la seguridad lógica, ya introdujimos los conceptos fundamentales de cifrado simétrico, asimétrico y hashing. En este apartado, profundizaremos en su aplicación práctica en entornos de auditoría y seguridad avanzada, centrándonos en la infraestructura que sustenta la confianza en internet y en técnicas modernas.
Técnicas de Cifrado de la Información
Algoritmos de Cifrado Simétrico: Profundización
Aunque ya conocemos AES, es importante entender cómo se implementa correctamente para evitar vulnerabilidades.
- Modos de Operación: No basta con usar AES; hay que elegir el modo correcto.
- ECB (Electronic Codebook): Inseguro. Bloques idénticos de texto plano producen bloques idénticos de texto cifrado (se ven patrones). Nunca usar.
- CBC (Cipher Block Chaining): Seguro, pero requiere un Vector de Inicialización (IV) aleatorio y único.
- GCM (Galois/Counter Mode): El estándar moderno. Proporciona cifrado autenticado (AEAD), garantizando confidencialidad e integridad simultáneamente. Muy rápido.
Ejemplo Práctico con OpenSSL (Simétrico con GCM): Cifrar un archivo usando AES-256-GCM (nota: OpenSSL CLI a veces requiere parámetros complejos para GCM, usaremos CBC para el ejemplo básico pero ten en cuenta la recomendación de GCM para desarrollo):
# Cifrar archivo 'documento.txt' con AES-256-CBC y Salt (para evitar ataques de diccionario)
openssl enc -aes-256-cbc -salt -pbkdf2 -in documento.txt -out documento.enc -k mi_contraseña_secreta
# Descifrar
openssl enc -aes-256-cbc -d -pbkdf2 -in documento.enc -out documento_descifrado.txt -k mi_contraseña_secreta
Algoritmos de Cifrado Asimétrico: Más allá de RSA
RSA ha sido el rey, pero la Criptografía de Curva Elíptica (ECC) es el presente y futuro debido a su eficiencia.
- RSA vs ECC: Una clave ECC de 256 bits ofrece una seguridad comparable a una clave RSA de 3072 bits. Esto significa menos carga computacional para dispositivos móviles y servidores.
- Intercambio de Claves Diffie-Hellman (DH): Permite que dos partes que no se conocen acuerden una clave secreta compartida (para luego usar cifrado simétrico) a través de un canal inseguro.
- PFS (Perfect Forward Secrecy): Propiedad vital en TLS. Si un atacante roba la clave privada del servidor hoy, no debería poder descifrar el tráfico capturado ayer. Esto se logra usando claves DH efímeras (DHE o ECDHE).
Ejemplo Práctico con GPG (Asimétrico):
# Generar par de claves (GPG usa por defecto algoritmos robustos)
gpg --gen-key
# Cifrar para un destinatario (usando su clave pública)
# Esto asegura CONFIDENCIALIDAD: Solo el destinatario puede leerlo.
gpg --encrypt --recipient "destinatario@email.com" mensaje.txt
# Firmar un documento (usando mi clave privada)
# Esto asegura AUTENTICIDAD e INTEGRIDAD: Cualquiera con mi pública puede verificar que fui yo.
gpg --clearsign mensaje.txt
Infraestructura de Clave Pública (PKI) y Certificados
La criptografía asimétrica por sí sola no garantiza la identidad (¿cómo sé que la clave pública de "Google" es realmente de Google?). Aquí entra la PKI.
Cadena de Confianza
- Root CA (Autoridad de Certificación Raíz): Entidad de máxima confianza (su certificado viene preinstalado en navegadores y SO).
- Intermediate CA: Emitida por la Root CA. Emite certificados finales para proteger a la Root (que se guarda offline).
- End-Entity Certificate: El certificado de la web (ej. google.com).
Estándar X.509
Define el formato de los certificados digitales. Campos críticos para una auditoría:
- Subject: Quién es el dueño (CN = Common Name).
- Issuer: Quién lo emitió.
- Validity: Fechas
Not BeforeyNot After. - Subject Alternative Name (SAN): Lista de dominios válidos para este certificado (vital para hosting virtual).
Firma Electrónica Avanzada
Legalmente vinculante en muchos países (como eIDAS en Europa).
- Sellado de Tiempo (Timestamping): Garantiza que el documento existía en un momento dado y no ha sido alterado desde entonces.
- Validación de Estado (OCSP/CRL): Comprobar si el certificado ha sido revocado antes de su expiración.
Ejemplo: Inspeccionar a fondo un certificado SSL:
# Ver toda la cadena de certificación y detalles técnicos
echo | openssl s_client -showcerts -servername google.com -connect google.com:443 2>/dev/null | openssl x509 -noout -text
Busca en la salida el campo "Subject Alternative Name" para ver todos los subdominios que cubre.