jueves, 25 de noviembre de 2010

Comprobando en Windows si los certificados del DNIe estan revocados...

Cuando nos roban o perdemos una tarjeta bancaria, llamamos a la entidad emisora para anularla y su número es incluido en una lista negra para indicar que ya no es válida. En este caso confiamos en que las empresas que realizan cobros con tarjeta comprueben siempre dicha lista para evitar que puedan ser utilizadas esas tarjetas anuladas.

Con los certificados digitales es similar, la validación de certificados (es decir, comprobar su estado de revocación) es una función crítica en aquellas operaciones relacionadas con la tecnología PKI. Toda aplicación que utilice los certificados digitales para funciones de autenticación, firma o cifrado debería bien validar todos los certificados que utiliza o bien asumir el riesgo asociado a su no validación.

Las listas negras, se llaman en este caso Listas de Revocación de Certificados (o CRL por sus siglas en inglés) y a menudo se hacen accesibles de forma publica a través de Internet para que cualquier aplicación pueda consultarlas. Las listas contienen los número de serie de los certificados vigentes que han sido revocados y la fecha de su revocación, y son firmadas por la AC emisora de los certificados como prueba de su origen e integridad (nadie puede añadir ni quitar elementos de la lista).


El método de acceso a la lista puede ser diverso, bien se publican en un servidor web y son accesibles mediante protocolo HTTP, bien se publican en un directorio con protocolo de acceso LDAP o bien se implementa un protocolo de consulta online denominado OCSP (Online Certificate Status Protocol). Este último método OCSP resulta el más ventajoso, ya que evita la descarga de las listas y solo realiza una transacción de pregunta y recibe una respuesta firmada con el estado del certificado. Esta tarea se puede delegar en un tercero denominado Autoridad de Validación.

Algunas AC habiltan varios métodos de validación como HTTP, LDAP u OCSP, pero en el caso del DNIe se ha delegado la función de validación en la FNMT y el Ministerio de la Presidencia a través de la plataforma @firma. De forma pública solo se dispone del método OCSP para la validación de los certificados del DNIe (ocsp.dnie.es).

El protocolo OCSP está definido en el RFC 2560 del IETF y se implementa en la mayoría de plataformas de PKI para su uso. Debido a su Existe también una variante de este protocolo llamada Lightweight OCSP (RFC 5019) y definida en Septiembre de 2007 para aquellos entornos donde se gestiona una alto volumen de tráfico que ayuda a reducir el consumo de ancho de banda y minimizar el consumo de recursos en el cliente.


La validación de los certificados puede ser implementada directamente en las aplicaciones mediante el uso de librerías comerciales o de software libre o bien a través de los servicios que proporcionan de base algunos sistemas operativos, descargando a la aplicación de esta tarea.

En los sistemas operativos Windows, estas operaciones de validación están incluidos en los servicios criptográficos que incopora la plataforma denominada CryptoAPI y las aplicaciones comerciales y especialmente las desarrolladas por Microsoft como Internet Explorer, Microsoft Outlook, Microsoft Office en el cliente o Microsoft IIS, Microsoft Exchange Server o Microsoft SharePoint en el servidor, hacen uso de estos servicios de la plataforma.


Lamentablemente, el protocolo OCSP no se incluyó hasta la aparición de Windows Vista y Windows Server 2008. Por tanto, para poder utilizar este protocolo en aplicaciones que se ejecutan en Windows 2000, XP o Server 2003, bien se implementa directamente en la aplicación o bien se instala un plug-in que habilita esta función en CryptoAPI (SmartAccess ha desarrollado TrustID OCSP Client) y permite que aplicaciones como Microsoft Outlook puedan validar los certificados, por ejempo cuando recibimos un correo firmado digitalmente usando el DNIe.


En el caso de Windows Vista, Windows 7 y Windows Server 2008 (R2), ya incorporan el protocolo OCSP de serie en CryptoAPI y debería poder utilizarse para validar los certificados sin necesidad de instalar plug-ins. Sin embargo, el protocolo implementado es el Lightweight OCSP (basado en el RFC 5019) pensado para altas volumenes de transacciones pero el respondedor (servidor) público que gestiona la FNMT solo admite peticiones según el protocolo OCSP (RFC 2560). Esto nos coloca en la misma situación que con versiones antiguas de Windows para validar los certificados del DNIe a través de CryptoAPI.

Esta situación, provoca muchas veces comentarios que indican que Windows no es compatible con el OCSP o que las aplicaciones de Microsoft no son compatibles con la validación de certificados del DNIe, lo cual espero haber explicado. La solución pasa por cambiar Windows (algo dificil) o cambiar el respondedor OCSP de la FNMT para que también admita el RFC 5019. Creo que sería una ayuda a los desarrolladores de aplicaciones que utilicen el DNIe para que no necesiten integrar la validación en cada aplicación que desarrollan.

Un saludo
Rames

No hay comentarios: