PortableSigner (y III): Uso y verificación de firmas con Acroread

 

 

Ahora que ya hemos instalado Java y PortableSigner en nuestro sistema, de forma que pueda ser usado por cualquier usuario, vamos a ver la forma en la que podemos usar este programa para firmar digitalmente nuestros documentos PDF...

Lo que necesitamos para firmar es;

a) El entorno Java y el programa PortableSigner instalado en nuestro sistema.

b) Un certificado digital X.509 en un contenedor PKCS#12, por ejemplo, un certificado de la FNMT.

c) Un documento en formato PDF.

Si tenemos instalado nuestro certificado digital en Mozilla Firefox o en Thunderbird, es muy fácil conseguir nuestro certificado X.509 en su correspondiente contenedor PKCS#12. El procedimiento es el mismo que deberíamos seguir para hacer una copia de seguridad de nuestro certificado, una vez que lo hemos descargado de la página de la FNMT a nuestro navegador.

Si somos usuarios de Firefox 3 en castellano, comenzaremos por arrancar el navegador y seleccionaremos la secuencia de mandatos Editar | Preferencias. En la ventana que nos aparece en pantalla, haremos clic sobre el icono Avanzado, seguido de otro clic, sobre sobre la pestaña Cifrado. Seguidamente, haremos clic sobre el botón Ver certificados y seleccionaremos la pestaña Sus certificados, en el Administrador de certificados de Firefox.

Ahora, para realizar la copia del mismo, haremos clic sobre nuestro certificado para seleccionarlo en la lista y pulsaremos el botón Hacer copia. En la ventana siguiente, tendremos que seleccionar un directorio y un nombre para nuestro contenedor y después, tendremos que hacer clic sobre el botón Guardar. Ahora, deberemos introducir la contraseña de seguridad del Almacén de certificados de Firefox, ya que estamos exportando la lave pública de nuestro certificado, junto a la clave privada, que está protegida mediante la contraseña de Firefox.

Seguidamente, se nos solicitará la contraseña que protegerá nuestro certificado dentro del archivo contenedor PKCS#12 y que será la que tendremos que utilizar posteriormente en PortableSigner para firmar. La contraseña para el contenedor hay que introducirla dos veces, para evitar errores. Como siempre, se recomienda que dicha contraseña sea lo suficientemente robusta, para lo que nos vendrá muy bien la barra medidora de calidad de la contraseña, que aparece en la parte inferior de la ventana de Firefox.

Hecho esto, Firefox nos dirá que se han exportado con éxito nuestra clave pública y la privada y tendremos en el directorio elegido un archivo con la extensión .p12, que es el que contiene nuestro certificado de forma segura. Hay que señalar, que por el momento, el programa PortableSigner no admite certificados digitales de más de 1024 bits.

Vamos a firmar nuestro primer documento con PortableSigner. Comenzaremos arrancando el programa, usando cualquiera de los dos procedimientos que vimos en el artículo anterior. Con ello, nos aparecerá la interfaz de usuario del mismo, que como veremos, es muy simple.

 

 

Lo mejor es seguir el orden numérico que aparece en la ventana, para ir haciendo las cosas.

1.Comenzaremos por hacer clic sobre el botón “Search” de la línea de entrada de texto 1, “Inputfile”, y seleccionaremos el archivo PDF que queremos firmar.

2.Automáticamente, en la línea 2, “Outputfile”, nos aparecerá la misma trayectoria y el mismo nombre de archivo, al que se le han añadido los caracteres -sig y que será el correspondiente a nuestro documento firmado. Por supuesto, si lo deseamos, podemos elegir otro nombre y trayectoria para el documento firmado, para ello, podemos escribir directamente en la línea de entrada, o usar el botón “Search” que hay a su derecha. Hay que señalar, que el documento original no firmado, no se borrará del directorio tras la firma, por lo que es conveniente no equivocarse a la hora de elegir el archivo firmado.

3.Ahora, haremos clic sobre el botón “Search” que aparece a la derecha de la línea 3, “Signature”, y seleccionaremos el archivo contenedor PKCS#12 que almacena el certificado que deseamos usar para firmar, como hemos comentado antes, dicho archivo tiene la extensión .p12 y está protegido por medio de una contraseña.

