TLS

TLS
Información sobre la plantilla
TLS Diagram.jpg
Concepto:El protocolo TLS (Transport Layer Security) es una evolución del protocolo SSL (Secure Sockets Layer)

Protocolo TLS (Transport Layer Security. Es un protocolo mediante el cual se establece una conexión segura por medio de un canal cifrado entre el cliente y servidor. Así el intercambio de información se realiza en un entorno seguro y libre de ataques. La última propuesta de estándar está documentada en la referencia RFC 2246.

Normalmente el servidor es el único que es autenticado, garantizando así su identidad, pero el cliente se mantiene sin autenticar, ya que para la autenticación mutua se necesita una infraestructura de claves públicas (o PKI) para los clientes. Estos protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación de la identidad del remitente y mantener la integridad del mensaje en una aplicación cliente-servidor.

Descripción del Protocolo

El protocolo SSL/TSL se basa en tres fases básicas:

  • Negociación: Los dos extremos de la comunicación (cliente y servidor) negocian que algoritmos criptográficos utilizarán para autenticarse y cifrar la información. Actualmente existen diferentes opciones:
  • Para criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm).
  • Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced Encryption Standard).
  • Con funciones hash: MD5 o de la familia SHA.
  • Autenticación y Claves: Los extremos se autentican mediante certificados digitales e intercambian las claves para el cifrado, según la negociación.
  • Transmisión Segura: los extremos pueden iniciar el tráfico de información cifrada y auténtica.

Objetivos del Protocolo

  • Seguridad criptográfica. El protocolo se debe emplear para establecer una conexión segura entre dos partes.
  • Interoperabilidad. Aplicaciones distintas deben poder intercambiar parámetros criptográficos sin necesidad de que ninguna de las dos conozca el código de la otra.
  • Extensibilidad. El protocolo permite la incorporación de nuevos algoritmos criptográficos.
  • Eficiencia. Los algoritmos criptográficos son costosos computacionalmente, por lo que el protocolo incluye un esquema de cache de sesiones para reducir el número de sesiones que deben inicializarse desde cero (usando criptografía de clave pública).

Funcionamiento del Protocolo

El protocolo está dividido en dos niveles:

  • Protocolo de registro TLS (TLS Record Protocol).
  • Protocolo de mutuo acuerdo TLS (TLS Handshake Protocol).

El de más bajo nivel es el Protocolo de Registro, que se implementa sobre un protocolo de transporte fiable como el TCP. El protocolo proporciona seguridad en la conexión con dos propiedades fundamentales:

  • La conexión es privada. Para encriptar los datos se usan algoritmos de cifrado simétrico. Las claves se generan para cada conexión y se basan en un secreto negociado por otro protocolo (como el de mutuo acuerdo). El protocolo también se puede usar sin encriptación.
  • La conexión es fiable. El transporte de mensajes incluye una verificación de integridad.

El Protocolo de mutuo acuerdo, proporciona seguridad en la conexión con tres propiedades básicas:

  • La identidad del interlocutor puede ser autentificada usando criptografía de clave pública. Esta autentificación puede ser opcional, pero generalmente es necesaria al menos para uno de los interlocutores.
  • La negociación de un secreto compartido es segura.
  • La negociación es fiable, nadie puede modificar la negociación sin ser detectado por los interlocutores.

Aplicaciones

El protocolo SSL/TLS tiene multitud de aplicaciones en uso actualmente. La mayoría de ellas son versiones seguras de programas que emplean protocolos que no lo son. Hay versiones seguras de servidores y clientes de protocolos como el http, nntp, ldap, imap, pop3, etc. El protocolo SSL/TLS se ejecuta en una capa entre los protocolos de aplicación como:

  • HTTP sobre SSL/TLS es HTTPS, ofreciendo seguridad a páginas WWW para aplicaciones de comercio electrónico, utilizando certificados de clave pública para verificar la identidad de los extremos. Visa, MasterCard, American Express y muchas de las principales instituciones financieras han aprobado SSL para el comercio sobre Internet.
  • SSH utiliza SSL/TLS por debajo.
  • SMTP y NNTP pueden operar también de manera segura sobre SSL/TLS.
  • POP3 i IMAP4 sobre SSL/TLS son POP3S i IMAPS.

