<?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-rfc2629 version 1.5.6 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hoeglund-core-oscore-key-limits-02" category="std" updates="8613" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
  <front>
    <title abbrev="Key Update for OSCORE (KUDOS)">Key Update for OSCORE (KUDOS)</title>
    <seriesInfo name="Internet-Draft" value="draft-hoeglund-core-oscore-key-limits-02"/>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2021" month="October" day="25"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Object Security for Constrained RESTful Environments (OSCORE) uses AEAD algorithms to ensure confidentiality and integrity of exchanged messages. Due to known issues allowing forgery attacks against AEAD algorithms, limits should be followed on the number of times a specific key is used for encryption or decryption. This document defines how two OSCORE peers must follow these limits and what steps they must take to preserve the security of their communications. Therefore, this document updates RFC8613. Furthermore, this document specifies Key Update for OSCORE (KUDOS), a lightweight procedure that two peers can use to update their keying material and establish a new OSCORE Security Context.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default"/> provides end-to-end protection of CoAP <xref target="RFC7252" format="default"/> messages at the application-layer, ensuring message confidentiality and integrity, replay protection, as well as binding of response to request between a sender and a recipient.</t>
      <t>In particular, OSCORE uses AEAD algorithms to provide confidentiality and integrity of messages exchanged between two peers. Due to known issues allowing forgery attacks against AEAD algorithms, limits should be followed on the number of times a specific key is used to perform encryption or decryption <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>.</t>
      <t>Should these limits be exceeded, an adversary may break the security properties of the AEAD algorithm, such as message confidentiality and integrity, e.g. by performing a message forgery attack. The original OSCORE specification <xref target="RFC8613" format="default"/> does not consider such limits.</t>
      <t>This document updates <xref target="RFC8613" format="default"/> as follows.</t>
      <ul spacing="normal">
        <li>It defines when a peer must stop using an OSCORE Security Context shared with another peer, due to the reached key usage limits. When this happens, the two peers have to establish a new Security Context with new keying material, in order to continue their secure communication with OSCORE.</li>
        <li>It specifies KUDOS, a lightweight key update procedure that the two peers can use in order to update their current keying material and establish a new OSCORE Security Context. This deprecates and replaces the procedure specified in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/>.</li>
      </ul>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts related to the CoAP <xref target="RFC7252" format="default"/> and OSCORE <xref target="RFC8613" format="default"/> protocols.</t>
      </section>
    </section>
    <section anchor="aead-key-usage-limits-in-oscore" numbered="true" toc="default">
      <name>AEAD Key Usage Limits in OSCORE</name>
      <t>The following sections details how key usage limits for AEAD algorithms must be considered when using OSCORE. It covers specific limits for common AEAD algorithms used with OSCORE; necessary additions to the OSCORE Security Context, updates to the OSCORE message processing, and existing methods for rekeying OSCORE.</t>
      <section anchor="problem-overview" numbered="true" toc="default">
        <name>Problem Overview</name>
        <t>The OSCORE security protocol <xref target="RFC8613" format="default"/> uses AEAD algorithms to provide integrity and confidentiality of messages, as exchanged between two peers sharing an OSCORE Security Context.</t>
        <t>When processing messages with OSCORE, each peer should follow specific limits as to the number of times it uses a specific key. This applies separately to the Sender Key used to encrypt outgoing messages, and to the Recipient Key used to decrypt and verify incoming protected messages.</t>
        <t>Exceeding these limits may allow an adversary to break the security properties of the AEAD algorithm, such as message confidentiality and integrity, e.g. by performing a message forgery attack.</t>
        <t>The following refers to the two parameters 'q' and 'v' introduced in <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>, to use when deploying an AEAD algorithm.</t>
        <ul spacing="normal">
          <li>'q': this parameter has as value the number of messages protected with a specific key, i.e. the number of times the AEAD algorithm has been invoked to encrypt data with that key.</li>
          <li>'v': this parameter has as value the number of alleged forgery attempts that have been made against a specific key, i.e. the amount of failed decryptions that has been done with the AEAD algorithm for that key.</li>
        </ul>
        <t>When a peer uses OSCORE:</t>
        <ul spacing="normal">
          <li>The key used to protect outgoing messages is its Sender Key, in its Sender Context.</li>
          <li>The key used to decrypt and verify incoming messages is its Recipient Key, in its Recipient Context.</li>
        </ul>
        <t>Both keys are derived as part of the establishment of the OSCORE Security Context, as defined in <xref section="3.2" sectionFormat="of" target="RFC8613" format="default"/>.</t>
        <t>As mentioned above, exceeding specific limits for the 'q' or 'v' value can weaken the security properties of the AEAD algorithm used, thus compromising secure communication requirements.</t>
        <t>Therefore, in order to preserve the security of the used AEAD algorithm, OSCORE has to observe limits for the 'q' and 'v' values, throughout the lifetime of the used AEAD keys.</t>
        <section anchor="limits" numbered="true" toc="default">
          <name>Limits for 'q' and 'v'</name>
          <t>Formulas for calculating the security levels as Integrity Advantage (IA) and Confidentiality Advantage (CA) probabilities, are presented in <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>. These formulas take as input specific values for 'q' and 'v' (see section <xref target="problem-overview" format="default"/>) and for 'l', i.e., the maximum length of each message (in cipher blocks).</t>
          <t>For the algorithms that can be used as AEAD Algorithm for OSCORE shows in <xref target="algorithm-limits" format="default"/>, the key property to achieve is having IA and CA values which are no larger than p = 2^-64, which will ensure a safe security level for the AEAD Algorithm. This can be entailed by using the values q = 2^20, v = 2^20, and l = 2^10, that this document recommends to use for these algorithms.</t>
          <t><xref target="algorithm-limits" format="default"/> shows the resulting IA and CA probabilities enjoyed by the considered algorithms, when taking the value of 'q', 'v' and 'l' above as input to the formulas defined in <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>.</t>
          <figure anchor="algorithm-limits">
            <name>Probabilities for algorithms based on chosen q, v and l values.</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
+------------------------+----------------+----------------+
| Algorithm name         | IA probability | CA probability |
|------------------------+----------------+----------------|
| AEAD_AES_128_CCM       | 2^-64          | 2^-66          |
| AEAD_AES_128_GCM       | 2^-97          | 2^-89          |
| AEAD_AES_256_GCM       | 2^-97          | 2^-89          |
| AEAD_CHACHA20_POLY1305 | 2^-73          | -              |
+------------------------+----------------+----------------+
]]></artwork>
          </figure>
          <t>For the AEAD_AES_128_CCM_8 algorithm when used as AEAD Algorithm for OSCORE, larger IA and CA values are achieved, depending on the value of 'q', 'v' and 'l'. <xref target="algorithm-limits-ccm8" format="default"/> shows the resulting IA and CA probabilities enjoyed by AEAD_AES_128_CCM_8, when taking different values of 'q', 'v' and 'l' as input to the formulas defined in <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>.</t>
          <t>As shown in <xref target="algorithm-limits-ccm8" format="default"/>, it is especially possible to achieve the lowest IA = 2^-54 and a good CA = 2^-70 by considering the largest possible value of the (q, v, l) triplet equal to (2^20, 2^10, 2^8), while still keeping a good security level. Note that the value of 'l' does not impact on IA, while CA displays good values for every considered value of 'l'.</t>
          <t>When AEAD_AES_128_CCM_8 is used as AEAD Algorithm for OSCORE, this document recommends to use the triplet (q, v, l) = (2^20, 2^10, 2^8) and to never use a triplet (q, v, l) such that the resulting IA and CA probabilities are higher than 2^-54.</t>
          <figure anchor="algorithm-limits-ccm8">
            <name>Probabilities for AEAD_AES_128_CCM_8 based on chosen q, v and l values.</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
+-----------------------+----------------+----------------+
| 'q', 'v' and 'l'      | IA probability | CA probability |
|-----------------------+----------------+----------------|
| q=2^20, v=2^20, l=2^8 | 2^-44          | 2^-70          |
| q=2^15, v=2^20, l=2^8 | 2^-44          | 2^-80          |
| q=2^10, v=2^20, l=2^8 | 2^-44          | 2^-90          |
| q=2^20, v=2^15, l=2^8 | 2^-49          | 2^-70          |
| q=2^15, v=2^15, l=2^8 | 2^-49          | 2^-80          |
| q=2^10, v=2^15, l=2^8 | 2^-49          | 2^-90          |
| q=2^20, v=2^14, l=2^8 | 2^-50          | 2^-70          |
| q=2^15, v=2^14, l=2^8 | 2^-50          | 2^-80          |
| q=2^10, v=2^14, l=2^8 | 2^-50          | 2^-90          |
| q=2^20, v=2^10, l=2^8 | 2^-54          | 2^-70          |
| q=2^15, v=2^10, l=2^8 | 2^-54          | 2^-80          |
| q=2^10, v=2^10, l=2^8 | 2^-54          | 2^-90          |
|-----------------------+----------------+----------------|
| q=2^20, v=2^20, l=2^6 | 2^-44          | 2^-74          |
| q=2^15, v=2^20, l=2^6 | 2^-44          | 2^-84          |
| q=2^10, v=2^20, l=2^6 | 2^-44          | 2^-94          |
| q=2^20, v=2^15, l=2^6 | 2^-49          | 2^-74          |
| q=2^15, v=2^15, l=2^6 | 2^-49          | 2^-84          |
| q=2^10, v=2^15, l=2^6 | 2^-49          | 2^-94          |
| q=2^20, v=2^14, l=2^6 | 2^-50          | 2^-74          |
| q=2^15, v=2^14, l=2^6 | 2^-50          | 2^-84          |
| q=2^10, v=2^14, l=2^6 | 2^-50          | 2^-94          |
| q=2^20, v=2^10, l=2^6 | 2^-54          | 2^-74          |
| q=2^15, v=2^10, l=2^6 | 2^-54          | 2^-84          |
| q=2^10, v=2^10, l=2^6 | 2^-54          | 2^-94          |
+-----------------------+----------------+----------------+
]]></artwork>
          </figure>
          <t>The algorithms using AES presented in this draft all use a block size of 16 bytes (128 bits), while AEAD_CHACHA20_POLY1305 uses a block size of 64 bytes (512 bits). As 'l' is defined as the maximum size of each message in blocks, different block sizes will result in different maximum messages sizes for the same value of 'l'. <xref target="l-values-as-bytes" format="default"/> presents the resulting maximum message size in bytes for the different algorithms and values of 'l' presented in this document.</t>
          <figure anchor="l-values-as-bytes">
            <name>Maximum length of each message (in bytes)</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
+------------------------+----------+----------+-----------+
| Algorithm name         | l=2^6 in | l=2^8 in | l=2^10 in |
|                        | bytes    | bytes    | bytes     |
|------------------------+----------+----------|-----------|
| AEAD_AES_128_CCM       | 1024     | 4096     | 16384     |
| AEAD_AES_128_GCM       | 1024     | 4096     | 16384     |
| AEAD_AES_256_GCM       | 1024     | 4096     | 16384     |
| AEAD_AES_128_CCM_8     | 1024     | 4096     | 16384     |
| AEAD_CHACHA20_POLY1305 | 4096     | 16384    | 65536     |
+------------------------+----------+----------+-----------+
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="context" numbered="true" toc="default">
        <name>Additional Information in the Security Context</name>
        <t>In addition to what defined in <xref section="3.1" sectionFormat="of" target="RFC8613" format="default"/>, the OSCORE Security Context MUST also include the following information.</t>
        <section anchor="common-context" numbered="true" toc="default">
          <name>Common Context</name>
          <t>The Common Context is extended to include the following parameter.</t>
          <ul spacing="normal">
            <li>
              <t>'exp': with value the expiration time of the OSCORE Security Context, as a non-negative integer. The parameter contains a numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds, analogous to what specified for NumericDate in <xref section="2" sectionFormat="of" target="RFC7519" format="default"/>.  </t>
              <t>