4.Por el momento, dejaremos sin seleccionar la casilla de verificación “Append signature Block”, que veremos más tarde y sí marcaremos la casilla de verificación “Finalize document”, que impedirá que se añadan más firmas válidas una vez que hayamos firmado el documento.

5.En la línea de entrada de texto número 5, denominada Password, se deberá introducir la contraseña que protege el archivo contenedor de claves que hemos seleccionado.

6.Para finalizar, haremos clic sobre el botón OK.

Ahora, si todo ha funcionado adecuadamente, en la línea 8, “Result”, nos aparecerá un mensaje en verde con el texto “generated and signed” y el PDF firmado estará en la trayectoria indicada en la línea de entrada de texto 2, “Outputfile”. Si la firma no se ha generado adecuadamente, aparecerá un mensaje en rojo, por ejemplo “Error reading certificate (wrong password). Hay que señalar, que por el momento no me funcionan los botones “View”, que nos permitirían visualizar el documento seleccionado y el firmado.

 

Opciones especiales del programa

El programa permite dos opciones especiales, la firma múltiple y simultánea de un documento y la adición de una página adicional con un bloque de firma. Veamos cada una de ellas.

a) Firma múltiple

Si volvemos a firmar el documento que hemos generado antes con un archivo de firmas distinto, ya sea del mismo usuario, o de otra persona, al haber seleccionado la opción “Finalize document”, solamente aparecerá como válida la última firma realizada. Para evitar esto, por ejemplo, cuando varias personas tienen que firmar un documento, o cuando una persona quiere añadir más de una firma, el procedimiento es muy sencillo. Bastará con no seleccionar la casilla de verificación “Finalize document” hasta que no firme la última persona, o con el último certificado. De esta forma, cuando se verifiquen las firmas, aparecerán todas como válidas y no únicamente la última que englobaría a todo lo demás, es decir al documento y a todas las firmas anteriores.

 

b) Bloque de firma

Si hacemos clic sobre el botón Options, asociado a la casilla de verificación “Append signature block”, nos aparecerá esta ventana con ciertas opciones de configuración.

 

 

Como se puede ver, se puede seleccionar un icono, o una imagen, que también puede ser una fotografía del firmante, que se añadirá al bloque de firmas, asimismo se puede añadir un comentario a la firma, así como una razón para la firma del documento, por ejemplo, “Estoy de acuerdo con el documento” o “Soy el autor del documento”, además, de una ubicación geográfica para la firma. Este programa usa siempre para firmar el reloj del sistema, por lo que la firma no tendrá la misma validez, en lo que a fecha y hora se refiere, que se si se usase un servidor de sellos de tiempos reconocido.

Si seleccionamos la casilla de verificación “Append signature block”, durante la firma del documento, se añadirá una nueva página, con un bloque de firmas similar a este y que es muy útil, cuando se obtiene una copia impresa del mismo:

 

 

Como se puede ver, he modificado el texto del campo de comentarios, para que sea más explícita la forma de verificar las firmas con Acroread.

 

Configuración de Acroread para verificar las firmas

Aunque Acroread no es una aplicación libre, es una aplicación de libre descarga, que está disponible para una gran cantidad de plataformas y se puede configurar muy fácilmente en todas ellas, para comprobar la validez de las firmas generadas por PortableSigner. Suponiendo que tenemos instalado Acroread en nuestro sistema, para verificar una firma, necesitamos el certificado raíz del emisor del certificado (Autoridad de Certificación) con el que se ha realizado la firma del documento, por ejemplo, el certificado raíz de la FNMT.

Hay dos formas de obtener el certificado raíz de la FNMT, directamente a través de su página web, que es lo que recomiendo, o mediante su exportación, si ya lo tenemos instalado en nuestro navegador, o en nuestro programa de correo electrónico.

El procedimiento de exportación es muy parecido al que hemos visto para el certificado de usuario, pero en este caso, encontraremos el certificado en la pestaña “Autoridades”, en lugar de en la pestaña “Sus certificados” y para la exportación del mismo, no se nos pedirá ninguna contraseña, ni se almacenará el certificado en un contenedor PKCS#12, por ser una clave pública que no tiene su clave privada asociada. Para la exportación deberemos seleccionar el formato .p7b, de forma que sea reconocido por Acroread.

