<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> encoding="utf-8"?>

<!-- generated pre-edited by ST 09/16/24 -->
<!-- formatted by ST 10/07/24 -->
<!-- reference review by https://github.com/cabo/kramdown-rfc version 1.7.17 (Ruby 3.0.2) TH 10/07/24 -->

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

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-key-thumbprint-06" number="9679" updates="" obsoletes="" submissionType="IETF" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true"> symRefs="true" version="3" xml:lang="en" >

  <front>
    <title abbrev="COSE Key Thumbprint">CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
    <seriesInfo name="RFC" value="9679"/>
    <author initials="K." surname="Isobe" fullname="Kohei Isobe">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>isobekohei@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country> States of America</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <date year="2024" month="September" day="06"/>

    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword> month="October"/>
    <area>SEC</area>
    <workgroup>cose</workgroup>

<!-- [rfced] Please insert any keywords (beyond those that appear in
the title) for use on https://www.rfc-editor.org/search. -->

    <abstract>

<?line 69?>

<t>This specification defines a method for computing a hash value over a CBOR
Object Signing and Encryption (COSE) Key. It specifies which fields within
the COSE Key structure are included in the cryptographic hash computation,
the process for creating a canonical representation of these fields, and how
to hash the resulting byte sequence. The resulting hash value, referred to
as a "thumbprint," "thumbprint", can be used to identify or select the corresponding key.</t>
    </abstract>
  </front>
  <middle>

<?line 78?>

<section anchor="introduction"><name>Introduction</name> anchor="introduction">
      <name>Introduction</name>
      <t>This specification defines a method for applying a cryptographic
hash function to a CBOR Object Signing and Encryption (COSE) Key
structure <xref target="RFC9052"/>, resulting in a hash value known as a
"thumbprint."
"thumbprint". To achieve this, the document specifies which fields
in the COSE Key structure are included in the hash computation, the
process for creating a canonical form of these fields, and how to
hash the resulting byte sequence. One of the primary use cases for
this thumbprint is as a naming scheme for identifying or selecting
the key, such as by using the COSE Key Thumbprint value as a "kid"
(key ID).

<!--[rfced] Section 1. We are having trouble understanding the meaning
of "along with other context" in the following sentence. Does
this refer to "other applications" or "different application
contexts" as mentioned elsewhere in the text? Please clarify.

Original:
   Another key use case involves key derivation functions that use the
   thumbprints of public keys from the endpoints, along with other
   context, to derive a symmetric key.
-->

Another key use case involves key derivation functions
that use the thumbprints of public keys from the endpoints, along
with other context, to derive a symmetric key.</t>
      <t>This specification outlines how thumbprints of COSE Keys are generated
for both asymmetric and symmetric keys (see Sections <xref target="thumbprint"/> target="thumbprint" format="counter"/> and
<xref target="required"/>). target="required" format="counter"/>). Additionally, it introduces a new CBOR Web Token (CWT) confirmation method, which is has been added to the IANA
"CWT Confirmation Methods" registry established by <xref target="RFC8747"/>.
For further details on the use of a confirmation claim in a CWT
with a proof-of-possession key, refer to Section 3.1 of <xref target="RFC8747"/>.</t> target="RFC8747" sectionFormat="of" section="3.1"/>.</t>
    </section>
    <section anchor="terminology"><name>Terminology</name>

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

    </section>
    <section anchor="thumbprint"><name>COSE anchor="thumbprint">
      <name>COSE Key Thumbprint</name>
      <t>The thumbprint of a COSE Key MUST <bcp14>MUST</bcp14> be computed as follows:</t>

<t><list style="numbers" type="1">
      <ol spacing="normal" type="1"><li>
          <t>Construct a COSE_Key structure (see Section 7 of <xref target="RFC9052"/>) target="RFC9052"
          sectionFormat="of" section="7"/>) containing only the required
          parameters representing the key as described in
Section 4 <xref
          target="required" format="default"/> of this document.</t>
        </li>
        <li>
          <t>Apply the deterministic encoding described in Section 4.2.1 of <xref target="RFC8949"/>
          target="RFC8949" sectionFormat="of" section="4.2.1"/> to the
          representation constructed in step (1).</t> 1.</t>
        </li>
        <li>
          <t>Hash the bytes produced in step (2) 2 with a cryptographic hash function H.
