<?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.39 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-core-oscore-piv-enc-04" category="std" consensus="true" submissionType="IETF" updates="8613" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-04"/>
    <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="November" day="02"/>
    <area>WIT</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 106?>

<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 110?>

<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 leveraging the leaked order of messages sent by an endpoint, from which behavioral patterns could be implied and certain traffic types could be easier to identify and selectively disrupt <xref target="EuroSandP"/>. 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 is not arbitrarily determined on a per-message basis.</t>
      <t>Upon establishing an OSCORE Security Context with which this method is used, 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 for the case where 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 uses the acronym LAKE, expanded to Lightweight Authenticated Key Exchange, to denote the protocol specified as EDHOC in <xref target="RFC9528"/>.</t>
        <t>This document also refers to the following terms:</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 in the OSCORE Option, respectively, when those fields are included in the OSCORE Option of 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"/>), the following applies.  </t>
          <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, consistent with the "Value" field in the entry of the "COSE Algorithms" Registry for this algorithm <xref target="COSE.Algorithms"/>.</t>
        </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"/>), the following applies.  </t>
          <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, consistent 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 HMAC-based key derivation function (HKDF) and the 'L' element of the 'info' array are 16.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-oscore">
      <name>Processing in OSCORE</name>
      <t>This section and its subsections describe 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>This section applies to a sender endpoint that produces a protected message MSG by using an Obfuscating Security Context.</t>
        <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 of the LAKE + OSCORE request discussed in <xref target="edhoc-oscore-request"/>, where: i) the Sender Sequence Number used can have a value smaller than 65536; and ii) the "Partial IV" and "kid" fields of the OSCORE Option are not obfuscated.</t>
        <t>When composing a protected outgoing message MSG, the OSCORE Option <bcp14>MUST NOT</bcp14> include the "s" and "kid context" fields (see <xref section="6.1" sectionFormat="of" target="RFC8613"/>). 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>Consider ENC_PAYLOAD the portion of the message payload of MSG that starts with the ciphertext of the COSE object.  </t>
            <t>
Then, compose SAMPLE_1 as the first N bytes from ENC_PAYLOAD's start, where N = min(LENGTH, 16) and LENGTH denotes the length in bytes of ENC_PAYLOAD. Note that LENGTH is guaranteed to be at least 9 and is typically equal to the length of the message payload.</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>
                <t>
An exception applies in the special case discussed in <xref target="sec-kudos"/>, where the Obfuscation Key used as ENC_KEY is the one from the Common Context of a different Security Context, from which the Security Context used to produce MSG was derived.</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>
                <t>
An exception applies in the special case discussed in <xref target="sec-kudos"/>, where the Obfuscation Key used as ENC_KEY is the one from the Common Context of a different Security Context, from which the Security Context used to produce MSG was derived.</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 continues processing 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 processing 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 as appropriate (see <xref target="reverse-obfuscation"/>).</t>
        <t>After that, the recipient endpoint uses CTX to decrypt and verify MSG. As further discussed in <xref target="context-retrieval"/> and <xref target="sec-kudos"/>, an exception applies if MSG is sent as a message of the procedure Key Update for OSCORE (KUDOS) <xref target="I-D.ietf-core-oscore-key-update"/>, in which case the Security Context CTX* used to decrypt and verify MSG is different from CTX; specifically, CTX* is derived from CTX.</t>
        <t>The procedures defined in <xref target="context-retrieval"/> and <xref target="reverse-obfuscation"/> do not apply to the special case of the LAKE + OSCORE request discussed in <xref target="edhoc-oscore-request"/>, where: i) the "Partial IV" and "kid" fields of the OSCORE Option are not obfuscated; and ii) CTX is specifically the Security Context established from the ongoing key exchange session.</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 process 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"/>, with the exception of the special case mentioned below and discussed in <xref target="sec-kudos"/>.</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 as appropriate, 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"/>, with the exception of the special case mentioned below and discussed in <xref target="sec-kudos"/>.  </t>
              <t>
If the request to which MSG replies is a LAKE + OSCORE request (see <xref target="edhoc-oscore-request"/>) and CTX is specifically an Incognito Security Context, then the client <bcp14>MUST</bcp14> treat MSG as invalid and discard it, in the case that the OSCORE Option of MSG includes the "kid" field but does not include the "Partial IV" field.</t>
            </li>
          </ul>
          <t>In the special case discussed in <xref target="sec-kudos"/>, the Security Context CTX* used to decrypt and verify MSG is different from the retrieved Security Context CTX that is possibly used to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option as appropriate; specifically, CTX* is derived from CTX.</t>
          <t>Instead, 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"/>. An exception applies if MSG is sent as a message of the procedure KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>, in which case the Security Context CTX* used to decrypt and verify MSG is different from CTX; specifically, CTX* is derived from CTX. In the 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 successfully decrypted and verified, 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 particular, if there are selectable Obfuscating Security Contexts that are not Incognito Security Contexts, the selection of CTX is first attempted among those, using the same retrieval process defined in <xref section="8.2" sectionFormat="of" target="RFC8613"/>.  </t>
              <t>
In the case that the "kid" field of the OSCORE Option is obfuscated, the time spent to select and later successfully use the right Incognito Security Context could leak information about the plain OSCORE identifier (i.e., the OSCORE Sender ID of the sender of MSG). Implementations ought to counteract and limit such information leakage, e.g., by uniformly randomizing the selection process performed over the Incognito Security Contexts. Further details are left to the specific implementation and are out of the scope of this document.  </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, 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>
Hence, CTX is the Security Context to use for processing MSG, and this algorithm moves to Step 11.</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 processing 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 as appropriate, 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"/>. An exception applies in the special case discussed in <xref target="sec-kudos"/>, where the Security Context CTX* used to decrypt and verify MSG is different from CTX; specifically, CTX* is derived from CTX.  </t>
              <t>
In the case of successful decryption and verification, this algorithm terminates and the server continues processing MSG as expected.  </t>
              <t>
Otherwise, if MSG is not successfully decrypted and verified, 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 as normal behavior in <xref target="sec-oscore-sender"/> and <xref target="sec-oscore-recipient"/>.</t>
        <section anchor="edhoc-oscore-request">
          <name>LAKE + OSCORE Request</name>
          <t>Two endpoints can run the protocol Lightweight Authenticated Key Exchange (LAKE) <xref target="RFC9528"/>, in order to establish an OSCORE Security Context (see <xref section="A.1" sectionFormat="of" target="RFC9528"/>). In particular, LAKE 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 LAKE 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 LAKE message, and it is produced using the OSCORE Security Context established from the present and still ongoing LAKE session.</t>
          <t>Upon receiving such a LAKE + OSCORE request (denoted as "EDHOC + OSCORE request" in <xref target="RFC9668"/>), the server first extracts and processes the LAKE message embedded therein, completes the LAKE session, establishes the OSCORE Security Context, and finally uses the latter to process 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 LAKE + 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 in plaintext the Sender Sequence Number used by the client when protecting the request. That is, even if the OSCORE Security Context under establishment is an Obfuscating Security Context, the "Partial IV" field in the OSCORE Option of the LAKE + OSCORE request is not obfuscated.  </t>
              <t>
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 value 0.</t>
            </li>
            <li>
              <t>The "kid" field conveys the actual OSCORE Sender ID of the client, which the server offered earlier in the LAKE session as its own LAKE connection identifier C_R. Upon receiving the LAKE + OSCORE request, the server needs to retrieve such an identifier as-is from the request, in order to correctly retrieve the LAKE 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 LAKE + OSCORE request is not obfuscated.  </t>
              <t>
