180 likes | 591 Views
API y Servicios. Indice. Motivación Funcionalidades Arangí y Arangí base Tipos de firmas Compleción de firmas Resellado Gestión de almacenes de claves Validación de certificados Validación de firmas Cliente Arangí Extensión del API Arangí server Otros ejemplos. Motivación.
E N D
Indice • Motivación • Funcionalidades • Arangí y Arangí base • Tipos de firmas • Compleción de firmas • Resellado • Gestión de almacenes de claves • Validación de certificados • Validación de firmas • Cliente Arangí • Extensión del API • Arangí server • Otros ejemplos
Motivación • La ACCV desarrollo en 2001 un API denominado IDEAS con capacidades limitadas de firma simple y validación, así como de extracción de datos de los certificados. Este API se ha utilizado por diversas empresas y organismos para el desarrollo de aplicaciones. • IDEAS ha ido evolucionando hasta llegar a su versión 3.8.7 (bugfix) en este mismo año. Se han añadido funcionalidades de validación avanzada y sellado de tiempo. • A día de hoy los formatos de firma han evolucionado y las aplicaciones reclaman más funcionalidades. • Se revisaron las distintas alternativas como @firma para decidir si evolucionar el API o adaptarse a las funcionalidades de un API existente. • Se comprobó que en los desarrollos realizados por la ACCV ya se habían utilizado componentes individuales que en conjunto cubrían las funcionalidades necesarias • Firma (incluyendo formatos avanzados) • Compleción de firmas, hasta versiones longevas • Validación (incluyendo formatos avanzados) • Obtención de los datos de los certificados, asociados a los distintos perfiles • Después de un proceso de reingeniería en octubre de 2011 se libera la versión 1.1.0 de Arangí
Funcionalidades • Generación y validación de firmas simples (PKCS#7, CMS, PDF) • Generación y validación de firmas avanzadas (XAdES, PAdES) • Compleción y resellado de firmas • Validación de certificados • Gestión de almacenes de claves en navegador multiplataforma • Gestión de almacenes de claves en dispositivos criptográficos • Obtención de los datos de los certificados, incluyendo los específicos asociados al perfil • Generación y validación de sellos de tiempo • Gestión de CRLs y respuestas OCSP
Arangí y Arangí base Se distribuyen dos librerías Java • Arangí • Librería de alto nivel. • Pocos métodos sencillos y potentes. • Los valores de trabajo y los perfiles de certificados están preparados para trabajar con la ACCV. http://www.accv.es/descargas/Setup/arangi/latest/arangi/index.html • Arangí base • Métodos genéricos con muchas posibilidades. • Posibilidad de funcionar con distintos tipos de certificados, diferentes perfiles, servidores de sellos de tiempo, OCSP, etc... http://www.accv.es/descargas/Setup/arangi/latest/arangi_base/index.html
Tipos de firma (Arangí) • Firmas simples • PKCS#7, CMS y PDF • Firmas avanzadas • XAdES-BES (attached y detached) • XAdES-T (attached y detached) • XAdES-XL [XAdES-A] (attached y detached) • PAdES-LTV [PAdES-LTA] La parte de XAdES es un recubrimiento de las clases del Ministerio http://oficinavirtual.mityc.es/componentes/MITyCLibXADES/index.html por lo que se soportan las versiones 1.1.1, 1.2.2, 1.3.2 del estándar
Compleción de firmas Arangí permite completar firmas avanzadas, añadiendo información de validación y temporal, permitiendo llegar a formas longevas. Puede promocionar: • XAdES-BES a XAdES-T • XAdES-BES a XAdES-XL • XADES-T a XAdES-XL • PDF con firma básica a PAdES-LTV Por ejemplo, si queremos pasar una firma XAdES-BES a XAdES-XL utilizariamos: Firma attached: XAdESXLSignature.completeToXAdESXL(XAdESBESSignature) Firma detached: XAdESXLSignature.completeToXAdESXL(XAdESBESSignature, IDocument)
Resellado Una vez en un formato longevo, Arangí permite efectuar resellados de tiempo con la periodicidad que se establezca por programa para mantener las firmas en modo Archivo. Para el caso de XAdES, a partir de un XadES-XL se obtendrá un XAdES-A XAdESXLSignature.addArchiveTimeStamp(); Este proceso se debe automatizar para que se realice antes que caduque el certificado de la TSA. Para ello puede utilizarse el método getTimeStampCertificateExpiration, que devuelve el fin del periodo de caducidad del ultimo sello de tiempo. El caso de PAdES es similar. A partir de un PAdES-LTV se obtendrá un PAdES-LTA PAdELTVLSignature.addDocumentTimeStamp();
Gestión de almacenes de claves Permite acceder a los siguientes almacenes de claves: • KeyStoreManager: almacenes de claves software. Gestión de PKCS#12 y JKS • Pkcs11Manager: acceso directo a los dispositivos a través del driver PKCS#11. Sólo en Windows • PersonalWindowsKeyStoreManager: almacén de certificados personales de Windows • CAWindowsKeyStoreManager: almacén de certificados de Autoridad de Certificación de Windows. • MozillaKeyStoreManager: almacén de certificados de Mozilla Firefox. Trabaja en Windows, Linux y Mac OS X. En todos estos almacenes es posible la búsqueda de certificados y su utilización en firmas y cifrado de documentos. En los dos primeros, además, es posible una gestión completa: creación de pares de claves, generación de PKCS#10, importación de certificados, borrado, cambio de PIN y PUK, etc.
Validación de certificados Para validar un certificado se requiere: • Que el certificado contenga alguna de las URLs de validación: OCSP o CRL. Si no es así se puede pasar a la librería un fichero XML que indica donde se encuentran estos servicios. • Pasarle a la librería una lista de certificados de Autoridad de Certificación para que se pueda validar la cadena de certificación. La validación de certificados no se recomienda en entornos cliente ya que puede ocurrir que no exista posibilidad de acceso a los servicios de validación. Certificado OCSP XML CRL Certificado CA1 Certificado CA1 Certificado CA
Validación de firmas Arangí permite validar todos los tipos de firma que genera. La validación de una firma supone realizar dos acciones: • Validar que la firma se corresponda con el documento (concepto de integridad). • Validar que el certificado con el que se firmó era válido en el momento de la firma. Se ofrecen dos métodos para realizar la primera validación: • isValidSignatureOnly(): valida que la firma se corresponda con el documento para firmas attached (que contienen el documento dentro de la firma) • isValidSignatureOnly(IDocument): valida que la firma se corresponda con el documento para firmas detached (el documento se pasa como parámetro al método porque no se encuentra dentro de la firma) Y otros dos que realizan la validación completa (validación de la integridad y de la validez del certificado): • isValid(): realiza la validación completa para firmas attached. • isValid(IDocument): realiza la validación completa para firmas detached.
Cliente Arangí • Para facilitar el desarrollo de aplicaciones web se proporciona una herramienta que recubre el API y que permite la firma (y validación) de documentos en cliente. • Gestiona de forma transparente los almacenes de certificados, accediendo a todos los que encuentre disponibles y presentando los certificados al usuario (evitando duplicados) • El recubrimiento se divide en dos partes: • Cliente Arangí. Clases Java para llamar a las funciones del API. • Applets. Clases que extienden javax.swing.JApplet y que permiten utilizar directamente el Cliente de Arangí como applets dentro de una página web.
Extender el API El API se puede extender de dos formas: • Crear una librería que particularice las funcionalidades de Arangí base del mismo modo que se hizo en la librería Arangí: • Definir los managers PKCS#11 para tratar con los dispositivos que se requiera. • Definir una TSA por defecto extendiendo la clase TimeStamp de la librería base. • Extender las clases que realizan y validan las firmas para utilizar la TSA creada en el punto anterior. • Extender las clases de certificados para que trabajen con aquellos que se necesiten. • Crear una librería que extienda Arangí para tratar con certificados distintos a los de la ACCV y el DNIe.
Arangí Server Como prueba de uso y por la ventaja de disponer de un validador especializado se ha desarrollado Arangí Server. Proporciona dos sistemas de acceso: • Frontal interactivo, con capacidades de firma y comprobación de firma • Servicios web, con identificación para las aplicaciones mediante WSS http://maven.accv.es:8080/arangi_server/services/ArangiServerWS?wsdl
Otros ejemplos • La ACCV ha utilizado Arangí en la mayoría de sus aplicaciones: • ARCA: Sistema de Generación y Gestión de Certificados • APSC: Área Personal de Servicios de Certificación • Fandango: Certificación de Publicaciones • IDP: Gestor de Identidades • NPSCv2: Gestor de Certificados No Personales • Tuvalu Server: Servidor OCSP • La Generalitat Valenciana está desarrollando servicios de Administración Electrónica (SAFE) utilizando el Arangí como base criptográfica.
Mejoras • Soporte de CAdES • Soporte de XAdES-EPES, especialmente para la validación de la Factura Electrónica • Integración con los servicios de @firma • Mejor soporte multiplataforma
Cómo conseguirlo • El API, la documentación y el código fuente pueden descargarse desde la Zona de Desarrollo de la ACCV (requiere identificación con certificado) https://www.accv.es:8445/secure_area/descargas/arangi.html • Las librerías se encuentran accesibles desde el almacén de artefactos Maven de la ACCV http://maven.accv.es:8080/artifactory/repo