Documentación técnica de la cédula de identidad con chip

Autenticación y Firma Avanzada a través de PKCS#11

PKCS#11 es una interfaz estándar para el acceso a dispositivos criptográficos y tanto estos como la Cédula de Identidad uruguaya cuentan con drivers para funcionar como tal. La gran ventaja que ofrece este método es que, al tratarse de una interfaz estándar, existen muchas bibliotecas para facilitar la integración en múltiples plataformas. Para este fin, es necesario, en primera instancia, contar con los drivers correspondientes instalados según el SO en el que se va a trabajar. Dichos drivers pueden ser encontrados en el sitio de Agesic destinado a tal fin.

En general, se recomienda utilizar este mecanismo para autenticar o firmar siempre que se trate de una aplicación standalone o con un cliente web y se esté en un sistema operativo para el cual haya drivers soportados (esencialmente, Windows, Ubuntu y OS X). A nivel del software cliente, es común encontrar bibliotecas especiales (PKCS#11 Providers), que se instancian, se vinculan a la biblioteca del SO que implementa la interfaz PKCS#11; y la firma o la autenticación con estos dispositivos, que son tecnológicamente equivalentes, se realiza a través de los propios métodos del provider, que oficia como Wrapper.

Existe un caso de autenticación y dos casos de firma que vale la pena comentar en mayor profundidad, que son el de Autenticación con TLSFirma de PDF en Adobe y el del Uso de componente externo para firma.

  • Autenticación con TLS. Un uso muy común de autenticación con certificados es aquel en que se emplea TLS con la exigencia de certificado cliente. En este modo de uso de TLS, además de contar el servidor con un certificado para autenticarse ante el cliente (por ejemplo, para evitar phishing), la negociación tiene un paso adicional, en el que el servidor exige al cliente que presente un certificado para autenticarlo. En términos prácticos, una vez que el browser detecta que el servidor web le solicita que presente certificado del cliente, este busca entre los certificados cargados en su Store uno que sirva. Cualquier certificado de Firma Avanzada en su dispositivo criptográfico, incluyendo la Cédula de Identidad Digital, sirve para realizar autenticación de este modo. Se requiere cargar previamente el certificado en el Store del navegador e ingresar el pin para que cargue la identidad del usuario correctamente. Para esta carga, se necesita especificar el driver PKCS#11 del dispositivo, que debe estar previamente instalado, debido a que los navegadores utilizan esta interfaz para acceder a los dispositivos criptográficos que portan los pares de llaves y certificados. 
  • Firma de PDF en Adobe. Adobe Reader implementa la Firma Digital de PDF de forma muy sencilla y soporta la carga de un dispositivo a través de interfaz PKCS#11. Es así que es posible cargar la Cédula de Identidad Digital u otro dispositivo criptográfico en Adobe y realizar la Firma Digital Avanzada de un documento PDF en forma simple. Es una alternativa muy sencilla para intercambiar documentación firmada entre partes, ya que no requiere implementación de software alguna. Firmar PDF con Firma Avanzada en Adobe
  • Uso de componente externo para firma. Es común que se utilicen componentes que factorizan la implementación de la firma, de forma de simplificar su implementación. Si bien puede haber de muchos tipos, la mayoría basa su implementación en PKCS#11 para soportar una amplia gama de dispositivos criptográficos. Agesic desarrolló un componente de firma como software público. Esto implica que puede descargarse y evolucionarse libremente, ya que su código es abierto, pero también que no tiene soporte. Esto último implica que si bien su uso es completamente libre, quien lo incorpore a sus sistemas deberá ser capaz de darle soporte sobre como parte de su solución. Agesic no asume responsabilidad alguna por su soporte, mantenimiento y evolución. Se encuentra publicado en el Catálogo de Software Público Uruguayo. Plataformas como Genexus cuentan con componentes ya implementados para facilitar la integración aplicaciones desarrolladas en su tecnología.

Sin perjuicio de estas soluciones, es posible implementar el acceso a las claves y certificados por PKCS#11 desde cualquier tipo de sistema. Como se tiene que acceder a hardware, las implementaciones en arquitecturas standalone o cliente-servidor son directas; en arquitecturas web es necesario desarrollar algún componente que corra del lado cliente y realice la firma en nombre del sistema, dado que los browsers no cuentan con interfaces estándar para la realización de firmas digitales desde, por ejemplo, Javascript. La motivación del componente de firma desarrollado por Agesic como Software Público es, precisamente, facilitar la integración de la firma para aplicaciones web.

Etiquetas