At the time indicated in this field, a peer MUST stop using this Security Context to process any incoming or outgoing message, and is required to establish a new Security Context to continue OSCORE-protected communications with the other peer.</t>
            </li>
          </ul>
        </section>
        <section anchor="sender-context" numbered="true" toc="default">
          <name>Sender Context</name>
          <t>The Sender Context is extended to include the following parameters.</t>
          <ul spacing="normal">
            <li>'count_q': a non-negative integer counter, keeping track of the current 'q' value for the Sender Key. At any time, 'count_q' has as value the number of messages that have been encrypted using the Sender Key. The value of 'count_q' is set to 0 when establishing the Sender Context.</li>
            <li>
              <t>'limit_q': a non-negative integer, which specifies the highest value that 'count_q' is allowed to reach, before stopping using the Sender Key to process outgoing messages.  </t>
              <t>
The value of 'limit_q' depends on the AEAD algorithm specified in the Common Context, considering the properties of that algorithm. The value of 'limit_q' is determined according to <xref target="limits" format="default"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="recipient-context" numbered="true" toc="default">
          <name>Recipient Context</name>
          <t>The Recipient Context is extended to include the following parameters.</t>
          <ul spacing="normal">
            <li>'count_v': a non-negative integer counter, keeping track of the current 'v' value for the Recipient Key. At any time, 'count_v' has as value the number of failed decryptions occurred on incoming messages using the Recipient Key. The value of 'count_v' is set to 0 when establishing the Recipient Context.</li>
            <li>
              <t>'limit_v': a non-negative integer, which specifies the highest value that 'count_v' is allowed to reach, before stopping using the Recipient Key to process incoming messages.  </t>
              <t>
The value of 'limit_v' depends on the AEAD algorithm specified in the Common Context, considering the properties of that algorithm. The value of 'limit_v' is determined according to <xref target="limits" format="default"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="oscore-messages-processing" numbered="true" toc="default">
        <name>OSCORE Messages Processing</name>
        <t>In order to keep track of the 'q' and 'v' values and ensure that AEAD keys are not used beyond reaching their limits, the processing of OSCORE messages is extended as defined in this section. A limitation that is introduced is that, in order to not exceed the selected value for 'l', the total size of the COSE plaintext, authentication Tag, and possible cipher padding for a message may not exceed the block size for the selected algorithm multiplied with 'l'.</t>
        <t>In particular, the processing of OSCORE messages follows the steps outlined in <xref section="8" sectionFormat="of" target="RFC8613" format="default"/>, with the additions defined below.</t>
        <section anchor="protecting-a-request-or-a-response" numbered="true" toc="default">
          <name>Protecting a Request or a Response</name>
          <t>Before encrypting the COSE object using the Sender Key, the 'count_q' counter MUST be incremented.</t>
          <t>If 'count_q' exceeds the 'limit_q' limit, the message processing MUST be aborted. From then on, the Sender Key MUST NOT be used to encrypt further messages.</t>
        </section>
        <section anchor="verifying-a-request-or-a-response" numbered="true" toc="default">
          <name>Verifying a Request or a Response</name>
          <t>If an incoming message is detected to be a replay (see <xref section="7.4" sectionFormat="of" target="RFC8613" format="default"/>), the 'count_v' counter MUST NOT be incremented.</t>
          <t>If the decryption and verification of the COSE object using the Recipient Key fails, the 'count_v' counter MUST be incremented.</t>
          <t>After 'count_v' has exceeded the 'limit_v' limit, incoming messages MUST NOT be decrypted and verified using the Recipient Key, and their processing MUST be aborted.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-current-methods" numbered="true" toc="default">
      <name>Current methods for Rekeying OSCORE</name>
      <t>Before the limit of 'q' or 'v' defined in <xref target="limits" format="default"/> has been reached for an OSCORE Security Context, the two peers have to establish a new OSCORE Security Context, in order to continue using OSCORE for secure communication.</t>
      <t>In practice, the two peers have to establish new Sender and Recipient Keys, as the keys actually used by the AEAD algorithm. When this happens, both peers reset their 'count_q' and 'count_v' values to 0 (see <xref target="context" format="default"/>).</t>
      <t>Other specifications define a number of ways to accomplish this, as summarized below.</t>
      <ul spacing="normal">
        <li>
          <t>The two peers can run the procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/>. That is, the two peers exchange three or four messages, protected with temporary Security Contexts adding randomness to the ID Context.  </t>
          <t>
As a result, the two peers establish a new OSCORE Security Context with new ID Context, Sender Key and Recipient Key, while keeping the same OSCORE Master Secret and OSCORE Master Salt from the old OSCORE Security Context.  </t>
          <t>
This procedure does not require any additional components to what OSCORE already provides, and it does not provide perfect forward secrecy.  </t>
          <t>
The procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/> is used in 6TiSCH networks <xref target="RFC7554" format="default"/><xref target="RFC8180" format="default"/> when handling failure events. That is, a node acting as Join Registrar/Coordinator (JRC) assists new devices, namely "pledges", to securely join the network as per the Constrained Join Protocol <xref target="RFC9031" format="default"/>. In particular, a pledge exchanges OSCORE-protected messages with the JRC, from which it obtains a short identifier, link-layer keying material and other configuration parameters. As per <xref section="8.3.3" sectionFormat="of" target="RFC9031" format="default"/>, a JRC that experiences a failure event may likely lose information about joined nodes, including their assigned identifiers. Then, the reinitialized JRC can establish a new OSCORE Security Context with each pledge, through the procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/>.</t>
        </li>
        <li>
          <t>The two peers can run the OSCORE profile <xref target="I-D.ietf-ace-oscore-profile" format="default"/> of the Authentication and Authorization for Constrained Environments (ACE) Framework <xref target="I-D.ietf-ace-oauth-authz" format="default"/>.  </t>
          <t>
