Si quieres tener una conversación confidencial con alguien que conoces, podrías reunirte con él o ella en persona y encontrar un lugar privado para hablar.

Pero si quieres enviar datos de forma confidencial por internet, quizás debas cubrir estas consideraciones adicionales.

TLS o Seguridad de Capa de Transporte, se refiere a un protocolo. "Protocolo" es una palabra que significa, "la forma en la que acordamos hacer las cosas por aquí", más o menos.

La parte de "capa de transporte" simplemente se refiere a la comunicación host-to-host, como la forma en que interactúan un servidor y un cliente, en la familia de protocolos de Internet.

El protocolo TLS intenta resolver estos problemas fundamentales:

  • ¿Cómo aseguro que tú eres quien dices ser?
  • ¿Cómo aseguro que este mensaje que viene de ti, no ha sido manipulado?
  • ¿Cómo podemos comunicarnos de forma segura?

A continuación, veremos como funciona TLS, explicado en español sencillo. Como en todas las interacciones exitosas, todo inicia con un "handshake".

Conociéndote

El proceso básico de TLS handshake involucra un cliente, como puede ser tu navegador de internet, y un servidor, como uno de hospedaje web que almacena una página, estableciendo algunas reglas para la comunicación.

Todo empieza cuando el cliente dice hola. Literalmente. Este mensaje es llamado ClientHello.

El ClientHello le dice al servidor cuales versiones del protocolo TLS y suite de cifrado soporta.

Aunque "suite de cifrado" suena como una mejora en un hotel de lujo, en realidad se refiera a un set de algoritmos que pueden ser utilizados para asegurar las comunicaciones.

El servidor, en un mensaje llamado ServerHello, elije cuál de las versiones de protocolo y suite de cifrado de las ofrecidas por el cliente usará. Algunos datos adicionales podrían ser enviados, por ejemplo, el ID de la sesión, si es que el servidor soporta restablecimiento de "handshake" anterior.

imagen-14
Caricatura de una ventana de navegador saludando, por Victoria Drake

Dependiendo de la suite de cifrado elegido, el cliente y el servidor intercambian información adicional para establecer un secreto compartido.

Frecuentemente, este proceso se mueve del intercambio de criptografía asimétrica a criptografía simétrica, con diferentes niveles de complejidad. Exploremos estos conceptos a nivel general y verás porque importan para TLS.

Inicio Asimétrico

Esto es asimetría:

imagen-15
huevo pequeño, huevo grande.

La criptografía asimétrica es un método por el cual puedes realizar autentificación. Cuando te autentificas, tu respondes a la pregunta fundamental, "¿Cómo sé que tu eres quien dices ser?"

En un sistema criptográfico asimétrico, utilizas un par de llaves para lograr la autentificación. Estas llaves son asimétricas. Una es tu llave pública, la cual, como pudiste imaginar, es pública. La otra es tu llave privada, la cual - bueno, tu sabes.

Típicamente, durante el "handshake" de TLS, el servidor proveerá su llave pública por medio de su certificado digital, algunas veces llamado certificado SSL, aunque en realidad TLS reemplaza el protocolo obsoleto Secure Sockets Layer (SSL).

Los certificados digitales son proporcionados y verificados por un tercero confiable, conocidos como Certificate Authorities (CA), los cuales requerirían otro artículo completo.

Mientras cualquiera puede encriptar un mensaje utilizando tu llave pública, solo tu llave privada puede descifrar ese mensaje.

La seguridad de la criptografía asimétrica se basa solo en que tu llave privada se mantiene privada, por eso la asimetría.

También es asimétrica en el sentido que es solo viaje de un solo sentido. Alicia te puede enviar mensajes encriptados con tu llave pública, pero ninguna de tus llaves te servirá para enviar un menaje encriptado a Alicia.

Secretos de Asimetría

La criptografía asimétrica requiere mas recursos computacionales que la criptografía simétrica.

Por ello cuando el TLS handshake inicia con un intercambio asimétrico, el cliente y el servidor usará esta comunicación inicial para establecer un secreto compartido, algunas veces llamada llave de sesión. Esta llave es simétrica, significa que ambos extremos usan el mismo secreto compartido y deben mantener este secreto para que la encriptación sea segura.

imagen-16
Una persona sabia dice: comparte tu llave pública, pero mantén privadas las llaves compartidas.

‌Utilizando inicialmente la comunicación asimétrica para establecer la llave de sesión, el cliente y el servidor pueden confiar en que la llave de sesión sea conocida solo por ellos dos. Para el resto de la sesión, ellos utilizan esta misma llave compartida para encriptar y descifrar los menajes, lo cual agiliza la comunicación.

Sesiones seguras

El TLS handshake  puede utilizar criptografía asimétrica u otra suite de cifrado para establecer la llave de sesión compartida. Una vez que esta llave de sesión es establecida, la parte del "handshake" esta completada y la sesión inicia.

La sesión es la duración de la comunicación encriptada entre el cliente y el servidor. Durante este tiempo, los mensajes son encriptados y descifrados utilizando la llave de sesión que solo el cliente y el servidor tienen. Esto asegura que la comunicación es segura.

La integridad de la información intercambiada es mantenida utilizando una comprobación (checksum). Los mensajes intercambiados utilizando la llave de sesión llevan adjunto un código de autentificación de mensaje (MAC). El MAC es generado y verificado utilizando la llave de sesión.

Debido a esto, cualquiera de los dos puede detectar si el mensaje ha sido cambiado antes de recibirlo. Esto resuelve la pregunta fundamental, "¿Cómo aseguro que el mensaje que enviaste no ha sido manipulado?"

Las sesiones pueden terminar deliberadamente, podría ser debido a una desconexión de red, o porque el cliente no interactúa por mucho tiempo. Una vez que termina la sesión, para continuar la comunicación, ésta deberá ser reestablecida por medio de un nuevo "handshake" o por medio de la sesión previamente establecida llamada ID de sesión, que permite continuar la sesión anterior.

TLS y tu

Resumiendo:

  • TLS es un protocolo criptográfico para proveer comunicación segura.
  • El proceso de crear una conexión segura inicia con un "handshake".
  • Después del "handshake", se establece la llave de sesión compartida, que será utilizada para asegurar los mensajes y proveer integridad a los mismos.
  • Las sesiones son temporales, y una vez terminadas, se deben reestablecer o resumir.

Este es solo solo un desnatado a nivel de superficie, de un muy complejo sistema criptográfico que ayuda a mantener las comunicaciones seguras. Para adentrarse más en este tópico, recomiendo explorar las suites de cifrado y los algoritmos soportados.

El protocolo TLS sirve para un propócito muy importante en tu vida diaria. Ayuda a asegurar los correos de tu familia, tus actividades bancarias en línea y la conexión por la cual estas leyendo este artículo.

El protocolo de comunicación HTTPS es encriptado utilizando TLS. Cada vez que vez ese pequeño candado en la barra de dirección de tu navegador, estas experimentando de primera mano todos los conceptos que acabas de leer en este artículo.

Entonces ahora tú sabes la respuesta a la última pregunta: "¿Cómo puedo comunicarme de forma segura?"

Traducido del artículo de Victoria Drake - What is TLS? Transport Layer Security Encryption Explained in Plain English