| Secure Socket Layer es
un sistema de protocolos de caracter general diseñado
en 1994 por la empresa Nestcape Communcations
Corporation, y está basado en la aplicación
conjunta de Criptografía Simétrica,
Criptografía Asimétrica (de llave
pública), certificados digitales y firmas
digitales para conseguir un canal o medio seguro
de comunicación a través de Internet.
De los sistemas criptográficos simétricos,
motor principal de la encriptación de datos transferidos en la comunicación, se aprovecha
la rapidez de operación, mientras que los
sistemas asimétricos se usan para el intercambio
seguro de las claves simétricas, consiguiendo
con ello resolver el problema de la Confidencialidad
en la transmisión de datos.
SSL implementa un protocolo
de negociación para establecer una comunicaión
segura a nivel de socked (nombre de máquina
más puerto), de forma transparente al usuario
y a las aplicaciones que lo usan.
Actualmente es el estandar
de comunicación segura en los navegadores
web más importantes (protocolo HTTP), como
Nestcape Navigator e Internet Explorer, y se espera
que pronto se saquen versiones para otras otros
protocolos de la capa de Aplicación (correo,
FTP, etc.).
La identidad del servidor
web seguro (y a veces también del usuario
cliente) se consigue mediante el Certificado Digital
correspondiente, del que se comprueba su validez
antes de iniciar el intercambio de datos sensibles
(Autenticación), mientras que de la seguridad
de Integridad de los datos intercambiados se encarga
la Firma Digital mediante funciones hash y la
comprobación de resúmenes de todos
los datos enviados y recibidos.
Desde el punto de vista
de su implementación en los modelos de
referencia OSI y TCP/IP, SSL se introduce como
una especie de nivel o capa adicional, situada
entre la capa de Aplicación y la capa de
Transporte, sustituyendo los sockets del sistema
operativo, lo que hace que sea independiente de
la aplicación que lo utilice, y se implementa
generalmente en el puerto 443. (NOTA: Los puertos
son las intefaces que hay entre las aplicacoines
y la pila de protocolos TCP/IP del sistema operativo).
SSL proporciona servicios de seguridad a la pila
de protocolos, encriptando los datos salientes
de la capa de Aplicación antes de que estos
sean segmentados en la capa de Transporte y encapsulados
y enviados por las capas inferiores. Es más,
también puede aplicar algoritmos de compresión
a los datos a enviar y fragmentar los bloques
de tamaño mayor a 214 bytes, volviendolos
a reensamblarlos en el receptor.
La versión más
actual de SSL es la 3.0. que usa los algoritmos
simétricos de encriptación DES,
TRIPLE DES, RC2, RC4 e IDEA, el asimétrico
RSA, la función hash MD5 y el algoritmo
de firma SHA-1.
Los algoritmos, longitudes
de clave y funciones hash de resumen usados en
SSL dependen del nivel de seguridad que se busque
o se permita, siendo los más habituales
los siguientes:
* RSA + Triple DES de 168
bits + SHA-1: soportado por las versiones 2.0
y 3.0 de SSL, es uno de los conjuntos más
fuertes en cuanto a seguridad, ya que son posibles
3.7 * 1050 claves simétricas diferentes,
por lo que es muy dificil de romper. Por ahora
sólo está permitido su uso en Estados
Unidos, aplicándose sobre todo en transacciones
bancarias.
* RSA + RC4 de 128 bits
+ MD5: soportado por las versiones 2.0 y 3.0 de
SSL, permite 3.4 * 10 38 claves simétricas
diferentes que, aunque es un número inferior
que el del caso anterior, da la misma fortaleza
al sistema. Análogamente, en teoría
sólo se permite su uso comercial en Estados
Unidos, aunque actualmente ya es posible su implementación
en los navegadores más comunes, siendo
usado por organismos gubernamentales, grandes
empresas y entidades bancarias.
* RSA + RC2 de 128 bits
+ MD5: soportado sólo por SSL 2.0, permite
3.4 * 10 38 claves simétricas diferentes,
y es de fortaleza similar a los anteriores, aunque
es más lento a la hora de operar. Sólo
se permite su uso comercial en Estados Unidos,
aunque actualmente ya es posible su implementación
en los navegadores más comunes.
* RSA + DES de 56 bits
+ SHA-1: soportado por las versiones 2.0 y 3.0
de SSL, aunque es el caso de la versión
2.0 se suele usar MD5 en vez de SHA-1. Es un sistema
menos seguro que los anteriores, permitiendo 7.2
* 10 16 claves simétricas diferentes, y
es el que suelen traer por defecto los navegadores
web en la actualidad (en realidad son 48 bits
para clave y 8 para comprobación de errores).
* RSA + RC4 de 40 bits
+ MD5: soportado por las versiones 2.0 y 3.0 de
SSL, ha sido el sistema más común
permitido para exportaciones fuera de Estados
Unidos. Permite aproximadamente 1.1 * 10 12 claves
simétricas diferentes, y una velocidad
de proceso muy elevada, aunque su seguridad es
ya cuestionable con las técnicas de Criptoanálisis
actuales.
* RSA + RC2 de 40 bits
+ MD5: en todo análogo al sistema anterior,
aunque de velocidad de proceso bastante inferior.
* Sólo MD5: usado
sólamente para autentificar mensajes y
descubrir ataques a la integridad de los mismos.
Se usa cuando el navegador cliente y el servidor
no tienen ningún sistema SSL común,
lo que hace imposible el establecimiento de una
comunicación cifrada. No es soportado por
SSL 2.0, pero si por la versión 3.0.
La clave de encriptación
simétrica es única y diferente para
cada sesión, por lo que si la comunicación
falla y se debe establecer una nueva sesión
SSL, la contraseña simétrica se
generará de nuevo.
SSL proporciona cifrado
de alto nivel de los datos intecambiados (se cifran
incluso las cabeceras HTTP), autenticación
del servidor (y si es necesario también
del cliente) e integridad de los datos recibidos.
Durante el proceso de comunicación
segura SSL existen dos estados fundamentales,
el estado de sesión y el estado de conexión.
A cada sesión se le asigna un número
identificador arbitrario, elegido por el servidor,
un método de compresión de datos,
una serie de algoritmos de encriptación
y funciones hash, una clave secreta maestra de
48 bytes y un flag de nuevas conexiones, que indica
si desde la sesión actual se pueden establecer
nuevas conexiones. Cada conexión incluye
un número secreto para el cliente y otro
para el servidor, usados para calcular los MAC
de sus mensajes, una clave secreta de encriptación
particular para el cliente y otra para el servidor,
unos vectores iniciales en el caso de cifrado
de datos en bloque y unos números de secuencia
asociados a cada mensaje.
¿Cómo podemos
saber si una conexión se está realizando
mediante SSL?. Generalmente los navegadores disponen
de un icono que lo indica, generalmente un candado
en la parte inferior de la ventana. Si el candado
está abierto se trata de una conexión
normal, y si está cerrado de una conexión
segura. Si hacemos deble click sobre el candado
cerrado nos aparecerá el Certificado Digital
del servidor web seguro.
Además, las páginas
que proceden de un servidor SSL vienen implementadas
mediante protocolo HTTP seguro, por lo que su
dirección, que veremos en la barra de direcciones
del navegador, empezará siempre por https,
como por ejemplo:
https://www.evidaliahost.com
Por último, cuando
estamos en una conexión segura podemos
ver el certificado del servidor acudiendo al menú
"Archivo" del navegador y pinchando
en "Propiedades". En la parte inferior
tenemos una opción "Certificados",
que nos mostrará el del servidor actual.
|