| Artículos | 01 MAY 2006

Protección del transporte de datos con SSL

Tags: Histórico
Curso de seguridad (III)
Gonzalo Alvarez.
En este curso de seguridad en aplicaciones web en cinco entregas se explicarán algunos de los conceptos más importantes para protegerse frente a los ataques más frecuentes y las amenazas más graves.
Con el fin de que los datos sensibles enviados entre navegador y servidor no puedan ser interceptados por un atacante, se recurre al uso del protocolo de cifrado SSL. Este mes explicamos qué es, cómo se configura y qué beneficios aporta.

Nivel de dificultad: Medio
Objetivo del artículo: Proteger el tráfico entre el servidor web y el navegador y asegurar la identidad de las partes.
Herramientas necesarias: Las herramientas incluidas con el software del servidor web y OpenSSL.

SSL (Secure Sockets Layer) es un protocolo de propósito general para establecer comunicaciones seguras, propuesto en 1994 por Netscape Communications Corporation junto con su primera versión de Navigator. SSL crea un canal blindado para transmitir los datos confidenciales desde el equipo del usuario hasta el equipo servidor. Hoy constituye la solución de seguridad implantada en la mayoría de los servidores web que ofrecen servicios de comercio electrónico, banca electrónica, subastas y, en definitiva, cualquier aplicación en la que se requiera proteger el transporte de los datos y asegurar la identidad de las partes. En su estado actual, SSL proporciona los siguientes servicios de seguridad:
1. Confidencialidad: la información transferida se cifra utilizando un algoritmo de clave secreta, capaz de cifrar grandes volúmenes de datos en muy poco tiempo, por lo que resultará ininteligible en manos de un atacante.
2. Integridad: se impide que pasen inadvertidas modificaciones intencionadas o accidentales en la información mientras viaja por Internet.
3. Autenticación de servidores: el usuario puede asegurarse de la identidad del servidor al que se conecta y al que posiblemente envíe información personal confidencial. De esta forma se evita que un usuario se conecte a un servidor impostor que haya copiado las páginas del banco o comercio al que suplanta. Estos ataques se conocen como web spoofing, aunque más recientemente se les viene denominando phishing, y se utilizan para hacerse con las contraseñas y datos personales de los usuarios.
4. Opcionalmente, autenticación de cliente: permite al servidor conocer la identidad del usuario. En este caso, el cliente debe tener instalado un certificado en su ordenador o en una tarjeta inteligente, que le permitirá autenticarse ante el servidor web. Se evitan así ataques comunes de captación de contraseñas mediante el uso de analizadores de protocolos (sniffing). De todas formas, son muy pocos los servicios web que autentican a los usuarios de esta manera. Uno de ellos es la Agencia Tributaria (www.aeat.es), así como otros servicios de la Administración al ciudadano en España.
Es importante recalcar que SSL sólo garantiza la confidencialidad e integridad de los datos privados en tránsito desde el navegador hasta el servidor, ni antes ni después. Lo que suceda con ellos en el servidor, está ya más allá de la competencia de este protocolo. Los datos podrían ser manipulados irresponsablemente o caer en manos de un hacker que asaltara el servidor con éxito, sucesos que se producen con alarmante frecuencia en estos días.

Funcionamiento de SSL
Cuando un navegador solicita una página a un servidor seguro, ambos intercambian una serie de mensajes para negociar las mejoras de seguridad. De manera muy resumida, este protocolo sigue las siguientes fases:
1. La fase Hola, usada para ponerse de acuerdo sobre el conjunto de algoritmos para garantizar la confidencialidad e integridad y para la autenticación mutua. El navegador le informa al servidor de los algoritmos que tiene disponibles. Normalmente, se utilizarán los más fuertes que se puedan acordar entre las dos partes. En función de las posibilidades criptográficas del navegador, el servidor elegirá un conjunto u otro de algoritmos con una cierta longitud de claves.
2. La fase de autenticación, en la que el servidor envía al navegador su certificado x.509v3 que contiene su clave pública y solicita a su vez al cliente su certificado X.509v3, sólo si la aplicación exige la autenticación de cliente.
3. La fase de producción de clave de sesión, en la que el cliente envía al servidor una clave maestra a partir de la cual se generará la clave de sesión para cifrar los datos intercambiados posteriormente mediante el algoritmo de cifrado simétrico acordado en la fase 1. El navegador envía cifrada esta clave maestra usando la clave pública del servidor que extrajo de su certificado en la fase 2. Más adelante, ambos generarán idénticas claves de sesión a partir de la clave maestra generada por el navegador.
4. Por último, la fase Fin, en la que se verifica mutuamente la autenticidad de las partes implicadas y que el canal seguro ha sido correctamente establecido. Una vez finalizada, ya se puede comenzar la sesión segura.
De ahí en adelante, durante la sesión segura abierta, SSL proporciona un canal de comunicaciones seguro entre los servidores web y los clientes (los navegadores) a través del cual se intercambiará cifrada la siguiente información: la URL del documento solicitado, los contenidos del documento solicitado, los contenidos de cualquier formulario enviado desde el navegador, las cookies enviadas desde el navegador al servidor y viceversa, los contenidos de las cabeceras HTTP, entre las cuales se incluye el nombre de usuario y contraseña si se está utilizando Autenticación Básica.
Es importante tener en cuenta que SSL degrada considerablemente el rendimiento de las comunicaciones debido al elevado coste computacional de las operaciones criptográficas durante el establecimiento de sesión y el cifrado de los datos transmitidos, por lo que conviene utilizarlo sólo cuando sea estrictamente necesario, es decir, durante la transmisión de información sensible, como contraseñas, datos confidenciales, datos personales de nivel alto protegidos por la LOPD, o testigos de sesión. Para paliar la merma de rendimiento existen dispositivos hardware dedicados al trabajo con SSL, como las tarjetas cripto-aceleradoras listadas en la Tabla 1, o los terminadores SSL, como Sun Fire SSL Proxy Blade o BlueCoat ProxySG.
Para poder funcionar con SSL, el servidor debe poseer un certificado firmado por una autoridad de certificación (CA) reconocida. El proceso de instalación de un certificado en un servidor web incluye tres pasos: 1) Creación del archivo de solicitud de certificado; 2) Envío de la solicitud a una autoridad de certificación; y 3) Instalación del certificado firmado por la CA.

Solicitud de certificado
Durante el proceso de solicitud de certificado, el servidor genera un par de claves, una pública y otra privada, junto con una petición de certificado. La clave privada no abandona el servidor y debe mantenerse siempre en secreto y bien protegida, ya que es la utilizada para firmar y equivale a la identidad del servidor. Su robo permitiría a un atacante suplantarlo. Por su parte, la clave pública debe ser firmada por una autoridad de certificación reconocida, de manera que cualquier navegador que acuda posteriormente al sitio web pueda verificar su validez. El archivo de petición de certificado contendrá precisamente esta clave pública, junto con otra información relevante del servidor, como su dominio, para que la autoridad de certificació

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información