Note that, if LAKE 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 LAKE message_3 within the message payload of a request sent by the client.</t>
            </li>
          </ul>
          <t>Furthermore, the following applies when producing a response to an LAKE + OSCORE request: if the OSCORE Security Context used to produce the response is an Incognito Security Context and the OSCORE Option of the response includes the "kid" field, then the server <bcp14>MUST</bcp14> include its Sender Sequence Number in the "Partial IV" field of the OSCORE Option of the response and use it to build the AEAD nonce to protect the response.</t>
        </section>
        <section anchor="sec-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>If CTX_OLD is an Ordinary, Obfuscating, or Incognito Security Context, then CTX_TEMP/CTX_NEW derived thereof is correspondingly an Ordinary, Obfuscating, or Incognito Security Context.</t>
          <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>As defined in <xref section="7.3" sectionFormat="of" target="RFC9031"/>, the following holds for a given pledge and the JRC sharing an OSCORE Security Context:</t>
          <ul spacing="normal">
            <li>
              <t>The OSCORE ID Context in the 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 (see <xref section="6.1" sectionFormat="of" target="RFC8613"/>).</t>
          <t>If the OSCORE Security Context shared by the pledge and the JRC is an Obfuscating Security Context, the following applies to protected CoJP messages:</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 processing 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 added above.</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 and its subsections describe 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>This section applies to a sender endpoint that produces a protected message MSG by using an Obfuscating Security Context.</t>
        <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 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>As an exception to the requirement in <xref target="sec-oscore-sender"/> about the minimum value of Sender Sequence Number to use, the requirement does not apply to the special case of an outgoing Deterministic Request discussed in <xref target="deterministic-requests"/>, where: i) the Sender Sequence Number used has a value smaller than 65536; and ii) the "Partial IV" and "kid" fields of the OSCORE Option are not obfuscated. That is, the processing of an outgoing Deterministic Request is as per <xref target="I-D.ietf-core-cacheable-oscore"/>.</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 the case that 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 as appropriate (see <xref target="group-oscore-reverse-obfuscation"/>). After that, the recipient endpoint uses REC_CTX to decrypt and verify MSG.</t>
        <t>The procedures defined in <xref target="group-oscore-retrieve-rec-ctx"/> and <xref target="group-oscore-reverse-obfuscation"/> do not apply to the special case of an incoming Deterministic Request discussed in <xref target="deterministic-requests"/>, where: i) the "Partial IV" and "kid" fields of the OSCORE Option are not obfuscated; and ii) REC_CTX is simply the Recipient Context identified by the "kid" field. That is, the processing of an incoming Deterministic Request is as per <xref target="I-D.ietf-core-cacheable-oscore"/>.</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 as an Obfuscating Security Context, 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 the case that 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 as appropriate, 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>If the request to which MSG replies is a Deterministic Request (see <xref target="deterministic-requests"/>) and the "kid" field is not included in the OSCORE Option of MSG, the same as discussed for the case above applies, with the following differences: i) REC_CTX is the Recipient Context associated with the other endpoint to which the request was sent, although the protection of the request did not rely on the Pairwise Sender Key associated with that other endpoint; ii) after reversing the obfuscation of the "Partial IV" field in the OSCORE Option of MSG, the client uses REC_CTX to decrypt and verify MSG as defined in <xref target="I-D.ietf-core-cacheable-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, consider ENC_PAYLOAD as the portion of the message payload of MSG that starts with the ciphertext of the COSE object.  </t>
              <t>
Then, compose SAMPLE_1 as the first N bytes from ENC_PAYLOAD's start, where N = min(LENGTH, 16) and LENGTH denotes the length in bytes of ENC_PAYLOAD. Note that LENGTH is guaranteed to be at least 9 and is typically equal to the length of the message payload.</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 the case that CTX is not an Incognito Security Context, the selection of REC_CTX relies on the same retrieval process that is used in <xref section="6" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.  </t>
              <t>
In the case that CTX is an Incognito Security Context, hence the "kid" field of the OSCORE Option is obfuscated (if present therein), the time spent to select and later successfully use the right Recipient Context could leak information about the plain OSCORE identifier (i.e., the OSCORE Sender ID of the sender of MSG). Implementations ought to counteract and limit such information leakage, e.g., by uniformly randomizing the selection process performed over the Recipient Contexts within CTX. Further details are left to the specific implementation and are out of the scope of this document.  </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, 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>
Hence, REC_CTX is the Recipient Context to use for decrypting and verifying MSG, and this algorithm moves to Step 8.</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 as appropriate, 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. An exception applies in the case that MSG is a response to a Deterministic Request (see <xref target="deterministic-requests"/>) and the "kid" field is included in the OSCORE Option of MSG. In such case, the recipient endpoint uses REC_CTX to decrypt and verify MSG as defined in <xref target="I-D.ietf-core-cacheable-oscore"/>.  </t>
              <t>
In the 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 successfully decrypted and verified, 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 it retrieves a set of pairs P = (ID, CRED) from the Group Manager. Within each pair, ID is the Sender ID of a current group member and CRED is the public authentication credential of that 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 the case that CTX is not an Incognito Security Context, the first pair P to select (if present) ought to 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 the public 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 as appropriate, 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. An exception applies in the case that MSG is a response to a Deterministic Request (see <xref target="deterministic-requests"/>) and the "kid" field is included in the OSCORE Option of MSG. In such case, the recipient endpoint uses REC_CTX to decrypt and verify MSG as defined in <xref target="I-D.ietf-core-cacheable-oscore"/>.  </t>
              <t>
In the 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 successfully decrypted and verified, 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 REC_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 REC_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 REC_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-checkers">
        <name>External Signature Checkers</name>
        <t>As defined in <xref section="7.5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, it is possible to designate external signature checkers to verify the signature of messages protected with the group mode of Group OSCORE and sent to a group. Since it does not join the group as a member, an external signature checker needs to retrieve from the Group Manager the authentication credentials and other information (e.g., the Sender IDs) associated with group members, together with other selected group data such as the current Signature Encryption Key (see <xref section="2.1.9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
        <t>In particular, <xref section="12.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> describes how the Group Manager supports signature checkers and what information it provides them with. The realization of Group Manager specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> provides such support through the operations defined in Sections <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="8.5.1" sectionFormat="bare"/>, <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.3" sectionFormat="bare"/>, <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.5" sectionFormat="bare"/>, <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.6" sectionFormat="bare"/>, and <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.10" sectionFormat="bare"/> of <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
        <t>The rest of this section describes how a signature checker verifies the signature of messages sent to a group where the Group OSCORE Security Context CTX is an Obfuscating Security Context.</t>
        <t>In addition to what is defined in <xref section="12.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, the signature checker also needs to retrieve the following two pieces of information about the group from the Group Manager:</t>
        <ul spacing="normal">
          <li>
            <t>The current Obfuscation Key (see <xref target="sec-obfuscation-key"/>).</t>
          </li>
          <li>
            <t>An indication of whether CTX is specifically an Incognito Security Context or not.</t>
          </li>
        </ul>
        <t>The particular way to provide such information to the signature checker depends on the specific realization of Group Manager and is out of the scope of this document.</t>
        <t>Building on the information about a group obtained from the Group Manager, the signature checker locally stores multiple Verification Recipient Contexts, each associated with a group member X and including:</t>
        <ul spacing="normal">
          <li>
            <t>The public authentication credential of X.</t>
          </li>
          <li>
            <t>The Recipient ID associated with X, i.e., the Sender ID of X.</t>
          </li>
          <li>
            <t>The Obfuscation Recipient Key associated with X (see <xref target="obf-recipient-key"/>). The signature checker derives the Obfuscation Recipient Key like group members do, i.e., by using the Obfuscation Key and the Recipient ID associated with X as the PRK parameter and the info parameter of the HKDF-Expand step, respectively.</t>
          </li>
        </ul>
        <t>Since it does not store CTX, the signature checker more generally stores the Verification Recipient Contexts together with the other group data obtained from the Group Manager.</t>
        <t>When processing a message MSG protected in group mode and sent to the group, the signature checker first has to reverse the obfuscation of the "Partial IV" and "kid" fields in the OSCORE Option of MSG as appropriate. After that, the signature checker processes the message as defined in <xref section="7.5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>The process by which the signature checker reverses the obfuscation of the "Partial IV" and "kid" fields is the same as the one defined in <xref target="group-oscore-reverse-obfuscation"/>, with the difference that the Recipient Context REC_CTX is replaced by a Verification Recipient Context V_REC_CTX that the signature checker determines as defined below.</t>
        <t>With the same caveats discussed in <xref section="7.5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> about the possible omission of the "Partial IV", "kid", and "kid context" fields in the OSCORE Option of a response, the process by which the signature checker determines the right V_REC_CTX to use is analogous to the process performed by a group member that receives MSG and determines the right Recipient Context REC_CTX to use as per <xref target="group-oscore-retrieve-rec-ctx"/>. That also includes the special case discussed for a client at the beginning of <xref target="group-oscore-retrieve-rec-ctx"/>, where MSG is a response that fulfills certain criteria. At the same time, the following differences apply:</t>
        <ul spacing="normal">
          <li>
            <t>Of the 17 steps compiled in <xref target="group-oscore-retrieve-rec-ctx"/>, only Steps 1-9 and Step 17 are performed, with the modifications described below.</t>
          </li>
          <li>
            <t>Step 17 is replaced by the execution of the expected, particular actions that the signature checker performs following an unsuccessful verification of the message signature.</t>
          </li>
          <li>
            <t>At Step 4, the selection of a Verification Recipient Context does not occur within CTX, but rather within the collection of Verification Recipient Contexts that the signature checker stores for the group.</t>
          </li>
          <li>
            <t>At Step 8, the Group OSCORE processing performed by the signature checker using the determined V_REC_CTX is limited to the verification of the signature in MSG, as per <xref section="7.5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.  </t>
            <t>