For example, SHA-256 <xref target="RFC6234"/> may be used as a hash function.</t>
</list></t>
        </li>
      </ol>
      <t>The details of this computation are further described in subsequent
sections.</t>
      <t>The SHA-256 hash algorithm MUST <bcp14>MUST</bcp14> be supported, supported; other algorithms MAY <bcp14>MAY</bcp14> be supported.</t>
    </section>
    <section anchor="required"><name>Required anchor="required">
      <name>Required COSE Key Parameters</name>
      <t>Only the required parameters of a key's representation are used when
computing its COSE Key Thumbprint value. This section summarizes the
required parameters.</t>
      <t>The "kty" (label: 1) element MUST <bcp14>MUST</bcp14> be present for all key types, and the integer
value specified in the IANA COSE "COSE Key Types Types" registry MUST <bcp14>MUST</bcp14> be used. The tstr data
type is not used with the kty "kty" element.</t>
      <t>Many COSE Key parameters are specific to the chosen key type. The following
subsections list the required parameters for commonly used key types.</t>
      <section anchor="octet-key-pair-okp"><name>Octet anchor="octet-key-pair-okp">
        <name>Octet Key Pair (OKP)</name>
      <t>The required parameters for elliptic curve public keys that use the OKP Octet Key Pair (OKP) key type,
such as X25519, are:</t>

<t><list style="symbols">
        <ul spacing="normal">
          <li>
            <t>"kty" (label: 1, data type: int, value: 1)</t>
          </li>
          <li>
            <t>"crv" (label: -1, value: int)</t>
          </li>
          <li>
            <t>"x" (label: -2, value: bstr)</t>
</list></t>

<t>Details can be found
          </li>
        </ul>
        <t>Further details are described in Section 7.1 of <xref target="RFC9053"/>.</t> target="RFC9053" sectionFormat="of" section="7.1"/>.</t>
      </section>
      <section anchor="ecc"><name>Elliptic anchor="ecc">

        <name>Elliptic Curve Keys with X- and Y-Coordinate Pair</name> Pairs</name>
        <t>The required parameters for elliptic curve public keys that use the EC2 "EC2" (two coordinate elliptic curve) key type, such as NIST P-256, are:</t>

<t><list style="symbols">
        <ul spacing="normal">
          <li>
            <t>"kty" (label: 1, data type: int, value: 2)</t>
          </li>
          <li>
            <t>"crv" (label: -1, data type: int)</t>
          </li>
          <li>
            <t>"x" (label: -2, data type: bstr)</t>
          </li>
          <li>
            <t>"y" (label: -3, data type: bstr)</t>
</list></t>

<t>Details can be found
          </li>
        </ul>
        <t>Further details are described in Section 7.1 of <xref target="RFC9053"/>.</t> target="RFC9053" sectionFormat="of" section="7.1"/>.</t>
        <t>Note: <xref target="RFC9052"/> supports both compressed and uncompressed point
representations. For interoperability, implementations adhering to
this specification MUST <bcp14>MUST</bcp14> use the uncompressed point representation.
Therefore, the y-coordinate is expressed as a bstr. If an
implementation uses the compressed point representation, it
MUST
<bcp14>MUST</bcp14> first convert it to the uncompressed form for the purpose
of thumbprint calculation.</t>
      </section>
      <section anchor="rsa-public-keys"><name>RSA anchor="rsa-public-keys">
        <name>RSA Public Keys</name>
        <t>The required parameters for an RSA public key are:</t>

<t><list style="symbols">
        <ul spacing="normal">
          <li>
            <t>"kty" (label: 1, data type: int, value: 3)</t>
          </li>
          <li>
            <t>"n" (label: -1, data type: bstr)</t>
          </li>
          <li>
            <t>"e" (label: -2, data type: bstr)</t>
</list></t>
          </li>
        </ul>
      </section>
      <section anchor="symmetric-keys"><name>Symmetric anchor="symmetric-keys">
        <name>Symmetric Keys</name>
        <t>The required parameters for a symmetric key are:</t>

<t><list style="symbols">
        <ul spacing="normal">
          <li>
            <t>"kty" (label: 1, data type: int, value: 4)</t>
          </li>
          <li>
            <t>"k" (label: -1, data type: bstr)</t>