A partir de este momento, supondremos que tenemos instalado Acroread para Linux en su versión 8.1.2 (21/06/2008), en castellano. Para instalar el certificado, abriremos Acroread y usaremos la secuencia de mandatos Documento | Administrar entidades de confianza. En el recuadro de selección que nos aparece en la parte superior de la ventana, seleccionaremos Certificados y haremos clic sobre el botón Agregar contacto y finalmente, sobre el botón Examinar. Después de seleccionar el certificado raíz, haremos clic sobre el botón Aceptar, seguido de Importar y de nuevo, sobre el botón Aceptar.

Después de verificar que el certificado es correcto con el botón Mostrar certificado, tenemos que editar la confianza del mismo. Para ello, haremos clic sobre el botón Editar confianza y seleccionaremos las casillas de verificación “Firmas y como raíz de confianza” y “Documentos certificados”, después, pulsaremos en Aceptar para finalizar.

 

 

Ahora, si abrimos un documento firmado por nosotros con un certificado de la FNMT válido, nos aparecerá en la parte superior de la pantalla de Acrobat, un recuadro similar al siguiente:

 

 

Como se puede ver, no se puede verificar adecuadamente la firma el autor. El motivo es que todavía no hemos editado la confianza para el autor del documento, para ello, haremos clic sobre e icono Propiedades de la Firma, seleccionaremos la pestaña Resumen y después, haremos clic sobre el botón Mostrar Certificado.

Tras comprobar la validez del mismo, a partir de la información que se muestra en la ventana, haremos clic sobre la pestaña Confianza y pulsaremos el botón Agregar identidades de confianza. Ahora, pulsaremos el botón Aceptar, en la ventana de Aviso de seguridad de Acrobat y de nuevo, pulsaremos el botón Aceptar, en la ventana Importar configuración de contactos, siempre después de haber seleccionado las casillas de verificación adecuadas para el uso del certificado. Como mínimo, deberían seleccionarse las dos primeras casillas. Para finalizar, cerraremos la ventana Visor de certificados con el botón Aceptar y después, la ventana de Propiedades de la firma, mediante el botón Cerrar de dicha ventana.

Ahora, si cerramos Acroread y volvemos a abrir el mismo documento, nos cambiará lo que aparece en la parte superior, indicando ahora los datos del firmante (NIF y correo electrónico asociado al certificado) y la validez del certificado.

 

 

Mediante la opción Propiedades de la firma, podemos comprobar más datos relativos a la firma y al documento que acabamos de recibir. Por ejemplo, si recordamos, en la ventana de configuración de PortableSigner, también se podía indicar un motivo de la firma y un lugar de la firma. Para comprobar estos campos, solamente hay que pulsar sobre el botón Propiedades de la firma, de la parte superior derecha del recuadro azul y seleccionar la pestaña Resumen en la ventana que nos aparece. Hay que tener en cuenta esta posibilidad, puesto que el motivo de la firma de un documento, aunque no es usual, también puede ser “No estoy de acuerdo con el contenido de este documento”, por ejemplo para no aceptar un contrato y tendría validez legal. Así que nunca pensemos por omisión que la firma de un documento PDF, que permite definir este campo por el usuario, implica la aceptación o la autoría del documento.

"Copyleft 2009 Fernando Acero Martín. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved".

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
anónimo's picture

enlace roto


Buen trabajo, pero el enlace al certificado de la FNMT está mal ya que apunta a:

http://www.cert.fnmt.es/content/pages_std/certificados/FNMTClase2CA.cer%...
(http://www.cert.fnmt.es/content/pages_std/certificados/FNMTClase2CA.cer")

y tendria que apuntar a:

http://www.cert.fnmt.es/content/pages_std/certificados/FNMTClase2CA.cer

Sobran la comillas (")

admin's picture

Gracias


No era exactamente eso, pero de todos modos ya está arreglado.

anónimo's picture

No puedo exportar a .p12


Después de seguir tu pasos para exportar el certificado a un contenedor PKS#12, me encuentro siempre con el mismo error... después de introducir el nombre el arcivo y la contraseña del mismo, cuando empieza crear el .p12 salta este error...

"No se ha podido crear el fichero de copia de seguridad PKCS #12 por razones desconocidas"

Alguien sabe por que?

Lo estoy haciendo des de un Firefox 3.0.7 bajo un WXP.

Gracias!

anónimo's picture

Es un fallo antiguo que parecía solucionado...


...pero con la actualización de Firefox 3.0.7 ha vuelto a producirse. Tampoco podrás importar el certificado.

anónimo's picture

gracias, pero...


tengo que decir que con internet explorer 6 pasa algo parecido!

de hecho no importa, al llegar a casa lo he podido exportar con el firefox de mi Gentoo... ;)

gracias por responder, y por el artículo!

anónimo's picture

Hace tiempo yo tuve ese problema


El caso es que ese "por razones desconocidas" tiene más peso que el que parece ya que el equipo de desarrollo de Mozilla dice que es por culpa de los desarrolladores del módulo de seguridad, que no quisieron implementar un sistema más explícito.

Después de mucho probar, en mi caso era culpa de un plugin, que en teoría no tenía nada que ver con ese asunto, el hilo es este. Lo siento, no te puedo ayudar más y menos bajo XP del que no tengo demasiados conocimientos. Pero lee el artículo y los comentarios.

http://www.kriptopolis.org/problema-firefox-3-certificados-digitales

Un saludo, Fernando Acero

anónimo's picture

Licencias y limitaciones


Hay algún problema de licenciamiento por utilizar formato PDF?

Que tan flexible es la firma en PDF? Puedo firmar páginas, párrafo, múltiples firmas en un item, firmas anidadas etc?

Saludos

anónimo's picture

El PDF es un formato libre


Como he comentado, el PDF es un formato abierto, amparado por dos ISO, una para el almacenamiento a largo plazo y otra basada en la versión 1.7. No tiene problemas de licencias ya que Adobe nunca ha querido ejercer derechos de patentes sobre él y es usado sin restricciones desde hace años por aplicaciones de software privativo y libre.

Solamente se pueden firmar documentos, con varias opciones de firma, visible o no visible. Dependiendo de la herramienta de firma, se pueden hacer firmas simultáneas.

Las firmas anidadas como tal no existen, puesto que una firma que englobe a otra firma anterior, invalidará a la primera ya que modifica el documento, aunque ambas firmas permanecerán en él.

Un saludo, Fernando Acero

anónimo's picture

Las firmas anidadas SI EXISTEN


Las firmas anidadas si existen, en teoría tienes razón que se modifica el contenido (valor Hash) pero tu puedes necesitar que un documento sea firmado por más de una persona, para algún usos especifico. Esto no tiene ningún impedimento desde el punto de vista teórico-técnico tu firmas el documento y la firma anterior acreditando tu conformidad con el documento y la firma que presentaba anteriormente. En resumen certificas la firma anterior.

Fernando Acero's picture

Está claro...


Es lo que he dicho yo pero de otra forma, lo que pasa que yo me he centrado en la validez de las firmas anteriores no en la imposibilidad física de firmar de forma consecutiva. Tu también corroboras que la firma consecutiva, invalida las anteriores, mero mezclamos conceptos, una cosa es la firma consecutiva y otro bien distinto, la anidada. Sin embargo, desde el punto de vista de la seguridad, aunque se pueda hacer, cada tipo de firma tiene sus riesgos.

Yo he hablado en mi contestación al comportamiento de PortableSigner con la opción "cerrar documento". Si no lo cierras, las firmas son concurrentes, si lo cierras, son consecutivas y como el documento en este caso quedaría "read-only", la siguiente firma invalidaría la anterior. Pero hablas de firmas anidadas, bien, también existen y tienen su utilidad, pero por lo que he visto en la documentación, no las soporta PortableSigner, aunque no lo he podido probar. Si alguien lo hace, sería bueno decirlo aquí para ver si las firmas de un documento cerrado, son consecutivas invalidando la anterior, con independencia de que se ha modificado o no el documento antes de la segunda firma, o si son anidadas y las dos son válidas, si no se modifica el documento ni la firma anterior. Más bien creo que PortableSigner, cuando se cierra el documento y se firma por un segundo, invalida la firma anterior.

Yo uso firma anidadas en mis correos, la primera capa es GPG y la segunda, de la FNMT. La segunda verifica el documento completo, texto y firma, pero no modifica el Hash GPG, al ser externa al texto que valida GPG, que también se valida sin problemas. Sería muy complicado encontrar una colisión que fuera común a las dos firmas y por lo tanto, que se pudiera falsear mi documento, seguridad extra casi a prueba de bombas. Por otra parte, ya no es necesario que yo me presente en persona para que alguien le de validez a mi firma GPG, cualquiera puede comprobar que es la verdadera usando mi firma de la FNMT y descargando la clave pública de cualquier repositorio de los que se encuentra, gracias a que la firma de la FNMT, a diferencia de la GPG, si existe un tercero de confianza que dice que mi firma es válida y que yo soy el que digo que soy.

Desde el punto de vista de la funcionalidad de PortableSigner, que es el objeto del artículo, este programa, como he dicho, permite las firmas concurrentes y las consecutivas, pero no las anidadas, como también he dicho, no he podido probar el comportamiento real con dos firmas, ya que desgraciadamente, tengo solamente dos certificados digitales y uno es de 1024 bits y otro de 2048, que no funciona con PortableSigner.

Pero imagina que trabajas en una oficina "sin papeles" y preparas un informe que firmas y mandas a tu jefe directo y donde dices. que la empresa "no tiene capacidad para recuperarse de la crisis", tu jefe considera que esa conclusión es muy fuerte y que "sí tiene capacidad", por lo que modifica las conclusiones del informe y lo firma antes de enviarlo a la dirección. Tu firma sigue apareciendo en el documento, pero el documento que ha firmado tu jefe, que es el que tiene la única firma válida, ha cambiado de forma substanciaĺ, más bien, es todo lo contrario de lo que habías escrito en el informe. Pero también habría invalidado tu firma, aunque no lo hubiera modificado, por el funcionamiento de PortableSigner, buena duda.

Para evitarlo, existen las firmas concurrentes, el documento queda abierto y puede ser firmado por las dos personas una tras otra , pero en lugar de firmar uno sobre otro, lo que se firma por ambas personas, es el documento, no el documento + la firma del anterior, siendo las dos firmas igualmente válidas, e indicando además, que el documento no ha sido modificado antes proceder a la segunda firma.

Si el último firmante cierra el documento y alguien lo firmase tras eso, invalidaría todas las firmas anteriores, como si hubiera modificado el contenido del documento. Mediante las firmas concurrentes, está claro que el documento firmado no ha sido modificado por el segundo y que está de acuerdo con lo que se dice en él (bueno, esto se puede modificar, o matizar, en el campo del motivo de firma). Recuerda que en el campo de Motivo de firma, puede añadir que está de acuerdo con el documento y con la firma del subordinado. Aunque también es cierto, que en el mundo digital, no necesito que mi jefe "reconozca" mi firma ante terceros, la conformidad/validez de la firma la proporciona el sistema de verificación mediante el certificado raíz que valida todas las firmas de la organización. Si el jefe modificase el documento en la firma concurrente, invalidaría tu firma y solamente sería válida la suya.

En el caso de la firma consecutiva, el que recibe el documento no sabe si el Jefe ha firmado para dar su conformidad, si o además de firmar, ha podido modificar el documento, incluso substancialmente, ya que en ambos casos, la firma del primero que firmó el documento quedaría invalidada. Sin embargo, en la firma anidada, en teoría, las dos firmas serían verificables si el documento, o la primera firma, no ha sido modificados antes de la segunda firma, algo que como he dicho, no soporta PortableSigner, por lo que he interpretado yo, aunque puedo estar equivocado, por no haberlo probado.

En el mundo de Internet, aunque tu firma haya quedado invalidada por una posterior, el caso es que tu nombre puede aparecer y según el caso, te podría producir problemas. Puedo hablar de casos cercanos, en los que una persona ha tenido problemas por aparecer su dirección de correo en una lista de distribución de un mensaje que ha ido cambiando en cada salto que daba, hasta acabar molestando a alguien que ha puesto una denuncia a todos los dueños de correos electrónicos que aparecían en el documento. Por lo que el escenario puede ser de lo más variado y más, cuando los jueces no son expertos en la materia, por ello, yo siempre firmo mis correos electrónicos, además, con doble firma anidada GPG y de la FNMT.

Un saludo, Fernando Acero

"Copyleft Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved. Quotation is allowed."