<?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-ietf-core-oscore-key-update-01" 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-ietf-core-oscore-key-update-01"/>
    <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="2022" month="March" day="07"/>
    <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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/core-wg/oscore-key-update"/>.</t>
    </note>
  </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>When AEAD_AES_128_CCM_8 is used as AEAD Algorithm for OSCORE, the triplet (q, v, l) considered above yields larger values of IA and CA. Hence, specifically for AEAD_AES_128_CCM_8, this document recommends using the triplet (q, v, l) = (2^20, 2^14, 2^8). This is appropriate since the resulting CA and IA values are not greater than the threshold value of 2^-50 defined in <xref target="I-D.irtf-cfrg-aead-limits" format="default"/>, and thus yields an acceptable security level. Achieving smaller values of CA and IA would require to inconveniently reduce 'q', 'v' or 'l', with no corresponding increase in terms of security. This is further elaborated in <xref target="aead-aes-128-ccm-8-details" format="default"/>.</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>
          <t>Note for implementation: it is possible to avoid storing and maintaining the counter 'count_q'. Rather, an estimated value to be compared against 'limit_q' can be computed, by leveraging the Sender Sequence Number of the peer and (an estimate of) the other peer's. A possible method to achieve this is described in <xref target="estimation-count-q" format="default"/>. While this relieves peers from storing and maintaining the precise 'count_q' value, it results in overestimating the number of encryptions performed with a Sender Key. This in turn results in approaching 'limit_q' sooner and performing a key update procedure more frequently.</t>
        </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-req-resp" 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 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 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 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 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>
            <t>
Hereafter, this document refers to a message where the 'd' flag is set to 0 as "non KUDOS (request/response) message", and to a message where the 'd' flag is set to 1 as "KUDOS (request/response) message".</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 use CTX_NEW to protect outgoing non KUDOS messages.</t>
        <t>Also, that peer MUST terminate all the ongoing observations <xref target="RFC7641" format="default"/> that it has with the other peer as protected with the old Security Context CTX_OLD, unless the two peers have explicitly agreed otherwise as defined in <xref target="preserving-observe" format="default"/>.</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. To this end, each nonce is typically at least 8 bytes long.</t>
        <t>Once a peer acting as initiator (responder) has sent (received) the first KUDOS message, that peer MUST NOT send a non KUDOS message to the other peer, until having completed the key update process on its side. The initiator completes the key update process when receiving the second KUDOS message and successfully verifying it with the new OSCORE Security Context CTX_NEW. The responder completes the key update process when sending the second KUDOS message, as protected with the new OSCORE Security Context CTX_NEW.</t>
        <!--
TEXT OBSOLETED BY SAFER HANDLING IN LATER SECTIONS

A client must be ready to receive a non KUDOS response protected with keying material different than that used to protect the corresponding non KUDOS request. This is the case if KUDOS is run between the transmission of a non KUDOS request and the transmission of the corresponding non KUDOS response.
-->

<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 =
                     |   ...              |   updateCtx(R1,
                     |   d flag: 1        |             CTX_OLD)
                     |   ...              |
                     |   ID Detail: R1    | Verify with CTX_1
                     |   ...              |
                     |                    | Generate R2
                     |                    |
                     |                    | CTX_NEW =
                     |                    |   updateCtx(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>
          <t>Note that the server achieves key confirmation only when receiving a message from the client as protected with the new Security Context CTX_NEW. If the server sends a non KUDOS request to the client protected with CTX_NEW before then, and the server receives a 4.01 (Unauthorized) error response as reply, the server SHOULD delete the new Security Context CTX_NEW and start a new client-initiated key update process, by taking the role of initiator as per <xref target="fig-message-exchange-client-init" format="default"/>.</t>
          <t>Also note that, if both peers reboot simultaneously, they will run the client-initiated version of KUDOS defined in this section. That is, one of the two peers implementing a CoAP client will send KUDOS Request #1 in <xref target="fig-message-exchange-client-init" format="default"/>.</t>
          <section anchor="avoiding-in-transit-requests-during-a-key-update" numbered="true" toc="default">
            <name>Avoiding In-Transit Requests During a Key Update</name>
            <t>Before sending the KUDOS message Request #1 in <xref target="fig-message-exchange-client-init" format="default"/>, the client MUST ensure that it has no ouststanding interactions with the server (see <xref section="4.7" sectionFormat="of" target="RFC7252" format="default"/>), with the exception of ongoing observations <xref target="RFC7641" format="default"/> with that server.</t>
            <t>If there are any, the client MUST NOT initiate the KUDOS execution, before either: i) having all those outstanding interactions cleared; or ii) freeing up the Token values used with those outstanding interactions, with the exception of ongoing observations with the server.</t>
            <t>Later on, this prevents a non KUDOS response protected with the new Security Context CTX_NEW to cryptographically match with both the corresponding request also protected with CTX_NEW and with an older request protected with CTX_OLD, in case the two requests were protected using the same OSCORE Partial IV.</t>
            <!--
TEXT OBSOLETED BY SAFER HANDLING ABOVE

As mentioned in {{ssec-derive-ctx}}, a client must be ready to receive a non KUDOS response protected with keying material different than that used to protect the corresponding non KUDOS request. When running the client-initiated version of KUDOS as per {{fig-message-exchange-client-init}}, this can happen if the client uses NSTART > 1 (see {{Section 4.7 of RFC7252}}), and the client has outstanding interactions with the server (see {{Section 4.7 of RFC7252}}) when sending the first KUDOS message.

\[NOTE: Another case would be where the client has an observation already ongoing at the server when KUDOS starts. However, this assumes that it is possible to safely preserve observations across a key update, which is not the case at the moment although under consideration.\]
-->

</section>
        </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>
          <t>Note that the client achieves key confirmation only when receiving a message from the server as protected with the new Security Context CTX_NEW. If the client sends a non KUDOS request to the server protected with CTX_NEW before then, and the client receives a 4.01 (Unauthorized) error response as reply, the client SHOULD delete the new Security Context CTX_NEW and start a new client-initiated key update process, by taking the role of initiator as per <xref target="fig-message-exchange-client-init" format="default"/> in <xref target="ssec-derive-ctx-client-init" format="default"/>.</t>
          <section anchor="avoiding-in-transit-requests-during-a-key-update-1" numbered="true" toc="default">
            <name>Avoiding In-Transit Requests During a Key Update</name>
            <t>Before sending the KUDOS message Request #2 in <xref target="fig-message-exchange-server-init" format="default"/>, the client MUST ensure that it has no ouststanding interactions with the server (see <xref section="4.7" sectionFormat="of" target="RFC7252" format="default"/>), with the exception of ongoing observations <xref target="RFC7641" format="default"/> with that server.</t>
            <t>If there are any, the client MUST NOT initiate the KUDOS execution, before either: i) having all those outstanding interactions cleared; or ii) freeing up the Token values used with those outstanding interactions, with the exception of ongoing observations with the server.</t>
            <t>Later on, this prevents a non KUDOS response protected with the new Security Context CTX_NEW to cryptographically match with both the corresponding request also protected with CTX_NEW and with an older request protected with CTX_OLD, in case the two requests were protected using the same OSCORE Partial IV.</t>
            <!--
TEXT OBSOLETED BY THE SAFER HANDLING ABOVE

As mentioned in {{ssec-derive-ctx}}, a client must be ready to receive a non KUDOS response protected with keying material different than that used to protect the corresponding non KUDOS request. When running the server-initiated version of KUDOS as per {{fig-message-exchange-server-init}}, this can happen if the client uses NSTART > 1 (see {{Section 4.7 of RFC7252}}), and one of the non KUDOS requests results in the server initiating KUDOS (i.e., yielding the first KUDOS message as response). In such a case, the other non KUDOS requests representing oustanding interactions with the server (see {{Section 4.7 of RFC7252}}) would be replied to later on, once the server has finished executing KUDOS (i.e., when the server receives the second KUDOS message, successfully verifies it, and derives the new OSCORE Security Context CTX\_NEW).
-->

