Certificados PKI: Sin 'passwords' no hay paraíso

Si hace varios meses Fernando Acero señalaba desde Kriptópolis un llamativo fallo en la forma en que Mozilla gestiona sus almacenes de certificados digitales, ahora es Yago Jesús quien apunta otro en el modo en que Windows y Explorer manejan los certificados de la FNMT (utilizados por ejemplo para la declaración tributaria) y otros similares.

Sin embargo es necesario aclarar desde el principio que no es una vulnerabilidad en Explorer la que permite explotar el fallo, puesto que el explorador de Microsoft dispone en este caso de medios suficientes (el nivel denominado "alto") para evitar el robo de identidad del usuario, que es de lo que en definitiva estamos hablando. Por el contrario la adopción por defecto de un nivel de seguridad medio durante la creación de claves es lo que podría posteriormente permitir el robo de los certificados y claves del usuario, bien mediante el acceso local a su máquina o bien mediante el uso de un programa malicioso destinado a realizar el trabajo sucio...

Como prueba de sus afirmaciones Yago ha creado CertDump, una utilidad que escanea el contenedor de certificados del usuario en busca de aquellos cuya clave privada sea exportable, y acto seguido procede a exportarlos, de forma transparente y sin solicitar confirmación al usuario. CertDump, cuando encuentra un certificado cuya clave privada no es exportable, saca únicamente la parte pública (el certificado digital) en formato .cer, y cuando encuentra un certificado cuya clave privada sí es exportable intenta hacer la exportación a un fichero .pfx, que es un fichero p12 como los de FireFox, con la salvedad de que no se le ha puesto contraseña y es exportable sin restricciones.

Por su parte Firefox (que no diferencia niveles bajo, medio y alto, y con salvedad -insisto- de la grave debilidad apuntada en su día por Fernando Acero) en este caso concreto obliga a la intervención del usuario, ya que sólo permite exportar las claves en formato p12 con contraseña, lo que en la práctica resulta más seguro.

En cualquier caso -como señala Fernando- no resulta fácil entender por qué el estándar PKI no obliga a que se solicite una contraseña para abrir el contenedor y otra para utilizar el certificado, o por qué se permite que los certificados puedan estar en formatos no protegidos, o incluso -caso de Firefox- por qué puede haber diferentes certificados en un mismo contenedor sin que se solicite una contraseña distinta para cada uno de ellos.

Nos dice Yago Jesús: "La única forma de hacer serio el concepto de PKI es emplear smartcards a nivel de usuario y dispositivos HSM a nivel CA (de esa forma, casos como lo ocurrido en Debian + OpenSSL son prácticamente imposibles de darse), pero claro eso encarece y mucho el tema."

Para Fernando, las smartcards pueden dar algo más de seguridad, pero tampoco son la panacea: "Cuando recibimos una firma, no sabemos si se ha generado en una smartcard o mediante un contenedor de software con un certificado software de la FNMT; solamente vemos una firma. Otro caso es el e-DNI, cuyas claves públicas siempre han estado dentro del dispositivo y se tiene la certeza."

Así las cosas, y antes de tener que lamentar nada, parece muy conveniente la recomendación de Yago: exportar cuanto antes certificados y claves y almacenarlos fuera del ordenador.

 

Referencias:

Comentarios

Selecciona arriba tu forma preferida de visualizar
los comentarios y pulsa el botón para guardar tus
preferencias. Éstas sólo se recordarán para tus
próximas visitas si eres usuario registrado.

SSL y Apache

La razón es que hay bastante gente que utiliza SSL con Apache y quiere que httpd sea capaz de acceder a las claves privadas asociadas con el certificado sin necesidad de intervención de un operador. No voy a discutir si ésto es un grave error o no, pero es una de las razones por las que puede ser posible exportar las claves privadas a disco sin proteger mediante una contraseña.

Segurdidad / Comodidad, un problema

Desde luego la seguridad y la comodidad no se llevan demasiado bien. El estándar PKI permite que seamos cómodos, pero inseguros, puede que lo que habría que dejar bien claro es que determinadas prácticas son claramente inseguras.

Las acciones de firma y autentificación no deberían ser tan "automáticas", puesto que deberían expresar claramente la voluntad del dueño de los certificados, que bien se puede expresar mediante una contraseña. Es algo parecido a la casilla de verificación de aceptación de condiciones. Es más, cada certificado debería tener su constraseña propia, más que nada, para poder definir claramente el certificado que quiero usar, cuando hay varios certificados en el contenedor. Claro, que a muchos esto le puede parecer un engorro.... es lo que tenemos y sinceramente creo que no sirve.

