PDA

Ver la Versión Completa : Consejo para Firma Digital


URBANO
16-12-2009, 12:12:37
Hola Foro,

Estoy empezando un nuevo proyecto y necesito que los documentos que genera mi aplicación los convierta a PDF y se firmen digitalmente.
La conversión a PDF no es problema ya que en anteriores proyectos lo he realizado. Lo que no he realizado nunca es la firma digital por medio de un certificado digital alojado en el contedor de windows.
Necesito que estos documentos se firmen digitalmente para que tengan validez legal.

He estado mirando por el foro y he encontrado dos formas de hacerlo:

- A traves de un control activeX que te proporciona la aeat.
- A traves de los componentes SecureBlackBox de Eldos.


Por lo que he leido, el activex funciona bien, pero veo que es necesario disponer de conexión a internet para verificar la firma y conectarse con la aeat, con lo que ya estamos dependiendo de un tercero para que el sistema funcione.

Con respecto a SecureBlackBox, Neftali, habla muy bien de ellos. Pero tienen un coste que debo plantearme. Como hay varias versiones y dependiendo de esto varia el precio, no se exactamente que versión me sería la mas adecuada.

La idea que tengo es que mi aplicación firme los documentos pdf y poder a parte crear una pequeña utilidad que verifique esos documentos pdf sin necesidad de conectarse a internet, ni de terceros. Esta pequeña utilidad la haría llegar a aquellas personas a las que van dirigido los documentos.

Me gustaría que me aconsejarán y orientarán sobre que opción ven más adecuada o si conoceis algún otro metodo.

La mayoría de los mensajes que he visto sobre este tema son de Neftali, asi pues le agradecería mucho su consejo. Por lo que he leido, ha utilizado los componentes y me gustaría saber si con la versión standard sería suficiente para firmar documentos pdf y garantizar su validez jurídica. Y si no es mucho pedir, saber si estos componentes son dificiles de utilizar.
Acepto consejos de cualquier persona que los haya utilizados.

Bueno, esperando vuestros consejos me despido. Gracias.

Saludos.

Neftali [Germán.Estévez]
16-12-2009, 13:04:12
He estado mirando por el foro y he encontrado dos formas de hacerlo:

- A traves de un control activeX que te proporciona la aeat.
- A traves de los componentes SecureBlackBox de Eldos.

La idea que tengo es que mi aplicación firme los documentos pdf y poder a parte crear una pequeña utilidad que verifique esos documentos pdf sin necesidad de conectarse a internet, ni de terceros. Esta pequeña utilidad la haría llegar a aquellas personas a las que van dirigido los documentos.


Hola Urbano.

Sí que he hablado otras veces en los foros sobre este tema, ya que hace tiempo estuve con ello, aunque finalmente no llegamos a implementarlo.

Como tú bien has dicho, las dos opciones que he comentado otras veces aquí son estas dos.

El ActiveX de la AEAT (y algun otro similar que hay por internet, que provee algun ayuntamiento/organismo de alguna comunidad autónoma) tiene el problema (que tú bien comentas) de que estás dependiendo de terceros para tu trabajo (de la conexión, de la página web,...) y también desconozco qué pasará si se hace un uso intensivo de él.