When a CoAP client uploads an Access Token to a CoAP server as an access credential, the two peers also exchange two nonces. Then, the two peers use the two nonces together with information provided by the ACE Authorization Server that issued the Access Token, in order to derive an OSCORE Security Context.  </t>
          <t>
This procedure does not provide perfect forward secrecy.</t>
        </li>
        <li>
          <t>The two peers can run the EDHOC key exchange protocol based on Diffie-Hellman and defined in <xref target="I-D.ietf-lake-edhoc" format="default"/>, in order to establish a pseudo-random key in a mutually authenticated way.  </t>
          <t>
Then, the two peers can use the established pseudo-random key to derive external application keys. This allows the two peers to securely derive especially an OSCORE Master Secret and an OSCORE Master Salt, from which an OSCORE Security Context can be established.  </t>
          <t>
This procedure additionally provides perfect forward secrecy.</t>
        </li>
        <li>
          <t>If one peer is acting as LwM2M Client and the other peer as LwM2M Server, according to the OMA Lightweight Machine to Machine Core specification <xref target="LwM2M" format="default"/>, then the LwM2M Client peer may take the initiative to bootstrap again with the LwM2M Bootstrap Server, and receive again an OSCORE Security Context. Alternatively, the LwM2M Server can instruct the LwM2M Client to initiate this procedure.  </t>
          <t>
If the OSCORE Security Context information on the LwM2M Bootstrap Server has been updated, the LwM2M Client will thus receive a fresh OSCORE Security Context to use with the LwM2M Server.  </t>
          <t>
In addition to that, the LwM2M Client, the LwM2M Server as well as the LwM2M Bootstrap server are required to use the procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/> and overviewed above, when they use a certain OSCORE Security Context for the first time <xref target="LwM2M-Transport" format="default"/>.</t>
        </li>
      </ul>
      <t>Manually updating the OSCORE Security Context at the two peers should be a last resort option, and it might often be not practical or feasible.</t>
      <t>Even when any of the alternatives mentioned above is available, it is RECOMMENDED that two OSCORE peers update their Security Context by using the KUDOS procedure as defined in <xref target="sec-rekeying-method" format="default"/> of this document.</t>
      <t>It is RECOMMENDED that the peer initiating the key update procedure starts it before reaching the 'q' or 'v' limits. Otherwise, the AEAD keys possibly to be used during the key update procedure itself may already be or become invalid before the rekeying is completed, which may prevent a successful establishment of the new OSCORE Security Context altogether.</t>
    </section>
    <section anchor="sec-rekeying-method" numbered="true" toc="default">
      <name>Key Update for OSCORE (KUDOS)</name>
      <t>This section defines KUDOS, a lightweight procedure that two OSCORE peers can use to update their keying material and establish a new OSCORE Security Context.</t>
      <t>KUDOS relies on the support function updateCtx() defined in <xref target="ssec-update-function" format="default"/> and the message exchange defined in <xref target="ssec-derive-ctx" format="default"/>. The following properties are fulfilled.</t>
      <ul spacing="normal">
        <li>KUDOS can be initiated by either peer. In particular, the client or the server may start KUDOS by sending the first rekeying message.</li>
        <li>The new OSCORE Security Context enjoys Perfect Forward Secrecy.</li>
        <li>The same ID Context value used in the old OSCORE Security Context is preserved in the new Security Context. Furthermore, the ID Context value never changes throughout the KUDOS execution.</li>
        <li>KUDOS is robust against a peer rebooting, and it especially avoids the reuse of AEAD (nonce, key) pairs.</li>
        <li>KUDOS completes in one round trip. The two peers achieve mutual proof-of-possession in the following exchange, which is protected with the newly established OSCORE Security Context.</li>
      </ul>
      <section anchor="ssec-oscore-option-extensions" numbered="true" toc="default">
        <name>Extensions to the OSCORE Option</name>
        <t>In order to support the message exchange for establishing a new OSCORE Security Context as defined in <xref target="ssec-derive-ctx" format="default"/>, this document extends the use of the OSCORE option originally defined in <xref target="RFC8613" format="default"/> as follows.</t>
        <ul spacing="normal">
          <li>
            <t>This document defines the usage of the seventh least significant bit, called "Extension-1 Flag", in the first byte of the OSCORE option containing the OSCORE flag bits. This flag bit is specified in <xref target="iana-cons-flag-bits" format="default"/>.  </t>
            <t>
When the Extension-1 Flag is set to 1, the second byte of the OSCORE option MUST include the set of OSCORE flag bits 8-15.</t>
          </li>
          <li>
            <t>This document defines the usage of the first least significant bit "ID Detail Flag", 'd', in the second byte of the OSCORE option containing the OSCORE flag bits. This flag bit is specified in <xref target="iana-cons-flag-bits" format="default"/>.  </t>
            <t>
When it is set to 1, the compressed COSE object contains an 'id detail', to be used for the steps defined in <xref target="ssec-derive-ctx" format="default"/>. In particular, the 1 byte following 'kid context' (if any) encodes the length x of 'id detail', and the following x bytes encode 'id detail'.</t>
          </li>
          <li>The second-to-eighth least significant bits in the second byte of the OSCORE option containing the OSCORE flag bits are reserved for future use. These bits SHALL be set to zero when not in use. According to this specification, if any of these bits are set to 1, the message is considered to be malformed and decompression fails as specified in item 2 of <xref section="8.2" sectionFormat="of" target="RFC8613" format="default"/>.</li>
        </ul>
        <t><xref target="fig-oscore-option" format="default"/> shows the OSCORE option value including also 'id detail'.</t>
        <figure anchor="fig-oscore-option">
          <name>The OSCORE option value, including 'id detail'</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0 1 2 3 4 5 6 7  8   9   10  11  12  13  14  15 <----- n bytes ----->
