PROTOCOLO SSL
En la actualidad, los ordenadores de la mayoría de usuarios
sólo investigan un nive de jerarquía de certificación.
Si su navegador WEB está conectado a un servidor con capacidades
Secure Sockets Layer (SSL), el servidor establecerá su identidad
expidiendo una copia de su clave pública encuadrada en un
certificado.
Lo más probable es que el certificado haya sido emitido
por VeriSign , uno de los principales proveedores de certificados
para servidores WEB que utilizan SSL para cifrar los datos que discurren
entre el servidor y el navegador.
El navegador validará el certificado de VeriSign verificando
su firma
SECURE SOCKET LAYER (SSL)
El protocolo SSL fue desarrollado por Netscape para permitir confidencialidad
y autenticación en Internet. SSL opera como una capa adicional
entre Internet y las aplicaciones, esto permite que el protocolo
sea independiente de la aplicación, siendo posible utilizar
FTP, Telnet y otras aplicaciones además de HTTP.
Para establecer una comunicación segura utilizando SSL se
tienen que se guir una serie de pasos. Primero se debe hacer una
solicitud de seguridad. Después de haberla hecho, se deben
establecer los parámetros que se utilizarán para SSL.
Esta parte se conoce como SSL Handshake. Una vez se haya establecido
una comunicación segura, se deben hacer verificaciones periódicas
para garantizar que la comunicación sigue siendo segura a
medida que se transmiten datos. Luego que la transacción
ha sido completada, se termina SSL.
Solicitud de SSL:
Antes de que se establezca SSL, se debe hacer una solicitud. Típicamente
esto implica un cliente haciéndo una solicitud de un URL
a un servidor que soporte SSL. SSL acepta solicitudes por un puerto
diferente al utilizado normalmente para ese servicio.
Una vez se ha hecho la solicitud, el cliente y el servidor empiezan
a negociar la conexión SSL, es decir, hacen el SSL Handshake.
SSL Handshake:
Durante el hanshake se cumplen varios propósitos. Se hace
autenticación del servidor y opcionalmente del cliente, se
determina que algoritmos de criptografía serán utilizados
y se genera una llave secreta para ser utilizada durante el intercambio
de mensajes subsiguientes durante la comunicación SSL.
Los pasos que se siguen son los siguientes:
Client Hello : El "saludo de cliente" tiene por objetivo
informar al servidor que algoritmos de criptografía puede
utilizar y solicita una verificación de la identidad del
servidor. El cliente envía el conjunto de algoritmos de criptografía
y compresión que soporta y un número aleatorio.. El
propósito del número aleatorio es para que en caso
de que el servidor no posea un certificado para comprobar su identidad,
aún se pueda establecer una comunicación segura utilizando
un conjunto distinto de algoritmos. Dentro de los protocolos de
criptografía hay un protocolo de intercambio de llave que
define como cliente y servidor van a intercambiar la información,
los algoritmos de llave secreta que definen que métodos pueden
utilizar y un algoritmo de hash de una sola vía. Hasta ahora
no se ha intercambiado información secreta, solo una lista
de opciones.
Server Hello : El servidor responde enviando su identificador digital
el cual incluye su llave pública, el conjunto de algoritmos
criptográficos y de compresión y otro número
aleatorio. La decisión de que algorítmos serán
utilizados está basada en el más fuerte que tanto
cliente como servidor soporten. En algunas situaciones el servidor
también puede solicitar al cliente que se identifique solicitando
un identificador digital.
Aprobación del Cliente: El cliente verifica la validez del
identificador digital o certificado enviado por el servidor. Esto
se lleva a cabo desencriptando el certificado utilizando la llave
pública del emisor y determinando si este proviene de una
entidad certificadora de confianza. Después se hace una serie
de verificaciones sobre el certificado, tales como fecha, URL del
servidor, etc. Una vez se ha verificado la autenticidad de la identidad
del servidor. El cliente genera una llave aleatoria y la encripta
utilizando la llave pública del servidor y el algorítmo
criptográfico y de compresión seleccionado anteriormente.
Esta llave se le envía al servidor y en caso de que el handshake
tenga éxito será utilizada en el envío de futuros
mensajes durante la sesión.
Verificación: En este punto ambas partes conocen la llave
secreta, el cliente por que la generó y el servidor por que
le fué enviada utilizando su llave pública, siendo
la única forma posible de desencriptarla utilizando la llave
privada del servidor. Se hace una última verificación
para comprobar si la información transmitida hasta el momento
no ha sido alterada. Ambas partes se envían una copia de
las anteriores transacciones encriptada con la llave secreta. Si
ambas partes confirman la validez de las transacciones, el handshake
se completa, de otra forma se reinicia el proceso.
Ahora ambas partes están listas para intercambiar información
de manera segura utilizando la llave secreta acordada y los algoritmos
criptográficos y de compresión. El handshake se realiza
solo una vez y se utiliza una llave secreta por sesión.
Intercambio de datos:
Ahora que se ha establecido un canal de transmisión seguro
SSL, es posible el intercambio de datos. Cuando el servidor o el
cliente desea enviar un mensaje al otro, se genera un digest (utilizando
un algoritmo de hash de una vía acordado durante el handshake),
encriptan el mensaje y el digest y se envía, cada mensaje
es verificado utilizando el digest.
Terminación de una sesión SSL:
Cuando el cliente deja una sesión SSL, generalmente la aplicación
presenta un mensaje advirtiendo que la comunicación no es
segura y confirma que el cliente efectiva,mente desea abandonar
la sesión SSL
SSL vs. S-HTTP
S-HTTP y SSL utilizan aproximaciones distintas con el fin de proporcionar
servicios de seguridad a los usuarios de la Red. SSL ejecuta un
protocolo de negociación para establecer una conexión
segura a nivel de socket (nombre de máquina más puerto).
Los servicios de seguridad de SSL son transparentes al usuario y
a la aplicación.
Por su parte, los protocolos S-HTTP están integrados con
HTTP. Aquí, los servicios de seguridad se negocian a través
de las cabeceras y atributos de la página. Por lo tanto,
los servicios de S-HTTP están disponibles sólo para
las conexiones de HTTP.
Dado que SSL se integra en la capa de sockets, también permite
ser usado por otros protocolos además del HTTP, mientras
que el S-HTTP está concebido para ser usado exclusivamente
en comuniciones HTTP.
Volver a Seguridad
Miguel A. Ruz
miguelruz@delitosinformaticos.com
|