jueves, 5 de diciembre de 2013

Hablemos de pki (infraestructura de clave pública), ejbca, openssl, thales ncipher, smartcard, token, firma digital,firma de tiempo y dnie de Perú

Hola, después de algunos meses regreso al blog esta vez para iniciar varios post sobre pki (infraestructura de clave pública),ejbca (primekey), openssl, thales ncipher, smartcard, token, firma digital,firma de tiempo y dni electrónico en el Perú. Ya vengo en este tema por 3 años y creo que ya tengo algo de material para escribir sobre este tema, así que bueno espero les sirva de algo la experiencia que adquirí en este trabajo diario.


Trabaje con el software libre Ejbca desde su versión 3.x (después de probar varias soluciones como openca, newpki, siti-brasil y otros menos populares), la cual vi muy poco ya que rápidamente escale a la versión 4.x, esta versión me parece muy estable y buena. En lo largo de estos años llegue a agregar o a modificar pequeñas opciones que hicieron que mis usuarios puedan manejar de forma mas amigable y sin complicaciones. Ademas de esto conseguí unir este software con algunos medios o equipos (ampliance) criptograficos (aunque un amigo dice que la palabra correcta es equipo de cifrado porque criptografico viene de cripta), bueno siguiendo, uno de estos equipos con los que trabaje fue un HSM ncipher 2000 aunque también trabaje con versiones superiores, nada complicado ya que también tuve que aprender a manipularlos y entender su lógica (supongo que haré un post de este tema también), pero ahi vi que un HSM es muy similar a un smartcard o a un token viendo desde el punto de vista de PKCS11, así que como juego uni al ejbca con un smartcard de gemalto y un token de safenet. Bueno aunque debo confesar que me fue mucho mas facil manejar este equipo HSM con openssl, ya que Thales tuvo la inteligente idea de integrarla en su producto a la venta. Bueno hasta ahí todo parecía bastante aburrido administrando solo ejbca, creando perfiles y configuraciones para publicar crl o brindar ocsp, hasta que un día hubo necesidad de integrar a ejbca con un software de Entidad de Registro o RA, bueno ahí se puso la cosa mejor porque hubo mucho material por rebanar usando el webservice de Ejbca, claro que había otras maneras (protocolos) pero se adopto este modelo porque siendo sincero la manera mas sencilla fue usando webservice. Así que manos a la obras se hizo un cliente en java (consola) que ejecutaba desde el ide eclipse, se podían hacer las operaciones básicas como emisión, revocación, búsqueda de usuarios o certificados y algunas otras operaciones básicas. Así que cuando llego la hora de hacer el web no fue difícil únicamente escalar ese código de consola a web. Lamentablemente no participe de la construcción del RA solo con el análisis y diseño pero no con la implementación. Una vez hecho esto nuevamente de regreso a la monotonía, hasta que hubo otro reto, que en realidad se tuvo desde el inicio y es que las autoridades o certificados que teníamos cargados en EJBCA no se encontraban en el repositorio de windows por lo que había que hacer mucha configuración en la maquina de los usuarios para que lograsen generar un certificado nuestro usando la plataforma ejbca, así que bueno se tubo que alimentar de un script adicional en la pagina de descarga de ejbca que verificaba que nuestro certificado raíz se encontrara instalado, con esto se alivio un poco el problema, pero a pesar de esto algunas veces teníamos inconvenientes, así que el siguiente paso era encontrar una solución a esto. Y oh sorpresa se me ocurrió construir un cliente versión escritorio que instalara y haga toda la configuración necesaria en la maquina del usuario al estilo script o bash de windows, bueno hasta ahi todo bien, pero aun tenían que usar la web de Ejbca para descargar el certificado lo que hay veces generaba uno que otro problema eventual, así que el próximo paso fue hacer crecer este cliente de escritorio de modo que este se encargara de generar los certificados en la maquina del cliente conectándose al webservice de ejbca, pues demoro pero se consiguió. Y el resultado fue un aplicativo de escritorio que configura las autoridades raíz, genera el pedido o csr en la maquina del cliente usando el repositorio de windows y enviando este request o csr al webservice de ejbca y obteniendo finalmente el certificado que luego es instalado en la maquina del cliente, el resultado fue un aplicativo en c# que no necesita ser instalado y que pesa 400 K y fácil de usar y evita problemas al usuario final. Bueno eso es un resumen de todo lo que hice por el mundo del PKI o Certificación Digital. En vista de que generar un certificado digital no es suficiente para usar esta tecnología, después de ese tema estuve metido investigando sobre software de firma digital (otro tema bastante grande) y conseguí hacer algunas versiones demo en c# y java, que tal vez a futuro me anime a publicar gratuitamente pero creo que debería darle un mejor acabado (lo pensare). Y finalmente puedo hablarles también un poco de signserver que es un servidor de firma de tiempo que también conseguí unir a un equipo Thales ncipher usando por supuesto un NTP para garantizar la hora.

Espero no haya sido muy confuso, pero hay que considerar que son poco mas de 3 años resumidos en un párrafo y adicionando que no es todo sino que hay pequeños detalles que no mencione en este resumen, pero supongo los iré develando poco a poco. Espero les sirva y mi blog se mas visitado ya que lo tuve muy descuidado. Ah y disculpen si se me fue alguna palabra o acento por ahí, pero es que no soy un literato aunque el corrector ortográfico ayuda igual lo pase de frente.

6 comentarios:

  1. Que tal
    me parece interesante lo que mencionas veo que manejas windows, una consulta
    como manejas la infraestructura de servidores para el PKI, cuentas con varios firewalls?

    ResponderBorrar
    Respuestas
    1. Hola Davis disculpa por recien responder, en realidad uso linux pero eventualmente para algunos ejercicios uso windows. En cuanto a los firewalls si usamos unos 5 para crear zonas y demas pero todo depende de software uses y como quieras protegerlo de acuerdo a tu alcance.

      Borrar
    2. gracias por responder, tienes razón la seguridad depende de cada uno
      otra consulta sabes cuales son los procedimientos para realizar una ceremonia "root key ceremony" o sabes donde puedo encontrar información sobre este punto
      y nuevamente gracias.

      Borrar
    3. Este comentario ha sido eliminado por el autor.

      Borrar
    4. Hola Davis por lo que se la parte de root key ceremony es exigido por webtrust, así que ahí debería estar la parte normativa, pero por otro lado si ese no es tu requerimiento, que documentes en un acta todo lo que vienes realizando debería ser suficiente. Mas que nada testigos de todo lo que estas ejecutando.

      Borrar