+-+-+-+-+-+-+-+-+---+---+---+---+---+---+---+---+---------------------+
|0|1|0|h|k|  n  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | d | Partial IV (if any) |
+-+-+-+-+-+-+-+-+---+---+---+---+---+---+---+---+---------------------+

 <- 1 byte -> <----- s bytes ------> <- 1 byte -> <----- x bytes ---->
+------------+----------------------+---------------------------------+
| s (if any) | kid context (if any) | x (if any) | id detail (if any) |
+------------+----------------------+------------+--------------------+

+------------------+
| kid (if any) ... |
+------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="ssec-update-function" numbered="true" toc="default">
        <name>Function for Security Context Update</name>
        <t>The updateCtx() function shown in <xref target="function-update" format="default"/> takes as input a nonce N as well as an OSCORE Security Context CTX_IN, and returns as output a new OSCORE Security Context CTX_OUT.</t>
        <t>As a first step, the updateCtx() function derives the new values of the Master Secret and Master Salt for CTX_OUT, according to one of the two following methods. The used method depends on how the two peers established their original Security Context, i.e., the Security Context that they shared before performing KUDOS with one another for the first time.</t>
        <ul spacing="normal">
          <li>
            <t>If the original Security Context was established by running the EDHOC protocol <xref target="I-D.ietf-lake-edhoc" format="default"/>, the following applies.  </t>
            <t>
First, the EDHOC key PRK_4x3m shared by the two peers is updated using the EDHOC-KeyUpdate() function defined in <xref section="4.4" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, which takes the nonce N as input.  </t>
            <t>
After that, the EDHOC-Exporter() function defined in <xref section="4.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> is used to derive the new values for the Master Secret and Master Salt, consistently with what is defined in <xref section="A.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>. In particular, the context parameter provided as second argument to the EDHOC-Exporter() function is the empty CBOR byte string (0x40) <xref target="RFC8949" format="default"/>, which is denoted as h''.  </t>
            <t>
Note that, compared to the compliance requirements in <xref section="7" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, a peer MUST support the EDHOC-KeyUpdate() function, in case it establishes an original Security Context through the EDHOC protocol and intends to perform KUDOS.</t>
          </li>
          <li>If the original Security Context was established through other means than the EDHOC protocol, the new Master Secret is derived through an HKDF-Expand() step, which takes as input N as well as the Master Secret value from the Security Context CTX_IN. Instead, the new Master Salt takes N as value.</li>
        </ul>
        <t>In either case, the derivation of new values follows the same approach used in TLS 1.3, which is also based on HKDF-Expand (see <xref section="7.1" sectionFormat="of" target="RFC8446" format="default"/>) and used for computing new keying material in case of key update (see <xref section="4.6.3" sectionFormat="of" target="RFC8446" format="default"/>).</t>
        <t>After that, the new Master Secret and Master Salt parameters are used to derive a new Security Context CTX_OUT as per <xref section="3.2" sectionFormat="of" target="RFC8613" format="default"/>. Any other parameter required for the derivation takes the same value as in the Security Context CTX_IN. Finally, the function returns the newly derived Security Context CTX_OUT.</t>
        <figure anchor="function-update">
          <name>Function for deriving a new OSCORE Security Context</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
updateCtx(N, CTX_IN) {

  CTX_OUT       // The new Security Context
  MSECRET_NEW   // The new Master Secret
  MSALT_NEW     // The new Master Salt

  if <the original Security Context was established through EDHOC> {

    EDHOC-KeyUpdate(N)
    // This results in updating the key PRK_4x3m of the
    // EDHOC session, i.e., PRK_4x3m = Extract(N, PRK_4x3m)

    MSECRET_NEW = EDHOC-Exporter("OSCORE_Master_Secret",
                                 h'', key_length)
      = EDHOC-KDF(PRK_4x3m, TH_4,
                  "OSCORE_Master_Secret", h'', key_length)

    MSALT_NEW = EDHOC-Exporter("OSCORE_Master_Salt",
                               h'', salt_length)
      = EDHOC-KDF(PRK_4x3m, TH_4,
                  "OSCORE_Master_Salt", h'', salt_length)

  }
  else {
    Master Secret Length = < Size of CTX_IN.MasterSecret in bytes >

    MSECRET_NEW = HKDF-Expand-Label(CTX_IN.MasterSecret, Label,
                                    N, Master Secret Length)
                = HKDF-Expand(CTX_IN.MasterSecret, HkdfLabel,
                              Master Secret Length)

    MSALT_NEW = N;
  }

  < Derive CTX_OUT using MSECRET_NEW and MSALT_NEW,
    together with other parameters from CTX_IN >

  Return CTX_OUT;

}

Where HkdfLabel is defined as

