¿Qué significa activar la firma digital?

Componente de Firma Digital Avanzada

17/08/2013

Valoración: 4.46 (3049 votos)

En el mundo digital actual, la seguridad y la autenticidad de los documentos son primordiales. Aquí es donde entra en juego la Firma Digital Avanzada, un mecanismo robusto que equipara una firma electrónica a su equivalente físico. Para facilitar esta funcionalidad dentro de los sistemas web, existe un elemento clave: el Componente de Firma. Este componente actúa como el puente entre el usuario, su certificado digital y la aplicación web que requiere firmar documentos.

https://www.youtube.com/watch?v=0gcJCdgAo7VqN5tD

El Componente de Firma Digital Avanzada es una pieza de software diseñada para ejecutarse en el entorno del usuario final, interactuando directamente con sus dispositivos de seguridad (como tokens criptográficos) y comunicándose con el sistema web a través de protocolos definidos. Su propósito principal es permitir la visualización de los documentos a firmar, la selección del certificado digital por parte del usuario y, finalmente, la aplicación de la firma electrónica a los documentos seleccionados.

¿Cómo saber si tengo la firma digital activa?
Entra en la página web de la Fábrica Nacional de Moneda y Timbre (FNMT). Al entrar, clica sobre SOLICITAR VERIFICACIÓN. Se abrirá una ventana emergente con el título “Seleccionar tu certificado”. En esa ventana emergente, debe aparecer tu nombre y apellidos.

¿Qué es el Componente de Firma Digital Avanzada?

En esencia, es una aplicación cliente que reside en la estación de trabajo del usuario. Tradicionalmente, se ha implementado utilizando tecnologías como Java Applet o Java Web Start, aunque el uso de Applets es actualmente desaconsejado debido a la falta de soporte en los navegadores modernos. Su función es gestionar el proceso de firma desde el lado del usuario, lo que incluye:

  • Obtener la lista de documentos a firmar desde el sistema web.
  • Presentar los documentos al usuario (si la configuración lo permite).
  • Acceder a los almacenes de certificados del usuario (tokens USB, smartcards, archivos P12/PFX).
  • Permitir al usuario seleccionar el certificado adecuado para la firma.
  • Realizar la operación criptográfica de firma utilizando la clave privada asociada al certificado seleccionado.
  • Devolver los documentos firmados al sistema web.

Este componente es crucial porque las claves privadas necesarias para firmar nunca abandonan el entorno seguro del usuario (el token o el archivo P12/PFX protegido por contraseña), garantizando así que solo el propietario del certificado pueda realizar la firma.

Ventajas de la Firma Digital Avanzada

La implementación de soluciones que utilizan un Componente de Firma para la Firma Digital Avanzada ofrece beneficios significativos:

  • Autenticación: La firma digital vincula criptográficamente un documento a una persona o entidad, proporcionando una fuerte garantía de la identidad del firmante. Es legalmente equivalente a una firma manuscrita en muchas jurisdicciones, gracias a leyes como la ley N° 18.600 mencionada en el texto de referencia.
  • Integridad: Cualquier modificación posterior al documento firmado invalida la firma, lo que asegura que el contenido original no ha sido alterado desde el momento de la firma. Esto se logra mediante el uso de funciones hash y criptografía asimétrica.

Estas dos propiedades son fundamentales para establecer confianza en las transacciones y documentos electrónicos.

Arquitectura General de la Solución

La arquitectura típica de una solución de firma digital que emplea un Componente de Firma se basa en la interacción entre tres elementos principales:

  1. El Componente de Firma: Se ejecuta en la máquina del usuario, ya sea dentro del navegador (como Applet, aunque obsoleto) o como una aplicación lanzada por Java Web Start. Contiene la lógica para interactuar con el usuario, visualizar documentos y comunicarse con los servicios web.
  2. El Token Criptográfico o Almacén de Certificados: Es el dispositivo o archivo seguro donde se almacena el certificado digital del usuario y, lo más importante, la clave privada asociada. Los tokens USB y las smartcards son ejemplos comunes de dispositivos que implementan el estándar PKCS#11. También se pueden usar archivos P12 o PFX, aunque las firmas basadas *únicamente* en estos archivos no siempre cumplen los requisitos legales de una Firma Digital Avanzada.
  3. El Servicio Web de Integración (AgesicFirmaWS en el texto de ejemplo): Este servicio reside en el sistema web existente o en un servidor intermediario (como Firma Server). Actúa como punto de comunicación para el Componente de Firma, proporcionando los documentos a firmar y recibiendo los documentos una vez firmados. Gestiona la lógica de negocio asociada a la firma, como el registro de transacciones y el almacenamiento de los documentos firmados.

