<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-core-oscore-piv-enc-02" category="std" consensus="true" submissionType="IETF" updates="8613" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="OSCORE - Stand-in KID and Encrypted PIV">Stand-in Key Identifier and Encrypted Partial IV in the Constrained Application Protocol (CoAP) OSCORE Option</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-piv-enc-02"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>WIT</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 92?>

<t>The security protocol Object Security for Constrained RESTful Environments (OSCORE) provides end-to-end protection of messages exchanged with the Constrained Application Protocol (CoAP). Messages protected with OSCORE include a CoAP OSCORE Option, where the "Partial IV" field specifies the sequence number value used by the message sender and the "kid" field specifies the identifier of the message sender. In order to reduce the information exposed on the wire that can be used for fingerprinting traffic and for tracking endpoints, this document defines a lightweight add-on method that obfuscates certain fields of the OSCORE Option, by encrypting the "Partial IV" field and overwriting the "kid" field with a stand-in identifier. Therefore, it updates RFC 8613. With minor adaptations, the defined method is applicable also to the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE) that protects group communication for CoAP.</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://gitlab.com/crimson84/draft-tiloca-core-oscore-piv-enc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 96?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The security protocol Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> provides end-to-end protection of messages exchanged with the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>. OSCORE operates at the application layer by using CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/> and is independent of the specific transport used to exchange CoAP messages.</t>
      <t>Messages protected with OSCORE include the CoAP OSCORE Option, which specifies information for the message recipient to correctly perform decryption and verification upon message reception. In particular, some of the fields that can be included in the OSCORE Option comprise:</t>
      <ul spacing="normal">
        <li>
          <t>The "Partial IV" field, which specifies the sequence number value used by the sender endpoint when protecting an outgoing message. This field is always present in request messages, while it is typically absent in response messages, with a few exceptions mandating its presence.</t>
        </li>
        <li>
          <t>The "kid" field, which specifies the identifier of the sender endpoint protecting an outgoing message (i.e., the sender endpoint's OSCORE Sender ID). This field is always present in request messages, while it is typically absent in response messages.</t>
        </li>
      </ul>
      <t>Following a message protection with OSCORE, the OSCORE Option added to the message is not encrypted, since its content provides a recipient endpoint with information for processing the OSCORE-protected incoming message.</t>
      <t>However, the information conveyed in plaintext by the "Partial IV" and "kid" fields could be used for fingerprinting traffic from OSCORE endpoints, e.g., by giving hints about the order of messages sent by an endpoint, from which behavioral patterns could be implied. Also, such information could be used to perform trivial tracking of OSCORE endpoints across different network paths, by correlating the values of those fields that are observed in those network paths (e.g., following a network path migration, possibly across different network segments).</t>
      <t>In order to reduce the information exposed on the wire that can be used for fingerprinting traffic and for tracking endpoints, this document updates <xref target="RFC8613"/> and defines a lightweight add-on method that obfuscates certain fields of the OSCORE Option, by encrypting the "Partial IV" field and overwriting the "kid" field with a stand-in identifier.</t>
      <t>This method does not require in-band signaling and its use does not arbitrarily change on a per-message basis.</t>
      <t>Upon establishing an OSCORE Security Context, the communicating OSCORE endpoints already have an agreement about obfuscating the two fields of the OSCORE Option when that Security Context is used, for every OSCORE-protected message that includes the "Partial IV" field or the "kid" field. In the interest of specific use cases, such an agreement can be about always obfuscating both the "Partial IV" and "kid" fields, or instead about always obfuscating only the "Partial IV" field.</t>
      <t>Like for the overall protection of messages with OSCORE, this method is agnostic of how exactly the OSCORE Security Context was established and of how the agreement on using this method was reached. Nevertheless, this document also defines means that endpoints can use to reach that agreement. Absent an explicit agreement, the "Partial IV" and "kid" fields in the OSCORE Option are not obfuscated and retain their original values, in order to preserve interoperability.</t>
      <t>With minor adaptations to what is defined when OSCORE is used, the method defined in this document is applicable also to the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/> that protects group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>. In the interest of such a case, this document also defines means to align the members of an OSCORE group about obfuscating the "Partial IV" and "kid" fields of protected messages exchanged within the group.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts related to CoAP <xref target="RFC7252"/>, Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/>, COSE <xref target="RFC9052"/>, OSCORE <xref target="RFC8613"/>, and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>This document refers also to the following terminology.</t>
        <ul spacing="normal">
          <li>
            <t>Ordinary Security Context: an OSCORE Security Context <xref target="RFC8613"/> or a Group OSCORE Security Context <xref target="I-D.ietf-core-oscore-groupcomm"/> such that, when employed to process a message, the method defined in this document is not used to perform/reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option. An Ordinary Security Context does not include an Obfuscation Key in the Common Context (see <xref target="sec-obfuscation-key"/>).</t>
          </li>
          <li>
            <t>Obfuscating Security Context: an OSCORE Security Context or a Group OSCORE Security Context such that, when employed to process a message, the method defined in this document is used to perform/reverse the obfuscation of the "Partial IV" field in the OSCORE Option. An Obfuscating Security Context includes an Obfuscation Key in the Common Context (see <xref target="sec-obfuscation-key"/>).</t>
          </li>
          <li>
            <t>Incognito Security Context: an Obfuscating Security Context such that, when employed to process a message, the method defined in this document is also used to perform/reverse the obfuscation of the "kid" field in the OSCORE Option.  </t>
            <t>
Unless a Security Context is an Incognito Security Context, the "kid" field (if present) in the OSCORE Option is left unaltered.  </t>
            <t>
The particular way to mark an Obfuscating Security Context as an Incognito Security Context is implementation specific. For example, implementations can use an additional parameter in the Security Context.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-obfuscation-key">
      <name>Obfuscation Key</name>
      <t>When obfuscation is enabled for the OSCORE Option, the (Group) OSCORE Security Context is extended with one additional parameter in the Common Context. The result is an Obfuscating Security Context.</t>
      <t>The new parameter Obfuscation Key specifies the encryption key for deriving two separate keystreams, namely PIV_KEYSTREAM and KID_KEYSTREAM. On the sender side, PIV_KEYSTREAM and KID_KEYSTREAM are used to obfuscate the "Partial IV" and "kid" fields, respectively, when those are included in an outgoing message protected with (Group) OSCORE. On the recipient side, the same keystreams are used to reverse the obfuscation of the two fields.</t>
      <t>The Obfuscation Key is derived as defined for the Sender/Recipient Keys in <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>, with the following differences.</t>
      <ul spacing="normal">
        <li>
          <t>The 'id' element of the 'info' array is the empty byte string.</t>
        </li>
        <li>
          <t>The 'type' element of the 'info' array is "OBFKey". The label is an ASCII string and does not include a trailing NUL byte.</t>
        </li>
        <li>
          <t>If the Security Context is used for Group OSCORE and the Group Encryption Algorithm in the Common Context is set (see <xref section="2.1.7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), then:  </t>
          <ul spacing="normal">
            <li>
              <t>The 'alg_aead' element of the 'info' array specifies the Group Encryption Algorithm from the Common Context encoded as a CBOR integer or text string, consistently with the "Value" field in the entry of the "COSE Algorithms" Registry for this algorithm <xref target="COSE.Algorithms"/>.</t>
            </li>
            <li>
              <t>The L parameter of the HKDF and the 'L' element of the 'info' array are the length in bytes of the key for the Group Encryption Algorithm specified in the Common Context. While the obtained Obfuscation Key is never used with the Group Encryption Algorithm, its length was chosen to obtain a matching level of security.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>If the Security Context is used for Group OSCORE and the Group Encryption Algorithm in the Common Context is not set (see <xref section="2.1.7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), then:  </t>
          <ul spacing="normal">
            <li>
              <t>The 'alg_aead' element of the 'info' array specifies the AEAD Algorithm from the Common Context (see <xref section="2.1.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) encoded as a CBOR integer or text string, consistently with the "Value" field in the entry of the "COSE Algorithms" Registry for this algorithm <xref target="COSE.Algorithms"/>.</t>
            </li>
            <li>
              <t>The L parameter of the HKDF and the 'L' element of the 'info' array are the length in bytes of the key for the AEAD Algorithm specified in the Common Context. While the obtained Obfuscation Key is never used with the AEAD Algorithm, its length was chosen to obtain a matching level of security.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="sec-oscore">
      <name>Processing in OSCORE</name>
      <t>This section describes how the method defined in this document is specifically employed for messages protected with OSCORE <xref target="RFC8613"/>.</t>
      <section anchor="sec-oscore-sender">
        <name>Sender Side</name>
        <t>When a sender endpoint uses a fresh Sender Sequence Number value from its own Sender Context to protect an outgoing message, that Sender Sequence Number value <bcp14>MUST</bcp14> be at least 65536. Consequently, the "Partial IV" field of the OSCORE Option will have a length of at least 3 bytes. As an exception, this requirement does not apply to the special case discussed in <xref target="edhoc-oscore-request"/>.</t>
        <t>When composing a protected outgoing message MSG, the OSCORE Option <bcp14>MUST NOT</bcp14> include the "s" and "kid context" fields. As an exception, this requirement does not apply to the special case discussed in <xref target="six-tisch"/>.</t>
        <t>Once MSG is composed, if at least one among the "Partial IV" and "kid" fields is included in the OSCORE Option (see <xref section="6.1" sectionFormat="of" target="RFC8613"/>), the sender endpoint performs the following steps.</t>
        <ol spacing="normal" type="1"><li>
            <t>Compose SAMPLE_1 as the first N bytes of the CoAP payload of MSG, where N = min(LENGTH, 16) and LENGTH denotes the length in bytes of the CoAP payload of MSG.  </t>
            <t>
Note that the CoAP payload is the ciphertext of the COSE object and LENGTH is guaranteed to be at least 9.</t>
          </li>
          <li>
            <t>Compose the 16-byte INPUT_1 as follows:  </t>
            <ul spacing="normal">
              <li>
                <t>If the length of SAMPLE_1 is less than 16 bytes, INPUT_1 is obtained by left-padding SAMPLE_1 with zeroes to exactly 16 bytes.</t>
              </li>
              <li>
                <t>If the length of SAMPLE_1 is 16 bytes, then INPUT_1 takes SAMPLE_1.</t>
              </li>
            </ul>
            <t>
If the OSCORE Option of MSG includes the "Partial IV" field, move to Step 3. Otherwise, move to Step 6.</t>
          </li>
          <li>
            <t>Compute the 16-byte PIV_KEYSTREAM as below:  </t>
            <t>
PIV_KEYSTREAM = AES-ECB(ENC_KEY, INPUT_1)  </t>
            <t>
where:  </t>
            <ul spacing="normal">
              <li>
                <t>AES-ECB is the AES algorithm in ECB mode <xref target="AES"/>.</t>
              </li>
              <li>
                <t>ENC_KEY is the Obfuscation Key from the Common Context of the Security Context used to produce MSG (see <xref target="sec-obfuscation-key"/>). ENC_KEY is used as the encryption key for the AES-ECB encryption.</t>
              </li>
              <li>
                <t>INPUT_1 is the result of Step 2. It is used as the plaintext for the AES-ECB encryption.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Compute the ENC_PIV value, by XORing with each other:  </t>
            <ul spacing="normal">
              <li>
                <t>The PIV value encoded within the "Partial IV" field of the OSCORE Option of MSG; and</t>
              </li>
              <li>
                <t>The Q bytes from PIV_KEYSTREAM's start, where Q is the length in bytes of the "Partial IV" field and PIV_KEYSTREAM is the result of Step 3.</t>
              </li>
            </ul>
            <t>
For example, if the PIV value encoded within the "Partial IV" field of the OSCORE Option of MSG is 0x001122 (Q = 3 bytes) and PIV_KEYSTREAM is 0xffeeddccbbaa99887766554433221100 (16 bytes), then the bytes of PIV_KEYSTREAM to XOR with the PIV value are 0xffeedd.</t>
          </li>
          <li>
            <t>In the "Partial IV" field of the OSCORE Option of MSG, replace its current PIV value with the ENC_PIV value computed at Step 4.  </t>
            <t>
If the OSCORE Option of MSG includes the "kid" field, then move to Step 6. Otherwise, terminate this algorithm.</t>
          </li>
          <li>
            <t>If the Security Context used to produce MSG is an Incognito Security Context, compose the 16-byte INPUT_2, by taking INPUT_1 from Step 2 and negating its last bit. Then, move to Step 7.  </t>
            <t>
Otherwise, terminate this algorithm.</t>
          </li>
          <li>
            <t>Compute the 16-byte KID_KEYSTREAM as below:  </t>
            <t>
KID_KEYSTREAM = AES-ECB(ENC_KEY, INPUT_2)  </t>
            <t>
where:  </t>
            <ul spacing="normal">
              <li>
                <t>AES-ECB is the AES algorithm in ECB mode <xref target="AES"/>.</t>
              </li>
              <li>
                <t>ENC_KEY is the Obfuscation Key from the Common Context of the Security Context used to produce MSG (see <xref target="sec-obfuscation-key"/>). ENC_KEY is used as the encryption key for the AES-ECB encryption.</t>
              </li>
              <li>
                <t>INPUT_2 is the result of Step 6. It is used as the plaintext for the AES-ECB encryption.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Compute the 3-byte STAND_IN_KID value, by XORing with each other:  </t>
            <ul spacing="normal">
              <li>
                <t>The 3 bytes from LATEST_PIV's start, where LATEST_PIV is determined as follows.      </t>
                <ul spacing="normal">
                  <li>
                    <t>If the OSCORE Option of MSG includes the "Partial IV" field, then LATEST_PIV is the ENC_PIV value computed at Step 4. Otherwise,</t>
                  </li>
                  <li>
                    <t>MSG is a response and LATEST_PIV is the value encoded within the "Partial IV" field of the OSCORE Option of the corresponding request as it was sent on the wire (i.e., in its obfuscated form).</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The 3 bytes from KID_KEYSTREAM's start, where KID_KEYSTREAM is the result of Step 7.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>In the "kid" field of the OSCORE Option of MSG, replace the current KID value with the STAND_IN_KID value computed at Step 8.  </t>
            <t>
Unless the original KID value had a length of 3 bytes, this step alters the length of the OSCORE Option value. In such a case, the sender endpoint <bcp14>MUST</bcp14> update the "Option Length" field of the OSCORE Option accordingly (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>).</t>
          </li>
        </ol>
        <t>Finally, the sender endpoint transmits MSG as expected.</t>
      </section>
      <section anchor="sec-oscore-recipient">
        <name>Recipient Side</name>
        <t>Upon receiving a protected incoming message MSG, the recipient endpoint has to determine the OSCORE Security Context to use for decrypting and verifying MSG (see <xref target="context-retrieval"/>).</t>
        <t>If a Security Context CTX is found and CTX is an Obfuscating Security Context, then the recipient endpoint uses CTX to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG (see <xref target="reverse-obfuscation"/>). After that, the recipient endpoint uses CTX to decrypt and verify MSG.</t>
        <section anchor="context-retrieval">
          <name>Retrieving the Security Context to Use</name>
          <t>If the recipient endpoint is a client, hence MSG is a response, the Security Context CTX to use is the same one that was used to protect the request to which MSG replies. That is, CTX is retrieved by leveraging the CoAP Token value that is specified in the "Token" field of MSG and was specified in the "Token" field of the corresponding request.</t>
          <t>Then, the following two cases are possible:</t>
          <ul spacing="normal">
            <li>
              <t>CTX is an Ordinary Security Context. In this case, the client uses CTX to decrypt and verify MSG, as defined in <xref section="8.4" sectionFormat="of" target="RFC8613"/>.</t>
            </li>
            <li>
              <t>CTX is an Obfuscating Security Context. In this case, the client performs the steps defined in <xref target="reverse-obfuscation"/>, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG by using CTX. Building on the result, the client uses CTX to decrypt and verify MSG, as defined in <xref section="8.4" sectionFormat="of" target="RFC8613"/>.</t>
            </li>
          </ul>
          <t>If the recipient endpoint is a server, hence MSG is a request, the Security Context CTX to use is determined as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>If the server stores at least one Ordinary Security Context, then move to Step 2. Otherwise, move to Step 3.</t>
            </li>
            <li>
              <t>The server assumes that the "Partial IV" and "kid" fields in the OSCORE Option of MSG were not obfuscated. Then, the server attempts to retrieve a Security Context as defined in <xref section="8.2" sectionFormat="of" target="RFC8613"/>.  </t>
              <t>
If this results in retrieving a Security Context CTX and CTX is an Ordinary Security Context, then the server uses CTX to decrypt and verify MSG, as defined in <xref section="8.2" sectionFormat="of" target="RFC8613"/>. In case of successful decryption and verification, this algorithm terminates and the server continues processing MSG as expected.  </t>
              <t>
Instead, if no such CTX is found or if MSG is not processed successfully, the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If the server stores at least one Obfuscating Security Context, the server <bcp14>MUST NOT</bcp14> presently reply with any of the optional 4.01 (Unauthorized) or 4.00 (Bad Request) error responses defined in Sections <xref target="RFC8613" section="7.4" sectionFormat="bare"/> and <xref target="RFC8613" section="8.2" sectionFormat="bare"/> of <xref target="RFC8613"/>. Then, this algorithm moves to Step 4.</t>
                </li>
                <li>
                  <t>Otherwise, the server performs the same error handling as defined in Sections <xref target="RFC8613" section="7.4" sectionFormat="bare"/> and <xref target="RFC8613" section="8.2" sectionFormat="bare"/> of <xref target="RFC8613"/>. Then, this algorithm terminates.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the server stores at least one Obfuscating Security Context, then move to Step 4.  </t>
              <t>
Otherwise, the server performs the same error handling as defined at Step 2 of <xref section="8.4" sectionFormat="of" target="RFC8613"/> for the case where a Security Context is not found. Then, this algorithm terminates.</t>
            </li>
            <li>
              <t>Compose SAMPLE_1 by means of the same method at Step 1 of <xref target="sec-oscore-sender"/>, with reference to the present incoming message MSG.</t>
            </li>
            <li>
              <t>Compose the 16-byte INPUT_1 by means of the same method at Step 2 of <xref target="sec-oscore-sender"/>, using as SAMPLE_1 the result of Step 4 of the present algorithm.</t>
            </li>
            <li>
              <t>Compose the 16-byte INPUT_2, by taking INPUT_1 from Step 5 and negating its last bit.</t>
            </li>
            <li>
              <t>Select a Security Context CTX, such that CTX is an Obfuscating Security Context and has not been tested yet during this execution of the present algorithm.  </t>
              <t>
In case the recipient endpoint does not store any Incognito Security Contexts, the selection process can effectively be the one used in <xref section="8.2" sectionFormat="of" target="RFC8613"/>.  </t>
              <t>
If no such CTX is found, then move to Step 12. Otherwise, the selected CTX is marked as tested and the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If CTX is an Incognito Security Context, check the length of the "kid" field of the OSCORE Option of MSG.      </t>
                  <t>
If the length is 3 bytes, move to Step 8. Otherwise, perform Step 7 again.</t>
                </li>
                <li>
                  <t>If CTX is not an Incognito Security Context, check whether the value encoded in the "kid" field of the OSCORE Option of MSG is equal to the Recipient ID specified in the Recipient Context of CTX.      </t>
                  <t>
In case the two values are equal, CTX is the Security Context to use for decrypting and verifying MSG, and this algorithm moves to Step 11. Otherwise, perform Step 7 again.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the 16-byte KID_KEYSTREAM by means of the same method at Step 7 of <xref target="sec-oscore-sender"/>. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>ENC_KEY is the Obfuscation Key from the Common Context of the latest CTX selected at Step 7 of the present algorithm.</t>
                </li>
                <li>
                  <t>INPUT_2 is the result of Step 6 of the present algorithm.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the 3-byte STAND_IN_KID value, by XORing with each other:  </t>
              <ul spacing="normal">
                <li>
                  <t>The 3 bytes from ENC_PIV's start, where ENC_PIV is the value encoded within the "Partial IV" field of the OSCORE Option of MSG.</t>
                </li>
                <li>
                  <t>The 3 bytes from KID_KEYSTREAM's start, where KID_KEYSTREAM is the result of Step 8.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the STAND_IN_KID value computed at Step 9 is not equal to the value encoded in the "kid" field of the OSCORE Option of MSG, then move to Step 7.  </t>
              <t>
Otherwise, the latest CTX selected at Step 7 is the Security Context to use for decrypting and verifying MSG, and this algorithm moves to Step 11.</t>
            </li>
            <li>
              <t>Run the algorithm in <xref target="reverse-obfuscation"/>, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG, by using the latest CTX selected at Step 7.  </t>
              <t>
Building on the result, the server uses CTX to decrypt and verify MSG, as defined in <xref section="8.2" sectionFormat="of" target="RFC8613"/>. In case of successful decryption and verification, this algorithm terminates and the server continues processing MSG as expected.  </t>
              <t>
Otherwise, if MSG is not processed successfully, the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>The server <bcp14>MUST NOT</bcp14> presently reply with any of the optional 4.01 (Unauthorized) or 4.00 (Bad Request) error responses defined in Sections <xref target="RFC8613" section="7.4" sectionFormat="bare"/> and <xref target="RFC8613" section="8.2" sectionFormat="bare"/> of <xref target="RFC8613"/>.</t>
                </li>
                <li>
                  <t>The OSCORE Option of MSG is restored to be as it was before running the algorithm in <xref target="reverse-obfuscation"/>.</t>
                </li>
                <li>
                  <t>This algorithm moves to Step 7.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If, since Step 4 of this execution of the present algorithm, the server has performed and failed at least one decryption and verification of MSG (see Step 6 of <xref section="8.2" sectionFormat="of" target="RFC8613"/>), the server performs the same error handling defined at Step 6 of <xref section="8.2" sectionFormat="of" target="RFC8613"/> for the case where decryption has failed. Then, this algorithm terminates. Otherwise,</t>
                </li>
                <li>
                  <t>If, since Step 4 of this execution of the present algorithm, the server has performed and failed at least one replay check on MSG (see Step 3 of <xref section="8.2" sectionFormat="of" target="RFC8613"/>), the server performs the same error handling defined in <xref section="7.4" sectionFormat="of" target="RFC8613"/> for the case where a replay has been detected. Then, this algorithm terminates. Otherwise,</t>
                </li>
                <li>
                  <t>The server performs the same error handling defined at Step 2 of <xref section="8.2" sectionFormat="of" target="RFC8613"/> for the case where a Security Context is not found.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="reverse-obfuscation">
          <name>Reversing the Field Obfuscation</name>
          <t>Given an Obfuscating Security Context CTX that was retrieved according to what is specified in <xref target="context-retrieval"/>, the recipient endpoint performs the following steps, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of the protected incoming message MSG.</t>
          <ol spacing="normal" type="1"><li>
              <t>If the OSCORE Option of MSG includes the "kid" field and CTX is an Incognito Security Context, then move to Step 2. Otherwise, move to Step 3.</t>
            </li>
            <li>
              <t>In the "kid" field of the OSCORE Option of MSG, replace the current STAND_IN_KID value with the Recipient ID specified in the Recipient Context of CTX.  </t>
              <t>
Unless the Recipient ID has a length of 3 bytes, this step alters the length of the OSCORE Option value. In such a case, the recipient endpoint <bcp14>MUST</bcp14> update the "Option Length" field of the OSCORE Option accordingly (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>).</t>
            </li>
            <li>
              <t>If the OSCORE Option of MSG includes the "Partial IV" field, move to Step 4. Otherwise, terminate this algorithm.</t>
            </li>
            <li>
              <t>Compute the 16-byte PIV_KEYSTREAM by means of the same method defined at Step 3 of <xref target="sec-oscore-sender"/>. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>ENC_KEY is the Obfuscation Key from the Common Context of the Security Context CTX that is used during this execution of the present algorithm.</t>
                </li>
                <li>
                  <t>INPUT_1 is composed by means of the same method defined at Step 5 of <xref target="context-retrieval"/>. Note that, if the recipient endpoint is a server, then INPUT_1 was already computed when actually performing Step 5 of <xref target="context-retrieval"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the PIV value, by XORing with each other:  </t>
              <ul spacing="normal">
                <li>
                  <t>The ENC_PIV value encoded within the "Partial IV" field of the OSCORE Option of MSG; and</t>
                </li>
                <li>
                  <t>The Q bytes from PIV_KEYSTREAM's start, where Q is the length in bytes of the "Partial IV" field and PIV_KEYSTREAM is the result of Step 4.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>In the "Partial IV" field of the OSCORE Option of MSG, replace its current ENC_PIV value with the PIV value computed at Step 5.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="special-cases">
        <name>Special Cases</name>
        <t>This section discusses some special cases where the use of the method defined in this document deviates from what is specified in <xref target="sec-oscore-sender"/> and <xref target="sec-oscore-recipient"/>.</t>
        <section anchor="edhoc-oscore-request">
          <name>EDHOC + OSCORE Request</name>
          <t>Two endpoints can run the authenticated key agreement Ephemeral Diffie-Hellman over COSE (EDHOC) <xref target="RFC9528"/> in order to establish an OSCORE Security Context (see <xref section="A.1" sectionFormat="of" target="RFC9528"/>). In particular, EDHOC messages can be transported over CoAP (see <xref section="A.2" sectionFormat="of" target="RFC9528"/>).</t>
          <t>When doing so, if the endpoint that sends the first EDHOC message acts as a CoAP client, it is possible to use the optimized workflow defined in <xref section="3" sectionFormat="of" target="RFC9668"/>. In such a case, the first OSCORE-protected CoAP request sent by the client additionally embeds the final EDHOC message, and it is protected with the OSCORE Security Context established from the present and still ongoing EDHOC session.</t>
          <t>Upon receiving such an EDHOC + OSCORE request, the server first extracts and processes the EDHOC message embedded therein, completes the EDHOC session, establishes the OSCORE Security Context, and finally uses the latter to decrypt and verify the OSCORE-protected CoAP request.</t>
          <t>When using this optimized workflow, the method defined in this document cannot be used to obfuscate the "Partial IV" and "kid" fields in the OSCORE Option of the EDHOC + OSCORE request.</t>
          <t>Therefore, the following applies for the OSCORE Option of that specific request:</t>
          <ul spacing="normal">
            <li>
              <t>The "Partial IV" field conveys the Sender Sequence Number of the client in plaintext. As an exception to the requirement defined in <xref target="sec-oscore-sender"/>, the "Partial IV" field can have a length smaller than 3 bytes. In fact, it is expected to have a length of 1 byte and to encode the Sender Sequence Number 0.</t>
            </li>
            <li>
              <t>The "kid" field conveys the actual OSCORE Sender ID of the client, which the server offered earlier in the EDHOC session as its own EDHOC connection identifier C_R. Upon receiving the EDHOC + OSCORE request, the server needs to retrieve such an identifier as-is from the request, in order to correctly retrieve the EDHOC session and complete it, before establishing the OSCORE Security Context shared with the client.  </t>
              <t>
That is, even if the OSCORE Security Context under establishment is an Incognito Security Context, the "kid" field in the OSCORE Option of the EDHOC + OSCORE request is not obfuscated.  </t>
              <t>
Note that, if EDHOC is instead run as per the original workflow (see <xref section="A.2.1" sectionFormat="of" target="RFC9528"/>, the OSCORE Sender ID of the client is anyway exposed at least once, since C_R is prepended to EDHOC message_3 within the CoAP payload of a request sent by the client.</t>
            </li>
          </ul>
        </section>
        <section anchor="kudos">
          <name>KUDOS</name>
          <t>Two endpoints can use Key Update for OSCORE (KUDOS) <xref target="I-D.ietf-core-oscore-key-update"/>, a lightweight procedure for updating their OSCORE keying material by establishing a new OSCORE Security Context.</t>
          <t>Given the Security Context CTX_OLD to be replaced, there are two possible types of KUDOS messages that are exchanged during a KUDOS execution:</t>
          <ul spacing="normal">
            <li>
              <t>A divergent KUDOS message is protected with a temporary OSCORE Security Context CTX_TEMP, which is derived from CTX_OLD.</t>
            </li>
            <li>
              <t>A convergent KUDOS message is protected with the OSCORE Security Context CTX_NEW, which is derived from CTX_OLD and is intended to replace CTX_OLD.</t>
            </li>
          </ul>
          <t>When using the method defined in this document to obfuscate the "Partial IV" and "kid" fields in the OSCORE Option of a KUDOS message, the following applies.</t>
          <ul spacing="normal">
            <li>
              <t>The Obfuscation Key to use <bcp14>MUST</bcp14> be the one specified in the Common Context of the Security Context CTX_OLD, from which the Security Context CTX_TEMP (CTX_NEW) is derived for protecting a divergent (convergent) KUDOS message.  </t>
              <t>
That is, with reference to a divergent (convergent) KUDOS message, the Obfuscation Key to use is not the one specified in the Common Context of the Security Context CTX_TEMP (CTX_NEW) that is used to protect the message.</t>
            </li>
          </ul>
        </section>
        <section anchor="six-tisch">
          <name>6TiSCH</name>
          <t>The Constrained Join Protocol (CoJP) defined in <xref target="RFC9031"/> specifies a "secure join" solution for a new device, called a "pledge", to securely join a 6TiSCH network where communications are protected with OSCORE. The Join process is assisted by a central entity called Join Registrar/Coordinator (JRC).</t>
          <t>In particular, as defined in <xref section="7.3" sectionFormat="of" target="RFC9031"/>, the following holds for a given pledge and the JRC using OSCORE:</t>
          <ul spacing="normal">
            <li>
              <t>The OSCORE ID Context in the shared OSCORE Security Context is set to the pledge identifier.</t>
            </li>
            <li>
              <t>The OSCORE Sender ID of the pledge is set to the empty byte string.</t>
            </li>
            <li>
              <t>The OSCORE Sender ID of the JRC is set to the byte string 0x4a5243 ("JRC" in ASCII).</t>
            </li>
          </ul>
          <t>In the Join Request that the pledge sends to the JRC, the OSCORE Option includes the "s" and "kid context" fields, with the latter encoding the OSCORE ID Context.</t>
          <t>When using the method defined in this document to obfuscate the "Partial IV" and "kid" fields in the OSCORE Option of CoJP messages, the following applies:</t>
          <ul spacing="normal">
            <li>
              <t>If the "s" and "kid context" fields are present in the OSCORE Option of an outgoing CoJP message, the sender endpoint <bcp14>MUST</bcp14> remove the "kid context" field and <bcp14>MUST</bcp14> update the "s" field to encode the value 0.  </t>
              <t>
This step alters the length of the OSCORE Option value. Therefore, the sender endpoint <bcp14>MUST</bcp14> update the "Option Length" field of the OSCORE Option accordingly (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>).</t>
            </li>
            <li>
              <t>If the OSCORE Option of an incoming CoJP message MSG does not include the "kid context" field and includes the "s" field encoding the value 0, the recipient endpoint performs the following steps in addition to those compiled in <xref target="reverse-obfuscation"/>:  </t>
              <ul spacing="normal">
                <li>
                  <t>Add the "kid context" field to the OSCORE Option of MSG.</t>
                </li>
                <li>
                  <t>In the "kid context" field of the OSCORE Option, set as value the ID Context that is specified in the OSCORE Security Context CTX to be used for decrypting and verifying MSG.</t>
                </li>
                <li>
                  <t>In the "s" field of the OSCORE Option, set as value the length in bytes of the "kid context" field.</t>
                </li>
              </ul>
              <t>
Unless the ID Context has a length of 0 bytes, this step alters the length of the OSCORE Option value. In such a case, the recipient endpoint <bcp14>MUST</bcp14> update the "Option Length" field of the OSCORE Option accordingly (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>).</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="sec-group-oscore">
      <name>Processing in Group OSCORE</name>
      <t>This section describes how the method defined in this document is specifically employed for messages protected with Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      <t>In particular, the following presents the differences that apply with respect to the case where OSCORE is used (see <xref target="sec-oscore"/>).</t>
      <section anchor="group-oscore-keying-material">
        <name>Keying Material</name>
        <t>When the Group OSCORE Security Context is an Obfuscating Security Context, it is further extended with one additional parameter Obfuscation Sender Key in the Sender Context (see <xref target="obf-sender-key"/>) and with one additional parameter Obfuscation Recipient Key in each Recipient Context (see <xref target="obf-recipient-key"/>).</t>
        <section anchor="obf-sender-key">
          <name>Obfuscation Sender Key</name>
          <t>Within the Sender Context, the new parameter Obfuscation Sender Key specifies the encryption key for deriving the keystreams PIV_KEYSTREAM and KID_KEYSTREAM, when those are used to obfuscate the "Partial IV" and "kid" fields in the OSCORE Option of an outgoing message.</t>
          <t>The Obfuscation Sender Key is derived as the output OKM of an HKDF-Expand step <xref target="RFC5869"/>, i.e., OKM = HKDF-Expand(PRK, info, L), where:</t>
          <ul spacing="normal">
            <li>
              <t>The HKDF used is the HKDF Algorithm specified in the Common Context.</t>
            </li>
            <li>
              <t>PRK is the Obfuscation Key from the Common Context.</t>
            </li>
            <li>
              <t>info is the Sender ID specified in the Sender Context.</t>
            </li>
            <li>
              <t>L is the length in bytes of the Obfuscation Key from the Common Context.</t>
            </li>
          </ul>
        </section>
        <section anchor="obf-recipient-key">
          <name>Obfuscation Recipient Key</name>
          <t>Within a given Recipient Context, the new parameter Obfuscation Recipient Key specifies the encryption key for deriving the keystreams PIV_KEYSTREAM and KID_KEYSTREAM, when those are used to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of an incoming message.</t>
          <t>The Obfuscation Recipient Key is derived as the output OKM of an HKDF-Expand step <xref target="RFC5869"/>, i.e., OKM = HKDF-Expand(PRK, info, L), where:</t>
          <ul spacing="normal">
            <li>
              <t>The HKDF used is the HKDF Algorithm specified in the Common Context.</t>
            </li>
            <li>
              <t>PRK is the Obfuscation Key from the Common Context.</t>
            </li>
            <li>
              <t>info is the Recipient ID specified in the Recipient Context.</t>
            </li>
            <li>
              <t>L is the length in bytes of the Obfuscation Key from the Common Context.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="group-oscore-sender-side">
        <name>Sender Side</name>
        <t>When composing a protected outgoing message MSG, the OSCORE Option includes the "s" and "kid context" fields according to what is specified for Group OSCORE in <xref target="I-D.ietf-core-oscore-groupcomm"/>. That is, the OSCORE Option always includes those fields in a request and may include those fields in a response.</t>
        <t>Once MSG is composed, if at least one among the "Partial IV" and "kid" fields is included in the OSCORE Option (see <xref section="6.1" sectionFormat="of" target="RFC8613"/>), the sender endpoint performs the same steps of <xref target="sec-oscore-sender"/>, with the following differences:</t>
        <ul spacing="normal">
          <li>
            <t>At Step 1, LENGTH is guaranteed to be at least 9. In particular:  </t>
            <ul spacing="normal">
              <li>
                <t>If MSG is protected with the group mode of Group OSCORE (see <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), then the CoAP payload is the ciphertext of the COSE object concatenated with the encrypted countersignature.</t>
              </li>
              <li>
                <t>If MSG is protected with the pairwise mode of Group OSCORE (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), then the CoAP payload is the ciphertext of the COSE object.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>At Step 3, ENC_KEY is the Obfuscation Sender Key from the Sender Context.</t>
          </li>
          <li>
            <t>At Step 7, ENC_KEY is the Obfuscation Sender Key from the Sender Context.</t>
          </li>
        </ul>
        <t><xref target="deterministic-requests"/> defines an exceptional case where a value smaller than 65536 is used as Sender Sequence Number and the "kid" field of the OSCORE Option is not overwritten by a STAND_IN_KID value, even if the Group OSCORE Security Context is an Incognito Security Context.</t>
      </section>
      <section anchor="group-oscore-recipient-side">
        <name>Recipient Side</name>
        <t>Upon receiving a protected incoming message MSG, the recipient endpoint determines the Group OSCORE Security Context CTX to use according to what is specified in <xref target="I-D.ietf-core-oscore-groupcomm"/>, i.e.:</t>
        <ul spacing="normal">
          <li>
            <t>If MSG is a request, CTX is retrieved by leveraging the Group Identifier value (Gid) of the group, which is encoded within the "kid context" field in the OSCORE Option of MSG.</t>
          </li>
          <li>
            <t>If MSG is a response, CTX is the same Group OSCORE Security Context that was used to protect the request to which MSG replies. That is, CTX is retrieved by leveraging the CoAP Token value that is specified in the "Token" field of MSG and was specified in the "Token" field of the corresponding request. The possible presence of the "kid context" field in the OSCORE Option can further aid the client, e.g., in case the group has been rekeyed and its Gid has changed.</t>
          </li>
        </ul>
        <t>If the retrieved Group OSCORE Security Context CTX is an Obfuscating Security Context, then the method defined in this document is used to obfuscate the "Partial IV" field in the OSCORE Option of every protected message exchanged within the group. Furthermore, if CTX is specifically an Incognito Security Context, then the method defined in this document is used to obfuscate also the "kid" field in the OSCORE Option of every protected message exchanged within the group.</t>
        <t>Consequently, within CTX, the recipient endpoint has to determine the specific Recipient Context REC_CTX to use for decrypting and verifying MSG (see <xref target="group-oscore-retrieve-rec-ctx"/>).</t>
        <t>Then, the recipient endpoint uses REC_CTX to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG (see <xref target="group-oscore-reverse-obfuscation"/>). After that, the recipient endpoint uses REC_CTX to decrypt and verify MSG.</t>
        <section anchor="group-oscore-retrieve-rec-ctx">
          <name>Retrieving the Recipient Context to Use</name>
          <t>Given the retrieved Group OSCORE Security Context CTX, the following describes how the recipient endpoint retrieves from CTX the specific Recipient Context REC_CTX to use.</t>
          <t>If the recipient endpoint is a client, hence MSG is a response, the client is able to simply retrieve the Recipient Context REC_CTX to use, in case both the following conditions apply:</t>
          <ul spacing="normal">
            <li>
              <t>The request corresponding to MSG was protected with the pairwise mode of Group OSCORE; and</t>
            </li>
            <li>
              <t>The "kid" field is not included in the OSCORE Option of MSG.</t>
            </li>
          </ul>
          <t>In such a case, REC_CTX is the Recipient Context associated with the other endpoint for which the request corresponding to MSG was protected. That is, this client protected such request by using its Pairwise Sender Key associated with that other endpoint. Consequently, the client performs the steps defined in <xref target="group-oscore-reverse-obfuscation"/>, in order to reverse the obfuscation of the "Partial IV" field (if present) in the OSCORE Option of MSG by using REC_CTX. Building on the result, the client uses REC_CTX to decrypt and verify MSG, as defined in <xref target="I-D.ietf-core-oscore-groupcomm"/>. The specific operations to perform depend on whether MSG is protected with the group mode or with the pairwise mode of Group OSCORE.</t>
          <t>In any other case, the recipient endpoint determines the Recipient Context REC_CTX to use as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>If CTX is an Incognito Security Context and the length of the "kid" field of the OSCORE Option of MSG is different from 3 bytes, move to Step 17.  </t>
              <t>
Otherwise, compose SAMPLE_1 as the first N bytes of the CoAP payload of MSG, where N = min(LENGTH, 16) and LENGTH denotes the length in bytes of the CoAP payload of MSG.  </t>
              <t>
The same considerations about LENGTH from <xref target="group-oscore-sender-side"/> apply.</t>
            </li>
            <li>
              <t>Compose the 16-byte INPUT_1 by means of the same method at Step 2 of <xref target="sec-oscore-sender"/>, using as SAMPLE_1 the result of Step 1 of the present algorithm.</t>
            </li>
            <li>
              <t>Compose the 16-byte INPUT_2, by taking INPUT_1 from Step 2 and negating its last bit.</t>
            </li>
            <li>
              <t>Within CTX, select a Recipient Context REC_CTX that has not been tested yet during this execution of the present algorithm.  </t>
              <t>
In case CTX is not an Incognito Security Context, the selection process can effectively be the one used in <xref section="6" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.  </t>
              <t>
If no such REC_CTX is found, then move to Step 9. Otherwise, the selected REC_CTX is marked as tested and the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If CTX is an Incognito Security Context, move to Step 5.</t>
                </li>
                <li>
                  <t>If CTX is not an Incognito Security Context, check whether the value encoded in the "kid" field of the OSCORE Option of MSG is equal to the Recipient ID specified in REC_CTX.      </t>
                  <t>
In case the two values are equal, REC_CTX is the Recipient Context to use for decrypting and verifying MSG, and this algorithm moves to Step 8. Otherwise, perform Step 4 again.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the 16-byte KID_KEYSTREAM by means of the same method at Step 7 of <xref target="sec-oscore-sender"/>. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>ENC_KEY is the Obfuscation Recipient Key from the latest REC_CTX selected at Step 4 of the present algorithm.</t>
                </li>
                <li>
                  <t>INPUT_2 is the result of Step 3 of the present algorithm.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the 3-byte STAND_IN_KID value, by XORing with each other:  </t>
              <ul spacing="normal">
                <li>
                  <t>The 3 bytes from LATEST_PIV's start, where LATEST_PIV is determined as follows.      </t>
                  <ul spacing="normal">
                    <li>
                      <t>If the OSCORE Option of MSG includes the "Partial IV" field, then LATEST_PIV is the value encoded within that field. Otherwise,</t>
                    </li>
                    <li>
                      <t>MSG is a response and LATEST_PIV is the value encoded within the "Partial IV" field of the OSCORE Option of the corresponding request as it was sent on the wire (i.e., in its obfuscated form).</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The 3 bytes from KID_KEYSTREAM's start, where KID_KEYSTREAM is the result of Step 5.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the STAND_IN_KID value computed at Step 6 is not equal to the value encoded in the "kid" field of the OSCORE Option of MSG, then move to Step 4.  </t>
              <t>
Otherwise, the latest REC_CTX selected at Step 4 is the Recipient Context to use for decrypting and verifying MSG, and this algorithm moves to Step 8.</t>
            </li>
            <li>
              <t>Run the algorithm in <xref target="group-oscore-reverse-obfuscation"/>, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG, by using the latest REC_CTX selected at Step 4.  </t>
              <t>
Building on the result, the recipient endpoint uses REC_CTX to decrypt and verify MSG, as defined in <xref target="I-D.ietf-core-oscore-groupcomm"/>. The specific operations to perform depend on whether MSG is protected with the group mode or with the pairwise mode of Group OSCORE.  </t>
              <t>
In case of successful decryption and verification, this algorithm terminates and the recipient endpoint continues processing MSG as expected.  </t>
              <t>
Otherwise, if MSG is not processed successfully, the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If MSG is a request, the recipient endpoint <bcp14>MUST NOT</bcp14> presently reply with any of the optional 4.01 (Unauthorized), 5.03 (Service Unavailable), or 4.00 (Bad Request) error responses that pertain to a failed processing of incoming requests. Note that, although such processing is defined in Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="5.3" sectionFormat="bare"/>, <xref target="I-D.ietf-core-oscore-groupcomm" section="7.2" sectionFormat="bare"/>, and <xref target="I-D.ietf-core-oscore-groupcomm" section="8.4" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/>, some of the corresponding error handling is inherited from Sections <xref target="RFC8613" section="7.4" sectionFormat="bare"/> and <xref target="RFC8613" section="8.2" sectionFormat="bare"/> of <xref target="RFC8613"/>.</t>
                </li>
                <li>
                  <t>The OSCORE Option of MSG is restored to be as it was before running the algorithm in <xref target="group-oscore-reverse-obfuscation"/>.</t>
                </li>
                <li>
                  <t>This algorithm moves to Step 4.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the application admits the dynamic derivation of new Recipient Contexts and the recipient endpoint intends to take advantage of that, move to Step 10. Otherwise, move to Step 17.</t>
            </li>
            <li>
              <t>The recipient endpoint contacts the Group Manager responsible for the OSCORE group (see <xref section="12" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) and retrieves a set of pairs P = (ID, CRED), where ID and CRED in each pair P are the Sender ID and the public authentication credential of a current group member.  </t>
              <t>
Depending on the particular realization of Group Manager, it can also be possible to retrieve a selected subset of those pairs, e.g., such that the ID specified therein is not part of a list provided in the request to the Group Manager. The realization of Group Manager specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> makes it possible to do so.</t>
            </li>
            <li>
              <t>From the set obtained at Step 10, select a pair P such that:  </t>
              <ul spacing="normal">
                <li>
                  <t>P has not been selected yet during this execution of the present algorithm; and</t>
                </li>
                <li>
                  <t>The ID specified within P is not the Recipient ID stored in any of the Recipient Contexts within CTX.</t>
                </li>
              </ul>
              <t>
If no such P is found, then move to Step 17. Otherwise, move to Step 12.  </t>
              <t>
In case CTX is not an Incognito Security Context, the first pair P to select (if present) should be the one such that the ID specified therein is equal to the value encoded in the "kid" field of the OSCORE Option of MSG.</t>
            </li>
            <li>
              <t>Check if either of the following conditions applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>CTX is an Incognito Security Context; or</t>
                </li>
                <li>
                  <t>CTX is not an Incognito Security Context and the value encoded in the "kid" field of the OSCORE Option of MSG is equal to the ID specified within the latest pair P selected at Step 11.</t>
                </li>
              </ul>
              <t>
If any of the two conditions above apply, then establish within CTX a new Recipient Context REC_CTX associated with the same other group member with which the latest pair P selected at Step 11 is associated. That is, within REC_CTX, ID and CRED from P are stored as the Recipient ID and authentication credential associated with the other group member.  </t>
              <t>
If the first of the two conditions above applies, this algorithm moves to Step 13.  </t>
              <t>
If the second of the two conditions above applies, REC_CTX is the Recipient Context to use for decrypting and verifying MSG, and this algorithm moves to Step 16.  </t>
              <t>
If none of the two conditions above applies, this algorithm moves to Step 11.</t>
            </li>
            <li>
              <t>Compute the 16-byte KID_KEYSTREAM by means of the same method at Step 7 of <xref target="sec-oscore-sender"/>. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>ENC_KEY is the Obfuscation Recipient Key from the latest REC_CTX established at Step 12 of the present algorithm.</t>
                </li>
                <li>
                  <t>INPUT_2 is the result of Step 3 of the present algorithm.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the 3-byte STAND_IN_KID value, by XORing with each other:  </t>
              <ul spacing="normal">
                <li>
                  <t>The 3 bytes from LATEST_PIV's start, where LATEST_PIV is the same one determined at Step 6.</t>
                </li>
                <li>
                  <t>The 3 bytes from KID_KEYSTREAM's start, where KID_KEYSTREAM is the result of Step 13.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the STAND_IN_KID value computed at Step 14 is not equal to the value encoded in the "kid" field of the OSCORE Option of MSG, then the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>Depending on what is specified by the application, the recipient endpoint <bcp14>MAY</bcp14> delete the latest REC_CTX established at Step 12.      </t>
                  <t>
If REC_CTX is deleted in this particular circumstance, then this deletion does not require the recipient endpoint to initialize as invalid the Replay Window of any new Recipient Context created later within CTX (see <xref section="2.6.1.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
                </li>
                <li>
                  <t>This algorithm moves to Step 11.</t>
                </li>
              </ul>
              <t>
Otherwise, the latest REC_CTX established at Step 12 is the Recipient Context to use for decrypting and verifying MSG, and this algorithm moves to Step 16.</t>
            </li>
            <li>
              <t>Run the algorithm in <xref target="group-oscore-reverse-obfuscation"/>, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG, by using the latest REC_CTX established at Step 12.  </t>
              <t>
Building on the result, the recipient endpoint uses REC_CTX to decrypt and verify MSG, as defined in <xref target="I-D.ietf-core-oscore-groupcomm"/>. The specific operations to perform depend on whether MSG is protected with the group mode or with the pairwise mode of Group OSCORE.  </t>
              <t>
In case of successful decryption and verification, this algorithm terminates and the recipient endpoint continues processing MSG as expected.  </t>
              <t>
Otherwise, if MSG is not processed successfully, the following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If MSG is a request, the recipient endpoint <bcp14>MUST NOT</bcp14> presently reply with any of the optional 4.01 (Unauthorized), 5.03 (Service Unavailable), or 4.00 (Bad Request) error responses that pertain to a failed processing of incoming requests. Note that, although such processing is defined in Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="5.3" sectionFormat="bare"/>, <xref target="I-D.ietf-core-oscore-groupcomm" section="7.2" sectionFormat="bare"/>, and <xref target="I-D.ietf-core-oscore-groupcomm" section="8.4" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/>, some of the corresponding error handling is inherited from Sections <xref target="RFC8613" section="7.4" sectionFormat="bare"/> and <xref target="RFC8613" section="8.2" sectionFormat="bare"/> of <xref target="RFC8613"/>.</t>
                </li>
                <li>
                  <t>Depending on what is specified by the application, the recipient endpoint <bcp14>MAY</bcp14> delete the latest REC_CTX established at Step 12.      </t>
                  <t>
If REC_CTX is deleted in this particular circumstance, then this deletion does not require the recipient endpoint to initialize as invalid the Replay Window of any new Recipient Context created later within CTX (see <xref section="2.6.1.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
                </li>
                <li>
                  <t>The OSCORE Option of MSG is restored to be as it was before running the algorithm in <xref target="group-oscore-reverse-obfuscation"/>.</t>
                </li>
                <li>
                  <t>This algorithm moves to Step 11.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The following applies:  </t>
              <ul spacing="normal">
                <li>
                  <t>If, during this execution of the present algorithm, the server has performed and failed at least one decryption and verification of MSG, the server performs the same error handling defined in Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="7.2" sectionFormat="bare"/> and <xref target="I-D.ietf-core-oscore-groupcomm" section="8.4" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/> for the case where decryption or signature verification has failed. Then, this algorithm terminates. Otherwise,</t>
                </li>
                <li>
                  <t>If, during this execution of the present algorithm, the server has performed and failed at least one replay check on MSG (see <xref section="5.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), the server performs the same error handling defined in <xref section="5.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> for the case where a replay has been detected. Then, this algorithm terminates. Otherwise,</t>
                </li>
                <li>
                  <t>The server performs the same error handling defined in Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="7.2" sectionFormat="bare"/> and <xref target="I-D.ietf-core-oscore-groupcomm" section="8.4" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/> for the case where a Security Context is not found.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="group-oscore-reverse-obfuscation">
          <name>Reversing the Field Obfuscation</name>
          <t>Given a Recipient Context RX_CTX that was retrieved according to what is specified in <xref target="group-oscore-retrieve-rec-ctx"/>, the recipient endpoint performs the following steps, in order to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of the protected incoming message MSG.</t>
          <ol spacing="normal" type="1"><li>
              <t>If the OSCORE Option of MSG includes the "kid" field and CTX is an Incognito Security Context, then move to Step 2. Otherwise, move to Step 3.</t>
            </li>
            <li>
              <t>In the "kid" field of the OSCORE Option of MSG, replace the current STAND_IN_KID value with the Recipient ID specified in RX_CTX.  </t>
              <t>
Unless the Recipient ID has a length of 3 bytes, this step alters the length of the OSCORE Option value. In such a case, the recipient endpoint <bcp14>MUST</bcp14> update the "Option Length" field of the OSCORE Option accordingly (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>).</t>
            </li>
            <li>
              <t>If the OSCORE Option of MSG includes the "Partial IV" field, move to Step 4. Otherwise, terminate this algorithm.</t>
            </li>
            <li>
              <t>Compute the 16-byte PIV_KEYSTREAM by means of the same method defined at Step 3 of <xref target="sec-oscore-sender"/>. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>ENC_KEY is the Obfuscation Recipient Key from the RX_CTX that is used during this execution of the present algorithm.</t>
                </li>
                <li>
                  <t>INPUT_1 is composed by means of the same method defined at Step 2 of <xref target="group-oscore-retrieve-rec-ctx"/>. Note that, except for the particular case discussed at the beginning of <xref target="group-oscore-retrieve-rec-ctx"/> where the recipient endpoint is a client, INPUT_1 was already computed when actually performing Step 2 of <xref target="group-oscore-retrieve-rec-ctx"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compute the PIV value, by XORing with each other:  </t>
              <ul spacing="normal">
                <li>
                  <t>The ENC_PIV value encoded within the "Partial IV" field of the OSCORE Option of MSG; and</t>
                </li>
                <li>
                  <t>The Q bytes from PIV_KEYSTREAM's start, where Q is the length in bytes of the "Partial IV" field and PIV_KEYSTREAM is the result of Step 4.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>In the "Partial IV" field of the OSCORE Option of MSG, replace its current ENC_PIV value with the PIV value computed at Step 5.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="signature-checker">
        <name>External Signature Checker</name>
        <t>TBD</t>
        <t>Editor's note: describe how to ensure that an external signature checker (see <xref section="7.5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) can still perform its intended operations, when the "Partial IV" and "kid" fields of the OSCORE Option are obfuscated.</t>
      </section>
      <section anchor="deterministic-requests">
        <name>Deterministic Requests</name>
        <t>This section defines an exceptional case where a value smaller than 65536 is used as the Sender Sequence Number and the "kid" field of the OSCORE Option is not overwritten by a STAND_IN_KID value, even if the Group OSCORE Security Context is an Incognito Security Context.</t>
        <t>The specification <xref target="I-D.ietf-core-cacheable-oscore"/> defines an approach for restoring cacheability of CoAP responses that are protected end-to-end with Group OSCORE. The approach relies on the concept of Deterministic Request, i.e., a request protected with the pairwise mode of Group OSCORE that any client in the OSCORE group is able to prepare.</t>
        <t>When preparing a Deterministic Request, a client effectively impersonates a Deterministic Client, i.e., a fictitious member of the OSCORE group associated with a dedicated OSCORE Sender ID. Also, each Deterministic Request is computed by using the Sender Sequence Number 0.</t>
        <t>Therefore, even when using the method defined in the present document, the following applies to the OSCORE Option of a Deterministic Request:</t>
        <ul spacing="normal">
          <li>
            <t>The "Partial IV" field has a length of 1 byte and encodes the Sender Sequence Number 0.</t>
          </li>
          <li>
            <t>The "kid" field conveys the actual OSCORE Sender ID of the Deterministic Client.  </t>
            <t>
That is, even if the Group OSCORE Security Context used is an Incognito Security Context, the "kid" field in the OSCORE Option of a Deterministic Request is not obfuscated.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-agreement">
      <name>Agreement on Obfuscating Fields in the OSCORE Option</name>
      <t>If an endpoint does not have an explicit agreement with its peer(s) about employing the method specified in this document when using a (Group) OSCORE Security Context CTX, the following applies in order to preserve interoperability:</t>
      <ul spacing="normal">
        <li>
          <t>The endpoint <bcp14>MUST NOT</bcp14> obfuscate the "Partial IV" and "kid" fields in the OSCORE Option of its outgoing messages protected with CTX.</t>
        </li>
        <li>
          <t>The endpoint <bcp14>MUST NOT</bcp14> attempt to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of incoming messages protected with CTX.</t>
        </li>
      </ul>
      <t>The rest of this section defines means that endpoints can use to reach an agreement about obfuscating the "Partial IV" and "kid" fields as per the method specified in this document.</t>
      <section anchor="agreement-for-oscore">
        <name>Agreement for OSCORE</name>
        <t>TBD</t>
        <t>Editor's note: expected means to cover include:</t>
        <ul spacing="normal">
          <li>
            <t>Pre-provisioning</t>
          </li>
          <li>
            <t>In EDHOC</t>
          </li>
          <li>
            <t>In the OSCORE profile of the ACE framework</t>
          </li>
          <li>
            <t>In OMA Lightweight Machine-to-Machine (LwM2M)</t>
          </li>
        </ul>
      </section>
      <section anchor="agreement-for-group-oscore">
        <name>Agreement for Group OSCORE</name>
        <t>TBD</t>
        <t>Editor's note: expected means to cover include:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE Group Manager based on the ACE framework  </t>
            <ul spacing="normal">
              <li>
                <t>Messages to (candidate) group members</t>
              </li>
              <li>
                <t>Messages to external signature verifiers</t>
              </li>
              <li>
                <t>Message to/from an Administrator</t>
              </li>
            </ul>
          </li>
          <li>
            <t>A CoAP server supporting observe multicast notifications and self-managing the OSCORE group for its group observations.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations from <xref target="RFC8613"/> and <xref target="I-D.ietf-core-oscore-groupcomm"/> hold for this document when messages are protected with OSCORE or Group OSCORE, respectively. Furthermore, the following considerations also apply.</t>
      <section anchor="minimum-length-of-sender-sequence-numbers">
        <name>Minimum Length of Sender Sequence Numbers</name>
        <t>As per <xref target="sec-oscore-sender"/>, a Sender Sequence Number value has to be at least 65536 when using the method defined in this document.</t>
        <t>This ensures that the "Partial IV" field of the OSCORE Option has a length of at least 3 bytes. In turn, this defeats possible attempts to track an endpoint or to fingerprint its traffic that leverage a transition of the length of the "Partial IV" field from 1 to 2 bytes, or from 2 to 3 bytes.</t>
        <t>An exception applies to the special case discussed in <xref target="edhoc-oscore-request"/>, where the requirement above does not apply for the one-off EDHOC + OSCORE request <xref target="RFC9668"/>. However, the requirement does apply for all the messages that the two endpoints exchange after the EDHOC + OSCORE request and that are protected with the same OSCORE Security Context.</t>
      </section>
      <section anchor="limitations">
        <name>Limitations</name>
        <t>The method defined in this document provides confidentiality protection of the Partial IV against passive adversaries.</t>
        <t>An active adversary could guess the plain Partial IV and have a recipient OSCORE endpoint confirm the guesses, e.g., taking advantage of timing side channels. For instance, this can be the case when the recipient endpoint discards an incoming message that is detected as a replay, i.e., without attempting to decrypt and verify the message and hence revealing information through timing side channels.</t>
        <t>Similarly, depending on whether the processing of an incoming request message fails due to a replay detection or instead to a failed decryption and verification, the recipient endpoint would follow-up by sending different, unprotected error response messages, which the adversary can leverage to confirm the guesses.</t>
      </section>
      <section anchor="encryption-robustness">
        <name>Encryption Robustness</name>
        <t>When performing the steps at <xref target="sec-oscore-sender"/> and <xref target="sec-oscore-recipient"/>, using the same Obfuscation Key and SAMPLE_1 more than once risks compromising the encryption of the PIV value in the "Partial IV" field. That is, encrypting the PIV_A and PIV_B values of two different "Partial IV" fields by leveraging the same Obfuscation Key and SAMPLE_1 reveals the exclusive OR of PIV_A and PIV_B.</t>
        <t>Assuming that SAMPLE_1 is consistent with the outcome of a pseudorandom function (PRF), if L bits are sampled, then the probability that two SAMPLE_1 byte strings of length L are identical approach P = 2<sup>-L/2</sup>, that is, the birthday bound. For messages protected with (Group) OSCORE, SAMPLE_1 has a minimum length L_MIN of 72 bits and a maximum length L_MAX of 128 bits. Therefore, P is at least 2<sup>36</sup> (when the CoAP payload has a length of L_MIN bits) and at most 2<sup>64</sup> (when the CoAP payload has a length of L_MAX bits or more).</t>
      </section>
      <section anchor="impact-on-endpoint-trackability">
        <name>Impact on Endpoint Trackability</name>
        <t>The tracking of an OSCORE endpoint that migrates to a new network path can be largely counteracted by using the method defined in this document, if combined with the use of new source addressing information (e.g., IP address and link-layer address). If addressing information does not change upon network migration, an on-path adversary might still be able to track an endpoint.</t>
        <t>Even if combined with the change of addressing information upon network migration, the method defined in this document does not prevent other properties of network packets, e.g., their timing or length, from being used to correlate activities of the same endpoint across different network paths.</t>
      </section>
      <section anchor="trial-decryptions">
        <name>Trial Decryptions</name>
        <t>Due to the possible obfuscation of the "kid" field of the OSCORE Option, a recipient endpoint could end up performing trial decryptions on an incoming message, when attempting to retrieve the right Recipient Context to use.</t>
        <t>Such trial decryptions will fail, when the recipient endpoint retrieves a Recipient Context that appears to be the right one to use, while in fact it is not and its selection was the result of a false positive matching of (stand-in) key identifiers.</t>
        <t>This could be the case in the following circumstances.</t>
        <ul spacing="normal">
          <li>
            <t>OSCORE is used and the recipient endpoint is a server (see <xref target="context-retrieval"/>).  </t>
            <ul spacing="normal">
              <li>
                <t>If the recipient endpoint stores at least one Ordinary Security Context, the endpoint first assumes that the "Partial IV" and "kid" fields in the OSCORE Option of the incoming message were not obfuscated.      </t>
                <t>
Consequently, the endpoint first attempts to retrieve an Ordinary Security Context to decrypt and verify the message (see Step 2 in <xref target="context-retrieval"/>). If a Security Context is found and the OSCORE processing of the incoming message fails, the endpoint proceeds with looking for Obfuscating Security Contexts to use.</t>
              </li>
              <li>
                <t>If the recipient endpoint stores Incognito Security Contexts, multiple of those might result in computing a STAND_IN_KID value that is equal to the value encoded in the "kid" field of the OSCORE Option of the incoming message (see Step 10 in <xref target="context-retrieval"/>).      </t>
                <t>
In case of a positive match, the selected Incognito Security Context is used for the OSCORE processing of the incoming message (see Step 11 in <xref target="context-retrieval"/>), which fails unless the selected Security Context is actually the right one to use. If the OSCORE processing fails, the endpoint continues inspecting the set of Obfuscating Security Contexts.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Group OSCORE is used and the Group OSCORE Security Context is an Incognito Security Context (see <xref target="group-oscore-retrieve-rec-ctx"/>).  </t>
            <ul spacing="normal">
              <li>
                <t>Within the Group OSCORE Security Context, multiple Recipient Contexts might result in computing a STAND_IN_KID value that is equal to the value encoded in the "kid" field of the OSCORE Option of the incoming message (see Step 7 in <xref target="group-oscore-retrieve-rec-ctx"/>).      </t>
                <t>
In case of a positive match, the selected Recipient Context is used for the Group OSCORE processing of the incoming message (see Step 8 in <xref target="group-oscore-retrieve-rec-ctx"/>), which fails unless the selected Recipient Context is actually the right one to use. If the Group OSCORE processing fails, the endpoint continues inspecting the set of Recipient Contexts.</t>
              </li>
              <li>
                <t>If the recipient endpoint does not find an eligible Recipient Context among the stored ones, the endpoint might proceed with the dynamic derivation of new Recipient Contexts, if allowed by the application (see Step 8 in <xref target="group-oscore-retrieve-rec-ctx"/>).      </t>
                <t>
After establishing a new Recipient Context, this might result in computing a STAND_IN_KID value that is equal to the value encoded in the "kid" field of the OSCORE Option of the incoming message (see Step 15 in <xref target="group-oscore-retrieve-rec-ctx"/>).      </t>
                <t>
In case of a positive match, the newly established Recipient Context is used for the Group OSCORE processing of the incoming message (see Step 16 in <xref target="group-oscore-retrieve-rec-ctx"/>), which fails unless the Recipient Context is actually the right one to use. If the Group OSCORE processing fails, the endpoint can continue establishing and trying further available Recipient Contexts, as long as information to do so is available.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Although the specific circumstances above are new and introduced by the method defined in this document, trial decryption is in fact already a possibility:</t>
        <ul spacing="normal">
          <li>
            <t>When using OSCORE, a server receiving a request might end up processing it with multiple OSCORE Security Contexts in sequence. This can happen, e.g., in case of collisions with the values of ID Context and Recipient ID across stored Security Contexts.</t>
          </li>
          <li>
            <t>When using OSCORE, a client receiving a response might end up processing it with multiple OSCORE Security Contexts in sequence. This can happen, e.g., in case the same Token value is used for multiple messages exchanges that are simultaneously active.</t>
          </li>
          <li>
            <t>When using Group OSCORE, a server receiving a request might end up processing it with multiple Group OSCORE Security Contexts in sequence. This can happen, e.g., in case of collisions with the values of ID Context and Recipient ID across stored Security Contexts. For example, both the sender endpoint and the recipient endpoint can be in two different OSCORE groups under different Group Managers, with both OSCORE groups identified by the same Group ID and with the sender endpoint using the same Sender ID in both groups.</t>
          </li>
        </ul>
        <t>In either case, the recipient endpoint can attempt using multiple available Security Contexts in sequence, until the right one is possibly found and message decryption and verification succeed.</t>
        <t>Regardless of the specific circumstance by which trial decryptions occur, recipient endpoints still have to keep updated the status of their keying material, including after decryption failure. In particular, symmetric keys ought not to be used beyond certain key usage limits, i.e., after having reached a maximum number of failed decryptions <xref target="I-D.ietf-core-oscore-key-limits"/><xref target="I-D.irtf-cfrg-aead-limits"/>.</t>
        <t>Clearly, broadening the opportunities for trial decryption increases the pace by which key usage limits are approached, thereby increasing the frequency by which keying material needs to be updated, e.g., by using the key update procedure KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>.</t>
      </section>
      <section anchor="not-obfuscating-the-kid-field">
        <name>Not Obfuscating the "kid" Field</name>
        <t>When using an Obfuscating Security Context that is not an Incognito Security Context, the method specified in this document results only in obfuscating the "Partial IV" field of the OSCORE Option, but not the "kid" field.</t>
        <t>This is useful in some use cases where such information is effectively still obfuscated by other means. In such use cases, obfuscating the "kid" field by using the method defined in this document would simply result in unjustified (performance) penalties.</t>
        <t>For example, the specification <xref target="I-D.ietf-schc-8824-update"/> defines how to use the Static Context Header Compression and fragmentation (SCHC) framework <xref target="RFC8724"/> for compressing headers of CoAP messages, also when messages are protected with OSCORE or Group OSCORE.</t>
        <t>Two endpoints using (Group) OSCORE and SCHC header compression can enforce SCHC compression Rules that include a Field Descriptor for the "kid" field of the OSCORE Option. The intent of such a SCHC Rule is typically to match with a protected message where the "kid" field conveys the same value specified in the corresponding Field Descriptor of the Rule. As a result, the SCHC compression elides the "kid" field before transmission, and the field will be reconstructed by the recipient endpoint when performing SCHC Decompression per the same SCHC Rule.</t>
        <t>In such a scenario, obfuscating the "kid" field by means of the method defined in this document will prevent the intended SCHC compression Rule to match with the protected message to compress, since the stand-in identifier that is overwritten in the "kid" field of the OSCORE Option will differ from the static, expected value specified in the Field Descriptor of the SCHC Rule. In fact, unless other installed SCHC compression Rules produce a match, the message as a whole will simply not be compressed.</t>
        <t>To ensure that at least other fields of the message are compressed, the SCHC Rule would instead have to include the Field Descriptor for the "kid" field that always results in preserving the "kid" field as-is, without compression. Clearly, it is instead better to enforce the originally intended SCHC Rule, while not obfuscating the "kid" field through the method specified in this document.</t>
        <t>With the exception of such use cases that effectively achieve obfuscation of the "kid" field by other means, endpoints that support the method defined in this document and explicitly agree to use it ought to rely on Incognito Security Contexts and thus obfuscate the "kid" field of the OSCORE Option accordingly.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD</t>
      <t>Editor's note: expected actions are registrations of new parameters that effectively enable the means defined in <xref target="sec-agreement"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <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="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <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">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <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="RFC9031">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <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="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="RFC9668">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <author fullname="R. Höglund" initials="R." surname="Höglund"/>
            <author fullname="S. Hristozov" initials="S." surname="Hristozov"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The lightweight authenticated key exchange protocol Ephemeral Diffie-Hellman Over COSE (EDHOC) can be run over the Constrained Application Protocol (CoAP) and used by two peers to establish a Security Context for the security protocol Object Security for Constrained RESTful Environments (OSCORE). This document details this use of the EDHOC protocol by specifying a number of additional and optional mechanisms, including an optimization approach for combining the execution of EDHOC with the first OSCORE transaction. This combination reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9668"/>
          <seriesInfo name="DOI" value="10.17487/RFC9668"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="23" month="December" year="2025"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of messages exchanged with the Constrained Application
   Protocol (CoAP) between members of a group, e.g., sent over IP
   multicast.  In particular, the described protocol defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with each other
   member of the group for pairwise OSCORE communication.  Group OSCORE
   can be used between endpoints communicating with CoAP or CoAP-
   mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-28"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-key-update">
          <front>
            <title>Key Update for OSCORE (KUDOS)</title>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   Communications with the Constrained Application Protocol (CoAP) can
   be protected end-to-end at the application-layer by using the
   security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  Under some circumstances, two CoAP endpoints
   need to update their OSCORE keying material before communications can
   securely continue, e.g., due to approaching key usage limits.  This
   document defines Key Update for OSCORE (KUDOS), a lightweight key
   update procedure that two CoAP endpoints can use to update their
   OSCORE keying material by establishing a new OSCORE Security Context.
   Accordingly, this document updates the use of the OSCORE flag bits in
   the CoAP OSCORE Option as well as the protection of CoAP response
   messages with OSCORE.  Also, it deprecates the key update procedure
   specified in Appendix B.2 of RFC 8613.  Therefore, this document
   updates RFC 8613.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-12"/>
        </reference>
        <reference anchor="I-D.ietf-core-cacheable-oscore">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="22" month="September" year="2025"/>
            <abstract>
              <t>   Group communication with the Constrained Application Protocol (CoAP)
   can be secured end-to-end using Group Object Security for Constrained
   RESTful Environments (Group OSCORE), also across untrusted
   intermediary proxies.  However, this sidesteps the proxies' abilities
   to cache responses from the origin server(s).  This specification
   restores cacheability of protected responses at proxies, by
   introducing consensus requests which any client in a group can send
   to one server or multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-cacheable-oscore-00"/>
        </reference>
        <reference anchor="AES" target="https://doi.org/10.6028/NIST.FIPS.197-upd1">
          <front>
            <title>Advanced Encryption Standard (AES)</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="COSE.Algorithms" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="February" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) is a web transfer
   protocol for constrained devices and constrained networks.  In a
   number of use cases, constrained devices often naturally operate in
   groups (e.g., in a building automation scenario, all lights in a
   given room may need to be switched on/off as a group).  This document
   specifies the use of CoAP for group communication, including the use
   of UDP/IP multicast as the default underlying data transport.  Both
   unsecured and secured CoAP group communication are specified.
   Security is achieved by use of the Group Object Security for
   Constrained RESTful Environments (Group OSCORE) protocol.  The target
   application area of this specification is any group communication use
   cases that involve resource-constrained devices or networks that
   support CoAP.  This document replaces and obsoletes RFC 7390, while
   it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-18"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for Group Object Security for Constrained RESTful Environments (Group OSCORE) Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="February" year="2026"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   request and provision keying material in group communication
   scenarios that are based on the Constrained Application Protocol
   (CoAP) and are secured with Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  This application profile
   delegates the authentication and authorization of Clients, which join
   an OSCORE group through a Resource Server acting as Group Manager for
   that group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication, and proof of possession of 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-key-groupcomm-oscore-20"/>
        </reference>
        <reference anchor="I-D.ietf-schc-8824-update">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Iván Martínez" initials="I." surname="Martínez">
              <organization>IRISA</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="1" month="December" year="2025"/>
            <abstract>
              <t>   This document defines how to compress Constrained Application
   Protocol (CoAP) headers using the Static Context Header Compression
   and fragmentation (SCHC) framework.  SCHC defines a header
   compression mechanism adapted for constrained devices.  SCHC uses a
   static description of the header to reduce the header's redundancy
   and size.  While RFC 8724 describes the SCHC compression and
   fragmentation framework and its application for IPv6 and UDP headers,
   this document applies SCHC to CoAP headers.  The CoAP header
   structure differs from that of IPv6 and UDP headers, since CoAP uses
   a flexible header with a variable number of options that are in turn
   of variable length.  The CoAP message format is asymmetric, i.e.,
   request messages have a header format different from that of response
   messages.  This specification gives guidance on applying SCHC to
   flexible headers and on leveraging the message format asymmetry for
   defining more efficient compression Rules.  This document replaces
   and obsoletes RFC 8824.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-07"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-key-limits">
          <front>
            <title>Key Usage Limits for OSCORE</title>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="7" month="January" year="2026"/>
            <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 regarding the number of times a
   specific key is used for encryption or decryption.  Among other
   reasons, approaching key usage limits requires updating the OSCORE
   keying material before communications can securely continue.  This
   document defines how two OSCORE peers can follow these key usage
   limits and what steps they should take to preserve the security of
   their communications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-limits-06"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-aead-limits">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="December" year="2025"/>
            <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-11"/>
        </reference>
      </references>
    </references>
    <?line 852?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Carsten Bormann"/>, and <contact fullname="Martine Lenders"/> for their comments and feedback.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
F8Pe/weo5EuCQQUBAA==

-->

</rfc>