If the message signature is successfully verified, the signature checker sets the value of the OSCORE Option of MSG to the same value that the OSCORE Option had when MSG was received. Then, the signature checker performs the expected, particular actions that follow a successful verification of the message signature, and the algorithm in <xref target="group-oscore-retrieve-rec-ctx"/> terminates.</t>
          </li>
          <li>
            <t>The actions at Step 9 are replaced by the following actions.  </t>
            <t>
The signature checker contacts the Group Manager responsible for the OSCORE Group, and it retrieves the set of pairs P = (ID, CRED) from the Group Manager. Within each pair, ID is the Sender ID of a current group member and CRED is the public authentication credential of that group member.  </t>
            <t>
For each pair P, the signature checker determines whether it currently stores a Verification Recipient Context that includes ID as the Recipient ID and CRED as the public authentication credential. If that is not the case, the signature checker creates such a Verification Recipient Context, for which it also derives and stores therein the Obfuscation Recipient Key associated with the corresponding group member.  </t>
            <t>
Then, the Group Manager attempts to determine the right Verification Recipient Context V_REC_CTX among the just created ones. That is, the signature checker starts over its processing of MSG, but looking for the right V_REC_CTX to use only among the latest, just created Verification Recipient Contexts.  </t>
            <t>
If this round of attempts yields a successful verification of the message signature, the signature checker sets the value of the OSCORE Option of MSG to the same value that the OSCORE Option had when MSG was received. Then, the signature checker performs the expected, particular actions that follow a successful verification of the message signature and this algorithm terminates.  </t>
            <t>
Otherwise, the signature checker fails the signature verification process and performs the particular actions that replaced Step 17 (see above).  </t>
            <t>
