Cifrado y comunicación segura

TLS/SSL

Lectura de aproximadamente 4 minutos

Qué es TLS/SSL

TLS (Transport Layer Security) es un protocolo que cifra las comunicaciones en internet. SSL (Secure Sockets Layer) es su predecesor, actualmente obsoleto por sus vulnerabilidades, pero por costumbre se sigue llamando "SSL" o "SSL/TLS".

El icono de candado y HTTPS que aparecen en la barra de direcciones del navegador indican que se está realizando una comunicación cifrada mediante TLS. TLS es la tecnología fundamental que sustenta la seguridad de todas las comunicaciones de internet, incluyendo banca en línea, sitios de comercio electrónico, correo electrónico y chat.

Funcionamiento de TLS - El handshake

La comunicación TLS comienza con un procedimiento llamado "handshake".

  1. Client Hello: El cliente envía al servidor la lista de versiones TLS y conjuntos de cifrado compatibles
  2. Server Hello: El servidor selecciona el conjunto de cifrado a utilizar y envía el certificado digital
  3. Intercambio de claves: Se comparte de forma segura una clave común utilizando criptografía de clave pública
  4. Inicio de la comunicación cifrada: Se cifra la comunicación posterior con la clave común compartida

En TLS 1.3, el handshake se redujo a 1-RTT (1 viaje de ida y vuelta), una mejora significativa en velocidad respecto a los 2-RTT de TLS 1.2.

Qué cambió con TLS 1.3

TLS 1.3 (RFC 8446, establecido en 2018) no fue una simple actualización menor, sino una revisión fundamental del diseño del protocolo.

Conjuntos de cifrado eliminados
Se eliminaron todos los algoritmos con preocupaciones de seguridad como RC4, 3DES, cifrado en modo CBC, intercambio de claves RSA estático y SHA-1. Los conjuntos de cifrado disponibles en TLS 1.3 se redujeron a solo 5, reduciendo significativamente el riesgo de vulnerabilidades por errores de configuración.
Reconexión 0-RTT
Al reconectarse a un servidor previamente visitado, se pueden enviar datos sin esperar a que se complete el handshake. Mejora la velocidad percibida de carga de páginas, pero existe riesgo de ataques de repetición, por lo que no debe usarse para solicitudes no idempotentes (procesamiento de pagos, etc.).
Obligatoriedad del secreto perfecto hacia adelante
El secreto perfecto hacia adelante (Forward Secrecy), que era opcional en TLS 1.2, se hizo obligatorio. Incluso si la clave privada del servidor se filtra en el futuro, el contenido de las comunicaciones pasadas no puede descifrarse. El intercambio de claves se unificó en ECDHE (Diffie-Hellman de curva elíptica).

Tipos de certificados y cómo elegir

  • DV (Domain Validation): Solo verifica la propiedad del dominio. Se puede obtener gratuitamente con Let's Encrypt. Adecuado para sitios personales y blogs. La emisión se completa en minutos.
  • OV (Organization Validation): También verifica la existencia de la organización. Común en sitios web corporativos. La emisión tarda varios días y requiere verificación de registro y confirmación telefónica.
  • EV (Extended Validation): Se emite tras la auditoría más estricta. Anteriormente, el nombre de la organización se mostraba en verde en la barra de direcciones, pero los principales navegadores actuales han eliminado esta visualización.

No hay diferencia en la fortaleza del cifrado según el tipo de certificado. La diferencia está en el nivel de verificación de "quién opera ese dominio". Para sitios personales y servicios de pequeña y mediana escala, un certificado DV es suficiente, y el efecto que justifique el coste de un certificado EV (de decenas de miles a cientos de miles de yenes anuales) ha disminuido.

Let's Encrypt y gestión automatizada de certificados

Let's Encrypt es una autoridad de certificación gratuita que inició su servicio oficial en 2016, logrando la emisión y renovación automatizada de certificados mediante el protocolo ACME (Automatic Certificate Management Environment). Actualmente, aproximadamente el 30% de los certificados TLS en la web son emitidos por Let's Encrypt.

En el protocolo ACME, la propiedad del dominio se verifica automáticamente mediante el desafío HTTP-01 (colocar un archivo de token en una ruta especificada) o el desafío DNS-01 (establecer un token en un registro DNS TXT). Con herramientas cliente como Certbot o acme.sh, se puede automatizar completamente desde la obtención del certificado hasta la configuración en el servidor web y la renovación automática cada 90 días.

En entornos AWS, ACM (AWS Certificate Manager) proporciona una gestión automatizada similar, y los certificados configurados en CloudFront o ALB se renuevan automáticamente.

Métodos de verificación de la configuración TLS

La seguridad de la configuración TLS del servidor se puede verificar con las siguientes herramientas.

  • SSL Labs (ssllabs.com): Prueba gratuita en línea proporcionada por Qualys. Evalúa con calificaciones de A+ a F, verificando exhaustivamente los protocolos compatibles, conjuntos de cifrado, cadena de certificados y vulnerabilidades conocidas (BEAST, POODLE, Heartbleed, etc.). Ideal para verificaciones periódicas de servidores de producción.
  • testssl.sh: Herramienta de código abierto que funciona en línea de comandos. Útil para probar servidores internos o entornos de staging que no son accesibles desde el exterior. Se ejecuta con ./testssl.sh example.com.

Los errores de configuración comunes incluyen dejar habilitados TLS 1.0/1.1, mantener conjuntos de cifrado débiles (RC4, 3DES), falta de certificados intermedios en la cadena de certificados y no configurar el encabezado HSTS. Si SSL Labs da una calificación de B o inferior, se debe revisar la configuración urgentemente.

Conceptos erróneos comunes

SSL y TLS son tecnologías diferentes
TLS es el protocolo sucesor de SSL. Después de SSL 3.0 se estableció TLS 1.0, y actualmente se utilizan TLS 1.2/1.3. El término "certificado SSL" es una denominación por costumbre; en realidad son certificados TLS.
Si es HTTPS, es absolutamente seguro
HTTPS garantiza el cifrado de la vía de comunicación, pero si el sitio de destino es seguro o no es otra cuestión. Los sitios de phishing también utilizan HTTPS, por lo que no se debe confiar solo por el icono de candado.

Comparación entre TLS 1.2 y TLS 1.3

TLS 1.2

Establecido en 2008. Handshake de 2-RTT. Soporta numerosos conjuntos de cifrado (algunos con baja seguridad). El secreto perfecto hacia adelante es opcional.

TLS 1.3

Establecido en 2018. Handshake de 1-RTT. Limitado solo a conjuntos de cifrado seguros. El secreto perfecto hacia adelante es obligatorio. Soporta reconexión 0-RTT.

Términos relacionados

Artículos relacionados