</section>
          <section anchor="preventing-deadlock-situations" numbered="true" toc="default">
            <name>Preventing Deadlock Situations</name>
            <t>When the server-initiated version of KUDOS is used, the two peers risk to run into a deadlock, if all the following conditions hold.</t>
            <ul spacing="normal">
              <li>The client is a client-only device, i.e., it is not capable to act as CoAP server and thus does not listen for incoming requests.</li>
              <li>The server needs to execute KUDOS, which, due to the previous point, can only be performed in its server-initiated version as per <xref target="fig-message-exchange-server-init" format="default"/>. That is, the server has to wait for an incoming non KUDOS request, in order to initiate KUDOS by replying with the first KUDOS message as a response.</li>
              <li>The client sends only Non-confirmable CoAP requests to the server and does not expect responses sent back as reply, hence freeing up a request's Token value once the request is sent.</li>
            </ul>
            <t>In such a case, in order to avoid experiencing a deadlock situation where the server needs to execute KUDOS but cannot practically initiate it, a client-only device that supports KUDOS SHOULD intersperse Non-confirmable requests it sends to that server with confirmable requests.</t>
          </section>
        </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 non KUDOS messages MUST be protected by using only CTX_NEW.</li>
          <li>Incoming non KUDOS 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>RFC Editor: Please replace "[this document]" with the RFC number of this document and delete this paragraph.</t>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-coap-options" numbered="true" toc="default">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to enter the following option number to the "CoAP Option Numbers" registry within the "CoRE Parameters" registry group.</t>
        <artwork align="center" name="" type="" alt=""><![CDATA[
+--------+--------------+-----------------+
| Number |     Name     |    Reference    |
+--------+--------------+-----------------+
|  TBD   | Recipient-ID | [this document] |
+--------+--------------+-----------------+
]]></artwork>
        <t>The number suggested to IANA for the Recipient-ID option is 24.</t>
      </section>
      <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" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
          <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="RFC7641" target="https://www.rfc-editor.org/info/rfc7641" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7641.xml">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks.  The state of a resource on a CoAP server can change over time.  This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time.  The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <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" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <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-46.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="November" day="8" 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-46"/>
        </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 anchor="aead-aes-128-ccm-8-details" numbered="true" toc="default">
      <name>Detailed considerations for AEAD_AES_128_CCM_8</name>
      <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^-50 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>
      <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>
    </section>
    <section anchor="estimation-count-q" numbered="true" toc="default">
      <name>Estimation of 'count_q'</name>
      <t>This section defines a method to compute an estimate of the counter 'count_q' (see <xref target="sender-context" format="default"/>), hence not requiring a peer to store it in its own Sender Context.</t>
      <t>This method relies on the fact that, at any point in time, a peer has performed <em>at most</em> ENC = (SSN + SSN*) encryptions using its own Sender Key, where:</t>
      <ul spacing="normal">
        <li>SSN is the current value of this peer's Sender Sequence Number.</li>
        <li>SSN* is the current value of other peer's Sender Sequence Number. That is, SSN* is an overestimation of the responses without Partial IV that this peer has sent.</li>
      </ul>
      <t>Thus, when protecting an outgoing message (see <xref target="protecting-req-resp" format="default"/>), the peer aborts the message processing if the estimated est_q &gt; limit_q, where est_q = (SSN + X) and X is determined as follows.</t>
      <ul spacing="normal">
        <li>If the outgoing message is a response, X is the Partial IV specified in the corresponding request that this peer is responding to. Note that X &lt; SSN* always holds.</li>
        <li>If the outgoing message is a request, X is the highest Partial IV value marked as received in this peer's Replay Window plus 1, or 0 if it has not accepted any protected message from the other peer yet. That is, X is the highest Partial IV specified in message received from the other peer, i.e., the highest seen Sender Sequence Number of the other peer. Note that, also in this case, X &lt; SSN* always holds.</li>
      </ul>
    </section>
    <section anchor="preserving-observe" numbered="true" toc="default">
      <name>Preserving Observations across Key Updates</name>
      <t>As defined in <xref target="ssec-derive-ctx" format="default"/>, once a peer has completed the KUDOS execution and successfully derived the new OSCORE Security Context CTX_NEW, that peer normally terminates all the ongoing observations it has with the other peer <xref target="RFC7641" format="default"/>, as protected with the old Security Context CTX_OLD.</t>
      <t>This section describes a method that the two peers can use to safely preserve the ongoing observations that they have with one another, after having completed a KUDOS execution. In particular, this method ensures that an Observe notification can never successfully cryptographically match against the Observe requests of two different observations, i.e., an Observe request protected with CTX_OLD and an Observe request protected with CTX_NEW.</t>
      <t>The actual preservation of ongoing observations has to be agreed by the two peers at each execution of KUDOS that they run with one another, as defined in <xref target="preserving-observe-signaling" format="default"/>. If, at the end of a KUDOS execution, the two peers have not agreed on that, they MUST terminate the ongoing observations that they have with one another, as defined in <xref target="ssec-derive-ctx" format="default"/>.</t>
      <t>If a peer supporting KUDOS is generally interested in preserving ongoing observations across a key update, the peer maintains a counter EPOCH for each ongoing observation it participates in. At any point in time, (EPOCH + 1) is the number of KUDOS executions performed by the peer since the sucessful registration of the associated observation. That is, EPOCH indicates the lifetime of an observation measured in keying material epochs, and is bounded by the configuration parameter MAX_EPOCH.</t>
      <t>[ NOTE:</t>
      <t>MAX_EPOCH really has to be the same for any two peers. As a start, it can be assumed that a TBD default value applies, unless a different one is provided. It is possible to enable an actual negotiation between two peers running KUDOS, see <xref target="preserving-observe-signaling" format="default"/>.</t>
      <t>]</t>
      <t>The following sections specify the different actions taken by the peer depending on whether it acts as client or server in an ongoing observation, as well as the signaling method used in KUDOS to agree on preserving the ongoing observations beyond the current KUDOS execution.</t>
      <t>[ NOTE:</t>
      <t>This method may be of more general applicability, i.e, also in case an update of the OSCORE keying material is performed through a different means than KUDOS.</t>
      <t>]</t>
      <section anchor="management-of-observations" numbered="true" toc="default">
        <name>Management of Observations</name>
        <t>As per <xref section="3.1" sectionFormat="of" target="RFC7641" format="default"/>, a client can register its interest in observing a resource at a server, by sending a registration request including the Observe option with value 0.</t>
        <t>If the server sends back a successful response also including the Observe option, hence confirming that the observation has been registered, then the server initializes to 0 the counter EPOCH associated with the just confirmed observation.</t>
        <t>If the client receives back the successful response from the server, then the client initializes to 0 the counter EPOCH associated with the just confirmed observation.</t>
        <t>If, later on, the client is not interested in the observation anymore, it MUST NOT simply forget about it. Rather, the client MUST send an explicit cancellation request to the server, i.e., a request including the Observe option with value 1 (see <xref section="3.6" sectionFormat="of" target="RFC7641" format="default"/>). After sending this cancellation request, if the client does not receive back a response confirming that the observation has been terminated, the client MUST NOT consider the observation terminated. The client MAY try again to terminate the observation by sending a new cancellation request.</t>
        <t>In case a peer A performs a KUDOS execution with another peer B, and A has ongoing observations with B that it is interested to preserve across the key update, then A explicitly indicates it by using the signaling approach embedded in KUDOS and defined in <xref target="preserving-observe-signaling" format="default"/>.</t>
        <t>After having successfully completed the KUDOS execution (i.e., after having successfully derived the new OSCORE Security Context CTX_NEW), if the other peer B has confirmed its interest in preserving those ongoing observations also by using the signaling approach defined in <xref target="preserving-observe-signaling" format="default"/>, then the peer A performs the following actions.</t>
        <ol spacing="normal" type="1"><li>
            <t>For each ongoing observation X that A has with B and for which following notifications are going to be protected with CTX_NEW:  </t>
            <t>
a. The peer A increments the counter EPOCH associated with X.  </t>
            <t>
b. If the updated value of EPOCH associated with X has reached MAX_EPOCH, then the peer A MUST terminate the observation.</t>
          </li>
          <li>
            <t>For each still ongoing observation X that A has with B after the previous step, such that A acts as client in X and for which following notifications are going to be protected with CTX_NEW:  </t>
            <t>
a. The peer A MUST attempt again to cancel X, if A previously tried to do that but had not received a response from the other peer B as confirmation. As specified above, such an observation cancellation MUST be performed by sending a cancellation request.  </t>
            <t>
b. The peer A considers all the OSCORE Partial IV values used in the Observe registration request associated with any of the still ongoing observations with the other peer B. Then, the peer A determines the value PIV* as the highest OSCORE Partial IV among those considered at the previous step.  </t>
            <t>
