Descargar

Protocolo TLS (Transport Layer Security) (página 2)

Enviado por Carlos Erazo


Partes: 1, 2

Esquema de operación del protocolo de mutuo acuerdo (TLS Handshake Protocol)

edu.red

La comunicación entre los nodos CLIENTE y SERVIDOR está basada en el intercambio de mensajes. En cada mensaje existe un campo (content_type) donde se especifica el protocolo de nivel superior utilizado. Estos mensajes puede ser comprimidos, cifrados y empaquetados con un código de autentificación del mensaje (MAC).

En el inicio de un conexión el nivel de mensaje encapsula un protocolo handshake (content_type=22), enviándose diferentes mensajes:

  • El cliente inicia la comunicación enviando un mensaje "Client Hello" dónde especifica una lista de conjunto de cifrados, métodos de compresión y la versión del protocolo SSL más alta permitida. A la vez envía una serie de bytes aleatorios (Challenge de Cliente o Reto) que después serán usados. Adicionalmente puede enviar el identificador de la sesión.

edu.red

  • El servidor responde con un mensaje "Server Hello" donde se indican los parámetros elegidos por el servidor a partir de las opciones ofertadas por el cliente.

edu.red

  • Una vez establecidos los parámetros de la conexión, cliente y servidor intercambian los certificados, según las claves públicas de cifrado seleccionadas. Actualmente son certificados X.509, pero existe un borrador en el que se especifica el uso de certificados basados en OpenPGP.

edu.red

edu.red

  • Si la conexión tiene que ser mutuamente certificada el servidor pide un certificado al cliente y éste se la enviaría.

edu.red

  • El cliente verifica la autenticidad del servidor.

edu.red

edu.red

  • Cliente y servidor negocian una clave secreta común (master secret), que puede derivarse de un intercambio Diffie-Hellman, o utilizando la clave privada de cada uno para cifrar una clave pública que servirá para cifrar a la vez la clave secreta. El resto de claves son derivadas a partir de este master secret y los valores aleatorios generados en el cliente y el servidor, que son pasados a través una función pseudo-aleatoria.

edu.red

edu.red

edu.red

  • Cliente y servidor aplican los parámetros negociados

edu.red

edu.red

edu.red

edu.red

APLICACIONES DEL PROTOCOLO TLS

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 electronic, 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.

MEDIAS 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.

APLICATIVOS

Para el funcionamiento del protocolo TLS / SSL, a continuación se determinara el aplicativo, para configurar el protocolo de seguridad en servidores Windows, Linux y mediante software; permitiendo crear certificados por el lado del servidor y cliente, realizando una conexión segura en la web.

Sistema Operativo Windows

El Terminal Server utiliza cifrado RDP nativo y no autentica el servidor, para utilizar el protocolo TLS en la autenticación de servidores y el cifrado de las comunicaciones, es preciso configurar correctamente el cliente y el servidor.

  • Deben ejecutarse en Windows Server 2003 con SP1.

  • Es preciso obtener un certificado para el servidor Terminal Server. Para ello, realizamos:

  • Abrimos el Internet Explorer, en el nos conectamos a http:///certsrv, donde se encuentra la entidad emisora de certificados (CA) a que desea tener acceso.

  • Hacer clic en solicitar un certificado.

  • Hacer clic en certificado de usuario y enviar certificado.

  • Escriba la información de su identificación para el certificado y enviar.

  • La pág. Web le mostrará un mensaje de certificado emitido, haga clic en instalar este certificado.

  • En opciones de Internet del servidor habilitar la función usar TLS 1.0

edu.red

Sistema Operativo Linux

Como requisitos antes de implementar el certificado por lado del servidor se requiere disponer de una IP pública para cada sitio de la red virtual con soporte SSL/TLS.

  • Si se utiliza CentOS o White Box Enterprise Linux, se ejecuta el siguiente comando:

yum –y install mod_ssl

  • Si se utiliza Red Hat, se ejecuta el comando:

up2date –i mod_ssl

  • Para nuestro caso utilizaremos Linux CentOs 4

edu.red

  • Debemos crear el directorio donde se almacenarán los certificados, el directorio por motivos de seguridad debe ser accesible para el usuario root únicamente, para ello digitamos.

edu.red

  • Crear un directorio para almacenar los certificados de cada sitio.

edu.red

  • Accedemos al directorio creado

edu.red

  • Generamos la clave y certificado digital de seguridad con el algoritmo RSA de 1024 octetos y estructura x509, la cual se cifra utilizando Triple DES, almacenando en formato PEM.

