SSL/TLS

¿Qué es el protocolo TLS / SSL?

1. ¿Qué es SSL, TLS y HTTPS?

SSL (Secure Socket Layer) y TLS (Transport Layer Security) son protocolos criptográficos populares que se utilizan para imbuir las comunicaciones web con integridad, seguridad y resistencia contra la manipulación no autorizada. PKI utiliza el protocolo TLS para establecer conexiones seguras entre clientes y servidores a través de Internet, lo que garantiza que la información transmitida esté encriptada y no pueda ser leída por un tercero externo.

Nota:  SSL fue el predecesor de TLS, y el mundo comenzó a alejarse de SSL una vez que se introdujo TLS en 1999, gracias a las características de seguridad mejoradas de este último. TLS se encuentra actualmente en su tercera iteración y se llama TLS 1.3. Sin embargo, SSL continúa usándose como metonimia para ambos protocolos en general (por ejemplo, la palabra ‘certificado SSL’ se usa ampliamente, pero SSL ha quedado completamente obsoleto y los sistemas modernos ya no admiten SSL).

Las conexiones que están protegidas por TLS indicarán su estado seguro mostrando HTTPS (Protocolo seguro de transferencia de hipertexto) en la barra de direcciones de los navegadores web, en lugar de solo HTTP.

Si bien TLS se usa principalmente para proteger la conexión cliente-servidor, también se usa para proteger correos electrónicos, llamadas VoIP y otras conexiones.

1.1. ¿Por qué son necesarios?

En teoría, las conexiones web son completamente posibles sin TLS para asegurarlas. Sin embargo, sin un protocolo de seguridad, la comunicación quedaría completamente abierta al acceso externo. Si un navegador se conecta al sitio web de una tienda en línea y un usuario tiene que ingresar sus credenciales para iniciar sesión, una parte observadora podría retirarlas fácilmente.

TLS, en su esencia, sirve para proporcionar cifrado de extremo a extremo para todos los datos transmitidos de un punto a otro, y utiliza criptografía para garantizar que solo los dos organismos que realizan transacciones sean capaces de leer esta información. Todos los servicios del mundo exigen ahora que las conexiones sean seguras mediante TLS; los navegadores líderes no permiten a los usuarios acceder a sitios web sin una conexión TLS válida.

TLS tiene los siguientes beneficios:

  • El contenido de la conexión permanece cifrado, privado y completamente seguro, y no puede ser descifrado fácilmente por actores malintencionados.
  • La conexión solo se realiza si es confiable; esta verificación de confiabilidad es parte de las comunicaciones TLS y se aplica mediante el intercambio de un código de autenticación de mensajes.
  • El uso de certificados PKI y TLS asegura que se verifiquen las identidades de ambas partes comunicantes.

2. ¿Cómo funciona SSL / TLS?

2.1. El apretón de manos de TLS

Cuando dos sistemas que aprovechan TLS intentan conectarse, cada sistema hará un esfuerzo por verificar que el otro sea compatible con TLS. Este proceso se denomina protocolo de enlace TLS, y es aquí donde ambas partes deciden la versión TLS, el algoritmo de cifrado, el conjunto de cifrado, etc. que se utilizarán en el procedimiento. Una vez que se ha ejecutado con éxito un protocolo de enlace TLS, ambos sistemas comienzan a intercambiar datos en una línea segura.

Nota:  Un conocimiento práctico de PKI y sus componentes, como las claves, puede resultar útil antes de comprender TLS. Puede leer más sobre esto en el enlace de arriba. Por ahora, todo lo que necesita saber es que el cifrado y el descifrado se llevan a cabo con la ayuda de dispositivos criptográficos llamados claves. En la criptografía de clave pública, las claves públicas se utilizan para cifrar información, mientras que las claves privadas secretas se pueden utilizar para descifrar esa información. Dado que se trata de dos claves diferentes, esta técnica se denomina “criptografía asimétrica”, en contraposición a la “criptografía simétrica”, en la que una sola clave puede realizar tanto el cifrado como el descifrado. Más sobre esto a continuación.

Cada protocolo de enlace de TLS sigue los mismos pasos básicos. En aras de la simplicidad, supongamos que un navegador (un cliente) está intentando conectarse a un servidor, que aloja un sitio web:

  • El cliente solicita al servidor que abra una línea segura y el servidor responde mostrando una lista de versiones de TLS y conjuntos de cifrado con los que es compatible. Una vez que acuerdan los comunes para usar en la transacción, comienzan el apretón de manos.
  • El servidor envía una copia de su clave pública, adjunta a su certificado digital, al cliente. El cliente verifica el certificado para verificar que el servidor es legítimo y, si lo es, continúa con la transacción.
  • El cliente utiliza la clave pública del servidor y su clave privada para cifrar una ‘clave de sesión’ que es una clave que será utilizada por ambas partes para cifrar y descifrar información en esta sesión en particular. La clave de sesión deja de ser válida tan pronto como finaliza la conexión.
  • Ambas partes prueban la conexión enviándose mensajes cifrados. Si el otro puede descifrarlos usando la clave de sesión, la conexión se ha asegurado con éxito.

2.2. Cifrado asimétrico frente a simétrico

El ejemplo anterior fue una instancia en la que se utilizó cifrado asimétrico y simétrico para asegurar una conexión.

Se utilizó cifrado asimétrico para crear la clave de sesión. Pero a partir de ese momento, la clave de sesión se utilizó para cifrar y descifrar bilateralmente todo el flujo de información entre ambas partes. Este es el por qué:

El cifrado asimétrico consume muchos recursos matemáticamente. Las operaciones de cifrado-descifrado que involucran dos claves de ambas partes tienen un alto costo en la unidad de procesamiento que impulsa este proceso. Si un sistema estuviera configurado para manejar una conexión completa de esta manera, usando una clave pública para encriptar y una clave privada para desencriptarla, probablemente fallaría en los primeros minutos. Es mucho más seguro que su contraparte simétrica, pero no se puede facilitar de manera eficiente.

Sin embargo, el cifrado simétrico, que utiliza una única clave compartida para cifrar y descifrar, no requiere tantos recursos. Esta es precisamente la razón por la que el cifrado asimétrico se usa para establecer un enlace seguro entre dos partes y se usa para generar la clave de sesión que, en teoría, solo esas dos partes pueden conocer. Ahora, el cifrado simétrico se puede utilizar para asegurar la conexión, dada la capa adicional de seguridad que se le agregó en el primer paso.

3. ¿Certificados SSL / TLS?

3.1. ¿Qué son los certificados SSL / TLS?

Los certificados digitales se mencionaron anteriormente en este artículo. En general, los certificados digitales son documentos digitales que están ‘firmados’ por autoridades confiables y actúan como documentos de propiedad de una clave pública. Por extensión, sirven para validar la legitimidad de un servidor o un cliente. Sin embargo, existen varios tipos de certificados digitales disponibles. El término ‘certificados x.509’ se utiliza para diferenciar los certificados SSL / TLS de otros tipos de certificados digitales (certificados de firma de código, por ejemplo).

Echemos un vistazo a por qué son necesarios.

Como dejó en claro la sección anterior, los certificados digitales son piezas importantes en el dominio de la criptografía de clave pública. Se adjuntan a las claves públicas y son prueba de que el titular de la clave pública es en realidad el propietario legítimo. Esto se debe a que los certificados digitales son firmados, vendidos y emitidos por organismos llamados ‘Autoridades de certificación’ (o CA, para abreviar), que son organismos de confianza responsables de verificar la autenticidad de cualquier persona que solicite un certificado. Dado que los principales sistemas operativos y navegadores tienen ‘almacenes de confianza’ que constan de estas CA incorporadas, los navegadores confiarán automáticamente en los certificados emitidos por las principales CA.

Los certificados son clave para que los usuarios puedan reconocer fácilmente los sitios web como una página segura y de confianza. Las páginas web con certificados SSL / TLS válidos instalados tendrán ‘https’ antes del nombre del sitio web en la barra de búsqueda, dado que el certificado se ha instalado correctamente. En algunos navegadores, el uso de certificados de validación extendida válidos (un tipo de certificado TLS) hará que el candado HTTPS se vuelva verde, brindando a los visitantes una garantía adicional de que están en un sitio web legítimo, así:

Nota:  Los certificados emitidos por las CA que se utilizan para proteger las conexiones web que utilizan TLS se denominan certificados TLS; este término se utiliza indistintamente con ‘certificados SSL’ debido a que el término se acuñó cuando SSL estaba en uso corriente.