c. In the Sender Context within CTX_NEW, the peer A sets its own Sender Sequence Number to (PIV* + 1), rather than to 0.</t>
          </li>
        </ol>
      </section>
      <section anchor="preserving-observe-signaling" numbered="true" toc="default">
        <name>Signaling to Preserve Observations</name>
        <t>When performing KUDOS, a peer can indicate to the other peer its interest in  preserving the ongoing observations that they have with one another and are bound to the OSCORE Security Context to renew. To this end, the extended OSCORE option shown in <xref target="fig-oscore-option" format="default"/> and included in a KUDOS message is further extended as follows.</t>
        <t>[ NOTE:</t>
        <t>This is an early proposal with many details to be refined.</t>
        <t>]</t>
        <t>An additional bit "Preserve Observations", 'b', is set to 1 by the sender peer to indicate that it wishes to preserve ongoing observations with the other peer.</t>
        <t>While 'b' can be a bit in the second byte of the OSCORE option containing the OSCORE flag bits, 'b' can rather be one bit in the 1 byte 'x' following 'kid context' (if any) and originally encoding the size of 'id detail'. Since, the recommended size of 'id detail' is 8 bytes, the number of bits left available in the 'x' byte is amply sufficient to still indicate the size of 'id detail'.</t>
        <t>It is fundamental to integrity-protect the value of the bit 'b' set in the two KUDOS messages. This can be achieved by taking also the whole byte 'x' including the bit 'b' as input in the derivation of the new OSCORE Security Context CTX_NEW.</t>
        <t>That is, the updateCtx() function defined in <xref target="function-update" format="default"/> would be invoked as follows:</t>
        <ul spacing="normal">
          <li>CTX_1 = updateCtx(X1|R1, CTX_OLD), when deriving CTX_1 for processing the first KUDOS message in the KUDOS execution.</li>
          <li>CTX_NEW = updateCtx(X1|X2|R1|R2, CTX_OLD), when deriving CTX_NEW for processing the second KUDOS message in the KUDOS execution.</li>
        </ul>
        <t>where X1 and X2 are the values of the 'x' byte specified in the OSCORE option of the first and second KUDOS message in the KUDOS execution, respectively.</t>
        <t>[ NOTE:</t>
        <t>The single bit 'b' can actually be replaced by three bits 'b1', 'b2' and 'b3' still within the byte 'x'. These can be used by the two peers performing KUDOS to negotiate the value of MAX_EPOCH (see <xref target="preserving-observe" format="default"/>. Then, the two peers agree to use as MAX_EPOCH the smallest of the two values exchanged during the execution of KUDOS.</t>
        <t>The final encoding of the 'x' byte specified in <xref target="ssec-oscore-option-extensions" format="default"/> will be affected. In particular, a smarter encoding would be convenient for the bits left to use to indicate the size in bytes of 'id detail'.</t>
        <t>]</t>
      </section>
    </section>
    <section anchor="update-oscore-ids" numbered="true" toc="default">
      <name>Update of OSCORE Sender/Recipient IDs</name>
      <t>This section defines an optional procedure that two peers can execute to update the OSCORE Sender/Recipient IDs that they use in their shared OSCORE Security Context.</t>
      <t>This procedure can be initiated by either peer. In particular, the client or the server may start it by sending the first OSCORE ID update message. When sending an OSCORE ID update message, a peer provides its new intended OSCORE Recipient ID to the other peer.</t>
      <t>Furthermore, this procedure can be executed stand-alone, or rather seamlessly integrated in an execution of KUDOS (see <xref target="sec-rekeying-method" format="default"/>).</t>
      <ul spacing="normal">
        <li>
          <t>In the former stand-alone case, updating the OSCORE Sender/Recipient IDs effectively results in updating part of the current OSCORE Security Context.  </t>
          <t>
That is, a new Sender Key, Recipient Key and Common IV are derived as defined in <xref section="3.2" sectionFormat="of" target="RFC8613" format="default"/>. Also, the Sender Sequence Number and the replay window are re-initialized accordingly, as defined in <xref section="3.2.2" sectionFormat="of" target="RFC8613" format="default"/>. Since the same Master Secret is preserved, forward secrecy is not achieved.  </t>
          <t>
Finally, as defined in <xref target="id-update-additional-actions" format="default"/>, the two peers must take additional actions to ensure a safe execution of the OSCORE IDs update procedure.</t>
        </li>
        <li>In the latter integrated case, the KUDOS initiator (responder) also acts as initiator (responder) for the ID update procedure.</li>
      </ul>
      <t>[TODO: think about the possibility of safely preserving ongoing observations following an update of OSCORE IDs alone.]</t>
      <section anchor="sec-recipient-id-option" numbered="true" toc="default">
        <name>The Recipient-ID Option</name>
        <t>The Recipient ID Option defined in this section has the properties summarized in <xref target="fig-recipient-id-option" format="default"/>, which extends Table 4 of <xref target="RFC7252" format="default"/>. That is, the option is elective, safe to forward, part of the cache key and non repeatable.</t>
        <figure anchor="fig-recipient-id-option">
          <name>The Recipient-ID Option.</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
+------+---+---+---+---+--------------+--------+--------+---------+
| No.  | C | U | N | R | Name         | Format | Length | Default |
+------+---+---+---+---+--------------+--------+--------+---------+
|      |   |   |   |   |              |        |        |         |
| TBD1 |   |   |   |   | Recipient-ID | opaque |  0-7   | (none)  |
|      |   |   |   |   |              |        |        |         |
+------+---+---+---+---+--------------+--------+--------+---------+
         C=Critical, U=Unsafe, N=NoCacheKey, R=Repeatable
]]></artwork>
        </figure>
        <t>This document particularly defines how this option is used in messages protected with OSCORE. That is, when the option is included in an outgoing message, the option value specifies the new OSCORE Recipient ID that the sender endpoint intends to use with the other endpoint sharing the OSCORE Security Context.</t>
        <t>The Recipient-ID Option is of class E in terms of OSCORE processing (see <xref section="4.1" sectionFormat="of" target="RFC8613" format="default"/>).</t>
        <section anchor="example-client-initiated-id-update" numbered="true" toc="default">
          <name>Client-Initiated OSCORE IDs Update</name>
          <t><xref target="fig-id-update-client-init" format="default"/> shows the stand-alone OSCORE IDs update workflow, with the client acting as initiator.</t>
          <t>On each peer, SID and RID denote the OSCORE Sender ID and Recipient ID of that peer, respectively.</t>
          <figure anchor="fig-id-update-client-init">
            <name>Client-Initiated OSCORE IDs Update Workflow</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
          Client                             Server
       (initiator)                         (responder)
            |                                   |
CTX_A {     |                                   | CTX_A {
 SID = 1    |                                   |  SID = 0
 RID = 0    |                                   |  RID = 1
}           |                                   | }
            |                                   |
            |            Request #1             |