To limit the interactions with the Group Manager that would interrupt the ongoing processing of a message, the signature checker ought to regularly contact the Group Manager for retrieving the current set of authentication credentials of group members, in the interest of already having an available up-to-date collection of Verification Recipient Contexts when needed.</t>
          </li>
        </ul>
      </section>
      <section anchor="deterministic-requests">
        <name>Deterministic Requests</name>
        <t>This section discusses a special case where: i) a value smaller than 65536 is used as the Sender Sequence Number; and ii) the "Partial IV" and "kid" fields of the OSCORE Option are not obfuscated, even if the Group OSCORE Security Context is an Obfuscating Security Context or specifically 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 compose.</t>
        <t>When composing 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 the Group OSCORE Security Context used is an Obfuscating Security Context or specifically an Incognito Security Context, the following applies to the OSCORE Option of a Deterministic Request:</t>
        <ul spacing="normal">
          <li>
            <t>The "Partial IV" field retains a length of 1 byte and encodes the value 0 in plaintext.</t>
          </li>
          <li>
            <t>The "kid" field conveys the actual OSCORE Sender ID of the Deterministic Client in plaintext.</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 (or with a Security Context derived from CTX, see <xref target="sec-kudos"/>).</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 (or with a Security Context derived from CTX, see <xref target="sec-kudos"/>).</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 LAKE</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.</t>
      <t>The method defined in this document provides confidentiality protection of the obfuscated fields in the OSCORE Option against passive adversaries. 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>The requirement above does not apply for the special cases discussed:</t>
        <ul spacing="normal">
          <li>
            <t>In <xref target="edhoc-oscore-request"/>, for the one-off LAKE + OSCORE request defined in <xref target="RFC9668"/> (denoted therein as "EDHOC + OSCORE request"). However, the requirement does apply for all the messages that the two endpoints exchange after the LAKE + OSCORE request and that are protected with the same OSCORE Security Context.</t>
          </li>
          <li>
            <t>In <xref target="deterministic-requests"/>, for a Deterministic Request that is intrinsically designed to be replayed, as intended to be identically sent multiple times by multiple clients to the same server(s) <xref target="I-D.ietf-core-cacheable-oscore"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="robustness-of-the-encryption-of-the-partial-iv">
        <name>Robustness of the Encryption of the Partial IV</name>
        <t>When performing the steps in <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 approaches 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 most one in 2<sup>36</sup> (when SAMPLE_1 has a length of L_MIN bits) and at least one in 2<sup>64</sup> (when SAMPLE_1 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 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 a (stand-in) key identifier.</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"/>). In particular:  </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 process 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>
                <t>
Note that, for a false positive to be possible, the recipient endpoint has to store an Ordinary Security Context such that the Recipient ID therein has a length of exactly 3 bytes. Therefore, in order to prevent this kind of false positive, it is <bcp14>NOT RECOMMENDED</bcp14> for endpoints supporting Incognito Security Contexts to use OSCORE Sender/Recipient IDs with a length of 3 bytes within Ordinary Security Contexts.</t>
              </li>
              <li>
                <t>If the recipient endpoint stores Obfuscating Security Contexts and only some of those are specifically Incognito Security Contexts, the recipient endpoint first assumes that the "kid" field in the OSCORE Option of the incoming message is not obfuscated. That is, it performs the inspection of its stored Obfuscating Security Contexts starting from those that are not Incognito Security Contexts (see Step 7 in <xref target="context-retrieval"/>).      </t>
                <t>
If a Security Context is found and the OSCORE processing of the incoming message fails, the endpoint continues inspecting the set of Obfuscating Security Contexts.      </t>
                <t>
Note that, for a false positive to be possible, the recipient endpoint has to store an Obfuscating Security Context such that it is not an Incognito Security Context and the Recipient ID therein has a length of exactly 3 bytes. Therefore, in order to prevent this kind of false positive, it is <bcp14>NOT RECOMMENDED</bcp14> for endpoints supporting Incognito Security Contexts to use OSCORE Sender/Recipient IDs with a length of 3 bytes within Obfuscating Security Contexts that are not Incognito Security Contexts.</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 the 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>
                <t>
Assuming that STAND_IN_KID is consistent with the outcome of a PRF and since it has a length of 3 bytes, the probability that a computed STAND_IN_KID value results in a false positive matching is P = 2<sup>-12</sup>, that is, the birthday bound.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Group OSCORE is used, the Group OSCORE Security Context is an Incognito Security Context, and the incoming message includes the "kid" field (see <xref target="group-oscore-retrieve-rec-ctx"/>). In particular:  </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 the 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 9 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 the 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>
            <t>
Assuming that STAND_IN_KID is consistent with the outcome of a PRF and since it has a length of 3 bytes, the probability that a computed STAND_IN_KID value results in a false positive matching is P = 2<sup>-12</sup>, that is, the birthday bound.</t>
          </li>
        </ul>
        <t>Although the specific circumstances above are new and introduced by the method defined in this document, trial decryptions are in fact already a possibility in the following cases:</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 the 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 the case that the same Token value is used for multiple message 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 the 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 from the message 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="6" month="July" year="2026"/>
            <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-14"/>
        </reference>
        <reference anchor="I-D.ietf-core-cacheable-oscore">
          <front>
            <title>End-to-End Protected and Cacheable CoAP Responses using Group Object Security for Constrained RESTful Environments (Group 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="6" month="July" year="2026"/>
            <abstract>
              <t>   When using the Constrained Application Protocol (CoAP), exchanged
   messages can be protected end-to-end also across untrusted
   intermediary proxies.  This can be achieved with Object Security for
   Constrained RESTful Environments (OSCORE) or, in the case of group
   communication, with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  However, this sidesteps the proxies'
   abilities to cache responses from the origin server(s).  This
   document restores cacheability of end-to-end protected responses at
   proxies, by using Group OSCORE and introducing consensus requests,
   which any client in an OSCORE 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-02"/>
        </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="14" month="March" 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-21"/>
        </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="26" month="July" year="2026"/>
            <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, and it 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-10"/>
        </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="September" 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 on 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-08"/>
        </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="3" month="September" year="2026"/>
            <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.  This document is a product of the Crypto
   Forum Research Group (CFRG) in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-13"/>
        </reference>
        <reference anchor="EuroSandP" target="https://arxiv.org/abs/2606.10097">
          <front>
            <title>Secrets Best Not Shared: DNS Privacy Enhancements for the Constrained IoT</title>
            <author initials="M. S." surname="Lenders" fullname="Martine S. Lenders">
              <organization/>
            </author>
            <author initials="T. C." surname="Schmidt" fullname="Thomas C. Schmidt">
              <organization/>
            </author>
            <author initials="M." surname="Wählisch" fullname="Matthias Wählisch">
              <organization/>
            </author>
            <date year="2026" month="June"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 951?>

<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:
H4sIAAAAAAAAA+1921YcV5bgO18Rgx8M7swUCQghVVV3I0AWNhIUINu1enp5
RWYGECYzIjsiEkRp6VtmHuYb+mmepn5s9u3cIk5cQCDLLvdDtUxGnDhnn32/
9vv9pesXwcbSUhEX0+hFcFqEyaQfJ8H30W1wMImSIj6PoyyAvwb7yTi7nRfR
JDgOsyIOp8HBDwE8WlxGwW6a5EUWxgn8ujOfT+NxWMRpEhxnaZGO02mwspvu
HK8GR6e7Ryf7wdEcf10KR6Msgu/LX/vW5w/2yt88+GFpko6TcAbbnGThedEv
4mk6DvvjNIv6aU7/bx5f96Nk3J+GRZQXS0vxPHsRFNkiL9bX1p6vrS+FWRS+
CH48OFu6uXgB24bP/phmV3FyEXybpYv50tXNi+AgKaIsiYr+Hn5nCc7yIsiL
yVK+GM3iPIetF7dz2MbB/tmrpcV8gh97EWxvDQGQ43QCi70IFsV5f3tpKVwU
l2n2Yimg/+vL/w8AbvDGm0FwRmfQf+bjvQmzcVr+Kc1g1ZOD0/1g56X+IwA9
imB3B3l4/kuaTfKLEEAYrK/rJ8Zxcfsi+D7OC7MU7BHver8/3NoMNtesvy+S
IoPHT28iuHv992gWxtMXwQy3NWCo/3sWD/Kocize/3fpJV59tPjH/4KzFEWe
p4l18hiRB47/nTnGIuM3616iw+9n8Rj/agPgAY/3C+x6MJMv/3skHxuM05n/
9k4Gwet//PfFdJFMSuc/ia/CbFL99de/wox2NrhMaWM1l0in+3YQnEZToMEo
K53u23/8dwYbrPz6Oe7oIoVPw5750+4lLSVpBtcXX0dIbievdp9ubz2Xfz5b
f7ou/wQyXTP/3FD/fL6pnn2+tjHU/9SvPX+6vq3+ubVF/zzo7w3iCOjc5kAX
yEVgO7PaJ66i2z4zjeoj43B8GYWjqXoYn9jZP2X+4fISAvfbg9Mz+m/h3zuT
6zAZR5pxIg8mpor4uAIrrdLT9HGgsttgfW19gxcIswtEw8uimOcvnjyZpPEA
PvFkuDbYWlvffoJfGrw6OD4dDJ8/w/0P4bXdo9P9wc4UbiUuLmd57TYPdt7u
WB8+B/KP7G3jOoFZx7uhm5ubQRwmIe0qBC58kcxAPuVPxmke0f8M3l8Ws+lX
oVlnKU7OS0ix/Wx9swp3fWv9UZw7P4djvjHzhLkZ/VA+vhz3t7fXN2sv1rr7
aTyLC/ORDB85zy76YRROrB/3F1l6Cjd37INqVZCcDoLDCIkirwqTAuRy9YHS
GmeDYBeWGV/O4klRWuPsMp2FefX36jZ+/Mf/uZzGAI/KLoriMoY13Afk/pdP
o3EWFXnwEqR28DYtgtNLkNSTF8He21MQCvF1OL4FnL5E5KZbD+BeK5rHQXq2
bKEZ4PZWf23Li01h9j6+ZlQa5U/Wt9a2BkPQEJ4tLaHOA/wK3jrdP3wFe/sP
wJr+T/B//7m8tNTv9wN4A744BvXiDDaQR+MFoNttMFe6ztHol2gMR1A/4Fbt
bZ7sn56dL6Zwnus4SxmLgxVWglZxmet4EuUBXFa/SEGdmdDSsCRSc3oezKI8
Dy/wifdjgMgFLHkD+H4XRWwQvFGLyNpqEdHF4mQ8XUyiIAzweVdv6wU3l1EW
0feWjS64HICqOJ0E+Twao9aY0wN59F8L0MiiIFnMRqBJXofTRRQscvje6Jae
kOPAk4idpPbRylfxxL9kbPRSgEZ1iQEocMB3cLEiDQCNFmPerOYGAJDo/TzF
TaSswN7EdKCwCMYg20ayQ7y5c1DnomyexfBN0BIBuOfn8Zi2STgImEDqI3x6
nsJDeQ/WifMAlNUFXm0wiWAJ2HoYTOOLy+Imwv8NwsmkD9+eRUDWE/5yOjpf
5GNUJoNxlBVwiXz8XB2zdAsAv0jYPG7Mfxu4z/Q6ym4AFfVjFmjp0kPQQkTz
NsAF5RSvGQ4Z9YK4CETRRSZKui4QO747i0HuwnHCeUGQpfNHcuqJOiAAJGR0
BOEWAP9P8W4KL/2QIn5PKpJ3hZYIrILgeUAsPEAevkgUXfCqO8cDJm3gbZNp
tLT0FdoAWQqYQ099FXz4KsY/fHwcmv/wQbSRjx8/D/3zF1Er+vhxoPAqnUcZ
3TAADdcKrfen4S2QE2DcIkcs2n15dKLPDJIY/2bZa/jGCgp1+RDqUXA0fAIQ
IQYinSOlAnEIZguBj5GcknyeZgUTIOCIOiQzInV2uK+OHIyh4uNh8fjS4iw2
c1DCRfGVDB6ax7hf2BAIcvjvYgq3H2X4DuC6PjUeEagNz8JLLeZE5XqdiJ4j
FjVHYh0vpmHWC/J0FilgCNHb3EgOM1H2tnMWRGngTzmoHUvfINF6+ED1vN2Y
szBlxdyQ8ycaHenSg3RRXKT4bzkl8g24ZWYvSPfTm/AWbynKEYJwggw/C4Je
XSZtDtgCMBl4HmxrAN4U4AuCVr8BSJHkkf0KM67z6AZRhMGag40Kui7tDNQo
+eY4GmjAGM7nh0hVtpQh0Hz4YCUeRIOe782vc3Vtp/zDwd7qZ4EVnP5VOp2m
N7RnvVOLqVh00/PgF8gqpkWbJuDrCShqkfLQAA7HiEoI93GaFBHDinlZaJGQ
wSX8apns4JUxfEGJKt5I35A4fCOd2di2tPQ6vYmA5noVGQ/buI5umWrmU2CK
RfS+UJjt0AiSrYUbeIIF3EgHPeA8S2cKXJYKEA0uBiShp7i18EKdZxqFV6h1
kHZi83K6PXgecEot0+PFGU1H0WV4HYP5OwW+UaB/ytpkPANOHbGwV6qD2iC6
qqxHozCPWTESVL+lt8CkRly4jgCVJnGeLeYFsG5tg6CU2AGhDZe8GF+WgGxD
CtZVXLEAtR3hqzUkOG4ZUEE4ztIclKX4/Bx0DQBBEhU3aXaFh7zMCYLEb6eh
1l6ISYlOBCqcwy7BaAA1Ko+ya8Ur8QlnzWCF7+bcIgn7AdABLrKQZQSoiHk8
Quqq22YeXZAsXwU8/KK0TqWt2aoFvv2b1UZR84IDyhYnacT8B/kjQjFO+iNC
ZNBGwqnSR5AZAUwVswqzUQygy2LE8giIaEaKErI4RNu+4m0jIBJkm+9QeAP3
BaU1zi+F5WsmLqrebsp8hfbOxFpYO41pBxPmTpbyCYtVqWGaReHkNgBSj/BT
4UUWkb0L7B0kjb4TBTrAwaZLYWlNt1nZrd4WohPyqNsqr1XgoBVEBcnrrlZU
Jus2SclhCgBQoxCDTWpND69lHOYo0YinOMcVcuBTi1C0Dz9KRd9t5OI93FQM
CjEAtX6tNJl6JAKfYGnpML6KtD6IqAvStk4fL4lRBwfCiyTNQd3DFy5T1FlC
0iGtS6tiVJgb7BP2Lq+Tfq7BhXqmiEzzUXwb0GkMbw6Ct3jF8NIU9lpmFWSN
Kb4wi0AB5xs3eInXgfdFjC0kBEdmq74PsoG1j5A4HBgNsfVrr4O49aq1yMyR
ajUnYghkEcu3yygGEZrFIFthWZYKPVxJM2FSo0AUMAKSeTOKpwBhuFe/7Ypv
3RC259qCVZePyCqeD2Vi2KStGJO8RTu0ofzrWMAfPjR7qUEqdDeSK6s5blPU
EXwET8RN0OuCeCn8FVi4gBStEuJthu/yBv38sBnJYJkKbysb0YKI9BHAkq++
Cs5ISqTT9OI2+AodAYX5g7gDrqLb4AZDN8Hym3enZ8s9/v/B2yP698n+X98d
nOzv4b9PX+8cHup/LMkTp6+P3h3umX+ZN3eP3rzZf7vHL8NfA+dPS8tvdv4G
v9BRj47PDo7e7hwuV3EPKQkgO5KbAbogYsqXgJ+Ps3jE+Ppy9/j//e/hJtzy
/wCdYX04fA7Ywf+xPXy2Cf+B8oS/RkyT/xPgdbsEqB2FyGwD5I/jcB4XcLvw
LGi2wK+SAOkGzbD/QMj854vgz6PxfLj5r/IHPLDzRwUz548Es+pfKi8zED1/
8nxGQ9P5ewnS7n53/ub8t4K79cc//9sUXe794fa//evS0tIJyB/EY7wG4I+M
gHwf5+EMOBJATntwEL1y1uTTBO1a5OLTUF4RMtTOmx5yhDHY/sFeWITBHhJT
TER7CEi9IIt0d2/v0PiY1uyXXgLvRMnPnOYkEsMzFA/Oy6MT9eLzzef0IkZq
LJ9OT5GlpWcyhth8qAMbUvqdUWBz0TVQ905uZ8HhzvcgVgF+GPsjYBxaGuzO
Ap4FXZHlBKYv7Ath9/BR0COB8mk9zWWV5Y+UEOzvvT7aRfzlwz1d3/bsiRhW
Fp3jZQrzNmYEXRy5YI6yCcO1LNFfNOmPtqaOUsmFoOfxVs5OrBfZe481wQjM
xPRWrDS2s40/oLMUQ5FcsvWeZKhe5AxfzZRZO7qf8AeVIqmHo1H/dZwCnra+
i/evU1NmM/iLenMljyKAHcjcvrVRDMx9/LhKfqIjS6jc6QI7XNrj3Min3Ia4
nmqvoAEYxiR4QOgfJOP0AlhYWgP7pv08DnSJ6O8KYsum9cJ2aSkI3iVT3pHP
OIOz1oOiV/nISnyuvIarfm0a1pxG50C6oC2jdjahPaD6YvzQYDPc4ilnYXbV
Cu2wZZPk6ocbICOAoaOMv0HwCq3O9yH+3Cs9ZcyNkFyPJM7I7ZWFMzTa1fnK
H0R9rYKHqLH50A0sAEQR++5ijLmgdm50/pKPA//ECvZqLYnjKu+LiGQUCfUU
NIGmY7gkQlE39OEupgoPmm5hwBpoEt1YC5dh4Lq4IxOjQcUVjwraSXxNMuwm
BXMEVypIrcXkpHAGehxG8UHjOz744efv9/92enayv/OGOPn3B3vmL4PgKLFd
33k8getteYnUIkVf2ta7p9zokftbuTJ7ygNi+QnDrC2cwuZGxbNfCjO5eKBP
bvzcfHiCBgDPgqZz4BZGYjw8ctMVPpvz7bEWU7ZZOdLw5ERvCl7JWcs5FQfG
xmB9MMTPWfqbVkaNdqNcn2OKJ3A05et48nUQTcUHwRv+Gt2dX8MRs5A2Rxg3
mwPGjm7hVgEEsJpZAb3TrWssH718BRtfZtqYhqNoKqSxc7p7cCCLsnuzohig
rzQmh+Dbd4e0CZYz514eosUpQtCR5Sovgf9oBTp13lKNzIvRua9FnwI7AH3w
DA/cpsWt9ko3QV4EugVm31+H04ufMXmoGY4uE2g4BQUdPOeAu08njGYhB4DR
mLzAOAYgG8lfuoceGi55nFMESGPS8g/ooCnJxAhz/bTMLGWBLYM9cgHLZLeC
ziSL1S4/fCgln5G6/pnvFRHty7vbnf2dvQ736dn0sNOmfyOYgPA7tKSiLP76
zc5ufxQiLqD4I+Ypbq5FwqBYef393qtVjRlfHzZDH9n5cIu0j2MTvYy1oaBV
EALlRzEqc4G7ClPki5H8Cdk4u2W0q7eDmqp0K4oGa80X4TVrTpSw7E72eEl4
+hTkV2nvfZbrlSMw1pLzrhIvV+5FjIchvlTDC29OvzWZJe36Dult1e+QvyAE
bI/yS30Eld/w1s5vIIJAkKNfSp5URMGWAm7QpwP0VDClYXVyZ2HsosBgb14E
W0+fbmwNyHNLLxSol9QFUbxRnHg6lZAQLJlcoE55btbfIKGWg7mWswNekiHE
2yoBMk5FU9IRb+xW+58Rc8IpO7hlB+hsCf5FbUQlIUzifLzIc8bADx+iyWWq
UUOeIfUBnX0vgnjV0kEq0CJujJq+nIyhl88Af9F7fwm/EOT+xBQii7V6eLuE
ERQSYd5MylhnoWVF8QP89GVFKL+lk2m0nJttcRrE+0Jvr8Rxt0p61+oDXWHp
lvL4fb/AjFui7yO8AqS4OJfzYwAjtvCJ7BUQFF1c6pTN1aRLtx3ZmymjrOy8
JB1BkMxRNg6ZmmJ8Z//t7s/HO387PAKZR969NLP1Z628h7fTNCQCw8MTGecF
HC03ggl0ZEBcduXw2ySHUnKOkkhGmZL0FNyC0503x4f7Pw9RENJO4wzTl5ke
mc1Y2/s65y+q9Nm3wV8wALVyuP/227PXPRAhLHL4v8VjyQsL1QOEeWnYnrXw
ADOmJUorL8O9XCxA8gH+aVezvuDnKhHPZA8BgmGmRmp/zQ9BgMM6gp8hgA8M
t/qk2h+8PX53xsDgK0NnKMBM62RmXQ04ckrkOZP7cIuP19NLxRipLTjaRbk0
50V/jrY0Sga1Bt3f36MsZQmkAqtqtUGXTZhPoxdZf78Ir2BR9SCvdODjMYJW
LTHyXjBLrykScwqYDJZXcAQPZjcxhsacn1Cb2GAwLwoXzCVrOoerBVgzqN3f
/oKlI/393ZcriCzwdw3YVXqa2bSARx5VJhv8p6ViAeLhbzPQ+oCY4TdiJfSe
LK3eK5undcpnWqOmaz8bKwwE1Wanob0DejusdXPIweic5mc+SYDeTs14tUoj
TK2Rv8K+rhaTNNeizwsJtbcSwJDbNgAptHKOql5AKz+sMzRvQu0x0KRhyK0w
zickEcRFIPeDogxdk07XCNhNF4eJaR38wLKeUoZ+OjpBYiYapsyCFCmCkbJP
Krx+XpsdVpy2qwrF9EmqhLX0X21O7dBOmVf/VcHGw4lr9oE81qVHP3g3+BZc
hyiv+oBHx4+vvV9bGw7X14OVvwJvELVx1b/RtfeAddFkMh6PRmH4/Pn29rNn
W6CPbW5ubKyvD4dra8GKYpqrwjXx2xoq7oqAg3DTRtSak6F2pj4GkHiqcwju
dj70+wFOqvzTRUYUYz6jv+ygIEnyBcXCC76NzbsyeTuhmKBQ4uM2i+fMAXZu
2iYsfBMerPNc+Ii4PUAwrpXQ60R4INqQ8BTpEwkwuRNCJNGFSaOeotYwitk3
nZRE1TOGWLdjPvPLtJI/2JFp7m+1Mm39D5n2h0yryLT1Gqa79QkybdvF4Q1G
4dOznbd7Px+8/RlbF9xFvm3YQuhw52z/9AwZVFkCmV/Y5a+TV426rS69/2k6
KnEx93OdGKfFAvRGFK8yRQlk4VQWfwgpRyYc5orjl8hEUG4LAFHM2ZS5ZEvi
s5R8LeUamGpc5HamIdqfq4O6e3KYUvmqXI7lR0Dkms+NrLMiuZ2EHJ1VhJxG
OCPkqshYvbBtPpwEoYlsVS6leesSE2ctm2nDmEno/8N1KJrsKEfeE9B6dOBS
QmDV+ifHCuevM3RkiUNavhFO4RgwAO8eDMCS62FDux44cwov9xUeV7njyttA
702cLNhvqry6iNCYlStZXOwwNeE1n89URwQ/SkI5VoFxuNV2O5ULW4zbyVM6
cxnmnNUkbMAGRYVjFpS+UK6usaSQ+Klgp0UWR3BTDJ2Dc19uwu7ZT4jT5+ki
YSVX/tDiuLV0RM95yHmLC7VHRO+RSCycL6QM3CydZzGilhxePmeLYT7+znnB
jsii9hrsbUsRoKkAvMWPkkvvfIGp11lZyHrATm+XxG/oleFaq+fEayuxRQGK
7nqyQIYEovod0xMigQBn5ft3e0entSnCpk0FbiJORCaTtuAVzACH//mNFs9+
cJDs0sKfWCm89icneNGTlazItnpQYuD6ZLkdEWkCqPeSg0n62Z3hD+K/Ni5x
oT0n9uO9HLuMQKtmacKObtQldZltHlGHI+JsyNoIlCrB2sdb3uXM8qrQJxZS
QzqkFYynMRUIXEaWV9ooC71aRFM8TYQrJVikifhAUdBbWuJYyTd1cZTjj7iM
H0SJihFXkPGU9t9TMJVjKM+jU8VHWbhn6VUkco2/ay7CeMOX6SlLZhEjSrg6
o/3pWp2GKSEpx48xXYSKaghrpHyN64ItNl2XVin6CEYGtHDmK+rA6ez0EyfB
ZHuwWZdeYviaXQeuqA/jHfAb3gCag5zfUWunDEqHbAoi1p/TiTxQvME9lJeR
uFUnn0l+9axqfOCMwctFPJ1wPZOlcP72LlE7X5rIlfmEny+LXPfz41VbZXHY
ZnvCZWLDkpRUzOcqFNziBHhBPNEnxJZLcdFTVyqCU3or3MmzFIwWnpRnv3nE
dah3su8fUprzxSnO6Wfdwit1cW3HVLj7VJA5FHMXNeOAqwa1K7ZOglF9WeaR
YIRvnQRYnS0/1C5B/giwozTj7hwmUFvLy33eyPX6gNMGx/XOzNfCPF/Motyg
7P0Z101UDcEHRnypDxYFJgrmjAqMQj4DpJ5FrTssyvLkkjhHdphzgwSt09TY
NyWzpgXG1hk+icOWtl/jvLuT4o8a/m9KwVceEaV+54sx6m9Y5tjQZaVX8jQb
F3Sus7jkhjpa9Yg5FgtIUnZbOMYvFhfr26BUQL1Zqi9XrUvNblWtaCXhrxQp
byL4NhtbvazTU6QsALaEwvNWauwTnW2XziUzfXOwNgxW3iXcai7+ezRZxTPC
n9eClZfhBIwB4mqrQZRl8INS0/0InQfPQGfAs1cxW9G+c2fIj3LNkDaVI9cO
LJjTuXoaqv+8J7BhJlz9/0C7MpjEIfkHuKESV96sBlDud07l2aNz1atuvoJm
fw0K4jShehfYbJqsEJ1ZARoql/UqzRAPILmMardD3m01yVDpmFRvR+JVTHTT
HafqMeMQYlN6Spc9rTfsSdIUTVqIz727aXgx77UU66vfYEt07mlDdI7Ca6fU
yKVGsPVMiVRHU4k+h95GxIVRhNIOOAAg220EKuki000Hovfwpq2u+U5OXNXp
e8XqVcZxYG5CQ/XxTXuyer3gruq19lyR0tQ0a1AcnFK1ROVA2pGEtxTpb6Hb
DxFyaIeG9ibcRf/waf+t/v7YjkXwKYp4Rjo9NyHL5ZrhdrA2OHNlz0JQK6PS
2IYSLW7eg02JnDY1XF1fqJiY7ndgmmNZba7KTa1KjbNYB1wFzlmq8koXuDlq
qLbAqvRQnQdboFb7DOEmKQVXt1ZaJDH+jIIN3gNW8Hd9bfrG1Y0JH424/Qw9
1IA3g+CVctlis4kpu1OofM52E2Ibk1KFGx6AmhAtTG+7cToX3cxK2dbaqU+1
8ImJoau9m2NGWlfFsj0JZzKRKt2nSd8wfKAxneAyGl95gjwdI1cqNOkm4cFn
dUDJOeu2c1TVUIoDZ0F4ASg5qByAPLntRZNupDG+U/yNavvsTEkT+AG0r3jz
zK9W8JvNSwLGaxRq2t9Y5171h256crcNGtRwWA1W+xMuuojEZ7UisdTL8MWD
JFFwA3+CjcZyZysNIqY1+N/0/vOHiu5/U40aSwi9HC9WkfUHjIVrkvPs4pNj
1xg5Hq6ZhKUOwebnul2gTT6fQos+FimpSGU22YxLj0Z68D/ByYIP5aQdfaFe
5FZQCXSbHM2fzw1y7xymXyluGZR0wV/Xt2GTyMP6MITjfPlOCHu3dcIee1iB
qNMVFDqPaERtsYNskSSKdLqQuPXRBu6BhDYUZ2w9lA/OVcdV2+LsZIk5tIrG
ndGOqcEkaLxM98ap0dTiWOBFcRcjYOtJevVuHo6ye6NldZ97w9o9HpcP2O7U
qGS0fW6oU7rXrSjfWHLmgHnjUcDscONnnXxHss1LIgwQyhjRGBf3hPDZJ6BG
xfPVjhptni+VBoHUrEj9FSkntkaL+Q8+il9a+hYEQdLqZdFxMW7aqOJnOp3N
7kvo2BnepJfafKWmurrPoH5IcKIh4c0Je90tRurGbFpDuXcMjD1EoqZHUdZB
9E+xJK0UTmeZSwoOPXLypgfLPl/+5sZdcKWtHG+za63GZpfCvCabusy2Nj6v
bd0YlSc9+D6OXaeMTFUW3wkMTxkMHoZmVbh2jsgXdiEnslXVXFkbp9QbKBwX
C8r/EN5I7LllNzrGoFDgrjVtbi7977OubVOqmh6umsuFmqeWrOJ2eCoNLcRK
3MXMuFLvCmU05jyCwzYoc8tqXJhs0LZeHJPoOg41+KtSm4Ip2Qw+onr6G3u1
RP5WOnAlmfyjqCZuEpRYR6SQeDOg4Pg3aam1cyZeCt0Zs1tjzWAFv61GvFDH
TFeJ0EmnTV0TS2x+R7N5XnG1MiqFDqx7mkincD03Rnn4KUWzsvZ6aW1pBDGh
NFgcbyDMxe1egtdhV/jbO0AGkksnHPykSmmN7RynSHmTlKk7Q8MWewZfnWNS
nFf33lB73draFklQkb68n0rjdtqJyodTkyVIFeHkNdOOjnrFjCJ9PDTB7eP1
pD8NHYYrriaWv6juUr3pxlpwYJv+ApuaqARk+qJJPC5VScipa7L9uE8CkdUy
N3EtP7Ns2roSKF3DiEEIm874JnncEvpARHFwbpuARe1nkTXE0gxiGhX2w3KS
ngWGvAlcDORzLkYxjW+nNOejnMXceNkKoa1u8FV069b5EgiLY74P1puvMZ2e
E5rVuDGvg8nflZFXRSpVITlZsWEakkyGyd3BMKwb1TercWmoPAmJRSCfxSST
R2j9xeeNxLLguiOFK7rvaIeCmq69XJsrGcTgdRrkBOVeNMpp7zSjsfmWN1ui
Zo9W3x/RPJzGP7qlEfC8cyBLxU7t5tmVhkhD7jBIPtFUlCorzLDmGwKlEYE8
eKQK1sazFWc3tanCQVLyC09A18umsenrabMCdh1yxyn6O3w3ET5vRdV3fz4Z
BCXuV3ttDhdLIuLhVuakGqphLR/m/Ti383RlHVtmm+lmeqXqYag5ObM9SnEW
d6gzKaUJ43Oa7ml13iHQSte7B6Gcu/TOfSiCcW0UepP6I/H8EVSy2OnHWoAq
ttRKQFVZKalCzekWwpbo+LfYx1fNGrI8ihhuZu8lYBqLdJ7Ex+3ULUH384Zt
jni6KIUN+gVWVnL+xKyBmysGCjoFp+LqGmHsI5f4Qf+iFSVK5eFimfDCbbih
AypeXDDLNHeAsMiSXCEqYR8ZQI18uV+1s1NUTdnkFLYcYYCOHqBOkEkquXOq
sZ39qhgRnCisClc5auazFPAjD1BN6A6fMvnKuB49JQwk1svD++QqxFwnBBBO
m3LmMlEL5BqkGCg3bJ334+ejwz2J8YjhyXcpeWlYVWU0eZqnBjfAMNOGiM5J
MwNFxI0SyqPak0KayQ6YnoAiF1TCbS8lqrbdqTEMME8tzUI9pcl/jLP9N8dK
QHnCkHjMAX+b5F63jzdRGy76dv/Hlm+qfmOoZylmowx8sy1O5aHn3bz7nq0H
0UynVu+uAsYT2aDeFl0qXB75qKy6Oi4Aus8Xyyp3u2b9QKp06N5cfStZiXGW
nIRikap2lSSTkqjqe+7uQ8Sra+/foa4mWJG7WXXQhtMt9IRNi0hWDM6uukd3
FYdq0nC3VXpeX6qp00GJ/xBQKh3ecbyWuLQ5HzLprbP4dPc1c2nd05Erou2x
UN8Bu3bm/X53vOpq6jS9ZWOIE0J04+AwWM5xt1HwC7y/HOTplL2+5zTWArkr
OrZQg8BsB9QrgmXQACcX0XKPM1LxbaAjfB9+lN2qQYnsSnPmSkmRqq8pLQe/
6STK9kWekFMzYbLEwmCMPYOBaCIa2K52Re9Iu+Awe7KbUjwhLOAUK9+d7FJh
f03qybOBdrkQdMoUdZkiOTI8Lkie8Pm11gDrk2rbPChQ26XyO6hwZqBGI7eN
uZO4SoPnjzsjEp2FKyqiesNZpr45e90yeEx3DevtYO39Zvh0fXMjWFmGB8n3
Ql3aV01lotyRlHeqpGjZnTjbUvUpX+tVVwFraLlqlamKN4XswpJ9Yt1Aa4tW
XdPeYtuIQuzBkK6mfVVjNtyB3D7fmXHYL6zW540taJni9HRhv2CxGh/bX2no
1pJFHEoTfbj0WdpOJSqYq1/rrPWA02TuEagseZJ+vQYz39TGJ8PEBMBtIFPg
0l/rWwPYCjHwTw6iC1DvlRhAQ93EYcx0iZUraP9Twkp9thNFvPrBzmRSu38h
89r81b4deC+/7LugHrElsLNVX4bIpu7aNg0N+q3YBXp4gJtaV9plfse91YXd
fFdNbudwBHRmTw8qnbAc81/73cX8y032nWEOyoKlcQVfXMP9u4/EK4W+XOoU
Ps5Xac1nEVN0rvMsZSSOorbaQaZOV0KGHYP8K1SFCeOV/Y2AtoHcZwO9rwx0
NV8Jv9c8Eq2LOGTvr2qj1HG8kq3Jiw5jDSYr9f2XkwP/Eue1tGLkXi2dv+MM
2sFPUfy/mr5jfU4Tk5mChsp+ze4R7qVN8ixb77EYY+qHQ1kL32FG1KUzzKhl
upMzgukhJz2VNRVjK5WtXfvynWlJZM0tivmiCI6+fyML4uyP/j5NmWR+SfbS
0+0tmn/JZW/49F/sJ1eOT77vUblaLzhc7ek2pKxI44N8bkmVoD+YCS0t1iTp
EfCBO6b70Gu4JVPioBT5ygddtKE3D1tSQ7rvoozOLpEojHbpQCO1MrUqNNSG
2+5XPjt6P0oCpa001uN7iQn9M6P8HdMqHxzxK7N0HJkpTBwHWXwBI3U+bRpK
Z5O8Lam5MqCLDIxWXcn4/zwa5vQmvM3tLVrzAInH6E6xsOkZDp3Tdlf1SR04
+e2NUqHsSzbqWpouuJqmpVxy7EIlrvaaUlEtuatpxCNo1GLPPn2xDikL9al2
uuYd2Gs8W8zETMN8Rn/Qjl3Dvconuk1ZsnWXPWkBFeeg6mvPWKmebWI/pPL5
8rvNW2Lz8HOOWnLp0jKeO4GAnL4UMy+zgDEo1hG2itCWSm0vXofnGjVD2O5D
teTVbbzsAYstfgUactuhxqON+7GQVk7AaheyDi0teb8HJlmEkWTl2xgL8Piy
6YtWrM+XuOzxXDRUow6qW1atP62yeGJbzQD1Nf60gt2/o8afPLJZRaPZBzCO
mjxHXvhjNF8Z1GHMHjqV4cQdNrx9CwkFTKVXFoGqLAVs6FMBbKEfJQI+sDrA
KqC2E0ZHB7lKTek8Hr3B4mxGVMSBW4+WZSL9FgUQhHQDEU6AiXWXinu1nLzX
GWlsuUKJRzjh0tKuM9FQHqAuQzUs0tu1XKdtVr0kJ/u7P1ucks00ttxk3C9X
aJfamZf4PSMeMv7+uHjPHpYz3Xywrqu39e3P3JC8tH1vd/Kga3Ny6xg1Dcqb
W2q3wFIKFNq33KnXtm3ePqhK9MBdtxVQkZ6x/8+t35o0oVkdDrS+26YZtUDi
jpqRr5l3dcNWN+/mi7cTqu7C2sM7xz6VZz7XrnkPqqst5Drt6G6sZfAwncqt
FEyp+RD0cFJp2zbjkbyjtGKSjVEtkCwKpCnteVHKjqs9wNJqUI4nvWsexlT2
yNOQAP/sm5TqsmrudOzEKNv0vHIgySIiP1TCPE/HcehsNOUAgLoalAgm1aj7
yR3aQ+tdmn9ryNBO1XrakYIazrEClWWQVncKi7tb9c3/7dhyvJ253r90my9y
BfQTCSat3q93jFxm9y7krXKp0iCmiwfIIvkUwCpZRmgNSAuxCaU74+ZAQNAF
CSl7iIJVXaaIrCOt2IykrXu5n6+LElAn2cxU8ntSYs9YVAhhLU+d1ggUZVY+
yFaPUOCKxHtTswaVDT81tamHcetL7BmoxGVhmjraL0zABEFgUC6aYOE9ifZP
JO1DUrUypwNEN7pqvYaHpAiv2D9IuMkOHasxgF9yX7Qq455W5V26L2j0vVcb
QU8bJn8DwWF1KuHYNzFaTX77Y2j0rzw0+rN05R02tTDY+ISuvE0zM6lfxI+W
caxatzbRGN7KA3fddTXKuzXNdDroqk0Cg0VZJiy2plOuk93sZNtSG6cOKTAN
u2/ZOevqndhL7Mz+s/QhfBbrfFc/tQlv9bL/mXvvVqCRW/6jX6P7rqW/1Hbg
fV7fgNd6/RGb8Dq7efqlt8BVNoHb7bZVUezo7OvQhXO72qjly+h/6yZo6HCm
NN9UEKo04GxsKt+h7+1G0/tb/5xTbWs68ADIxUn3x1Db7o2Bn/IIgjv0Bd76
LH2BNxv7AjfQ22diUtu1jYIf0/fz4F2D6wHJ8G/yDd07fvEb9RM1djU2im6V
1VBC2MO6jjo5cHUhQKMX4fE8GY/ZPtlzkO6tlB+tk3JNLkfNhh+k03IPWPja
RrByGmVY6hnAj9eggONdrPY6tmHm5MQoK9B4IWyVzrZuhEuHtxSCOj3+tK+P
UM56M67r8/x0sNELng3We9LtebOLednjpm9eOVtqNUt0AjcdF6q4vXOT6Ufr
Md0uHcwGGkTQJo89ELFNOChiI5zMYlVfcpuEM2A2lEushQqmX3tsuQbC4h4A
XOAZXmFJxXUI5puaXheWzRwcNFDXm5W8fPjAWT0RU1Mv3Auz3zdhAt/S+Eo5
NKW2UszPS9mWw/Uu+LSq26WZiGRIVV/wMgqEPDgO/hKsHOz1gt2T/b1Vo/w7
29MOI1Ku8cUemleVPH7qAqDaI4ociijbj7rhwhfUO/PFCG41CE0zP0oCArzD
/wRuoLpo2auI2rRHwtAS3MbYgXOG0/jvGh+cU1DdDuYZUSrKKHK64VkTHrW+
QBVZYrmjH44gppwOZnIVbsExNsVHoxgvbo9BMwUZiNzjOrbEmxWZ8QCeUan+
ULWpeeGYu5xodNDSK5gBohNZ2wCYpMB8ZEzEK4UFdPxRETp9UYdrltMQYQJI
pKGh+8Efuw5DDdS7uwxNO1FhXQ6wxY45tlsiuE4AZmdxYkudZoePjEcw7pjj
RkcM0H09T1j3DFu4h8uT3fICbePrc0Kl2otm98/ohKYPZu7IqIBd6hAPe4ti
0lbljdp0AXuQQBff059A+Jeeb4WjlgIP6m/y4aJlgyjyKJsgNJFFkMxCS5qX
boFGxz1vBe9MC1ODrtIOo95974t18oh6uhyHUdMDJuzZegzpgyHrD9y2J8br
RvJCCwFuBMwz9pg6Q099jLqvVllRH8v1SA9RK5ie2sAe61Ll2tE6G+66eYQL
dVv4M/oeh1s2U0uihzg5DRXa+JUcmg/h0bS7wmqMXm/xan6aW3O4+VB+zU9x
bBoGQKNUjJdTucEGtZ/4ZKccEczw6Z3ccsPNx/LLNdi7cHpH06zWQkgSpWWh
1JvDO38DQFODys6IqDzNCCmLVfAyJu3a0n7HcTZezGAxCm3IAdUreHZdCiT1
QXXbBQDHIERj1DvZBkwA2JKWf8LjVX6Mk0l6w9mhtzUSCJg0sWUOR1oiq2TO
rA+2BsNBN5vGws027tTuZK1hAZ+LI8P//K5crY2I/Ie/9Q9/66f4W79Qh+sj
zq7r/+Fy/X24XP/QJb54XeJX9Yh30mbQzXTWwC14GuDdfGuPMnrx0wf9IT2t
34WMW6Yswo95fAFMHxuKOjt+gPmLjw7x2rGLBumfcq/QDgGBT72arp/6Qkcz
PjiWPdzAxlZmoac3tqXq3n1qY0td5R8THH9HExydRMg/hjXeN4PvdzisscZt
6vCW+FedySg1Fy3syjEk2MzWrNtWcZGLm5IziZGNoouYFboun7Jm8rXV6n7C
8MeOx/5jEORvaxDk/nvgFGiIn2rllCKnyFa5rb78uT+WP39sahf/tJvBWx0F
CGyOvhRRL1PakVGX1afxQfHhEJXqB+CjdR1my/4x1wtGV5ZL8UqoOpWc0kCg
2OpbRR38zVIkmTim1+P+WnV79oyh8ie4sO1WF2BkRxFHFO0ylBXOBKEohsqB
yVcr4Ug7CIkCNL1glyK3caV/6sAqPwvSLxRpmbsCX59w37SMRF5dsYGHg+dd
LeBSU187yaijql9tilDKUVnMsaQx92EV9SAiwWJBNtZpMnT+GcHqcZJh9HcI
3rJT+Gima3stF7HfitgePB0Me8Fz9D89HzzF/9liJ9TzwXDNgWD9RqTxCTob
dHmQHgrrwDf0ILr4E/MG0iwRmiW4HqIFkhT3Wn3ZlaXhZVZdUatXOpA6L6Vw
VanbtUJoTlIcjVls+IvaGBZ+rqB7WCjyK7fatPtTm59M4+Rv0M0fJxPLPaLi
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
AA==

-->

</rfc>
