| rfc9321.original | rfc9321.txt | |||
|---|---|---|---|---|
| Network Working Group S. Santesson | Independent Submission S. Santesson | |||
| Internet-Draft IDsec Solutions | Request for Comments: 9321 IDsec Solutions | |||
| Intended status: Informational R. Housley | Category: Informational R. Housley | |||
| Expires: 18 November 2022 Vigil Security | ISSN: 2070-1721 Vigil Security | |||
| 17 May 2022 | October 2022 | |||
| Signature Validation Token | Signature Validation Token | |||
| draft-santesson-svt-08 | ||||
| Abstract | Abstract | |||
| Electronic signatures have a limited lifespan with respect to the | Electronic signatures have a limited lifespan with respect to the | |||
| time period that they can be validated and determined to be | time period that they can be validated and determined to be | |||
| authentic. The Signature Validation Token (SVT) defined in this | authentic. The Signature Validation Token (SVT) defined in this | |||
| specification provides evidence that asserts the validity of an | specification provides evidence that asserts the validity of an | |||
| electronic signature. The SVT is provided by a trusted authority, | electronic signature. The SVT is provided by a trusted authority, | |||
| which asserts that a particular signature was successfully validated | which asserts that a particular signature was successfully validated | |||
| according to defined procedures at a certain time. Any future | according to defined procedures at a certain time. Any future | |||
| validation of that electronic signature can be satisfied by | validation of that electronic signature can be satisfied by | |||
| validating the SVT without any need to also validate the original | validating the SVT without any need to also validate the original | |||
| electronic signature or the associated digital certificates. SVT | electronic signature or the associated digital certificates. The SVT | |||
| supports electronic signatures in CMS, XML, PDF and JSON documents. | supports electronic signatures in Cryptographic Message Syntax (CMS), | |||
| XML, PDF, and JSON documents. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
| 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 | This is a contribution to the RFC Series, independently of any other | |||
| and may be updated, replaced, or obsoleted by other documents at any | RFC stream. The RFC Editor has chosen to publish this document at | |||
| time. It is inappropriate to use Internet-Drafts as reference | its discretion and makes no statement about its value for | |||
| material or to cite them other than as "work in progress." | implementation or deployment. Documents approved for publication by | |||
| the RFC Editor are not candidates for any level of Internet Standard; | ||||
| see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 18 November 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9321. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
| to this document. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Definitions | |||
| 3. Signature Validation Token . . . . . . . . . . . . . . . . . 5 | 3. Signature Validation Token | |||
| 3.1. Signature Validation Token Function . . . . . . . . . . . 6 | 3.1. Signature Validation Token Function | |||
| 3.2. Signature Validation Token Syntax . . . . . . . . . . . . 7 | 3.2. Signature Validation Token Syntax | |||
| 3.2.1. Data Types . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.1. Data Types | |||
| 3.2.2. Signature Validation Token JWT Claims . . . . . . . . 8 | 3.2.2. Signature Validation Token JWT Claims | |||
| 3.2.3. SigValidation Object Class . . . . . . . . . . . . . 9 | 3.2.3. SigValidation Object Class | |||
| 3.2.4. Signature Claims Object Class . . . . . . . . . . . . 10 | 3.2.4. Signature Claims Object Class | |||
| 3.2.5. SigReference Claims Object Class . . . . . . . . . . 10 | 3.2.5. SigReference Claims Object Class | |||
| 3.2.6. SignedDataReference Claims Object Class . . . . . . . 11 | 3.2.6. SignedDataReference Claims Object Class | |||
| 3.2.7. PolicyValidation Claims Object Class . . . . . . . . 11 | 3.2.7. PolicyValidation Claims Object Class | |||
| 3.2.8. TimeValidation Claims Object Class . . . . . . . . . 12 | 3.2.8. TimeValidation Claims Object Class | |||
| 3.2.9. CertReference Claims Object Class . . . . . . . . . . 13 | 3.2.9. CertReference Claims Object Class | |||
| 3.2.10. SVT JOSE Header . . . . . . . . . . . . . . . . . . . 13 | 3.2.10. SVT JOSE Header | |||
| 4. Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4. Profiles | |||
| 4.1. Defined Profiles . . . . . . . . . . . . . . . . . . . . 15 | 4.1. Defined Profiles | |||
| 5. Signature Verification with a SVT . . . . . . . . . . . . . . 15 | 5. Signature Verification with an SVT | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 6. IANA Considerations | |||
| 6.1. Claim Names Registration . . . . . . . . . . . . . . . . 16 | 6.1. Claim Names Registration | |||
| 6.1.1. Registry Contents . . . . . . . . . . . . . . . . . . 16 | 6.1.1. Registry Contents | |||
| 6.2. Header Parameter Names Registration . . . . . . . . . . . 16 | 6.2. Header Parameter Names Registration | |||
| 6.2.1. Registry Contents . . . . . . . . . . . . . . . . . . 16 | 6.2.1. Registry Contents | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 7. Security Considerations | |||
| 7.1. Level of reliance . . . . . . . . . . . . . . . . . . . . 17 | 7.1. Level of Reliance | |||
| 7.2. Aging algorithms . . . . . . . . . . . . . . . . . . . . 17 | 7.2. Aging Algorithms | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 8. References | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 8.1. Normative References | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 19 | 8.2. Informative References | |||
| Appendix A. Appendix: XML signature profile . . . . . . . . . . 19 | Appendix A. XML Signature Profile | |||
| A.1. Notation . . . . . . . . . . . . . . . . . . . . . . . . 20 | A.1. Notation | |||
| A.1.1. References to XML Elements from XML Schemas . . . . . 20 | A.1.1. References to XML Elements from XML Schemas | |||
| A.2. SVT in XML Documents . . . . . . . . . . . . . . . . . . 20 | A.2. SVT in XML Documents | |||
| A.2.1. SignatureValidationToken Signature Property . . . . . 20 | A.2.1. SignatureValidationToken Signature Property | |||
| A.2.2. Multiple SVT in an XML signature . . . . . . . . . . 22 | A.2.2. Multiple SVTs in an XML Signature | |||
| A.3. XML signature SVT Claims . . . . . . . . . . . . . . . . 22 | A.3. XML Signature SVT Claims | |||
| A.3.1. XML Profile Identifier . . . . . . . . . . . . . . . 22 | A.3.1. XML Profile Identifier | |||
| A.3.2. XML Signature Reference Data . . . . . . . . . . . . 22 | A.3.2. XML Signature Reference Data | |||
| A.3.3. XML Signed Data Reference Data . . . . . . . . . . . 23 | A.3.3. XML Signed Data Reference Data | |||
| A.3.4. XML Signer Certificate References . . . . . . . . . . 23 | A.3.4. XML Signer Certificate References | |||
| A.4. JOSE Header | ||||
| A.4. JOSE Header . . . . . . . . . . . . . . . . . . . . . . . 23 | A.4.1. SVT Signing Key Reference | |||
| A.4.1. SVT Signing Key Reference . . . . . . . . . . . . . . 23 | Appendix B. PDF Signature Profile | |||
| Appendix B. Appendix: PDF signature profile . . . . . . . . . . 24 | B.1. SVTs in PDF Documents | |||
| B.1. SVT in PDF Documents . . . . . . . . . . . . . . . . . . 24 | B.1.1. SVT Extension to Timestamp Tokens | |||
| B.1.1. SVT Extension to Timestamp Tokens . . . . . . . . . . 24 | B.2. PDF Signature SVT Claims | |||
| B.2. PDF signature SVT Claims . . . . . . . . . . . . . . . . 25 | B.2.1. PDF Profile Identifier | |||
| B.2.1. PDF Profile Identifier . . . . . . . . . . . . . . . 25 | B.2.2. PDF Signature Reference Data | |||
| B.2.2. PDF Signature Reference Data . . . . . . . . . . . . 25 | B.2.3. PDF Signed Data Reference Data | |||
| B.2.3. PDF Signed Data Reference Data . . . . . . . . . . . 25 | B.2.4. PDF Signer Certificate References | |||
| B.2.4. PDF Signer Certificate References . . . . . . . . . . 25 | B.3. JOSE Header | |||
| B.3. JOSE Header . . . . . . . . . . . . . . . . . . . . . . . 26 | B.3.1. SVT Signing Key Reference | |||
| B.3.1. SVT Signing Key Reference . . . . . . . . . . . . . . 26 | Appendix C. JWS Profile | |||
| Appendix C. Appendix: JWS Profile . . . . . . . . . . . . . . . 26 | C.1. SVT in JWS | |||
| C.1. SVT in JWS . . . . . . . . . . . . . . . . . . . . . . . 27 | C.1.1. "svt" Header Parameter | |||
| C.1.1. "svt" Header Parameter . . . . . . . . . . . . . . . 27 | C.1.2. Multiple SVTs in a JWS Signature | |||
| C.1.2. Multiple SVT in a JWS signature . . . . . . . . . . . 27 | C.2. JWS Signature SVT Claims | |||
| C.2. JWS signature SVT Claims . . . . . . . . . . . . . . . . 27 | C.2.1. JWS Profile Identifier | |||
| C.2.1. JWS Profile Identifier . . . . . . . . . . . . . . . 28 | C.2.2. JWS Signature Reference Data | |||
| C.2.2. JWS Signature Reference Data . . . . . . . . . . . . 28 | C.2.3. JWS Signed Data Reference Data | |||
| C.2.3. JWS Signed Data Reference Data . . . . . . . . . . . 28 | C.2.4. JWS Signer Certificate References | |||
| C.2.4. JWS Signer Certificate References . . . . . . . . . . 28 | C.3. SVT JOSE Header | |||
| C.3. SVT JOSE Header . . . . . . . . . . . . . . . . . . . . . 29 | C.3.1. SVT Signing Key Reference | |||
| C.3.1. SVT Signing Key Reference . . . . . . . . . . . . . . 29 | Appendix D. Schemas | |||
| Appendix D. Appendix: Schemas . . . . . . . . . . . . . . . . . 29 | D.1. Concise Data Definition Language (CDDL) | |||
| D.1. Concise Data Definition Language (CDDL) . . . . . . . . . 29 | D.2. JSON Schema | |||
| D.2. JSON Schema . . . . . . . . . . . . . . . . . . . . . . . 31 | Appendix E. Examples | |||
| Appendix E. Appendix: Examples . . . . . . . . . . . . . . . . . 36 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
| 1. Introduction | 1. Introduction | |||
| Electronic signatures have a limited lifespan regarding when they can | Electronic signatures have a limited lifespan regarding when they can | |||
| be validated and determined to be authentic. Many factors make it | be validated and determined to be authentic. Many factors make it | |||
| more difficult to validate electronic signatures over time. For | more difficult to validate electronic signatures over time. For | |||
| example: | example: | |||
| * Trusted information about the validity of the certificate | * Trusted information about the validity of the certificate | |||
| containing the signer's public key is not available. | containing the signer's public key is not available. | |||
| * Trusted information about the date and time when the signature was | * Trusted information about the time when the signature was actually | |||
| actually created is not available. | created is not available. | |||
| * Algorithms used to create the electronic signature may no longer | * Algorithms used to create the electronic signature may no longer | |||
| be considered secure at the time of validation and may therefore | be considered secure at the time of validation and may therefore | |||
| no longer be available in software libraries. | no longer be available in software libraries. | |||
| * Services necessary to validate the signature are no longer | * Services necessary to validate the signature are no longer | |||
| available at the time of validation. | available at the time of validation. | |||
| * Supporting evidence such as CA certificates, OCSP responses, CRLs, | * Supporting evidence such as certification authority (CA) | |||
| or timestamps. | certificates, Online Certificate Status Protocol (OCSP) responses, | |||
| Certificate Revocation Lists (CRLs), or timestamps is not | ||||
| available or can't be validated. | ||||
| The challenges to validation of an electronic signature increases | The challenges to validation of an electronic signature increase over | |||
| over time, and eventually it may simply be impossible to verify the | time, and eventually it may simply be impossible to verify the | |||
| signature with a sufficient level of assurance. | signature with a sufficient level of assurance. | |||
| Existing standards, such as the ETSI XAdES [XADES] profile for XML | Existing standards, such as the ETSI XAdES [XADES] profile for XML | |||
| signatures [XMLDSIG11], ETSI PAdES [PADES] profile for PDF signatures | signatures [XMLDSIG11], ETSI PAdES [PADES] profile for PDF signatures | |||
| [ISOPDF2], and ETSI CAdES [CADES] profile for CMS signatures | [ISOPDF2], and ETSI CAdES [CADES] profile for CMS signatures | |||
| [RFC5652] can be used to extend the time within which a signature can | [RFC5652], can be used to extend the time within which a signature | |||
| be validated at the cost of significant complexity which involves | can be validated at the cost of significant complexity, which | |||
| storing and validating significant amounts of external evidence data | involves storing and validating significant amounts of external | |||
| such as revocation data, signature time stamps and archival time | evidence data such as revocation data, signature time stamps, and | |||
| stamps. | archival time stamps. | |||
| The Signature Validation token (SVT) defined in this specification | The Signature Validation Token (SVT) defined in this specification | |||
| takes a trusted signature validation process as an input and | takes a trusted signature validation process as an input and | |||
| preserves the validation result for the associated signature and | preserves the validation result for the associated signature and | |||
| signed document. The SVT asserts that a particular electronic | signed document. The SVT asserts that a particular electronic | |||
| signature was successfully validated by a trusted authority according | signature was successfully validated by a trusted authority according | |||
| to defined procedures at a certain date and time. Those procedures | to defined procedures at a certain time. Those procedures MUST | |||
| MUST include checks that the signature match the signed document, | include checks that the signature match the signed document, checks | |||
| checks that the signature can be validated by the signing certificate | that the signature can be validated by the signing certificate, and | |||
| and checks that the signing certificate pass certificate path | checks that the signing certificate pass certificate path validation | |||
| validation [RFC5280]. Those procedures MAY also include checks | [RFC5280]. Those procedures MAY also include checks associated with | |||
| associated with a particular trust policy such as that an acceptable | a particular trust policy such as that an acceptable certificate | |||
| certificate policy [RFC5280] [RFC3647] was used to issue the signer's | policy [RFC5280] [RFC3647] was used to issue the signer's certificate | |||
| certificate and checks that an acceptable signature policy was used | and checks that an acceptable signature policy was used by the signer | |||
| by the signer [RFC3125]. | [RFC3125]. | |||
| Once the SVT is issued by a trusted authority, any future validation | Once the SVT is issued by a trusted authority, any future validation | |||
| of that electronic signature can be satisfied by validating the SVT, | of that electronic signature can be satisfied by validating the SVT | |||
| without any need to also re-validate the original electronic | without any need to also revalidate the original electronic | |||
| signature. | signature. | |||
| As SVT is used to preserve validation result obtained through | As the SVT is used to preserve validation results obtained through | |||
| applying existing standards for signature validation, it is | applying existing standards for signature validation, it is | |||
| complementary to and not a replacement for such standards, including | complementary to and not a replacement for such standards, including | |||
| the ETSI standards for long term validation listed above. SVT do | the ETSI standards for long-term validation listed above. The SVT | |||
| however have the potentially positive effect that it may | does, however, have the potentially positive effect that it may | |||
| significantly reduce the need to apply complex long-term validation | significantly reduce the need to apply complex long-term validation | |||
| and preservation techniques for signature validation if an SVT is | and preservation techniques for signature validation if an SVT is | |||
| issued and applied to the signed document at an early stage where the | issued and applied to the signed document at an early stage where the | |||
| signature can be validated without support of large amounts of | signature can be validated without support of large amounts of | |||
| external evidence. The use of SVT may therefore drastically reduce | external evidence. The use of SVTs may therefore drastically reduce | |||
| the complexity of re-validation of old archived electronic | the complexity of revalidation of old archived electronic signatures. | |||
| signatures. | ||||
| The SVT can be signed with private keys and algorithms that provide | The SVT can be signed with private keys and algorithms that provide | |||
| confidence for a considerable time period. In fact, multiple SVTs | confidence for a considerable time period. In fact, multiple SVTs | |||
| can be used to offer greater assurance. For example, one SVT could | can be used to offer greater assurance. For example, one SVT could | |||
| be produced with a large RSA private key, a second one with a strong | be produced with a large RSA private key, a second one with a strong | |||
| elliptic curve, and a third one with a quantum safe digital signature | elliptic curve, and a third one with a quantum safe digital signature | |||
| algorithm to protect against advances in computing power and | algorithm to protect against advances in computing power and | |||
| cryptanalytic capabilities. Further, the trusted authority can add | cryptanalytic capabilities. Further, the trusted authority can add | |||
| additional SVTs in the future using fresh private keys and signatures | additional SVTs in the future using fresh private keys and signatures | |||
| to extend the lifetime of the, if necessary. | to extend the lifetime of the SVTs if necessary. | |||
| 2. Definitions | 2. Definitions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This document use the following terms: | This document use the following terms: | |||
| * Signed Data -- The data covered by a particular electronic | Signed Data: The data covered by a particular electronic signature. | |||
| signature. This is typically equivalent to the signed content of | This is typically equivalent to the signed content of a document, | |||
| a document, and it represents the data that the signer intended to | and it represents the data that the signer intended to sign. In | |||
| sign. In some cases, such as in some XML signatures, the signed | some cases, such as in some XML signatures, the Signed Data can be | |||
| data can be the collection of several data fragments each | the collection of several data fragments each referenced by the | |||
| referenced by the signature. In the case of PDF, this is the data | signature. In the case of PDF, this is the data covered by the | |||
| covered by the "ByteRange" parameter in the signature dictionary. | "ByteRange" parameter in the signature dictionary. In JSON Web | |||
| In JWS, this is the unencoded payload data (before base64url | Signature (JWS), this is the unencoded payload data (before | |||
| encoding). | base64url encoding). | |||
| * Signed Bytes -- These are the actual bytes of data that were | Signed Bytes: These are the actual bytes of data that were hashed | |||
| hashed and signed by the digital signature algorithm. In most | and signed by the digital signature algorithm. In most cases, | |||
| cases, this is not the actual Signed Data, but a collection of | this is not the actual Signed Data but a collection of signature | |||
| signature metadata that includes references (hash) of the Signed | metadata that includes references (hash) of the Signed Data as | |||
| Data as well as information about algorithms and other data bound | well as information about algorithms and other data bound to a | |||
| to a signature. In XML, this is the canonicalized SignedInfo | signature. In XML, this is the canonicalized SignedInfo element. | |||
| element. In CMS and PDF signatures, this is the DER-encoded | In CMS and PDF signatures, this is the DER-encoded | |||
| SignedAttributes structure. In JWS, this is the protected header | SignedAttributes structure. In JWS, this is the protected header | |||
| and payload data formatted according to [RFC7515]. | and payload data formatted according to [RFC7515]. | |||
| When these terms are used as defined in this section, they appear | When these terms are used as defined in this section, they appear | |||
| with a capitalized first letter. | with a capitalized first letter. | |||
| 3. Signature Validation Token | 3. Signature Validation Token | |||
| 3.1. Signature Validation Token Function | 3.1. Signature Validation Token Function | |||
| Signature Validation Token (SVT) is created by a trusted service to | The Signature Validation Token (SVT) is created by a trusted service | |||
| assert evidence of successful electronic signature validation using a | to assert evidence of successful electronic signature validation | |||
| well-defined and trustworthy signature validation process. The SVT | using a well-defined and trustworthy signature validation process. | |||
| binds the validation result to the validated signature, the document | The SVT binds the validation result to the validated signature, the | |||
| signed by the signature and the certificate of the signer. This | document signed by the signature, and the certificate of the signer. | |||
| allows a relying party to verify the validity of a signed document | This allows a relying party to verify the validity of a signed | |||
| without having to re-validate the original signature or to re-use any | document without having to revalidate the original signature or to | |||
| of its associated cryptographic algorithms for as long as the SVT | reuse any of its associated cryptographic algorithms for as long as | |||
| itself can be validated. The SVT achieves this by binding the | the SVT itself can be validated. The SVT achieves this by binding | |||
| following information to a specific electronic signature: | the following information to a specific electronic signature: | |||
| * A unique identification of the electronic signature. | * A unique identification of the electronic signature. | |||
| * The data and metadata signed by the electronic signature. | * The data and metadata signed by the electronic signature. | |||
| * The signer's certificate that was validated as part of electronic | * The signer's certificate that was validated as part of electronic | |||
| signature verification. | signature verification. | |||
| * The certification path that was used to validate the signer's | * The certification path that was used to validate the signer's | |||
| certificate. | certificate. | |||
| * An assertion providing evidence of that the signature was | * An assertion providing evidence of signature verification, the | |||
| verified, the date and time the verification was performed, the | time the verification was performed, the procedures used to verify | |||
| procedures used to verify the electronic signature, and the | the electronic signature, and the outcome of the verification. | |||
| outcome of the verification. | ||||
| * An assertion providing evidence of the date and time at which the | * An assertion providing evidence of the time at which the signature | |||
| signature is known to have existed, the procedures used to | is known to have existed, the procedures used to validate the time | |||
| validate the date and time of existence, and the outcome of the | of existence, and the outcome of the validation. | |||
| validation. | ||||
| The SVT aims to support long term validation that can be further | The SVT aims to support long-term validation that can be further | |||
| extended into the future by applying the following strategies: | extended into the future by applying the following strategies: | |||
| * By using secure algorithms with long life exepectancy when signing | * by using secure algorithms with long life expectancy when signing | |||
| the SVT. | the SVT | |||
| * By re-issuing the SVT before it becomes insecure or is considered | * by reissuing the SVT before it becomes insecure or is considered | |||
| expired. | expired | |||
| * Optionally, by issuing multipple SVT:s with different algorithms | * optionally, by issuing multiple SVTs with different algorithms to | |||
| to provide redundancy in case one algorithm is broken. | provide redundancy in case one algorithm is broken | |||
| 3.2. Signature Validation Token Syntax | 3.2. Signature Validation Token Syntax | |||
| The SVT is carried in a JSON Web Token (JWT) as defined in [RFC7519]. | The SVT is carried in a JSON Web Token (JWT) as defined in [RFC7519]. | |||
| 3.2.1. Data Types | 3.2.1. Data Types | |||
| The contents of claims in an SVT are specified using the following | The contents of claims in an SVT are specified using the following | |||
| data types: | data types: | |||
| * String -- JSON Data Type of string that contains an arbitrary case | String: JSON Data Type of string that contains an arbitrary case- | |||
| sensitive string value. | sensitive string value. | |||
| * Base64Binary -- JSON Data Type of string that contains of Base64 | Base64Binary: JSON Data Type of string that contains a | |||
| encoded byte array of binary data. | Base64-encoded byte array of binary data. | |||
| * StringOrURI -- JSON Data Type of string that contains an arbitrary | StringOrURI: JSON Data Type of string that contains an arbitrary | |||
| string or an URI as defined in [RFC7519], which REQUIRES a value | string or a URI as defined in [RFC7519]. It is REQUIRED to | |||
| containing the colon character (":") to be a URI. | contain the colon character (":") to be a URI. | |||
| * URI -- JSON Data Type of string that contains an URI as defined in | URI: JSON Data Type of string that contains a URI as defined in | |||
| [RFC7519]. | [RFC7519]. | |||
| * Integer -- JSON Data Type of number that contains a 32-bit signed | Integer: JSON Data Type of number that contains a 32-bit signed | |||
| integer value (from -2^31 to 2^31-1). | integer value (from -2^31 to 2^31-1). | |||
| * Long -- JSON Data Type of number that contains a 64-bit signed | Long: JSON Data Type of number that contains a 64-bit signed integer | |||
| integer value (from -2^63 to 2^63-1). | value (from -2^63 to 2^63-1). | |||
| * NumericDate -- JSON Data Type of number that contains a data as | NumericDate: JSON Data Type of number that contains data as defined | |||
| defined in [RFC7519], which is the number of seconds from | in [RFC7519], which is the number of seconds from | |||
| 1970-01-01T00:00:00Z UTC until the specified UTC date/time, | 1970-01-01T00:00:00Z UTC until the specified UTC date/time, | |||
| ignoring leap seconds. | ignoring leap seconds. | |||
| * Boolean -- JSON Data Type of boolean that contains explicit value | Boolean: JSON Data Type of boolean that contains the explicit value | |||
| of true or false. | of true or false. | |||
| * Object<Class> -- A JSON object holding a claims object of a class | Object<Class>: A JSON object holding a claims object of a class | |||
| defined in this specification (see Section 3.2.2). | defined in this specification (see Section 3.2.2). | |||
| * Map<Type> -- A JSON object with name-value pairs where the value | Map<Type>: A JSON object with name-value pairs where the value is an | |||
| is an object of the specified Type in the notation. For example, | object of the specified Type in the notation. For example, | |||
| Map<String> is a JSON object with name value pairs where all | Map<String> is a JSON object with name-value pairs where all | |||
| values are of type String. | values are of type String. | |||
| * Array -- A JSON array of a specific data type as defined in this | Array: A JSON array of a specific data type as defined in this | |||
| section. An array is expressed in this specification by square | section. An array is expressed in this specification by square | |||
| brackets. For example, [String] indicates an array of String | brackets. For example, [String] indicates an array of String | |||
| values, and [Object<DocHash>] indicates an array of DocHash | values, and [Object<DocHash>] indicates an array of DocHash | |||
| objects. | objects. | |||
| * Null -- A JSON null that represents an absent value. A claim with | Null: A JSON null that represents an absent value. A claim with a | |||
| a null value is equivalent with an absent claim. | null value is equivalent with an absent claim. | |||
| 3.2.2. Signature Validation Token JWT Claims | 3.2.2. Signature Validation Token JWT Claims | |||
| The SVT MUST contain only JWT claims in the following list: | The SVT MUST contain only JWT claims in the following list: | |||
| * jti -- A String data type that is a "JWT ID" registered claim | "jti": A String data type that is a "JWT ID" registered claim | |||
| according to [RFC7519]. It is RECOMMENDED that the identifier | according to [RFC7519]. It is RECOMMENDED that the identifier | |||
| holds a hexadecimal string representation of a 128-bit unsigned | holds a hexadecimal string representation of a 128-bit unsigned | |||
| integer. A SVT MUST contain one "JWT ID" claim. | integer. An SVT MUST contain one "JWT ID" claim. | |||
| * iss -- A StringOrURI data type that is an "Issuer" registered | ||||
| claim according to [RFC7519], which is an arbitrary unique | ||||
| identifier of the SVT issuer. This value SHOULD have the value of | ||||
| an URI based on a domain owned by the issuer. A SVT MUST contain | ||||
| one "Issuer" claim. | ||||
| * iat -- A NumericDate data type that is an "Issued At" registered | "iss": A StringOrURI data type that is an "Issuer" registered claim | |||
| claim according to [RFC7519], which expresses the date and time | according to [RFC7519], which is an arbitrary unique identifier of | |||
| when this SVT was issued. A SVT MUST contain one "Issued At" | the SVT issuer. This value SHOULD have the value of a URI based | |||
| on a domain owned by the issuer. An SVT MUST contain one "Issuer" | ||||
| claim. | claim. | |||
| * aud -- A [StringOrURI] data type or a StringOrURI data type that | "iat": A NumericDate data type that is an "Issued At" registered | |||
| is an "Audience" registered claim according to [RFC7519]. The | claim according to [RFC7519], which expresses the time when this | |||
| SVT was issued. An SVT MUST contain one "Issued At" claim. | ||||
| "aud": A [StringOrURI] data type or a StringOrURI data type that is | ||||
| an "Audience" registered claim according to [RFC7519]. The | ||||
| audience claim is an array of one or more identifiers, identifying | audience claim is an array of one or more identifiers, identifying | |||
| intended recipients of the SVT. Each identifier MAY identify a | intended recipients of the SVT. Each identifier MAY identify a | |||
| single entity, a group of entities or a common policy adopted by a | single entity, a group of entities, or a common policy adopted by | |||
| group of entities. If only one value is provided it MAY be | a group of entities. If only one value is provided, it MAY be | |||
| provided as a single StringOrURI data type value instead of as an | provided as a single StringOrURI data type value instead of as an | |||
| array of values. Inclusion of the "Audience" claim in a SVT is | array of values. Inclusion of the "Audience" claim in an SVT is | |||
| OPTIONAL. | OPTIONAL. | |||
| * exp -- A NumericDate data type that is an "Expiration Time" | "exp": A NumericDate data type that is an "Expiration Time" | |||
| registered claim according to [RFC7519], which expresses the date | registered claim according to [RFC7519], which expresses the time | |||
| and time when services and responsibilities related to this SVT is | when services and responsibilities related to this SVT are no | |||
| no longer provided by the SVT issuer. The precise meaning of the | longer provided by the SVT issuer. The precise meaning of the | |||
| expiration time claim is defined by local policies. See | expiration time claim is defined by local policies. See | |||
| implementation note below. Inclusion of the "Expiration Time" | implementation note below. Inclusion of the "Expiration Time" | |||
| claim in a SVT is OPTIONAL. | claim in an SVT is OPTIONAL. | |||
| * sig_val_claims -- A Object<SigValidation> data type that contains | "sig_val_claims": An Object<SigValidation> data type that contains | |||
| signature validation claims for this SVT extending the standard | signature validation claims for this SVT extending the standard | |||
| registered JTW claims above. A SVT MUST contain one | registered JWT claims above. An SVT MUST contain one | |||
| sig_val_claims claim. | sig_val_claims claim. | |||
| Note: An SVT asserts that a particular validation process was | Note: An SVT asserts that a particular validation process was | |||
| undertaken at a stated date and time. This fact never changes and | undertaken at a stated time. This fact never changes and never | |||
| never expires. However, some other aspects of the SVT such as | expires. However, some other aspects of the SVT such as liability | |||
| liability for false claims or service provision related to a specific | for false claims or service provision related to a specific SVT may | |||
| SVT may expire after a certain period of time, such as a service | expire after a certain period of time, such as a service where an old | |||
| where an old SVT can be upgraded to a new SVT signed with fresh keys | SVT can be upgraded to a new SVT signed with fresh keys and | |||
| and algorithms. | algorithms. | |||
| 3.2.3. SigValidation Object Class | 3.2.3. SigValidation Object Class | |||
| The sig_val_claims JWT claim uses the SigValidation object class. A | The sig_val_claims JWT claim uses the SigValidation object class. A | |||
| SigValidation object holds all custom claims, and a SigValidation | SigValidation object holds all custom claims, and a SigValidation | |||
| object contains the following parameters: | object contains the following parameters: | |||
| * ver -- A String data type representing the version. This | "ver": A String data type representing the version. This parameter | |||
| parameter MUST be present, and the version in this specification | MUST be present and the version in this specification indicated by | |||
| indicated by the value "1.0". | the value "1.0". | |||
| * profile -- A StringOrURI data type representing the name of a | "profile": A StringOrURI data type representing the name of a | |||
| profile that defines conventions followed for specific claims and | profile that defines conventions followed for specific claims and | |||
| any extension points used by the SVT issuer. This parameter MUST | any extension points used by the SVT issuer. This parameter MUST | |||
| be present. | be present. | |||
| * hash_algo -- A URI data type that identifies the hash algorithm | "hash_algo": A URI data type that identifies the hash algorithm used | |||
| used to compute the hash values within the SVT. The URI | to compute the hash values within the SVT. The URI identifier | |||
| identifier MUST be one defined in [RFC6931] or in the IANA | MUST be one defined in [RFC9231] or in the IANA registry defined | |||
| registry defined by this specification. This parameter MUST be | by this specification. This parameter MUST be present. | |||
| present. | ||||
| * sig -- A [Object<Signature>] data type that gives information | "sig": An [Object<Signature>] data type that gives information about | |||
| about validated electronic signatures as an array of Signature | validated electronic signatures as an array of Signature objects. | |||
| objects. If the SVT contains signature validation evidence for | If the SVT contains signature validation evidence for more than | |||
| more than one signature, then each signature is represented by a | one signature, then each signature is represented by a separate | |||
| separate Signature object. At least one Signature object MUST be | Signature object. At least one Signature object MUST be present. | |||
| present. | ||||
| * ext -- A Map<String> data type that provides additional claims | "ext": A Map<String> data type that provides additional claims | |||
| related to the SVT. Extension claims are added at the discretion | related to the SVT. Extension claims are added at the discretion | |||
| of the SVT issuer; however, extension claims MUST follow any | of the SVT issuer; however, extension claims MUST follow any | |||
| conventions defined in a profile of this specification (see | conventions defined in a profile of this specification (see | |||
| Section 4). Inclusion of this parameter is OPTIONAL. | Section 4). Inclusion of this parameter is OPTIONAL. | |||
| 3.2.4. Signature Claims Object Class | 3.2.4. Signature Claims Object Class | |||
| The sig parameter in the SigValidation object class uses the | The sig parameter in the SigValidation object class uses the | |||
| Signature object class. The Signature object contains claims related | Signature object class. The Signature object contains claims related | |||
| to signature validation evidence for one signature, and it contains | to signature validation evidence for one signature, and it contains | |||
| the following parameters: | the following parameters: | |||
| * sig_ref -- A Object<SigReference> data type that contains | "sig_ref": An Object<SigReference> data type that contains reference | |||
| reference information identifying the target signature. This | information identifying the target signature. This parameter MUST | |||
| parameter MUST be present. | be present. | |||
| * sig_data_ref -- A [Object<SignedDataReference>] data type that | "sig_data_ref": An [Object<SignedDataReference>] data type that | |||
| contains an array of references to Signed Data that was signed by | contains an array of references to Signed Data that was signed by | |||
| the target electronic signature. At least one SignedDataReference | the target electronic signature. At least one SignedDataReference | |||
| object MUST be present. | object MUST be present. | |||
| * signer_cert_ref -- A Object<CertReference> data type that | "signer_cert_ref": An Object<CertReference> data type that | |||
| references the signer's certificate and optionally reference to a | references the signer's certificate and optionally references a | |||
| supporting certification path that was used to verify the target | supporting certification path that was used to verify the target | |||
| electronic signature. This parameter MUST be present. | electronic signature. This parameter MUST be present. | |||
| * sig_val -- A [Object<PolicyValidation>] data type that contains an | "sig_val": An [Object<PolicyValidation>] data type that contains an | |||
| array of results of signature verification according to defined | array of results of signature verification according to defined | |||
| procedures. At least one PolicyValidation object MUST be present. | procedures. At least one PolicyValidation object MUST be present. | |||
| * time_val -- A [Object<TimeValidation>] data type that contains an | "time_val": An [Object<TimeValidation>] data type that contains an | |||
| array of time verification results that the target signature has | array of time verification results showing that the target | |||
| existed at a specific date and time in the past. Inclusion of | signature has existed at a specific time in the past. Inclusion | |||
| this parameter is OPTIONAL. | of this parameter is OPTIONAL. | |||
| * ext -- A MAP<String> data type that provides additional claims | "ext": A MAP<String> data type that provides additional claims | |||
| related to the target signature. Extension claims are added at | related to the target signature. Extension claims are added at | |||
| the discretion of the SVT Issuer; however, extension claims MUST | the discretion of the SVT issuer; however, extension claims MUST | |||
| follow any conventions defined in a profile of this specification | follow any conventions defined in a profile of this specification | |||
| (see Section 4). Inclusion of this parameter is OPTIONAL. | (see Section 4). Inclusion of this parameter is OPTIONAL. | |||
| 3.2.5. SigReference Claims Object Class | 3.2.5. SigReference Claims Object Class | |||
| The sig_ref parameter in the Signature object class uses the | The sig_ref parameter in the Signature object class uses the | |||
| SigReference object class. The SigReference object provides | SigReference object class. The SigReference object provides | |||
| information used to match the Signature claims object to a specific | information used to match the Signature claims object to a specific | |||
| target electronic signature and to verify the integrity of the target | target electronic signature and to verify the integrity of the target | |||
| signature value and Signed Bytes, and it contains the following | signature value and Signed Bytes, and it contains the following | |||
| parameters: | parameters: | |||
| * id -- A String data type that contains an identifier assigned to | "id": A String data type that contains an identifier assigned to the | |||
| the target signature. Inclusion of this parameter is OPTIONAL. | target signature. Inclusion of this parameter is OPTIONAL. | |||
| * sig_hash -- A Base64Binary data type that contains a hash value of | "sig_hash": A Base64Binary data type that contains a hash value of | |||
| the target electronic signature value. This parameter MUST be | the target electronic signature value. This parameter MUST be | |||
| present. | present. | |||
| * sb_hash -- A Base64Binary data type that contains a hash value of | "sb_hash": A Base64Binary data type that contains a hash value of | |||
| the Signed Bytes of the target electronic signature. This | the Signed Bytes of the target electronic signature. This | |||
| parameter MUST be present. | parameter MUST be present. | |||
| 3.2.6. SignedDataReference Claims Object Class | 3.2.6. SignedDataReference Claims Object Class | |||
| The sig_data_ref parameter in the Signature object class uses the | The sig_data_ref parameter in the Signature object class uses the | |||
| SignedDataReference object class. The SignedDataReference object | SignedDataReference object class. The SignedDataReference object | |||
| provides information used to verify the target electronic signature | provides information used to verify the target electronic signature | |||
| references to Signed Data as well as to verify the integrity of all | references to Signed Data as well as to verify the integrity of all | |||
| data that is signed by the target signature, and it contains the | data that is signed by the target signature, and it contains the | |||
| following parameters: | following parameters: | |||
| * ref -- A String data type that contains a reference identifier for | "ref": A String data type that contains a reference identifier for | |||
| the data or data fragment covered by the target electronic | the data or data fragment covered by the target electronic | |||
| signature. This parameter MUST be present. | signature. This parameter MUST be present. | |||
| * hash -- A Base64Binary data type that contains the hash value for | "hash": A Base64Binary data type that contains the hash value for | |||
| the data covered by the target electronic signature. This | the data covered by the target electronic signature. This | |||
| parameter MUST be present. | parameter MUST be present. | |||
| 3.2.7. PolicyValidation Claims Object Class | 3.2.7. PolicyValidation Claims Object Class | |||
| The sig_val parameter in the Signature object class uses the | The sig_val parameter in the Signature object class uses the | |||
| PolicyValidation object class. The PolicyValidation object provides | PolicyValidation object class. The PolicyValidation object provides | |||
| information about the result of a validation process according to a | information about the result of a validation process according to a | |||
| spefific policy, and it contains the following parameters: | specific policy, and it contains the following parameters: | |||
| * pol -- A StringOrURI data type that contains the identifier of the | "pol": A StringOrURI data type that contains the identifier of the | |||
| policy governing the electronic signature verification process. | policy governing the electronic signature verification process. | |||
| This parameter MUST be present. | This parameter MUST be present. | |||
| * res -- A String data type that contains the result of the | "res": A String data type that contains the result of the electronic | |||
| electronic signature verification process. The value MUST be one | signature verification process. The value MUST be one of | |||
| of "PASSED", "FAILED" or "INDETERMINATE" as defined by | "PASSED", "FAILED", or "INDETERMINATE" as defined by | |||
| [ETSI319102-1]. This parameter MUST be present. | [ETSI319102-1]. This parameter MUST be present. | |||
| * msg -- A String data type that contains a message describing the | "msg": A String data type that contains a message describing the | |||
| result. Inclusion of this parameter is OPTIONAL. | result. Inclusion of this parameter is OPTIONAL. | |||
| * ext -- A MAP<String> data type that provides additional claims | "ext": A MAP<String> data type that provides additional claims | |||
| related to the target signature. Extension claims are added at | related to the target signature. Extension claims are added at | |||
| the discretion of the SVT Issuer; however, extension claims MUST | the discretion of the SVT issuer; however, extension claims MUST | |||
| follow any conventions defined in a profile of this specification | follow any conventions defined in a profile of this specification | |||
| (see Section 4). Inclusion of this parameter is OPTIONAL. | (see Section 4). Inclusion of this parameter is OPTIONAL. | |||
| 3.2.8. TimeValidation Claims Object Class | 3.2.8. TimeValidation Claims Object Class | |||
| The time_val parameter in the Signature object class uses the | The time_val parameter in the Signature object class uses the | |||
| TimeValidation object class. The TimeValidation claims object | TimeValidation object class. The TimeValidation claims object | |||
| provides information about the result of validating evidence of time | provides information about the result of validating evidence of time | |||
| asserting that the target signature existed at a particular date and | asserting that the target signature existed at a particular time in | |||
| time in the past. Evidence of time is typically a timestamp | the past. Evidence of time is typically a timestamp according to | |||
| according to [RFC3161] but other types of evidence may be used such | [RFC3161], but other types of evidence may be used such as a | |||
| as a previously issued SVT for this signature. The TimeValidation | previously issued SVT for this signature. The TimeValidation claims | |||
| claims object contains the following parameters: | object contains the following parameters: | |||
| * time -- A NumericDate data type that contains the verified time. | "time": A NumericDate data type that contains the verified time. | |||
| This parameter MUST be present. | This parameter MUST be present. | |||
| * type -- A StringOrURI data type that contains an identifier of the | "type": A StringOrURI data type that contains an identifier of the | |||
| type of evidence of time. This parameter MUST be present. | type of evidence of time. This parameter MUST be present. | |||
| * iss -- A StringOrURI data type that contains an identifier of the | "iss": A StringOrURI data type that contains an identifier of the | |||
| entity that issued the evidence of time. This parameter MUST be | entity that issued the evidence of time. This parameter MUST be | |||
| present. | present. | |||
| * id -- A String data type that contains an unique identifier | "id": A String data type that contains an unique identifier assigned | |||
| assigned to the evidence of time. Inclusion of this parameter is | to the evidence of time. Inclusion of this parameter is OPTIONAL. | |||
| OPTIONAL. | ||||
| * hash -- A Base64Binary data type that contains the hash value of | "hash": A Base64Binary data type that contains the hash value of the | |||
| the validated evidence of time. Inclusion of this parameter is | validated evidence of time. Inclusion of this parameter is | |||
| OPTIONAL. | OPTIONAL. | |||
| * val -- A [Object<PolicyValidation>] data type that contains an | "val": An [Object<PolicyValidation>] data type that contains an | |||
| array of results of the time evidence validation according to | array of results of the time evidence validation according to | |||
| defined validation procedures. Inclusion of this parameter is | defined validation procedures. Inclusion of this parameter is | |||
| OPTIONAL. | OPTIONAL. | |||
| * ext -- A MAP<String> data type that provides additional claims | "ext": A MAP<String> data type that provides additional claims | |||
| related to the target signature. Extension claims are added at | related to the target signature. Extension claims are added at | |||
| the discretion of the SVT Issuer; however, extension claims MUST | the discretion of the SVT issuer; however, extension claims MUST | |||
| follow any conventions defined in a profile of this specification | follow any conventions defined in a profile of this specification | |||
| (see Section 4). Inclusion of this parameter is OPTIONAL. | (see Section 4). Inclusion of this parameter is OPTIONAL. | |||
| 3.2.9. CertReference Claims Object Class | 3.2.9. CertReference Claims Object Class | |||
| The signer_cert_ref parameter in the Signature object class uses the | The signer_cert_ref parameter in the Signature object class uses the | |||
| CertReference object class. The CertReference object references a | CertReference object class. The CertReference object references a | |||
| single X.509 certificate or a X.509 certification path, either by | single X.509 certificate or a X.509 certification path either by | |||
| providing the certificate data or by providing hash references for | providing the certificate data or by providing hash references for | |||
| certificates that can be located in the target electronic signature, | certificates that can be located in the target electronic signature, | |||
| and it contains the following parameters: | and it contains the following parameters: | |||
| * type -- A StringOrURI data type that contains an identifier of the | "type": A StringOrURI data type that contains an identifier of the | |||
| type of reference. The type identifier MUST be one of the | type of reference. The type identifier MUST be one of the | |||
| identifiers defined below, an identifier specified by the selected | identifiers defined below, an identifier specified by the selected | |||
| profile, or a URI identifier. This parameter MUST be present. | profile, or a URI identifier. This parameter MUST be present. | |||
| * ref -- A [String] data type that contains an array of string | "ref": A [String] data type that contains an array of string | |||
| parameters according to conventions defined by the type | parameters according to conventions defined by the type | |||
| identifier. At least one parameter MUST be present. | identifier. At least one parameter MUST be present. | |||
| The following type identifiers are defined: | The following type identifiers are defined: | |||
| * chain -- The ref contains an array of Base64 encoded X.509 | "chain": The ref contains an array of Base64-encoded X.509 | |||
| certificates [RFC5280]. The certificates MUST be provided in the | certificates [RFC5280]. The certificates MUST be provided in the | |||
| order starting with the end entity certificate. Any following | order starting with the end entity certificate. Any following | |||
| certificate must be able to validate the signature on the previous | certificate must be able to validate the signature on the previous | |||
| certificate in the array. | certificate in the array. | |||
| * chain_hash -- The ref contains an array of one or more Base64 | "chain_hash": The ref contains an array of one or more | |||
| encoded hash values where each hash value is a hash over a X.509 | Base64-encoded hash values where each hash value is a hash over a | |||
| certificate [RFC5280] used to validate the signature. The | X.509 certificate [RFC5280] used to validate the signature. The | |||
| certificates MUST be provided in the order starting with the end | certificates MUST be provided in the order starting with the end | |||
| entity certificate. Any following certificate must be able to | entity certificate. Any following certificate must be able to | |||
| validate the signature on the previous certificate in the array. | validate the signature on the previous certificate in the array. | |||
| This option MUST NOT be used unless all hashed certificates are | This option MUST NOT be used unless all hashed certificates are | |||
| present in the target electronic signature. | present in the target electronic signature. | |||
| Note: All certificates referenced using the identifiers above are | Note: All certificates referenced using the identifiers above are | |||
| X.509 certificates. Profiles of this specification MAY define | X.509 certificates. Profiles of this specification MAY define | |||
| alternative types of public key containers; however, a major function | alternative types of public key containers; however, a major function | |||
| of these referenced certificates is not just to reference the public | of these referenced certificates is not just to reference the public | |||
| key, but also to provide the subject name of the signer. It is | key but also to provide the subject name of the signer. It is | |||
| therefore important for the full function of an SVT that the | therefore important for the full function of an SVT that the | |||
| referenced public key container also provides the means to identify | referenced public key container also provides the means to identify | |||
| of the signer. | the signer. | |||
| 3.2.10. SVT JOSE Header | 3.2.10. SVT JOSE Header | |||
| The SVT JWT MUST contain the following JOSE header parameters in | The SVT JWT MUST contain the following JSON Object Signing and | |||
| accordance with Section 5 of [RFC7519]: | Encryption (JOSE) header parameters in accordance with Section 5 of | |||
| [RFC7519]: | ||||
| * typ -- This parameter MUST have the string value "JWT" (upper | "typ": This parameter MUST have the string value "JWT" (upper case). | |||
| case). | ||||
| * alg -- This parameter identifies the algorithm used to sign the | "alg": This parameter identifies the algorithm used to sign the SVT | |||
| SVT JWT. The algorithm identifier MUST be specified in [RFC7518] | JWT. The algorithm identifier MUST be specified in [RFC7518] or | |||
| or the IANA JSON Web Signature and Encryption Algorithms Registry | the IANA "JSON Web Signature and Encryption Algorithms" registry | |||
| [ add a ref ]. The specified signature hash algorithm MUST be | [IANA-JOSE-REG]. The specified signature hash algorithm MUST be | |||
| identical to the hash algorithm specified in the hash_algo | identical to the hash algorithm specified in the hash_algo | |||
| parameter of the SigValidation object within the sig_val_claims | parameter of the SigValidation object within the sig_val_claims | |||
| claim. | claim. | |||
| The SVT header MUST contain a public key or a reference to a public | The SVT header MUST contain a public key or a reference to a public | |||
| key used to verify the signature on the SVT in accordance with | key used to verify the signature on the SVT in accordance with | |||
| [RFC7515]. Each profile, as discussed in Section 4, MUST define the | [RFC7515]. Each profile, as discussed in Section 4, MUST define the | |||
| requirements for how the key or key reference is included in the | requirements for how the key or key reference is included in the | |||
| header. | header. | |||
| 4. Profiles | 4. Profiles | |||
| Each signed document and signature type will have to define the | Each signed document and signature type will have to define the | |||
| precise content and use of several claims in the SVT. | precise content and use of several claims in the SVT. | |||
| Each profile MUST as a minimum define: | At a minimum, each profile MUST define: | |||
| * The identifier of the profile. | * The identifier of the profile | |||
| * How to reference the Signed Data content of the signed document. | * How to reference the Signed Data content of the signed document | |||
| * How to reference to the target electronic signature and the Signed | * How to reference the target electronic signature and the Signed | |||
| Bytes of the signature. | Bytes of the signature | |||
| * How to reference certificates supporting each electronic | * How to reference certificates supporting each electronic signature | |||
| siganture. | ||||
| * How to include public keys or references to public keys in the | * How to include public keys or references to public keys in the SVT | |||
| SVT. | ||||
| * Whether each electronic signature is supported by a single SVT, or | * Whether each electronic signature is supported by a single SVT, or | |||
| whether one SVT may support multiple electronic signatures of the | one SVT may support multiple electronic signatures of the same | |||
| same document. | document | |||
| A profile MAY also define: | A profile MAY also define: | |||
| * Explicit information on how to perform signature validation based | * Explicit information on how to perform signature validation based | |||
| on an SVT. | on an SVT | |||
| * How to attach an SVT to an electronic signature or signed | * How to attach an SVT to an electronic signature or signed document | |||
| document. | ||||
| 4.1. Defined Profiles | 4.1. Defined Profiles | |||
| The following profiles are defined in Appendixes of this document: | The following profiles are defined in appendixes of this document: | |||
| * Appendix A: XML Profile | Appendix A: XML Signature Profile | |||
| * Appendix B: PDF Profile | Appendix B: PDF Signature Profile | |||
| * Appendix C: JWS Profile | Appendix C: JWS Profile | |||
| Other documents MAY define other profiles that MAY complement, ammend | Other documents MAY define other profiles that MAY complement, amend, | |||
| or supersede these profiles. | or supersede these profiles. | |||
| 5. Signature Verification with a SVT | 5. Signature Verification with an SVT | |||
| Signature verification based on an a SVT MUST follow these steps: | Signature verification based on an SVT MUST follow these steps: | |||
| 1. Locate all available SVTs available for the signed document that | 1. Locate all available SVTs available for the signed document that | |||
| are relevant for the target electronic signature. | are relevant for the target electronic signature. | |||
| 2. Select the most recent SVT that can be successfully validated and | 2. Select the most recent SVT that can be successfully validated and | |||
| meets the requirement of the relying party. | meets the requirement of the relying party. | |||
| 3. Verify the integrity of the signature and the Signed Bytes of the | 3. Verify the integrity of the signature and the Signed Bytes of the | |||
| target electronic signature using the sig_ref claim. | target electronic signature using the sig_ref claim. | |||
| skipping to change at page 16, line 4 ¶ | skipping to change at line 696 ¶ | |||
| requirements of the relying party. | requirements of the relying party. | |||
| 8. Verify that verified time results satisfy the context for the use | 8. Verify that verified time results satisfy the context for the use | |||
| of the signed document. | of the signed document. | |||
| After successfully performing these steps, signature validity is | After successfully performing these steps, signature validity is | |||
| established as well as the trusted signer certificate binding the | established as well as the trusted signer certificate binding the | |||
| identity of the signer to the electronic signature. | identity of the signer to the electronic signature. | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| 6.1. Claim Names Registration | 6.1. Claim Names Registration | |||
| This section registers the "sig_val_claims" claim name in the IANA | IANA has registered the "sig_val_claims" claim name in the "JSON Web | |||
| "JSON Web Token Claims" registry established by Section 10.1 in | Token Claims" registry established by Section 10.1 of [RFC7519]. | |||
| [RFC7519]. | ||||
| 6.1.1. Registry Contents | 6.1.1. Registry Contents | |||
| * Claim Name: "sig_val_claims" | Claim Name: sig_val_claims | |||
| * Claim Description: Signature Validation Token | ||||
| * Change Controller: IESG | Claim Description: Signature Validation Token | |||
| * Specification Document(s): Section 3.2.3 of {this document} | Change Controller: IESG | |||
| NOTE to RFC editor: Please replace {this document} with its assigned | Specification Document(s): Section 3.2.3 of RFC 9321 | |||
| RFC number. | ||||
| 6.2. Header Parameter Names Registration | 6.2. Header Parameter Names Registration | |||
| This section registers the "svt" Header Parameter in the IANA "JSON | IANA has registered the "svt" Header Parameter in the "JSON Web | |||
| Web Signature and Encryption Header Parameters" registry established | Signature and Encryption Header Parameters" registry established by | |||
| by [RFC7515]. | [RFC7515]. | |||
| 6.2.1. Registry Contents | 6.2.1. Registry Contents | |||
| * Header Parameter Name: "svt" | Header Parameter Name: svt | |||
| * Header Parameter Description: Signature Validation Token | ||||
| * Header Parameter Usage Location(s): JWS | Header Parameter Description: Signature Validation Token | |||
| * Change Controller: IESG | Header Parameter Usage Location(s): JWS | |||
| * Specification Document(s): Appendix C.1.1 of {this document} | Change Controller: IESG | |||
| NOTE to RFC editor: Please replace {this document} with its assigned | Specification Document(s): Appendix C.1.1 of RFC 9321 | |||
| RFC number. | ||||
| 7. Security Considerations | 7. Security Considerations | |||
| 7.1. Level of reliance | ||||
| 7.1. Level of Reliance | ||||
| An SVT allows a signature verifier to still validate the original | An SVT allows a signature verifier to still validate the original | |||
| signature using the original signature data and to use the | signature using the original signature data and to use the | |||
| information in the SVT selectively to either just confirm the | information in the SVT selectively to confirm the validity and | |||
| validity and integrity of the original data, such as confirming the | integrity of the original data, such as confirming the integrity of | |||
| integrity of signed data or the validity of the signer's certificate | Signed Data or the validity of the signer's certificate, etc. | |||
| etc. | ||||
| Another way to use an SVT is to completely rely on the validation | Another way to use an SVT is to completely rely on the validation | |||
| conclusion provided by the SVT and to omit re-validation of the | conclusion provided by the SVT and to omit revalidation of the | |||
| original signature value and original certificate status checking | original signature value and original certificate status checking | |||
| data. | data. | |||
| This choice is a decision made by the verifier according to its own | This choice is a decision made by the verifier according to its own | |||
| policy and risk assessment. | policy and risk assessment. | |||
| However, even when relying on the SVT validation conclusion of an SVT | However, even when relying on the SVT validation conclusion of an | |||
| it is vital to still verify that the present SVT is correctly | SVT, it is vital to still verify that the present SVT is correctly | |||
| associated with the document and signature that is being validated by | associated with the document and signature that is being validated by | |||
| validating the hashed reference data in the SVT of the signature, | validating the hashed reference data in the SVT of the signature, | |||
| signing certificate chain, signed data and the signed bytes. | signing certificate chain, Signed Data, and the Signed Bytes. | |||
| 7.2. Aging algorithms | 7.2. Aging Algorithms | |||
| Even if the SVT provides protection against algorithms becoming | Even if the SVT provides protection against algorithms becoming | |||
| weakened or broken over time, this protection is only valid for as | weakened or broken over time, this protection is only valid for as | |||
| long as the algorithms used to sign the SVT are still considered | long as the algorithms used to sign the SVT are still considered | |||
| secure. It is advisable to re-issue SVT in cases where an algorithm | secure. It is advisable to reissue SVTs in cases where an algorithm | |||
| protecting the SVT is getting close to its end of life. | protecting the SVT is getting close to its end of life. | |||
| One way to increase the resistance of algorithms becoming insecure, | One way to increase the resistance of algorithms becoming insecure, | |||
| is to issue multiple SVT for the same signature with different | is to issue multiple SVTs for the same signature with different | |||
| algorithms and key lengths where one algorithm could still be secure | algorithms and key lengths where one algorithm could still be secure | |||
| even if the corresponding algorithm used in the alternative SVT is | even if the corresponding algorithm used in the alternative SVT is | |||
| broken. | broken. | |||
| 8. References | 8. References | |||
| 8.1. Normative References | 8.1. Normative References | |||
| [CADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | [CADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | |||
| CAdES digital signatures; Part 1: Building blocks and | CAdES digital signatures; Part 1: Building blocks and | |||
| CAdES baseline signatures", ETSI EN 319 122-1 v1.1.1, | CAdES baseline signatures", v1.1.1, ETSI EN 319 122-1, | |||
| April 2016. | April 2016. | |||
| [ETSI319102-1] | [ETSI319102-1] | |||
| ETSI, "ETSI - Electronic Signatures and Infrastructures | ETSI, "Electronic Signatures and Infrastructures (ESI); | |||
| (ESI); Procedures for Creation and Validation of AdES | Procedures for Creation and Validation of AdES Digital | |||
| Digital Signatures; Part 1: Creation and Validation", | Signatures; Part 1: Creation and Validation", v1.1.1, ETSI | |||
| ETSI EN 319 102-1 v1.1.1, May 2016. | EN 319 102-1, May 2016. | |||
| [IANA-JOSE-REG] | ||||
| IANA, "JSON Object Signing and Encryption (JOSE)", | ||||
| <https://www.iana.org/assignments/jose/>. | ||||
| [ISOPDF2] ISO, "Document management -- Portable document format -- | [ISOPDF2] ISO, "Document management -- Portable document format -- | |||
| Part 2: PDF 2.0", ISO 32000-2, July 2017. | Part 2: PDF 2.0", ISO 32000-2:2020, December 2020. | |||
| [PADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | [PADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | |||
| PAdES digital signatures; Part 1: Building blocks and | PAdES digital signatures; Part 1: Building blocks and | |||
| PAdES baseline signatures", ETSI EN 319 142-1 v1.1.1, | PAdES baseline signatures", v1.1.1, ETSI EN 319 142-1, | |||
| April 2016. | April 2016. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3125] Ross, J., Pinkas, D., and N. Pope, "Electronic Signature | [RFC3125] Ross, J., Pinkas, D., and N. Pope, "Electronic Signature | |||
| Policies", RFC 3125, DOI 10.17487/RFC3125, September 2001, | Policies", RFC 3125, DOI 10.17487/RFC3125, September 2001, | |||
| <https://www.rfc-editor.org/info/rfc3125>. | <https://www.rfc-editor.org/info/rfc3125>. | |||
| skipping to change at page 19, line 5 ¶ | skipping to change at line 830 ¶ | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
| RFC 5652, DOI 10.17487/RFC5652, September 2009, | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
| <https://www.rfc-editor.org/info/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
| [RFC6931] Eastlake 3rd, D., "Additional XML Security Uniform | ||||
| Resource Identifiers (URIs)", RFC 6931, | ||||
| DOI 10.17487/RFC6931, April 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6931>. | ||||
| [RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | [RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | |||
| Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May | Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May | |||
| 2015, <https://www.rfc-editor.org/info/rfc7515>. | 2015, <https://www.rfc-editor.org/info/rfc7515>. | |||
| [RFC7518] Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, | [RFC7518] Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, | |||
| DOI 10.17487/RFC7518, May 2015, | DOI 10.17487/RFC7518, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7518>. | <https://www.rfc-editor.org/info/rfc7518>. | |||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7519>. | <https://www.rfc-editor.org/info/rfc7519>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC9231] Eastlake 3rd, D., "Additional XML Security Uniform | ||||
| Resource Identifiers (URIs)", RFC 9231, | ||||
| DOI 10.17487/RFC9231, July 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9231>. | ||||
| [XADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | [XADES] ETSI, "Electronic Signatures and Infrastructures (ESI); | |||
| XAdES digital signatures; Part 1: Building blocks and | XAdES digital signatures; Part 1: Building blocks and | |||
| XAdES baseline signatures", ETSI EN 319 132-1 v1.1.1, | XAdES baseline signatures", v1.1.1, ETSI EN 319 132-1, | |||
| April 2016. | April 2016. | |||
| [XMLDSIG11] | [XMLDSIG11] | |||
| Eastlake, D., Reagle, J., Solo, D., Hirsch, F., Nystrom, | Eastlake 3rd, D., Reagle, J., Solo, D., Hirsch, F., | |||
| M., Roessler, T., and K. Yiu, "XML Signature Syntax and | Nystrom, M., Roessler, T., and K. Yiu, "XML Signature | |||
| Processing Version 1.1", W3C Proposed Recommendation, 11 | Syntax and Processing Version 1.1", W3C Proposed | |||
| April 2013. | Recommendation, April 2013. Latest version available at | |||
| https://www.w3.org/TR/xmldsig- core1/. | ||||
| 8.2. Informative References | 8.2. Informative References | |||
| [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
| Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
| Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
| JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
| June 2019, <https://www.rfc-editor.org/info/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
| Appendix A. Appendix: XML signature profile | Appendix A. XML Signature Profile | |||
| This appendix defines a profile for implementing SVT with a signed | This appendix defines a profile for implementing SVTs with a signed | |||
| XML document, and defines the following aspects of SVT usage: | XML document and defines the following aspects of SVT usage: | |||
| * How to include reference data related to XML signatures and XML | * How to include reference data related to XML signatures and XML | |||
| documents in an SVT. | documents in an SVT | |||
| * How to add an SVT token to a XML signature. | * How to add an SVT token to an XML signature | |||
| XML documents can have any number of signature elements, signing an | XML documents can have any number of signature elements, signing an | |||
| arbitrary number of fragments of XML documents. The actual signature | arbitrary number of fragments of XML documents. The actual signature | |||
| element may be included in the signed XML document (enveloped), | element may be included in the signed XML document (enveloped), | |||
| include the signed data (enveloping) or may be separate from the | include the Signed Data (enveloping), or may be separate from the | |||
| signed content (detached). | signed content (detached). | |||
| To provide a generic solution for any type of XML signature an SVT is | To provide a generic solution for any type of XML signature, an SVT | |||
| added to each XML signature element within the XML signature | is added to each XML signature element within the XML signature | |||
| <ds:Object> element. | <ds:Object> element. | |||
| A.1. Notation | A.1. Notation | |||
| A.1.1. References to XML Elements from XML Schemas | A.1.1. References to XML Elements from XML Schemas | |||
| When referring to elements from the W3C XML Signature namespace | When referring to elements from the W3C XML Signature namespace | |||
| (http://www.w3.org/2000/09/xmldsig#) the following syntax is used: | (https://www.w3.org/2000/09/xmldsig#), the following syntax is used: | |||
| * <ds:Signature> | * <ds:Signature> | |||
| When referring to elements from the ETSI XAdES XML Signature | When referring to elements from the ETSI XAdES XML Signature | |||
| namespace (http://uri.etsi.org/01903/v1.3.2#) the following syntax is | namespace (https://uri.etsi.org/01903/v1.3.2#), the following syntax | |||
| used: | is used: | |||
| * <xades:CertDigest> | * <xades:CertDigest> | |||
| When referring to elements defined in this specification | When referring to elements defined in this specification | |||
| (http://id.swedenconnect.se/svt/1.0/sig-prop/ns) the following syntax | (http://id.swedenconnect.se/svt/1.0/sig-prop/ns), the following | |||
| is used: | syntax is used: | |||
| * <svt:Element> | * <svt:Element> | |||
| A.2. SVT in XML Documents | A.2. SVT in XML Documents | |||
| When SVT is provided for XML signatures then one SVT MUST be provided | When SVTs are provided for XML signatures, then one SVT MUST be | |||
| for each XML signature. | provided for each XML signature. | |||
| An SVT embedded within the XML signature element MUST be placed in a | An SVT embedded within the XML signature element MUST be placed in a | |||
| <svt:SignatureValidationToken> element as defined in Appendix A.2.1. | <svt:SignatureValidationToken> element as defined in Appendix A.2.1. | |||
| A.2.1. SignatureValidationToken Signature Property | A.2.1. SignatureValidationToken Signature Property | |||
| The <svt:SignatureValidationToken> element MUST be placed in a | The <svt:SignatureValidationToken> element MUST be placed in a | |||
| <ds:SignatureProperty> element in accordance with [XMLDSIG11]. The | <ds:SignatureProperty> element in accordance with [XMLDSIG11]. The | |||
| <ds:SignatureProperty> element MUST be placed inside a | <ds:SignatureProperty> element MUST be placed inside a | |||
| <ds:SignatureProperties> element inside a <ds:Object> element inside | <ds:SignatureProperties> element inside a <ds:Object> element inside | |||
| a <ds:Signature> element. | a <ds:Signature> element. | |||
| Note: [XMLDSIG11] requires the Target attribute to be present in | Note: [XMLDSIG11] requires the Target attribute to be present in | |||
| <ds:SignatureProperty>, referencing the signature targeted by this | <ds:SignatureProperty>, referencing the signature targeted by this | |||
| signature property. If an SVT is added to a signature that do not | signature property. If an SVT is added to a signature that does not | |||
| have an Id attribute, implementations SHOULD add an Id attribute to | have an Id attribute, implementations SHOULD add an Id attribute to | |||
| the <ds:Signature> element and reference that Id in the Target | the <ds:Signature> element and reference that Id in the Target | |||
| attribute. This Id attribute and Target attribute value matching is | attribute. This Id attribute and Target attribute value matching is | |||
| required by the [XMLDSIG11] standard, but it is redundant in the | required by the [XMLDSIG11] standard, but it is redundant in the | |||
| context of SVT validation as the SVT already contains information | context of SVT validation as the SVT already contains information | |||
| that uniquely identifies the target signature. Validation | that uniquely identifies the target signature. Validation | |||
| applications SHOULD not reject an SVT token because of Id and Target | applications SHOULD NOT reject an SVT token because of Id and Target | |||
| attribute mismatch, and MUST rely on matching against signature using | attribute mismatch and MUST rely on matching against a signature | |||
| signed information in the SVT itself. | using signed information in the SVT itself. | |||
| The <svt:SignatureValidationToken> element is defined by the | The <svt:SignatureValidationToken> element is defined by the | |||
| following XML Schema: | following XML Schema: | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
| elementFormDefault="qualified" | elementFormDefault="qualified" | |||
| targetNamespace="http://id.swedenconnect.se/svt/1.0/sig-prop/ns" | targetNamespace="http://id.swedenconnect.se/svt/1.0/sig-prop/ns" | |||
| xmlns:svt="http://id.swedenconnect.se/svt/1.0/sig-prop/ns"> | xmlns:svt="http://id.swedenconnect.se/svt/1.0/sig-prop/ns"> | |||
| skipping to change at page 21, line 41 ¶ | skipping to change at line 964 ¶ | |||
| <xs:simpleContent> | <xs:simpleContent> | |||
| <xs:extension base="xs:string"> | <xs:extension base="xs:string"> | |||
| </xs:extension> | </xs:extension> | |||
| </xs:simpleContent> | </xs:simpleContent> | |||
| </xs:complexType> | </xs:complexType> | |||
| </xs:schema> | </xs:schema> | |||
| The SVT token MUST be included as a string representation of the SVT | 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 | JWT. Note that this is the string representation of the JWT without | |||
| further encoding. The SVT MUST NOT be represented by the Base64 | further encoding. The SVT MUST NOT be represented by the | |||
| encoded bytes of the JWT string. | Base64-encoded bytes of the JWT string. | |||
| Example: | Example: | |||
| <ds:Signature Id="MySignatureId"> | <ds:Signature Id="MySignatureId"> | |||
| ... | ... | |||
| <ds:Object> | <ds:Object> | |||
| <ds:SignatureProperties> | <ds:SignatureProperties> | |||
| <ds:SignatureProperty Target="#MySignatureId"> | <ds:SignatureProperty Target="#MySignatureId"> | |||
| <svt:SignatureValidationToken> | <svt:SignatureValidationToken> | |||
| eyJ0eXAiOiJKV1QiLCJhb...2aNZ | eyJ0eXAiOiJKV1QiLCJhb...2aNZ | |||
| </svt:SignatureValidationToken> | </svt:SignatureValidationToken> | |||
| </ds:SignatureProperty> | </ds:SignatureProperty> | |||
| </ds:SignatureProperties> | </ds:SignatureProperties> | |||
| </ds:Object> | </ds:Object> | |||
| </ds:Signature> | </ds:Signature> | |||
| A.2.2. Multiple SVT in an XML signature | A.2.2. Multiple SVTs in an XML Signature | |||
| If a new SVT is stored in a signature which already contains a | If a new SVT is stored in a signature that already contains a | |||
| previously issued SVT, implementations can choose to either replace | previously issued SVT, implementations can choose either to replace | |||
| the existing SVT or to store the new SVT in addition to the existing | the existing SVT or to store the new SVT in addition to the existing | |||
| SVT. | SVT. | |||
| If the new SVT is stored in addition to the old SVT, it SHOULD be | 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 | stored in a new <ds:SignatureProperty> element inside the existing | |||
| <ds:SignatureProperties> element where the old SVT is located. | <ds:SignatureProperties> element where the old SVT is located. | |||
| For interoperability robustness, signature validation applications | For interoperability robustness, signature validation applications | |||
| MUST be able to handle signatures where the new SVT is located in a | MUST be able to handle signatures where the new SVT is located in a | |||
| new <ds:Object> element. | new <ds:Object> element. | |||
| A.3. XML signature SVT Claims | A.3. XML Signature SVT Claims | |||
| A.3.1. XML Profile Identifier | A.3.1. XML Profile Identifier | |||
| When this profile is used the SigValidation object MUST contain a | When this profile is used, the SigValidation object MUST contain a | |||
| "profile" claim with the value "XML". | "profile" claim with the value "XML". | |||
| A.3.2. XML Signature Reference Data | A.3.2. XML Signature Reference Data | |||
| The SVT Signature object MUST contain a "sig_ref" claim (SigReference | The SVT Signature object MUST contain a "sig_ref" claim (SigReference | |||
| object) with the following elements: | object) with the following elements: | |||
| * "id" -- The Id-attribute of the XML signature, if present. | "id": The Id-attribute of the XML signature, if present. | |||
| * "sig_hash" -- The hash over the signature value bytes. | "sig_hash": The hash over the signature value bytes. | |||
| * "sb_hash" -- The hash over the canonicalized <ds:SignedInfo> | "sb_hash": The hash over the canonicalized <ds:SignedInfo> element | |||
| element (the bytes the XML signature algorithm has signed to | (the bytes the XML signature algorithm has signed to generate the | |||
| generated the signature value). | signature value). | |||
| A.3.3. XML Signed Data Reference Data | A.3.3. XML Signed Data Reference Data | |||
| The SVT Signature object MUST contain one instance of the "sig_data" | The SVT Signature object MUST contain one instance of the "sig_data" | |||
| claim (SignedData object) for each <ds:Reference> element in the | claim (SignedData object) for each <ds:Reference> element in the | |||
| <ds:SignedInfo> element. The "sig_data" claim MUST contain the | <ds:SignedInfo> element. The "sig_data" claim MUST contain the | |||
| following elements: | following elements: | |||
| * "ref" -- The value of the URI attribute of the corresponding | "ref": The value of the URI attribute of the corresponding | |||
| <ds:Reference> element. | <ds:Reference> element. | |||
| * "hash" -- The hash of all bytes identified corresponding | "hash": The hash of all bytes that were identified by the | |||
| <ds:Reference> element after applying all identified | corresponding <ds:Reference> element after applying all identified | |||
| canonicalization and transformation algorithms. These are the | canonicalization and transformation algorithms. These are the | |||
| same bytes that is hashed by the hash value in the | same bytes that are hashed by the hash value in the | |||
| <ds:DigestValue> element inside the <ds:Reference> element. | <ds:DigestValue> element inside the <ds:Reference> element. | |||
| A.3.4. XML Signer Certificate References | A.3.4. XML Signer Certificate References | |||
| The SVT Signature object MUST contain a "signer_cert_ref" claim | The SVT Signature object MUST contain a "signer_cert_ref" claim | |||
| (CertReference object). The "type" parameter of the | (CertReference object). The "type" parameter of the | |||
| "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | |||
| * The "chain" type MUST be used when signature validation was | * The "chain" type MUST be used when signature validation was | |||
| performed using one or more certificates where some or all of the | performed using one or more certificates where some or all of the | |||
| skipping to change at page 23, line 40 ¶ | skipping to change at line 1052 ¶ | |||
| * The "chain_hash" type MUST be used when signature validation was | * The "chain_hash" type MUST be used when signature validation was | |||
| performed using one or more certificates where all of the | performed using one or more certificates where all of the | |||
| certificates are present in the target signature. | certificates are present in the target signature. | |||
| A.4. JOSE Header | A.4. JOSE Header | |||
| A.4.1. SVT Signing Key Reference | A.4.1. SVT Signing Key Reference | |||
| The SVT JOSE header for XML signatures must contain one of the | The SVT JOSE header for XML signatures must contain one of the | |||
| following header parameters in accordance with [RFC7515], for storing | following header parameters in accordance with [RFC7515] for storing | |||
| a reference to the public key used to verify the signature on the | a reference to the public key used to verify the signature on the | |||
| SVT: | SVT: | |||
| * "x5c" -- Holds an X.509 certificate [RFC5280] or a chain of | "x5c": Holds an X.509 certificate [RFC5280] or a chain of | |||
| certificates. The certificate holding the public key that | certificates. The certificate holding the public key that | |||
| verifies the signature on the SVT MUST be the first certificate in | verifies the signature on the SVT MUST be the first certificate in | |||
| the chain. | the chain. | |||
| * "kid" -- A key identifier holding the Base64 encoded hash value of | "kid": A key identifier holding the Base64-encoded hash value of the | |||
| the certificate that can verify the signature on the SVT. The | certificate that can verify the signature on the SVT. The hash | |||
| hash algorithm MUST be the same hash algorithm used when signing | algorithm MUST be the same hash algorithm used when signing the | |||
| the SVT as specified by the alg header parameter. | SVT as specified by the "alg" Header Parameter. | |||
| Appendix B. Appendix: PDF signature profile | Appendix B. PDF Signature Profile | |||
| This appendix defines a profile for implementing SVT with a signed | This appendix defines a profile for implementing SVTs with a signed | |||
| PDF document, and defines the following aspects of SVT usage: | PDF document, and it defines the following aspects of SVT usage: | |||
| * How to include reference data related to PDF signatures and PDF | * How to include reference data related to PDF signatures and PDF | |||
| documents in an SVT. | documents in an SVT. | |||
| * How to add an SVT token to a PDF document. | * How to add an SVT token to a PDF document. | |||
| PDF document signatures are added as incremental updates to the | PDF document signatures are added as incremental updates to the | |||
| signed PDF document and signs all data of the PDF document up until | signed PDF document and signs all data of the PDF document up until | |||
| the current signature. When more than one signature is added to a | the current signature. When more than one signature is added to a | |||
| PDF document the previous signature is signed by the next signature | PDF document the previous signature is signed by the next signature | |||
| and can not be updated with additional data after this event. | and can not be updated with additional data after this event. | |||
| To minimize the impact on PDF documents with multiple signatures and | To minimize the impact on PDF documents with multiple signatures and | |||
| to stay backwards compatible with PDF software that do not understand | to stay backwards compatible with PDF software that does not | |||
| SVT, PDF documents add one SVT token for all signatures of the PDF as | understand SVTs, PDF documents add one SVT token for all signatures | |||
| an extension to a document timestamp added to the signed PDF as an | of the PDF as an extension to a document timestamp added to the | |||
| incremental update. This SVT covers all signatures of the signed | signed PDF as an incremental update. This SVT covers all signatures | |||
| PDF. | of the signed PDF. | |||
| B.1. SVT in PDF Documents | B.1. SVTs in PDF Documents | |||
| The SVT for a signed PDF document MAY provide signature validation | The SVT for a signed PDF document MAY provide signature validation | |||
| information about any of the present signatures in the PDF. The SVT | information about any of the present signatures in the PDF. The SVT | |||
| MUST contain a separate "sig" claim (Signature object) for each | MUST contain a separate "sig" claim (Signature object) for each | |||
| signature on the PDF that is covered by the SVT. | signature on the PDF that is covered by the SVT. | |||
| An SVT added to a signed PDF document MUST be added to a document | An SVT added to a signed PDF document MUST be added to a document | |||
| timestamp accordance with ISO 32000-2:2017 [ISOPDF2]. | timestamp in accordance with ISO 32000-2:2020 [ISOPDF2]. | |||
| The document timestamp contains an [RFC3161] timestamp token | The document timestamp contains an [RFC3161] timestamp token | |||
| (TSTInfo) in EncapsulatedContentInfo of the CMS signature. The SVT | (TSTInfo) in EncapsulatedContentInfo of the CMS signature. The SVT | |||
| MUST be added to the timestamp token (TSTInfo) as an Extension object | MUST be added to the timestamp token (TSTInfo) as an Extension object | |||
| as defined in Appendix B.1.1. | as defined in Appendix B.1.1. | |||
| B.1.1. SVT Extension to Timestamp Tokens | B.1.1. SVT Extension to Timestamp Tokens | |||
| The SVT extension is an Extension suitable to be included in TSTInfo | The SVT extension is an Extension suitable to be included in TSTInfo | |||
| as defined by [RFC3161]. | as defined by [RFC3161]. | |||
| The SVT extension is identified by the Object Identifier (OID) | The SVT extension is identified by the Object Identifier (OID) | |||
| 1.2.752.201.5.2 | 1.2.752.201.5.2. | |||
| Editors note: This is the current used OID. Consider assigning an | ||||
| IETF extension OID. | ||||
| This extension data (OCTET STRING) holds the bytes of SVT JWT, | This extension data (OCTET STRING) holds the bytes of SVT JWT, | |||
| represented as a UTF-8 encoded string. | represented as a UTF-8-encoded string. | |||
| This extension MUST NOT be marked critical. | This extension MUST NOT be marked critical. | |||
| Note: Extensions in timestamp tokens according to [RFC3161] are | Note: Extensions in timestamp tokens according to [RFC3161] are | |||
| imported from the definition of the X.509 certificate extensions | imported from the definition of the X.509 certificate extensions | |||
| defined in [RFC5280]. | defined in [RFC5280]. | |||
| B.2. PDF signature SVT Claims | B.2. PDF Signature SVT Claims | |||
| B.2.1. PDF Profile Identifier | B.2.1. PDF Profile Identifier | |||
| When this profile is used the SigValidation object MUST contain a | When this profile is used, the SigValidation object MUST contain a | |||
| "profile" claim with the value "PDF". | "profile" claim with the value "PDF". | |||
| B.2.2. PDF Signature Reference Data | B.2.2. PDF Signature Reference Data | |||
| The SVT Signature object MUST contain a "sig_ref" claim (SigReference | The SVT Signature object MUST contain a "sig_ref" claim (SigReference | |||
| object) with the following elements: | object) with the following elements: | |||
| * "id" -- Absent or a Null value. | "id": Absent or a Null value. | |||
| * "sig_hash" -- The hash over the signature value bytes. | "sig_hash": The hash over the signature value bytes. | |||
| * "sb_hash" -- The hash over the DER encoded SignedAttributes in | "sb_hash": The hash over the DER-encoded SignedAttributes in | |||
| SignerInfo. | SignerInfo. | |||
| B.2.3. PDF Signed Data Reference Data | B.2.3. PDF Signed Data Reference Data | |||
| The SVT Signature object MUST contain one instance of the "sig_data" | The SVT Signature object MUST contain one instance of the "sig_data" | |||
| claim (SignedData object) with the following elements: | claim (SignedData object) with the following elements: | |||
| * "ref" -- The string representation of the ByteRange value of the | "ref": The string representation of the ByteRange value of the PDF | |||
| PDF signature dictionary of the target signature. This is a | signature dictionary of the target signature. This is a sequence | |||
| sequence of integers separated by space where each integer pair | of integers separated by space where each integer pair specifies | |||
| specifies the start index and length of a byte range. | the start index and length of a byte range. | |||
| * "hash" -- The hash of all bytes identified by the ByteRange value. | "hash": The hash of all bytes identified by the ByteRange value. | |||
| This is the concatenation of all byte ranges identified by the | This is the concatenation of all byte ranges identified by the | |||
| ByteRange value. | ByteRange value. | |||
| B.2.4. PDF Signer Certificate References | B.2.4. PDF Signer Certificate References | |||
| The SVT Signature object MUST contain a "signer_cert_ref" claim | The SVT Signature object MUST contain a "signer_cert_ref" claim | |||
| (CertReference object). The "type" parameter of the | (CertReference object). The "type" parameter of the | |||
| "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | |||
| * The "chain" type MUST be used when signature validation was | * The "chain" type MUST be used when signature validation was | |||
| skipping to change at page 26, line 21 ¶ | skipping to change at line 1176 ¶ | |||
| certificates are present in the target signature. | certificates are present in the target signature. | |||
| Note: The referenced signer certificate MUST match any certificates | Note: The referenced signer certificate MUST match any certificates | |||
| referenced using ESSCertID or ESSCertIDv2 from [RFC5035]. | referenced using ESSCertID or ESSCertIDv2 from [RFC5035]. | |||
| B.3. JOSE Header | B.3. JOSE Header | |||
| B.3.1. SVT Signing Key Reference | B.3.1. SVT Signing Key Reference | |||
| The SVT JOSE header must contain one of the following header | The SVT JOSE header must contain one of the following header | |||
| parameters in accordance with [RFC7515], for storing a reference to | parameters in accordance with [RFC7515] for storing a reference to | |||
| the public key used to verify the signature on the SVT: | the public key used to verify the signature on the SVT: | |||
| * "x5c" -- Holds an X.509 certificate [RFC5280] or a chain of | "x5c": Holds an X.509 certificate [RFC5280] or a chain of | |||
| certificates. The certificate holding the public key that | certificates. The certificate holding the public key that | |||
| verifies the signature on the SVT MUST be the first certificate in | verifies the signature on the SVT MUST be the first certificate in | |||
| the chain. | the chain. | |||
| * "kid" -- A key identifier holding the Base64 encoded hash value of | "kid": A key identifier holding the Base64-encoded hash value of the | |||
| the certificate that can verify the signature on the SVT. The | certificate that can verify the signature on the SVT. The hash | |||
| hash algorithm MUST be the same hash algorithm used when signing | algorithm MUST be the same hash algorithm used when signing the | |||
| the SVT as specified by the alg header parameter. The referenced | SVT as specified by the "alg" Header Parameter. The referenced | |||
| certificate SHOULD be the same certificate that was used to sign | certificate SHOULD be the same certificate that was used to sign | |||
| the document timestamp that contains the SVT. | the document timestamp that contains the SVT. | |||
| Appendix C. Appendix: JWS Profile | Appendix C. JWS Profile | |||
| This appendix defines a profile for implementing SVT with a JWS | This appendix defines a profile for implementing SVTs with a JWS | |||
| signed payload according to [RFC7515], and defines the following | signed payload according to [RFC7515], and it defines the following | |||
| aspects of SVT usage: | aspects of SVT usage: | |||
| * How to include reference data related to JWS signatures in an SVT. | * How to include reference data related to JWS signatures in an SVT. | |||
| * How to add an SVT token to JWS signatures. | * How to add an SVT token to JWS signatures. | |||
| A JWS may have one or more signatures depending on its serialization | A JWS may have one or more signatures, depending on its serialization | |||
| format, signing the same payload data. A JWS either contains the | format, signing the same payload data. A JWS either contains the | |||
| data to be signed (enveloping) or may sign any externally associated | data to be signed (enveloping) or may sign any externally associated | |||
| payload data (detached). | payload data (detached). | |||
| To provide a generic solution for JWS, an SVT is added to each | To provide a generic solution for JWS, an SVT is added to each | |||
| present signature as a JWS Unprotected Header. If a JWS includes | present signature as a JWS Unprotected Header. If a JWS includes | |||
| multiple signatures, then each signature includes its own SVT. | multiple signatures, then each signature includes its own SVT. | |||
| C.1. SVT in JWS | C.1. SVT in JWS | |||
| An SVT token MAY be added to any signature of a JWS to support | An SVT token MAY be added to any signature of a JWS to support | |||
| validation of that signature. If more than one signature is present | validation of that signature. If more than one signature is present, | |||
| then each present SVT MUST provide information exclusively related to | then each present SVT MUST provide information exclusively related to | |||
| one associated signature and MUST NOT include information about any | one associated signature and MUST NOT include information about any | |||
| other signature in the JWS. | other signature in the JWS. | |||
| Each SVT is stored in its associated signature's "svt" header as | Each SVT is stored in its associated signature's "svt" header as | |||
| defined in Appendix C.1.1. | defined in Appendix C.1.1. | |||
| C.1.1. "svt" Header Parameter | C.1.1. "svt" Header Parameter | |||
| The "svt" (Signature Validation Token) Header Parameter is used to | The "svt" (Signature Validation Token) Header Parameter is used to | |||
| contain an array of SVT tokens to support validation of the | contain an array of SVT tokens to support validation of the | |||
| associated signature. Each SVT token in the array has the format of | associated signature. Each SVT token in the array has the format of | |||
| a JWT as defined in [RFC7519] and is stored using its natural string | a JWT as defined in [RFC7519] and is stored using its natural string | |||
| representation without further wrapping or encoding. | representation without further wrapping or encoding. | |||
| The "svt" Header Parameter, when used, MUST be included as a JWS | The "svt" Header Parameter, when used, MUST be included as a JWS | |||
| Unprotected Header. | Unprotected Header. | |||
| Note: JWS Unprotected Header is not supported with JWS Compact | Note: A JWS Unprotected Header is not supported with JWS Compact | |||
| Serialization. A consequence of adding an SVT token to a JWS is | Serialization. A consequence of adding an SVT token to a JWS is | |||
| therefore that JWS JSON Serialization MUST be used, either in the | therefore that JWS JSON Serialization MUST be used either in the form | |||
| form of general JWS JSON Serialization (for one or more signatures) | of general JWS JSON Serialization (for one or more signatures) or in | |||
| or in the form of flattened JWS JSON Serialization (optionally used | the form of flattened JWS JSON Serialization (optionally used when | |||
| when only one signature is present in the JWS). | only one signature is present in the JWS). | |||
| C.1.2. Multiple SVT in a JWS signature | C.1.2. Multiple SVTs in a JWS Signature | |||
| If a new SVT is stored in a signature which already contains a | If a new SVT is stored in a signature that already contains a | |||
| previously issued SVT, implementations can choose to either replace | previously issued SVT, implementations can choose either to replace | |||
| the existing SVT or to store the new SVT in addition to the existing | the existing SVT or to store the new SVT in addition to the existing | |||
| SVT. | SVT. | |||
| If a JWS signature already contains an array of SVTs and a new SVT is | If a JWS signature already contains an array of SVTs and a new SVT is | |||
| to be added, then the new SVT MUST be added to the array of SVT | to be added, then the new SVT MUST be added to the array of SVT | |||
| tokens in the existing "svt" Header Parameter. | tokens in the existing "svt" Header Parameter. | |||
| C.2. JWS signature SVT Claims | C.2. JWS Signature SVT Claims | |||
| C.2.1. JWS Profile Identifier | C.2.1. JWS Profile Identifier | |||
| When this profile is used the SigValidation object MUST contain a | When this profile is used, the SigValidation object MUST contain a | |||
| "profile" claim with the value "JWS". | "profile" claim with the value "JWS". | |||
| C.2.2. JWS Signature Reference Data | C.2.2. JWS Signature Reference Data | |||
| The SVT Signature object MUST contain a "sig_ref" claim (SigReference | The SVT Signature object MUST contain a "sig_ref" claim (SigReference | |||
| object) with the following elements: | object) with the following elements: | |||
| * "sig_hash" -- The hash over the associated signature value (the | "sig_hash": The hash over the associated signature value (the bytes | |||
| bytes of the base64url-decoded signature parameter). | of the base64url-decoded signature parameter). | |||
| * "sb_hash" -- The hash over all bytes signed by the associated | "sb_hash": The hash over all bytes signed by the associated | |||
| signature (the JWS Signing Input according to [RFC7515]). | signature (the JWS Signing Input according to [RFC7515]). | |||
| C.2.3. JWS Signed Data Reference Data | C.2.3. JWS Signed Data Reference Data | |||
| The SVT Signature object MUST contain one instance of the "sig_data" | The SVT Signature object MUST contain one instance of the "sig_data" | |||
| claim (SignedData object) with the following elements: | claim (SignedData object) with the following elements: | |||
| * "ref" -- This parameter MUST hold one of the following thee | "ref": This parameter MUST hold one of the following three possible | |||
| possible values. | values: | |||
| 1. The explicit string value "payload" if the signed JWS Payload | 1. The explicit string value "payload" if the signed JWS Payload | |||
| is embedded in a "payload" member of the JWS. | is embedded in a "payload" member of the JWS. | |||
| 2. The explicit string value "detached" if the JWS signs detached | 2. The explicit string value "detached" if the JWS signs detached | |||
| payload data without explicit reference. | payload data without explicit reference. | |||
| 3. A URI that can be used to identify or fetch the detached | 3. A URI that can be used to identify or fetch the detached | |||
| signed data. The means to determine the URI for the detached | Signed Data. The means to determine the URI for the detached | |||
| signed data is outside the scope of this specification. | Signed Data is outside the scope of this specification. | |||
| * "hash" -- The hash over the JWS Payload data bytes (not its | "hash": The hash over the JWS Payload data bytes (not its base64url- | |||
| base64url-encoded string representation). | encoded string representation). | |||
| C.2.4. JWS Signer Certificate References | C.2.4. JWS Signer Certificate References | |||
| The SVT Signature object MUST contain a "signer_cert_ref" claim | The SVT Signature object MUST contain a "signer_cert_ref" claim | |||
| (CertReference object). The "type" parameter of the | (CertReference object). The "type" parameter of the | |||
| "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | "signer_cert_ref" claim MUST be either "chain" or "chain_hash". | |||
| * The "chain" type MUST be used when signature validation was | * The "chain" type MUST be used when signature validation was | |||
| performed using one or more certificates where some or all of the | performed using one or more certificates where some or all of the | |||
| certificates in the chain are not present in the target signature. | certificates in the chain are not present in the target signature. | |||
| skipping to change at page 29, line 15 ¶ | skipping to change at line 1309 ¶ | |||
| * The "chain_hash" type MUST be used when signature validation was | * The "chain_hash" type MUST be used when signature validation was | |||
| performed using one or more certificates where all of the | performed using one or more certificates where all of the | |||
| certificates are present in the target signature JOSE header using | certificates are present in the target signature JOSE header using | |||
| the "x5c" Header Parameter. | the "x5c" Header Parameter. | |||
| C.3. SVT JOSE Header | C.3. SVT JOSE Header | |||
| C.3.1. SVT Signing Key Reference | C.3.1. SVT Signing Key Reference | |||
| The SVT JOSE header must contain one of the following header | The SVT JOSE header must contain one of the following header | |||
| parameters in accordance with [RFC7515], for storing a reference to | parameters in accordance with [RFC7515] for storing a reference to | |||
| the public key used to verify the signature on the SVT: | the public key used to verify the signature on the SVT: | |||
| * "x5c" -- Holds an X.509 certificate [RFC5280] or a chain of | "x5c": Holds an X.509 certificate [RFC5280] or a chain of | |||
| certificates. The certificate holding the public key that | certificates. The certificate holding the public key that | |||
| verifies the signature on the SVT MUST be the first certificate in | verifies the signature on the SVT MUST be the first certificate in | |||
| the chain. | the chain. | |||
| * "kid" -- A key identifier holding the Base64 encoded hash value of | "kid": A key identifier holding the Base64-encoded hash value of the | |||
| the certificate that can verify the signature on the SVT. The | certificate that can verify the signature on the SVT. The hash | |||
| hash algorithm MUST be the same hash algorithm used when signing | algorithm MUST be the same hash algorithm used when signing the | |||
| the SVT as specified by the alg header parameter. | SVT as specified by the "alg" Header Parameter. | |||
| Appendix D. Appendix: Schemas | Appendix D. Schemas | |||
| D.1. Concise Data Definition Language (CDDL) | D.1. Concise Data Definition Language (CDDL) | |||
| The following informative CDDL [RFC8610] express the structure of an | The following informative CDDL [RFC8610] expresses the structure of | |||
| SVT token: | an SVT token: | |||
| svt = { | svt = { | |||
| jti: text | jti: text | |||
| iss: text | iss: text | |||
| iat: uint | iat: uint | |||
| ? aud: text / [* text] | ? aud: text / [* text] | |||
| ? exp: uint | ? exp: uint | |||
| sig_val_claims: SigValClaims | sig_val_claims: SigValClaims | |||
| } | } | |||
| skipping to change at page 31, line 13 ¶ | skipping to change at line 1402 ¶ | |||
| binary-value = text ; base64 classic with padding | binary-value = text ; base64 classic with padding | |||
| D.2. JSON Schema | D.2. JSON Schema | |||
| The following informative JSON schema describes the syntax of the SVT | The following informative JSON schema describes the syntax of the SVT | |||
| token payload. | token payload. | |||
| { | { | |||
| "$schema": "https://json-schema.org/draft/2020-12/schema", | "$schema": "https://json-schema.org/draft/2020-12/schema", | |||
| "title": "Signature Validation Token JSON Schema", | "title": "Signature Validation Token JSON Schema", | |||
| "description": "Schema defining the payload format for SVT", | "description": "Schema defining the payload format for SVTs", | |||
| "type": "object", | "type": "object", | |||
| "required": [ | "required": [ | |||
| "jti", | "jti", | |||
| "iss", | "iss", | |||
| "iat", | "iat", | |||
| "sig_val_claims" | "sig_val_claims" | |||
| ], | ], | |||
| "properties": { | "properties": { | |||
| "jti": { | "jti": { | |||
| "description": "JWT ID", | "description": "JWT ID", | |||
| skipping to change at page 36, line 41 ¶ | skipping to change at line 1671 ¶ | |||
| "description": "Extension map", | "description": "Extension map", | |||
| "type": ["object","null"], | "type": ["object","null"], | |||
| "required": [], | "required": [], | |||
| "additionalProperties": { | "additionalProperties": { | |||
| "type": "string" | "type": "string" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Appendix E. Appendix: Examples | Appendix E. Examples | |||
| The following example illustrates a basic SVT according to this | The following example illustrates a basic SVT according to this | |||
| specification issued for a signed PDF document. | specification issued for a signed PDF document. | |||
| Note: Line breaks in the decoded example are inserted for | Note: Line breaks in the decoded example are inserted for | |||
| readablilty. Line breaks are not allowed in valid JSON data. | readability. Line breaks are not allowed in valid JSON data. | |||
| Signature validation token JWT: | Signature validation token JWT: | |||
| eyJraWQiOiJPZW5JKzQzNEpoYnZmRG50ZlZcLzhyT3hHN0ZrdnlqYUtWSmFWcUlG | eyJraWQiOiJPZW5JKzQzNEpoYnZmRG50ZlZcLzhyT3hHN0ZrdnlqYUtWSmFWcUlG | |||
| QlhvaFZoQWU1Zks4YW5vdjFTNjg4cjdLYmFsK2Z2cGFIMWo4aWJnNTJRQnkxUFE9 | QlhvaFZoQWU1Zks4YW5vdjFTNjg4cjdLYmFsK2Z2cGFIMWo4aWJnNTJRQnkxUFE9 | |||
| PSIsInR5cCI6IkpXVCIsImFsZyI6IlJTNTEyIn0.eyJhdWQiOiJodHRwOlwvXC9l | PSIsInR5cCI6IkpXVCIsImFsZyI6IlJTNTEyIn0.eyJhdWQiOiJodHRwOlwvXC9l | |||
| eGFtcGxlLmNvbVwvYXVkaWVuY2UxIiwiaXNzIjoiaHR0cHM6XC9cL3N3ZWRlbmNv | eGFtcGxlLmNvbVwvYXVkaWVuY2UxIiwiaXNzIjoiaHR0cHM6XC9cL3N3ZWRlbmNv | |||
| bm5lY3Quc2VcL3ZhbGlkYXRvciIsImlhdCI6MTYwMzQ1ODQyMSwianRpIjoiNGQx | bm5lY3Quc2VcL3ZhbGlkYXRvciIsImlhdCI6MTYwMzQ1ODQyMSwianRpIjoiNGQx | |||
| Mzk2ZjFmZjcyOGY0MGQ1MjQwM2I2MWM1NzQ0ODYiLCJzaWdfdmFsX2NsYWltcyI6 | Mzk2ZjFmZjcyOGY0MGQ1MjQwM2I2MWM1NzQ0ODYiLCJzaWdfdmFsX2NsYWltcyI6 | |||
| eyJzaWciOlt7ImV4dCI6bnVsbCwic2lnX3ZhbCI6W3sibXNnIjoiT0siLCJleHQi | eyJzaWciOlt7ImV4dCI6bnVsbCwic2lnX3ZhbCI6W3sibXNnIjoiT0siLCJleHQi | |||
| skipping to change at page 39, line 4 ¶ | skipping to change at line 1777 ¶ | |||
| "ref" : "#xades-11a155d92bf55774613bb7b661477cfd", | "ref" : "#xades-11a155d92bf55774613bb7b661477cfd", | |||
| "hash" : "KRkgbZ6P/nhU63IMk0GiUfU/DTwveYiteQkwGeJqC5BzTNV8bQb | "hash" : "KRkgbZ6P/nhU63IMk0GiUfU/DTwveYiteQkwGeJqC5BzTNV8bQb | |||
| pedTTuWJPxqvJ0RY84hwm7eY/g0HrAOegKw==" | pedTTuWJPxqvJ0RY84hwm7eY/g0HrAOegKw==" | |||
| } ], | } ], | |||
| "time_val" : [ ] | "time_val" : [ ] | |||
| } ], | } ], | |||
| "ext" : null, | "ext" : null, | |||
| "ver" : "1.0", | "ver" : "1.0", | |||
| "profile" : "XML", | "profile" : "XML", | |||
| "hash_algo" : "http://www.w3.org/2001/04/xmlenc#sha512" | "hash_algo" : "http://www.w3.org/2001/04/xmlenc#sha512" | |||
| } | } | |||
| } | } | |||
| Authors' Addresses | Authors' Addresses | |||
| Stefan Santesson | Stefan Santesson | |||
| IDsec Solutions AB | IDsec Solutions AB | |||
| Forskningsbyn Ideon | Forskningsbyn Ideon | |||
| SE-223 70 Lund | SE-223 70 Lund | |||
| Sweden | Sweden | |||
| Email: sts@aaa-sec.com | Email: sts@aaa-sec.com | |||
| Russ Housley | Russ Housley | |||
| Vigil Security, LLC | Vigil Security, LLC | |||
| 516 Dranesville Road | 516 Dranesville Road | |||
| Herndon, VA, 20170 | Herndon, VA 20170 | |||
| United States of America | United States of America | |||
| Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
| End of changes. 206 change blocks. | ||||
| 470 lines changed or deleted | 458 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||