struct {
    uint16 length = Length;
    opaque label<7..255> = "oscore " + Label;
    opaque context<0..255> = Context;
} HkdfLabel;
]]></artwork>
        </figure>
      </section>
      <section anchor="ssec-derive-ctx" numbered="true" toc="default">
        <name>Establishment of the New OSCORE Security Context</name>
        <t>This section defines the actual KUDOS procedure performed by two peers to update their OSCORE keying material. Before starting KUDOS, the two peers share the OSCORE Security Context CTX_OLD. Once completed the KUDOS execution, the two peers agree on a newly established OSCORE Security Context CTX_NEW.</t>
        <t>In particular, each peer contributes by generating a fresh value R1 or R2, and providing it to the other peer. The byte string concatenation of the two values, hereafter denoted as R1 | R2, is used as input N by the updateCtx() function, in order to derive the new OSCORE Security Context CTX_NEW. As for any new OSCORE Security Context, the Sender Sequence Number and the replay window are re-initialized accordingly (see <xref section="3.2.2" sectionFormat="of" target="RFC8613" format="default"/>).</t>
        <t>Once a peer has successfully derived the new OSCORE Security Context CTX_NEW, that peer MUST terminate all the ongoing observations it has with the other peer as protected with the old Security Context CTX_OLD.</t>
        <t>Once a peer has successfully decrypted and verified an incoming message protected with CTX_NEW, that peer MUST discard the old Security Context CTX_OLD.</t>
        <t>KUDOS can be started by the client or the server, as defined in <xref target="ssec-derive-ctx-client-init" format="default"/> and <xref target="ssec-derive-ctx-server-init" format="default"/>, respectively. The following properties hold for both the client- and server-initiated version of KUDOS.</t>
        <ul spacing="normal">
          <li>The initiator always offers the fresh value R1.</li>
          <li>The responder always offers the fresh value R2.</li>
          <li>The responder is always the first one deriving the new OSCORE Security Context CTX_NEW.</li>
          <li>The initiator is always the first one achieving key confirmation, hence able to safely discard the old OSCORE Security Context CTX_OLD.</li>
          <li>Both the initiator and the responder use the same respective OSCORE Sender ID and Recipient ID. Also, they both preserve and use the same OSCORE ID Context from CTX_OLD.</li>
        </ul>
        <t>The length of the nonces R1, and R2 is application specific. The application needs to set the length of each nonce such that the probability of its value being repeated is negligible; typically, at least 8 bytes long.</t>
        <section anchor="ssec-derive-ctx-client-init" numbered="true" toc="default">
          <name>Client-Initiated Key Update</name>
          <t><xref target="fig-message-exchange-client-init" format="default"/> shows the KUDOS workflow with the client acting as initiator.</t>
          <figure anchor="fig-message-exchange-client-init">
            <name>Client-Initiated KUDOS Workflow</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
                   Client               Server
                (initiator)          (responder)
                     |                    |
Generate R1          |                    |
                     |                    |
CTX_1 =              |                    |
  updateCtx(R1,      |                    |
            CTX_OLD) |                    |
                     |                    |
                     |     Request #1     |
Protect with CTX_1   |------------------->|
                     | OSCORE Option:     | CTX_1 =
                     |   ...              |   update(R1,
                     |   d flag: 1        |          CTX_OLD)
                     |   ...              |
                     |   ID Detail: R1    | Verify with CTX_1
                     |   ...              |
                     |                    | Generate R2
                     |                    |
                     |                    | CTX_NEW =
                     |                    |   update(R1|R2,
                     |                    |          CTX_OLD)
                     |                    |
                     |     Response #1    |
                     |<-------------------| Protect with CTX_NEW
CTX_NEW =            | OSCORE Option:     |
  updateCtx(R1|R2,   |   ...              |
            CTX_OLD) |   d flag: 1        |
                     |   ...              |
Verify with CTX_NEW  |   ID Detail: R2    |
                     |   ...              |
Discard CTX_OLD      |                    |
                     |                    |

// The actual key update process ends here.
// The two peers can use the new Security Context CTX_NEW.

                     |                    |
                     |     Request #2     |
Protect with CTX_NEW |------------------->|
                     |                    | Verify with CTX_NEW
                     |                    |
                     |                    | Discard CTX_OLD
                     |                    |
                     |     Response #2    |
                     |<-------------------| Protect with CTX_NEW
Verify with CTX_NEW  |                    |
                     |                    |
]]></artwork>
          </figure>
          <t>First, the client generates a random value R1, and uses the nonce N = R1 together with the old Security Context CTX_OLD, in order to derive a temporary Security Context CTX_1. Then, the client sends an OSCORE request to the server, protected with the Security Context CTX_1. In particular, the request has the 'd' flag bit set to 1 and specifies R1 as 'id detail' (see <xref target="ssec-oscore-option-extensions" format="default"/>).</t>
          <t>Upon receiving the OSCORE request, the server retrieves the value R1 from the 'id detail' of the request, and uses the nonce N = R1 together with the old Security Context CTX_OLD, in order to derive the temporary Security Context CTX_1. Then, the server verifies the request by using the Security Context CTX_1.</t>
          <t>After that, the server generates a random value R2, and uses the nonce N = R1 | R2 together with the old Security Context CTX_OLD, in order to derive the new Security Context CTX_NEW. Then, the server sends an OSCORE response to the client, protected with the new Security Context CTX_NEW. In particular, the response has the 'd' flag bit set to 1 and specifies R2 as 'id detail'.</t>
          <t>Upon receiving the OSCORE response, the client retrieves the value R2 from the 'id detail' of the response. Since the client has received a response to an OSCORE request it made with the 'd' flag bit set to 1, the client uses the nonce N = R1 | R2 together with the old Security Context CTX_OLD, in order to derive the new Security Context CTX_NEW. Finally, the client verifies the response by using the Security Context CTX_NEW and deletes the old Security Context CTX_OLD.</t>
          <t>After that, the client can send a new OSCORE request protected with the new Security Context CTX_NEW. When successfully verifying the request using the Security Context CTX_NEW, the server deletes the old Security Context CTX_OLD and can reply with an OSCORE response protected with the new Security Context CTX_NEW.</t>
          <t>From then on, the two peers can protect their message exchanges by using the new Security Context CTX_NEW.</t>
        </section>
        <section anchor="ssec-derive-ctx-server-init" numbered="true" toc="default">
          <name>Server-Initiated Key Update</name>
          <t><xref target="fig-message-exchange-server-init" format="default"/> shows the KUDOS workflow with the server acting as initiator.</t>
          <figure anchor="fig-message-exchange-server-init">
            <name>Server-Initiated KUDOS Workflow</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
                   Client               Server
                (responder)          (initiator)
                     |                    |
                     |     Request #1     |
Protect with CTX_OLD |------------------->|
                     |                    | Verify with CTX_OLD
                     |                    |
                     |                    | Generate R1
                     |                    |
                     |                    | CTX_1 =
                     |                    |   updateCtx(R1,
                     |                    |             CTX_OLD)
                     |                    |
                     |     Response #1    |
                     |<-------------------| Protect with CTX_1
CTX_1 =              | OSCORE Option:     |
  updateCtx(R1,      |   ...              |
            CTX_OLD) |   d flag: 1        |
                     |   ...              |
Verify with CTX_1    |   ID Detail: R1    |
                     |   ...              |
Generate R2          |                    |
                     |                    |
