<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-edhoc-psk-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="TODO - Abbreviation">EDHOC PSK authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-psk-01"/>
    <author fullname="Elsa Lopez-Perez">
      <organization>Inria</organization>
      <address>
        <email>elsa.lopez-perez@inria.fr</email>
      </address>
    </author>
    <author fullname="Göran Selander">
      <organization>Ericsson</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author fullname="Rafael Marin-Lopez">
      <organization>University of Murcia</organization>
      <address>
        <email>rafa@um.es</email>
      </address>
    </author>
    <date year="2025" month="January" day="22"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 53?>

<t>This document specifies the Pre-Shared Key (PSK) authentication method for the Ephemeral Diffie-Hellman Over COSE (EDHOC) key exchange protocol. It describes the authentication processes, message flows, and security considerations of this authentication method.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://elsalopez133.github.io/draft-lopez-lake-edhoc-psk/#go.draft-lopez-lake-edhoc-psk.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lake-edhoc-psk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        LAKE Working Group mailing list (<eref target="mailto:lake@ietf.org"/>),
        which is archived at <eref target="https://example.com/WG"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/lake/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ElsaLopez133/draft-lopez-lake-psk"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>Pre-shared key (PSK) authentication method provides a balance between security and computational efficiency.
This authentication method was proposed in the first I-Ds of Ephemeral Diffie-Hellman Over COSE (EDHOC) <xref target="RFC9528"/>, and was ruled out to speed out the development process.
However, there is now a renewed effort to reintroduce PSK authentication, making this draft an update to the <xref target="RFC9528"/>.</t>
        <t>EDHOC with PSK authentication could be beneficial for existing systems where two nodes have been provided with a PSK from other parties out of band.
This allows the nodes to perform ephemeral Diffie-Hellman to achieve Perfect Forward Secrecy (PFS), ensuring that past communications remain secure even if the PSK is compromised.
The authentication provided by EDHOC prevents eavesdropping by on-path attackers, as they would need to be active participants in the communication to intercept and potentially tamper with the session.
Examples could be Generic Bootstrapping Architecture (GBA) and Authenticated Key Management Architecture (AKMA) in mobile systems, or Peer and Authenticator in EAP.</t>
        <t>Another prominent use case of PSK authentication in the EDHOC protocol is session resumption.
