FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para...

43
FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR XADES

Transcript of FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para...

Page 1: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR XADES

Page 2: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

INTRODUCCION A LAS FIRMAS XML

� Las firmas XML están diseñadas para su utilización en transacciones XML. Como toda firma digital, las firmas XML añaden autenticación, integridad de datos, y soporte al no repudio a los datos que firman.

� Las firmas XML tienen la ventaja respecto a las firmas que no se basan en XML (como CMS o CADES) de que permiten firmar sólo porciones específicas del árbol XML en vez del documento completo. Esta capacidad es muy útil cuando un documento tiene una larga historia en la que sus componentes son creados por diferentes autores en diferentes momentos, y hay que garantizar la integridad de cada porción.

� Otra ventaja de las firmas XML es que XML es la tecnología que hace posible actualmente la integración entre aplicaciones y datos, y todas las aplicaciones de firma actuales soportan XML.

� Una firma XML puede firmar más de un tipo de recurso. Por ejemplo, una sola firma XML podría abarcar datos HTML, JPG, XML, y una sección específica de un fichero XML.

� La validación de una firma requiere que el objeto de datos que fue firmado esté accesible. La propia firma XML indica por regla general la localización del objeto firmado original. Este objeto puede :

– ser referenciado por una URI dentro de la firma XML

– residir dentro del mismo recurso que la firma XML (la firma es un “hermano” del contenido)– estar incrustado dentro de la firma XML (la firma sería el padre del contenido).

– tener la firma XML incrustada dentro de él (la firma sería el hijo del contenido).

� La desventaja principal de las firmas XML es que ocupan más espacio que las firmas basadas en CMS, que son binarias. Además de que el código de las firmas XML es más extenso, se codifican en base64, lo que multiplica adicionalmente por 4/3 su extensión.

� Por otro lado, el proceso de generación de una representación canónica en firmas XML causa una latencia mayor que en las firmas basadas en CMS, y requiere capacidades de proceso más elevadas.

Page 3: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

¿POR QUE XADES?

� XADES es un estándar abierto basado en XMLDSIG, que lo extiende para proporcionar validez a largo plazo (sellos de tiempo,

listas de revocación de certificados, etc) y el resto de requisitos necesarios para cumplir con la Directiva 1999/93/EC de la

Comunidad Europea y el Consejo del 13 de Diciembre de 1999, por la que se establece un Marco Comunitario para la Firma Electrónica.

FIRMA XMLDSIG :

<Signature ID ?>

<SignedInfo>

<CanonicalizationMethod />

<SignatureMethod />

<Reference>

<Transforms />

<DigestMethod />

<DigestValue />

</Reference>

<Reference /> etc.

</SignedInfo>

<SignatureValue />

<KeyInfo />

<Object />

</Signature>

Elemento opcional. Puede incluir cualquier dato, como sellos

tiempo, o los datos a firmar en firmas enveloping.

Object (opcional)

Información adicional para obtener las claves para la verificación de la firma. En XADES, si aparece debe contener el certificado X509

del firmante, no sólo la clave pública (como en XMLDSIG), y puede también contener la cadena de confianza completa.

KeyInfo (opcional)

Valor de la firma en base64 del elemento SignedInfo completoSignatureValue

Contiene el valor del hash del objetoDigestValue

Algoritmo utilizado para obtener el hash del objetoDigestMethod

Lista ordenada de transformaciones aplicadas a los datos antes de

hacer el hash. Se usa en firmas enveloped para eliminar el elemento signature antes de calcular la firma.

Transforms (opcional)

URI que indica el objeto (u objetos) firmadosReference

Indica el algoritmo usado para firmar los datosSignatureMethod

Método para generar una representación canónica que iguala los

documentos XML sintácticamente equivalentes

CanonicalizationMethod

Contiene toda la información sobre los datos firmados e información adicional para verificación de firma

SignedInfo

Elemento raíz de la firma. Puede llevar opcionalmente identificadorSignature

DescripciónElemento

Page 4: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XMLDSIG

� XMLDSig cumple los requerimientos de “Firma Electrónica Avanzada” (aunque debe extenderse a XADES para cumplir todas las medidas de seguridad expuestas en [99/93/EC]) :

- Se identifica con un único firmante.- Identifica al firmante.

- Se crea por medios que sólo el firmante puede conocer y mantener.

- Se relaciona de tal manera con los datos que firma que un cambio en ellos es detectado.

� Por todo ello, XMLDSig cumple los principios de integridad, autenticación y no repudio.

� En XMLDSig se definen tres tipos de firmas (que también existen en XADES) :

- Enveloped : La firma está contenida dentro del documento que se firma.

- Enveloping : La firma contiene al documento.- Detached : La firma está separada del documento firmado.

� En XMLDSIG, el elemento “Object” puede contener cualquier tipo de contenido, y XADES delimita las posibilidades en cuanto a su estructura y los tipos de elementos que puede contener, que veremos posteriormente.

Page 5: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

FORMATOS DE FIRMA EN XADES

• Formatos de firma en XADES:

• XADES-BES (Basic Electronic Signature) : forma básica que simplemente cumple los requisitos legales de la Directiva para firma electrónica avanzada. Se usa cuando no se ha definido una política de firma.

• XAdES-EPES : forma básica a la que se la ha añadido información sobre la política de firma.

• XAdES-T (timestamp), añade un campo de sellado de tiempo para proteger la firma contra el repudio.

• XADES-C (complete): añade referencias a datos de verificación (certificados y listas de revocación) a los documentos firmados, para permitir verificación y validación off-line en el futuro (pero no almacena los datos en sí mismos).

• XAdES-X (extended): añade sellos de tiempo a las referencias introducidas por XAdES-C para evitar que pueda verse comprometida en el futuro una cadena de certificados.

• XAdES-X-L (extended long-term): añade los propios certificados y listas de revocacióna los documentos firmados para permitir la verificación en el futuro incluso si las fuentes originales (de consulta de certificados o de las listas de revocación) no estuvieran ya disponibles.

• XAdES-A (archivado), añade la posibilidad de timestamping periódico (por ej. cada año) de documentos archivados para prevenir que puedan ser comprometidos debido a la debilidad de la firma durante un periodo largo de almacenamiento.

Page 6: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES

� XAdES-BES se construirá sobre un XMLDSig, incorporando propiedades que se incluirán, en algunos casos, entre los datos firmados (dentro del elemento <xades:SignedProperties>), y en el caso de aquellas que no requieren ser firmadas, entre los datos no firmados (dentro del elemento <xades:UnsignedProperties>).

� El cálculo de la firma se realiza, igual que en XMLDSig, sobre los datos de negocio y sobre el nuevo conjunto de propiedades <xades:SignedProperties>, cuando esté presente.

� Esta modalidad extiende a XMLDSig, haciendo obligatorio incluir o proteger el certificado firmante dentro de la firma, utilizando una de las dos formas siguientes :

- Incorporando un resumen del certificado dentro de <xades:SigningCertificate>, que forma parte del elemento <xades:SignedSignatureProperties>, incluído dentro de las SignedProperties.

- No incorporando el elemento SigningCertificate, pero incluyendo el certificado X.509 completo dentro de <ds:keyInfo> y firmando después este elemento. Si SigningCertificate está presente en un XADES, no aplica ninguna restricción al elemento KeyInfo. Si SigningCertificate no está presente en XADES, aplican las siguientes restricciones a KeyInfo :

- el elemento ds:KeyInfo DEBE incluir un ds:X509Data que contenga el certificado del firmante;

- el elemento ds:KeyInfo también DEBE contener otros certificados que formen una cadena que PUEDE alcanzar el punto de confianza;

- el elemento ds:SignedInfo DEBE contener un elemento ds:Reference que referencie ds:KeyInfo, de manera que se incluya a este último en el cálculo del valor de la firma. De este modo, el certificado del firmante es securizado por la firma.

Page 7: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES(2)

<ds:Signature ID ?><ds:SignedInfo>

<ds:CanonicalizationMethod/> <ds:SignatureMethod/> (<ds:Reference URI? >

(<ds:Transforms />)? <ds:DigestMethod /> <ds:DigestValue/>

</ds:Reference>)+ </ds:SignedInfo>

<ds:SignatureValue /> (<ds:KeyInfo/>)? <ds:Object>

<QualifyingProperties> <SignedProperties>

<SignedSignatureProperties> (SigningTime) (SigningCertificate) (SignatureProductionPlace)? (SignerRole)?

</SignedSignatureProperties> <SignedDataObjectProperties>

(DataObjectFormat)* (CommitmentTypeIndication)* (AllDataObjectsTimeStamp)* (IndividualDataObjectsTimeStamp)*

</SignedDataObjectProperties> </SignedProperties> <UnsignedProperties>

<UnsignedSignatureProperties> (CounterSignature)*

</UnsignedSignatureProperties> </UnsignedProperties>

</QualifyingProperties></ds:Object>

</ds:Signature>

Page 8: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS

� PROPIEDADES “SignedSignature Properties” : contienen elementos que califican la firma en símisma.

– SigningTime : indica la fecha y la hora. En el caso de firma en cliente sin acceder a servidor, serámeramente indicativa (pues la fecha en el dispositivo cliente es fácilmente manipulable) y/o seráutilizada con fines distintos a conocer la fecha y hora de firma. Las políticas particulares de firma electrónica podrán determinar características y restricciones particulares respecto a generación en cliente de las referencias temporales y sincronización del reloj.

– SigningCertificate: contiene referencias a los certificados y algoritmos de seguridad utilizados para cada certificado. Este elemento se ha definido como una propiedad firmada, con objeto de evitar ataques de sustitución del certificado. Debe contener como mínimo el certificado del firmante, pero puede contener la cadena de certificación completa.

– SignatureProductionPlace : define el lugar geográfico donde se ha realizado la firma del documento.

– SignerRole : define el rol de la persona en la firma electrónica. En el caso de Facturae (factura electrónica), podría contener uno de los siguientes valores en el campo ClaimedRoles :

� “supplier” o “emisor”: cuando la firma la realiza el emisor.

� “customer” o “receptor”: cuando la firma la realiza el receptor.

� “third party” o “tercero”: cuando la firma la realiza una persona o entidad distinta al emisor o al receptor.

Page 9: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS (2)

� PROPIEDADES “SignedDataObjectProperties” : contienen elementos que califican todos (o algunos) de los objetos de datos firmados.

– DataObjectFormat : define el formato del documento original, y es necesario para que el receptor conozca la forma de visualizar el documento.

– CommitmentTypeIndication : define la acción del firmante sobre el documento firmado (lo aprueba, lo informa, lo recibe, lo certifica, ...).

– AllDataObjectsTimeStamp: contiene un sello de tiempo, calculado antes de la generación de la firma, sobre todos los elementos contenidos en ds:Reference. Da fe de que los objetos estaban generados antes de la firma, en el momento indicado en el sello de tiempo.

– IndividualDataObjectsTimeStamp: contiene un sello de tiempo, calculado antes de la generación de la firma, sobre algunos de los elementos contenidos en ds:Reference. Da fe de que los objetos estaban generados antes de la firma.

Page 10: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS (3)

� Identificación segura del firmante en XADES

– Una referencia a un certificado (SigningCertificate) es un par [hash del certificado – identificador del certificado]

– SigningCertificate contiene una lista de referencias a certificados. Uno de ellos DEBE ser una referencia al certificado del firmante. El mínimo tamaño de la lista es 1. PUEDE contener referencias y hashes de otros certificados

(que pueden formar una cadena hasta el punto de confianza).

– Si está presente el atributo URI, indica dónde se puede encontrar el certificado referenciado.

– Si ds:KeyInfo contiene <ds:X509IssuerSerial>, este valor debe ser consistente con <xades:IssuerSerial> del elemento

Cert de SigningCertificate.

Page 11: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS (4)

� Declaración segura de la Fecha de Firma y el Lugar de Producción de la firma

� Los datos xsd:dateTime siguen la sintaxis :

[-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]

donde la zona horaria se puede especificar como : Z (UTC) o (+|-)hh:mm

Page 12: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS (5)

� Indicador del tipo de objeto de datos

� El atributo ObjectReference identifica al objeto de datos cuyo tipo y codificación se proporcionan. Este atributo obligatorio DEBE referenciar al elemento ds:Reference de la ds:Signature que se corresponda

con el objeto de datos calificado por esta propiedad.

� <ObjectIdentifier> permite identificar el tipo de datos mediante una URI

� <MimeType> permite identificar el tipo MIME del objeto de datos.

� <Encoding> permite identificar la codificación del objeto de datos.

Page 13: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES FIRMADAS (6)

� Indicador del Tipo de Compromiso

� Se puede indicar explícitamente el compromiso contraído cuando se firma un objeto de datos.

� Identificadores predefinidos (cada uno lleva asociado una URI) :

– proofOfOrigin : prueba que el firmante reconoce haber creado, aprobado y enviado el objeto de datos firmado.

– proofOfReceipt : prueba que el firmante reconoce haber recibido el contenido del objeto de datos firmado.

– proofOfDelivery : prueba que un PSC ha entregado los datos firmados a un almacenamiento local donde son accesibles por el receptor.

– proofOfSender : prueba que los datos firmados fueron enviados por la entidad que proporciona esta indicación.

– proofOfApproval : prueba que el firmante ha aprobado el contenido del objeto de datos firmado.

– proofOfCreation : prueba que el firmante ha creado el objeto de datos firmado. No es necesario que el firmante también haya aprobado o enviado estos datos.

Page 14: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO EN XADES (1)

� Sellos de tiempo en XADES. Encapsulación

� EncapsulatedPKIDataType es un tipo para encapsular objetos binarios (codificados en base64) que

vienen de servicios relacionados con PKI (sellos de tiempo, certificados, CRLs, respuestas OCSP, etc).

� Todos los sellos de tiempo en XADES (T, X, A) utilizan el objeto EncapsulatedPKIDataType .

� El atributo Id permite referencias a este elemento particular.

� El atributo opcional Encoding permite especificar la codificación del objeto original (se proporcionan URIs

para BER, DER, CER, PER y XER).

� La mayoría de los sellos de tiempo que proporcionan las TSA son RFC 3161 (ASN.1). OASIS-DSS

también ha especificado un formado para sellos de tiempo XML, que está empezando a utilizarse.

Page 15: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO EN XADES (2)

� Sellos de tiempo en XADES. Contenedores

� EncapsulatedTimeStamp es una instancia de EncapsulatedPKIDataType.

� XMLTimeStamp permite almacenar sellos de tiempo XML.

� El elemento opcional <ds:Canonicalization> indica el algoritmo de representación canónica a aplicar a los

conjuntos de nodos XML a firmar, previamente a la concatenación aplicada para obtener la entrada al

proceso de cálculo del sello de tiempo. Si no está presente, se usa el algoritmo estándar de representación canónica.

� El elemento <xades:Include> se usa cuando existe una necesidad de identificar explícitamente los

diferentes objetos a los que se aplica el sello de tiempo.

Page 16: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO EN XADES (3)

� Sellos de tiempo en XADES. Contenedores (2)

� Se puede generar un sello de tiempo sobre TODOS los objetos de datos, o sobre objetos seleccionados de entre aquellos que son firmados por XADES. Dos nuevos elementos contenedores entre las propiedades firmadas : <xades:AllDataObjectsTimeStamp> y<xades:IndividualDataObjectsTimeStamp>.

� Cualquiera de esos dos elementos da fe de que los objetos referenciados estaban generados a una hora determinada, anterior a la firma.

� Por otro lado, en XADES-T se añade el sello SignatureTimeStamp, que se aplica sobre la forma canónica de ds:SignatureValue, y contiene la hora de creación de la firma.

� El elemento <xades:Include> se usa cuando hay una necesidad de identificar explícitamente los diferentes objetos sobre los que aplica el sello de tiempo.

� <xades:AllDataObjectsTimeStamp> no tiene ningún elemento <Include> : la entrada al proceso de cálculo del sello de tiempo es implícita.

Page 17: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO EN XADES (4)

� Sellos de tiempo en XADES. Contenedores (3)

� Cómo se genera la entrada al proceso de cálculo de sello de tiempo en

<xades:AllDataObjectsTimeStamp> :

– para cada hijo <ds:Reference> de un <ds:SignedInfo> EXCEPTO aquel que referencia a

<xades:SignedProperties> :

� Procesarlo, y si el resultado es un conjunto de nodos XML, generar su representación

canónica.

� Concatenar los octetos resultantes a aquellos que hayan sido obtenidos de los elementos <ds:Reference> previamente procesados.

� <xades:IndividualDataObjetsTimeStamp> tiene un elemento <xades:Include> por cada objeto de datos

que contribuye a la entrada al cálculo del sello de tiempo.

� Generación de la entrada al proceso de cálculo del sello de tiempo : análogo al explicando en la

diapositiva anterior, pero aplicado a las referencias explicitadas mediante elementos <xades:Include>.

� Se puede calcular el sello de tiempo colectivamente sobre más de un objeto de datos.

Page 18: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO SOBRE OBJETOS DE DATOS (1)

� Sellos de tiempo con referencias implícitas

� <xades:AllDataObjetsTimeStamp> no tiene ningún elemento <xades:Include> (identificación implícita de los objetos que contribuyen a la entrada para el cálculo del sello de tiempo).

Page 19: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

SELLOS DE TIEMPO SOBRE OBJETOS DE DATOS (2)

� Sellos de tiempo con referencias explícitas

� <xades:IndividualDataObjetsTimeStamp> tiene un elemento <xades:Include> por cada objeto de datos

al que aplica el sello de tiempo, y que es referenciado por un <ds:Reference>.

� Concatenar resultado de cada objeto obtenido a través de referencia, y generar forma canónica.

Page 20: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-BES : PROPIEDADES NO FIRMADAS

� CounterSignature: contiene una firma de la firma referenciada por este elemento (es decir, una contrafirma)

Page 21: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-EPES (1)

� XAdES-EPES extiende XADES-BES mediante la incorporación de un elemento SignaturePolicyIdentifier, que se ubicará en las propiedades firmadas. Este elemento indica que se debe usar una política de firma para la validación de la firma.

� La política de firma es un conjunto de reglas para la creación y validación de una firma electrónica, bajo las cuales se puede determinar que una firma es válida.

� SignaturePolicyIdentifier debe incluir los siguientes contenidos en sus elementos constitutivos :

– Una referencia explícita al documento de política de firma. Para ello aparecerá el OID que identifique la versión concreta de la política de firma o la URL de su localización.

<xades:SigPolicyID>

<xades:Identifier> … </xades:Identifier>

– La huella digital del documento de política de firma correspondiente y el algoritmo utilizado, en el elemento <xades:SigPolicyHash>, de manera que el verificador pueda comprobar, calculando a su vez este valor, que la firma está generada según la misma política de firma que se utilizará para su validación.

– Además, puede incluir opcionalmente elementos calificadores que completen la información sobre esa política de firma.

Page 22: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-EPES (2)

� Para verificar un XAdES-EPES, se tiene que comprobar, además de todo lo que se hace con XADES-BES, que el Hash de la política se corresponde con una política de firmado aceptada por la administración. Y por supuesto, se deben seguir las directrices especificadas en dicha política para la verificación.

� Aún asumiendo una política de firma común a la AGE, que sigan todos sus organismos, ésta puede tener varias versiones, y se deberá comprobar que el OID es aceptado y que el hash de dicho documento coincide con el referido en SigPolicyHash.

Page 23: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-EPES (3)

� Identificando de manera segura la Política de Firma en XADES :

� SignaturePolicyId :

– Identifica la política de firma. Usa un URI para identificar la política. Si el identificador es un OID, se puede construir una

URN según indica la RFC 3061 (“Un Espacio de Nombres de Identificadores de Objetos”).

– Puede incluir descripciones en texto de la política de firma.

– Puede incluir una lista de referencias a documentación explicativa adicional.

� ds:Transforms (opcional) puede contener transformaciones a aplicar sobre el documento de política de firma previamente al

cálculo del hash

� xades:SigPolicyHash incluye el algoritmo de hashing y el valor del hash calculado sobre el resultado de aplicar las

transformaciones anteriotes al documento que define la política de firma.

� xades:SigPolicyQualifiers incluye calificadores de la firma. Se han definido hasta el momento dos calificadores de firma :

– Una URL en la que se puede obtener una copia de la política de firma;

– Un aviso al usuario que se debería mostrar cuando se verifica la firma.

Page 24: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-T

� Este perfil añade un time-stamp sobre ds:SignatureValue para proporcionar protección contra el repudio del certificado digital. El sello de tiempo contiene la hora de creación de la firma digital. Si el certificado digital con el que se firmó no fue revocado antes de esta hora, será imposible repudiar la firma.

� Este perfil añade el siguiente elemento dentro del elemento UnsignedSignatureProperties :

* SignatureTimeStamp+ : el cálculo del sello de tiempo se realiza siempre sobre la forma canónica del elemento <ds:SignatureValue>.

- Su cardinalidad es múltiple porque se permite incluir varios sellos de tiempo de distintos proveedores.

Estructura típica :

<UnsignedSignatureProperties>

<SignatureTimeStamp>

...

</SignatureTimeStamp> ...

</UnsignedSignatureProperties>

Page 25: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-C

� XML Advanced Electronic Signature with complete validation data (XAdES-C). Incluye referencias al conjunto de datos que soportan la validación de la firma electrónica (es decir, las referencias a la cadena de certificación y su información asociada sobre el estado de revocación). Este perfil es útil para aquellas situaciones en las que dicha información es archivada por una fuente externa, como un Prestador de Servicios de Certificación. Este perfil añade los siguientes elementos al perfil XADES-T dentro del elemento UnsignedSignatureProperties :

� CompleteCertificateRefs : contiene referencias (no los datos en sí mismos) a todos los certificados de la cadena de confianza necesaria para verificar la firma, excepto el certificado firmante.

� CompleteRevocationRefs : contiene referencias a las CRLs y/o respuestas OCSP usadas en la verificación de los certificados.

Estructura típica :

<UnsignedSignatureProperties> <SignatureTimeStamp>

...</SignatureTimeStamp> <CompleteCertificateRefs>

...</CompleteCertificateRefs>

<CompleteRevocationRefs>...

</CompleteRevocationRefs>...

</UnsignedSignatureProperties>

Page 26: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-C : REFERENCIAS A DATOS DE ESTADO DE CERTIFICADOS

� XADES-C especifica nuevos elementos que contienen referencias a :

– conjunto completo de CRLs, y respuestas OCSP que se han utilizado en la validación de los certificados de firmante y CA.

� <xades:CompleteRevocationRefs> / complete-revocation-references

� se puede elegir entre referencias a CRLs, a respuestas OCSP, o a otro material

Page 27: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-C : REFERENCIAS A DATOS DE ESTADO DE CERTIFICADOS (2)

Page 28: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-C : REFERENCIAS A DATOS DE ESTADO DE CERTIFICADOS (3)

� Cada referencia a CRL (“CRLRef”) incluye su hash, y opcionalmente un identificador, que a su vez contiene el nombre del Emisor de CRL, la hora de emisión, y opcionalmente el número de la CRL.

Page 29: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-C : REFERENCIAS A DATOS DE ESTADO DE CERTIFICADOS (4)

� Cada respuesta OCSP incluye su hash (opcional, para eliminar la ambigüedad en dos respuestas demasiado

próximas entre sí en el tiempo) y su identificador, que a su vez contiene el identificador del servidor OCSP (comoun nombre, o identificado por la clave del servidor) y la hora a la que se generó la respuesta (ProducedAt, de tipo

xsd:DateTime)

Page 30: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-X

� XML Advanced Electronic Signature with eXtendedvalidation data (XAdES-X). Incluye un time-stamp sobre las referencias a los datos de validación, o bien sobre el elemento Signature y los datos de validación mencionados. Este sello de tiempo toma en cuenta el riesgo de que cualquiera de las claves usadas en la cadena de certificación o en la información del estado de revocación puedan ser comprometidas. Esta modalidad de XADES tiene dos implementaciones alternativas :

– La primera añade el siguiente elemento a XADES-C dentro del elemento UnsignedSignatureProperties :

� RefsOnlyTimeStamp* : esta propiedad contiene un sello de tiempo aplicado sólo sobre las referencias a certificados y la información del estado de revocación. Es aplicable a referencias CRLs.

– La segunda añade el siguiente elemento a XADES-C dentro del elemento UnsignedSignatureProperties :

� SigAndRefsTimeStamp* : esta propiedad contiene un sello de tiempo computado sobre el valor de la firma, el sello de tiempo de la firma, y las referencias a certificados y estados de revocación. Es aplicable a referencias a respuestas OCSP.

Ejemplo :

<UnsignedSignatureProperties>

<SignatureTimeStamp>...

</SignatureTimeStamp>

<CompleteCertificateRefs>

...</CompleteCertificateRefs>

<CompleteRevocationRefs>

...

</CompleteRevocationRefs>

<SigAndRefsTimeStamp>...

</SigAndRefsTimeStamp >

...

</UnsignedSignatureProperties>

Page 31: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-X (2)

� Si se usan referencias a respuestas OCSP :

– La entrada al proceso de cálculo del sello de tiempo es la concatenación de :

� Cadena de octetos de la representación canónica del elemento <ds:SignatureValue>.

� Representación canónica de cualquier <xades:SignatureTimeStamp> presente.

� <xades:CompleteCertificateRefs> y <xades:AttributeCertificateRefs>.

� <xades:CompleteRevocationRefs> y <xades:AttributeRevocationRefs>.

� Si se usan referencias a CRLs :

– La entrada al proceso de cálculo del sello de tiempo es la concatenación de :

� <xades:CompleteCertificateRefs> y <xades:AttributeCertificateRefs>.

� <xades:CompleteRevocationRefs> y <xades:AttributeRevocationRefs>.

Page 32: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-X (3)

� Sellos de tiempo : Caso No Distribuido

� Cuando SigAndRefsTimeStamp y todas las propiedades no firmadas que comprende su sello de tiempo tienen el mismo nodo padre, esta propiedad usa el mecanismo implícito (no hay elementos

<xades:Include>) :

Page 33: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-X (4)

� Sellos de tiempo : Caso Distribuido

� Cuando SigAndRefsTimeStamp y alguna de las propiedades no firmadas que comprende su sello de tiempo no tienen el mismo nodo padre, las aplicaciones de firma deben construir esta propiedad como

sigue :

– No se debe generar un elemento Include que apunte a ds:SignatureValue (referencia implícita).

– Se generará un elemento Include para cada propiedad no firmada que deba abarcar el sello de tiempo : elementos SignatureTimeStamp, CompleteCertificateRefs, CompleteRevocationRefs.

Page 34: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-XL

� XML Advanced Electronic Signature with extended validation data incorporated for the long term(XAdES-XL). Un beneficio fundamental de XADES es que los documentos firmados electrónicamente pueden permanecer válidos durante largos períodos, incluso si se rompen los algoritmos criptográficos subyacentes. Esta, que es la característica más importante de XADES, se llama Long Term Validation o Firma Longeva.

� XADES-X-L incluye los datos de validación para aquellas situaciones en las que los datos de validación no se almacenan a largo plazo en ningún otro sitio. Este perfil añade los siguientes elementos a XADES-X dentro del elemento UnsignedSignatureProperties :

– CertificateValues : contiene el conjunto completo de certificados que se han utilizado para validar la firma electrónica (encapsula cada certificado en base64).

– RevocationValues : incluye la propia información de validación (respuestas CRL u OCSP).

Ejemplo :

<UnsignedSignatureProperties>

<SignatureTimeStamp>...

</SignatureTimeStamp>

<CompleteCertificateRefs>

...</CompleteCertificateRefs>

<CompleteRevocationRefs>

...

</CompleteRevocationRefs>

<SigAndRefsTimeStamp>...

</SigAndRefsTimeStamp >

<CertificateValues>

...

</CertificateValues> <RevocationValues>

...

</RevocationValues>

</UnsignedSignatureProperties>

Page 35: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-XL : VALORES DE CERTIFICADOS

� El elemento <xades:CertificateValues> contiene el conjunto completo de certificados que se han usado para validar la firma electrónica, incluyendo el certificado del firmante (excepción : no es necesario incluir

aquellos certificados que se encuentren presentes en el elemento ds:Keyinfo de la firma).

� Cada elemento EncapsulatedX509Certificate es capaz de contener certificados X.509 codificados en

DER, en codificación base64.

� El elemento OtherCertificate es un contenedor para futuros nuevos formatos de certificados que pueden

aparecer.

Page 36: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-XL : VALORES DE DATOS DE ESTADO DE CERTIFICADOS

� El elemento <xades:RevocationValues> contiene el conjunto completo de datos de estado de certificación que se han usado para verificar la firma. Debe contener todos los datos de validación referenciados dentro de <xades:CompleteRevocationRefs>.

� Atributo Id para permitir referencias.

� Lista de valores encapsulados de CRLs u OCSPs.

� Contenedor “OtherValues” para otras formas de datos de estado de certificados.

Page 37: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-A (1)

� XML Advanced Electronic Signature with archiving validation data (XAdES-A). Incluye sellos de tiempo adicionales para archivar firmas de forma que estén protegidas si los datos criptográficos se vuelven débiles.

� A lo largo de un período de tiempo pueden surgir vulnerabilidades en los algoritmos criptográficos usados para crear una firma electrónica. Antes de que estas debilidades sean probables (por ejemplo, a causa de mejoras en las técnicas de criptoanálisis o en la capacidad de proceso), se deben tomar medidas paramantener la validez de la firma electrónica. La técnica usada en XADES-A son los “Datos de Validación de Archivo” (archive validation data).

� Los Datos de Validación de Archivo consisten en sellar temporalmente el conjunto formado por los datos de validación completos, y los datos completos de certificados y revocación, junto con la firma electrónica.

� Además, cuando exista el riesgo de que el hash usado por el sello de tiempo ya no sea seguro, el time-stamp se aplicará recurrentemente, incluyendo los sellos de tiempo previos entre el conjunto de datos que se fecha.

� Las TSA usan criptografía más fuerte o con claves más largas que las que se usan en los certificados de usuario. Por tanto, un sello de tiempo ofrece mayor protección contra la falsificación. Esta última puede derivarse de una rotura del algoritmo o compromiso de la clave. Este proceso de time-stamping debe repetirse iterativamente antes de que los algoritmos criptográficos empleados para generar el sello de tiempo previo dejen de ser seguros. Por tanto, los Datos de Validación de Archivo pueden incorporar múltiples sellos de tiempo anidados.

Page 38: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

XADES-A (2)

� El perfil XADES-A añade el siguiente elemento a XAdES-X-L dentro del elemento UnsignedSignatureProperties :

– ArchiveTimestamp+ : sello de tiempo aplicado sobre la firma electrónica y los datos completos de validación (cadena de confianza y datos de revocación).

Ejemplo :

<UnsignedSignatureProperties>

<SignatureTimeStamp>...

</SignatureTimeStamp> <CompleteCertificateRefs>...

</CompleteCertificateRefs> <CompleteRevocationRefs>

...</CompleteRevocationRefs> <SigAndRefsTimeStamp>

...</SigAndRefsTimeStamp >

<CertificateValues>...

</CertificateValues> <RevocationValues>...

</RevocationValues><ArchiveTimeStamp>

…</ArchiveTimeStamp>

</UnsignedSignatureProperties>

Page 39: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

EJEMPLO DE EVOLUCION DE FIRMAS (1)

� Firma inicial XADES-EPES :

Page 40: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

EJEMPLO DE EVOLUCION DE FIRMAS (2)

� Generación de XADES-T :

Page 41: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

EJEMPLO DE EVOLUCION DE FIRMAS (3)

� Generación de XADES-C :

Page 42: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

EJEMPLO DE EVOLUCION DE FIRMAS (4)

� Generación de XADES-X :

Page 43: FIRMAS ELECTRONICAS MEDIANTE EL ESTANDAR · PDF fileDigestMethod Algoritmo utilizado para obtener el hash del objeto Lista ordenada de transformaciones aplicadas a los datos antes

EJEMPLO DE EVOLUCION DE FIRMAS (5)

� Generación de XADES-A :