Firefox y todos sufren la debilidad señalada por Fernando

Parece de este artículo que sólo firefox sufre la debilidad señalada, cuando se produce con cualquier aplicación que use un contenedor de certificados, ya sea bajo Linux o bajo Windows.

No es cierto

Como se dice en el artículo Explorer dispone de un nivel de seguridad alta que permite asociar contraseñas diferentes para certificados de un mismo contenedor.

Pero sí es cierto que ....

Un sistema PKI de debe basarse en la confianza en el mismo, que exista una configuración buena y otras dos malas, desgraciadamente, no contribuye a mejorar la seguridad global y por lo tanto, tampoco a la confianza, puesto que si la configuración no es la adecuada, cabe la posibilidad de que se firmen documentos por otras personas.

Sencillamente, el sistema no debería permitir configuraciones "no adecuadas", por lo que en lugar de una "feature" esas configuraciones son un error de implementación del estándar PKI, lo veamos como lo veamos. Ahora bien ¿se podría confiar en el sistema si se solucionase el problema eliminado esas configuraciones "malas"?, es evidente que no, el sistema está tocado ya que no sabremos jamás si el usuario tiene una configuración buena, o se actualizó a una versión que no permitiera esas configuraciones "peligrosas".

Es evidente, el sistema PKI si se desea que sea para todo el mundo, como se desprende de las iniciativas encaminadas a la Administración electrónica y a la firma electrónica, debería ser "a prueba de usuarios sin conocimientos", algo directo y sencillo, sin opciones que pudieran ser potencialmente o mejor dicho, catastróficamente peligrosas.

Ya hemos visto, que la simple instalación/configuración de todo lo que se necesita para el e-dni puede ser un problema y que además, todavía tiene problemas por la inexistencia/dificultad de disponer de un entorno seguro de firma en el lado del cliente, como también ha señalado Fernando Acero.

Más grave considero, como también consideró Fernando Acero, que después de un montón de meses, lo único que se hiciera para solucionar el problema de los certificados múltiples en un contenedor, fuera recomendar la FNMT la seguridad alta en Windows ¿pero qué ocurre con los otros sistemas?, ¿sabemos acaso si había varios certificados en un contenedor disponible para Mozilla / Firefox bajo Linux? ¿estamos seguros de que todos los usuarios seleccionaron esa seguridad alta bajo Windows / Explorer?

Es cierto

El problema de los certificados múltiples en el mismo contenedor, como bien dices, afecta a cualquier aplicación que use un contedor de certificados, con independencia de que sea bajo Linux o Bajo Windows. Lo que creo que ha querido decir, es que bajo Windows hay la posibilidad de seleccionar el nivel de seguridad alto, lo que evitaría, desde el punto de vista del dueño de los certificados el problema que señalaba Fernando Acero.

De todos modos, creo que aunque exista esa posibilidad en Windows, la cadena de confianza queda tocada, puesto que el que recibe un documento firmado, no sabe si había certificados de varias personas en el contenedor o si la seguridad era media y el certificado exportable.

Para muchos, que Windows / Explorer permita tres niveles de seguridad puede que le parezca una "feature" y que el usuario elija media o baja, sea un error por parte del usuario. Creo que lo que no es de recibo es que la definición del estándar PKI permita que ocurran cosas como estas.

Respecto a lo que dice el usuario anterior, sobre el uso "transparente" de certificados para SSL, bueno, todos sabemos que la comodidad es incompatible con la seguridad.

CertDump?

...Yago ha creado CertDump, una utilidad que escanea el contenedor de certificados del usuario en busca de aquellos cuya clave privada sea exportable, y acto seguido procede a exportarlos, de forma transparente y sin solicitar confirmación al usuario.

¿No conocía a la utilidad standard certutil?

si, los conozco

Si, conozco certutil, certreq y compañia, pero hasta donde yo se (corrígeme si me equivoco) cuando tratas de exportar un certificado con certutil cuya clave privada sea exportable y tenga un nivel de seguridad medium, aparece un popup que has de aceptar manualmente. Lo que hace CertDump es, previo a hacer esa petición, lanzar otro hilo y auto-aceptar ese popup haciendo la exportación automática sin tener que aceptar nada manualmente (esa era la parte mas "divertida" de CertDump)

Saludos, -YJ

El verdadero problema con la gestión de windows.