Existen múltiples productos clientes y servidores que pueden proporcionar SSL de forma nativa, pero también existen muchos que aún no lo permiten. una solución podría ser usar una aplicación SSL independiente como Stunnel para conseguir el cifrado, pero IETF recomendó en 1997 que los protocolos de aplicación ofrecieran una forma de actualizar a TLS a partir de una conexión sin cifrado (plaintext) en vez de usar un puerto diferente para cifrar las comunicaciones, evitando el uso de envolturas (wrappers) como Stunnel. SSL también puede ser usado para tunelar una red completa y crear una red privada virtual (VPN), como en el caso de OpenVPN.


Implementaciones del Protocolo TLS

Existen diferentes implementaciones, como por ejemplo:

  • OpenSSL: es una implementación de código abierto, la más utilizada. Es un proyecto desarrollado por la comunidad Open Source para libre descarga y está basado en SSLeay, que ayuda al sistema a implementar el SSL/TLS ofreciéndole un robusto paquete de herramientas de administración y librerías de criptografía que pueden ser usadas para OpenSSH y navegadores web (acceso seguro a HTTPS).
  • GnuTLS: es una implementación de código abierto con licencia compatible con GPL.
  • JSSE: es una implementación realizada en el Java incluida en el Java Runtime Environment.

Estandares y Definiciones RFC del Protocolo TLS

La primera definición de TLS apareció en el RFC 2246: "The TLS Protocol Version 1.0" (El protocolo TLS versión 1.0) y está basada en la versión 3.0 de SSL, siendo prácticamente equivalentes.

  • RFC 2712: Aparecen las familias de cifrados de 40 bits definidas, para advertir que ya han sido asignadas.
  • RFC 2817: Explica cómo usar el mecanismo de actualización en HTTP/1.1 para iniciar TLS sobre una conexión TCP existente, permitiendo al tráfico seguro e inseguro HTTP compartir el mismo puerto.
  • RFC 2818: Diferencia el tráfico seguro e inseguro HTTP usando un puerto de servidor diferente.
  • RFC 3268: Añade la familia de cifrado AES.
  • RFC 3546: Añade un mecanismo para negociar extensiones de protocolos durante la inicialización de sesión y define algunas extensiones.
  • RFC 4279: Añade tres conjuntos de nuevas familias de cifrados para que el protocolo TLS permita la autenticación basada en claves previamente compartidas.

Versionamiento del Protocolo TLS

El protocolo TLS ha evolucionado desde la versión 1.0 hasta la actual versión que es la 1.1. Esta última versión es muy parecida a la versión anterior (TLS 1.0), pero la principal diferencia es la modificación del formato para cifrado RSA anterior al uso de 'master secret', que es parte del mensaje de intercambio de claves del cliente. En TLS 1.0 se usaba la versión 1.5 del estándar RSA para criptografía de clave pública (PCK#1), pasando a usar ahora la versión 2.1. Con este cambio se consigue protección ante ataques descubiertos por Daniel Bleichenbacher que podían lanzarse contra servidores TLS 1.0, usando PKCS#1 versión 1.5. También se incluyen recomendaciones para evitar ataques remotos programados. TLS 1.1 está actualmente implementado en el navegador Opera y en GnuTLS.

Medidas de seguridad del protocolo TLS

  • Numera todos los registros y usa el número de secuencia en MAC.
  • Usa un resumen de mensaje mejorado con una clave (de forma que solo con dicha clave se pueda comprobar el MAC).
  • Protección contra varios ataques conocidos (incluyendo ataques man-in-the-middle), como los que implican un degradado del protocolo a versiones previas (por tanto, menos seguras), o conjuntos de cifrados más débiles.
  • El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los datos intercambiados y vistos por ambas partes.
  • La función pseudo aleatoria divide los datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y SHA), después realiza sobre ellos una operación XOR. De esta forma se protege a sí mismo de la eventualidad de que alguno de estos algoritmos se tornen vulnerables en el futuro.

Fuente