Introduction to XAdES (XML Advanced Electronic Signatures)

The importance of electronic signature is obvious, not only for people and companies doing electronic business, but for nonprofit organizations and personals as well. Everybody who cares about trust and security in data storage and processing wants to have a way to sign his documents or data and to validate the signature of some second or third party. Thus, the electronic signature is an important security component that can be used to protect information and provide trust in modern electronic world.

In this article we are talking about signing XML documents, though the same mechanism of XML signature can be used to sign any type of data. XML signature may be detached from or attached to signed data. In the latter case, the signature is said to be enveloping, when it contains the signed data within itself, or may be enveloped when it comprises a part of the document containing the signed data.

Content

Why XAdES?

Principally, the way to sign digital documents was available before XAdES was issued. It was defined in the W3C Recommendation for XML Signature Syntax and Processing, called XML-DSig. So why someone would bother about XAdES, the new standard for XML signature? The answer is trivial: XAdES defines some extensions and specifications for XML-DSig to provide some advanced features. More specifically, XAdES defines six precise profiles in addition to XML-DSig. These profiles are XAdES, XAdES-T, XAdES-C, XAdES-X, XAdES-X-L and XAdES-A. Each following profile adds some properties to the previous one. First profile, XAdES itself, adds properties to basic XML-DSig signature. You can read XAdES specifications here.

How It Works

The basic XML signature, defined in XML-DSig, consists on a Signature element in the http://www.w3.org/2000/09/xmldsig# namespace. The structure of this element is as follows:

  1. <span class="tag">&lt;<span class="title">Signature</span>&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">SignedInfo</span>&gt;</span>
  3. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">SignatureMethod</span> /&gt;</span>
  4. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">CanonicalizationMethod</span> /&gt;</span>
  5. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">Reference</span>&gt;</span>
  6. &nbsp; &nbsp; &nbsp; &nbsp;<span class="tag">&lt;<span class="title">Transforms</span> /&gt;</span>
  7. &nbsp; &nbsp; &nbsp; &nbsp;<span class="tag">&lt;<span class="title">DigestMethod</span> /&gt;</span>
  8. &nbsp; &nbsp; &nbsp; &nbsp;<span class="tag">&lt;<span class="title">DigestValue</span> /&gt;</span>
  9. &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">Reference</span>&gt;</span>
  10. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">Reference</span> /&gt;</span> etc.
  11. &nbsp; <span class="tag">&lt;/<span class="title">SignedInfo</span>&gt;</span>
  12. &nbsp; <span class="tag">&lt;<span class="title">SignatureValue</span> /&gt;</span>
  13. &nbsp; <span class="tag">&lt;<span class="title">KeyInfo</span> /&gt;</span>
  14. &nbsp; <span class="tag">&lt;<span class="title">Object</span> /&gt;</span>
  15. <span class="tag">&lt;/<span class="title">Signature</span>&gt;</span>

This form of digital signature may be considered as a minimal form. It can satisfy some basic requirements, but it lacks in most of the features introduced by XAdES standard, which we will discuss in the following sections.

XAdES

Provides basic authentication and integrity protection and satisfies the legal requirements for advanced electronic signatures as defined in the Directive 1999/93/EC of the European Parliament and of the Council of 13 December 1999 on a Community framework for electronic signatures [ EU-DIR-ESIG]. The XAdES profile does not provide neither non-repudiation of signature existence nor long-term validation. It adds the following elements to XML-DSig:

  1. <span class="tag">&lt;<span class="title">ds:Signature</span> <span class="attribute">ID</span>?&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">ds:SignedInfo</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  3. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">ds:CanonicalizationMethod</span>/&gt;</span> &nbsp;
  4. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">ds:SignatureMethod</span>/&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  5. &nbsp; &nbsp; (<span class="tag">&lt;<span class="title">ds:Reference</span> <span class="attribute">URI</span>? &gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  6. &nbsp; &nbsp; &nbsp; (<span class="tag">&lt;<span class="title">ds:Transforms</span> /&gt;</span>)? &nbsp; &nbsp; &nbsp; &nbsp;
  7. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">ds:DigestMethod</span> /&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  8. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">ds:DigestValue</span> /&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  9. &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">ds:Reference</span>&gt;</span>)+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  10. &nbsp; <span class="tag">&lt;/<span class="title">ds:SignedInfo</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  11. &nbsp; <span class="tag">&lt;<span class="title">ds:SignatureValue</span> /&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  12. &nbsp;
  13. &nbsp; (<span class="tag">&lt;<span class="title">ds:KeyInfo</span> /&gt;</span>)?
  14. &nbsp; <span class="tag">&lt;<span class="title">ds:Object</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  16. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">QualifyingProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  17. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  18. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">SignedProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  19. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  20. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">SignedSignatureProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SigningTime) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  22. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SigningCertificate) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  23. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SignaturePolicyIdentifier) &nbsp; &nbsp; &nbsp; &nbsp;
  24. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SignatureProductionPlace)? &nbsp; &nbsp; &nbsp; &nbsp;
  25. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SignerRole)? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  26. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">SignedSignatureProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp;
  27. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  28. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">SignedDataObjectProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp;
  29. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (DataObjectFormat)* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  30. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (CommitmentTypeIndication)* &nbsp; &nbsp; &nbsp;
  31. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (AllDataObjectsTimeStamp)* &nbsp; &nbsp; &nbsp; &nbsp;
  32. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (IndividualDataObjectsTimeStamp)*
  33. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">SignedDataObjectProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp;
  34. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">SignedProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  35. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">UnsignedProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  36. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;<span class="title">UnsignedSignatureProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp;
  37. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (CounterSignature)* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  38. &nbsp; &nbsp; &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">UnsignedSignatureProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp;
  39. &nbsp; &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">UnsignedProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  40. &nbsp; &nbsp; <span class="tag">&lt;/<span class="title">QualifyingProperties</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  41. &nbsp; <span class="tag">&lt;/<span class="title">ds:Object</span>&gt;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  42. <span class="tag">&lt;/<span class="title">ds:Signature</span>&gt;</span>

In this example, the elements that are already defined in XML-DSig, appear with the "ds" prefix, whereas the new XML elements defined in the present profile, appear without a prefix. The "?" symbol, denotes zero or one occurrence; "+" denotes one or more occurrences; and "*" denotes zero or more occurrences.

The QualifyingProperties element acts as a container for all the qualifying information that should be added to an XML signature. The qualifying properties are split into properties that are cryptographically bound to (i.e. signed by) the XML signature (SignedProperties), and properties that are not cryptographically bound to the XML signature (UnsignedProperties).

XAdES-T

This profile adds time-stamp to provide protection against repudiation of digital certificate. Timestamp holds the time of digital signature creation. If digital certificate was not repudiated before this time, the repudiation of the signature is impossible.

This profile adds the following element within UnsignedSignatureProperties element:

  • SignatureTimeStamp+

Example:

  1. <span class="tag">&lt;<span class="title">UnsignedSignatureProperties</span>&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">SignatureTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SignatureTimeStamp</span>&gt;</span>
  3. ...
  4. <span class="tag">&lt;/<span class="title">UnsignedSignatureProperties</span>&gt;</span>

XAdES-C

XML Advanced Electronic Signature with complete validation data (XAdES-C). Includes references to the set of data supporting the validation of the electronic signature (i.e. the references to the certification path and its associated revocation status information). This profile is useful for those situations where such information is archived by an external source, like a trusted service provider. This profile adds the following elements to XAdES-T profile within UnsignedSignatureProperties element:

  • CompleteCertificateRefs
  • CompleteRevocationRefs

Example:

  1. <span class="tag">&lt;<span class="title">UnsignedSignatureProperties</span>&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">SignatureTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SignatureTimeStamp</span>&gt;</span>
  3. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">CompleteCertificateRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteCertificateRefs</span>&gt;</span>
  4. &nbsp; &nbsp; <span class="tag">&lt;<span class="title">CompleteRevocationRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteRevocationRefs</span>&gt;</span>
  5. ...
  6. <span class="tag">&lt;/<span class="title">UnsignedSignatureProperties</span>&gt;</span>

XAdES-X

XML Advanced Electronic Signature with eXtended validation data (XAdES-X). Includes time-stamp on the references to the validation data or on the Signature element and the aforementioned validation data. This time-stamp takes into account the risk that any keys used in the certificate chain or in the revocation status information may be compromised. This form has two alternative implementations.

The first one adds the following element to XAdES-C within the UnsignedSignatureProperties element:

  • RefsOnlyTimeStamp*

The second one adds the following element to XAdES-C within the UnsignedSignatureProperties element:

  • SigAndRefsTimeStamp*

Example:

  1. <span class="tag">&lt;<span class="title">UnsignedSignatureProperties</span>&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">SignatureTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SignatureTimeStamp</span>&gt;</span>
  3. &nbsp; <span class="tag">&lt;<span class="title">CompleteCertificateRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteCertificateRefs</span>&gt;</span>
  4. &nbsp; <span class="tag">&lt;<span class="title">CompleteRevocationRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteRevocationRefs</span>&gt;</span>
  5. &nbsp; <span class="tag">&lt;<span class="title">SigAndRefsTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SigAndRefsTimeStamp</span> &gt;</span>
  6. &nbsp; ...
  7. <span class="tag">&lt;/<span class="title">UnsignedSignatureProperties</span>&gt;</span>

XAdES-X-L

XML Advanced Electronic Signature with extended validation data incorporated for the long term.

One important benefit from XAdES is that electronically signed documents can remain valid for long periods, even if underlying cryptographic algorithms are broken. This, probably the most important feature, is called Long Term Validation.

XAdES-X-L includes the validation data for those situations where the validation data is not stored elsewhere for the long term. This profile adds the following elements to XAdES-X within the UnsignedSignatureProperties element:

  • CertificatesValues
  • RevocationValues

Example:

  1. <span class="tag">&lt;<span class="title">UnsignedSignatureProperties</span>&gt;</span>
  2. &nbsp; <span class="tag">&lt;<span class="title">SignatureTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SignatureTimeStamp</span>&gt;</span>
  3. &nbsp; <span class="tag">&lt;<span class="title">CompleteCertificateRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteCertificateRefs</span>&gt;</span>
  4. &nbsp; <span class="tag">&lt;<span class="title">CompleteRevocationRefs</span>&gt;</span>...<span class="tag">&lt;/<span class="title">CompleteRevocationRefs</span>&gt;</span>
  5. &nbsp; <span class="tag">&lt;<span class="title">SigAndRefsTimeStamp</span>&gt;</span>...<span class="tag">&lt;/<span class="title">SigAndRefsTimeStamp</span> &gt;</span>
  6. &nbsp; <span class="tag">&lt;<span class="title">CertificateValues</span>&gt;</span>....<span class="tag">&lt;/<span class="title">CertificateValues</span>&gt;</span>
  7. &nbsp; <span class="tag">&lt;<span class="title">RevocationValues</span>&gt;</span>...<span class="tag">&lt;/<span class="title">RevocationValues</span>&gt;</span>
  8. <span class="tag">&lt;/<span class="title">UnsignedSignatureProperties</span>&gt;</span>

XAdES-A

XML Advanced Electronic Signature with archiving validation data (XAdES-A). It includes additional time-stamps for archiving signatures in a way that they are protected in case the cryptographic data becomes weak. This profile adds the following elements to XAdES-X-L within the UnsignedSignatureProperties element:

  • ArchiveTimestamp+

Summary

The correct signature policy is the guaranty of confidence and trust in this modern electronic world. An electronic signature produced in accordance with XAdES standard provides evidence that it can be processed to get confidence that some commitment has been explicitly endorsed under a signature policy, at a given time, by a signer under a identifier, e.g. a name or a pseudonym, and optionally a role.

Ready to get started?

Learn more about SecureBlackbox or download a free trial.

Download Now