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.
En la figura se ilustra el proceso de handshake:
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.
volver atrás