¿Qué es Transport Layer Security (TLS)?
Transport Layer Security, o TLS, es un protocolo de seguridad ampliamente adoptado, diseñado para facilitar la privacidad y la seguridad de los datos en las comunicaciones por Internet. Uno de los principales casos de uso de TLS es la protección de las comunicaciones entre las aplicaciones web y los servidores, como los navegadores web que cargan un sitio web. También se puede utilizar TLS para encriptar otras comunicaciones como el correo electrónico, los mensajes y la voz sobre IP (VoIP). En este artículo nos centraremos en la función que desempeña TLS en la seguridad de las aplicaciones web.
El protocolo TLS lo propuso el Grupo de trabajo de ingeniería de Internet (IETF, por sus siglas en inglés), una organización de normalización internacional, y su primera versión se publicó en 1999. La versión más reciente es TLS 1.2, publicada en 2008. La versión 1.3 está a punto de publicarse y algunas aplicaciones web ya la utilizan.
¿Cuál es la diferencia entre TLS y SSL?
TLS ha evolucionado a partir de un protocolo de seguridad anterior, Secure Sockets Layer (SSL), desarrollado por Netscape. De hecho, el desarrollo de la versión 1.0 de TLS se inició como la versión 3.1 de SSL. Sin embargo, el nombre del protocolo se cambió antes de su publicación, a fin de indicar que ya no estaba vinculado a Netscape. Debido a este pasado en común, a veces los términos TLS y SSL se utilizan indistintamente.
¿En qué se diferencian TLS y HTTPS?
HTTPS indica una implementación de la encriptación TLS sobre el protocolo HTTP, que utilizan todos los sitios web así como otros servicios web. Todos los sitios web que utilizan HTTPS emplean, por tanto, la seguridad TLS.
¿Por qué deberías utilizar TLS?
La encriptación TLS puede ayudarte a proteger tus aplicaciones web contra amenazas como las fugas de datos y los ataques DDoS. Además, la aplicación del protocolo HTTPS protegido por TLS se está convirtiendo rápidamente en una práctica estándar de los sitios web. Por ejemplo, el navegador Google Chrome penaliza a los sitios que no utilizan HTTPS, y los usuarios habituales de Internet también empiezan a desconfiar de los sitios web que no cuentan con el icono del candado HTTPS.
¿Cómo funciona el protocolo TLS?
La seguridad de la capa de transporte se implementa en la capa de aplicación del modelo OSI. Esto significa que se puede utilizar sobre un protocolo Transport Layer Security como TCP. TLS tiene tres componentes principales: la encriptación, la autenticación y la integridad.
- Encriptación: oculta los datos que se transfieren a terceras partes.
- Autenticación: garantiza que las partes que intercambian información sean quienes afirman ser.
- Integridad: verifica que los datos no han sido falsificados o alterados.
Una conexión TLS se inicia mediante una secuencia que se conoce como el protocolo de enlace TLS. El protocolo de enlace TLS comienza con un intercambio SYN/SYN ACK/ACK similar al utilizado en TCP, y luego establece un conjunto de cifrado para cada comunicación. El conjunto de cifrado es un conjunto de algoritmos que especifica detalles tales como qué clave de encriptación compartida se utilizará para esa sesión específica. TLS puede asignar las claves de encriptación correspondientes a través de un canal no encriptado gracias a la tecnología que se conoce como criptografía de clave pública. El protocolo de enlace también se encarga de la autenticación, que normalmente consiste en que el servidor demuestre su identidad al cliente. Este proceso se lleva a cabo mediante claves públicas. Las claves públicas son claves de encriptación que utilizan la encriptación unidireccional. Esto significa que la clave puede ser descodificada por cualquier persona para comprobar su autenticidad, pero solo el remitente original puede generarla.
Una vez que los datos se han encriptado y autenticado, se firman con un código de autenticación de mensajes (MAC). El destinatario pueden entonces verificar el MAC para asegurarse de la integridad de los datos. Puede compararse con el cierre de garantía de un jarabe; el consumidor sabe que nadie ha abierto la medicina porque el cierre está intacto cuando lo compra.
¿Cómo afecta el protocolo TLS al rendimiento de las aplicaciones web?
Dada la complejidad del proceso necesario para establecer una conexión TLS, esta conlleva algún tiempo de carga y cierta potencia computacional. Para la transmisión de datos, el cliente y el servidor deben primero comunicarse entre ellos varias veces, y esto consume valiosos milisegundos de tiempo de carga de las aplicaciones web, así como cierta cantidad de memoria del cliente y del servidor.
Afortunadamente, algunas tecnologías existentes permiten mitigar la latencia generada por el protocolo de enlace TLS. Entre ellas, una es TLS False Start, que permite que el servidor y el cliente empiecen a transmitir datos antes de que se complete el protocolo de enlace TLS. La reanudación de la sesión TLS o TLS Session Resumption es otra tecnología para la aceleración de TLS. Permite que los clientes y los servidores que ya se hayan comunicado previamente utilicen un protocolo de enlace abreviado.
Estas mejoras han contribuido a que el protocolo TLS sea muy rápido, de forma que no debería afectar a los tiempos de carga de manera significativa. En cuanto a los costes computacionales asociados al protocolo TLS, son casi insignificantes con respecto a los estándares actuales. Por ejemplo, cuando Google migró toda su plataforma Gmail a HTTPS en 2010, no necesitó activar ningún hardware complementario. La carga adicional en sus servidores como resultado de la encriptación TLS fue inferior al 1 %.