Los SecureBlackBox (http://www.eldos.com/sbb/)lo llegué a evaluar y me parecieron fantásticos, pero son de pago. Hay que ver si la empresa/programa pueden asumir ese coste.

A parte de estas dos, sí hay otras opciones.

La primera (aunque desestimada por mí a las primeras de cambio) es pelearte directamente con CAPICOM (http://msdn.microsoft.com/en-us/library/aa375732%28VS.85%29.aspx); No te lo recomiendo a no ser que tengas "tendencias masoquistas"...:D:D:D:D

Dejando esta de lado, hay otras opciones como la de llamar a otros programas para que hagan la firma digital, en lugar de implementarla dentro de tu programa (de forma nativa). En este punto puedes encontrar programas ya realizados, ActiveX a los que puedes llamar o algunos que funcionan en línea de comandos.

Para empezar revisa:

Sinadura (http://www.sinadura.net/)
PortableSigner (http://portablesigner.sourceforge.net/)Puedes encontrar bastante información de ellos por internet. Si no recuerdo mal, de ambos se ha hablado en más de una ocasión en Kriptópolis (http://www.kriptopolis.org) (incluyendo unos pasos para ponerlo en marcha).

A parte hay ActiveX que permiten firma sin necesidad de conexión a Internet y que se supone que podrías integrar en tu programa. Recuerdo haber visto algo en la web de Chilkat (http://www.chilkatsoft.com/)y en la de Aloha (http://www.aloaha.com/), aunque si buscas encontrarás más... Date una vuelta por ellas.

Revisa también esta opción de iSigma(ClickSign) (http://clicksign.isigma.es/index.php/es/clicksign-vs-clicksign-pro.html).

Busca también sobre la herramienta SignTool de Microsoft (http://msdn.microsoft.com/en-us/library/aa387764%28VS.85%29.aspx), aunque creo que esta no se ajusta exactamente a los que necesitas, pero no está de más revisarla.

AÑADIDO: He recordado también la web de neevia (http://neevia.com/), que también tenía algun ActiveX al respecto.

Un saludo.

Lepe
16-12-2009, 23:29:02
Es que se necesita de ese tercero del que quereis desprenderos ;)

Para comprobar que tu certificado digital es válido (que no ha expirado o ha sido revocado) necesitas internet para acceder a tu OCSP (Online Certification Status Protocol) y que garantice que puedes firmar en ese mismo momento que quieres hacerlo.

INTECO (http://www.inteco.es/Seguridad/DNI_Electronico/Firma_Electronica_de_Documentos/)(Instituto Nacional de Tecnologias de la Comunicación) también tiene otro programa hecho en java para firmar documentos (PDF o lo que quieras).

Por cierto, los certificados por software (alojados en el explorador web) no es lo mejor de lo mejor... es preferible tenerlos en tarjeta criptográfica, más cuando cryptokit (http://c3po.es/cryptokit.html)sólo cuesta 35 €

Neftali [Germán.Estévez]
17-12-2009, 10:05:32
Para comprobar que tu certificado digital es válido (que no ha expirado o ha sido revocado) necesitas internet para acceder a tu OCSP (Online Certification Status Protocol) y que garantice que puedes firmar en ese mismo momento que quieres hacerlo.

Tal vez lo entendí mal.

Está claro que para comprobar que el certificado es válido o no, o si está revocado hace falta conectarse. Si se trata de eso Lepe tiene razón.

Yo había entendido que quería firmar PDF's y verificar los PDF's firmados; Con esa verificación entiendo que se refiere a que no han sido modificados ni alterados. Creo que hasta ahí no hace falta conexión.
Un paso más allá, como tú dices, es comprobar cómo se encuentra el certificado en este momento.

Que Urbano nos saque de dudas... :confused:

Lepe
17-12-2009, 11:19:05
Ah, Yo entendí "firmar y verificar offline", sorry.

Sea como fuere, si quieres que tu aplicación firme electrónicamente, aquí (http://www.inteco.es/Seguridad/DNI_Electronico/Desarrollo_de_aplicaciones_para_DNIe/)tienes más información, sé que es para DNIe, mientras tú dices "firma digital", pero bueno, el DNIe se podría usar para firmar documentos "con tu programa que no estaría capacitado legalmente para ello", (fíjate que lo he puesto entre comillas porque no estoy aún seguro de ello, tengo que investigar más).

¿el activeX de la aeat es sólo para factura-e? Es lo que veo, no dice que se pueda firmar digitalmente cualquier documento, sólo facturas :confused:.

y poder a parte crear una pequeña utilidad que verifique esos documentos pdf sin necesidad de conectarse a internet, ni de terceros.Esta pequeña utilidad la haría llegar a aquellas personas a las que van dirigido los documentos.
¿y quien garantiza que tu pequeña utilidad cumple con los requisitos de seguridad para la Verificación de firma electrónica? Que yo sepa es el Centro Criptográfico Nacional el que tendría que auditar y certificar tu pequeña utilidad.

INTECO ha elaborado los Perfiles de Protección del DNIe como documentos normativos que recogen una serie de requisitos de seguridad que van a permitir a los desarrolladores de aplicaciones de firma electrónica con DNIe certificar sus aplicaciones conforme al estándar de referencia en materia de seguridad: Common Criteria

En España el Organismo de Certificación es el Centro Criptológico Nacional-Centro Nacional de Inteligencia (CCN-CNI) que otorga certificados a productos según esta norma.

Norma de seguridad Mundial, y que windows 2000 tardó 2 años en obtener.

Yo recomiendo que tu programa exporte el PDF, y después uses sinadura, intecoFirma o los plugins para acrobat, outlook, etc para encarguarse de la firma electrónica.

URBANO
17-12-2009, 13:08:46
Bueno, Bueno, gracias por vuestros comentarios.

Neftali voy a revisar las opciones que me has dado y luego te comento que es lo que me han parecido.

Lo de no necesitar la conexión a internet es por que solo quería firmar el pdf y así asegurar que lo que hay en este no se ha modificado (como ha comentado Neftali). Vamos igual que el programa adobe acrobat prof. cuando inserta una firma (de la FMNT) en un documento pdf. El acrobat no verifica si el certificado ha sido revocado. Pero entiendo que comprobar que ha experidado no hace falta internet ya que todas las firmas incluyen la fecha de caducidad del certificado.
Como comenta Lepe, para comprobar que el certificado en el momento de la firma no esta revocado, hay que conectarse por medio los OCSP a la entidad que ha emitido el certificado que origina la firma. Pero me han comentado que esto la FMNT (por poner el organismo más común) no lo permite de forma gratuita y que vale una pastaaaa.

Estoy de acuerdo con Lepe, en lo de tener el certificado en un tarjeta criptográifica.

Con respecto a lo que comenta Lepe de si el programa que yo desarrolle cumple con las politicas de seguridad de la firma electrónica, es una cosa que si me preocupa y que me gustaría comentar. Entiendo que tanto si utilizo un ActiveX o un componente, estos son los que van a generar la firma y se encargar de cumplir con las politicas de seguridad. Ya que viendo un poco el funcionamiento del ActiveX de la aeat, desde mi programa lo único que hago es llamar a la función firma y esta genera el fichero ya firmado. Y llamando a la función verificar (pasando el fichero firmado) esta devuelve si el fichero es correcto. Entiendo que el resto de ActiveX o componentes funcionarán de forma similar. Asi pues, creo que lo que tendría que asegurarme es de que el componente o ActiveX que utilice cumpla con esas normas de seguridad. Que pensais ustedes?


He encontrado una utilidad que me valdría, PDFSigner de ANF. Esta utilidad la puedo llamar desde mi programa, pasando una carpeta de origen donden se encuentre los pdf que quiero firmar y una carpeta destino donde colocará los nuevos ficheros firmados. El programa no es caro (100 €) ,pero te obliga a utilizar para firmar solo los certificados emitidos por ANF y te cobran por cada firma realizada. Lo de la obligación de solo poder firmar con su certificado es por lo que comenta Lepe de verifcar si el certificado a expirado. Ya que este programita antes de firmar se conecta a internet a ANF y verifica el estado del certificado e incluso introduce un sello de tiempo del notario que posee ANF.

He encontrado también el componente "VisPDF -http://www.vispdf.com-", el cual me voy a descargar y voy a probar. Según he leido, permite generar pdf de tus informes y además te da la posibilidad de firmarlos digitalmente. No son muy caros (300 €). Lo conoceis?

Bueno, veo las distintas opciones y enlaces que me habeis comentado y os vuelvo a comentar.

Gracias de nuevo y saludos.

fjcg02
17-12-2009, 13:33:31
[...]
... es preferible tenerlos en tarjeta criptográfica, más cuando cryptokit (http://c3po.es/cryptokit.html)sólo cuesta 35 €

[...]


Puedo asegurar que dan buen servicio además.

Saludos

Lepe
17-12-2009, 15:22:40
¿creías que esto era gratis? Pues no, siempre se trata de lo mismo, sacar pastaaaaa :mad:

En cuanto al ActiveX aeat, ¿sólo tiene dos funciones para ser llamadas?. Ya sabes que hay 3 tipos de firmas electrónicas (simple, avanzada, reconocida); si el ActiveX permite hacer las 3 tipos de firmas, ¿quien garantiza que has usado las rutinas correctas?. Yo también estoy preocupado por ello, creo el código debe auditarse (por supuesto, por una tercera empresa independiente que no trabaja gratis...)

Acabo de ver que firma profesional (http://www.firmaprofesional.com/index.php?option=com_content&view=article&id=91&Itemid=106) ofrece también todos los servicios.


Lo de la obligación de solo poder firmar con su certificado es por lo que comenta Lepe de verifcar si el certificado a expirado.
¿seguro?, firma profesional permite firmar con certificados de otras (http://www.firmaprofesional.com/index.php?option=com_content&view=article&id=91&Itemid=106) Autoridades Certificadoras

URBANO
22-12-2009, 13:01:36
Vamos por parte. He estado mirando todos vuestros comentarios y enlaces y os comento como llevo el tema.

Lepe he estado viendo los servicios de firmaprofesional y entiendo que los productos que poseen solo pueden utilizar la firma que ellos generan (que vale un dinero, por supuesto. Por ejemplo: ProSign) y luego posee una serie de soluciones “Plataforma de firma electronica” que puede que si permita firmar con certificados de FMNT. Como todo esto son deducciones, me he puesto en contacto con ellos y les he planteado mis dudas. En el momento que me responda os comento.

Con respecto a los tipos de firma, entiendo que cualquier de estos ActiveX o componentes generan la firma electrónica avanzada (firma que permite identificar al firmante y comprobar la integridad de los datos firmantes, por estar vinculada al firmante de manera exclusiva). Lo que no van a generar es firma electrónica reconocida (que legalmente es la única equiparable a la manuscrita), ya que esta es igual que la avanzada, pero la tiene que haber generado un dispositivo seguro. He estado buscando información sobre dispositivos seguros y por lo que he leído ningún software podría cumplir la norma para ser certificado como dispositivo seguro. Por lo que para poder realizar esta firma hay que utilizar dispositivos hardware ya certificados (como comprenderéis no me voy a poner a desarrollar uno, ni se, ni tengo tiempo, ni medios, jejejeje). Buscando algo más, también he leído que la firma avanzada es válida en cualquier juicio y que es el juez el que interpreta la validez del documento. Luego pienso que un documento firmado con una firma avanzada es completamente legal. Y también hay que tener en cuenta que personalmente todas las tramitaciones que he realizado con la administración y ha requerido de mi firma digital la he realizado con mi certificado de la FMNT que esta alojado en el contenedor de Windows (soporte no seguro) y entiendo que estas son todas válidas.

Con respecto a las aplicaciones que me comenta Neftali, estoy mirando mas detenidamente ClickSign y Sinadura. Me he puesto en contacto con ellos para aclarar varios conceptos y estoy esperando respuesta.

Con respecto a los ActiveX o componente:
- He visto la pagina de neevia y esta posee un componente para crear pdf , pero no dice nada que pueda ser firmado.
- SecureBlackBox , lo he descargado y lo estoy evaluando. Con la versión Standard pensais que puede ser suficiente para lo que necesito?
- Aloha, he revisado la documentación. Voy a probarlo y averiguar su coste.
- Chilkat tiene una gran cantidad de ActiveX. Necesito más tiempo para revisarlos. Además no he trabajado nunca con ActiveX , luego me cuesta más.
Seguiré investigando y ya os comento más sobre estos componentes y activex.



Una duda más que se me ha planteado. Observo en documentos firmados digitalmente, que al final del documento ponen que para verificar la validez del mismo entren una página web ’www…..’ e introduzcan el código seguro '00cdx…..’. Este número como se genera? Lo genera la firma?

Bueno, puede que haya sido algo extenso, pero prefiero dejarlo todo bien explicado. Graicas de nuevo por sus comentarios.

Lepe
22-12-2009, 14:36:41
Hombre, a mí no me interesa crear una firma avanzada, yo quiero la reconocida (me interesa que sea equiparable a la firma manuscrita).

Por supuesto que la firma avanzada es legal, pero también lo es la simple ;). Depende de tus necesidades y lo que quieras sea demostrable en un juicio.

En principio debes hacer una firma avanzada, para "convertirla en reconocida" se debe cumplir:
- Que hayas usado un certificado reconocido (FNMT, Direccion General de la Policia [CA para el dnie] etc)
- Que haya sido creado con un SSCD (dnie, tarjeta/token criptográfico)

He marcado en negrita algunas cosas para que vea que un software sí puede generar una firma reconocida.

23399 LEY 59/2003, de 19 de diciembre, de firma electrónica.
45338 Sábado 20 diciembre 2003 BOE núm. 304
TÍTULO IV, CAPITULO 1, Artículo 24

2. Un dispositivo de creación de firma es un pro-
grama o sistema informático que sirve para aplicar los
datos de creación de firma.
3. Un dispositivo seguro de creación de firma es
un dispositivo de creación de firma que ofrece, al menos,
las siguientes garantías:
a) Que los datos utilizados para la generación de
firma pueden producirse sólo una vez y asegura razo-
nablemente su secreto.
b) Que existe una seguridad razonable de que los
datos utilizados para la generación de firma no pueden
ser derivados de los de verificación de firma o de la
propia firma y de que la firma está protegida contra
la falsificación con la tecnología existente en cada
momento.
c) Que los datos de creación de firma pueden ser
protegidos de forma fiable por el firmante contra su uti-
lización por terceros.
d) Que el dispositivo utilizado no altera los datos
o el documento que deba firmarse ni impide que éste
se muestre al firmante antes del proceso de firma.



Una duda más que se me ha planteado. Observo en documentos firmados digitalmente, que al final del documento ponen que para verificar la validez del mismo entren una página web ’www…..’ e introduzcan el código seguro '00cdx…..’. Este número como se genera? Lo genera la firma?

Creo ahí tienes la diferencia entre avanzada/reconocida.
En avanzada sí puedes modificar el documento antes** de la firma para incrustar texto o imágenes.

En reconocida no podrías.

El tema de los certificados por software de la FNMT es delicado, ya en kriptópolis le dedicaron un post bastante largo y didáctico (http://www.kriptopolis.org/grave-fallo-de-diseno-en-pki-compromete-las-firmas-digitales). Supuestamente la aeat está obligandote a usar un contenedor por software que tiene implicaciones que no te advierten.

También hay otro detalle del que no hemos hablado y es que la firma electrónica no garantiza que ese documento fue firmado en la fecha que indica el texto o documento. La FNMT tiene servicio de pago de sellado de tiempo (TIMESTAMPING)... después de tirar la piedra escondo la mano... ;)

** Aclaración: ClickSign por ejemplo modifica el documento a firmar incluyendo su logo en versión gratuita o bien los datos de los firmantes en la versión pro. Por supuesto no voy a poner en duda a una de las máximas autoridades en la materia, pero al menos en mi caso no es viable, ya que previamente he hecho un HASH al documento a firmar y lo utilizo como clave de encriptación de otro proceso encadenado. La simple modificación del PDF invalidaría el proceso encadenado. Supongo la versión de pago podrá eliminar la modificación del PDF; entraré en materia una vez tenga mi dnie (la semana que viene).

Lepe
30-12-2009, 22:20:23
Mi turno (de como lo llevo).

Antes de empezar, debo recordar que no todos tenemos las mismas necesidades, por tanto, evaluad por vuestra cuenta

Isigma: ClickSign tanto la versión gratuita como la PRO son programas finales para el usuario. La versión PRO permite depositar los documentos a firmar en una carpeta y obtienes los firmados en otra, es una característica que soportan casi todos los programas de pago. Son asequibles en cuanto a precio y compatibles con factura-e.

eldos: en PDFSecureBlackBox se distribuyen los .dcu en la versión de prueba. Trae muchos proyectos delphi que funcionan "out of the box", de hecho el ejemplo sobre certificados, detectó tanto el dnie como el de FNMT (por software). La documentación es muy buena. Solo me queda una duda, ya que dice que ese pack inlcuye las funciones principales del pack PKISecureBlackBox y no sé exactamente cuales son. Si nos decidimos por ellos habrá que preguntar. En caso de que sea necesario comprar una licencia del PKI, sale más rentable comprar el pack "SecureBlackbox Data Security" (La versión estandard no lleva el pack para firmar PDF)

neeviapdf: PDFsign/encrypt Permite firmar y encriptar a través de interfaces COM ( CreateOleObject("neevia.pdf") ). Además también tiene otros componentes para crear el PDF desde cero.

aloaha: Las versiones light y Pro son programas para el usuario final, la primera en la que se puede usar la programación via objetos COM es la enterprise y se sale fuera de mis necesidades (aporta mucho más de lo que necesitamos). Tienen una aplicación gratuita "Aloaha sign!" para firmar PDFs, funcionó muy bien, detectó el lector de tarjetas y muestra una ventanita en el área de notificación de windows cada vez que sacas o metes el dnie. La única pega es que acepta un PIN numérico y el mio es alfanumérico. Supongo en versiones de pago eliminarán esa restricción.

Chilkat: Crypt2 es un activeX que se registra desde Component-> install ActiveX. La ayuda que está documentada es buena, aunque todavía te encuentras algún que otro "to be documented" en algunos métodos. Tiene ejemplos delphi y hasta donde he visto tanto la documentación como ejemplos son Online. No he podido ver si admite tarjetas inteligentes es decir, obtener el certificado digital alojado en dnie.

Lo ideal sería encontrar un activeX con las funciones de ClickSign, simple para el usuario e indoloro para el programador.