Blog de GlobalSign

Nota del editor: Este post fue publicado originalmente en julio de 2016 y ha sido actualizado por el director senior de marketing de productos de GlobalSign, Patrick Nohe, para reflejar los últimos cambios en la evolución de SSL.

A menos que trabajes con ello habitualmente, es muy probable que no sepas la diferencia entre SSL (Secure Sockets Layers) y TLS (Transport Layer Security). Y esta industria no le hace muchos favores al referirse coloquialmente a TLS como SSL. Ha habido cuatro iteraciones del protocolo TLS. SSL ha sido (o se supone que es) totalmente obsoleto. Entonces, ¿cuál es la diferencia entre SSL y TLS?

Estás a punto de descubrirlo.

Una breve historia de SSL y TLS

SSL y TLS son protocolos criptográficos que proporcionan autenticación y cifrado de datos entre servidores, máquinas y aplicaciones que operan en una red (por ejemplo, un cliente que se conecta a un servidor web). En realidad, SSL sólo tiene unos 25 años. Pero en años de Internet, eso es antiguo. La primera iteración de SSL, la versión 1.0, fue desarrollada en 1995 por Netscape, pero nunca llegó a publicarse porque estaba plagada de graves fallos de seguridad. La versión 2.0 de SSL no era mucho mejor, así que un año más tarde se lanzó la versión 3.0 de SSL. De nuevo, tenía graves fallos de seguridad.

En ese momento, los chicos de Consensus Development se pusieron manos a la obra y desarrollaron TLS 1.0. TLS 1.0 era increíblemente similar a SSL 3.0 -de hecho, se basaba en él-, pero aún así era lo suficientemente diferente como para requerir un downgrade antes de poder utilizar SSL 3.0. Como escribieron los creadores del protocolo TLS:

«Las diferencias entre este protocolo y SSL 3.0 no son dramáticas, pero son lo suficientemente significativas como para que TLS 1.0 y SSL 3.0 no interoperen»

Pero la reducción a SSL 3.0 seguía siendo peligrosa, dadas sus vulnerabilidades conocidas y explotables. Todo lo que un atacante tenía que hacer para atacar un sitio web era degradar el protocolo a SSL 3.0. De ahí el nacimiento de los ataques de downgrade. Eso acabó siendo el clavo en el ataúd para TLS 1.0.

TLS 1.1 salió siete años después, en 2006, y fue sustituido por TLS 1.2 en 2008. Eso perjudicó la adopción de TLS 1.1, ya que muchos sitios web simplemente se actualizaron de 1.0 a TLS 1.2. Ahora estamos en TLS 1.3, que se finalizó en 2018 después de 11 años y casi 30 borradores del IETF.

TLS 1.3 introduce mejoras significativas con respecto a sus predecesores y ahora mismo los principales actores de todo internet están presionando para su proliferación. Microsoft, Apple, Google, Mozilla y Cloudflare han anunciado sus planes para dejar de utilizar TLS 1.0 y TLS 1.1 en enero de 2020, por lo que TLS 1.2 y TLS 1.3 son los únicos que pueden utilizarse.

En cualquier caso, hemos estado utilizando TLS durante las últimas dos décadas. En este punto, si todavía estás usando SSL estás años atrás, viviendo metafóricamente en una era desamparada en la que la gente todavía usa líneas telefónicas para marcar en Internet.

Evolución de SSL y TLS

¿Deberías usar SSL o TLS?

Tanto SSL 2.0 como 3.0 han sido desaprobados por la Internet Engineering Task Force, también conocida como IETF, en 2011 y 2015, respectivamente. A lo largo de los años se han descubierto y se siguen descubriendo vulnerabilidades en los protocolos SSL obsoletos (por ejemplo, POODLE, DROWN). La mayoría de los navegadores modernos mostrarán una experiencia de usuario degradada (por ejemplo, línea a través del candado o https en la barra de URL, u otras advertencias de seguridad) cuando se encuentren con un servidor web que utilice los protocolos antiguos. Por estas razones, debería desactivar SSL 2.0 y 3.0 en la configuración de su servidor, y ya que está en ello – siga adelante y desaparezca TLS 1.0 y TLS 1.1, también.
Según una encuesta reciente de WatchGuard, casi el 7% de los 100.000 sitios web más importantes de Alexa siguen soportando SSL 2.0 y/o SSL 3.0. Así que esos sitios todavía están ahí fuera en abundancia.

Los certificados no son lo mismo que los protocolos

Antes de que alguien empiece a preocuparse por tener que sustituir sus certificados SSL existentes por certificados TLS, es importante tener en cuenta que los certificados no dependen de los protocolos. Es decir, no es necesario utilizar un certificado TLS frente a un certificado SSL. Aunque muchos proveedores tienden a utilizar la frase «Certificado SSL/TLS», puede ser más exacto llamarlos «Certificados para usar con SSL y TLS», ya que los protocolos están determinados por la configuración de su servidor, no por los propios certificados.

Eso también se aplica a la intensidad del cifrado. Muchos certificados anuncian la fuerza del cifrado, pero realmente son las capacidades del servidor y del cliente las que lo determinan. Al principio de cada conexión, se produce un proceso llamado handshake. Durante este proceso, el cliente autentifica el certificado TLS del servidor y ambos deciden un conjunto de cifrado mutuamente compatible. Los conjuntos de cifrado son una colección de algoritmos que funcionan juntos para cifrar de forma segura su conexión con ese sitio web. Cuando se negocia el conjunto de cifrado durante el apretón de manos, es cuando se determina la versión del protocolo y los algoritmos que lo soportan. Su certificado sólo facilita el proceso.