</list></t>
          </li>
        </ul>
      </section>

<!--[rfced] Sections 4.2 and 4.5. We updated the titles of these
sections as shown below for clarity and consistency. Please
review and let us know of any objections.

Original:
   4.2.  Elliptic Curve Keys with X- and Y-Coordinate Pair

Current:
   4.2.  Elliptic Curve Keys with X- and Y-Coordinate Pairs

Original:
   4.5.  HSS-LMS

Current:
   4.5.  HSS-LMS Keys
-->

      <section anchor="hss-lms"><name>HSS-LMS</name> anchor="hss-lms">
        <name>HSS-LMS Keys</name>
        <t>The required parameters for HSS-LMS keys are:</t>

<t><list style="symbols">
        <ul spacing="normal">
          <li>
            <t>"kty" (label: 1, data type: int, value: 5)</t>
          </li>
          <li>
            <t>"pub" (label: -1, data type: bstr)</t>
</list></t>
          </li>
        </ul>
      </section>
      <section anchor="others"><name>Others</name> anchor="others">
        <name>Others</name>
        <t>As other key type values are defined, the specifications their defining them specifications
should be similarly consulted to determine which
parameters, in addition to the "kty" element, are required.</t>
      </section>
    </section>
    <section anchor="miscellaneous-considerations"><name>Miscellaneous anchor="miscellaneous-considerations">
      <name>Miscellaneous Considerations</name>
      <section anchor="why-not-include-optional-cose-key-parameters"><name>Why anchor="why-not-include-optional-cose-key-parameters">
        <name>Why Not Include Optional COSE Key Parameters?</name>
        <t>Optional parameters of COSE Keys are intentionally not included in the
COSE Key Thumbprint computation so that their absence or presence
in the COSE Key does not alter the resulting value.

<!--[rfced] Section 5.1. Is the intended meaning that the digest is
comprised of essential parameters rather than of any additional
data that might accompany the key? Please let us know how we may
clarify this text.

Original:
   The COSE Key Thumbprint is a digest of the essential
   parameters required to represent the key as a COSE
   Key, rather than any additional data that might
   accompany the key.

Perhaps:
   The COSE Key Thumbprint is a digest of essential parameters,
   rather than any additional data that might accompany the
   key, that are required to represent the key as a COSE Key.
-->

The COSE Key
Thumbprint is a digest of the essential parameters required to
represent the key as a COSE Key, rather than any additional data
that might accompany the key.</t>
        <t>By excluding optional parameters, the COSE Key Thumbprint consistently
refers to the key itself, not to a key with additional attributes.
Different application contexts may include various optional attributes
in the COSE Key structure. If these optional parameters were included
in the thumbprint calculation, the resulting values could differ for
the same key depending on the attributes present. Including only the
required parameters ensures that the COSE Key Thumbprint remains
consistent for a given key, regardless of any additional attributes.</t>
        <t>Different kinds of thumbprints could be defined by other specifications
that might include some or all additional COSE Key parameters, if use
cases arise where such different kinds of thumbprints would be useful.</t>
      </section>
      <section anchor="selection-of-hash-function"><name>Selection anchor="selection-of-hash-function">
        <name>Selection of Hash Function</name>
        <t>A specific hash function must be chosen by an application to compute
the hash value of the hash input. For instance, SHA-256 <xref target="RFC6234"/>
may be used as the hash function. While SHA-256 is a good default
choice at the time of writing, the preferred hash function may evolve
as the cryptographic landscape develops.</t>
        <t>In many cases, only the party that generates the key needs to be
aware of the hash function used. For example, the key producer might
use the thumbprint value as a "kid" (key ID). In such scenarios, the
consumer of the "kid" treats it as an opaque value solely for key
selection.</t>
        <t>However, when multiple parties are involved in reproducing and
comparing the COSE Key Thumbprint, it is crucial that they know
and use the same hash function to ensure consistent results.</t>
      </section>
      <section anchor="thumbprints-of-keys-not-in-cose-key-format"><name>Thumbprints anchor="thumbprints-of-keys-not-in-cose-key-format">
        <name>Thumbprints of Keys Not in COSE Key Format</name>
        <t>Keys that are in other formats can be represented as COSE Keys.
