TLS y SSL: protocolo de seguridad en Internet (definición)
TLS y SSL: definición y cómo protegen tus datos en Internet. Funcionamiento, usos (web, correo, VoIP) y claves para mejorar la seguridad en línea.
El Protocolo de Seguridad de la Capa de Transporte (TLS) y su predecesor, Secure Sockets Layer (SSL), son protocolos criptográficos que proporcionan seguridad e integridad de los datos para las comunicaciones a través de redes TCP/IP como Internet. Varias versiones de los protocolos son comunes en aplicaciones como la navegación web, el correo electrónico, el fax por Internet, la mensajería instantánea y la voz sobre IP (VoIP).
¿Qué proporcionan TLS y SSL?
En términos prácticos, estos protocolos aportan tres propiedades básicas a una conexión de red:
- Confidencialidad: cifrado de los datos para que terceros no puedan leer la información transmitida.
- Integridad: detección de modificaciones accidentales o maliciosas en los datos durante su tránsito.
- Autenticación: verificación de la identidad del servidor (y opcionalmente del cliente) mediante certificados digitales.
Componentes y funcionamiento básico
TLS está formado por varios subprotocolos. Los más relevantes son:
- Handshake: intercambio inicial entre cliente y servidor para acordar versiones, suites criptográficas y para autenticar al servidor mediante un certificado. En el handshake se realiza el intercambio de claves (mediante RSA, DH, ECDH/ECDHE u otros) y se derivan las claves de sesión.
- Record protocol: encapsula, fragmenta, comprime (opcional) y cifra los datos de aplicación usando las claves de sesión. También aplica códigos de autenticación (MAC) o algoritmos AEAD (como AES-GCM o ChaCha20-Poly1305).
- Alertas: mensajes que indican errores o el cierre correcto de la conexión.
El flujo típico del handshake incluye: ClientHello → ServerHello → envío del certificado del servidor → comprobación y acuerdo del método de intercambio de claves → generación de claves de sesión → establecimiento del canal cifrado y envío de datos de aplicación cifrados.
Certificados y autoridades de certificación (CA)
TLS usa certificados X.509 para probar la identidad de un servidor. Un certificado contiene la clave pública del servidor, el nombre del sujeto, la entidad emisora (CA) y fechas de validez. Para que un certificado sea confiable, normalmente debe encadenarse hasta un certificado raíz de confianza emitido por una Autoridad de Certificación (CA) incluida en la lista de confianza del sistema o navegador.
Mecanismos relacionados:
- Cadena de certificados: incluye certificados intermedios que conectan el certificado del servidor con una CA raíz.
- Revocación: comprobación de que un certificado no haya sido revocado mediante CRL (listas de revocación) u OCSP (Online Certificate Status Protocol). El OCSP stapling permite al servidor adjuntar la respuesta OCSP para mejorar rendimiento y privacidad.
- Autofirmados: certificados firmados por uno mismo son útiles en entornos de desarrollo o internos, pero no son confiables por defecto en navegadores públicos.
Versiones y evolución
- SSL 2.0 y 3.0: antiguas versiones ahora consideradas inseguras. SSL 3.0 fue reemplazada por TLS y está deshabilitada en sistemas actuales por vulnerabilidades como POODLE.
- TLS 1.0 y 1.1: versiones ya obsoletas y desaconsejadas; muchos servicios las han desactivado por problemas de seguridad y por mejores alternativas.
- TLS 1.2: ampliamente usado y todavía seguro cuando está correctamente configurado (cifrados modernos, AEAD, ECDHE).
- TLS 1.3: simplifica y acelera el handshake, elimina características inseguras (por ejemplo, suites de cifrado obsoletas), mejora la privacidad y reduce la latencia; recomendado si es compatible con clientes.
Vulnerabilidades históricas y lecciones
A lo largo de los años se han descubierto ataques significativos que llevaron a cambios en protocolos y configuraciones:
- POODLE: exploit contra SSL 3.0 que terminó su uso generalizado.
- BEAST, CRIME, TIME: ataques que afectaron implementaciones y modos de cifrado específicos.
- Heartbleed: vulnerabilidad en OpenSSL que permitía leer memoria del servidor.
- FREAK, Logjam, DROWN: ataques que explotaban soporte de cifrados débiles o compatibilidad con protocolos antiguos.
Estas incidencias subrayan la importancia de mantener software actualizado, deshabilitar protocolos y cifrados inseguros y auditar regularmente la configuración TLS.
Buenas prácticas de configuración
- Usar TLS 1.2 como mínimo y preferir TLS 1.3 cuando sea posible.
- Habilitar cifras modernas: AEAD (AES-GCM, ChaCha20-Poly1305) y ECDHE para proporcionar perfect forward secrecy.
- Deshabilitar SSL 2.0/3.0 y TLS 1.0/1.1; eliminar RC4, DES, 3DES y cifrados basados en MD5.
- Configurar certificados válidos, con cadenas completas y renovarlos antes de su expiración.
- Habilitar OCSP stapling, HSTS (HTTP Strict Transport Security) y, cuando corresponda, certificate pinning con cautela.
- Proteger las claves privadas (por ejemplo, usando HSM) y aplicar políticas de rotación de claves.
- Usar pruebas y escaneos (p. ej. herramientas de evaluación de TLS) para verificar la configuración y detectar problemas.
Usos comunes en aplicaciones
- HTTPS: navegación segura sobre HTTP (puerto 443).
- Correo electrónico: SMTPS/STARTTLS, IMAPS y POP3S para proteger el correo.
- Servicios de directorio y FTP: LDAP sobre TLS, FTPS, etc.
- VoIP y mensajería: cifrado de señales y medios (SIP/TLS, SRTP con claves negociadas por TLS).
- APIs y microservicios: comunicación entre servicios internos mediante TLS para confidencialidad y autenticidad.
Cómo comprobar y diagnosticar TLS
- En navegadores, hacer clic en el candado de la barra de direcciones para ver el certificado y la versión TLS.
- Usar herramientas de línea de comando como openssl s_client o curl -v para inspeccionar handshakes y certificados.
- Servicios de análisis externos (por ejemplo, evaluadores de configuración TLS) permiten comprobar la compatibilidad, cadenas y puntuación de seguridad.
En resumen, TLS (y anteriormente SSL) es la base de la seguridad de las comunicaciones en Internet. Mantenerse al día con las versiones, configuraciones y prácticas recomendadas es esencial para proteger datos y garantizar la confianza entre clientes y servidores.
Descripción
El protocolo TLS permite que las aplicaciones se comuniquen a través de una red de una manera diseñada para evitar las escuchas, la manipulación y la falsificación de mensajes. TLS proporciona autenticación de puntos finales y confidencialidad de las comunicaciones a través de Internet mediante criptografía. En la mayoría de los casos, sólo se autentifica el servidor (es decir, se asegura su identidad) mientras que el cliente permanece sin autentificar; esto significa que el usuario final (ya sea un individuo o una aplicación, como un navegador web) puede estar seguro de con quién se está comunicando. El siguiente nivel de seguridad se conoce como autenticación mutua. La autenticación mutua requiere el despliegue de una infraestructura de clave pública (PKI) en los clientes, a menos que se utilicen TLS-PSK o el protocolo Secure Remote Password (SRP), que proporcionan una autenticación mutua fuerte sin necesidad de desplegar una PKI.
Uso
SSL y TLS han sido ampliamente utilizados en varios proyectos de software de código abierto. Los programadores pueden utilizar las bibliotecas OpenSSL, NSS o GnuTLS para la funcionalidad SSL/TLS. Microsoft Windows incluye un uso de SSL y TLS como parte de su paquete de Canal Seguro. Los programadores de Delphi pueden utilizar una biblioteca llamada Indy.
Normas
La versión actual aprobada es la 1.2, que se especifica en:
- RFC 5246: "Protocolo de seguridad de la capa de transporte (TLS) versión 1.2".
La norma actual deja obsoletas estas versiones anteriores:
- RFC 2246: "El protocolo TLS versión 1.0".
- RFC 4346: "Protocolo de seguridad de la capa de transporte (TLS) versión 1.1".
Posteriormente, otras RFC ampliaron TLS, entre ellas:
- RFC 2595: "Uso de TLS con IMAP, POP3 y ACAP". Especifica una extensión de los servicios IMAP, POP3 y ACAP que permite al servidor y al cliente utilizar la seguridad de la capa de transporte para proporcionar una comunicación privada y autentificada a través de Internet.
- RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)". Las suites de cifrado de 40 bits definidas en este memorándum aparecen sólo con el propósito de documentar el hecho de que esos códigos de suites de cifrado ya han sido asignados.
- RFC 2817: "Upgrading to TLS Within HTTP/1.1", explica cómo utilizar el mecanismo de actualización en HTTP/1.1 para iniciar la seguridad de la capa de transporte (TLS) sobre una conexión TCP existente. Esto permite que el tráfico HTTP seguro y no seguro comparta el mismo puerto conocido (en este caso, http: en 80 en lugar de https: en 443).
- RFC 2818: "HTTP Over TLS", distingue el tráfico seguro del inseguro mediante el uso de un 'puerto de servidor' diferente.
- RFC 3207: "Extensión del servicio SMTP para un SMTP seguro sobre la seguridad de la capa de transporte". Especifica una extensión del servicio SMTP que permite a un servidor y a un cliente SMTP utilizar la seguridad de la capa de transporte para proporcionar una comunicación privada y autentificada a través de Internet.
- RFC 3268: "Cifras AES para TLS". Añade los cifrados del Estándar de Cifrado Avanzado (AES) a los cifrados simétricos ya existentes.
- RFC 3546: "Transport Layer Security (TLS) Extensions", añade un mecanismo para negociar las extensiones del protocolo durante la inicialización de la sesión y define algunas extensiones. Ha quedado obsoleta por el RFC 4366.
- RFC 3749: "Transport Layer Security Protocol Compression Methods", especifica el marco para los métodos de compresión y el método de compresión DEFLATE.
- RFC 3943: "Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS)".
- RFC 4132: "Addition of Camellia Cipher Suites to Transport Layer Security (TLS)".
- RFC 4162: "Addition of SEED Cipher Suites to Transport Layer Security (TLS)".
- RFC 4217: "Securing FTP with TLS".
- RFC 4279: "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", añade tres conjuntos de nuevos ciphersuites para que el protocolo TLS soporte la autenticación basada en claves precompartidas.
- RFC 4347: "Datagram Transport Layer Security" especifica una variante de TLS que funciona sobre protocolos de datagramas (como UDP).
- RFC 4366: "Transport Layer Security (TLS) Extensions" describe tanto un conjunto de extensiones específicas como un mecanismo de extensión genérico.
- RFC 4492: "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)".
- RFC 4507: "Reanudación de la sesión de seguridad de la capa de transporte (TLS) sin estado del lado del servidor".
- RFC 4680: "Mensaje de apretón de manos TLS para datos suplementarios".
- RFC 4681: "TLS User Mapping Extension".
- RFC 4785: "Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS)".
Páginas relacionadas
- Autoridad de certificación
- Certificado de clave pública
- Certificado de validación ampliado
- Aceleración SSL
- Seguridad de la capa de transporte de datagramas
- Seguridad de la capa de transporte multiplexada
- X.509
- Red privada virtual
- SEED
- Criptografía cerrada del servidor
Software
- OpenSSL: una implementación libre (y muy popular) (licencia BSD con algunas extensiones de broma)
- GnuTLS: una implementación libre con licencia LGPL
- JSSE: una implementación de Java incluida en el entorno de ejecución de Java
- Servicios de seguridad de la red (NSS): Biblioteca de código abierto validada por FIPS 140
Buscar dentro de la enciclopedia