Protect     |---------------------------------->|
with CTX_A  | OSCORE Option: ..., kid:1         | Verify
            | Encrypted_Payload {               | with CTX_A
            |    ...                            |
            |    RecipientID: 42                |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |

          // When embedded in KUDOS, CTX_1 is CTX_A,
          // and there cannot be application payload.

            |                                   |
            |            Response #1            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_A
with CTX_A  | Encrypted_Payload {               |
            |    ...                            |
            |    Recipient-ID: 78               |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |

           // When embedded in KUDOS, this message
           // is protected using CTX_NEW, and there
           // there cannot be application payload.
           //
           // Then, CTX_B builds on CTX_NEW by updating
           // the new Sender/Recipient IDs

            |                                   |
CTX_B {     |                                   | CTX_B {
 SID = 78   |                                   |  SID = 42
 RID = 42   |                                   |  RID = 78
}           |                                   | }
            |                                   |
            |            Request #2             |
Protect     |---------------------------------->|
with CTX_B  | OSCORE Option: ..., kid:78        | Verify
            | Encrypted_Payload {               | with  CTX_B
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
            |            Response #2            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_B
with CTX_B  | Encrypted_Payload {               |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
Discard     |                                   |
CTX_A       |                                   |
            |                                   |
            |            Request #3             |
Protect     |---------------------------------->|
with CTX_B  | OSCORE Option: ..., kid:78        | Verify
            | Encrypted_Payload {               | with CTX_B
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   | Discard
            |                                   | CTX_A
            |                                   |
]]></artwork>
          </figure>
          <t>[TODO: discuss the example]</t>
        </section>
        <section anchor="example-server-initiated-id-update" numbered="true" toc="default">
          <name>Server-Initiated OSCORE IDs Update</name>
          <t><xref target="fig-id-update-server-init" format="default"/> shows the stand-alone OSCORE IDs update workflow, with the server acting as initiator.</t>
          <t>On each peer, SID and RID denote the OSCORE Sender ID and Recipient ID of that peer, respectively.</t>
          <figure anchor="fig-id-update-server-init">
            <name>Server-Initiated OSCORE IDs Update Workflow</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
          Client                             Server
       (responder)                         (initiator)
            |                                   |
CTX_A {     |                                   | CTX_A {
 SID = 1    |                                   |  SID = 0
 RID = 0    |                                   |  RID = 1
}           |                                   | }
            |                                   |
            |            Request #1             |
Protect     |---------------------------------->|
with CTX_A  | OSCORE Option: ..., kid:1         | Verify
            | Encrypted_Payload {               | with CTX_A
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |

          // When (to be) embedded in KUDOS,
          // CTX_OLD is CTX_A

            |                                   |
            |            Response #1            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_A
with CTX_A  | Encrypted_Payload {               |
            |    ...                            |
            |    Recipient-ID: 78               |
            |    Application Payload            |
            | }                                 |

          // When embedded in KUDOS, this message is
          // protected with CTX_1 instead, and
          // there cannot be application payload.

            |                                   |
CTX_A {     |                                   | CTX_A {
 SID = 1    |                                   |  SID = 0
 RID = 0    |                                   |  RID = 1
}           |                                   | }
            |                                   |
            |            Request #2             |
Protect     |---------------------------------->|
with CTX_A  | OSCORE Option: ..., kid:1         | Verify
            | Encrypted_Payload {               | with CTX_A
            |    ...                            |
            |    Recipient-ID: 42               |
            |    Application Payload            |
            | }                                 |
            |                                   |

          // When embedded in KUDOS, this message is
          // protected with CTX_NEW instead, and
          // there cannot be application payload.

            |                                   |
            |            Response #2            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_A
with CTX_A  | Encrypted_Payload {               |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |

          // When embedded in KUDOS, this message is
          // protected with CTX_NEW instead, and
          // there cannot be application payload.

            |                                   |
CTX_B {     |                                   | CTX_B {
 SID = 78   |                                   |  SID = 42
 RID = 42   |                                   |  RID = 78
}           |                                   | }
            |                                   |
            |            Request #3             |
Protect     |---------------------------------->|
with CTX_B  | OSCORE Option: ..., kid:78        | Verify
            | Encrypted_Payload {               | with CTX_B
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
            |            Response #3            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_B
with CTX_B  | Encrypted_Payload {               |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
Discard     |                                   |
CTX_A       |                                   |
            |                                   |
            |            Request #4             |
Protect     |---------------------------------->|
with CTX_B  | OSCORE Option: ..., kid:78        | Verify
            | Encrypted_Payload {               | with CTX_B
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
            |                                   | Discard
            |                                   | CTX_A
            |                                   |
            |            Response #4            |
            |<----------------------------------| Protect
Verify      | OSCORE Option: ...                | with CTX_B
with CTX_B  | Encrypted_Payload {               |
            |    ...                            |
            |    Application Payload            |
            | }                                 |
            |                                   |
]]></artwork>
          </figure>
          <t>[TODO: discuss the example]</t>
        </section>
        <section anchor="id-update-additional-actions" numbered="true" toc="default">
          <name>Additional Actions for Stand-Alone Execution</name>
          <t>After having experienced a loss of state, a peer MUST NOT participate in a stand-alone OSCORE IDs update procedure with another peer, until having performed a full-fledged establishment/renewal of an OSCORE Security Context with the other peer (e.g., through KUDOS or EDHOC <xref target="I-D.ietf-lake-edhoc" format="default"/>).</t>
          <t>More precisely, a peer has experienced a loss of state if it cannot access the latest snapshot of the latest OSCORE Security Context CTX_OLD or the whole set of OSCORE Sender/Recipient IDs that have been used with the triplet (Master Secret, Master Salt ID Context) of CTX_OLD. This can happen, for instance, following a device reboot.</t>
          <t>Furthermore, when participating in a stand-alone OSCORE IDs update procedure, a peer perform the following additional steps.</t>
          <ul spacing="normal">
            <li>When sending an OSCORE ID update message, the peer MUST specify its new intended OSCORE Recipient ID as value of the Recipient-ID option only if such a Recipient ID is not only available (see <xref section="3.3" sectionFormat="of" target="RFC8613" format="default"/>, but it has also never been used as Recipient ID with the current triplet (Master Secret, Master Salt ID Context).</li>
            <li>When receiving an OSCORE ID update message, the peer MUST abort the procedure if it has already used the identifier specified in the Recipient-ID Option as its own Sender ID with current triplet (Master Secret, Master Salt ID Context).</li>
          </ul>
          <t>In order to fulfill the conditions above, a peer has to keep track of the OSCORE Sender/Recipient IDs that it has used with the current triplet (Master Secret, Master Salt ID Context), since the latest update of OSCORE Master Secret (e.g, performed through KUDOS).</t>
        </section>
      </section>
    </section>
    <section anchor="no-fs-mode" numbered="true" toc="default">
      <name>Key Update without Forward Secrecy</name>
      <t>The main version of the KUDOS procedure defined in <xref target="sec-rekeying-method" format="default"/> ensures forward secrecy of the OSCORE keying material. However, it requires peers executing KUDOS to preserve their state (e.g., across a device reboot), by writing information such as data from the newly derived OSCORE Security Context CTX_NEW in non-volatile memory.</t>
      <t>However, this can be problematic for devices that cannot dynamically write information to non-volatile memory. For example, some devices may support only a single writing in persistent memory when initial keying material is provided (e.g., at manufacturing or commissioning time), but not more after that. Therefore, these devices cannot perform a stateful key update procedure, which prevents running the main version of KUDOS and ensuring forward secrecy.</t>
      <t>In order to address these limitations, this section defines an alternative, stateless version of the KUDOS procedure. This allows two peers to achieve the same results as when running the main version of KUDOS defined in <xref target="sec-rekeying-method" format="default"/>, with the difference that no forward secrecy is achieved and no state information is required to be dynamically written in non-volatile memory.</t>
      <t>Hereafter, "FS mode" and "non-FS mode" refer to the main version of KUDOS defined in <xref target="sec-rekeying-method" format="default"/> and the alternative version of KUDOS defined in this section, respectively. From a practical point of view, the two modes differ as to what exact OSCORE Master Secret and Master Salt are used as part of the OSCORE Security Context CTX_OLD provided as input to the updateCtx() function (see <xref target="sec-rekeying-method" format="default"/>).</t>
      <t>In order to run KUDOS in FS mode, both peers have to be able to write in non-volatile memory the OSCORE Master Secret and OSCORE Master Salt from the newly derived Security Context CTX_NEW. If this is not the case, the two peers have to run KUDOS in non-FS mode.</t>
      <section anchor="handling-and-use-of-keying-material" numbered="true" toc="default">
        <name>Handling and use of Keying Material</name>
        <t>In the following, a device is denoted as "CAPABLE" if it is able to store information in non-volatible memory (e.g., on disk), beyond a one-time-only writing occurring at manufacturing or (re-)commissioning time.</t>
        <t>The following terms are used to refer to OSCORE keying material.</t>
        <ul spacing="normal">
          <li>Bootstrap Master Secret and Bootstrap Master Salt. If pre-provisioned during manufacturing or (re-)commissioning, these OSCORE Master Secret and Master Salt are initially stored on disk and are never going to be overwritten by the device.</li>
          <li>Latest Master Secret and Latest Master Salt. These OSCORE Master Secret and Master Salt can be dynamically updated by the device. In case of reboot, they are lost unless they have been stored on disk.</li>
        </ul>
        <t>Note that:</t>
        <ul spacing="normal">
          <li>A peer running KUDOS can have none of the pairs above associated with another peer, only one or both.</li>
          <li>A peer that has neither of the pairs above associated with another peer, cannot run KUDOS in any mode with that other peer.</li>
          <li>
            <t>A peer that has only one of the pairs above associated with another peer can attempt to run KUDOS with that other peer, but the procedure might fail depending on the other peer's capabilities. In particular:  </t>
            <ul spacing="normal">
              <li>In order to run KUDOS in FS mode, a peer must be a CAPABLE device. It follows that two peers have to both be CAPABLE devices in order to be able to run KUDOS in FS mode with one another.</li>
              <li>In order to run KUDOS in no-FS mode, a peer must have Bootstrap Master Secret and Bootstrap Master Salt available as stored on disk.</li>
            </ul>
          </li>
        </ul>
        <t>As a general rule, once successfully generated a new OSCORE Security Context CTX (e.g., CTX is the CTX_NEW resulting from a KUDOS execution, or it has been established through EDHOC <xref target="I-D.ietf-lake-edhoc" format="default"/>), a peer considers the Master Secret and Master Salt of CTX as Latest Master Secret and Latest Master Salt. After that:</t>
        <ul spacing="normal">
          <li>
            <t>If the peer is a CAPABLE device, it SHOULD store Latest Master Secret and Latest Master Salt on disk.  </t>
            <t>
As an exception, this does not apply to possible temporary OSCORE Security Contexts used during a key update procedure, such as CTX_1 used during the KUDOS execution. That is, the OSCORE Master Secret and Master Salt from such temporary Security Contexts MUST NOT be stored on disk.</t>
          </li>
          <li>The peer MUST store Latest Master Secret and Latest Master Salt in volatile memory, thus making them available to OSCORE message processing and possible key update procedures.</li>
        </ul>
        <section anchor="actions-after-device-reboot" numbered="true" toc="default">
          <name>Actions after Device Reboot</name>
          <t>Building on the above, after having experienced a reboot, a peer A checks whether it has a pair P1 = (Latest Master Secret, Latest Master Salt) associated with any another peer B stored on disk.</t>
          <ul spacing="normal">
            <li>
              <t>If a pair P1 is found, the peer A performs the following actions.  </t>
              <ul spacing="normal">
                <li>The peer A loads the Latest Master Secret and Latest Master Salt to volatile memory, and uses them to derive an OSCORE Security Context CTX_OLD.</li>
                <li>The peer A runs KUDOS with the other peer B, acting as initiator. If the peer A is a CAPABLE device, it stores on disk the Master Secret and Master Salt from the newly established OSCORE Security Context CTX_NEW, as Latest Master Secret and Latest Master Salt, respectively.</li>
              </ul>
            </li>
            <li>
              <t>If a pair P1 is not found, the peer A checks whether it has a pair P2 = (Bootstrap Master Secret, Bootstrap Master Salt) associated with the other peer B stored on disk.  </t>
              <ul spacing="normal">
                <li>
                  <t>If a pair P2 is found, the peer A performs the following actions.      </t>
                  <ul spacing="normal">
                    <li>The peer A loads the Bootstrap Master Secret and Bootstrap Master Salt to volatile memory, and uses them to derive an OSCORE Security Context CTX_OLD.</li>
                    <li>If the peer A is a CAPABLE device, it stores on disk Bootstrap Master Secret and Bootstrap Master Salt as Latest Master Secret and Latest Master Salt, respectively. This supports the situation where A is a CAPABLE device and has never run KUDOS with the other peer B before.</li>
                    <li>The peer A runs KUDOS with the other peer B, acting as initiator. If the peer A is a CAPABLE device, it stores on disk the Master Secret and Master Salt from the newly established OSCORE Security Context CTX_NEW, as Latest Master Secret and Latest Master Salt, respectively.</li>
                  </ul>
                </li>
                <li>If a pair P2 is not found, the peer A has to use alternative ways to establish a first OSCORE Security Context CTX_NEW with the other peer B, e.g., by running EDHOC. After that, if A is a CAPABLE device, it stores on disk the Master Secret and Master Salt from the newly established OSCORE Security Context CTX_NEW, as Latest Master Secret and Latest Master Salt, respectively.</li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="no-fs-signaling" numbered="true" toc="default">
        <name>Signaling of FS Mode or Non-FS Mode</name>
        <t>This section defines the signaling method that two peers use to agree on whether to run KUDOS in FS or non-FS mode. To this end, the extended OSCORE option shown in <xref target="fig-oscore-option" format="default"/> and included in a KUDOS message is further extended as follows.</t>
        <t>An additional bit "No Forward Secrecy", 'p', is set to 1 by the sender peer to indicate that it wishes to run KUDOS in no-FS mode, or to 0 if it wishes to run KUDOS in FS mode.</t>
        <t>While 'p' can be a bit in the second byte of the OSCORE option containing the OSCORE flag bits, 'p' can rather be one bit in the 1 byte 'x' following 'kid context' (if any) and originally encoding the size of 'id detail'. Since, the recommended size of 'id detail' is 8 bytes, the number of bits left available in the 'x' byte is amply sufficient to still indicate the size of 'id detail'.</t>
        <t>[ NOTE:</t>
        <t>The design currently in <xref target="preserving-observe-signaling" format="default"/> considers also the 'x' byte as input to the updateCtx() function. Preserving this approach would integrity-protect the bit 'p' as well, in addition to the protection it already enjoys as a by-product from key confirmation.</t>
        <t>]</t>
        <t>If the second byte of the OSCORE option containing flag bits is present and the 'd' flag is set to 0 (i.e., the message is not a KUDOS message), the bit 'p' MUST be set to 0.</t>
        <t>In a KUDOS message (i.e., the 'd' bit is set to 1), the 'p' bit practically determines what OSCORE Security Context to use as CTX_OLD during the KUDOS execution, consistently with the indicated mode.</t>
        <ul spacing="normal">
          <li>If the 'p' bit is set to 0, the updateCtx() function used to derive CTX_1 or CTX_NEW considers as input CTX_OLD the current OSCORE Security Context shared with the other peer as is. In particular, CTX_OLD includes Latest Master Secret as Master Secret and Latest Master Salt as Master Salt.</li>
          <li>If the 'p' bit is set to 1, the updateCtx() function used to derive CTX_1 or CTX_NEW considers as input CTX_OLD the current OSCORE Security Context shared with the other peer, with the following difference: Bootstrap Master Secret is used as Master Secret and Boostrap Master Salt is used as Master Salt. That is, every execution of KUDOS in no-FS mode between these two peers considers the same pair (Master Secret, Master Salt) in the OSCORE Security Context CTX_OLD provided as input to the updateCtx() function, hence the impossibility to achieve forward secrecy.</li>
        </ul>
      </section>
      <section anchor="selection-and-negotiation-of-kudos-mode" numbered="true" toc="default">
        <name>Selection and Negotiation of KUDOS Mode</name>
        <t>This section defines how a peer determines to run KUDOS either in FS or no-FS mode with another peer.</t>
        <ul spacing="normal">
          <li>If a peer A is not a CAPABLE device, it MUST run KUDOS only in no-FS mode. That is, when sending a KUDOS message, it MUST set the 'p' bit to 1 in the OSCORE option (see <xref target="no-fs-signaling" format="default"/>).</li>
          <li>
            <t>If a peer A is a CAPABLE device, it SHOULD run KUDOS only in FS mode and SHOULD NOT run KUDOS as initiator in no-FS mode. That is, when sending a KUDOS message, it SHOULD set the 'p' bit to 0 in the OSCORE option (see <xref target="no-fs-signaling" format="default"/>). An exception applies in the following cases.  </t>
            <ul spacing="normal">
              <li>
                <t>The peer A is running KUDOS with another peer B, which A has learned to not be a CAPABLE device (and hence not able to run KUDOS in FS mode).      </t>
                <t>
Note that, if the peer A is a CAPABLE device, it is able to store such information about the other peer B on disk and it MUST do so. From then on, the peer A will perform every execution of KUDOS with the peer B in no-FS mode, including after a possible reboot.</t>
              </li>
              <li>The peer A is acting as responder and running KUDOS with another peer B without knowing its capabilities, and A receives a KUDOS message with the 'p' bit set to 1.</li>
            </ul>
          </li>
          <li>
            <t>If the peer A is a CAPABLE device and has learned that another peer B is also a CAPABLE device (and hence able to run KUDOS in FS mode), then the peer A MUST NOT run KUDOS with the peer B in non-FS mode. This also means that, if the peer A acts as responder when running KUDOS with the peer B, the peer A MUST terminate the KUDOS execution if it receives a KUDOS message from the peer B with the 'p' bit set to 1.  </t>
            <t>
Note that, if the peer A is a CAPABLE device, it is able to store such information about the other peer B on disk and it MUST do so. This ensures that the peer A will perform every execution of KUDOS with the peer B in FS mode. In turn, this prevents a possible downgrading attack, aimed at making A believe that B is not a CAPABLE device, and thus to run KUDOS in no-FS mode although the FS mode is actually supported by both peers.</t>
          </li>
        </ul>
        <t>Within the limitations above, two peers running KUDOS generate the new OSCORE Security Context CTX_NEW according to the mode indicated per the bit 'p' set by the responder in the second KUDOS message.</t>
        <t>If, after having received the first KUDOS message, the responder can continue performing KUDOS, the bit 'p' in the reply message has the same value as in the bit 'p' set by the initiator, unless the value is 0 and the responder is not a CAPABLE device. More specifically:</t>
        <ul spacing="normal">
          <li>If both peers are CAPABLE devices, they will run KUDOS in FS mode. That is, both initiator and responder sets the 'p' bit to 0 in the respective sent KUDOS message.</li>
          <li>If both peers are not CAPABLE devices or only the peer acting as initiator is not a CAPABLE device, they will run KUDOS in no-FS mode. That is, both initiator and responder sets the 'p' bit to 1 in the respective sent KUDOS message.</li>
          <li>If only the peer acting as initiator is a CAPABLE device and it has knowledge of the other peer being a not CAPABLE device, they will run KUDOS in no-FS mode. That is, both initiator and responder sets the 'p' bit to 1 in the respective sent KUDOS message.</li>
          <li>
            <t>If only the peer acting as initiator is a CAPABLE device and it has no knowledge of the other peer being a not CAPABLE device, they will not run KUDOS in FS mode and will rather set to ground for possibly retrying in no-FS mode. In particular, the initiator sets the 'p' bit of its sent KUDOS message to 0. Then:  </t>
            <ul spacing="normal">
              <li>
                <t>If the responder is a server, it MUST reply with a 5.03 (Service Unavailable) error response. The response is protected with the newly derived OSCORE Security Context CTX_NEW. The diagnostic payload MAY provide additional information. The 'p' bit in the error response MUST be set to 1.      </t>
                <t>
When receiving the error response, the initiator learns that the responder is not a CAPABLE device (and hence not able to run KUDOS in FS mode). The initiator MAY try running KUDOS again, by setting the 'p' bit to 1 when sending a new request as first KUDOS message.</t>
              </li>
              <li>
                <t>If the responder is a client, it sends to the initiator the second KUDOS message protected with the newly derived OSCORE Security Context CTX_NEW. The 'p' bit in the request MUST be set to 1.      </t>
                <t>
When receiving the request above (i.e., with the 'p' bit set to 1 as a follow-up to the previous KUDOS response having the 'p' bit set to 0), the initiator learns that the responder is not a CAPABLE device (and hence not able to run KUDOS in FS mode).</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>In either case, both KUDOS peers delete the OSCORE Security Contexts CTX_1 and CTX_NEW.</t>
      </section>
    </section>
    <section anchor="sec-document-updates" numbered="true" toc="default">
      <name>Document Updates</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>
      <section anchor="sec-00-01" numbered="true" toc="default">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>Recommendation on limits for CCM_8. Details in Appendix.</li>
          <li>Improved message processing, also covering corner cases.</li>
          <li>Example of method to estimate and not store 'count_q'.</li>
          <li>Added procedure to update OSCORE Sender/Recipient IDs.</li>
          <li>Added method for preserving observations across key updates.</li>
          <li>Added key update without forward secrecy.</li>
        </ul>
      </section>
    </section>
    <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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
vibOSkwp0uGu0dgvi4cJtyqPsDBpkITpIpct33EBDF34prLysk+qudirqQtW
CqCXoG1dbJxhyy1vRAsgKsIzOCYjTlVYZf/30I45wNRhnOAk4eITQNJltFwd
ccGBwDFummKNrj3bN7WvvxiPQJLDwa3IK37gJFVwBwUAjW6iA/Q1GJa6Fgg4
VqI3v9GdHKhX8o5T7hWrac51NMJSz7Tt9Jnr6iWMp1h6gsvaVXeD7hOnektN
jIdgJ4fTHqhoRztP2GWORcjSRcPeh3GIUdrfoRM3gjfHWUgep8Wc5uLCVxKF
a1sntw+61vmUDh+O5Dk1dWKqzVn1VAlvJVfCctqBBTjRn55OsmA+FRcZ0GVq
0AcjWNexZ883HgDE+yYyiXRJszBgexI8W8OaPfmEPBMaezONPrdh5u7O8iLX
o2mT3Vb24gyenP14XOob2pRxHnze7h2SXtwUmeXUdA0iL+CHsgJXPkUaXxZT
Ty8uB+eX6geQ2pdTDc04HTm6ES/XpUlVP2GNaxaA5Od/B3pyfKAGkqxEwHer
S/3YFGFnjQjMFmNNdRiNzb7QQ8vgSbmeTU89S2/DG5P9HOT5YqaboFRbYEi8
gfHle7QiGGYp9rlx+LsT8I8JvsbTJ6uapRQiGMRAsTCceiFOV87V5QK7P//V
eubYi7WqZ86NUmn0zHmhLCt45oz0+Kk9c457335o3XW/n0cK9YBPYEr9iCbO
yoeOJ/KTum1aPWy1H67oYVvy4eftsek3eWxX8Nc4Htt/oL+mr5+tOh/XGtdx
H/rPVgdY2yNe4w9rGLfBH7ZkDb+3R/wjunIaPeJL3KxLfeLtbtZ/nFsc1rWu
s+oDHeMf4qz6HLyN/zxesU/m813J3eaIR9rdVhXC3t/dZi1f2QxAYW0f1nLr
Zatle3cVVxMX6CWLryjuJsrbDS9cshTUzxe6+PRSl0z/8/I1frg3Zj1n4/v4
YT6Rt3FVf80yd6Me5zPzN36o96TO4bjUlf45Ohw/2J3+Pv7G93Kq8wGt5XRc
2WXOYxtIdkJ1mx3UQUFGTW8cDOwdcXn2WJ+d+dKrqhWQBTHCBr5lqtLulPyO
6z2UZ+YdsFG50E2ExBsqllivmLe+hPbJjMfGaw9FrrlwlHsn8xlAtecf/cCI
go/hHs1tFXR2j34EF+IKzlEZemXvqJCAdXb6D3RjmhDxD3Rj2mYZ7+3GrAhz
DW5MmWotN6bhue/vxpQh/tncmCuk5/0enr69Fk9fKQ/wi6fvi6fvi6evydN3
+ez4/ydv39J83iW0sEJbPr63zwnNqOzIK9fj0CSnVYSU4+WiPHdRGLc595gn
ScFeUgcoxTRw6muxy692JeRw42gRJJ8fxyWp3YrIKiO+8tigfKrDCnPbO2YM
m6daFELzymegm6VUYo/4s7rEyKoAhzJqJIG55ZqWy5Ild2wWH3bzJXqFqzwC
VKFOxRdRsWB6RzVckhUhVSpTlCW8LMqvCQEXmO1P1ZxHMhPXKJaaCDYbHo9A
GhBjNrxJaRcwRgesljNIfOO2gLrwE/tjUa8ZBnOdAg73j7DlNT4j2WmR275f
MRU9pOR7U5ZAg5dTNJreNgnSfMuhroRCntyOGi2MvcdobnNgJ1RYXqTOK7ca
SyQpwE2nvAYZKHX6dEATG0sGUaEbxZpNVrDJ16kMPzfNLEhuxDcNPjUgsw2t
Ld9iLuVP4SBO06SrhXK8L7olg9e+WEwAry8MWxgOCzOFpHdfYb9zK9xyLQBH
Ugj02Fu5KzFYZDZxvzwg14zxCJF7OtR7wnZTZClSQ7jKNS45cQmtIKSuFhQj
63Uhiu/sJRDa18C/iGpcVVK6wmhxnmhgDisEXlc+bXPQkb4UaT9lwiHwjuve
4I4U52HBbFm9TLGICFyDKVWU6e/eAf+25QVy9WLwF90ed67fojmlZZyk9OPx
ogijrXUR7Jab2i+3CmQBcQri2DmGEt5R56pbeNxW65HGQK6ty+9bp5chFUyI
9gNBLjD+EA4SHumO6XbKPacbZKiekNQQ+5ERsBBg6UNoLn37lTprrjxjGlLb
WY3STCDiKMhfAVut4L0/kHS2wAgUPPlCl2jkIzAjeyqu0yFcunwHppQrj2Kc
Us5ZfCW9K+H/M+y1TJIG9gMznee5Sgudzx03/46DOcpeuYnpr3Rj8i0WdIXa
XuHMDbCLbqMFZ8Db8lrms3e6cgwa6qhkqj4IoOlDqudDdavncTB8r3ZqVPJg
vEhGAa6cC12YqiZGep6k6BHh3sWwOCyjJLXHTFtpAO8MgJur0ZInZnQTwIhc
lKhkVWUG6XTPgUsCGYCosq6PaTr5wuB+M18qYBVmRoLF5q3U07emV7B2LtT0
PH+343YFnqWEkXTMoIfn0dDZQaUM79qnrIugcTyWU+yz3LVIpLPVe97A6drc
EjwKkrHLw3KpWtsKlyvDcm9i6aDrdzR2H95kKJZucjOiB9bAhXMafki1nEAt
n5GFyBb3DUCVmVPPa10sgjbVcRSbSv8mgiLTya+yrLLkXG02jPJ74VS9xXoq
lc1J3sQM58CItgKbbhAj1i2EO1ZQqx6rroTWMPAVVYWO0zvbzgrrxnSxIBfV
mbethTR+U3s295ZtkF0u1fZM7xNcNaHPDVW90y95kXm59Etmimnb29nuiGLD
izJpnsOd8UjG8BtCho1TULcNt73GEVWXZ+rPb0qln/q+eVqXXbHRm3bMxCSh
Nu4bGTfyrzsK2bw8Ozo7UIPRSBF0+g9j/CKc+8ngdFA5c9iXOoZzSLMD9RKL
AIWG5G7+/O9eN5qf/7ppJVJ8z1JIv2uNtdWL1SbIArKw9Mp3rN1ODksWVRJJ
JS6YOQnJrNKDiyvf5bqt+Z26h8xFOg4Fc3GwUicu3DAFlF7LDSTsFHAnlN4Q
shcBhc2aCTfhYGRGPAWBeHiSbS9Su9N5apKli3kpItO0tCj1tqi2usCeGFLk
j6MnTpGkmmCK85BIyzDkSIr1xlWXT45oIFMuqwvY/1b59/3XNcctBXM0hmCg
miLHnS8mwIJEAqLr0izSW5ncEaxtb58BQnCHenI9QdZmoMGAgtd8qgYYAP1L
oBAiewyNTrRZnqQRAmyn8fPji0tsYel3HEcY2XkPIKltotLY9MX9Am8ZluxH
3xgIMh8dhfkwi/h09RcWst7CIC/TnIlkTQhPbVRP+Yu3H2s78CPxwdW2bG+B
ioqvOvJ6R2mY5pW8rV+i+UgQ3rq6A/nCRYllg+R+IytZSOlMlg1i21r9Pgf7
QEb3+8apmoM1K1nnYBt6u613sKYTnBvc8knOxEXGDfiEjB7IQvlswlGZGyPV
Qunj9eD44nV/79Hrw8MXrx+R1hOEwagbhHkXPu4Oh7Puoy6vHYnSU6F2Ne8G
8QQEqGI6Y6FZy2Ik4wzMd7a/bQeU52yClRAHxIAPB0Y6znQ5R5T3RmXhRcwz
Y+wf3KHuwfj6VrzVA7HHrKLLghPu4JGXpMAmanL8mYltrcKIut79QjIiKJvV
fWqLLTssrcRsWweVl2Vr8wqdRiEcdK9STVHqEZIV4+5wnE26dAu8BU7OzN3W
Sw27rFHm3EQU3bWUBd9btGnBETxWe3/rPtgVCX+SpnQi9Ok3u3gGGnS0ikfX
hm4hPbS5EPx2+9eOuoG73aHGqSBTqfDXBQe0bO/9bW+3AwP36e9HO1qNZfsJ
WnJYw6JFGEEyhjXHPeV78i0QwAEbjQf0ITTtAqCcDPTgsBlRk3Me2Ol+g0k8
doPhyBu2mcm1o2j1A6AUFaAQGnHiAt8dhlyXPtioC+NebV6kUL8+5kO/kf/G
8N9HMA3c7v6+S6z4uh3CxO/2H6z27qO6d1ec99uad/WacX733W/XWPOyd9vW
vOzd1jXve+8+2C2927rmJe+2rnnJu61r9u/owTqwsezd1jUvebe05o+OCw+b
cGG/Zs0PVnv3Ud27K877bc27ZVx42IQLLWte9m7bmpe927rmfe/dKi60rXnJ
u61rXvJu65r9O6riQtual7zbuuYl7/pr/hB+VE5jqJUndO7CS084apAcTVeq
IUbXJAqlAOJ1sfDbXlv/C2x/Ec1MD4StIRr/X/+6RQJpaL7r0ufdX5saXQS6
nSLGyVCPKzRcKhnAiCg0Cgiedhpjmcbc0a70CqGQB3YXomzBTaNYQNFuoLyg
2NhC+2tRQJP63tYiTEuVhWUh2WtFkh0Hw0JCPtHXldyxU5iMk9EsNA3ipuzu
Fd/wa3h2lubFa3V8egiC2vbFxan6g4K/f/6KOj6L4yUXK2NpYX8K7zrsfTxA
hwu+rOsJs1HelefQGAYr2Mob+jn0ZIifv2ocxNbBbh7F2v7NWOgWB+ks9ADD
jVHl6A00pjr9cUU+lGWbGt90C4tcZHfxitFVJraDg/ZTCzDYp7pw9V2cliDC
+JCCK/Ks4r+dbgUYmUGnPtbOKIK9Ef728+tf1Q9s0YVf5Rb0F+Yif+JubT9x
gxzuFsG6lNvWXvflK68+cr3sHR4FH3QOyYslb44WK51lpGNxpMupK5H/hK2Y
6OakNj8Gaqy0TokvMMucRpMpTu4slyFpFmTXfAomNF3XjxHYOueWIn/mliLz
eJFjFS4gV7t4GSaWEsN/Ma6PGk7cOS7SSpSv02DjLiwcIG1brXe4ekiz5Jqx
3ZaterwcnTINHVQEDdymMk6PSjKz64Ph6ITGy6FwH2neoc5qqhLY4Fd24tf0
+iDNtL2BvcRFObSstcFPtTT9hzRv4SQ5GMR0Xcnb2660dFlxomGbqtMvi30v
sS00Zl55jEvrtzW5m9VKEo2bsJ1+yQdY7ufb8VPz7HUE5cuoycGxzIxDlXWk
RiIgRNzS5nvg8pOQMuHcO20KYw0maDHjM9DjmZAUBH04F2t0cTet8chZyJIA
VjZ5rPY4B0ugJ0AycOUSDGuqvQeJssLQCe6jU+lEDCdHTS4s+JsAOnuJGCtX
c4dLO/F00WcaoOOeWu+OO7qGCCaUUD+AJc21CHqIZEoboESZDJW7cjejD4DG
ZSSEY82FgkhMk42kBIjkvDntuc3YRYOOakvgapdWW37FcHj06LIFNzBC4/HL
s8NnbDzCe6sZFUkIo0w0J3oTARoNauW7bR7tD6q/o1mK9VGW7sYVAXUYDB2H
CTgABGP80t4aT24K8jwdchShs1iHq/FagHsi6kpYRByNQwrAQWjxi+bMwgDR
n465HCEdztPhNGdfPezrKl1QsIzusYTBY5OFLM+2ZX0xAESjVZCLWFFZn40N
+zGGb+MdW7QyoRu6L5mBXepWFnAyCtlFJQKAi/UIpQ3IsQiwFyxiE+nAMVam
P1bg0puEBBfdn5pCGkrVfsKEguIwhIkJRRJOUop+Tp3mHDYcVqK/JV5Ui56t
mAyH81emRdYVKDwlF/mDD9ouXHupsbtt4oGPZ14HgZTYXURvUJyKbYhlgrkJ
Eqpw3ym3XTZr1gxDdzYW+pba5n0OnjaSkavwLtUJTqJklLmVCzau2jULKL4W
gJiiDYRa6BZHbGol/mEFKC65lOjoiNTz0lVaJrvIaVpWO+fvtMHWfbkoxuGe
ehEkICHqUDVXCiPRqtzeWPd1NmKIW0eV0Z7uLzeEkKJTr/Tpkm6QLrIh1ZMK
THIugITOawp88mHCX5NhvDDR+ppniqebaDrjz65JDPJT4DkO15ECnNQzPvPm
8bUeLmGn/JDwMpcmIWGQ9FU+CYk/r8lGwC6DREV2PZsA0xmHVhrR7hdMIZEF
lGio2XA58Y72LKS5sutSNqGzUB3Z/kkW2nESFtzJxIPisc/y+UowGdFT2wiL
o2kB+ifY4JvimyJQl84D5u7OJNzpXtJZdZdBBN0hkA0f3ErJ4yLbrQ2NlbSW
+72HHgrtAKMgYdim9XHSTGVJnVL+jPE66VwigXBzwStDq5GhRvUZdNpBVRnB
vthzg+kxnBpjNUiYppP0hTRnBA/vKWOzZuccNMoUkbnGQNO7vCpE6iwyR3N6
wqLAgAsENmbSPVFOCT0HEimvSnfCY4kN91GS2RIY3+lcaQWZqJS0bfkSMIAs
JfEbhK7RyOVOHBO2unitM7hFp/KVnVZ9VxKBgsbX19V/dwykulcgmrcmC2UW
4XFgSpCslZeRUi87zDWOzSF6ZbiqDbODY+731NM26fsnBqKBVeOf0GWihMiF
Fe2orqbKcQc8HguXDXrgARVJChjjZNVAjjKJt15OpH/iMktXJhecgdjxPje8
J3XqYefwkRWLq4dYp5l5bGDPOUSdvbDiUY51SKLJZAIcnXec7o+DsvAY4VCf
/A5o0zq5wJA+pmfqJ8KJgVk0WoQySeAbSYILptpMg5FL071uAHWGwSfKYpUo
VIPcMQJSnLYcTkmB8iitydhwdTxLmRuoMkORcwaaU1gjVyXZ1guWFh5vLSA1
gl8ZDFHNEnG4EXTqDWhP3KIosmJj4Xarqrw8+RHNlb6RtboTThRgcuUEcZgG
pA588mENyZ6FX/peGh0eWZMpMsB6JnnZiVI2ymJ0Cy8adXk/20hqZmEpVkMr
4bOXmqN5ltd6M6tDMiVhSODEUR2FMw8pk49ZX7UVaYXsr6R5LTHgsB0NEJf0
fD1pE5ei5GtgY6VWr2SWeiNZNfKuiHNO4BOmO3p1qaTdMouDujqOn3cYYVJN
Rgs1E3jOlJLOyM6nMMjI1JqCcg/QRnueIehLMJzQp4x5nehzAxukD+9gMZzN
2mve7Kitq60OpxRKuKIo5eyDNB5Ge5UiGd1iNnHuiUSr4h8lm2FIFMxtzCG0
SpOu7UWCOrcoNyERjUbs5i9N7GfHjCzwjzo3wIkzRZ9H33qz5bCAreuIIhQR
PrZAHkJb0x17wZycDMC31LaMBa2IXMVOPSfu66LTEUDomvFl1zyLJy+9gzsl
sxsFscbhGAjfDTxK1hxZPK6alo8gQkpPvhiPMVMvKdgdjOTQubL6dYI0XTBU
mlQvvuoinCCqdN0iAl5wHR4kHjECjawJTUmlvvOctagvWAIpnSornEM5xdrY
WGvFXIivU+m5TPSiTEjSqGdZXLElr5eGbCuE7uA5uH58ERz1p11+FCuQ6OT7
KLlJrz0sJlc2F1dTj53Bf+r//BYL5GqT/464gE0jcnkHBRPHeUuyZ00KsxxB
1ez0la2jUZ7+pz1cws9URLZ9Gfh2zUJq+zc3roR9yj9xDbSf9oguGzjK9ZUZ
SK74gn2El8f5LLjj/MqLKfW49+ksYkYyiS2YDY3FlHPhJalHjMZoJiTE3Lrq
YyDl1Z5EUl7d3xK0czIcNESTuIGyAaMCSTwVD0yZkyIqaptt6KOgY4nebrLU
csJ9WHGlsKkTxl5wrSVnLLpk9FIiT3bansiV6bR+ICALE4Rb9ReJe2qM1NLS
ytb7XlrokRurIBUZj0kKr/gDA1x5hiqBmdKgaU0iqSWuchI+ixN6GSXS1r1C
ODkx7JWxyRqyg0zza5ODo06OWJRiVNQ7jEZ5Y+hQIiBPrj2dCceCj+eK1dn5
uH5ehifs1KzDSk+4YQbRKAOphpJYmzNJL7mAkF6LALGtBQGQzFWTJAqgplqi
Nd479k80hnONLjaMVDssyJpOjvQWdbMFKSCn1ZKk8UkjjoqrhAVoZBQmc1pe
dc+qKq9iuTiW3djuWNSeidwJlR5LRt0gBqGDIj9EDMnDYIa+HHEPTrJA7Jvm
Pj3Hq5OnnIVs6pdEZS59+pVWIkhTy9xZJeSCDqMkJdXCRkh4RQTSrZ1j3scL
NWFr4vRohhjQcGwStZSSsjFfdmaM66DMBxCRMFb+R+IS2sxU9sZay6mfSA2a
LggSHVedKqtFuiBdxqE5txyag5MhNhrz9ghDctIMgQpLdLQsoLIEm25NbsAX
Afk/4I0sZNecCMmgYcBt3WJR6By/HN5pi7cWkPj8TBnI8iKikQgiXSvhd8Uq
peu4WUpB9abQ2ebqA8YJl+oqbwGFdPgw6IAMQkg5O9eFvxitHZkL07YwkrjG
TRE9tzcG5+KKjab+EU2wLWa7K9D5u8hxr8XkTxozOUI5cwG24serNDrhHSuf
629zDoFwqyceM+RyXralZMFRyQbCWf0d3JloicwbPVojbzU0IzOZvqgBhhmF
vuaLGfA6glejjNZN9k53cGF1M1eXpETsm8RsriZVKsxjc0bDmGlCh6EDwEVA
t+PTA7QDkhEc0Swhi808DDBnO6zPXflDzZ+6QOGaJFrK7k171BQA/ryCP6eY
e4n/tVma+PVTjLjCVLnnYTIBHfStOhL/+tuPtA6ZqPrH+Xnb/AvFXV8+OerX
jFHKL07nARA0/G63+w09sA3nHO44KYQftI6PcR5muMPHh1jMZojlQV49fpUg
8HTU6ePT9BAhhXnA43MDI7XF7GvgWceBN+BdW2C3nzxvpRNyarDgNQWGQIhn
4V9bJpuK5zBhcNDH1FCzY3gGoWqQr4dyLN/bJNqSTutLKLYjJnE8+FvH9BS6
WtLCrcPMsox5DKW+imBQI/rVk7iIROJhHOS5OiaSFaKrxBJLR3Ws1LLre6xz
h+ugqkojcIfsmi5R4Rs0d3i1VunhruGKplmU5ZN+YVabgOmKS1VGp7tHOXU4
TdXeuvZRZwl7MTiU9uKEo/rOTzCsR5pZlkQwpZ9x75VoqgSNVhTX+hZVtZ2p
/B+/T5XTiarxDYcHe50pGlPX3Weox81A/bb6G0re2KCTe6xME5/lb8obuxt0
2PDLGq/yG/2Nd/7HK7z67j1OpfGNUh8v+4ZuVkL/6i79+eHthmlhMqC8fL+Z
Tq/X66jraHTQd9bBvU9Kizvm7I1w9PplcBenwUgu033GTlXdWaVDzdKzMFhw
cnSg9vdWeGP9OZxab0rvq+UNFypWnmPpG84rX3/NimzF69+RTlZRzgfc8V8S
dYYVTy6Vr2PIJJSR9lbqovPBQOr1GWt4o67pTunH9ODRbXdkriqwVlbnwpwP
6SsA7EeF0i6C6TePPsUcnxuUtoGphOGTLFN6JXLlJVOZj72aBoBL76wE1N4r
pQHY4onzPFFXiyimWp6mpdPVnbFoVCd27BS+ceR9sIhXsC4DfGIZIIHWWgxw
f09zQKKea3HAbx59Nixwr/TGB7DAJ20s0OLuh7JAnutfBvMb3yi1XWt44/di
AE9K9/w7MYDP4op0W7nV3xA+ucYb66+q8Q2D2/dLb3z+uP0vhdq68eN7vNkg
5i97r9a0U6uZa+POCmaAFZoVaruwFM0VTyXZDth4W9OOus3eUK5/3mpvaOpK
vba9obVd9T+TvaGuHXbpp6k79hd7Az/zxd7wke0NnwNBrrMFbFM8306NsuU/
rFvKahPBF12/fWu/h67/CWBqNWuRq4YDRPgvVUPX0bKU5EUYcBlr//FPZVj6
QqNr3vl9FeJ/NhrtY2DFKPxPRNU/As6iAev3x9rGNz4va8A/iEV8AbdPwCS+
2E0r73yxrbSdxWeBhY1vWEJ5v+WNL2ZT940vZlPloPZ+6Y0vqN30xu+M2k1v
/AMMrY1vWPKz3/LGF/LjvvFpwKjdFu5YjbUtfAUT9cexhQ9sbPjAaSN0QQbr
ARmsj01o+G/3WkPQS/UnTANKSmGPsWQGBmQXVCxDcjNMfRGnWhkn0LabzG3+
RaXSB1bNKqJYr8JmswcKa1l0x9SZa+T36Pua8oHhELjIWFMqYV1G+XbYm1Dt
TC65xEHvcITHR8/ODnVThbAYd+PgOuyGo2k65NDHFyl1qAZFNw8p3N9Wp2w5
OikkKvJ3QDU6dCQ+1e1Mgnk+TU2ItnzcmhyJxkQJtud8TEzuXJLaRK4DysWm
+jFub/PQ9F3Y9pIhOiY3Iojd/m47pkMiVqi0qaPcMroj7W8RIDC11gnV131G
s/AqTYtyog4X2jVwRRVx14Asmz8kPesKvxqIRRxM7s9t68iVcpNMcj/XI5KK
aStlKAF8eBm5dW2fqMUmQIr0iPXel6QTesTmF1dqFN33YnU7VJpCKpNS8gZX
1LSXH+T+NDZ2VpKG1gQKe6BcCGPNI6XSyDp9QmiFrcEbxNyGnfvMTb0+gpV8
1Low6KBSj0Fv+f23e+L08AVSNY6kfobTfVpqeTikAp7l/rMZln7yk3eaEVeO
wcfa91x5x6n/KNSmkkHjJ0UhyezUlKsj2klR4U7dX1Nj+6kkT11I8tRv95K0
O867s3QUSnYNdW102oDbLKSGDp21CXamqmw5Xau1Al9PPUtvQ64Upku1h7kk
Y5U7r7u1EyQXk4i7MBNTE9QjcDtUI8+0C8Z+vVKXnNE8V3Bega0RA5TEKd20
LD0eDyRJk+5NijVeYkQsoKPoCzb7KpykfuwQE4c4/5AINK9UwEu40+guCWZS
WxeXHXqLxiTnmvm4KhBLKQBaKbXe5bEpbZRLrwr50inc9lAQrHJqm17IiMwI
JNWvtm6i1NI0p4+NNJMFlsbnbGdYEJZyiKgHL6VORLNwh0ki7pMqOuqqRAGV
6Q6zcCzpopj+rXeg22ibNqh07ViTr64Npk7iwjIyVNhJl+osamDd1gwj8MXH
SvBbIjHAwTIRHnJp8qnLGBcN+cmA+WGWBJIZhkun+qTtGFdqYW0SFEvtoCh5
UiegYrEnIv1LN7wcnZ2wCl0NU/cmT9K6lExTr4KT2rTc5YAuFaInBB9JEZYy
qBcEck0IBWsgcOmozacXCgnYJk22ic+bTzLsKqgTkt939yYB1rm71nHcuy+F
hainSFoC2wVeignDMDcRdu/VGai4/lxOWzGTusXzBrQeFvU8AZfpMphAd4EN
ci/lcKkga7C53POstt7HskRrF2GwBrbOaVVyS0AEQBdwa1VLsW2pxavJXh0k
uPupHkbpCzyTBsreXPGEq7txQSGkO5yzqfNzS0W2yzt0YJFrRz3TLbhxeZhh
huDD5PSFkFM6ME9Q7lguRs0kMECJ7mbzcPBy8OT58aaIZYh4cmjS08RFOPcA
r+wJCsVGKhXl10iSuUJvgEV/ukimu8QoNH9Ihyjk0B5qiPx2FnZ3qpS+V650
zClvgdOn2KBqg2yAsuwTYOFY2Wxec9nV7+C+6fqA9ncJpHFFtgDHCmvXvGdl
dBMWiTWF8AJG+lhNcS0W+d3aeNgfRZM7KWvCl007fs7SYHXm0he018vVFysi
iEtzdf1CfxFK1wwFSGUZSurG425ArS50he3CVBYjhcbfP+zFtLegKj8DFr+9
wtmisVKx+sToZvMgykRqryli5xotCEzpzYxISs+ZSHRt1A252sbao4vc4eE3
VhJD5NbsEebwql5Up7drXG9+rqwjZRE9MlM3NctVvuY2iyZToH/YZLXSjNPr
7jMM5qZRVKkeCRds7KrlJF3UK6qgQAXKhFRZsCq1ka9SUuIKV2HpTaqsYSZ3
2ETdOipF7nrLNgD6UO0eaFFrkx/HOIA9jMooQbXtdRnzbIHCOjVZ8erG8vfc
12NJjS5Ny/FXaURgVBPbMHXMEkilzlOaaZ2WENgY9xztst0gZ6sXmvqVuIR2
QsR2KzyetUjdwKgKB05/It3iqAxupE9ePDt7BcINc8Y1JnMuDI3hXFfwDTYf
irj6NmXHSxVpdOXfkW5qugkAyqZZAJy24ebEhiBcKWhQY7R+KqXO3FeswuB0
fPGqUqzEEgguuP6rWXJ1rcbcfBVWAforW8WUjXJrnzVK6L6IhztYoOJ6LXud
OVhlxYWa5l04hbmGulPNJXtem+1Z/zxiUeucmN3GxhNMhHNopbYfNdvpNZs0
VbaH03B4nbt9GciARsRfvcRad9t1Z9SpOaCd2kKufpnuunvhxisyH1YtxCKf
XoHUpSWb0Q/zlVumFh1B/Pg6NwxXVrlhkYZzvl4s5ktyeZsfwWnHVFkYUPTc
545+AdtObVaAR0QGjWSEDjc3gt1yCldSOVy6urwH1np0sZKDUL14JFLVy2+H
0D2E0Abm16nnfFU4LV9CFUr5Hp0F730ApLZA6/ps/NPArNnv+lD3HpLIhwAS
m5/EbqjbwhQLViy5VmXt0ml0lrpvWNpvQ0tgKWjwa7rAL1itsboeUeoxWxwc
VK/SMV9RC0EsYabXjb5dt2xgs5G74fBZ9Ly6MzodCYuupCbF2/8lrsCrAw4y
LCgNL1DhACH6lI0+9M97xsXi1v6urV3JSFXqtVRSjaTWpmm4pOl1jfqTZp71
6bMp011TXPs0LTumsLL2/EMrazfqdWnGjXjYaNbwgjXbSbXt+Sertj3/Um17
hWrbft3hUYi4ov2tVBJ0aZsSr6+CFM82y1vF1N1zW60SNpluKVwut774NxVH
nm/pxmodwhvBAT2d7lPMjQe1bz1MfknvyJUDMEeDjhZDIXyo0HgtK7iurmna
tTpYGlg0pTaTwvg8tkZb/IDFxV3d7IacKhbxSf/16YF0WtYnoPtj6IHYO1Cm
Ic7oOPsVW7Y1IZAhcTj8xjhSyJpvulCQr6SleYHUbzYuj2ZVusNgQ+5QNINr
7qdBdqTphBHl9NKcE2spl67t3yI+in4PNMowXAdsNZCadbtBB03blRrFdXwb
Bywb+WyBc03pm1hlvprG5zyHtpvWk+p/pifleEAtDba+0INGiVxXQqw9LHip
KqnXvCHWfbHooCx9V1fy2ONztk0leQWc+teedY58xiRFtsSq7JTqyn8k16Fu
CEjoNHPLzjqO7aoHnuoPxEIt8RhPneac5jBQ/moQtbBaZaAbZ9rGNa4EIF4C
R5bqejZl1+Li6NlGyWBaWCPlEgm083CUmXtv5YqYtn2QRyXtYIQ5DjKRtFTb
B0A8tWWBVJfD9nfQZkOtrl8fDl6HPIRGQvugV6P4vTesbbjVLe+uu2U1cMy4
ul+sHsTiOPq+xKbgaaNRqetrfb88Dj5hLSwOgyxhCqbzvsrq8jbpy4QTBEAt
ro0doyY7feOjlXTdipuYjL6ur9jWgvb0c9eZqaFvBIOkEtZQ4PWlfmco6j2g
g3UaKZchrjJTSWK3PU3Y7BpYu64JXK25IGsPMDU0aO1LL84EzF0nDAUoHLl+
Md0J0fQILcswZkMaRDV/65XdFe2GEwM03J3dW2QkcmwbGLWCUEPLOR9xa6/G
VSyneh2mPW4FEnWVcnsNXmhS7USdyrr8VnjlBoyszTVeiDEWODfcdEGfC1Jd
ssLOkZSmZvGHIpa5OYwzWWTahWUi5BzkGqW3ySQLGPOKIhheA+BHM+7OJh6Z
AVCyWELQ4NMnzdyPVYpFm3KONqopuRpxzfpDRmVuKiNGSI5TsIFDqKfb1jFO
JJ721zQ06zbuVW1IWm7/Ml0OTFwZrdGoA/PQdEkh4ELAEuOFhX/feuCBqvT3
9RxMppEhMadqT6NOaXi0J6CGFyUL043Q6TLnLk9Wgs0d7gy26Lr5JB1KR3XD
HGs2Zlh7xwkHkRfh9nadHhLmBOrBpKcoqUMiyEmv0x5eJ0wMg09KcQESlkJo
UWvJsWIGDWSlEWIJZl3UKLBJuLBWQJXb1uX24urWibssxzCkGUtOBjNrTNfN
iNSw0VqRau299tfa60q7qOVu4mNCDkvpRNpM4RDHq5DlwOoJ/mudQZJ+hGOo
BCe5IjkflO6jQ3ucZNTnkVqVMb3H5jVFdidB4O5J1jQlspurHGA6JnmpemBs
86EyswcisIkk5JEF28/e6EtEnFhQUw96u/fVNqb34TG+SozJcUeFWYb9giRp
k3uqmsavUaUFgfUdrBrhz0OOomCSgOYeDXW5BmrWLbqva992+D+/aiweDF/+
gsv2sb6R8UtJPNVXy5dCcqMjNCylu+vpHrQXO5tuVe6zVure2+HmVIVppOSh
WUnhQ/5rG9bWMbpeK9xwSUT2Juk+Dv65NDHdDwINCxml69V7Wedezf4pJlBs
oY3SKtuGWV3tLubWnCxdc3mTBsBEnKgZaXfndwYhMv2KmYUDqolMS+YDcc9R
iP3W2wxPJh6KGmHZLpX31JHuV8IpULlpLKQbmUgWLubcnj89VMdHJ5dn5wfq
5fPjwcWxOj9+cfbjsbp8dnKhLo4PL0/OTtny9KPE/Xd3d3Fv3d2+uqeH3t2F
f75DrnCuXSlilEpYJOXM4MPDF68f9dSRtKCFQxnMKSDzDXOUGRIStCtXQpo6
rGgNMWaYjBMpKIeZsVF8pY456QdJsPYgko83wjBqScYQT6vaov7mr3/d4kBV
qnjjNM0znfFaMuGcN2U67nxpO0V5bec5JctGYrnvO/FZWvmusfypwVBzSu7T
jkcf+J+9w/xw9k2Fo8ebSbopqW3BAsYFsKJcuywkph0k1+pwmkVwRCAyD2b5
f/2fHCSGf0unCUbkF3kuNsY//td/ZgFmKsYB4YC01orgtzAcXWHmID7G117k
EvCOSeUcOOa20DExlshUyzrNjyenp2c/DozEfBjGwGi6p0hr4Hp+Qa/S4fnJ
5QmA5Xf0lMjgz/Z293bNIxcnT08uus8w92v7j7Dygr3GNP+3D/YePtgDFPx/
8od0/f1gAQA=

-->

</rfc>