Any party in possession of a key that is represented as a COSE Key can
use the COSE Key Thumbprint.</t>
      </section>
      <section anchor="relationship-to-digests-of-x509-values"><name>Relationship anchor="relationship-to-digests-of-x509-values">
        <name>Relationship to Digests of X.509 Values</name>

<!--[rfced] Section 5.4. Is the intended meaning that the COSE Key
Thumbprint values are computed on the COSE Key object rather than
on all parameters? Please let us know how we may clarify this
sentence.

Original:
   COSE Key Thumbprint values are computed on the COSE Key
   object required to represent a key, rather than all
   parameters of a COSE Key that the key is represented in.

Perhaps:
   COSE Key Thumbprint values are computed on the COSE Key
   object required to represent a key rather than on all
   parameters of a COSE Key that the key is represented in.
-->

        <t>COSE Key Thumbprint values are computed on the COSE Key object required to
represent a key, rather than all parameters of a COSE Key that the key is
represented in.  Thus, they are more analogous to applications that
use digests of X.509 Subject Public Key Info (SPKI) values, which are
defined in Section 4.1.2.7 of <xref target="RFC5280"/>, target="RFC5280" sectionFormat="of" section="4.1.2.7"/>, than to applications that
use digests of complete certificate values, as the "x5t" (X.509
certificate SHA-1 thumbprint) <xref target="RFC9360"/> value defined for X.509
certificate objects does.  While logically equivalent to a digest of
the SPKI representation of the key, a COSE Key Thumbprint is computed over
the CBOR representation of that key, key rather than over an ASN.1
representation of it.</t>
      </section>
      <section anchor="confirmation-method"><name>Confirmation anchor="confirmation-method">
        <name>Confirmation Method</name>
        <t><xref target="RFC8747"/> introduced introduces confirmation methods for use with CBOR
Web Tokens (CWTs) CWTs with the addition of the "cnf" claim. CWTs have
been are defined in <xref target="RFC8392"/>. This specification adds a new
confirmation method based on COSE Key Thumbprints.</t>
        <t>The proof-of-possession key is identified using the "ckt" claim,
the COSE Key Thumbprint claim. This claim contains the value of
the COSE Key Thumbprint encoded as a binary string. Instead of
communicating the actual COSE Key Key, only the thumbprint is conveyed.
This approach assumes that the recipient is able to obtain the
identified COSE Key using the thumbprint contained in the "ckt"
claim. In this approach, the issuer of a CWT declares that the
presenter possesses a particular key and that the recipient
can cryptographically confirm the presenter's proof of possession
	of the key by including a "ckt" claim in the CWT.</t>

        <t>The following example demonstrates the use of the "ckt" claim
in a CWT as part of the confirmation method (with line-breaks line breaks inserted
	for editorial reasons):</t>

<figure><artwork><![CDATA[

<!--[rfced] Section 5.5. We replaced "TBD" with the value "5" within
the sourcecode per IANA's assignment. Please review and let us
know if the spacing is correct or if any updates are needed.

Current:
   {
       /iss/ 1 : "coaps://as.example.com",
       /aud/ 3 : "coaps://resource.example.org",
       /exp/ 4 : 1361398824,
       /cnf/ 8 : {
         /ckt/ [[TBD1]] 5 : h'496bd8afadf307e5b08c64b0421bf9dc
                     01528a344a43bda88fadd1669da253ec'
        }
      }
]]></artwork></figure>
-->

        <sourcecode type=""><![CDATA[
   {
    /iss/ 1 : "coaps://as.example.com",
    /aud/ 3 : "coaps://resource.example.org",
    /exp/ 4 : 1361398824,
    /cnf/ 8 : {
      /ckt/ 5 : h'496bd8afadf307e5b08c64b0421bf9dc
                  01528a344a43bda88fadd1669da253ec'
     }
   }]]></sourcecode>

        <t><xref target="IANA"/> registers the "ckt" claim and the confirmation method.
The "ckt" claim is expected to be used in the "cnf" claim.</t>
      </section>
      <section anchor="cose-key-thumbprint-uris"><name>COSE anchor="cose-key-thumbprint-uris">
        <name>COSE Key Thumbprint URIs</name>
        <t>This specification defines Uniform Resource Identifiers (URIs)
