Continuando con nuestra serie de Fundamentos de Certificados Digitales, en esta entrada trataremos los mecanismos de validación de certificados. Para ello plantearemos la problemática y entorno que propicia la necesidad de realizar una validación, analizaremos y entenderemos el funcionamiento de los mecanismos de validación de certificados estándar que suelen proveer las autoridades de certificación (CA), y también analizaremos el uso de estos mecanismos por los principales navegadores comerciales. Vayamos paso a paso.
Como ya hemos comentado en anteriores entradas, un certificado digital (o firma digital) tiene como principal objetivo identificar digitalmente a una persona, entidad o sistema concreto; se implementan mediante algoritmos de clave asimétrica, de modo que la clave pública puede estar al alcance de cualquiera, y se emplea para que el receptor del mensaje firmado valide la firma del mensaje recibido o para que el emisor de un mensaje cifre el mensaje con la clave pública del destinatario, de modo que únicamente éste último sea capaz de descifrarlo; por su parte la clave privada será custodiada únicamente por el propietario, y es la que certifica su identidad.
Es muy importante tener claro este concepto, ya que tomando como base este principio expuesto, una firma será capaz de validar a una persona, entidad o servicio sí y solo sí la clave privada sigue siendo privada (valga la redundancia); si en algún momento dicha clave privada no es custodiada únicamente por su propietario, un tercero cualquiera podría suplantar la identidad digital del propietario, con todas las implicaciones que este hecho podría tener. De forma muy general, existen dos formas mediante las que, un tercero, podría apropiarse de una clave pública. En primer lugar, la más obvia sería acceder de algún modo a la clave privada, bien por un error del propietario, de la CA emisora, o sencillamente porque la misma fuera sustraída malintencionadamente; en segundo lugar, surge una consecuencia matemática obvia que viene implícita en cualquier algoritmo asimétrico que se emplee, y es que existe una relación matemática entre la clave pública y privada, por lo que es “posible” obtener la clave privada a partir de la pública conociendo el algoritmo empleado (otra cosa es que, debido a la complejidad del cálculo, éste no se pueda realizar completamente durante la vigencia del certificado que se intenta suplantar, esa es la trampa). Si en algún momento se tiene conocimiento de que la clave privada de un certificado ha sido vulnerada, dicho certificado debe ser revocado inmediatamente para evitar que se pueda emplear de forma ilegítima.
Como inciso, es importante comentar que el problema sería mucho más grave, si cabe, en el caso de que no se vulnerara una clave de suscriptor (usuario final), sino que se vulnerara una clave raíz o subordinada de CA; en ese caso, se deberían revocar todos los certificados emitidos con dicha clave, por lo que como es de comprender, las medidas de seguridad destinadas a proteger este tipo de claves deben ser muy elevadas. Las medidas de seguridad para custodia de claves, así como el funcionamiento y robustez de los algoritmos típicos empleados en certificados digitales se tratarán en mayor profundidad en próximas entradas de esta serie.
Volviendo al hilo principal de esta entrada, como ya habréis deducido, en el momento que exista la más mínima sospecha de que se ha perdido, filtrado, o vulnerado la clave privada de un certificado, el propietario de la misma (o un tercero que lo detecte) debe notificar a la CA lo sucedido, y ésta última deberá revocar inmediatamente dicho certificado. Los certificados digitales se emiten con un periodo de validez establecido (entre dos y cuatro años según la Ley de Firma Electrónica (Ley 59/2003). Lo que es obvio es que, a pesar de que el certificado estuviera revocado, esta información no quedaría patente en la estructura del certificado en sí, por lo que el único método válido para conocer esta información será consultar a la CA si el certificado aún es vigente; alrededor de esta necesidad surgen los mecanismos de validación de certificados.
Habitualmente, las CA se valen de dos mecanismos o protocolos estándar para ofrecer a los usuarios mecanismos de validación de certificados actualizada, estos mecanismos son CRL (Certificate Revocation List) y OCSP (Online Certificate Status Protocol), se trata de dos mecanismos muy distintos pero complementarios.
Una CRL es un listado actualizado de certificados revocados, generalmente, la CA lo publica periódicamente y lo mantiene en un repositorio público. Habitualmente es un listado plano de los identificadores de certificados revocados junto con la fecha de su revocación; este listado es firmado por la CA para garantizar su validez. A este respecto, para la construcción de CRL, del mismo modo que para la descripción de la estructura estándar de un certificado, se ha establecido un protocolo internacional aceptado (Internet X.509 Public Key Infrastructure – Certificate and Certificate Revocation List (CRL) Profile). Se entrará en mayor detalle de análisis de esta RFC en próximas entradas, en las que se describirá la estructura formal aceptada de un certificado.
Para validar un certificado, un usuario únicamente deberá descargar la CRL actualizada del repositorio facilitado por la CA, verificar la validez de la firma, y comprobar el identificador del certificado en el listado. En caso de que dicho certificado esté listado en la CRL, no deberá ser aceptado como válido. La principal problemática del uso de CRL es que, dado que suele tratarse de un archivo que se publica con cierta periodicidad y que se puede almacenar en un equipo local, se emplee una versión obsoleta de la misma; de modo que, en caso de que se empleara dicha CRL obsoleta para validar un certificado recientemente revocado se podría considerar válido un certificado que ya no lo es; sin embargo, la misma problemática se torna en ventaja en sistemas offline, los cuales no pueden acceder a sistemas en tiempo real para realizar consultas.
Para complementar y subsanar las carencias detectadas en el mecanismo de validación basado en CRL se implementó el protocolo OCSP. Básicamente, OCSP se implementa con un servicio publicado en la red que permite realizar consultas respecto a la validez de certificados en tiempo real. El cliente construye y envía una petición OCSP, en la que se especifica la versión del protocolo empleado y los identificadores de los certificados que se deben validar; a esta petición, el servidor de Responder de OCSP devuelve una respuesta firmada en la que se devuelve un estado para cada uno de los certificados consultados entre los siguientes:
• Bueno (good)
• Revocado (revoked)
• Desconocido (unknown)
Del mismo modo que en el caso de las CRL, se ha establecido un protocolo internacional aceptado que establece los requisitos y funcionamientos originales del protocolo OCSP (X.509 Internet Public Key Infrastructure – Online Certificate Status Protocol – OCSP); así como una revisión destinada a mejorar la eficiencia del mismo en cuanto a rendimiento y uso de red (The Lightweight Online Certificate Status Protocol (OCSP) Profile High-Volume Environments).
Una vez explicados los protocolos que se emplean para realizar validación de certificados, la pregunta que nos planteamos es, ¿los navegadores web comerciales realizan validación de certfificados cuando se accede a un sitio web sobre protocolo HTTPS (SSL)?
Centrándonos en los 3 navegadores comerciales de uso más extendido la respuesta es un poco heterogénea, me explico, en todos los casos la validación de certificados empleando el protocolo OCSP está soportada, sin embargo, solo Internet Explorer y Mozilla Firefox la implementan por defecto, y Google Chrome no lo hace. Se muestran a continuación capturas de pantalla para cada uno de los menús de configuración de todos y cada uno de los navegadores, con unas pequeñas instrucciones para acceder a la configuración en todos ellos, para que podáis verificar que dicha configuración está habilitada en vuestro navegador favorito.
Con Internet Explorer, debemos acceder a Herramientas -> Opciones de Internet -> Opciones Avanzadas, y en ese menú buscar el apartado de seguridad. Se muestra una captura de pantalla.
Pasando a Mozilla firefox, debemos acceder al menú Editar -> Preferencias -> Avanzado, y en la pestaña Cifrado pulsar el botón Validación. Accederemos aun menú como este (o puede que algo distinto, la captura se ha hecho sobre Linux).
Por último, revisamos la configuración de validación de certificados de Google Chrome, para acceder a la misma debemos ir al menú de Personaliza y controla Google Chrome -> Configuración, al final del menú debemos desplegar las Opciones Avanzadas, y encontraremos lo que buscamos en el apartado HTTPS/SSL.
Con esto es todo, en la próxima entrada de esta serie, tras el descanso veraniego, proseguiremos con más entradas de esta serie. Muchas gracias por vuestra atención y pasad un feliz verano. Quedo a la espera de vuestros comentarios.
Muy buena entrada David, además con las instrucciones para que los usuarios lo verifiquen.
No es un tema menor, como ya comentamos en Febrero (y vosotros habéis mencionado también alguna vez) se comprometieron certificados secundarios de una importante entidad.
Saludos
Muchas gracias por tu valoración Alejandro,
el objetivo siempre es aportar cultura de seguridad y facilitar medios simples para mejorar la gestión de la seguridad de la información que todos y cada uno de nosotros manejamos en nuestra vida cotidiana (tanto en lo personal como en lo profesional).
Seguiremos con esta serie de certificados digitales tras el periodo vacacional.
Un saludo y pasa un muy buen verano.
Muy buen artículo.
¿Tienes información sobre la validación que realizan los navegadores de los certificados generados a través del servicio de generación de certificados de Windows? Me imagino que se usarán los mismos protocolos pero preguntando a la CA local…
Hola Sergio,
entiendo que te refieres al servicio de Autoridad de Certificación que se puede instalar en diversas versiones del Sistema Operativo Windows Server. No he trabajado con esta solución, pero por lo que he podido ver, este servicio de CA se emplea para identificar usuarios, equipos o servicios dentro de un AD, y su idea consiste en establecer una CA corporativa. Como bien has supuesto, sea como sea se trata de certificados digitales que se ajustan a los estándares habituales y por lo tanto se puede realizar la validación empleando los mismos mecanismos (al menos he podido comprobar que en ciertas versiones del sistema se puede implementar un servidor OCSP).
Espero haber resuelto tu pregunta, muchas gracias por tu valoración.
Un saludo
Que buen articulo, gracias por compartir este tema que la verdad es un poco complejo.
Saludos.