La comunicación entre el Componente de Firma (cliente) y el Servicio Web de Integración (servidor) se realiza típicamente mediante Servicios Web SOAP. Para asegurar que cada solicitud del Componente de Firma esté asociada a una sesión o proceso específico iniciado por el usuario en el sistema web, se utiliza un identificador de transacción alfanumérico. Este ID es generado por el sistema web, pasado al Componente de Firma como parámetro, y utilizado por este último para autenticar sus llamadas a los servicios web (obtener documentos, entregar documentos firmados). El sistema web es responsable de generar, validar y finalmente invalidar este ID de transacción.

El Proceso de Firma Digital Paso a Paso

El flujo de trabajo para firmar digitalmente un conjunto de documentos utilizando este componente es el siguiente:

  1. El usuario inicia un proceso de firma en la aplicación web.
  2. La aplicación web genera un identificador de transacción único para esta operación.
  3. La aplicación web lanza o invoca el Componente de Firma, pasándole el ID de transacción y otros parámetros de configuración (como la dirección del servicio web).
  4. El Componente de Firma, utilizando el ID de transacción, llama al Servicio Web de Integración para obtener la lista de documentos que deben ser firmados en esta transacción.
  5. Si está configurado para visualizar, el Componente de Firma muestra los documentos al usuario.
  6. El Componente de Firma accede a los almacenes de certificados disponibles en el equipo del usuario (tokens, archivos P12/PFX) y lista los certificados válidos.
  7. El usuario selecciona el certificado digital con el que desea firmar.
  8. El usuario confirma la operación de firma (normalmente haciendo clic en un botón dentro del componente).
  9. El Componente de Firma, utilizando la clave privada asociada al certificado seleccionado (a menudo solicitando la contraseña del token o archivo al usuario), realiza la operación criptográfica para firmar cada documento.
  10. Una vez firmados, el Componente de Firma llama de nuevo al Servicio Web de Integración, pasando el ID de transacción y los documentos ya firmados.
  11. El Servicio Web de Integración recibe los documentos firmados, realiza las validaciones necesarias (como verificar la validez de la firma) y los procesa según la lógica del negocio (por ejemplo, almacenarlos).
  12. El sistema web invalida el ID de transacción para evitar reusos.

Este proceso garantiza que la clave privada nunca sale del control del usuario durante la firma.

Tipos de Documentos y Estándares Soportados

El Componente de Firma está diseñado para manejar diferentes formatos de documentos, aplicando los estándares de firma digital apropiados para cada uno:

  • Documentos PDF: Se firma utilizando el estándar PDFSignature. Esto a menudo permite que la firma sea visible dentro del documento PDF como una apariencia gráfica.
  • Documentos XML: Se soportan los estándares XMLDSig y XADES (XML Advanced Electronic Signatures). Estos estándares permiten firmar el documento XML completo o partes específicas de él.
  • Documentos Genéricos (Hash): Para cualquier otro tipo de archivo (imágenes, texto plano, etc.), se puede firmar el hash (resumen criptográfico) del documento. Los algoritmos de hash soportados son SHA-1 y SHA-256. Firmar el hash es suficiente para garantizar la integridad y autenticidad del documento original, ya que cualquier cambio en el documento resultaría en un hash diferente.

Métodos de Integración del Componente de Firma

La forma en que el Componente de Firma se incorpora a un sistema web existente depende de la tecnología utilizada para desplegar la aplicación cliente. Las opciones comunes han sido Java Web Start y Java Applet, aunque esta última está obsoleta.

Integración como Java Web Start

Este es el método recomendado. Implica crear un archivo JNLP (Java Network Launching Protocol) desde la aplicación web. Este archivo JNLP contiene la información necesaria para que el entorno Java del usuario descargue y ejecute el Componente de Firma como una aplicación separada. El archivo JNLP especifica la ubicación de los archivos JAR del componente y los parámetros de configuración necesarios para la transacción actual.

Parámetros clave a pasar al Componente de Firma a través del archivo JNLP:

ParámetroDescripción
ID_TRANSACCIONIdentificador único de la transacción de firma, generado por el sistema web.
TIPO_DOCUMENTOTipo de documento a firmar (xml, pdf, hash).
AGESIC_FIRMA_WSDirección URL del WSDL del Servicio Web de Integración.
URL_OK_POSTURL a la que se redirige o notifica una vez que la firma se completó correctamente.
CODEBASEURL base donde se encuentran los archivos JAR del Componente de Firma.
DOCUMENTO_VISIBLEIndica si el componente debe mostrar los documentos al usuario (true/false).
LOCALEConfigura el idioma de los mensajes y etiquetas del componente.
USUARIO_DOCUMENTOIndica si el usuario seleccionará el documento localmente en lugar de descargarlo del WS (true/false).
USUARIO_DOCUMENTO_FIRMADOIndica si el usuario guardará los documentos firmados localmente en lugar de enviarlos al WS (true/false).