to represent a COSE Key Thumbprint value. The design follows
the work of the JSON Web Key (JWK) Thumbprint URIs, as specified
in <xref target="RFC9278"/>. This enables COSE Key Thumbprints to be used,
for example, as key identifiers in contexts requiring URIs.
This specification defines a URI prefix indicating that the
portion of the URI following the prefix is a COSE Key Thumbprint.</t>
        <t>The following URI prefix is defined to indicate that the portion
of the URI following the prefix is a COSE Key Thumbprint:</t>

<figure><artwork><![CDATA[
  urn:ietf:params:oauth:ckt
]]></artwork></figure>

<t indent="3">urn:ietf:params:oauth:ckt</t>

        <t>To make the hash algorithm being used explicit in a URI, the prefix
is followed by a hash algorithm identifier and a COSE Key Thumbprint
value, each separated by a colon character to form a URI representing
a COSE Key Thumbprint.</t>
        <t>Hash algorithm identifiers used in COSE Key Thumbprint URIs MUST <bcp14>MUST</bcp14> be values from the "Hash Name String" column in the IANA "Named Information Hash Algorithm Registry" <xref target="IANA.Hash.Algorithms"/>. COSE Key Thumbprint URIs with hash algorithm identifiers not found in this registry are not
considered valid valid, and applications MUST <bcp14>MUST</bcp14> detect and handle this
error, should it occur.</t>
        <t>Since the URN is encoded as a string, the output of the COSE Key
Thumbprint computation described in <xref target="thumbprint"/> MUST <bcp14>MUST</bcp14> be base64url encoded without padding.</t>
        <t><xref target="RFC7515"/> specifies Base64url base64url encoding as follows:</t>

<t>"Base64
<!-- [Quote] -->
        <blockquote>Base64 encoding using the URL- and filename-safe character set
	defined in Section 5 <xref target="RFC4648" section="5"
sectionFormat="bare"></xref> of RFC 4648 <xref target="RFC4648"/>, with all trailing '='
characters omitted (as permitted by <xref target="RFC7515" sectionFormat="of" section="3.2"/>) and without the inclusion of any line breaks,
whitespace, or other additional characters.  Note that the base64url
encoding of the empty octet sequence is the empty string.
(See Appendix C of <xref target="RFC7515"/> target="RFC7515" sectionFormat="of" section="C"/> for notes on implementing base64url
encoding without padding.)"</t> padding.)</blockquote>
<!-- [End of quote] -->
        <t>The base64url encoding of the thumbprint shown in <xref target="example"/> is
shown below (with a line-break line break added for readability purposes).</t>

<figure><artwork><![CDATA[
SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w
]]></artwork></figure>

<t indent="3">SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w</t>

        <t>The full example of a COSE Key Thumbprint URI is shown below, again
with below (with a line-break added.</t>

<figure><artwork><![CDATA[
urn:ietf:params:oauth:ckt:sha-256:
SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w
]]></artwork></figure> line break added for readability).</t>

<t indent="3">urn:ietf:params:oauth:ckt:sha-256:</t>
<t indent="3">SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w</t>

      </section>
    </section>
    <section anchor="example"><name>Example</name> anchor="example">
      <name>Example</name>
      <t>This section demonstrates the COSE Key Thumbprint computation for the
following example COSE Key containing an ECC Elliptic Curve Cryptography (ECC) public key.</t>
      <t>For better readability, the example is first presented in CBOR diagnostic format (with
the long line broken for display purposes only).</t>

<figure><artwork><![CDATA[

      <sourcecode type="cbor"><![CDATA[
  {
    / kty set to EC2 = Elliptic Curve Keys /
    1:2,
    / crv set to P-256 /
    -1:1,
    / public key: x-coordinate /
    -2:h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de439c0
8551d',
    / public key: y-coordinate /
    -3:h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd008
4d19c',
    / kid is bstr, not used in COSE Key Thumbprint /
    2:h'1decade2facade3'
  }
]]></artwork></figure>
  }]]></sourcecode>

      <t>The example above corresponds to the following CBOR encoding
(with link breaks added for display purposes only):</t>

