Lo que los usuarios finales suelen recibir como capacitación en Firma Digital suele tener fundamentos básicos para realizar el proceso de firma y la validación. No obstante, existen ciertos detalles que no son tan conocidos o que suelen interpretarse de una forma que dista de la realidad. A continuación una lista de ellos.
Se pueden agregar firmas digitales sin alterar el fichero y almacenar la firma por separado
El formato más común es firmar documentos PDF con firmas bajo la especificación PAdES. Para los formatos OpenDocument de LibreOffice (odt, ods, etc.) y Office Open XML (docx, xlsx, etc.) de Microsoft Office utilizan firmas XAdES.
En Costa Rica se reconocen 3 formatos oficiales y sus firmas avanzadas, entre los cuales está la firma avanzada dentro de los PDF (PAdES), aunque también existen firmas avanzadas generadas en estructuras binarias (CAdES) y XML (XAdES), que pueden estar combinada con el propio documento (enveloped), como un componente separado (detached), o conteniendo dentro el contenido firmado (enveloping).
Cuando se utiliza detached, no necesariamente se refiere a que sea un fichero separado, sino separado del contenido que firma. Técnicamente hablando, la firma PAdES es una firma CAdES de tipo detached que firma un resumen que abarca el rango del documento cuyo resultado de las firmas PAdES es en sí de tipo enveloped.
La Política de Formatos Oficiales de los Documentos Firmados Digitalmente de Costa Rica indica que el formato XAdES es para documentos XML, si bien es cierto que es ideal para este tipo de documentos, el fichero XML también puede usarse para firmar contenido binario en teoría. De hecho así están funcionando en la práctica las firmas XAdES de Office y LibreOffice. Por ejemplo, una firma digital XAdES detached puede incluir una referencia a un fichero de cualquier tipo. Otro ejemplo fichero XAdES enveloping puede contener datos binarios en base64 en su interior, aunque sea menos eficiente.
Las desventajas de estos formatos no tan conocidos es que requieren software específico para su manejo y validación no tan popular como pueden ser las firmas de los PDF de Acrobat Reader, Office y LibreOffice, pero sin duda existen.
Para ver una muestra de las posibilidades según estos perfiles de formatos de firma avanzada, existe un cuadro en la documentación de la librería DSS como guía de perfiles de firma avanzada.
Es posible declarar una fecha de firma cualquiera
Programas como Acrobat Reader la llaman “hora del reloj del firmante”. Esta hora se puede ajustar de forma arbitraria a la hora de firmar. A pesar del nombre, no significa que solo sea posible ajustando la hora del reloj de la computadora para hacer esto: hay programas de firma donde puedes elegir la fecha y hora que quieras directamente. Las firmas digitales no garantizan una hora de firma específica, de hecho esto no existe conceptualmente. Cuando se firma un documento tradicional en papel se suele poner la fecha que consideres, pero la que suele ser relevante a la hora de demostrar algo es por ejemplo si llegó antes o después es la que el receptor marque como recibida a la hora de hacer un trámite. Algo así es lo que sucede en los documentos electrónicos también, donde lo que existe es la fecha mínima probada de la existencia del documento firmado, gracias a los sellos de tiempo que se agregan durante el proceso de firma avanzada.
Los documentos firmados digitalmente deben resellarse cada cierto tiempo para asegurar su integridad
La existencia de un sello de tiempo a nivel documento que se agrega para archivado longevo bajo el nivel de firma con perfiles como PAdES-LTV, PAdES-B-LTA, XAdES-A XAdES-B-LTA, etc. no significa que se garantice su seguridad durante mucho tiempo sin tocarlo, sino que es parte de un procedimiento rutinario en el que habrá que ir agregando nuevos sellos de tiempo en intervalos. El motivo de esto es que los sellos de tiempo son de hecho firmas digitales cuyos certificados están emitidos por autoridad certificadora. Y como en el caso de los certificados de firma digital, los certificados de los sellos de tiempo tienen un rango de validez, por tanto deben agregarse nuevos sellos de tiempo antes de que venza el certificado del sello de tiempo anterior. Con el nuevo se agregará información de comprobación revocación firmada digitalmente, indicando que cuando se agregue el nuevo sello, la información agregada se mantendrá íntegra y que existía como mínimo en ese momento de tiempo, y así sucesivamente para los siguientes que deban agregarse el futuro para verificar los de su pasado.
Los validadores que cumplen con las especificaciones de la Unión Europea deben indicar que el resultado del proceso de validación pasó, falló o quedó en estado indeterminado. Este último, a diferencia de un resultado fallido, indican que aunque la firma sea válida, no es posible determinar si pudo recibir alteraciones debido a debilidades en algoritmos, revocaciones de certificados y vencimientos. Es posible que muchos documentos firmados hace años y se comprueben mediante estos validadores aparezcan como indeterminados, dependiendo de la configuración del validador, por no haber resellado a tiempo.
Las “firmas” visibles de los documentos PDF no tienen valor por sí mismas, solo lo tienen las firmas digitales a las que representan
La metáfora de ubicar la firma en una ubicación de un papel es, por su propia naturaleza, difícil de representar en el mundo digital, principalmente porque no se trata de una rúbrica que se traza con la mano sino una firma basada en criptografía asimétrica sobre un resumen seguro del documento. Esta información puede ser invisible en el documento y requiere herramientas especializadas para verificar la firma, no es mediante reconocimiento visual.
El concepto de firmar páginas también es algo que no se puede representar de la misma forma, como es el caso de un PDF multipágina. Cuando se firma un documento PDF que cumpla con la especificación PAdES, la firma cubre todo el documento, no páginas específicas. Adobe Acrobat permitía tradicionalmente firmar rangos y otras prácticas que se demostraron problemáticas y generadoras de confusión, por eso PAdES delimitó las prácticas permitidas para que la firma de este formato fuera más segura. La norma por ejemplo tampoco no permite indicar, como hacía antiguamente el programa, indicar “Firma válida” dentro de las páginas cuando el validador verificaba el documento. Esto causaba que hubiera gente que imprimiera el documento como que el documento impreso era válido, lo cual no tiene ningún sentido, porque en papel una firma digital no es validable.
Todavía existe cierta confusión con la representación visual de la firma. Su mera existencia en la especificación PAdES se limita a ayudar a indicar a los usuarios de que el documento puede contener firmas digitales, pero esa representación visual no es como tal una fuente de confianza. Solo las firmas digitales, que es algo que puede ser perfectamente invisibles dentro de la representación de las páginas, son una fuente de confianza.
Como apunte final sobre las firmas visibles, la norma tiene recomendaciones sobre el tipo de contenido que debería tener la representación visual de la firma. Aunque hay muchas instituciones que desean colocar un logotipo, la recomendación es no agregar imágenes que no provengan del propio certificado. Esto de imágenes en el certificado puede sonar extraño, pero los certificados realmente pueden contener imágenes, está documentado en el RFC 6170 y recogido en la norma PAdES parte 6, cuando todavía el RFC todavía se encontraba en borrador (draft-ietf-pkix-certimage). Los certificados de Firma Digital de Costa Rica no contienen imágenes en los certificados en la actualidad. De todos modos, esto es solo una recomendación de la norma, por lo que si aun así se desea agregar una imagen en la representación visual de la firma que no provenga del certificado no se estará incumpliendo con la norma PAdES, ya que solo se trata de una recomendación en este caso particular, a diferencia de los párrafos anteriores, donde sí es requerimiento no mostrar no mostrar información como “firma válida” sobre las páginas, ya que la información de validación debe mostrarse fuera, por ejemplo en un panel lateral.
Hola Francisco, usted a creado alguna librería para instalarla en un servidor apache o algo parecido para autenticar con firma digital?
Hola Juan Carlos, se puede utilizar mod_ssl para autenticación TLS con certificado cliente, es cuestión de configurarlo adecuadamente. Hace tiempo que quiero crear una pequeña guía mencionando las limitaciones existentes HTTP/2 y TLS 1.3, pero es posible utilizarlo con varios lenguajes, comprobar estado de revocación (OCSP) desde el propio mod_ssl o delegarlo a otro proceso del lado del servidor que se encargue, tras obtener el certificado proporcionado.
Básicamente sería ver ejemplos y documentación sobre SSLVerifyClient, SSLVerifyDepth, SSLOCSPEnable, entre otros, de mod_ssl.
Esto lo utilizan sitios web en Costa Rica como por ejemplo el del Banco Popular.
Cualquer aclaración con gusto.
Gracias voy a investigar, la guía estaría genial
Hola Juan Carlos, hice una guía breve con un ejemplo de configuración:
https://fran.cr/como-usar-autenticacion-con-tarjetas-de-firma-digital-de-costa-rica-en-sitios-web/