<?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-lopez-lake-edhoc-psk-03" 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-lopez-lake-edhoc-psk-03"/>
    <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="21"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 49?>

<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-lopez-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 53?>

<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 anchor="assumptions">
        <name>Assumptions</name>
      </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?>

</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 object 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 credential, encoded as a CCS or CWT. 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 Section 3.5.3.2 of <xref target="RFC9528"/>.
The authentication credential CRED_PSK substitutes CRED_I and CRED_R specified in <xref target="RFC9529"/>, and, when applicable, <bcp14>MUST</bcp14> follow the same guidelines described in Sections 3.5.2 and 3.5.3 of <xref target="RFC9528"/>.</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 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 Section 4.1.2 of <xref target="RFC9528"/>.</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,       key_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>
        <li>
          <t>TH_4 = H( TH_3, ID_CRED_PSK, ? EAD_3, CRED_PSK )</t>
        </li>
      </ul>
    </section>
    <section anchor="message-formatting-and-processing-differences-with-respect-to-rfc9528">
      <name>Message formatting and processing. Differences with respect to <xref target="RFC9528"/></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 Section 5.2.1 of <xref target="RFC9528"/>.</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 bit string, as defined below:</t>
        <artwork><![CDATA[
message_3 = (
  CIPHERTEXT_3: bstr,
)
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>CIPHERTEXT_3 is a concatenation of two different ciphertexts, each of it a CBOR Sequence:  </t>
            <ul spacing="normal">
              <li>
                <t>CIPHERTEXT_3A is CBOR Sequence calculated with a binary additive stream cipher, using 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 a COSE_Encrypt0 object as defined in Sections 5.2 and 5.3 of <xref target="RFC9052"/>, 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 Section 5.2 of <xref target="RFC9528"/>, 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 Section 5.2</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_3, CRED_PSK ), defined in Section 5.2.</t>
      </section>
      <section anchor="message-4">
        <name>Message 4</name>
        <t>message_4 is mandatory and is a CBOR sequence, defined as:</t>
        <artwork><![CDATA[
message_4 = (
  CIPHERTEXT_4 : bstr,
)
]]></artwork>
        <t>A fourth message is mandatory for Responder's authentication.
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 Section 9.1 of <xref target="RFC9528"/>).
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 doe snot 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="RFC9529">
        <front>
          <title>Traces of 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="M. Serafin" initials="M." surname="Serafin"/>
          <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
          <author fullname="M. Vučinić" initials="M." surname="Vučinić"/>
          <date month="March" year="2024"/>
          <abstract>
            <t>This document contains example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9529"/>
        <seriesInfo name="DOI" value="10.17487/RFC9529"/>
      </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="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 309?>

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

-->

</rfc>