<figure><artwork><![CDATA[

      <sourcecode type="cbor"><![CDATA[
A50102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE108D
E439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0CA7CA7E9
EECD0084D19C0258246D65726961646F632E6272616E64796275636B406275636B6C6
16E642E6578616D706C65
]]></artwork></figure>
16E642E6578616D706C65]]></sourcecode>

      <t>Not all of the parameters from the example above are used in the COSE Key
Thumbprint computation since because the required parameters of an elliptic curve
public key are (as listed in <xref target="ecc"/>) "kty", "crv", "x", and "y".</t>
      <t>The resulting COSE Key structure, in CBOR diagnostic format with
line-breaks
line breaks added for better readability, with the minimum parameters
in the correct order are.</t>

<figure><artwork><![CDATA[ are:</t>

      <sourcecode type="cbor"><![CDATA[
{
   1:2,
  -1:1,
  -2:h'65eda5a12577c2bae829437fe338701a
       10aaa375e1bb5b5de108de439c08551d',
  -3:h'1e52ed75701163f7f9e40ddf9f341b3d
       c9ba860af7e0ca7ca7e9eecd0084d19c'
}
]]></artwork></figure>
}]]></sourcecode>

      <t>In CBOR encoding encoding, the result is (with line-breaks line breaks added for display
purposes only):</t>

<figure><artwork><![CDATA[

      <sourcecode type="cbor"><![CDATA[
A40102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE
108DE439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0
CA7CA7E9EECD0084D19C
]]></artwork></figure>
CA7CA7E9EECD0084D19C]]></sourcecode>

      <t>Using SHA-256, the resulting thumbprint is:</t>

<figure><artwork><![CDATA[
496bd8afadf307e5b08c64b0421bf9dc01528a344a43bda88fadd1669da253ec
]]></artwork></figure>

      <sourcecode type=""><![CDATA[
496bd8afadf307e5b08c64b0421bf9dc01528a344a43bda88fadd1669da253ec]]></sourcecode>

    </section>
    <section anchor="security-considerations"><name>Security anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A COSE Key Thumbprint will only uniquely identify a particular key if a
single unambiguous COSE Key representation for that key is defined and
used when computing the COSE Key Thumbprint.</t>
      <t>A COSE Key Thumbprint will only uniquely identify a particular key if a
single unambiguous COSE Key representation for that key is defined and
used when computing the COSE Key Thumbprint. Key identifiers are not
included in the thumbprint calculation (similarly to other optional
parameters in the COSE_Key structure). If the inclusion
of specific optional parameters in the thumbprint calculation is important
for a particular application, this specification would not be suitable.</t>
      <t>While thumbprint values are useful for identifying legitimate keys,
comparing thumbprint values is not a reliable means of excluding the
use of particular keys (or transformations thereof). The reason is
that
because an attacker may supply a key that is a transformation of a key
in order to have for it appear to be appear as a different key.  For instance, if
a legitimate RSA key uses a modulus value N and an attacker supplies
a key with modulus 3*N, the modified key would still work about 1/3
of the time, but it would appear to be a different key.</t>
      <t>Producing thumbprints of symmetric keys needs to be done with care. Developers
MUST
<bcp14>MUST</bcp14> ensure that the symmetric key has sufficient entropy to prevent
attackers to precompute from precomputing tables of symmetric keys with their corresponding
hash values. This can be prevented if the symmetric key is a randomly
selected key of at least 128 bit a 128-bit length. Thumbprints MUST NOT <bcp14>MUST NOT</bcp14> be used
with passwords or other low-entropy secrets. If a
developer is unable to determine whether all symmetric keys used in an
application have sufficient entropy, then thumbprints of symmetric keys
MUST NOT
<bcp14>MUST NOT</bcp14> be used. In general, using thumbprints of symmetric keys should
only be used in special applications. In most other deployment scenarios scenarios,
it is more appropriate to utilize a different naming scheme for key
identifiers.</t>
    </section>
    <section anchor="IANA"><name>IANA anchor="IANA">
      <name>IANA Considerations</name>

<t>IANA

<!--[rfced] Section 8. Since the term "COSE Key Thumbprint" is requested used
throughout the document, would it be correct to add update "COSE Key
SHA-256 Thumbprint" to "SHA-256 COSE Key Thumbprint" or "COSE Key
Thumbprint SHA-256" for consistency? Please review and let us
know your preference.

Original:
   Confirmation Method Description:  COSE Key SHA-256 Thumbprint

