<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lopez-lake-edhoc-psk-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="TODO - Abbreviation">EDHOC PSK authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-lopez-lake-edhoc-psk-02"/>
    <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="2024" month="October" day="18"/>
    <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 CBOR Sequence, 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:  </t>
            <ul spacing="normal">
              <li>
                <t>CIPHERTEXT_3A is bit string 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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
ozYAAA==

-->

</rfc>
