Wiki

Firma Electrónica Avanzada

(Esta es una una versión archivada de esta página. (1.0), Ir a la última versión.)

Descripción General

Según la Ley Nº 18.600 del 21 de setiembre de 2009, la Firma Electrónica Avanzada es una Firma Electrónica que además:

  1. requiere información de exclusivo conocimiento del firmante, permitiendo su identificación unívoca.
  2. debe ser creada por medios que el firmante pueda mantener bajo su exclusivo control;
  3. debe ser susceptible de verificación por terceros;
  4. debe estar vinculada a un documento electrónico de tal modo que cualquier alteración subsiguiente en el mismo sea detectable; y
  5. debe haber sido creada utilizando un dispositivo de creación de firma técnicamente seguro y confiable y estar basada en un certificado reconocido válido al momento de la firma.

La firma electrónica avanzada tiene idéntica validez y eficacia que la firma autógrafa consignada en documento público o en documento privado con firmas certificadas, por lo que no requiere acuerdo previo para su uso. Además, provee garantías de Integridad, Autenticidad y No repudio sobre los documentos intercambiados. Esto hace que su uso permita la eliminación completa del papel en cualquier acto entre partes públicas o privadas, constituyendo un elemento fundamental para el desarrollo de la sociedad digital.

En la práctica, una Firma Electrónica Avanzada es una firma hecha con pares de llaves asimétricas y certificados x509 tradicionales, con las particularidades de que el certificado debe ser emitido por una autoridad acreditada ante la Unidad de Certificación Electrónica (UCE), y que además la llave privada debe residir en un dispositivo seguro de creación de firmas. En el caso de firmas de persona física, se exige que el dispositivo seguro de creación de firmas sea un un token criptográfico, tarjeta inteligente, HSM u otro dispositivo que otorgue garantías de seguridad equivalentes, mientras que para la firma de persona jurídica se admite el uso de dispositivos de software, dado que el uso es previsto para sistemas automáticos y por lo tanto el riesgo asociado a la mala manipulación de la llave privada es considerablemente menor. Los prestadores acreditados son Abitab (https://www.id.com.uy), el Correo (http://www.correo.com.uy/index.asp?codPag=firmaDig) y el Ministerio del Interior para los certificados de la CI Electrónica (https://www.minterior.gub.uy/index.php/firma-electronica-avanzada). Cada uno tiene en sus respectivos sitios web el procedimiento para la solicitud de sus certificados, además de la información adicional requerida como declaraciones de políticas, certificado propio, listas de revocación, etc.

En el esquema de firma avanzada más común, el firmante realiza un hash del documento electrónico, lo cifra con su llave privada y anexa el resultado al documento como prueba de la firma del mismo. La contraparte, usando el certificado público del firmante (en particular su llave pública) puede descifrar el hash originalmente enviado y puede compararlo contra el hash calculado nuevamente del documento que recibió. Si coinciden, la contraparte puede tener la certeza de que el documento no fue modificado por una tercera parte (Integridad) y que además fue firmado por la persona, física o jurídica, que figura identificada en el certificado (Autenticidad). Debido a que el certificado público del firmante fue emitido por un prestador acreditado y confiable, sus procedimientos de registro garantizan efectivamente la identidad del firmante (No Repudio).

Por todo esto, la firma electrónica avanzada es el mecanismo de firma recomendado para cualquier transacción o intercambio de documentación que requiera firma de la contraparte, y también puede ser usada para autenticación fuerte.

Implementación de la Firma

Siguiendo el esquema anteriormente mencionado, cualquier sistema que desee implementar la firma electrónica avanzada debe acceder a la llave privada del firmante y cifrar un hash del documento que desea hacerlo firmar, siendo la implementación concreta dependiente de la plataforma obviamente. Siempre el acceso a la llave privada estará protegido por un secreto que el firmante debe cuidar, que es el PIN o contraseña. Este secreto puede que sea usado para autenticarse ante un dispositivo y habilitar acceso a los comandos de uso de la llave como en la CI electrónica o directamente para descifrar el contenedor de software donde se almacena la llave, dependiendo del escenario de uso, pero a nivel conceptual es lo que garantiza al firmante que aún siendo comprometido el soporte en el que tiene la llave sigue manteniendo control exclusivo sobre la misma. Es por esto que el almacenamiento de pines o contraseñas, especialmente en el caso de personas físicas, es algo totalmente riesgoso y desaconsejable.

Firma de Persona Física

Es el caso en que una persona física desea comprometerse con el contenido de un documento, por ejemplo para firma de un contrato, de un formulario, una transacción bancaria, etc. La particularidad que presenta es que, al ser emitida exclusivamente en dispositivos criptográficos, el software que desee implementar firma avanzada de persona física deberá necesariamente acceder a estos dispositivos. Para el caso de la CI Electrónica, se recomienda ver la sección especialmente dedicada a la misma, ya que si bien es similar a los demás dispositivos, presenta algunas particularidades y opciones de implementación adicionales. Ver CI Electrónica.

El caso más básico se da cuando el usuario tiene que firmar documentos de elaboración manual como cartas, contratos, acuerdos, formularios descargables o similares. En estos casos lo más sencillo es que el usuario elabore o complete el documento en su editor de texto de preferencia, lo exporte como PDF, lo firme localmente con su CI Electrónica o su dispositivo de seguridad de preferencia y lo remita a la otra parte por el medio que considere adecuado, que puede ser directamente un correo electrónico, upload de archivo o cualquier otra vía electrónica. En el caso de firma de contratos, términos y condiciones y similares, puede que ni siquiera sea necesario editar nada, simplemente se abre el PDF que se recibió, se lo firma y se lo devuelve a la contraparte. Para firmar un PDF localmente en su PC con Adobe Reader se puede consultar el siguiente instructivo: Firmar PDF en Adobe Reader.

Cuando se quiere implementar un sistema que reciba documentación firmada, las opciones son muchas. Una primera aproximación sencilla es la contraparte de la anterior: solicitar al usuario que firme su documento fuera del sistema y que lo cargue al mismo ya firmado. Si bien a priori puede ser percibido como incómodo desde el punto de vista funcional, existen casos de uso donde es la opción más directa a implementar, como el que se ve en la siguiente figura.

Se trata de una empresa u organismo del estado (Sistema de Gestión) que requiere que un usuario realice cierta operativa, posiblemente además en nombre de una empresa u organismo, y tiene como parte de la misma la inclusión de informes técnicos firmados por terceros, como por ejemplo planos, balances, informes de auditorías, revisiones, etc. Que el gestor reciba los documentos firmados en papel y los escanee no es una opción sólida porque se pierde el carácter de original, por lo que para un uso 100% electrónico se deberían pedir los informes digitales. Si bien el sistema podría implementar la funcionalidad de que cada uno de los terceros suba su propio informe y lo firme electrónicamente, esto sería incómodo y difícil de coordinar. Resulta natural entonces que el gestor pida a cada tercero que remita su informe ya firmado por mail u otra vía, y que sea éste quien se encargue de la gestión ante la empresa u organismo, remitiendo en el proceso los informes originales firmados digitalmente por cada uno de los profesionales. Si se utiliza formato de documentos PDF cada tercero puede realizar la firma digital en su PC de forma sencilla con su CI Electrónica u otro dispositivo criptográfico usando Adobe Reader de la misma forma que ya fue mencionada para el caso de que una persona enviaba una carta o solicitud firmada digitalmente.

Más allá de los ya mencionados casos en donde lo más conveniente es que el usuario firme en su PC y envíe por mail, existen muchos casos en donde esto no es cómodo, como por ejemplo cualquier sistema que modele un proceso de negocio donde la firma de un documento es un paso más del proceso. En esos casos, lo más conveniente es que el propio sistema implemente la firma como parte del mismo, y para ello hay varias alternativas.

PKCS#11

PKCS#11 es una interfaz estándar para el acceso a dispositivos criptográficos, y por lo tanto es una alternativa natural para implementar firma electrónica avanzada con cualquier token o con la CI Electrónica. Por más información para su implementación se recomienda ver Autenticación y Firma Avanzada a través de PKCS#11.

Servicio de Firma con CI Electrónica

AGESIC cuenta con una plataforma que ofrece firma con CI electrónica como servicio. que ofrece facilidad de integración con aplicaciones por utilizar protocolos estándar y maduros para la integración y, al basarse en plugins y componentes de browser y ser específicamente diseñada para usar la CI uruguaya, provee una experiencia de usuario de gran calidad. Su funcionamiento esencial es sencillo: Cuando una aplicación web quiere recoger la firma electrónica avanzada de una persona, en lugar de realizarla localmente, redirige a la misma a esta plataforma delegando la firma en este servicio. La aplicación recibe el documento ya firmado, y esta puede efectuar la validación del mismo para asegurarse que todo está correcto.

Las restricciones para su uso son que aplica solamente a aplicaciones web, y que los plugins son sólo para versiones desktop de los navegadores, así que si bien se tiene un alto nivel de compatibilidad en PC y navegadores tradicionales, de momento no soporta los entornos Mobile. Las ventajas que ofrece usar esta plataforma son la simplicidad en la implementación y la experiencia del usuario final, por lo que es la opción recomendada siempre salvo cuando el entorno de los usuarios no sea compatible y/o cuando no se quiera incurrir en dependencia de un servicio externo. En esos casos se recomienda implementar una solución propia, para lo cual se puede ir por alguna de las soluciones alternativas ya mencionadas.

La documentación de la misma puede encontrarse en la página dedicada al Servicio de Firma con la CI Electrónica.

Servicio de Autenticación con CI Electrónica

Dado que el sistema de llaves asimétricas y certificados del que consiste la firma electrónica avanzada también puede ser utilizado para la autenticación, muchas de las técnicas mencionadas anteriormente pueden ser utilizadas en forma prácticamente análogas para realizar la autenticación de usuarios. En particular, para la autenticación utilizando al CI Electrónica AGESIC cuenta con un servicio análogo al servicio de firma de la sección anterior.

La documentación del mismo puede encontrarse en la página dedicada al Servicio de Autenticación con la CI Electrónica.

Firma de Persona Jurídica

Por ser una Firma Electrónica Avanzada, la firma de persona jurídica también se basa en el uso de una llave privada para firmar documentos y una llave pública extraída del certificado para validar. La diferencia es que el sujeto registrado en el certificado es una persona jurídica, es decir, *una organización*. En el mundo físico, pensar en firma de organización carece de sentido, puesto que la organización en sí misma no tiene voluntad, y siempre son personas físicas las que actúan en su nombre. Si bien en el mundo digital esto se mantiene, y las actuaciones fundamentales de las organizaciones siguen siendo realizadas por personas físicas en su nombre, existe la posibilidad de que *los sistemas de la organización realicen actuaciones en forma autónoma, sin intervención humana directa*, y para dotar de seguridad y garantías jurídicas esos actos es que se crea y reconoce la firma electrónica avanzada de persona jurídica como tal. Casos de uso de firma de persona jurídica incluyen la facturación electrónica, la emisión de constancias, la firma de documentos para certificar que se controló alguna regla de negocio explícitamente, la autenticación de transacciones que se realizan automáticamente, entre otros.

En este escenario entonces, las claves y certificados de la persona jurídica se instalarán en el equipo en que se encuentre la aplicación que los acceda, que será típicamente en un servidor físico o virtual, y la o las aplicaciones accederán al certificado y las llaves en forma automática autenticándose debidamente. En este sentido, el acceso a las llaves por parte de las aplicaciones se vuelve mucho más directo que en el caso de persona física, ya que en este caso siempre se estará ejecutando en el mismo equipo donde se encuentra el dispositivo de creación de firmas, sea este de software o de hardware.

Tanto en caso de software como de hardware, se recomienda usar las llaves utilizando bibliotecas estables y maduras de la propia plataforma en la que se esté trabajando. Si se trata de un dispositivo de software, es decir, un archivo PKCS#12, se debe utilizar una biblioteca para acceso a PKCS12 y proveer la contraseña de acceso, mientras que si se trata de un dispositivo de hardware, se debe usar un pkcs11 Provider instanciado con el driver del dispositivo (que debe estar previamente instalado) y el correspondiente PIN de acceso. Si se tratase de un HSM, es posible que además se requiera una activación fuera de banda del mismo, que es específica de cada marca y modelo, y se determina al momento de la instalación del mismo.

Para facilitar la realización de firmas de persona jurídica, AGESIC cuenta con dos recursos de Software Público para ello. El hecho de que sean componentes de Software Público implica que el código es abierto y libre para su uso, reproducción y modificación, pero que AGESIC no asume ninguna responsabilidad sobre la calidad, mantenimiento o soporte sobre el mismo. Dicho de otra forma, el uso de estos componentes es libre para cualquier aplicación pública o privada, pero quien lo integra debe hacerse cargo del mismo como parte de su producto o sistema.

  • El primer componente se trata de una API de firma, que encapsula el acceso a las llaves de persona jurídica para la firma de archivos PDF y XML en forma sencilla. Tiene la restricción que no soporta aún dispositivos PKCS#11 (tokens, HSM, etc.). https://git.agesic.gub.uy/seguridad-informatica/api-java-de-firma-electronica
  • El segundo es el ya mencionado componente de firma, pero que en las últimas versiones incorpora la mencionada API en su parte servidor, para ser accedida como Webservice. Tiene la ventaja que de que puede ser integrada a otras plataformas además de Java por tener un acoplamiento más bajo, pero tiene la desventaja que genera una comunicación entre aplicaciones para firmar, y otro actor podría invocar la firma también, por lo que debe ser utilizada con ese riesgo en mente. https://git.agesic.gub.uy/seguridad-informatica/componente-firma-electronica

De cualquier manera, estos recursos de AGESIC pueden ser utilizados como implementación de referencia para guiar la implementación nativa en la plataforma y/o sistema en que se esté trabajando. Realmente, la implementación de la firma electrónica es sencilla, y particularmente sencilla lo es la implementación de la firma de persona jurídica.

Estándares de Firma en Documentos

La firma electrónica avanzada es un mecanismo que agrega información al documento para dotarlo de, mínimamente, capacidad de verificación de integridad e identificación del firmante. Es importante este detalle, debido a que los datos agregados no previenen que el documento sea modificado, sino que hacen que las modificaciones sean detectables, es decir, lo hacen *suceptible de verificación*. Para que esa verificación sea posible, la firma debe ser expresada de una forma que pueda ser interpretada por quien la verifica, y es por eso que existen los estándares de firma electrónica. Cada tipo de documento tiene un conjunto de extensiones estándar que especifican cómo deben ser expresados los resultados de las firmas, y cada validador de firmas para esos documento usa esas mismas extensiones para efectuar las validaciones.

Es así que existen los siguientes estándares de firma que vale la pena destacar:

  • PDF Signature
  • PAdES
  • XML Signature
  • XAdES
  • CMS
  • CAdES

Validación de Firma Electrónica Avanzada

en construcción

30680 Accesos
Promedio (3 Votos)
Archivos adjuntos
1 comentario(s)
10