Perhaps A:
   Confirmation Method Description:  SHA-256 COSE Key Thumbprint
-->

      <t>IANA has added the following entry to the IANA "CWT Confirmation
Methods" registry <xref target="IANA-CWT"/> established by <xref target="RFC8747"/>:</t>

<t><list style="symbols">
  <t>Confirmation
      <dl spacing="compact" newline="false">
          <dt>Confirmation Method Name: ckt</t>
  <t>Confirmation Name:</dt><dd>ckt</dd>
          <dt>Confirmation Method Description: COSE Description:</dt><dd>COSE Key SHA-256 Thumbprint</t>
  <t>JWT Thumbprint</dd>
          <dt>JWT Confirmation Method Name: jkt</t>
  <t>Confirmation Key: [[TBD1]]</t>
  <t>Confirmation Name:</dt><dd>jkt</dd>
          <dt>Confirmation Key:</dt><dd>5</dd>
          <dt>Confirmation Value Type(s): binary string</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): [[This document]]</t>
</list></t> Type(s):</dt><dd>binary string</dd>
          <dt>Change Controller:</dt><dd>IETF</dd>
          <dt>Specification Document(s):</dt><dd>RFC 9679</dd>
        </dl>

      <t>Furthermore, IANA is requested to add has added a value to the IANA "OAuth URI" registry <xref target="IANA-OAuth"/>
established with by <xref target="RFC6755"/>:</t>

<t><list style="symbols">
  <t>URN:  urn:ietf:params:oauth:ckt</t>
  <t>Common Name:  COSE
      <dl spacing="compact" newline="false">
          <dt>URN:</dt><dd>urn:ietf:params:oauth:ckt</dd>
          <dt>Common Name:</dt><dd>COSE Key Thumbprint URI</t>
  <t>Change controller:  IETF</t>
  <t>Specification Document:  [[This document]]</t>
</list></t> URI</dd>
          <dt>Change Controller:</dt><dd>IETF</dd>
          <dt>Specification Document(s):</dt><dd>RFC 9679</dd>
      </dl>

    </section>

  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9053.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8747.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6755.xml"/>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7638.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6234.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9360.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9278.xml"/>
        <reference anchor="IANA.Hash.Algorithms" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information Hash Algorithm Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>

  <reference anchor="IANA-CWT" target="https://www.iana.org/assignments/cwt">
          <front>
            <title>CWT Confirmation Methods</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>

  <reference anchor="IANA-OAuth" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth URI</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>

      </references>
    </references>
      <section anchor="acknowledgements"><name>Acknowledgements</name> anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>

      <t>We would like to thank the authors of <xref target="RFC7638"/> for
      their work on the
JSON Web Key (JWK) JWK Thumbprint specification. This
      document applies JWK Thumbprints to COSE Key structures.</t>
      <t>Additionally, we would like to thank Carsten Bormann, Ilari Liusvaara,
Laurence Lundblade, Daisuke Ajitomi, Michael Richardson, Michael <contact fullname="Carsten
      Bormann"/>, <contact fullname="Ilari Liusvaara"/>, <contact
      fullname="Laurence Lundblade"/>, <contact fullname="Daisuke Ajitomi"/>,
      <contact fullname="Michael Richardson"/>, <contact fullname="Michael
      B. Jones,
Mallory Knodel, Joel Jaeggli, Derrell Piper, Patrik Fältström, Warren Kumari,
Deb Cooley and Brendan Moran Jones"/>, <contact fullname="Mallory Knodel"/>, <contact
      fullname="Joel Jaeggli"/>, <contact fullname="Derrell Piper"/>, <contact
      fullname="Patrik Fältström"/>, <contact fullname="Warren Kumari"/>,
      <contact fullname="Deb Cooley"/>, and <contact fullname="Brendan Moran"/>
      for their feedback.</t>
    </section>

  </middle>

  <back>

    <references title='Normative References' anchor="sec-normative-references">

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they
  </back>

<!-- [rfced] Please review each artwork element and let us know if any should
be interpreted marked as sourcecode (or another element) instead.

We updated <artwork> to <sourcecode> in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion Sections 5.5 and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="December" year="2020"/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) 6. Please confirm that
this is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of correct.

In addition, please consider whether the format.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
  <seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity "type" attribute of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may any sourcecode
