Notas acerca de DNIe en Windows 7

La nueva versión del driver del DNIe para windows 7 ya no pide continuamente el PIN para obtener los certificados, como su versión anterior, sino que sólo lo pide cuando se realizan operaciones de firma. Esto no quiere decir que los certificados ahora son de libre acceso, sino que el driver mantiene una pequeña cache de certificados en memoria que pone a disposición del sistema operativo cuando un DNIe aparece en el sistema.

La primera vez que se introduce un DNIe en el lector, el driver pide inmediatamente el PIN de acceso, accede a los certicados, los almacena en la cache interna y los pone a disposición del sistema operativo. Si el driver detecta que se retira la tarjeta, entonces elimina inmediatamente los certificados del sistema operativo, pero los mantiene en su cache. Si, posteriormente, se vuelve a introducir esa tarjeta, entonces el driver obtiene los certificados de dicha cache y automáticamente volveran a aparecer en el sistema sin tener que escribir el PIN. Además, esta cache no está asociada al usuario de windows que estaba activo cuando se introdujo la tarjeta, sino que es común a todo el sistema (los certificados siempre aparecerán automáticamente aunque uno se cambie de usuario de windows).

Si esta cache sólo residiera en memoria, después de reiniciar nuestro ordenador, tendría que volver a pedir el PIN para obtener de nuevo los certificados. Sin embargo, el DNIe utiliza el registro de windows para almacenar dicha información, de forma que pueda reconstruir la cache en memoria en cualquier momento. Concretamente la entrada de registro es:

View source
HKEY_LOCAL_MACHINE\Software\DNIe\DNIeStore

En realidad sólo está visible la clave DNIe porque está protegida. Para desprotegerla quizás sea útil el enlace [1] al final de la página.

A partir de esta clave (y si alguna vez se ha utilizado algún DNIe) se encontrarán pares de claves con un nombre en hexadecimal de 16 bytes: una clave para el certificado de firma y el otra para el de autenticación. Y dentro de estas claves aparecerá un valor binario data. Al observar el contenido de este valor se puede ver que, en ambas claves, empiezan con los siguientes bytes:

View source
01000000d08c9ddf0115d1118c7a00c04fc297eb...

Este valor se corresponde con el GUID df9d8cd0-1501-11D1-8c7a-00c04fc297eb, valor que indica que se trata de un data BLOB de la Data Protection API (DPAPI) de Microsoft (básicamente se trata de un sistema de gestión de claves que Microsoft utiliza para el almacenamiento seguro en disco [2]). Es decir, se trata de un BLOB cifrado utilizando la DPAPI. Esta DBAPI utiliza un serie de claves maestras, que, combinándolas con una clave de usuario pueden obtener una serie de claves derivadas que son las que se utilizan finalmente en el cifrado del objeto. Toda la información necesaria para descifrar el objeto se incluye en el propio BLOB cifrado. Lo que debe hacer el driver DNIe es utilizar su información pública (sin necesidad de escribir el PIN) para obtener la "clave de usuario" a combinar con la clave maestra para derivar la clave de descifrado de este BLOB. Es decir, que cuando una tarjeta se vuelve a introducir en el lector, el driver debe seguir los siguientes pasos:

  1. Obtiene la información pública de la tarjeta.
  2. Si no tiene los certificados en la memoria los busca en el registro.
  3. Obtiene la clave maestra utilizada para cifrarlo del BLOB DPAPI y la combina con parte de la información pública de la tarjeta.
  4. Descifra los certificados, los guarda temporalmente en su memoria interna y los da de alta en el almacen de certificados.


Notas.

  1. Al borrar las entradas de registro correspondientes a los certificados, el driver deja de borrar automáticamente los certificados del sistema operativo cuando se retira la tarjeta, es decir, que si se accede al almacén de certificados siguen estando presentes. Probablemente, dentro del driver debe producirse alguna excepción al no encontrar las claves en el registro de Windows y entonces no debe completar el proceso de borrado de certificados del almacén de Windows.

Enlaces


hostgator and ipage are top rated hosting companies, which focus to provide quality web hosting service.
Minimalist Joomla Templates designed by Joomla Hosting