La aplicación web genera dinámicamente este archivo JNLP y proporciona un enlace al usuario para lanzarlo.

Integración como Applet Java (Desaconsejado)

Históricamente, el componente podía integrarse directamente en una página web utilizando la etiqueta HTML <applet>. Sin embargo, esta tecnología ha sido eliminada por los navegadores web debido a problemas de seguridad y rendimiento, por lo que su uso ya no es viable ni recomendado.

En este método, los parámetros de configuración se pasaban a través de etiquetas <param> dentro de la etiqueta <applet>. También requería funciones JavaScript específicas (cerrarApplet, continuarApplet) para manejar eventos desde el applet. A pesar de su desuso, entender que esta fue una forma de integración ayuda a comprender la evolución de estas soluciones.

Configuración del Componente de Firma (Cliente)

El comportamiento del Componente de Firma puede ajustarse mediante archivos de configuración o parámetros pasados durante su lanzamiento. Para la versión Applet, se utilizaba un archivo configuration.properties dentro del JAR principal. Para Java Web Start, los parámetros se definen en el archivo JNLP.

Algunas de las propiedades configurables incluyen:

  • AGESIC_FIRMA_WS: La URL del WSDL del servicio web.
  • URL_OK_POST: URL para post-firma exitosa.
  • SHOW_CONTINUE / SHOW_CLOSE: Controla la visibilidad de botones en la interfaz.
  • PDFSIGNATURE_APPEARANCE_ENABLED: Habilita la visualización gráfica de la firma en PDFs.
  • WS_REQUEST_TIMEOUT / WS_CONNECT_TIMEOUT: Tiempos de espera para las llamadas a servicios web.
  • Propiedades para imágenes (IMAGE_AGESIC, IMAGE_ORG, IMAGE_AGESIC_ORG_W, IMAGE_AGESIC_ORG_H) para personalizar la interfaz.
  • Propiedades (ALADDIN_WIN, EPASS2003_LIN, etc.) y (LIB_ALADDIN_WIN, etc.) para ayudar al componente a encontrar las librerías (drivers PKCS#11) necesarias para interactuar con tokens específicos en diferentes sistemas operativos.

Es fundamental que los archivos JAR del componente estén firmados digitalmente con un certificado de una entidad confiable (como el organismo que lo provee) para garantizar su autenticidad al ser descargados y ejecutados por el entorno Java del usuario.

¿Qué es el componente de firma digital?
El Componente de Firma accede a la colección de documentos a firmar, pasando como parámetro el ID de transacción al Servicio Web de integración. En caso de estar configurada la visualización de documentos, el Componente de Firma despliega los documentos a firmar, según su tipo.

Firma Server: Una Arquitectura Alternativa

En algunos escenarios, en lugar de que el Componente de Firma se comunique directamente con servicios implementados dentro del sistema web existente, se utiliza un componente intermediario llamado Firma Server. Este Firma Server actúa como un proxy o fachada, exponiendo servicios tanto para el Componente de Firma cliente como para la aplicación web.

En esta arquitectura:

  • El Componente de Firma (en la PC del usuario) consume servicios web expuestos por Firma Server (por ejemplo, para obtener documentos o enviar documentos firmados).
  • La aplicación web (en el servidor) también consume servicios web expuestos por Firma Server (por ejemplo, para iniciar una transacción de firma y obtener el ID de transacción, o para recuperar los documentos firmados una vez que el proceso ha concluido).

Este modelo centraliza la lógica de integración y gestión de transacciones de firma en un componente dedicado (Firma Server), simplificando potencialmente la integración para la aplicación web existente.

Servicios Web Expuestos por Firma Server

Firma Server expone diferentes servicios para los dos actores que interactúan con él:

  • Para el Componente de Firma (Cliente):
    • obtenerDocumentos: Recibe el ID de transacción y devuelve la colección de documentos a firmar.
    • comunicarDocumentos: Recibe el ID de transacción, los documentos firmados y el certificado usado, valida la firma y registra la operación.
  • Para la Aplicación Web (Servidor):
    • firmarDocumentos: Recibe un conjunto de documentos, genera un ID de transacción para ellos, los almacena temporalmente y devuelve el ID de transacción a la aplicación web.
    • obtenerDocumentosFirmados: Recibe el ID de transacción y devuelve los documentos ya firmados por el usuario, junto con el resultado de la validación. Esta operación a menudo elimina la transacción de la tabla temporal de Firma Server.

Esta separación de responsabilidades permite que Firma Server gestione el estado de las transacciones de firma.

Configuración y Requisitos de Firma Server

Firma Server, al ser un componente de servidor, también requiere configuración. Esto se realiza típicamente en un archivo configuration.properties propio.

Propiedades configurables de Firma Server:

  • SIGN_ALG: Algoritmo de firma utilizado (SHA1withRSA o SHA256withRSA). Debe coincidir con el configurado en el Componente de Firma.
  • TIME_RUN_CLEAN_BD_MS: Frecuencia con la que se limpian los registros de transacciones caducadas en la base de datos (en milisegundos).
  • CLEAN_EXPIRED_AFTER: Tiempo después del cual una transacción se considera caducada (en milisegundos).

Además de la configuración, Firma Server requiere una base de datos para mantener la tabla de transacciones. El nombre de la base de datos es AGESIC_FIRMA. Si bien Firma Server crea las tablas necesarias, la base de datos debe existir previamente. La instalación de Firma Server implica desplegar su archivo WAR (Web Application Archive) en un servidor de aplicaciones como Tomcat o Jboss y configurar la conexión a la base de datos.

Preguntas Frecuentes (FAQ)

Aquí respondemos algunas preguntas comunes relacionadas con el Componente de Firma y la Firma Digital Avanzada:

¿Qué compone una firma digital avanzada?

Una firma digital avanzada se compone de varios elementos clave: un certificado digital cualificado emitido por una Autoridad de Certificación reconocida, que vincula una clave pública a la identidad del firmante; una clave privada correspondiente, controlada exclusivamente por el firmante (típicamente almacenada en un dispositivo seguro como un token criptográfico o una smartcard); y el documento o dato que se desea firmar. El proceso criptográfico utiliza la clave privada para generar un valor único basado en el contenido del documento (su hash), creando la firma. La verificación utiliza la clave pública del certificado para confirmar que la firma fue creada por el titular del certificado y que el documento no ha sido alterado.

¿Qué significa activar la firma digital?

Activar la firma digital, en el contexto del usuario final, generalmente se refiere a tener un certificado digital válido instalado y accesible en su equipo, junto con el software necesario (como el Componente de Firma y los drivers del token) para poder utilizarlo para firmar documentos. No es un proceso de 'encendido/apagado', sino de asegurar que todos los elementos técnicos están configurados correctamente para que el certificado pueda ser utilizado para firmar.

¿Cómo saber si tengo la firma digital activa o el certificado instalado?

La forma más común y segura de verificar si tu certificado digital está correctamente instalado y accesible en tu navegador o sistema operativo es a través de la página web de una entidad emisora de certificados reconocida, como la Fábrica Nacional de Moneda y Timbre (FNMT) mencionada en el texto de referencia. Los pasos suelen ser:

  1. Acceder a la sección de verificación de certificados en el sitio web de la entidad emisora.
  2. El navegador o la aplicación intentará acceder a los certificados instalados en tu sistema.
  3. Debería aparecer una ventana emergente listando los certificados encontrados. Si ves tu nombre y apellidos asociados a un certificado válido, significa que está instalado correctamente.
  4. Seleccionar tu certificado y aceptar. La página web confirmará si el certificado es válido y utilizable.

Si no aparece ningún certificado o el sitio web informa de un error, es probable que necesites instalar o reinstalar tu certificado digital o los drivers asociados a tu token criptográfico.

¿Por qué se desaconseja el uso del Componente de Firma como Applet?

El uso de Java Applets ha sido descontinuado por los principales navegadores web (como Chrome, Firefox, Edge) debido a vulnerabilidades de seguridad, problemas de rendimiento y la dificultad de mantener la compatibilidad. Las tecnologías web modernas ofrecen alternativas más seguras y eficientes para ejecutar código en el cliente, aunque para interacciones directas con hardware criptográfico como tokens, las soluciones basadas en Java Web Start o aplicaciones nativas con conectores específicos siguen siendo comunes en muchos entornos.

Conclusión

El Componente de Firma Digital Avanzada es una pieza esencial en las arquitecturas que buscan integrar la firma electrónica cualificada en procesos de negocio basados en la web. Permite aprovechar las garantías de autenticidad e Integridad que ofrece la Firma Digital Avanzada, delegando la operación criptográfica segura al entorno del usuario. Aunque las tecnologías subyacentes (como Java Applets) evolucionan, el concepto de un componente cliente que interactúa con el hardware de seguridad del usuario y se comunica con el sistema central a través de Servicios Web SOAP sigue siendo fundamental para implementar soluciones robustas de firma digital.

Si quieres conocer otros artículos parecidos a Componente de Firma Digital Avanzada puedes visitar la categoría Radio.

Subir