elements should be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage set and/or has been set correctly.

The current list of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed preferred values for small code size and small message size. There "type" is a need to be able to define basic security services for this data format. This document defines available at
<https://www.rfc-editor.org/rpc/wiki/doku.php?id=sourcecode-types>.
If the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how current list does not contain an applicable type, feel free to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>

<reference anchor="RFC9053">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed
suggest additions for small code size and small message size. There consideration. Note that it is a need to be able also acceptable
to define basic security services for leave the "type" attribute not set.
-->

<!-- [rfced] Please review whether any of the notes in this data format. This document defines a set of algorithms that can
should be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
      <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9053"/>
  <seriesInfo name="DOI" value="10.17487/RFC9053"/>
</reference>

<reference anchor="RFC8747">
  <front>
    <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="L. Seitz" initials="L." surname="Seitz"/>
    <author fullname="G. Selander" initials="G." surname="Selander"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key <aside> element. It is also sometimes described defined as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics "a container for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8747"/>
  <seriesInfo name="DOI" value="10.17487/RFC8747"/>
</reference>

<reference anchor="RFC8392">
  <front>
    <title>CBOR Web Token (CWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="May" year="2018"/>
    <abstract>
      <t>CBOR Web Token (CWT)
content that is a compact means of representing claims semantically less important or tangential to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8392"/>
  <seriesInfo name="DOI" value="10.17487/RFC8392"/>
</reference>

<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents
content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside).
-->

<!-- [rfced] Abbreviations

a) We have added an expansion for use with this specification are described in the separate JSON Web Algorithms (JWA) specification following abbreviation
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review
this and an IANA registry defined by that specification. Related encryption capabilities are described each expansion in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>

<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, carefully to ensure
correctness.

  Elliptic Curve Cryptography (ECC)

b) Section 4.2. We enclosed "EC2" with quote marks and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters included
a brief description in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>

<reference anchor="RFC6755">
  <front>
    <title>An IETF URN Sub-Namespace for OAuth</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>This document establishes an IETF URN Sub-namespace parentheses (per RFC 9053) for use with OAuth-related specifications. This document readers.
If this is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6755"/>
  <seriesInfo name="DOI" value="10.17487/RFC6755"/>
</reference>

    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="RFC7638">
  <front>
    <title>JSON Web Key (JWK) Thumbprint</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. desired, please let us know.

Original:
   The resulting hash value can be used required parameters for identifying or selecting the key represented by the JWK elliptic curve public keys
   that is the subject of the thumbprint.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7638"/>
  <seriesInfo name="DOI" value="10.17487/RFC7638"/>
</reference>

<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>

<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided EC2 key type, such as an introduction. NIST P-256, are:

Current:
   The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>

<reference anchor="RFC9360">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Header Parameters parameters for Carrying and Referencing X.509 Certificates</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="February" year="2023"/>
    <abstract>
      <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to elliptic curve public keys in general. For some algorithms, additional properties are defined
   that carry parameters relating to keys use the "EC2" (two coordinate elliptic curve) key
   type, such as needed. The COSE Key structure is used for transporting keys outside NIST P-256, are:
-->

<!-- [rfced] Please review the "Inclusive Language" portion of COSE messages. This document extends the way that keys can be identified online
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language>
and transported by providing attributes that refer to or contain X.509 certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9360"/>
  <seriesInfo name="DOI" value="10.17487/RFC9360"/>
</reference>

<reference anchor="RFC9278">
  <front>
    <title>JWK Thumbprint URI</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>This specification registers a kind of URI that represents a JSON Web Key (JWK) Thumbprint value. JWK Thumbprints let us know if any changes are defined needed.

Note that our script did not flag any words in RFC 7638. This enables JWK Thumbprints to particular, but this should
still be used, for instance, reviewed as key identifiers in contexts requiring URIs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9278"/>
  <seriesInfo name="DOI" value="10.17487/RFC9278"/>
</reference>

<reference anchor="IANA.Hash.Algorithms" target="https://www.iana.org/assignments/named-information">
  <front>
    <title>Named Information Hash Algorithm Registry</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>

    </references>

  </back>

<!-- ##markdown-source:
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
7bnGeUgAAA== a best practice.
-->

</rfc>