<?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-00" 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-00"/>
    <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-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 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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
0R+fyXoljv8/VMPkmL42AAA=

-->

</rfc>
