Validación de firmas en Tractis (3): Validación a prueba de fallos

Introducción

En posts anteriores hemos desgranado parte de los procesos que llevamos a cabo para poder validar las firmas electrónicas que se generan dentro de Tractis.

En este último post de la serie voy a concentrarme en los riesgos derivados de equivocarse en dicha validación, la importancia de las baterías de tests, para acabar centrándome en una de ellas: la batería de tests PKITS del NITS para validación de certificados.

Validar firmas electrónicas no es tarea para pusilánimes

Nuestro trabajo de desarrollo goza de una criticidad especial ya que se trata de implementar procesos donde se busca la preservación de datos e identidad de partes en procesos de firma.

Están en juego relaciones contractuales de compraventa, reclutamiento, control de calidad, operaciones financieras, suministro, inversión, partnerships o prestación de servicios, por poner unos pocos ejemplos. Contratos de los que dependen la operativa, reputación, estrategia, supervivencia financiera y, por qué negarlo, los “sueños” de las partes. Cada firma esconde muchas horas de trabajo y negociaciones previas y desencadena consecuencias a posteriori con un impacto real y visible en la vida de personas y empresas.

Semejante responsabilidad es una carga enorme. Hay que ser especialmente rigurosos para poder asegurar que todo funciona como debería hacerlo y solo hay una manera de conseguirlo:

Tests, tests y más tests

Testear es un proceso clave en el desarrollo de software de calidad. El realizar un testeo riguroso y de calidad puede marcar la diferencia entre un producto excelente y otro mediocre y mal acabado.

El software que compone una infraestructura de firma digital no solo no escapa a estas apreciaciones sino que, dada su complejidad y criticidad, debe hacer especial énfasis en procesos de testeo.

Testear de principio a fín una infraestructura como la de Tractis es una tarea en estado de perfeccionamiento y mejora contínuos. Cada elemento de la infraestructura (Autoridad de Atributos -AA-, Autoridad de Sellado de Tiempo -TSA-, Archivo de Larga Duración -LTA-, etc) requiere distintos enfoques de testeo. Solo la Autoridad de Validación Semántica -SVA- incluye múltiples componentes: unos validan firmas criptográficamente, otros miran la adecuación de la firma del punto de vista sintáctico comprobando que la información contenida en la misma es suficiente y correcta … y, como no, componentes que validan el certificado o certificados que intervienen en la misma. Una infraestructura con múltiples elementos, cada elemento con varios componentes, cada componente con sus propia batería de tests.

Para ejemplificar uno de los procedimientos que hemos seguido a la hora de comprobar que nuestra infraestructura funciona de manera correcta, ilustraremos el testeo del componente de validación de certificados.

Validando al validador: Los tests PKITS del NIST

Implementar un validador de certificados no es tarea fácil. Por un lado tenemos una serie de excelentes documentos RFC que nos explicitan el comportamiento esperado exacto de este tipo de componentes. Por otro lado, no son documentos triviales de implementar y su análisis requiere una atención máxima al detalle.

Una vez desarrollado el software que plasma en código los algoritmos definidos en el RFC 3280, surge la pregunta interesante: ¿Lo hemos hecho bien?.

Hay multitud de situaciones descritas y casos particulares que una buena batería de tests de validación de certificados debería tener en cuenta para poder dar garantías suficientes de que el componente es robusto y consistente con la especificación del RFC. El construir esta batería requiere de un análisis minucioso de la especificación y de encontrar ejemplos y contraejemplos que validen que el software responde de manera coherente a todos los diferentes casos derivados de la casuística de las entradas. Afortunadamente existen baterías de este tipo ya diseñadas y disponibles de manera pública.

Una de estas baterías, la que la mayoría de los expertos consideran “la batería de tests definitiva en validación de certificados” por su excelente calidad, es la llamada PKITS que pone a disposición pública el NIST. El NIST o “National Institute of Standards and Technology” es la agencia del gobierno estadounidense dedicada a garantizar el cumplimiento de estándares y favorecer la interoperabilidad entre distintos fabricantes. Las pruebas PKITS diseñadas por la “NIST – Computer Security Division” y la NSA (Agencia de Seguridad Nacional) son utilizadas por las distintas administraciones del gobierno federal estadounidense como un método fiable para medir la calidad de los distintos despliegues PKI del gobierno. Dentro del PKITS, el caso que nos compete es la parte referente a “Path Validation Testing Program” diseñada para garantizar un cumplimiento exquisito de las especificaciones X.509 y RFC3280.

Nosotros llevamos a cabo este testeo como parte de las baterías de pruebas de nuestro backend de validación de firma y estamos orgulloso de anunciar que, desde la semana pasada:

Tractis supera satisfactoriamente la totalidad de tests que “PKITS – Path Validation Testing Programs” establece.

Esto no es sencillo. De hecho, no hay muchas implementaciones de validadores de certificados que pasen la totalidad de la casuística definida en PKITS. La superación de estos tests es el resultado de un trabajo duro durante los últimos dos años y nos otorga confianza de que estamos actuando diligentemente cuando prestamos servicios de firma digital a nuestros clientes.

Finalmente, quiero aprovechar para agradecer a David Cooper, Computer Scientist del NIST, por su valiosa ayuda a la hora de pulir las últimas aristas necesarias para superar el 100% de los tests y reiterar que PKITS es solo una pequeña parte (adecuación al RFC 3280) de una estrategia global de tests que incluye la validación de la adecuación a XAdES, DSS, RFC 3161 (cada uno merecedor de su propia serie de posts) y demás estándares empleados en la construcción del backend de Tractis.

Con este post termina la serie “Validación de firmas en Tractis”. Esperamos que haya sido de vuestro interés.

Por David García
Guardado en: Firma digital, Tecnología, Tractis | Sin comentarios » | 2 de Mayo de 2008

Más entradas en Negonation Blog