Firmando documentos con OCA

Dentro del marco de la Odoo Community Association (OCA), hemos trabajado en el desarrollo de una solución comunitaria destinada a gestionar las firmas de documentos desde Odoo. En un artículo anterior, analizamos el sistema proporcionado por Odoo Enterprise, revisando sus puntos fuertes y puntos débiles. Con esa información, nos hemos propuesto crear una herramienta posible que cumpliera con nuestras necesidades de la forma más completa posible.

El principal inconveniente del sistema propuesto por Odoo Enterprise que veíamos es que se considera una firma simple. Según la normativa eIDAS, en todas las firmas digitales, no podemos denegar sus efectos jurídicos ni admisibilidad como prueba en un procedimiento judicial. Sin embargo, nos podemos encontrar que delante de un proceso judicial su carga provatoria sea débil. El motivo es que no podemos asegurar que dicho documento no lo hemos alterado ni que el firmante es quien dice ser. Creemos que es esencial dar la máxima credibilidad a este tipo de documentos para reducir la posibilidad de impugnación. En todos estos casos, deberemos incrementar la carga provatoria añadiendo el máximo de información para poder asegurar su credibilidad.

Por ello, abordaremos cada uno de estos problemas por separado para poder encontrar soluciones.

Inalterabilidad documental

La inalterabilidad nos asegura que no hemos modificado el documento. La primera solución consiste en crear un sistema encadenado de forma que si intento alterar un documento, altero todos los documentos siguientes. Esta es una solución ingeniosa e interesante que nos permite resolver de forma sencilla que un tercero pueda modificar el fichero, ya que debería alterar toda la cadena posterior. Por desgracia, nos encontramos que esto podría suceder si alguien entrase en nuestra base de datos. Dicho de otra forma, esta solución protege al propietario de la instancia, pero en cierta medida podemos considerar que este puede modificar toda la cadena sin incidencias.

Cuando nos encontramos con este tipo de situaciones, lo más correcto es utilizar un tercero de confianza. Implicaría enviar la información encadenada a un tercero que pueda certificar en un futuro que yo no lo he alterado. Se podría realizar utilizando blockchain o un Time Stamping Authority (TSA o Autoridad de sellado de tiempo).

Con esta certificación, podremos demostrar en un momento dado que nosotros ni nadie ha podido modificar ese documento.

Identificación del firmante

Otro punto relevante es poder identificar al firmante de forma inequivoca. Sin poder asegurar quien es el firmante de forma feaciene, nos podemos encontrar que nuestro documento no es aceptado. Existen casos en europa en los que al no poder asegurar quien es el firmante un contrato, este se ha considerado no válido.

En este caso, lo que debemos hacer es intentar dar el máximo número de pruebas que el firmante es la persona que decimos. Lo primero que podemos obtener de forma sencilla es:

  • Geolocalización del dispositivo
  • Imagen de la firma

Por desgracia, la geolocalización es facilmente reemplazable desde el cliente. En el caso de la imagen, no se considera válido al ser fácilmente copiable.

Otra solución viable seria usar sistemas OTP (One Time Password), generalmente ligado al teléfono móbil del firmante. En muchos países esto se considera válido debido a que debo presentar mi identificación para obtener un teléfono móbil.

Otra solución sería usar un sistema de firma biométrica. El gran problema en este caso es el almacenamiento de esta información ya que son datos extremadamente sensibles. En este caso, nuestra propuesta es usar un sistema de doble clave de forma que el servidor no disponga nunca de la clave privada necesaria para desencriptar los datos. Esta solución nos permite encriptar los datos directamente desde el equipo del cliente y los datos nunca estarán desencriptados a nivel de servidor, de hecho,  ni dispondran de la clave de desencriptado. Una vez hemos definido la estratégia de almacenamiento, solo nos resta comprobar si este sistema nos permite identificar de forma feaciente al firmante.

Roadmap

En Dixmit hemos estado trabajando en este tema proponiendo las mejoras necesarias para llevar a cabo los puntos comentados. A dia de hoy, hemos avanzado en:

  • Sistema interno de inalterabilidad de un documento
  • Obtención de datos de geolocalización
  • Sistema de encriptación de datos sensibles desde el cliente
  • Creación de un sistema biométrico de firma

Los siguientes puntos a realizar serían:

  • Integración con un tercero de confianza para asegurar todos los datos existentes con mayor fiabilidad.
  • Verificación del sistema de firma biométrica. Es importante realizar una verificación y definir como comprobar si dos firmas son equivalentes.

Estamos comprometidos con la mejora y la seguridad de las firmas de documentos en Odoo, y seguiremos trabajando para ofrecer soluciones más sólidas y confiables. ¡Mantente atento a nuestras actualizaciones!

Gestiona tus Procesos de Calidad desde Odoo