edu.red

  • Se han creado cinco ficheros comprimidos, que se utiliza aleatoriamente mejorando la seguridad de la clave creada (server.key).

edu.red

  • Se crea un fichero de petición CSR "Certificate Signing Request" que se hace llegar a una RA "Registration Authority o Autoridad de Registro", como ejemplo Verisign, quien después del correspondiente pago, envían de vuelta un certificado (server.crt) firmado por dicha autoridad.

edu.red

  • Lo anteriormente ejecutado solicita diferentes datos como: código de país, estado o provincia, ciudad, nombre de la empresa, unidad, anfitrión, dirección de correo electrónico y opcionalmente se puede añadir otra clave de acceso y una vez más el nombre de la empresa.

  • Si no se desea un certificado por una RA, se puede generar un certificado propio utilizando el fichero de petición CSR que establece una validez por 730 días o dos años.

edu.red

Software Stunnel 4.26

Stunnel es el software que el grupo de trabajo GTI-SMAIL que ha seleccionado para incorporar la funcionalidad TLS en los servidores de los protocolos POP e IMAP. Este software actúa como un filtro colocado entre el cliente y el servidor, acepta conexiones TLS desde un cliente con negociación directa, y después de descifrar la información recibida la pasa al servidor destino.

Este software establece la negociación TLS directa, puede utilizarse para establecer el canal seguro con el cliente, uando los clientes incorporen la negociación definida en el RFC 2595 ya no será necesario.

edu.red

Como este software establece negociación TLS directa, puede utilizarse para establecer el canal seguro con el cliente. Cuando los clientes incorporen la negociación definida en el RFC 2595 ya no será necesario.

  • Descarga del software de la pág.

http://www.stunnel.org/download/binaries.html

edu.red

  • Instalación del software.

edu.red

  • Hacemos click en I Agree; para iniciar la instalación.

edu.red

  • Hacemos click en Next; determinando los componentes a instalar.

edu.red

  • Determinamos la extensión del directorio donde se va instalar el software.

  • Damos click en Install; para iniciar la instalación.

edu.red

  • Hacemos click en Close; para finalizar la instalación.

edu.red

  • Vamos a Inicio/Programas/stunnel

  • Ejecutamos Run stunnel

edu.red

  • Stunnel se encuentra en funcionamiento el en computador para establecer una comunicación segura entre el cliente y el servidor.

edu.red

  • Se presenta la versión, la utilización de OpenSSL, fecha actual, hora, motor SSL, determina el número de clientes, etc.

CONCLUSIONES

  • El protocolo TLS está basado en SSL y son muy similares en su forma de operar, encriptando la comunicación entre el servidor y cliente mediante el uso de algoritmos.

  • La seguridad es un aspecto fundamental para muchas aplicaciones cliente-servidor, siendo un ejemplo muy importante, por su gran proyección en los últimos tiempos, el negocio electrónico.

  • Mediante el uso de SSL/TLS se ha conseguido aumentar el grado de seguridad en dichas conexiones cliente-servidor, teniendo presente que la idea de "seguridad total" es una utopía.

  • La aplicación y el uso del protocolo TLS junto con otras técnicas de encriptación como IPSec, cifrado RPC, etc, nos ayudan a mantener la confidencialidad e integridad de los datos durante la comunicación, protegiendo así datos confidenciales como números de tarjetas de crédito en las diferentes transacciones de comercio electrónico, envío de información privada, en una intranet o a través de Internet, de una organización, etc.

  • Aunque no hay que olvidar que los ataques pueden ser múltiples y cada vez más sofisticados, lo que obliga a una permanente investigación de mejora de los diferentes protocolos de seguridad, se puede decir que un uso correcto de estos protocolos nos proporciona hoy en día un nivel de seguridad "bastante aceptable".

  • TLS aplica un algoritmo de hash con claves para el código de autenticación de mensajes (HMAC), mientras que SSL aplica un algoritmo de código de autenticación de mensajes (MAC).

  • HTTP no es un protocolo seguro, ya que es simple y no se establece un estado cliente/servidor. Ejecuta sobre TCP/IP. Por esta razón es necesario instrumentar medidas de seguridad mediante de la aplicación del protocolo TLS

  • HTTP, es una de las aplicaciones más comunes del protocolo TLS con la cual se genera el HTTPS. Esta implementación requiere de servidores Web y navegadores Web que soporten el protocolo TLS. Ejemplo de estos tenemos:

  • Netscape

  • Internet Explorer

  • Cryptozilla

  • Netscape Mozilla sources with SSLeay

BIBLIOGRAFÍA

 

 

 

 

 

 

Autor:

Carlos Erazo

Marzo / 2009

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente