<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.5 (Ruby 2.6.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC7515 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
<!ENTITY RFC7519 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>


<rfc ipr="trust200902" docName="draft-santesson-svt-jws-01" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>JWS Signature Validation Token</title>

    <author initials="S." surname="Santesson" fullname="Stefan Santesson">
      <organization abbrev="IDsec Solutions">IDsec Solutions AB</organization>
      <address>
        <postal>
          <street>Forskningsbyn Ideon</street>
          <city>Lund</city>
          <code>223 70</code>
          <country>SE</country>
        </postal>
        <email>sts@aaa-sec.com</email>
      </address>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <street>516 Dranesville Road</street>
          <city>Herndon, VA</city>
          <code>20170</code>
          <country>US</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>

    <date year="2022" month="March" day="21"/>

    <area>Security</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a JSON Web Signature (JWS) profile for the Signature Validation Token defined in <xref target="SVT"/>.</t>



    </abstract>



  </front>

  <middle>


<section anchor="intro"><name>Introduction</name>

<t>The "Signature Validation Token" specification <xref target="SVT"/> defines the basic token to support signature validation in a way that can significantly extend the lifetime of a signature.</t>

<t>This specification defines a profile for implementing SVT with a JWS signed payload according to <xref target="RFC7515"/>, and defines the following aspects of SVT usage:</t>

<t><list style="symbols">
  <t>How to include reference data related to JWS signatures in an SVT.</t>
  <t>How to add an SVT token to JWS signatures.</t>
</list></t>

<t>A JWS may have one or more signatures depending on its serialization format, signing the same payload data. A JWS either contains the data to be signed (enveloping) or may sign any externally associated payload data (detached).</t>

<t>To provide a generic solution for JWS, an SVT is added to each present signature as a JWS Unprotected Header. If a JWS includes multiple signatures, then each signature includes its own SVT.</t>

</section>
<section anchor="defs"><name>Definitions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

<t>The definitions in <xref target="SVT"/> and <xref target="RFC7515"/> apply also to this document.</t>

</section>
<section anchor="svt-in-jws"><name>SVT in JWS</name>

<t>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 then each present SVT MUST provide information exclusively related to one associated signature and MUST NOT include information about any other signature in the JWS.</t>

<t>Each SVT is stored in its associated signature's "svt" header as defined in <xref target="svt-header"/>.</t>

<section anchor="svt-header"><name>"svt" Header Parameter</name>

<t>The "svt" (Signature Validation Token) Header Parameter is used to contain an array of SVT tokens to support validation of the associated signature. Each SVT token in the array has the format of a JWT as defined in <xref target="RFC7519"/> and is stored using its natural string representation without further wrapping or encoding.</t>

<t>The "svt" Header Parameter, when used, MUST be included as a JWS Unprotected Header.</t>

<t>Note: JWS Unprotected Header is not supported with JWS Compact Serialization. A consequence of adding an SVT token to a JWS is therefore that JWS JSON Serialization MUST be used, either in the form of general JWS JSON Serialization (for one or more signatures) or in the form of flattened JWS JSON Serialization (optionally used when only one signature is present in the JWS).</t>

</section>
<section anchor="multiple-svt-tokens"><name>Multiple SVT in a signature</name>

<t>If a new SVT is stored in a signature which already contains a previously issued SVT, implementations can choose to either replace the existing SVT or to store the new SVT in addition to the existing SVT.</t>

<t>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 tokens in the existing "svt" Header Parameter.</t>

</section>
</section>
<section anchor="svt-claims"><name>SVT Claims</name>

<section anchor="profile-identifier"><name>Profile Identifer</name>

<t>When this profile is used the SigValidation object MUST contain a "profile" claim with the value "JWS".</t>

</section>
<section anchor="signature-reference-data"><name>Signature Reference Data</name>

<t>The SVT Signature object MUST contain a "sig_ref" claim (SigReference object) with the following elements:</t>

<t><list style="symbols">
  <t>"sig_hash" -- The hash over the associated signature value (the bytes of the base64url-decoded signature parameter).</t>
  <t>"sb_hash" -- The hash over all bytes signed by the associated signature (the JWS Signing Input according to <xref target="RFC7515"/>).</t>
</list></t>

</section>
<section anchor="signed-data-reference"><name>Signed Data Reference Data</name>

<t>The SVT Signature object MUST contain one instance of the "sig_data" claim (SignedData object) with the following elements:</t>

<t><list style="symbols">
  <t>"ref" -- This parameter MUST hold one of the following thee possible values.  <list style="numbers">
      <t>The explicit string value "payload" if the signed JWS Payload is embedded in a "payload" member of the JWS.</t>
      <t>The explicit string value "detached" if the JWS signs detached payload data without explicit reference.</t>
      <t>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 is outside the scope of this specification.</t>
    </list></t>
  <t>"hash" -- The hash over the JWS Payload data bytes (not its base64url-encoded string representation).</t>
</list></t>

</section>
<section anchor="signer-certificate-references"><name>Signer Certificate References</name>

<t>The SVT Signature object MUST contain a "signer_cert_ref" claim (CertReference object). The "type" parameter of the "signer_cert_ref" claim MUST be either "chain" or "chain_hash".</t>

<t><list style="symbols">
  <t>The "chain" type MUST be used when signature validation was performed using one or more certificates where some or all of the certificates in the chain are not present in the target signature.</t>
  <t>The "chain_hash" type MUST be used when signature validation was performed using one or more certificates where all of the certificates are present in the target signature JOSE header using the "x5c" Header Parameter.</t>
</list></t>

</section>
</section>
<section anchor="svt-jose-header"><name>SVT JOSE Header</name>

<section anchor="svt-signing-key-reference"><name>SVT Signing Key Reference</name>

<t>The SVT JOSE header must contain one of the following header parameters in accordance with <xref target="RFC7515"/>, for storing a reference to the public key used to verify the signature on the SVT:</t>

<t><list style="symbols">
  <t>"x5c" -- Holds an X.509 certificate <xref target="RFC5280"/> or a chain of certificates. The certificate holding the public key that verifies the signature on the SVT MUST be the first certificate in the chain.</t>
  <t>"kid" -- A key identifier holding the Base64 encoded hash value of the certificate that can verify the signature on the SVT. The hash algorithm MUST be the same hash algorithm used when signing the SVT as specified by the <spanx style="verb">alg</spanx> header parameter.</t>
</list></t>

</section>
</section>
<section anchor="iana"><name>IANA Considerations</name>

<section anchor="iana-header-params"><name>Header Parameter Names Registration</name>

<t>This section registers the "svt" Header Parameter in the IANA "JSON Web Signature and Encryption Header Parameters" registry established by <xref target="RFC7515"/>.</t>

<section anchor="iana-header-params-reg"><name>Registry Contents</name>

<t><list style="symbols">
  <t>Header Parameter Name: "svt"</t>
  <t>Header Parameter Description: Signature Validation Token</t>
  <t>Header Parameter Usage Location(s): JWS</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): <xref target="svt-header"/> of {this document}</t>
</list></t>

<t>NOTE to RFC editor: Please replace {this document} with its assigned RFC number.</t>

</section>
</section>
</section>
<section anchor="seccons"><name>Security Considerations</name>

<t>The security considerations of <xref target="SVT"/> applies also to this document.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC5280;
&RFC7515;
&RFC7519;
&RFC8174;
<reference anchor="SVT" >
  <front>
    <title>Signature Validation Token</title>
    <author initials="S." surname="Santesson" fullname="Stefan Santesson">
      <organization></organization>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization></organization>
    </author>
    <date year="2021" month="September"/>
  </front>
  <seriesInfo name="IETF" value="draft-santesson-svt-02"/>
</reference>


    </references>




  </back>

<!-- ##markdown-source:
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

-->

</rfc>