This allows previously connected parties to quickly reestablish secure communication using pre-shared keys from their earlier session, reducing the overhead of full key exchange.
This efficiency is beneficial in scenarios where frequent key updates are needed, such in resource-constrained environments or applications requiring high-frequency secure communications.
The use of PSK authentication in EDHOC ensures that session key can be refreshed without heavy computational overhead, typically associated with public key operations, thus optimizing both performance and security.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<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 "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts described in CBOR <xref target="RFC8949"/>, CBOR Sequences <xref target="RFC8742"/>, COSE Structures and Processing <xref target="RFC9052"/>, COSE Algorithms <xref target="RFC9053"/>, CWT and CCS <xref target="RFC8392"/>, and the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, which is used to express CBOR data structures.</t>
    </section>
    <section anchor="protocol">
      <name>Protocol</name>
      <t>In this method, the Pre-Shared Key identifier (ID_CRED_PSK) is sent in message_3. The ID_CRED_PSK allows retrieval of CRED_PSK, a COSE_Key compatible authentication credential that contains the PSK. Through this document we will refer to the Pre-Shared Key authentication method as EDHOC-PSK.</t>
      <section anchor="credentials">
        <name>Credentials</name>
        <t>Initiator and Responder are assumed to have a PSK with good amount of randomness and the requirements that:</t>
        <ul spacing="normal">
          <li>
            <t>Only the Initiator and the Responder have access to the PSK.</t>
          </li>
          <li>
            <t>The Responder is able to retrieve the PSK using ID_CRED_PSK.</t>
          </li>
        </ul>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>ID_CRED_PSK is a COSE header map containing header parameters that can identify a pre-shared key. For example:</t>
          </li>
        </ul>
        <artwork><![CDATA[
ID_CRED_PSK = {4 : h'lf' }
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>CRED_PSK is a COSE_Key compatible authentication credential, i.e., a CBOR Web Token (CWT) or CWT Claims Set (CCS) <xref target="RFC8392"/> whose 'cnf' claim uses the confirmation method 'COSE_Key' encoding the PSK. For example:</t>
          </li>
        </ul>
        <artwork><![CDATA[
{                                               /CCS/
  2 : "mydotbot",                               /sub/
  8 : {                                         /cnf/
    1 : {                                       /COSE_Key/
       1 : 4,                                   /kty/
       2 : h'32',                               /kid/
      -1 : h'50930FF462A77A3540CF546325DEA214'  /k/
    }
  }
}
]]></artwork>
        <t>The purpose of ID_CRED_PSK is to facilitate the retrieval of the PSK.
It is <bcp14>RECOMMENDED</bcp14> that it uniquely identifies the CRED_PSK as the recipient might otherwise have to try several keys.
If ID_CRED_PSK contains a single 'kid' parameter, then the compact encoding is applied; see <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-3.5.3.2">Section 3.5.3.2 of RFC9528</eref>.
The authentication credential CRED_PSK substitutes CRED_I and CRED_R specified in <xref target="RFC9528"/>, and, when applicable, <bcp14>MUST</bcp14> follow the same guidelines described in  <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-3.5.2">Section 3.5.2</eref> and <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-3.5.3">Section 3.5.3 of RFC9528</eref>.</t>
      </section>
      <section anchor="message-flow-of-psk">
        <name>Message flow of PSK</name>
        <t>The ID_CRED_PSK is sent in message_3, encrypted using a key derived from the ephemeral shared secret, G_XY. The Responder authenticates the Initiator first.
<xref target="fig-variant2"/> shows the message flow of PSK authentication method.</t>
        <figure anchor="fig-variant2">
          <name>Overview of message flow of PSK.</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="560" viewBox="0 0 560 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,272" fill="none" stroke="black"/>
                <path d="M 552,48 L 552,272" fill="none" stroke="black"/>
                <path d="M 8,64 L 544,64" fill="none" stroke="black"/>
                <path d="M 16,128 L 552,128" fill="none" stroke="black"/>
                <path d="M 8,192 L 544,192" fill="none" stroke="black"/>
                <path d="M 16,256 L 552,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="552,192 540,186.4 540,197.6" fill="black" transform="rotate(0,544,192)"/>
                <polygon class="arrowhead" points="552,64 540,58.4 540,69.6" fill="black" transform="rotate(0,544,64)"/>
                <polygon class="arrowhead" points="24,256 12,250.4 12,261.6" fill="black" transform="rotate(180,16,256)"/>
                <polygon class="arrowhead" points="24,128 12,122.4 12,133.6" fill="black" transform="rotate(180,16,128)"/>
                <g class="text">
                  <text x="40" y="36">Initiator</text>
                  <text x="520" y="36">Responder</text>
                  <text x="184" y="52">METHOD,</text>
                  <text x="256" y="52">SUITES_I,</text>
                  <text x="316" y="52">G_X,</text>
                  <text x="356" y="52">C_I,</text>
                  <text x="400" y="52">EAD_1</text>
                  <text x="280" y="84">message_1</text>
                  <text x="204" y="116">G_Y,</text>
                  <text x="244" y="116">Enc(</text>
                  <text x="284" y="116">C_R,</text>
                  <text x="328" y="116">EAD_2</text>
                  <text x="360" y="116">)</text>
                  <text x="280" y="148">message_2</text>
                  <text x="180" y="180">Enc(</text>
                  <text x="248" y="180">ID_CRED_PSK</text>
                  <text x="308" y="180">),</text>
                  <text x="344" y="180">AEAD(</text>
                  <text x="392" y="180">EAD_3</text>
                  <text x="424" y="180">)</text>
                  <text x="280" y="212">message_3</text>
                  <text x="248" y="244">AEAD(</text>
                  <text x="296" y="244">EAD_4</text>
                  <text x="328" y="244">)</text>
                  <text x="280" y="276">message_4</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Initiator                                                   Responder
|                  METHOD, SUITES_I, G_X, C_I, EAD_1                |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                      G_Y, Enc( C_R, EAD_2 )                       |
|<------------------------------------------------------------------+
|                             message_2                             |
|                                                                   |
|                   Enc( ID_CRED_PSK ), AEAD( EAD_3 )               |
+------------------------------------------------------------------>|
|                             message_3                             |
|                                                                   |
|                           AEAD( EAD_4 )                           |
|<------------------------------------------------------------------+
|                             message_4                             |
]]></artwork>
          </artset>
        </figure>
        <t>This approach provides protection against passive attackers for both Initiator and Responder.
