martes, 1 de febrero de 2011

Analizando SSL ( II de III): Aplicaciones y Estructura

Aplicaciones

SSL/TLS se ejecutan en una capa por debajo los protocolos de aplicación como HTTP, SMTP, NNTP y sobre el protocolo de transporte TCP, que forma parte de la familia de protocolos TCP/IP. Es importante señalar que ambos protocolos se ejecutan sobre una capa de transporte definida, pero no determinada. Esto indica que pueden ser utilizados para cualquier tipo de comunicaciones. La capa de transporte más usada es TCP sobre la cual pueden implementar seguridad en HTTP, conocida como HTTPS.
SSL también puede ser usado para tunelizar una red completa y crear una red privada virtual (VPN), como en el caso de OpenVPN.
Como punto de diferencia se puede mencionar que existen protocolos implementados sobre la capa de red, por ejemplo sobre IP. Tal es el caso de IPSec.

¿ De que están compuestos ?

El protocolo SSL/TLS se basa en un modelo de 2 capas implementado por registros:


Una capa que se situa por encima de TCP , el Record Protocol o Protocolo de Registro
La otra capa inmediatamente superior, es la capa de los protocolos que proporcionan mensajes TLS válidos: Handshake, Alert, ChangecipherSpec y los específicos de Aplicación.

Fig 1. Componentes del protocolo SSL/TLS

Como vemos, TLS usa la capa Record Protocol para recibir los mensajes de las cuatro diferentes  fuentes  que pueden crear mensajes TLS: El protocolo ChangeCipherSpec, el protocolo Alert, el Handshake y el protocolo de Aplicación como por ejemplo, http (https). La capa de registro acepta esos mensajes de protocolo y entonces los formatea,  fragmenta y opcionalmente, comprime y cifra (dependiendo de las necesidades del protocolo superior)

Fig 2. Record Protocol.  Encapsulado de mensajes por la capa de Registro.

Mientras los Protocolos de Handshake se encargan de negociar los parámetros de seguridad, es en la capa de Registro donde se realizan las operaciones de fagmentado , compresión y  cifrado que aseguran los datos. El Prototocolo  Change Cipher Spec es enviado por ambos, el cliente y servidor para notificar la política de recepción de los subsiguientes registros los cuales estarán protegidos bajo la nueva negociación del CipherSpec y las claves. El Alert Protocol se usa para notificar errores  y dependiendo de la criticidad puede hacer finalizar la conexión. Los mensajes de datos de aplicación son entregados por el protocolo de Aplicación que la capa de Registro  fragmenta, comprime y cifra , llevándolos a la capa de transporte.

Formato detallado de los Registros TLS

Cada registro tiene un campo de un 1 byte usado para content_type (ver protocol en Fig 2) que especifica el protocolo de nivel superior que se está encapsulando.

Figura 3. Formato genérico de un registro SSL/TLS

Tipos:

Como vemos en la Figura 3  el registro genérico de protocolo SSL/TLS define los 4 posibles valores mediante el campo content_type : 20,21,22 y 23

El tipo Handshake (content_type=22) es el que se usa en el trasiego del establecimiento de la conexión cliente-servidor y donde se negocian las especificaciones de cifrado, certificados, intercambio de claves ,etc que gobernarán la comunicación TLS y que se definen en el campo "Message type" (ver Fig 3).  tipos content_type=20 ( ChangeCipherSpec) y content_type=21 (Alert)   se usarán para cambiar el cifrado en uso o para manejo de errores (por ejemplo cuando el certificado no es de confianza). Una vez de acuerdo cliente y servidor se inicia el intercambio de datos cifrado con registros de content_type =23 (Aplication).

Figura 3:  Handshake TLS . Obsérvese los diferentes Message Types


En la siguiente entrega veremos el funcionamiento del protocolo TLS




1 comentario: