Internet-Draft | XML Signature Validation Token | March 2022 |
Santesson & Housley | Expires 22 September 2022 | [Page] |
This document defines a XML profile for the Signature Validation Token defined in [SVT].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 September 2022.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
The "Signature Validation Token" specification [SVT] defines the basic token to support signature validation in a way that can significantly extend the lifetime of a signature.¶
This specification defines a profile for implementing SVT with a signed XML document, and defines the following aspects of SVT usage:¶
XML documents can have any number of signature elements, signing an arbitrary number of fragments of XML documents. The actual signature element may be included in the signed XML document (enveloped), include the signed data (enveloping) or may be separate from the signed content (detached).¶
To provide a generic solution for any type of XML signature an SVT is added to each XML signature element within the XML signature <ds:Object> element.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The definitions in [SVT] apply also to this document.¶
When referring to elements from the W3C XML Signature namespace (http://www.w3.org/2000/09/xmldsig#) the following syntax is used:¶
When referring to elements from the ETSI XAdES XML Signature namespace (http://uri.etsi.org/01903/v1.3.2#) the following syntax is used:¶
When referring to elements defined in this specification (http://id.swedenconnect.se/svt/1.0/sig-prop/ns) the following syntax is used:¶
When SVT is provided for XML signatures then one SVT MUST be provided for each XML signature.¶
An SVT embedded within the XML signature element MUST be placed in a <svt:SignatureValidationToken> element as defined in Section 3.1.¶
The <svt:SignatureValidationToken> element MUST be placed in a <ds:SignatureProperty> element in accordance with [XMLDSIG11]. The <ds:SignatureProperty> element MUST be placed inside a <ds:SignatureProperties> element inside a <ds:Object> element inside a <ds:Signature> element.¶
Note: [XMLDSIG11] requires the Target attribute to be present in <ds:SignatureProperty>, referencing the signature targeted by this signature property. If an SVT is added to a signature that do not have an Id attribute, implementations SHOULD add an Id attribute to the <ds:Signature> element and reference that Id in the Target attribute. This Id attribute and Target attribute value matching is required by the [XMLDSIG11] standard, but it is redundant in the context of SVT validation as the SVT already contains information that uniquely identifies the target signature. Validation applications SHOULD not reject an SVT token because of Id and Target attribute mismatch, and MUST rely on matching against signature using signed information in the SVT itself.¶
The <svt:SignatureValidationToken> element is defined by the following XML Schema:¶
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://id.swedenconnect.se/svt/1.0/sig-prop/ns" xmlns:svt="http://id.swedenconnect.se/svt/1.0/sig-prop/ns"> <xs:element name="SignatureValidationToken" type="svt:SignatureValidationTokenType" /> <xs:complexType name="SignatureValidationTokenType"> <xs:simpleContent> <xs:extension base="xs:string"> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>¶
The SVT token MUST be included as a string representation of the SVT JWT. Note that this is the string representation of the JWT without further encoding. The SVT MUST NOT be represented by the Base64 encoded bytes of the JWT string.¶
Example:¶
<ds:Signature Id="MySignatureId"> ... <ds:Object> <ds:SignatureProperties> <ds:SignatureProperty Target="#MySignatureId"> <svt:SignatureValidationToken> eyJ0eXAiOiJKV1QiLCJhb...2aNZ </svt:SignatureValidationToken> </ds:SignatureProperty> </ds:SignatureProperties> </ds:Object> </ds:Signature>¶
If a new SVT is stored in a signature which already contains a previously issued SVT, implementations can choose to either replace the existing SVT or to store the new SVT in addition to the existing SVT.¶
If the new SVT is stored in addition to the old SVT, it SHOULD be stored in a new <ds:SignatureProperty> element inside the existing <ds:SignatureProperties> element where the old SVT is located.¶
For interoperability robustness, signature validation applications MUST be able to handle signatures where the new SVT is located in a new <ds:Object> element.¶
When this profile is used the SigValidation object MUST contain a "profile" claim with the value "XML".¶
The SVT Signature object MUST contain a "sig_ref" claim (SigReference object) with the following elements:¶
The SVT Signature object MUST contain one instance of the "sig_data" claim (SignedData object) for each <ds:Reference> element in the <ds:SignedInfo> element. The "sig_data" claim MUST contain the following elements:¶
The SVT Signature object MUST contain a "signer_cert_ref" claim (CertReference object). The "type" parameter of the "signer_cert_ref" claim MUST be either "chain" or "chain_hash".¶
The SVT JOSE header must contain one of the following header parameters in accordance with [RFC7515], for storing a reference to the public key used to verify the signature on the SVT:¶
alg
header parameter.¶
This document has no IANA actions.¶
The security considerations of [SVT] applies also to this document.¶