CTX_NEW =            |                    |
  updateCtx(R1|R2,   |                    |
            CTX_OLD) |                    |
                     |                    |
                     |     Request #2     |
Protect with CTX_NEW |------------------->|
                     | OSCORE Option:     | CTX_NEW =
                     |   ...              |   updateCtx(R1|R2,
                     |   d flag: 1        |             CTX_OLD)
                     |   ...              |
                     |   ID Detail: R1|R2 | Verify with CTX_NEW
                     |   ...              |
                     |                    | Discard CTX_OLD
                     |                    |

// The actual key update process ends here.
// The two peers can use the new Security Context CTX_NEW.

                     |     Response #2    |
                     |<-------------------| Protect with CTX_NEW
Verify with CTX_NEW  |                    |
                     |                    |
Discard CTX_OLD      |                    |
                     |                    |

]]></artwork>
          </figure>
          <t>First, the client sends a normal OSCORE request to the server, protected with the old Security Context CTX_OLD and with the 'd' flag bit set to 0.</t>
          <t>Upon receiving the OSCORE request and after having verified it with the old Security Context CTX_OLD as usual, the server generates a random value R1 and uses the nonce N = R1 together with the old Security Context CTX_OLD, in order to derive a temporary Security Context CTX_1. Then, the server sends an OSCORE response to the client, protected with the Security Context CTX_1. In particular, the response has the 'd' flag bit set to 1 and specifies R1 as 'id detail' (see <xref target="ssec-oscore-option-extensions" format="default"/>).</t>
          <t>Upon receiving the OSCORE response, the client retrieves the value R1 from the 'id detail' of the response, and uses the nonce N = R1 together with the old Security Context CTX_OLD, in order to derive the temporary Security Context CTX_1. Then, the client verifies the response by using the Security Context CTX_1.</t>
          <t>After that, the client generates a random value R2, and uses the nonce N = R1 | R2 together with the old Security Context CTX_OLD, in order to derive the new Security Context CTX_NEW. Then, the client sends an OSCORE request to the server, protected with the new Security Context CTX_NEW. In particular, the request has the 'd' flag bit set to 1 and specifies R1 | R2 as 'id detail'.</t>
          <t>Upon receiving the OSCORE request, the server retrieves the value R1 | R2 from the request. Then, the server verifies that: i) the value R1 is identical to the value R1 specified in a previous OSCORE response with the 'd' flag bit set to 1; and ii) the value R1 | R2 has not been received before in an OSCORE request with the 'd' flag bit set to 1. If the verification succeeds, the server uses the nonce N = R1 | R2 together with the old Security Context CTX_OLD, in order to derive the new Security Context CTX_NEW. Finally, the server verifies the request by using the Security Context CTX_NEW and deletes the old Security Context CTX_OLD.</t>
          <t>After that, the server can send an OSCORE response protected with the new Security Context CTX_NEW. When successfully verifying the response using the Security Context CTX_NEW, the client deletes the old Security Context CTX_OLD.</t>
          <t>From then on, the two peers can protect their message exchanges by using the new Security Context CTX_NEW.</t>
        </section>
      </section>
      <section anchor="ssec-retention" numbered="true" toc="default">
        <name>Retention Policies</name>
        <t>Applications MAY define policies that allows a peer to also temporarily keep the old Security Context CTX_OLD, rather than simply overwriting it to become CTX_NEW. This allows the peer to decrypt late, still on-the-fly incoming messages protected with CTX_OLD.</t>
        <t>When enforcing such policies, the following applies.</t>
        <ul spacing="normal">
          <li>Outgoing messages MUST be protected by using only CTX_NEW.</li>
          <li>Incoming messages MUST first be attempted to decrypt by using CTX_NEW. If decryption fails, a second attempt can use CTX_OLD.</li>
          <li>When an amount of time defined by the policy has elapsed since the establishment of CTX_NEW, the peer deletes CTX_OLD.</li>
        </ul>
      </section>
      <section anchor="ssec-discussion" numbered="true" toc="default">
        <name>Discussion</name>
        <t>KUDOS is intended to deprecate and replace the procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/>, as fundamentally achieving the same goal, while displaying a number of improvements and advantages.</t>
        <t>In particular, it is especially convenient for the handling of failure events concerning the JRC node in 6TiSCH networks (see <xref target="sec-current-methods" format="default"/>). That is, among its intrinsic advantages compared to the procedure defined in <xref section="B.2" sectionFormat="of" target="RFC8613" format="default"/>, KUDOS preserves the same ID Context value, when establishing a new OSCORE Security Context.</t>
        <t>Since the JRC uses ID Context values as identifiers of network nodes, namely "pledge identifiers", the above implies that the JRC does not have anymore to perform a mapping between a new, different ID Context value and a certain pledge identifier (see <xref section="8.3.3" sectionFormat="of" target="RFC9031" format="default"/>). It follows that pledge identifiers can remain constant once assigned, and thus ID Context values used as pledge identifiers can be employed in the long-term as originally intended.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>This document mainly covers security considerations about using AEAD keys in OSCORE and their usage limits, in addition to the security considerations of <xref target="RFC8613" format="default"/>.</t>
      <t>Depending on the specific key update procedure used to establish a new OSCORE Security Context, the related security considerations also apply.</t>
      <t>TODO: Add more considerations.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-cons-flag-bits" numbered="true" toc="default">
        <name>OSCORE Flag Bits Registry</name>
        <t>IANA is asked to add the following entries to the "OSCORE Flag Bits" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+----------+------------------+------------------------+-----------+
