El Transport Layer Security ( TLS ) o "Seguridad de la capa de transporte" y su predecesora, la Capa de sockets seguros ( SSL ) o "Capa de sockets seguro" son los protocolos de seguridad en el comercio de las redes informáticas , incluida Internet . El protocolo SSL fue desarrollado originalmente por Netscape Communications Corporation para su navegador. El organismo de estándares IETF continuó desarrollándolo, renombrándolo Transport Layer Security (TLS) . A veces hablamos de SSL / TLS para designar indistintamente SSL o TLS .
El TLS (o SSL ) opera en un cliente-servidor de moda . Cumple los siguientes objetivos de seguridad:
El protocolo es ampliamente utilizada, y su aplicación se ve facilitada por el hecho de que los protocolos de capa de aplicación, como HTTP , no tienen que ser modificados drásticamente para utilizar una conexión segura, pero sólo implementan en la parte superior de la misma. El SSL / TLS , que para HTTP dio el protocolo HTTPS .
Un grupo de trabajo especial de IETF permitió la creación de TLS y su equivalente en modo no conectado UDP , DTLS . Desde que fue asumido por el IETF , el protocolo TLS ha pasado por cuatro versiones: TLS v1.0 en 1999, TLS v1.1 en 2006, TLS v1.2 en 2008 y TLS v1.3 en 2018.
A medida que Internet creció, más y más empresas comerciales comenzaron a ofrecer compras en línea para particulares. La oferta creció de manera constante, pero los ingresos del comercio electrónico se mantuvieron modestos hasta que los clientes tuvieron suficiente confianza en pagar con tarjeta de crédito. Una de las formas de asegurar este pago era utilizar protocolos de autenticación y encriptación como SSL. La sesión encriptada se utiliza para evitar que un tercero intercepte datos sensibles que pasan por la red: número de tarjeta al pagar con tarjeta bancaria , contraseña cuando el usuario se identifica en un sitio, etc.
Con un sistema SSL, la seguridad se ha mejorado significativamente y el riesgo para el cliente se ha reducido considerablemente, en comparación con los días en que el pago por Internet todavía era una tecnología emergente. Aunque, como cualquier sistema de cifrado, SSL / TLS nunca puede ser completamente infalible, la gran cantidad de bancos y sitios de comercio electrónico que lo utilizan para proteger las transacciones de sus clientes puede considerarse una prueba de su resistencia.
A partir de 2009, la mayoría de los servidores web utilizan TLS . El internauta puede reconocer que una transacción está cifrada con varios signos:
La primera versión de SSL lanzada, SSL 2.0, tenía una serie de fallas de seguridad, incluida la posibilidad de forzar el uso de algoritmos de cifrado más débiles, o la falta de protección para el apretón de manos y la comunicación, posibilidad de que un atacante realizara ataques de truncamiento. Los protocolos PCT 1.0, luego SSL 3.0, fueron desarrollados para resolver la mayor parte de estos problemas, convirtiéndose rápidamente el segundo en el protocolo más popular para asegurar los intercambios en Internet.
TLS no es estructuralmente diferente de la versión 3 de SSL, pero los cambios en el uso de funciones hash significan que los dos protocolos no son directamente interoperables. Sin embargo, TLS, como SSLv3, incorpora un mecanismo de retrocompatibilidad con versiones anteriores, es decir, al inicio de la fase de negociación, el cliente y el servidor negocian la "mejor" versión del protocolo disponible para todos. Por motivos de seguridad, detallados en RFC 6176 publicado en 2011, se abandona la compatibilidad de TLS con la versión 2 de SSL.
La generación de claves simétricas es un poco más segura en TLS que en SSLv3 en la medida en que ningún paso del algoritmo se basa únicamente en MD5 para el que han aparecido debilidades en el criptoanálisis .
La primera versión profesional de TLS 1.3 es wolfSSL , lanzada en mayo de 2017.
Las redes industriales modernas que operan en TCP / IP utilizan cada vez más la seguridad TLS. Así, los protocolos para el mando de control de redes eléctricas como IEC-61850, IEC-60870 y DNP3 combinan TLS para proteger contra ciberataques.
La mayoría de los navegadores también son clientes TLS. Los navegadores web que admiten la última versión de TLS 1.2 de forma predeterminada son:
Los principales desarrolladores de navegadores web han anunciado que dejarán de admitir TLS 1.1 y versiones anteriores a partir de la primavera de 2020.
HTTPS Everywhere es una extensión para navegador web que permite extender el uso de SSL / TLS en ciertos sitios. Habilita el cifrado en páginas donde normalmente está deshabilitado. Obviamente, esto solo puede funcionar si el sitio en cuestión ya es compatible con TLS. La extensión ha sido mantenida conjuntamente por el proyecto Tor y EFF desde 2010.
En la mayoría de los casos, el usuario autentica el servidor TLS al que se conecta. Esta autenticación se logra mediante el uso de un certificado digital X.509 emitido por una autoridad de certificación (CA). Las aplicaciones web pueden utilizar la autenticación de la estación de trabajo cliente mediante TLS. Entonces es posible ofrecer autenticación mutua entre el cliente y el servidor. El certificado de cliente puede almacenarse en formato de software en la estación de trabajo del cliente o suministrarse mediante un dispositivo de hardware ( tarjeta inteligente , token USB). Esta solución permite ofrecer fuertes mecanismos de autenticación .
Cuando un usuario inicia sesión en un sitio web que usa TLSv1.2 (o inferior), se llevan a cabo los siguientes pasos:
Opcional: si el servidor también requiere que el cliente se autentique, el cliente le envía su propio certificado junto con la clave de sesión. A continuación, el servidor procede como se detalla en el punto 3 para verificar que el certificado del cliente es válido.
Desde TLSv1.3 , el intercambio de la clave de sesión debe realizarse a través de Diffie-Hellman con curvas elípticas ( ECDHE ): el RSA ya no se puede utilizar para esto.
En 2001, Serge Vaudenay descubrió un ataque de canal auxiliar contra SSL. Como resultado de la actualización estándar, este ataque ahora está totalmente obsoleto y ya no se puede utilizar. Este ataque se aprovechó de una implementación deficiente de relleno que se utilizó cuando las entradas eran de tamaño variable. El modo de cifrado CBC ( encadenamiento de bloques de cifrado ) consiste en dividir los datos en varios bloques del mismo tamaño y cifrarlos de forma concatenada (el resultado anterior se utiliza en el cifrado posterior). El ataque de Vaudenay utilizó los tiempos de respuesta de los servidores en caso de errores durante el llenado. Con un poco de suerte, fue posible averiguar los últimos datos enviados y recuperarlos. Sin embargo, el ataque fue ineficaz con el cifrado de tipo RC4 y solo fue válido bajo ciertas condiciones. A pesar de todo, se ha utilizado con éxito contra ciertos "webmails" que enviaron los mismos datos varias veces .
En marzo de 2014, se descubrió una vulnerabilidad de software en la biblioteca de OpenSSL: Heartbleed , introducida por error en una actualización de OpenSSL realizada dos años antes. Esta falla fue ampliamente publicitada, incluso en los medios de comunicación en general, como lo había sido el gusano I love you en particular en 2000.
El 15 de octubre de 2014, un equipo de investigación de Google identificó una falla en el diseño de SSLv3 que permitía descifrar el contenido. Este ataque se denominó POODLE por Padding Oracle On Downgraded Legacy . Está presente solo en SSLv3.
El 2 de marzo de 2016, los investigadores detallan la falla llamada DROWN . Consiste en utilizar la antigua versión SSL v2 para descifrar la tecnología TLS v1.2.
El objetivo del protocolo DANE es corregir ciertas debilidades en TLS, en particular para ataques de tipo MIMT .
7 - capa de aplicación | HTTP , SMTP , FTP , SSH , IRC , SNMP , SIP ... |
6 - capa de presentación | |
5 - capa de sesión | TLS, SSL, usuario SSH , NetBIOS |
4 - capa de transporte | TCP , UDP , SCTP , RTP , DCCP ... |
3 - capa de red | IPv4 , IPv6 , ARP , IPX ... |
2 - capa de corbata | Ethernet , 802.11 WiFi , Token ring , FDDI , ... |
1 - capa física | Cable, fibra óptica , ondas de radio ... |
En la pila de protocolos TCP / IP , SSL se encuentra entre la capa de aplicación (como HTTP , FTP , SMTP , etc.) y la capa de transporte TCP .
Su uso más común, sin embargo, permanece por debajo de HTTP. SSL es implementado por la capa de sesión de la pila, lo que tiene dos consecuencias:
La autenticación del servidor y del cliente se puede realizar mediante certificados electrónicos o mediante secretos previamente compartidos (o clave previamente compartida) . La autenticación es opcional.
Los mensajes intercambiados a través de TLS se denominan registros. Normalmente, estos mensajes se encapsulan en datagramas TCP. Existe una variante de UDP y se llama DTLS . Hay cuatro tipos de registros:
La seguridad se consigue por un lado mediante el cifrado asimétrico , como el cifrado RSA , que permite, tras la autenticación de la clave pública del servidor, la constitución de un secreto compartido entre el cliente y el servidor, por otro lado mediante un cifrado simétrico (mucho más rápido que los cifrados asimétricos), como AES , que se utiliza en la fase de intercambio de datos, y las claves de cifrado simétricas se calculan a partir del secreto compartido. También se utiliza una función hash , como SHA-1 , entre otras cosas, para garantizar la integridad y autenticación de los datos (por ejemplo, a través de HMAC ).
Más precisamente, los mensajes de datos de la aplicación se cifran mediante una clave de cifrado y un algoritmo de cifrado de bloque simétrico como AES 128 o por flujo como CHACHA20 . Se autentican a través de una función HMAC o directamente a través del modo de funcionamiento del cifrado de bloque simétrico.
Las claves de cifrado y las claves HMAC se generan a partir de un intercambio secreto entre los dos pares ( secreto previo al maestro) , los datos aleatorios intercambiados durante la fase de reconocimiento y el uso de una función de derivación de claves basada en HMAC. Este intercambio secreto se puede autenticar (o no) mediante el uso de un algoritmo de firma digital como DSA o el algoritmo RSA.
En total, hay cinco tipos de claves criptográficas que se utilizan durante una sesión TLS:
Las suites criptográficas utilizadas tienen el siguiente formato:
donde KE indica un algoritmo de intercambio secreto, CIPHER un algoritmo de cifrado simétrico y HASH una función hash . La función HMAC se deriva de la función hash.
Por ejemplo, la suite criptográfica TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 indica que el par puede utilizar el algoritmo de intercambio de claves Efímero Diffie-Hellman en curvas elípticas autenticadas por el algoritmo de firma ECDSA , el algoritmo de cifrado simétrico AES 128 en modo GCM y la función hash SHA256.
En la versión 1.2, el algoritmo de intercambio secreto puede ser RSA o una variante del algoritmo Diffie-Hellman (autenticado o no, efímero o no, en curvas elípticas o no) mientras que para la versión 1.3 solo se permite el algoritmo El efímero Diffie-Hellman y la función de firma digital se especifica en las extensiones de los mensajes ClientHello, ServerHello y HelloRetryRequest de la fase Handshake .