ipsCA, El protocolo SSL
El protocolo SSL (Secure Sockets Layer) permite establecer conexiones seguras a través de Internet, de forma sencilla y transparente. La idea consiste en interponer una fase de codificación de los mensajes antes de enviarlos por la red. Una vez que se ha establecido la comunicación, cuando una aplicación quiere enviar información a otra computadora, la capa SSL la recoge y la codifica, para luego enviarla a su destino a través de la red. Análogamente, el módulo SSL del otro ordenador se encarga de decodificar los mensajes y se los pasa como texto plano a la aplicación destino.
Una comunicación SSL consta fundamentalmente de dos fases:
1. Fase de saludo (handshaking). Consiste básicamente en una identificación mutua de los interlocutores, para la cual se emplean habitualmente los certificados X.509. Tras el intercambio de claves públicas, los dos sistemas escogen una clave de sesión, de tipo simétrico.
2. Fase de comunicación. En esta fase se produce el auténtico intercambio de información, que se codifica mediante la clave de sesión acordada en la fase de saludo.
Cada sesión SSL lleva asociado un identificador único que evita la posibilidad de que un atacante escuche la red y repita exactamente lo mismo que ha oido, aún sin saber lo que significa, para engañar a uno de los interlocutores.
Las ventajas de este protocolo son evidentes, ya que liberan a las aplicaciones de llevar a cabo las operaciones criptográficas antes de enviar la información, y su transparencia permite usarlo de manera inmediata sin modificar apenas los programas ya existentes. Desde hace tiempo los principales navegadores de Internet incorporan un módulo SSL, que se activa de forma automática cuando es necesario. Desgraciadamente, las versiones de exportación tanto de Netscape como de Internet Explorer trabajan con claves de sesión de 40 bits, que pueden ser descifradas en cuestión de pocas horas por cualquier PC más o menos potente, por lo que en ningún caso pueden ser merecedoras de nuestra confianza. Afortunadamente, este problema se puede subsanar con utilidades como Fortify, que restauran su total funcionalidad a estos programas.
Los Certificados X.509
Un certificado es esencialmente una clave pública y un identificador, firmados digitalmente por una autoridad de certificación, y su utilidad es demostrar que una clave pública pertenece a un usuario concreto. El formato de certificados X.509 (Recomendación X.509 de CCITT:\The Directory - Autentication Framework". 1988) es el más común y extendido en la actualidad.
El estándar X.509 sólo define la sintaxis de los certificados, por lo que no está atado a ningún algoritmo en particular, y contempla los siguientes campos:
.... Versión.
.... Número de serie.
.... Identificador del algoritmo empleado para la firma digital.
.... Nombre del certificador.
.... Período de validez.
.... Nombre del sujeto.
.... Clave pública del sujeto.
.... Identificador unico de certificador.
.... Identificador único de sujeto.
.... Extensiones.
.... Firma digital de todo lo anterior generada por el certificador.
Estos certificados se estructuran de forma jerárquica, de tal forma que nosotros podemos verificar la autenticidad de un certificado comprobando la firma de la autoridad que lo emitió, que a su vez tendrá otro certificado expedido por otra autoridad de rango superior. De esta forma vamos subiendo en la jerarquía hasta llegar al nivel más alto, que debería estar ocupado por un certificador que goce de la confianza de toda la comunidad.
(Manuel J. Lucena López Criptografía y Seguridad en Computadores) |