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.2. Apéndice práctico

Hay varias aplicaciones en Linux que permiten la firma y verificación de firmas de documentos PDF:

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 protocolo afirma:// 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 protocolo fnmtcr://.

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