| Bit      |       Name       |      Description       | Reference |
| Position |                  |                        |           |
+----------+------------------+------------------------+-----------+
|    1     | Extension-1 Flag | Set to 1 if the OSCORE | [This     |
|          |                  | Option specifies a     | Document] |
|          |                  | second byte of OSCORE  |           |
|          |                  | flag bits              |           |
+----------+------------------+------------------------+-----------+
|    15    |  ID Detail Flag  | Set to 1 if the        | [This     |
|          |                  | compressed COSE object | Document] |
|          |                  | contains 'id detail'   |           |
+----------+------------------+------------------------+-----------+
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author initials="Z." surname="Shelby" fullname="Z. Shelby">
              <organization/>
            </author>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="J." surname="Mattsson" fullname="J. Mattsson">
              <organization/>
            </author>
            <author initials="F." surname="Palombini" fullname="F. Palombini">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <date year="2019" month="July"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <date year="2020" month="December"/>
            <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="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-12.txt">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date month="October" day="20" year="2021"/>
            <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
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-12"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7554" target="https://www.rfc-editor.org/info/rfc7554" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7554.xml">
          <front>
            <title>Using IEEE 802.15.4e Time-Slotted Channel Hopping (TSCH) in the Internet of Things (IoT): Problem Statement</title>
            <author initials="T." surname="Watteyne" fullname="T. Watteyne" role="editor">
              <organization/>
            </author>
            <author initials="M." surname="Palattella" fullname="M. Palattella">
              <organization/>
            </author>
            <author initials="L." surname="Grieco" fullname="L. Grieco">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This document describes the environment, problem statement, and goals for using the Time-Slotted Channel Hopping (TSCH) Medium Access Control (MAC) protocol of IEEE 802.14.4e in the context of Low-Power and Lossy Networks (LLNs).  The set of goals enumerated in this document form an initial set only.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7554"/>
          <seriesInfo name="DOI" value="10.17487/RFC7554"/>
        </reference>
        <reference anchor="RFC8180" target="https://www.rfc-editor.org/info/rfc8180" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8180.xml">
          <front>
            <title>Minimal IPv6 over the TSCH Mode of IEEE 802.15.4e (6TiSCH) Configuration</title>
            <author initials="X." surname="Vilajosana" fullname="X. Vilajosana" role="editor">
              <organization/>
            </author>
            <author initials="K." surname="Pister" fullname="K. Pister">
              <organization/>
            </author>
            <author initials="T." surname="Watteyne" fullname="T. Watteyne">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>This document describes a minimal mode of operation for an IPv6 over the TSCH mode of IEEE 802.15.4e (6TiSCH) network.  This minimal mode of operation specifies the baseline set of protocols that need to be supported and the recommended configurations and modes of operation sufficient to enable a 6TiSCH functional network.  6TiSCH provides IPv6 connectivity over a Time-Slotted Channel Hopping (TSCH) mesh composed of IEEE Std 802.15.4 TSCH links.  This minimal mode uses a collection of protocols with the respective configurations, including the IPv6 Low-Power Wireless Personal Area Network (6LoWPAN) framework, enabling interoperable IPv6 connectivity over IEEE Std 802.15.4 TSCH.  This minimal configuration provides the necessary bandwidth for network and security bootstrapping and defines the proper link between the IETF protocols that interface to IEEE Std 802.15.4 TSCH.  This minimal mode of operation should be implemented by all 6TiSCH-compliant devices.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="210"/>
          <seriesInfo name="RFC" value="8180"/>
          <seriesInfo name="DOI" value="10.17487/RFC8180"/>
        </reference>
        <reference anchor="RFC9031" target="https://www.rfc-editor.org/info/rfc9031" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9031.xml">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author initials="M." surname="Vučinić" fullname="M. Vučinić" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Simon" fullname="J. Simon">
              <organization/>
            </author>
            <author initials="K." surname="Pister" fullname="K. Pister">
              <organization/>
            </author>
            <author initials="M." surname="Richardson" fullname="M. Richardson">
              <organization/>
            </author>
            <date year="2021" month="May"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="I-D.ietf-ace-oauth-authz" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml" target="https://www.ietf.org/archive/id/draft-ietf-ace-oauth-authz-45.txt">
          <front>
            <title>Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="Ludwig Seitz">
              <organization>Combitech</organization>
            </author>
            <author fullname="Goeran Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Erik Wahlstroem">
	 </author>
            <author fullname="Samuel Erdtman">
              <organization>Spotify AB</organization>
            </author>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Ltd.</organization>
            </author>
            <date month="August" day="29" year="2021"/>
            <abstract>
              <t>   This specification defines a framework for authentication and
   authorization in Internet of Things (IoT) environments called ACE-
   OAuth.  The framework is based on a set of building blocks including
   OAuth 2.0 and the Constrained Application Protocol (CoAP), thus
   transforming a well-known and widely used authorization solution into
   a form suitable for IoT devices.  Existing specifications are used
   where possible, but extensions are added and profiles are defined to
   better serve the IoT use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oauth-authz-45"/>
        </reference>
        <reference anchor="I-D.ietf-ace-oscore-profile" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oscore-profile.xml" target="https://www.ietf.org/archive/id/draft-ietf-ace-oscore-profile-19.txt">
          <front>
            <title>OSCORE Profile of the Authentication and Authorization for Constrained Environments Framework</title>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Ludwig Seitz">
              <organization>Combitech</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Martin Gunnarsson">
              <organization>RISE</organization>
            </author>
            <date month="May" day="6" year="2021"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  It
   utilizes Object Security for Constrained RESTful Environments
   (OSCORE) to provide communication security and proof-of-possession
   for a key owned by the client and bound to an OAuth 2.0 access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oscore-profile-19"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-aead-limits" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-cfrg-aead-limits.xml" target="https://www.ietf.org/archive/id/draft-irtf-cfrg-aead-limits-03.txt">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date month="July" day="12" year="2021"/>
            <abstract>
              <t>   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-03"/>
        </reference>
        <reference anchor="LwM2M" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Core, Approved Version 1.2, OMA-TS-LightweightM2M_Core-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
        <reference anchor="LwM2M-Transport" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Transport-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Transport Bindings, Approved Version 1.2, OMA-TS-LightweightM2M_Transport-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Christian Amsuess, John Mattsson and Goeran Selander for their feedback and comments.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Z6fzfwHg64PQNKsAAA==

-->

</rfc>