message_4 remains optional, but is needed to authenticate the Responder and achieve mutual authentication in EDHOC if not relaying on external applications, such as OSCORE. With this fourth message, the protocol achieves both explicit key confirmation and mutual authentication.</t>
      </section>
    </section>
    <section anchor="key-derivation">
      <name>Key derivation</name>
      <t>The pseudorandom keys (PRKs) used for PSK authentication method in EDHOC are derived using EDHOC_Extract, as done in <xref target="RFC9528"/>.</t>
      <artwork><![CDATA[
PRK  = EDHOC_Extract( salt, IKM )
]]></artwork>
      <t>where the salt and input keying material (IKM) are defined for each key.
The definition of EDHOC_Extract depends on the EDHOC hash algorithm selected in the cipher suite.</t>
      <t><xref target="fig-variant2key"/> lists the key derivations that differ from those specified in <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-4.1.2">Section 4.1.2 of RFC9528</eref>.</t>
      <figure anchor="fig-variant2key">
        <name>Key derivation of EDHOC PSK authentication method.</name>
        <artwork align="center"><![CDATA[
PRK_3e2m      = PRK_2e
PRK_4e3m      = EDHOC_Extract( SALT_4e3m, CRED_PSK )
KEYSTREAM_3   = EDHOC_KDF( PRK_3e2m,    TBD, TH_3,  ID_CRED_PSK length )
K_3           = EDHOC_KDF( PRK_4e3m,    TBD, TH_3,  key_length )
IV_3          = EDHOC_KDF( PRK_4e3m,    TBD, TH_3,  iv_length  )
]]></artwork>
      </figure>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>KEYSTREAM_3 is used to encrypt the ID_CRED_PSK in message_3.</t>
        </li>
        <li>
          <t>TH_3 = H( TH_2, PLAINTEXT_2, CRED_PSK )</t>
        </li>
      </ul>
      <t>Additionally, the definition of the transcript hash TH_4 is modified as:</t>
      <ul spacing="normal">
        <li>
          <t>TH_4 = H( TH_3, ID_CRED_PSK, ? EAD_3, CRED_PSK )</t>
        </li>
      </ul>
    </section>
    <section anchor="message-formatting-and-processing">
      <name>Message formatting and processing</name>
      <t>This section specifies the differences on the message formatting compared to <xref target="RFC9528"/>.</t>
      <section anchor="message-1">
        <name>Message 1</name>
        <t>Same as message_1 of EDHOC, described in <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-5.2.1">Section 5.2.1 of RFC9528</eref>.</t>
      </section>
      <section anchor="message-2">
        <name>Message 2</name>
        <t>message_2 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
        <artwork><![CDATA[
message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
)
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>G_Y_CIPHERTEXT_2 is the concatenation of G_Y (i.e., the ephemeral public key of the Responder) and CIPHERTEXT_2.</t>
          </li>
          <li>
            <t>CIPHERTEXT_2 is calculated with a binary additive stream cipher, using KEYSTREAM_2 and the following plaintext:  </t>
            <ul spacing="normal">
              <li>
                <t>PLAINTEXT_2 = ( C_R, / bstr / -24..23, ? EAD_2 )</t>
              </li>
              <li>
                <t>CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Contrary to <xref target="RFC9528"/>, MAC_2 is not used.</t>
      </section>
      <section anchor="message-3">
        <name>Message 3</name>
        <t>message_3 <bcp14>SHALL</bcp14> be a CBOR sequence, as defined below:</t>
        <artwork><![CDATA[
message_3 = (
  CIPHERTEXT_3: << CIPHERTEXT_SEQUENCE >>
)

; This defines an array, the elements of
; which are to be used in a CBOR Sequence:

CIPHERTEXT_SEQUENCE = [CIPHERTEXT_3A, CIPHERTEXT_3B]

CIPHERTEXT_3A = bstr
CIPHERTEXT_3B = bstr
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>CIPHERTEXT_3 is CBOR byte string, with value the binary representation of a CBOR Sequence composed of the following two elements:  </t>
            <ul spacing="normal">
              <li>
                <t>CIPHERTEXT_3A is CBOR byte string, with value calculated by means of a binary additive stream cipher, XORing a KESYSTREAM_3 generated with EDHOC_Expand and the following plaintext:      </t>
                <ul spacing="normal">
                  <li>
                    <t>PLAINTEXT_3A = ( ID_CRED_PSK )</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>CIPHERTEXT_3B is the 'ciphertext' of COSE_Encrypt0 object as defined in <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-5.2">Section 5.2</eref> and <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-5.3">Section 5.3 of RFC9528</eref>, with the EDHOC AEAD algorithm of the selected cipher suite, using the encryption key K_3, the initialization vector IV_3 (if used by the AEAD algorithm), the parameters described in <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-5.2">Section 5.2</eref>, plaintext PLAINTEXT_3B and the following parameters as input:      </t>
                <ul spacing="normal">
                  <li>
                    <t>protected = h''</t>
                  </li>
                  <li>
                    <t>external_aad = &lt;&lt; Enc(ID_CRED_PSK), TH_3 &gt;&gt;</t>
                  </li>
                  <li>
                    <t>K_3 and IV_3 as defined in <xref target="message-2">Section 5.2</xref></t>
                  </li>
                  <li>
                    <t>PLAINTEXT_3B = ( ? EAD_3 )</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>The Initiator computes TH_4 = H( TH_3, ID_CRED_PSK, PLAINTEXT_3B, CRED_PSK ), defined in <xref target="message-2">Section 5.2</xref>.</t>
      </section>
      <section anchor="message-4">
        <name>Message 4</name>
        <t>message_4 is optional and is a CBOR sequence, defined as:</t>
        <artwork><![CDATA[
message_4 = (
  CIPHERTEXT_4 : bstr,
)
]]></artwork>
        <t>To authenticate the Responder and achieve mutual authentication, a fourth message is mandatory.
The Initiator <bcp14>MUST NOT</bcp14> persistently store PRK_out or application keys until the Initiator has verified message_4 or a message protected with a derived application key, such as an OSCORE message, from the Responder and the application has authenticated the Responder.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>When evaluating the security considerations, it is important to differentiate between the initial handshake and session resumption phases.</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Initial Handshake</strong>: a fresh CRED_PSK is used to establish a secure connection.</t>
        </li>
        <li>
          <t><strong>Session Resumption</strong>: the same PSK identifier (ID_CRED_PSK) is reused each time EDHOC is executed.
    While this enhances efficiency and reduces the overhead of key exchanges, it presents privacy risks if not managed properly.
    Over multiple resumption sessions, initiating a full EDHOC session changes the resumption PSK, resulting in a new ID_CRED_PSK.
    The periodic renewal of the CRED_PSK and ID_CRED_PSK helps mitigate long-term privacy risks associated with static key identifiers.</t>
        </li>
      </ol>
      <section anchor="identity-protection">
        <name>Identity protection</name>
        <t>The current EDHOC methods protect the Initiator’s identity against active attackers and the Responder’s identity against passive attackers (See <eref target="https://www.rfc-editor.org/rfc/rfc9528.html#section-9.1">Section 9.1 of RFC9528</eref>).
With EDHOC-PSK authentication method, both the Initiator's and Responder's identities are protected against passive attackers, but not against active attackers.</t>
      </section>
      <section anchor="number-of-messages">
        <name>Number of messages</name>
        <t>The current EDHOC protocol consists of three mandatory messages and an optional fourth message.
In the case of EDHOC-PSK authentication method, message_4 remains optional, but mutual authentication is not guaranteed without it, or an OSCORE message or any application data that confirms that the Responder owns the PSK. Additionally, with this fourth message the protocol achieves explicit key confirmation in addition to mutual authentication.</t>
      </section>
      <section anchor="external-authorization-data">
        <name>External Authorization Data</name>
        <t>The Initiator and Responder can send information in EAD_3 and EAD_4 or in OSCORE messages in parallel with message_3 and message_4.
This is possible because the Initiator knows that only the Responder with access to the CRED_PSK can decrypt the information.</t>
      </section>
      <section anchor="attacks">
        <name>Attacks</name>
        <t>EDHOC-PSK authentication method offers privacy and resistance to passive attacks but might be vulnerable to certain active attacks due to delayed authentication.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
    </section>
    <section anchor="unified-approach-and-recommendations">
      <name>Unified Approach and Recommendations</name>
      <t>For use cases involving the transmission of application data, application data can be sent concurrently with message_3, maintaining the protocol's efficiency.
In applications such as EAP-EDHOC, where application data is not sent, message_4 is mandatory. Thus, EDHOC-PSK authentication method does not include any extra messages.
Other implementations may continue using OSCORE in place of EDHOC message_4, with a required change in the protocol's language to:
      The Initiator <bcp14>SHALL NOT</bcp14> persistently store PRK_out or application keys until the Initiator has verified message_4 or a message protected with a derived application key, such as an OSCORE message.</t>
      <t>This change ensures that key materials are only stored once their integrity and authenticity are confirmed, thereby enhancing privacy by preventing early storage of potentially compromised keys.</t>
      <t>Lastly, whether the Initiator or Responder authenticates first is not relevant when using symmetric keys.
This consideration was important for the privacy properties when using asymmetric authentication but is not significant in the context of symmetric key usage.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9528">
        <front>
          <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
          <author fullname="G. Selander" initials="G." surname="Selander"/>
          <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
          <author fullname="F. Palombini" initials="F." surname="Palombini"/>
          <date month="March" year="2024"/>
          <abstract>
            <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9528"/>
        <seriesInfo name="DOI" value="10.17487/RFC9528"/>
      </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 for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines 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 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 for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can 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="RFC8742">
        <front>
          <title>Concise Binary Object Representation (CBOR) Sequences</title>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="February" year="2020"/>
          <abstract>
            <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
            <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8742"/>
        <seriesInfo name="DOI" value="10.17487/RFC8742"/>
      </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) 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 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="RFC8610">
        <front>
          <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
          <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="C. Vigano" initials="C." surname="Vigano"/>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="June" year="2019"/>
          <abstract>
            <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8610"/>
        <seriesInfo name="DOI" value="10.17487/RFC8610"/>
      </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) is a compact means of representing claims 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="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 should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion 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="RFC8174">
        <front>
          <title>Ambiguity 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 be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage 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>
    </references>
    <?line 323?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Z0o8AAA=

-->

</rfc>
