9.1.3.2. Firma de documentos¶
Según se presentó en un principio, puede firmarse cualquier archivo o flujo de datos y a resultas de ello se obtendrá un archivo independiente de firma que contiene el resumen cifrado junto a metainformación sobre el proceso. Es lo que se llama firma independiente. Sobre ello no hay mucho más que añadir.
Sin embargo, el formato PDF permite integrar en un objeto interno la firma dentro del propio documento, razón por la cual –junto a la de ser independiente su aspecto de la plataforma– se utiliza para la formalización digital de contratos, solicitudes, promulgación de leyes, etc. que requieren validez legal.
Este proceso de firma:
utiliza certificados digitales X.509.
calcula el resumen de todo el documento, exceptuando el contenido de la propia firma[1].
permite adjuntar sucesivamente distintas firmas. Tenga presente, no obstante, que una de las firmas, no incluiría en su resumen los añadidos que suponen las que se hayan hecho después. Consecuentemente, el orden en que se firme es importante si los firmantes tienen distinta jerarquía: lo lógico, pues, es que firme primero el que tenga menos jerarquía, después el supervisor del primer firmante y así sucesivamente.
Nota
Aunque opcionalmente pueden generarse marcas visibles en el documento que denoten quién ha firmado y cuándo lo ha hecho, la verdadera firma digital no deja huella visible en una impresión: se verifica utilizando una herramienta de verificación sobre el archivo.
Ver también
Para conocer con mayor profundidad cómo se almacenan las firmas dentro de un PDF puede leer el extenso libro blanco sobre firmas digitales de Bruno Lowagie.
9.1.3.2.1. Estatus legal¶
La validez legal de la firma digital está desarrollada en España a través de la Ley 6/2020, de 11 de noviembre, reguladora de determinados aspectos de los servicios electrónicos de confianza, y el Reglamento eIDAS (Reglamento 910/2014, conocidos por sus siglas en ingles eIDAS). La normativa establece dos tipos de prestadores de servicios de confianza (esto es, de CA):
Prestadores cualificados, que son aquellos reconocidos como tales por un organismo supervisor[2]. Las obligaciones a los que están sujetos se encuentran enumeradas en el artículo 9 de la Ley 6/2020.
Prestadores no cualificados, que son aquellos que no gozan de este reconocimiento, aunque se encuentran inscritos para el ejercicio de su actividad.
Esta distinción origina que haya certificados digitales cualificados y certificados digitales no cualificados y, consecuentemente, una firma electrónica cualificada y una firma electrónica no cualificada. La diferencia legal entre una y otra firma es que la primera tiene los mismos efectos juridicos que la firma manuscrita, mientras que la segunda no, aunque puede ser admitida en un juicio[3].
El Ministerio publica en su web la lista de prestadores cualificados y no cualificados de confianza. Como todos los países de la Unión tiene la obligación de remitir estas listas también es posible la consulta de todos los prestadores europeos.
9.1.3.2.2. Apéndice práctico¶
Hay varias aplicaciones en Linux que permiten la firma y verificación de firmas de documentos PDF:
LibreOffice (dentro del menú «Archivo»).
Poppler y todas las aplicaciones que lo tomen como base (Zathura, Evince)[5].
Las proporcionadas por el Gobierno de España:
Autofirma, escrita en Java, para la firma.
La página Valide, para validación de documentos firmados con certificados expedidos por algunas CA reconocidas por el Ministerio de Industria, Comercio y Turismo. Esta página también ofrece la opción de firmar, pero lo hace, en realidad, recurriendo a un Autofirma que haya instalado en el sistema.
Nos centraremos en este apéndice práctico en el uso por línea de órdenes de pdfsign, una orden incluida dentro del paquete poppler-utils:
# apt install poppler-utils
Nota
El uso de las citadas utilidades del Gobierno no entraña mucha dificultad:
Autofirma se distribuye como un archivo .zip que, entre otros, contiene un paquete deb. La instalación de este paquete asegura que se satisfagan las dependencias y se asocie a la aplicación el tipo MIME
x-scheme-handler/afirma
que permite soportar el protocoloafirma://
que usan las páginas oficiales cuando requieren firmar un documento.La FNMT, que emite gratuitamente certificados personales, usa otra aplicación más, Configurador FNMT-RCM, exclusivamente para el proceso de generación de certificados. Esta es la aplicación que se encarga de generar las claves, solicitar el certificado y, finalmente, recibirlo. También para ella hay un paquete deb que se encargará de satisfacer las dependencias y asociar el tipo MIME
x-scheme-handler/fnmtcr
que permite soportar el protocolofnmtcr://
.
Advertencia
En realidad, ambas aplicaciones son aplicaciones escritas en Java, pero no incluyen entre sus dependencias el intérprete, por lo que, si no lo teníamos ya instalado, no se instalará y las aplicaciones no funcionarán. Cerciórese, por tanto, de que lo tiene:
# command -v java || apt install default-jre
Una vez que complete la instalación de ambas aplicaciones, cerciórese de que el sistema es capaz de soportar los dos protocolos referidos:
$ xdg-mime query default x-scheme-handler/fnmtcr
configuradorfnmt.desktop
$ xdg-mime query default x-scheme-handler/afirma
afirma.desktop
Para más información, consulte «Aplicaciones predeterminadas».
9.1.3.2.2.1. Validación¶
La validez de la firma de un PDF se puede hacer del siguiente modo:
$ pdfsig -nocert documento.pdf
La orden de arriba, sin embargo, no comprobará la fiabilidad del certificado firmante (-nocert). Para hacerlo, es necesario que el programa utilice un catálogo de claves que disponga de toda la cadena de confianza. Este catálogo es un almacen NSS como los que usa Firefox o Chromium. Supuesto que dispongamos de ese catálogo, entonces podremos comprobar la firma y cerciorarnos de la fiabilidad del certificado:
$ pdfsig -nssdir ~/.pki/nssdb documento.pdf
Ver también
Consulte cómo crear, consultar y mantener un catálogo NSS. En la orden de ejemplo se ha supuesto que se usa el catálogo creado por Chromium.
9.1.3.2.2.2. Firma¶
Advertencia
Para poder firmar documentos es necesario utilizar al menos la versión 21.01 de poppler-utils, y preferentemente al menos la 21.10 (o sea, al menos, Bookworm) que permite añadir un nuevo campo de firma.
Supuesto que dispongamos de un almacén NSS con nuestro certificado y su cadena de confianza:
$ pdfsig -nssdir ~/.pki/nssdb -add-signature -nick 'CADENA-EN-NSSDB-DEL-CERT' doc.pdf doc_firmado.pdf
Notas al pie