En cuanto al problema que mencionaba Fernando Acero, sí, es razonable pero se soluciona utilizando dos usuarios distintos del sistema y de esa forma cada uno tendrá su store de certificados que para eso se han inventado los entornos multiusuario, para que, entre otros, cada uno pueda tener su configuración personal leñe. A pesar de esto, sí, tiene razón, se podría ofrecer un grado adicional de seguridad si se permitiera cifrar con una contraseña por certificado eliminando incluso la global por comodidad.

Con lo que respecta a Windows, Yago está en lo ciertom, por defecto, no se establece el nivel de seguridad que la situación requiere, pero el verdadero problema con los certificados de Windows es este
http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2006-04/msg00041.html

Donde el borrado de certificados no actúa como cabría esperar. Para remediarlo podéis utilizar
http://dwnl.nisu.org/dwnl/cleancapi_0_2_bin.zip

Claro que el que recibe la firma y además....

Lo que dice Fernando está bien claro, el que recibe la firma no sabe en las condiciones en las que se generó, por lo que siempre puede tener la duda razonable de que podría haber dos certificados en un contenedor, con una seguridad media y de personas distintas. La duda te puede asaltar y la validez de una firma puesta en entredicho.

Tampoco se si lo han "levantado" usando el procedimiento de Yago troyanizado, en definitiva, puedo tener muchas dudas que van más allá de que alguien haya entregado su certificado con su contraseña a un tercero, que es de lo único que se debería tener que preocupar un usuario, junto con no firmar lo que no debe, para no tener problemas. Ahora parece que el estándar PKI en lugar de una solución, es un problema, ya que te tienes que preocupar de que la seguridad media = nula, de que si haces caso a las recomendaciones o "requerimientos" de la Administración, también tendrás problemas y graves y que además, si no borras los certificados con una utilidad para "frikis paranoicos" alguien puede seguir teniendo tu certificado sin que no lo sepas. Claro, que todo esto, está aderezado con una certificación EAL X+ y todo lo que se quiera para que parezca seguro, es una tomadura de pelo.

También podemos decir, que todo lo anterior, que ya denunciaba en parte Fernando en su momento, es realmente un mal uso del certificado por el usuario, o como decía un representante de la FNMT, que el tener el certificado de la señora y el marido con una misma contraseña, es uno de los requisitos del matrimonio de la generación digital y que no era tan problemático, seguramente no pesará lo mismo el que está a punto de divorciarse.

Creo que ya está bien de tanta especulación y paños calientes, puesto que si queremos que la firma electrónica y todo lo que lleva asociado prospere en este país, hace falta algo más que tenemos en este momento, es necesario hacer las cosas mucho mejor y no echar al usuario la culpa de que el estándar PKI es malo y de que las implementaciones tan certificadas de dicho estándar, son malas de verdad. Por cierto bien patente queda otra cosa que ha mantenido Fernando en otras ocasiones, las CC no cumplen con las espectativas que se tenían en ellas, no en vano, como certificación dejan que desear y mucho, aunque también es cierto, que a falta de algo mejor, es lo que tenemos. Pero que nadie se engañe CC tampoco es igual a seguridad como algunos han querido entender y otros vender.

Por otra parte, lo de usuarios distintos hasta hace poco, por lo menos para presentar la declaración de la renta en la que eran necesarias dos firmas concurrentes y consecutivas, no servía, no había más remedio que instalar los dos certificados en el mismo contenedor.

De hecho, aunque en la documentación de la FNMT te siguen diciendo que debes poner la seguridad a alta, si tienes certificados de varias personas y no te dicen que lo que tienes que hacer realmente, es usar usuarios distintos y punto.

Opinar

Los comentarios publicados en este sitio expresan sólo la opinión de su autor, quien será el único responsable de los mismos. La publicación de cualquier comentario no supone en absoluto la conformidad del responsable de este sitio con su contenido.

Como norma general, en este sitio no se publican comentarios que incluyan datos personales, ni direcciones de correo, ni ninguna otra forma de establecer contactos privados o comerciales, así como comentarios que no aportan nada, fuera de tema o que no se ajustan a la netiqueta, la ortografía o la educación.

Para poder enviar tus comentarios has de permitir las cookies del sitio.

Por favor, escribe arriba el resultado de la operación planteada. Gracias.
  • Etiquetas HTML permitidas: <a> <em> <strong> <ul> <ol> <li> <p> <u> <br><strike> <blockquote> <div>

Más información sobre las opciones de formato...