Seguridad en el Tráfico de Aplicaciones: Introducción al Protocolo TLS
Introducción a la Seguridad en las Aplicaciones: Protocolo Transport Layer Security
- Miguel Rodríguez Pérez & Andrés Suárez González: Autores de la presentación del 29 de enero de 2026.
- Objetivo Central: Proporcionar una guía exhaustiva sobre el protocolo Transport Layer Security (TLS), desde sus fundamentos hasta sus versiones más recientes (1.2 y 1.3).
Contexto y Objetivos de TLS
- Definición y Evolución: El protocolo TLS es la evolución de SSL (Secure Sockets Layer). Su propósito es proporcionar comunicación segura sobre una infraestructura que es inherentemente insegura.
- Garantías del Canal Seguro: Provee autenticación, confidencialidad e integridad para servicios de Internet arbitrarios.
- Metas Principales:
- Seguridad Criptográfica: Es la razón de su existencia; asegurar que los datos no sean interceptados ni alterados.
- Interoperabilidad: El protocolo es independiente del sistema operativo o del lenguaje de programación utilizado.
- Extensibilidad: Es independiente de las primitivas criptográficas reales, como los cifrados y las funciones de hash.
- Eficiencia: Busca limitar el coste de rendimiento, manteniendo una baja latencia y una baja sobrecarga de la CPU.
Cronología de SSL y TLS
- SSL 1.0 (1994): Nunca fue lanzado públicamente.
- SSL 2.0 (Noviembre 1994): Desplegado en Netscape Navigator 1.1. Introdujo los certificados de servidor, pero estaba gravemente roto. Fue deprecado formalmente en 2012.
- SSL 3.0 (Noviembre 1996): Rediseño completo con soporte de PKI mediante certificados X.509. Deprecado en 2015 debido al ataque POODLE (Padding Oracle On Downgraded Legacy Encryption).
- TLS 1.0 (Enero 1999): Estandarización de SSL 3.0. Hubo cambios menores realizados para satisfacer a Microsoft, lo que rompió la interoperabilidad con SSL 3.0.
- TLS 1.1 (Abril 2006): Incluyó correcciones de seguridad. Deprecado en 2021.
- TLS 1.2 (Agosto 2008): Proporcionó mayor flexibilidad y se convirtió en la versión más común.
- TLS 1.3 (Agosto 2018): Introdujo mejoras significativas en rendimiento y simplificación de procesos.
- HTTP/3 (Junio 2022): Uso de QUIC (que cifra por defecto) en lugar de TCP, integrando la negociación de TLS 1.3.
- Futuro: Investigación en Criptografía Post-Cuántica.
Estado del Soporte de Protocolos (Datos a Junio 2025)
- El 75.3% de los sitios encuestados (101,141 sitios) soportan el protocolo TLS v1.3.
- Esto representa un incremento del 0.1% respecto a mayo de 2025 (75.2%, 101,134 sitios).
- El uso de SSL v2.0, SSL v3.0, TLS v1.0 y TLS v1.1 es residual o inexistente en servidores modernos seguros.
Arquitectura de TLS en Internet
- Ubicación en la Pila de Protocolos:
- Aplicación
- TLS (Subcapas: Handshake, Change Cipher, Alert, App. Data sobre el Record Protocol)
- Transporte (TCP)
- Red
- Enlace
- Competidores y Alternativas:
- SSH (Secure Shell): También en la capa de aplicación. Usa criptografía de clave pública o contraseñas. Se basa en "hosts conocidos" y el intercambio de claves en lugar de una estructura jerárquica de PKI. Usos: acceso remoto, transferencia de archivos, túneles.
- PGP (Pretty Good Privacy): Opera mensaje a mensaje (modo offline). Utiliza una "Red de Confianza" (Web of Trust) descentralizada. Usos: correos electrónicos, archivos, verificación de paquetes de software (ej. Ubuntu).
Protocolo de Registro (Record Protocol)
- Función: Transporta y, opcionalmente, cifra cada mensaje TLS entre las dos aplicaciones.
- Estructura del Registro TLS:
- Cabecera: Contiene el Tipo (Tipo de Registro), Versión y Longitud.
- Datos: El contenido del mensaje.
- Contador: Existe un contador adicional de 64 bits que NO se envía por la red para evitar ataques de repetición.
- Pasos del Procesamiento:
- Fragmentación: Puede fragmentar mensajes mayores a 16,384 bytes o combinar mensajes pequeños.
- Compresión: (Opcional, pero en desuso por ataques como CRIME - Compression Ratio Info-leak Made Easy).
- MAC: Añade el código de autenticación de mensaje.
- Cifrado.
- Anexo de la cabecera.
- Extensibilidad: El protocolo de registro solo maneja el transporte y cifrado; las tareas específicas las realizan cuatro subprotocolos internos: handshake, change cipher spec, application data y alert.
Protocolo Handshake
- Responsabilidad: Negocia los parámetros de conexión y realiza la autenticación.
- Estructura del Mensaje:
struct { HandshakeType msg_type; uint24 length; HandshakeMessage message; } Handshake;
- Flujos Comunes:
- Handshake completo con autenticación del servidor.
- Handshake abreviado (reutilización de sesión).
- Handshake completo con autenticación mutua.
Pasos del Handshake Completo (TLS 1.2)
- Client Hello: El cliente solicita sesión y envía sus capacidades (Cifrados soportados, Número Aleatorio, ID de Sesión).
- Server Hello: El servidor selecciona los parámetros de conexión.
- Server Certificate: Envío de la cadena de certificados X.509 (omitiendo la raíz).
- Server Key Exchange: (Opcional) Información adicional para generar el secreto maestro según el tipo de intercambio de claves.
- Server Hello Done: Indica el fin de la negociación por parte del servidor.
- Client Key Exchange: El cliente envía información para el secreto maestro.
- [Change Cipher Spec]: El cliente activa el cifrado.
- Finished: El cliente envía un MAC de todos los mensajes previos.
- [Change Cipher Spec]: El servidor activa el cifrado.
- Finished: El servidor envía su MAC de verificación.
Diferencias en TLS 1.3
- Eficiencia: Se reduce el número de mensajes (un RTT menos: de 4 a 3).
- Cifrado Temprano: El cifrado comienza mucho antes en el proceso.
- Simplificación: No hay mensajes superfluos como Change Cipher Spec.
- Intercambio de Claves: Solo soporta DHE (Diffie-Hellman Ephemeral) y PSK (Pre-Shared Key).
Intercambio de Claves y Secretos
- RSA: El cliente cifra un secreto pre-maestro aleatorio con la clave pública del servidor. No proporciona Forward Secrecy.
- Diffie-Hellman (DH): Permite derivar una clave secreta sobre un canal inseguro.
- Estático: No proporciona forward secrecy. Eliminado en TLS 1.3.
- Efímero (DHE): Los parámetros cambian en cada conexión, proporcionando Forward Secrecy.
- Master Secret: Tiene una longitud de 48 bytes (384 bits). Se deriva mediante una Función Pseudoaleatoria (PRF):
master_secret=PRF(pre_master_secret, "master secret", client_random+server_random)
- Handshake Integrity (Finished):
verify_data=PRF(master_secret, [client|server] finished, Hash(handshake_messages))
Autenticación y Cifrado
- Autenticación: Generalmente mediante RSA o ECDSA (Elliptic Curve Digital Signature Algorithm).
- Tipos de Cifrado:
- Cifrado de Flujo (Stream): Como RC4 (roto) o ChaCha20. Cifran bit a bit o byte a byte.
- Cifrado de Bloque: Como AES (128 bits). Utilizan modos como CBC (Cipher Block Chaining).
- AEAD (Authenticated Encryption with Associated Data): Proporciona autenticación y cifrado simultáneo. Ejemplos: GCM (Galois Counter Mode), CCM (para IoT) y ChaCha20-Poly1305. Es el único modo permitido en TLS 1.3.
Operaciones Criptográficas y PRF
- TLS v1.2: Usa por defecto HMAC y SHA256 para la PRF.
- TLS v1.3: Usa HKDF (Hashed Message Authentication Code-based Key Derivation Function).
- Función de Expansión (P_hash):
P_hash(secret, seed)=⨁i=1HMAC_hash(secret, A(i)⊕seed)
Donde:
A(1) = seedA(i) = HMAC_hash(secret, A(i-1))
Cipher Suites (Resumen de Nomenclatura)
- En TLS \le 1.2:
- Ejemplo:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - Componentes: Intercambio de claves (ECDHE), Autenticación (RSA), Cifrado (AES), Fortaleza (128), Modo (GCM), PRF (SHA256).
- En TLS 1.3:
- Ejemplo:
TLS_AES_128_GCM_SHA256 - Componentes: Cifrado AEAD (AES), Fortaleza (128), Modo (GCM), Algoritmo Hash para HKDF (SHA256).
- Nota: El intercambio de claves se negocia mediante la extensión
supported_groups.
Cierre de Conexión (Alert Subprotocol)
- Mecanismo de notificación con dos niveles:
- Fatal: La conexión se corta inmediatamente.
- Warning (Advertencia): Descripción del error. El mensaje
Close Notify es una advertencia para un cierre ordenado que evita ataques de truncamiento.
Referencias Sugeridas
- I. Ristić, Bulletproof TLS and PKI, 2nd Ed., Feisty Duck, 2022.
- P. Duplys and R. Schmitz, TLS Cryptography In-Depth, Packt Publishing, 2024.
- Grok, Corrections and suggestions for updates to PKI and TLS lecture slides, Enero 2026.