Históricamente ha habido cuatro algoritmos en un conjunto de cifrado:

  • Intercambio de claves
  • Firma digital
  • Autenticación de mensajes
  • Algoritmo de cotejo
  • (Si eso parece un poco en la maleza, no lo será en un segundo cuando hablemos de las diferencias entre SSL y TLS.)

    Por ahora, es probable que sigas viendo los certificados referidos como certificados SSL porque en este momento es el término con el que más gente está familiarizada. Estamos empezando a ver un mayor uso del término TLS en toda la industria, y SSL/TLS es un compromiso común hasta que TLS sea más ampliamente aceptado.

    ¿Son SSL y TLS diferentes criptográficamente?

    Sí. La diferencia entre cada versión del protocolo puede no ser enorme, pero si se comparara SSL 2.0 con TLS 1.3 habría un cañón entre ellos. En el fondo, el concepto es el mismo en cada versión. Lo que difiere es la forma en que los distintos protocolos llevan a cabo la tarea de cifrar las conexiones.

    Cada nueva versión del protocolo vino y vendrá con sus propias mejoras y/o características nuevas/descartadas. La versión 1 de SSL nunca fue lanzada, la versión 2 sí, pero tenía algunos fallos importantes, la versión 3 de SSL fue una reescritura de la versión 2 (para arreglar estos fallos – con un éxito limitado) y la versión 1 de TLS una mejora de la versión 3 de SSL. Entre TLS 1.0 y 1.1, los cambios fueron menores. TLS 1.2 trajo algunos cambios significativos y TLS 1.3 ha refinado y racionalizado todo el proceso.

    Cabe destacar aquí que SSL y TLS se refieren simplemente al apretón de manos que tiene lugar entre un cliente y un servidor. El handshake no realiza ningún tipo de cifrado en sí mismo, sólo acuerda un secreto compartido y el tipo de cifrado que se va a utilizar. Un handshake SSL utiliza un puerto para realizar sus conexiones. Esto se llama una conexión explícita. El puerto 443 es el puerto estándar para HTTPS, pero hay 65.535 puertos en total – con sólo unos pocos dedicados a una función específica.

    TLS, por el contrario, comienza sus conexiones a través del protocolo. Esto se llama una conexión implícita. El primer paso del apretón de manos -el acto que lo inicia- se llama hola del cliente. Con TLS esto se envía a través de un canal inseguro y la conexión cambia al puerto 443 (o el puerto que haya designado) una vez que el apretón de manos ha comenzado.

    Tradicionalmente, el apretón de manos ha implicado varios viajes de ida y vuelta a medida que la autenticación y el intercambio de claves tienen lugar. Con SSL, esto añadía latencia a las conexiones. De ahí surgió el mito de que SSL/HTTPS ralentiza el sitio web. Cada nueva iteración del protocolo ha trabajado para reducir la latencia añadida por el handshake. Para TLS 1.2, se demostró que HTTPS era realmente MÁS RÁPIDO que HTTP debido a su compatibilidad con HTTP/2.

    TLS 1.3 ha perfeccionado aún más el handshake. Ahora se puede realizar con un solo viaje de ida y vuelta y permite la reanudación de cero viajes de ida y vuelta (0-RTT). Parte de la forma en que se hizo fue reduciendo el número de suites de cifrado que soporta, de cuatro algoritmos a dos.

    Ahora es simplemente un algoritmo de cifrado masivo (simétrico/sesión) y un algoritmo de hash. Se han eliminado las negociaciones de intercambio de claves y de firma digital. El intercambio de claves se realiza ahora utilizando una familia Diffie-Hellman, que permite el secreto perfecto por defecto y permite al cliente y al servidor proporcionar su parte del secreto compartido en su primera interacción. Esa primera interacción también está ahora encriptada, cerrando la puerta a un posible vector de ataque.

    Para obtener más información sobre las nuevas funciones lanzadas en TLS 1.3, visite el blog de Cloudflare.

    Desactivación de SSL 2.0 y 3.0 y TLS 1.0

    Si no está seguro de si sus servidores siguen siendo compatibles con los protocolos SSL, puede comprobarlo fácilmente utilizando nuestra prueba de servidores SSL. Para obtener instrucciones sobre cómo desactivar SSL 2.0 y 3.0 en tipos de servidores populares, incluidos Apache, NGINX y Tomcat, consulte nuestro artículo de soporte relacionado. Si todavía necesita desactivar TLS 1.0, también podemos ayudarle con eso.

    Entonces, ¿cuál es la diferencia entre SSL y TLS? En una conversación educada, no mucho – y mucha gente sigue utilizando los términos SSL y TLS indistintamente. Sin embargo, en términos de configuración de su servidor, hay algunas diferencias arquitectónicas y funcionales importantes. Y esas diferencias son el espacio entre las vulnerabilidades, los conjuntos de cifrado obsoletos, las advertencias de seguridad de los navegadores… y un servidor seguro. Cuando se trata de sus servidores, sólo debería tener habilitados los protocolos TLS.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *