<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-id-update-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title abbrev="Identifier Update for OSCORE">Identifier Update for OSCORE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-id-update-04"/>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2025" month="July" day="20"/>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 56?>

<t>Two peers that communicate with the CoAP protocol can use the Object Security for Constrained RESTful Environments (OSCORE) protocol to protect their message exchanges end-to-end. To this end, the two peers share an OSCORE Security Context and a number of related identifiers. In particular, each of the two peers stores a Sender ID that identifies its own Sender Context within the Security Context, and a Recipient ID that identifies the Recipient Context associated with the other peer within the same Security Context. These identifiers are sent in plaintext within OSCORE-protected messages. Hence, they can be used to correlate messages exchanged between peers and track those peers, with consequent privacy implications. This document defines an OSCORE ID update procedure that two peers can use to update their OSCORE identifiers. This procedure can be run stand-alone or seamlessly integrated in an execution of the Key Update for OSCORE (KUDOS) procedure.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-oscore-id-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments (core) Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/oscore-id-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When using the CoAP protocol <xref target="RFC7252"/>, two peers can use the Object Security for Constrained RESTful Environments (OSCORE) protocol to protect their message exchanges end-to-end. To this end, the two peers share an OSCORE Security Context and a number of related identifiers.</t>
      <t>As part of the shared Security Context, each peer stores one Sender Context identified by a Sender ID and used to protect its outgoing messages. Also, it stores a Recipient Context identified by a Recipient ID and used to unprotect the incoming messages from the other peer. That is, one's peer Sender ID (Recipient ID) is equal to the other peer's Recipient ID (Sender ID).</t>
      <t>When receiving an OSCORE-protected message, the recipient peer uses its Recipient ID conveyed within the message or otherwise implied, in order to retrieve the correct Security Context and unprotect the message.</t>
      <t>These identifiers are sent in plaintext within OSCORE-protected messages and are immutable throughout the lifetime of a Security Context, even in case the two peers migrate to a different network or simply change their addressing information. Therefore, the identifiers can be used to correlate messages that the two peers exchange at different points in time or through different paths, hence allowing to track them with the consequent privacy implications.</t>
      <t>In order to address this issue, this document defines an OSCORE ID update procedure that two peers can use to update their OSCORE Sender and Recipient IDs. For instance, two peers may want to use this procedure before switching to a different network, in order to make it more difficult to understand that their communication is continuing in the new network.</t>
      <t>The OSCORE ID update procedure can be run stand-alone or seamlessly integrated in an execution of the Key Update for OSCORE (KUDOS) procedure <xref target="I-D.ietf-core-oscore-key-update"/>.</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"/>, Observe <xref target="RFC7641"/>, CBOR <xref target="RFC8949"/>, OSCORE <xref target="RFC8613"/>, and KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>.</t>
      </section>
    </section>
    <section anchor="update-oscore-ids">
      <name>Update of OSCORE Sender/Recipient IDs</name>
      <t>This section defines the procedure that two peers can perform, in order to update the OSCORE Sender/Recipient IDs that they use in their shared OSCORE Security Context.</t>
      <t>When performing an update of OSCORE Sender/Recipient IDs, a peer provides its new intended OSCORE Recipient ID to the other peer, by means of the Recipient-ID Option defined in <xref target="sec-recipient-id-option"/>. Hereafter, this document refers to a message including the Recipient-ID Option as an "ID update (request/response) message". Furthermore, a peer uses the Recipient-ID-Ack Option to confirm the chosen Recipient ID of the other peer.</t>
      <t>This procedure can be initiated by either peer, i.e., the CoAP client or the CoAP server may start it by sending the first OSCORE ID update message.</t>
      <t>Furthermore, this procedure can be executed stand-alone, or instead seamlessly integrated in an execution of the KUDOS procedure for updating OSCORE keying material used in its FS mode (see <xref section="4" sectionFormat="of" target="I-D.ietf-core-oscore-key-update"/>) or no-FS mode (see <xref section="4.5" sectionFormat="of" target="I-D.ietf-core-oscore-key-update"/>).</t>
      <ul spacing="normal">
        <li>
          <t>In the former stand-alone case, updating the OSCORE Sender/Recipient IDs effectively results in updating part of the current OSCORE Security Context.  </t>
          <t>
That is, both peers derive a new Sender Key, Recipient Key, and Common IV, as defined in <xref section="3.2" sectionFormat="of" target="RFC8613"/>. Also, both peers re-initialize the Sender Sequence Number and the Replay Window accordingly, as defined in <xref section="3.2.2" sectionFormat="of" target="RFC8613"/>. Since the same Master Secret is preserved, forward secrecy is not achieved.  </t>
          <t>
As defined in <xref target="id-update-additional-actions"/>, the two peers must take additional actions to ensure a safe execution of the OSCORE ID update procedure.  </t>
          <t>
A peer can safely discard the old OSCORE Security Context including the old OSCORE Sender/Recipient IDs after the following two events have occurred, in this order: first, the peer has sent to the other peer a message protected with the new OSCORE Security Context including the new OSCORE Sender/Recipient IDs; then, the peer has received from the other peer and successfully verified a message protected with that new OSCORE Security Context.  </t>
          <t>
The new OSCORE Sender/Recipient IDs <bcp14>MUST NOT</bcp14> be used with the OSCORE Security Context CTX_OLD, and <bcp14>MUST NOT</bcp14> be used with the temporary OSCORE Security Context CTX_TEMP used to protect the first KUDOS message of a KUDOS execution.</t>
        </li>
      </ul>
      <t>A peer <bcp14>MUST NOT</bcp14> initiate an OSCORE ID update procedure with another peer, if it has another such procedure ongoing with that other peer.</t>
      <t>Upon receiving a valid, first ID update message, a peer <bcp14>MUST</bcp14> continue the procedure and send a following ID update message, except in the case any of the conditions for failing or aborting the procedure apply (see <xref target="update-failure"/>}).</t>
      <section anchor="workflow-of-the-id-update-procedure">
        <name>Workflow of the ID Update Procedure</name>
        <t>This section describes the workflow of the OSCORE ID Update procedure in detail.</t>
        <t>The procedure begins when either peer:</t>
        <ul spacing="normal">
          <li>
            <t>Sends a message including the Recipient-ID Option, or</t>
          </li>
          <li>
            <t>Receives such a message from the other peer.</t>
          </li>
        </ul>
        <t>During the procedure a peer decides on a value of Recipient ID to offer to the other peer and use as value of the Recipient-ID Option, and continues offering that value until the procedure is completed.</t>
        <t>Once the procedure has started a peer shall follow the instructions below:</t>
        <t><strong>Sending the Next Message</strong></t>
        <ul spacing="normal">
          <li>
            <t>The first messages sent using CTX_A, the current shared OSCORE Security Context, after the procedure has started must include the Recipient-ID Option, if this peer hasn't offered its Recipient ID already.
            </t>
            <ul spacing="normal">
              <li>
                <t>Note that this also informs the other peer of support for the ID update procedure.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t><strong>Acknowledgment</strong></t>
        <ul spacing="normal">
          <li>
            <t>If a peer has received a valid message from the other peer including the Recipient-ID Option, it must include the Recipient-ID-Ack Option in subsequent messages.</t>
          </li>
          <li>
            <t>The value of Recipient-ID-Ack Option, if used, should be the Recipient ID received from the other peer.</t>
          </li>
        </ul>
        <t><strong>Sending Subsequent Messages</strong></t>
        <t>A peer must send one message with the Recipient ID Option according to the following:</t>
        <ul spacing="normal">
          <li>
            <t>A local timer, REPEAT_TIMER, should be maintained during the procedure. It first starts when the procedure starts. It is <bcp14>RECOMMENDED</bcp14> that the initial time of REPEAT_TIMER is equal to MAX_TRANSMIT_WAIT (see <xref section="4.8.2" sectionFormat="of" target="RFC7252"/>).
            </t>
            <ul spacing="normal">
              <li>
                <t>If the timeout expires, the next sent message must include the Recipient ID option and, if applicable, the Recipient-ID-Ack Option with the last received Recipient ID. When that message is sent the timer REPEAT_TIMER restarts.</t>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="procedure-completion">
          <name>Procedure Completion</name>
          <t>The procedure concludes under one of the following conditions:</t>
          <t><strong>Successful Confirmation</strong></t>
          <t>The procedure succeeds if a peer has received and successfully verified at least three message from the other peer containing the Recipient-ID-Ack Option, and sent at least two messages containing the Recipient-ID-Ack Option. At this point:</t>
          <ul spacing="normal">
            <li>
              <t>It is safe to delete CTX_A. This does not mean that CTX_A has to be deleted at this point.</t>
            </li>
            <li>
              <t>CTX_B is now considered valid and can be used (e.g., following network migration).</t>
            </li>
          </ul>
          <t><strong>Failure</strong></t>
          <t>During the procedure a timer, ENDING_TIMER, is maintained and started when the procedure starts. The initial time of ENDING_TIMER should be at least 3 times bigger than the initial time of REPEAT_TIMER. If the ENDING_TIMER expires, and the procedure times out without confirmation:</t>
          <ul spacing="normal">
            <li>
              <t>The offered Recipient ID must be discarded and added to the list of IDs to prevent reuse.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="update-failure">
        <name>Failure of the ID Update Procedure</name>
        <t>The following section describes cases where the OSCORE ID update procedure fails, or must to be aborted by one of the peers.</t>
        <t>Upon receiving a valid first ID update message, a peer <bcp14>MUST</bcp14> abort the ID update procedure, in the following case:</t>
        <ul spacing="normal">
          <li>
            <t>The received ID update message is not a KUDOS message (i.e., the OSCORE ID update procedure is being performed stand-alone) and the peer has no eligible Recipient ID to offer (see <xref target="id-update-additional-actions"/>).</t>
          </li>
        </ul>
        <t>Upon receiving a valid ID update message, a peer <bcp14>MUST</bcp14> abort the ID update procedure, in the following case:</t>
        <ul spacing="normal">
          <li>
            <t>The received ID update message contains a Recipient-ID option with a length that exceeds the maximum length of OSCORE Sender/Recipient IDs for the AEAD algorithm in use for the OSCORE Security Context shared between the peers. This is the case when the length of the Recipient-ID option exceeds the length of the AEAD nonce minus 6 (see <xref section="3.3" sectionFormat="of" target="RFC8613"/>).</t>
          </li>
        </ul>
        <t>If, after receiving an ID update message as CoAP request, a peer aborts the ID update procedure, the peer <bcp14>MUST</bcp14> also reply to the received ID update request message with a protected 5.03 (Service Unavailable) error response. The error response <bcp14>MUST NOT</bcp14> include the Recipient-ID Option, and its diagnostic payload <bcp14>MAY</bcp14> provide additional information. When receiving the error response, the peer terminates the OSCORE IDs procedure as failed.</t>
        <t>When the OSCORE ID update procedure is integrated into the execution of the KUDOS procedure, it is possible that the KUDOS procedure succeeds while the OSCORE ID update procedure fails. In such case, the peers continue their communications using the newly derived OSCORE Security Context CTX_NEW obtained from the KUDOS procedure, and still use the old Sender and Recipient IDs. That is, any Recipient IDs conveyed in the exchanged Recipient-ID Options is not considered.</t>
        <t>Conversely, the OSCORE ID update procedure may succeed while the KUDOS procedure fails. As long as the peers have exchanged a pair of OSCORE-protected request and response that conveyed their desired new Recipient IDs in the Recipient-ID Option, the peers start using those IDs in their communications.</t>
      </section>
      <section anchor="sec-recipient-id-option">
        <name>The Recipient-ID Option</name>
        <t>The Recipient ID-Option defined in this section has the properties summarized in <xref target="_table-recipient-id-option"/>, which extends Table 4 of <xref target="RFC7252"/>. That is, the option is elective, safe to forward, part of the cache key, and not repeatable.</t>
        <table align="center" anchor="_table-recipient-id-option">
          <name>The Recipient-ID Option. C=Critical, U=Unsafe, N=NoCacheKey, R=Repeatable</name>
          <thead>
            <tr>
              <th align="left">No.</th>
              <th align="left">C</th>
              <th align="left">U</th>
              <th align="left">N</th>
              <th align="left">R</th>
              <th align="left">Name</th>
              <th align="left">Format</th>
              <th align="left">Length</th>
              <th align="left">Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD24</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">Recipient-ID</td>
              <td align="left">opaque</td>
              <td align="left">any</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>Note to RFC Editor: Following the registration of the CoAP Option Number 24, please replace "TBD24" with "24" in the figure above. Then, please delete this paragraph.</t>
        <t>The option value can have an arbitrary length, including zero length to indicate intent to use the empty string as Recipient ID. Implementations can limit its length to that of the longest supported Recipient ID.</t>
        <t>This document particularly defines how this option is used in messages protected with OSCORE. That is, when the option is included in an outgoing message, the option value specifies the new OSCORE Recipient ID that the sender endpoint intends to use with the other endpoint sharing the OSCORE Security Context.</t>
        <t>Therefore, the maximum length of the option value is equal to the maximum length of OSCORE Sender/Recipient IDs. As defined in <xref section="3.3" sectionFormat="of" target="RFC8613"/>, this is determined by the size of the AEAD nonce of the used AEAD Algorithm in the OSCORE Security Context.</t>
        <t>If the length of the Recipient ID included in the Recipient-ID option is zero, the option value <bcp14>SHALL</bcp14> be empty (Option Length = 0).</t>
        <t>The Recipient-ID Option is of class E in terms of OSCORE processing (see <xref section="4.1" sectionFormat="of" target="RFC8613"/>).</t>
      </section>
      <section anchor="sec-recipient-id-ack-option">
        <name>The Recipient-ID-Ack Option</name>
        <t>The Recipient ID-Ack-Option defined in this section has the properties summarized in <xref target="_table-recipient-id-ack-option"/>, which extends Table 4 of <xref target="RFC7252"/>. That is, the option is elective, safe to forward, part of the cache key, and not repeatable.</t>
        <table align="center" anchor="_table-recipient-id-ack-option">
          <name>The Recipient-ID-Ack Option. C=Critical, U=Unsafe, N=NoCacheKey, R=Repeatable</name>
          <thead>
            <tr>
              <th align="left">No.</th>
              <th align="left">C</th>
              <th align="left">U</th>
              <th align="left">N</th>
              <th align="left">R</th>
              <th align="left">Name</th>
              <th align="left">Format</th>
              <th align="left">Length</th>
              <th align="left">Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD32</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">Recipient-ID-Ack</td>
              <td align="left">opaque</td>
              <td align="left">any</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>Note to RFC Editor: Following the registration of the CoAP Option Number 32, please replace "TBD32" with "32" in the figure above. Then, please delete this paragraph.</t>
        <t>This document particularly defines how this option is used in messages protected with OSCORE. That is, when the option is included in an outgoing message, the option value confirms the new OSCORE Recipient ID that the recipient endpoint has chosen for this sender endpoint.</t>
        <t>The Recipient-ID-Ack Option is of class E in terms of OSCORE processing (see <xref section="4.1" sectionFormat="of" target="RFC8613"/>).</t>
        <section anchor="example-client-initiated-id-update">
          <name>OSCORE ID Update Procedure Initiated with a Request Message</name>
          <t><xref target="fig-id-update-client-init"/> shows an example of the OSCORE ID update procedure, run stand-alone and initiated by the client sending a request message. On each peer, SID and RID denote the OSCORE Sender ID and Recipient ID of that peer, respectively.</t>
          <figure anchor="fig-id-update-client-init">
            <name>Example of the OSCORE ID update procedure initiated with a request message</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1872" width="496" viewBox="0 0 496 1872" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 104,48 L 104,1856" fill="none" stroke="black"/>
                  <path d="M 392,48 L 392,1856" fill="none" stroke="black"/>
                  <path d="M 112,160 L 384,160" fill="none" stroke="black"/>
                  <path d="M 112,368 L 384,368" fill="none" stroke="black"/>
                  <path d="M 112,608 L 384,608" fill="none" stroke="black"/>
                  <path d="M 112,816 L 384,816" fill="none" stroke="black"/>
                  <path d="M 112,1008 L 384,1008" fill="none" stroke="black"/>
                  <path d="M 112,1216 L 384,1216" fill="none" stroke="black"/>
                  <path d="M 112,1456 L 384,1456" fill="none" stroke="black"/>
                  <path d="M 112,1728 L 384,1728" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="392,1456 380,1450.4 380,1461.6" fill="black" transform="rotate(0,384,1456)"/>
                  <polygon class="arrowhead" points="392,1008 380,1002.4 380,1013.6" fill="black" transform="rotate(0,384,1008)"/>
                  <polygon class="arrowhead" points="392,608 380,602.4 380,613.6" fill="black" transform="rotate(0,384,608)"/>
                  <polygon class="arrowhead" points="392,160 380,154.4 380,165.6" fill="black" transform="rotate(0,384,160)"/>
                  <polygon class="arrowhead" points="120,1728 108,1722.4 108,1733.6" fill="black" transform="rotate(180,112,1728)"/>
                  <polygon class="arrowhead" points="120,1216 108,1210.4 108,1221.6" fill="black" transform="rotate(180,112,1216)"/>
                  <polygon class="arrowhead" points="120,816 108,810.4 108,821.6" fill="black" transform="rotate(180,112,816)"/>
                  <polygon class="arrowhead" points="120,368 108,362.4 108,373.6" fill="black" transform="rotate(180,112,368)"/>
                  <g class="text">
                    <text x="108" y="36">Client</text>
                    <text x="388" y="36">Server</text>
                    <text x="24" y="68">CTX_A</text>
                    <text x="56" y="68">{</text>
                    <text x="424" y="68">CTX_A</text>
                    <text x="456" y="68">{</text>
                    <text x="24" y="84">SID</text>
                    <text x="48" y="84">=</text>
                    <text x="76" y="84">0x01</text>
                    <text x="424" y="84">SID</text>
                    <text x="448" y="84">=</text>
                    <text x="476" y="84">0x00</text>
                    <text x="24" y="100">RID</text>
                    <text x="48" y="100">=</text>
                    <text x="76" y="100">0x00</text>
                    <text x="424" y="100">RID</text>
                    <text x="448" y="100">=</text>
                    <text x="476" y="100">0x01</text>
                    <text x="8" y="116">}</text>
                    <text x="408" y="116">}</text>
                    <text x="232" y="148">Request</text>
                    <text x="276" y="148">#1</text>
                    <text x="32" y="164">Protect</text>
                    <text x="424" y="164">/temp</text>
                    <text x="20" y="180">with</text>
                    <text x="64" y="180">CTX_A</text>
                    <text x="140" y="180">OSCORE</text>
                    <text x="176" y="180">{</text>
                    <text x="136" y="196">...</text>
                    <text x="140" y="212">kid:</text>
                    <text x="180" y="212">0x01</text>
                    <text x="428" y="212">Verify</text>
                    <text x="120" y="228">}</text>
                    <text x="420" y="228">with</text>
                    <text x="464" y="228">CTX_A</text>
                    <text x="152" y="244">Encrypted</text>
                    <text x="224" y="244">Payload</text>
                    <text x="264" y="244">{</text>
                    <text x="136" y="260">...</text>
                    <text x="176" y="276">Recipient-ID:</text>
                    <text x="252" y="276">0x42</text>
                    <text x="136" y="292">...</text>
                    <text x="168" y="308">Application</text>
                    <text x="248" y="308">Payload</text>
                    <text x="120" y="324">}</text>
                    <text x="236" y="356">Response</text>
                    <text x="284" y="356">#1</text>
                    <text x="432" y="372">Protect</text>
                    <text x="140" y="388">OSCORE</text>
                    <text x="176" y="388">{</text>
                    <text x="420" y="388">with</text>
                    <text x="464" y="388">CTX_A</text>
                    <text x="136" y="404">...</text>
                    <text x="28" y="420">Verify</text>
                    <text x="120" y="420">}</text>
                    <text x="20" y="436">with</text>
                    <text x="64" y="436">CTX_A</text>
                    <text x="152" y="436">Encrypted</text>
                    <text x="224" y="436">Payload</text>
                    <text x="264" y="436">{</text>
                    <text x="136" y="452">...</text>
                    <text x="176" y="468">Recipient-ID:</text>
                    <text x="252" y="468">0x78</text>
                    <text x="192" y="484">Recipient-ID-Ack:</text>
                    <text x="284" y="484">0x42</text>
                    <text x="136" y="500">...</text>
                    <text x="168" y="516">Application</text>
                    <text x="248" y="516">Payload</text>
                    <text x="120" y="532">}</text>
                    <text x="232" y="596">Request</text>
                    <text x="276" y="596">#2</text>
                    <text x="32" y="612">Protect</text>
                    <text x="424" y="612">/temp</text>
                    <text x="20" y="628">with</text>
                    <text x="64" y="628">CTX_A</text>
                    <text x="140" y="628">OSCORE</text>
                    <text x="176" y="628">{</text>
                    <text x="136" y="644">...</text>
                    <text x="140" y="660">kid:</text>
                    <text x="180" y="660">0x01</text>
                    <text x="428" y="660">Verify</text>
                    <text x="120" y="676">}</text>
                    <text x="420" y="676">with</text>
                    <text x="464" y="676">CTX_A</text>
                    <text x="152" y="692">Encrypted</text>
                    <text x="224" y="692">Payload</text>
                    <text x="264" y="692">{</text>
                    <text x="136" y="708">...</text>
                    <text x="192" y="724">Recipient-ID-Ack:</text>
                    <text x="284" y="724">0x78</text>
                    <text x="136" y="740">...</text>
                    <text x="168" y="756">Application</text>
                    <text x="248" y="756">Payload</text>
                    <text x="120" y="772">}</text>
                    <text x="236" y="804">Response</text>
                    <text x="284" y="804">#2</text>
                    <text x="432" y="820">Protect</text>
                    <text x="140" y="836">OSCORE</text>
                    <text x="176" y="836">{</text>
                    <text x="420" y="836">with</text>
                    <text x="464" y="836">CTX_A</text>
                    <text x="136" y="852">...</text>
                    <text x="28" y="868">Verify</text>
                    <text x="120" y="868">}</text>
                    <text x="20" y="884">with</text>
                    <text x="64" y="884">CTX_A</text>
                    <text x="152" y="884">Encrypted</text>
                    <text x="224" y="884">Payload</text>
                    <text x="264" y="884">{</text>
                    <text x="136" y="900">...</text>
                    <text x="192" y="916">Recipient-ID-Ack:</text>
                    <text x="284" y="916">0x42</text>
                    <text x="168" y="932">Application</text>
                    <text x="248" y="932">Payload</text>
                    <text x="120" y="948">}</text>
                    <text x="232" y="996">Request</text>
                    <text x="276" y="996">#3</text>
                    <text x="32" y="1012">Protect</text>
                    <text x="424" y="1012">/temp</text>
                    <text x="20" y="1028">with</text>
                    <text x="64" y="1028">CTX_A</text>
                    <text x="140" y="1028">OSCORE</text>
                    <text x="176" y="1028">{</text>
                    <text x="136" y="1044">...</text>
                    <text x="140" y="1060">kid:</text>
                    <text x="180" y="1060">0x01</text>
                    <text x="428" y="1060">Verify</text>
                    <text x="120" y="1076">}</text>
                    <text x="420" y="1076">with</text>
                    <text x="464" y="1076">CTX_A</text>
                    <text x="152" y="1092">Encrypted</text>
                    <text x="224" y="1092">Payload</text>
                    <text x="264" y="1092">{</text>
                    <text x="136" y="1108">...</text>
                    <text x="192" y="1124">Recipient-ID-Ack:</text>
                    <text x="284" y="1124">0x78</text>
                    <text x="136" y="1140">...</text>
                    <text x="168" y="1156">Application</text>
                    <text x="248" y="1156">Payload</text>
                    <text x="120" y="1172">}</text>
                    <text x="236" y="1204">Response</text>
                    <text x="284" y="1204">#3</text>
                    <text x="432" y="1220">Protect</text>
                    <text x="140" y="1236">OSCORE</text>
                    <text x="176" y="1236">{</text>
                    <text x="420" y="1236">with</text>
                    <text x="464" y="1236">CTX_A</text>
                    <text x="136" y="1252">...</text>
                    <text x="28" y="1268">Verify</text>
                    <text x="120" y="1268">}</text>
                    <text x="20" y="1284">with</text>
                    <text x="64" y="1284">CTX_A</text>
                    <text x="152" y="1284">Encrypted</text>
                    <text x="224" y="1284">Payload</text>
                    <text x="264" y="1284">{</text>
                    <text x="136" y="1300">...</text>
                    <text x="192" y="1316">Recipient-ID-Ack:</text>
                    <text x="284" y="1316">0x42</text>
                    <text x="168" y="1332">Application</text>
                    <text x="248" y="1332">Payload</text>
                    <text x="120" y="1348">}</text>
                    <text x="20" y="1380">Safe</text>
                    <text x="52" y="1380">to</text>
                    <text x="32" y="1396">discard</text>
                    <text x="24" y="1412">CTX_A</text>
                    <text x="232" y="1444">Request</text>
                    <text x="276" y="1444">#4</text>
                    <text x="32" y="1460">Protect</text>
                    <text x="424" y="1460">/temp</text>
                    <text x="20" y="1476">with</text>
                    <text x="64" y="1476">CTX_A</text>
                    <text x="140" y="1476">OSCORE</text>
                    <text x="176" y="1476">{</text>
                    <text x="136" y="1492">...</text>
                    <text x="140" y="1508">kid:</text>
                    <text x="180" y="1508">0x01</text>
                    <text x="428" y="1508">Verify</text>
                    <text x="120" y="1524">}</text>
                    <text x="420" y="1524">with</text>
                    <text x="464" y="1524">CTX_A</text>
                    <text x="152" y="1540">Encrypted</text>
                    <text x="224" y="1540">Payload</text>
                    <text x="264" y="1540">{</text>
                    <text x="136" y="1556">...</text>
                    <text x="192" y="1572">Recipient-ID-Ack:</text>
                    <text x="284" y="1572">0x78</text>
                    <text x="136" y="1588">...</text>
                    <text x="168" y="1604">Application</text>
                    <text x="248" y="1604">Payload</text>
                    <text x="120" y="1620">}</text>
                    <text x="420" y="1652">Safe</text>
                    <text x="452" y="1652">to</text>
                    <text x="432" y="1668">discard</text>
                    <text x="424" y="1684">CTX_A</text>
                    <text x="236" y="1716">Response</text>
                    <text x="284" y="1716">#4</text>
                    <text x="432" y="1732">Protect</text>
                    <text x="140" y="1748">OSCORE</text>
                    <text x="176" y="1748">{</text>
                    <text x="420" y="1748">with</text>
                    <text x="464" y="1748">CTX_A</text>
                    <text x="136" y="1764">...</text>
                    <text x="28" y="1780">Verify</text>
                    <text x="120" y="1780">}</text>
                    <text x="20" y="1796">with</text>
                    <text x="64" y="1796">CTX_A</text>
                    <text x="152" y="1796">Encrypted</text>
                    <text x="224" y="1796">Payload</text>
                    <text x="264" y="1796">{</text>
                    <text x="136" y="1812">...</text>
                    <text x="168" y="1828">Application</text>
                    <text x="248" y="1828">Payload</text>
                    <text x="120" y="1844">}</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
          Client                             Server
            |                                   |
CTX_A {     |                                   | CTX_A {
 SID = 0x01 |                                   |  SID = 0x00
 RID = 0x00 |                                   |  RID = 0x01
}           |                                   | }
            |                                   |
            |            Request #1             |
Protect     |---------------------------------->| /temp
with CTX_A  | OSCORE {                          |
            |  ...                              |
            |  kid: 0x01                        | Verify
            | }                                 | with CTX_A
            | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID: 0x42               |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |            Response #1            |
            |<----------------------------------| Protect
            | OSCORE {                          | with CTX_A
            |  ...                              |
Verify      | }                                 |
with CTX_A  | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID: 0x78               |
            |  Recipient-ID-Ack: 0x42           |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |                                   |
            |                                   |
            |            Request #2             |
Protect     |---------------------------------->| /temp
with CTX_A  | OSCORE {                          |
            |  ...                              |
            |  kid: 0x01                        | Verify
            | }                                 | with CTX_A
            | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID-Ack: 0x78           |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |            Response #2            |
            |<----------------------------------| Protect
            | OSCORE {                          | with CTX_A
            |  ...                              |
Verify      | }                                 |
with CTX_A  | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID-Ack: 0x42           |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |                                   |
            |            Request #3             |
Protect     |---------------------------------->| /temp
with CTX_A  | OSCORE {                          |
            |  ...                              |
            |  kid: 0x01                        | Verify
            | }                                 | with CTX_A
            | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID-Ack: 0x78           |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |            Response #3            |
            |<----------------------------------| Protect
            | OSCORE {                          | with CTX_A
            |  ...                              |
Verify      | }                                 |
with CTX_A  | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID-Ack: 0x42           |
            |  Application Payload              |
            | }                                 |
            |                                   |
Safe to     |                                   |
discard     |                                   |
CTX_A       |                                   |
            |                                   |
            |            Request #4             |
Protect     |---------------------------------->| /temp
with CTX_A  | OSCORE {                          |
            |  ...                              |
            |  kid: 0x01                        | Verify
            | }                                 | with CTX_A
            | Encrypted Payload {               |
            |  ...                              |
            |  Recipient-ID-Ack: 0x78           |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
            |                                   | Safe to
            |                                   | discard
            |                                   | CTX_A
            |                                   |
            |            Response #4            |
            |<----------------------------------| Protect
            | OSCORE {                          | with CTX_A
            |  ...                              |
Verify      | }                                 |
with CTX_A  | Encrypted Payload {               |
            |  ...                              |
            |  Application Payload              |
            | }                                 |
            |                                   |
]]></artwork>
            </artset>
          </figure>
          <t>Before the OSCORE ID update procedure starts, the client (the server) shares with the server (the client) an OSCORE Security Context CTX_A with Sender ID 0x01 (0x00) and Recipient ID 0x00 (0x01).</t>
          <t>When starting the OSCORE ID update procedure, the client determines its new intended OSCORE Recipient ID 0x42. Then, the client prepares a CoAP request targeting an application resource at the server. The request includes the Recipient-ID Option, with value the client's new Recipient ID 0x42.</t>
          <t>The client protects the request with CTX_A, i.e., by using the keying material derived from the client's current Sender ID 0x01. The protected request specifies the client's current Sender ID 0x01 in the 'kid' field of the OSCORE Option. After that, the client sends the request to the server as Request #1.</t>
          <t>Upon receiving, decrypting, and successfully verifying the OSCORE message Request #1, the server retrieves the value 0x42 from the Recipient-ID Option, and determines its new intended OSCORE Recipient ID 0x78. Then, the server prepares a CoAP response including the Recipient-ID Option, with value the server's new Recipient ID 0x78, and the Recipient-ID-Ack Option, with value the client's offered Recipient ID 0x42.</t>
          <t>The server protects the response with CTX_A, i.e., by using the keying material derived from the server's current Sender ID 0x00. After that, the server sends the response to the client.</t>
          <t>Next, the client sends the OSCORE message Request #2, which is protected with CTX_A and includes the Recipient-ID-Ack Option, with value the server's offered Recipient ID 0x78.</t>
          <t>From this point, following messages exchanges between the peers will include the Recipient-ID-Ack Option. A peer will only stop including that option when it has verified 3 messages from the other peer containing the Recipient-ID-Ack Option.</t>
          <t>Upon receiving, decrypting, and successfully verifying the OSCORE message Response #3, the client considers 0x78 and 0x42 as the new Sender ID and Recipient ID to use when deriving CTX_B. Practically, the client can install a new OSCORE Security Context CTX_B where: i) its Sender ID and Recipient ID are 0x78 and 0x42, respectively; ii) the Sender Sequence Number and the Replay Window are re-initialized (see <xref section="3.2.2" sectionFormat="of" target="RFC8613"/>); iii) anything else is like in the OSCORE Security Context CTX_A.</t>
          <t>Upon receiving, decrypting, and successfully verifying the OSCORE message Request #4, the server considers 0x42 and 0x78 as its new Sender ID and Recipient ID to use for CTX_B. Practically, the server installs a new OSCORE Security Context CTX_A where: i) its Sender ID and Recipient ID are 0x42 and 0x78, respectively; ii) the Sender Sequence Number and the Replay Window are re-initialized (see <xref section="3.2.2" sectionFormat="of" target="RFC8613"/>); iii) anything else is like in the OSCORE Security Context CTX_A.</t>
          <t>At this point both client and server are in a position to derive CTX_B already, or wait to do it. Regardless they are both able to start using CTX_B, e.g., after network migration.</t>
        </section>
        <section anchor="new-identifiers-before-migration">
          <name>Establishing New OSCORE Identifiers Ahead of Network Migration</name>
          <t>Peers may use the OSCORE ID update procedure to establish new OSCORE IDs in advance of a network change. However, peers <bcp14>SHOULD NOT</bcp14> begin using these new identifiers on the current network prior to network migration. Using a new identifier on the old network, or using the old identifiers on the new network, would allow observers to correlate activity across networks, defeating the unlinkability that updating the OSCORE IDs is intended to provide. To be effective, new identifiers <bcp14>SHOULD</bcp14> only be used for sending OSCORE protected messages once the network migration is completed. Establishing new OSCORE IDs ahead of time ensures that migration can proceed without delay, but care must be taken to ensure that premature use of the identifiers does not enable linkability.</t>
          <t>To accomplish this, the peers execute the ID update procedure as normal, with the following difference: the peers must not begin using the OSCORE Security Context CTX_B until after the network migration has taken place. Thus, both peers will be in the position to derive CTX_B, but will not transition to use it until the first request protected with CTX_B is transmitted in the new network, that is after network migration. Note that peers may want to retain CTX_A to have available for migration back to the old network.</t>
        </section>
        <section anchor="id-update-additional-actions">
          <name>Additional Actions for Execution</name>
          <t>After having experienced a loss of state, a peer <bcp14>MUST NOT</bcp14> participate in a stand-alone OSCORE ID update procedure with another peer, until having performed a full-fledged establishment/renewal of an OSCORE Security Context with the other peer (e.g., by running KUDOS <xref target="I-D.ietf-core-oscore-key-update"/> or the authenticated key establishment protocol EDHOC <xref target="RFC9528"/>).</t>
          <t>More precisely, a peer has experienced a loss of state if it cannot access the latest snapshot of the latest OSCORE Security Context CTX_OLD or the whole set of OSCORE Sender/Recipient IDs that have been used with the triplet (Master Secret, Master Salt, ID Context) of CTX_OLD. This can happen, for instance, after a device reboots.</t>
          <t>Furthermore, when participating in a stand-alone OSCORE ID update procedure, a peer performs the following additional steps.</t>
          <ul spacing="normal">
            <li>
              <t>When a peer sends an ID update message, the value of the Recipient-ID Option that the peer specifies as its new intended OSCORE Recipient ID <bcp14>MUST</bcp14> fulfill both the following conditions: it is currently available as Recipient ID to use for the peer (see <xref section="3.3" sectionFormat="of" target="RFC8613"/>); and the peer has never used it as Recipient ID with the current triplet (Master Secret, Master Salt, ID Context).</t>
            </li>
            <li>
              <t>When receiving an ID update message, the peer <bcp14>MUST</bcp14> abort the procedure if it has already used the identifier specified in the Recipient-ID Option as its own Sender ID with the current triplet (Master Secret, Master Salt, ID Context).</t>
            </li>
          </ul>
          <t>In order to fulfill the conditions above, a peer has to keep track of the OSCORE Sender/Recipient IDs that it has used with the current triplet (Master Secret, Master Salt, ID Context) since the latest update of the OSCORE Master Secret (e.g., performed by running KUDOS).</t>
        </section>
      </section>
      <section anchor="preserving-observations-across-id-updates">
        <name>Preserving Observations Across ID Updates</name>
        <t>When having run the OSCORE ID update procedure stand-alone and starting to use CTX_B, or having run the OSCORE ID update procedure integrated in an execution of KUDOS, the following holds if Observe <xref target="RFC7641"/> is supported, in order to preserve ongoing observations beyond a change of OSCORE identifiers.</t>
        <ul spacing="normal">
          <li>
            <t>If a peer intends to keep active beyond an update of its Sender ID the observations where it is acting as CoAP client, then the peer:  </t>
            <ul spacing="normal">
              <li>
                <t><bcp14>MUST</bcp14> store the value of the 'kid' parameter from the original Observe requests, and retain it for the whole duration of the observations, throughout which the client <bcp14>MUST NOT</bcp14> update the stored value associated with the corresponding Observe registration request; and</t>
              </li>
              <li>
                <t><bcp14>MUST</bcp14> use the stored value of the 'kid' parameter from the original Observe registration request as value for the 'request_kid' parameter in the external_aad structure (see <xref section="5.4" sectionFormat="of" target="RFC8613"/>), when verifying notifications for that observation as per <xref section="8.4.2" sectionFormat="of" target="RFC8613"/>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If a peer is acting as CoAP server in an ongoing observation, then the peer:  </t>
            <ul spacing="normal">
              <li>
                <t><bcp14>MUST</bcp14> store the value of the 'kid' parameter from the original Observe registration request, and retain it for the whole duration of the observation, throughout which the peer <bcp14>MUST NOT</bcp14> update the stored value associated with the corresponding Observe registration request; and</t>
              </li>
              <li>
                <t><bcp14>MUST</bcp14> use the stored value of the 'kid' parameter from the original Observe registration request as value for the 'request_kid' parameter in the external_aad structure (see <xref section="5.4" sectionFormat="of" target="RFC8613"/>), when protecting notifications for that observation as per <xref section="8.3.1" sectionFormat="of" target="RFC8613"/>.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations as in <xref target="RFC8613"/> and <xref target="I-D.ietf-core-oscore-key-update"/> hold for this document.</t>
      <t>The OSCORE ID update procedure is a mechanism to mitigate the risk of tracking by on-path adversaries. By enabling endpoints to update their identifiers, either in response to specific events or on a regular basis, this approach helps prevent correlations that could otherwise be drawn between OSCORE messages on different networks.</t>
      <t>While the ID update procedure helps reduce linkability across networks, the change of IDs alone might not completely prevent adversaries from recognizing traffic patterns that reveal message ordering or frequency. That is, the procedure becomes more effective if combined with the protection and/or change of other information that can help identify endpoints across different networks.</t>
      <t>In that spirit, when a peer installs a new OSCORE Security Context as a result of the OSCORE ID update procedure, it re-initializes the Sender Sequence Number to 0. That prevents an adversary from obviously tracking the peer by leveraging the Partial IV of observed messages, since the Partial IV value does not predictably continue from the last known value that was used in the previous network. Building on that, the peer can in fact re-initialize the Sender Sequence Number to a value greater than 0, thus making tracking further difficult.</t>
      <t>Likewise, other information such as addressing information, may still be used to track the peers. Thus, it is recommended to combine the usage of the OSCORE ID update procedure also with the following, upon network migration:</t>
      <ul spacing="normal">
        <li>
          <t>Changing the network address (e.g., intentionally, or due to mobility, or NAT rebinding).</t>
        </li>
        <li>
          <t>Changing the link-layer address (e.g., MAC address randomization).</t>
        </li>
      </ul>
      <t>Furthermore, it is recommended that a peer does not start using its newly established OSCORE Sender ID until after network migration, in order to mitigate tracking attempts.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="iana-coap-options">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to enter the following entries to the "CoAP Option Numbers" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <table align="center" anchor="tab-iana-recipient-id-option">
          <name>New CoAP Option Numbers</name>
          <thead>
            <tr>
              <th align="left">Number</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD24</td>
              <td align="left">Recipient-ID</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
            <tr>
              <td align="left">TBD32</td>
              <td align="left">Recipient-ID-Ack</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
          </tbody>
        </table>
        <t>Note to RFC Editor: Following the registration of the CoAP Option Number 24, please replace "TBD24" with "24" in the table above. Then, please delete this paragraph.
Note to RFC Editor: Following the registration of the CoAP Option Number 32, please replace "TBD32" with "32" in the table above. Then, please delete this paragraph.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="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="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="7" month="July" year="2025"/>
            <abstract>
              <t>   Communications with the Constrained Application Protocol (CoAP) can
   be protected end-to-end at the application-layer by using the
   security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  Under some circumstances, two CoAP endpoints
   need to update their OSCORE keying material before communications can
   securely continue, e.g., due to approaching key usage limits.  This
   document defines Key Update for OSCORE (KUDOS), a lightweight key
   update procedure that two CoAP endpoints can use to update their
   OSCORE keying material by establishing a new OSCORE Security Context.
   Accordingly, this document updates the use of the OSCORE flag bits in
   the CoAP OSCORE Option as well as the protection of CoAP response
   messages with OSCORE.  Also, it deprecates the key update procedure
   specified in Appendix B.2 of RFC 8613.  Therefore, this document
   updates RFC 8613.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-11"/>
        </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="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>
      </references>
    </references>
    <?line 438?>

<section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Fixes in presenting the new approach.</t>
          </li>
          <li>
            <t>Early recommendations for initial values of timers.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Editorial improvements.</t>
          </li>
          <li>
            <t>Improved security considerations.</t>
          </li>
          <li>
            <t>Using the ID update procedure ahead of network migration and switching to new IDs after migration.</t>
          </li>
          <li>
            <t>Update design more in line with KUDOS.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Split long section into subsections.</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Revised and extended error handling.</t>
          </li>
          <li>
            <t>Specify that the Recipient-ID option may need to be empty.</t>
          </li>
          <li>
            <t>Failure cases when running the ID update procedure integrated with KUDOS.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00">
        <name>Version -00</name>
        <ul spacing="normal">
          <li>
            <t>Split out material from Key Update for OSCORE draft into this new document.</t>
          </li>
          <li>
            <t>Extended terminology.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Carsten Bormann"/>, <contact fullname="John Preuß Mattsson"/>, and <contact fullname="Göran Selander"/> for their feedback and comments.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next projects CRITISEC and CYPRESS; and by the H2020 projects SIFIS-Home (Grant agreement 952652) and ARCADIAN-IoT (Grant agreement 101020259).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+0923Ibx5Xv+IpeqmotqgCYN9kyEyULUZTFjURqScqOK065
GkAD6HAwg0wPSMEU91d2vyJP+7T+sT2Xvs0FFyp2bG+kKpvAYLr79Olz79On
O51O6/pQ7LdahS4SdShOhiot9EirXLydDWWhxCjLxdnF0dn5cUv2+7m6XvPS
MBukcgpdDXM5KjpaFaPOIMtVJzP0Rw87c2rUSeB/pmi1HghTyHT4nUyyFNoV
+Vy1WnqW00dT7O3sfLGz17oZH4qj7PxYfJ3lVzodiy/zbD5rXd0APGmh8lQV
nec4ZGsgi0Poctgy8/5UG6OztFjMcHLHly9arWuVztVhS4gxdoCdpqbIpU7V
UJwfX1yO5ok4Tq91nqVTmKcRDxHubWgwlTo5FPjt33Ba3SwfYze6mMz7/Lxz
M/60Os9Wa5ANAeBDMQdUPGm15LyYZDlCgP869q8QOjWH4rwrXv7wt3EyT4f+
B8bnub6S+bD+K0ABP55cHIveM/8QZqQUoOHEyNFfsnxoxhJwLPb2/BsDXSwO
xR804D48y4Yw0MVxZ/ezg4MdcVFkg6tJlkyjF+ZpkUO7ixsFROCfK0ZNTiB2
JxlB+G+57hrVPM3XXXGpk2wgK5N8LfNBVv3pFzTDKcLXLQg+O79WmuVTWehr
IqrzF0ef7z3ecx8/O9i1H598trvvPn5x8AV+POk879b440otLOEcAheko0rn
XzzeewI/IAPC7ODZxfGrF4di60/wW+eP8O/PW61Wp9MRso9UPQD+urzJxEyp
3IhiIguY4XQ6T/UA+fYGaBeeKmCC3hsxyzPAR5aIASBybhT9ctb/ixoU4kIN
5jkMSay+nmVYGGyHLouMPmNX0KvOxVQZI8dKqHeDiUzHygiVDjtF1oE/QBwZ
vKbpWZvAKPwkzETmSgCEPEaADKAq1LsCfhoKKdL5tA8CKhuJXKGkGQrtxZbp
gswQM5kXejBPZN4WSg4m+G5lqAJWxEBnFwAHdHbynFHoezJCw2yzm9S94WBA
xOqUuqvC17YAnquBnmnoqKlbbBhe8DMzJhtomoxfuQz+lxO88aAGuKk2MqB1
omBZI0QIxKXBMaDhLIEljcFnDHfswsGodtEAfy9VOlC0NAsil75CihniOgMZ
M8r9636Rh/BecaNUahGMmEAqvYKOMoCMnrZ5cgMgMvXXOcI2y/W1HCyEns4S
JFyQ6AYnAwQC6maONCeGagT0aCLCALQyIyHlDdRwnivGc1hgT+iZe5WJ0/ZQ
ohgaLvRkJ53PU1ZfHVJfIKsAnXKawMwTABjQOc6Z+lIETb2DNUH4HbH9AfBX
U6Li4R/ePj+72A7DdZmpp3o4TBSqTNB5eTacD7CvVuvricKJoFqsc/PtrRVK
d3ftprn/v2XyVqtniMsdsqnXYQNHEvsTD1mWx6WssLTvGYh4UZIJCIsjfjd/
kgvzYpzhmgS26SUma8OPQbTUubw6UElQxGPN0wjbQGAg2ePRxCjPphUZgWSM
kgaYDKb4ieFJh6k8jAfbFrg4f51LWtlyR9C0BNdD38d219JjrgZKXyNEcrko
4YXPfVcED0yQJWtpCBAI12phZZ+Vc47AgF4JthuN8g3FhAKagpfAMoAOAfxc
FblW10zvJKJigo/JqoxWOwJM6scSnky7OcI5nReynyBMYIuOJ0AwNGaiR6rQ
IMGBbmUTuYINi2MOpOXfwDhTTfIGZyzFUI9GKkcAwTq+AbuZxBOiB4Q2MaTl
UzkcAjWS/PAmR5aSvsgVfLfLFM99vdBnWVuCzskBAb8E4GbAJLDYuKQ06dzh
I35HFhMg2gmqHSGTJLshYZd59aGmQSeuUx2t1klEGXbyLIvAX5jTbH9q3WL5
BWkhpnKQES8AAWAkg1IhDRuWVi7EjYS3sEda+JJC6tNCCQNYGEwschpIoMwV
U3mlUBxNsSm+iwYRj4DgkWbzCwnAB+MRdRiMD6gudDpnyiHkp+rGjcVMswpn
/1gtCqpwjc19dwcwP3ggLlUOsjRLsvFCwNfbB0V4cMezgkbiBh0PsfX67cXl
Vpv/itMz+nx+/B9vT86Pn+Pni5e9V6/8h5Z94+Ll2dtXz8On0PLo7PXr49Pn
3BieitKj1tbr3jdbbEZunb25PDk77b3aYvTHVIsiBhayrwiB+QwkIGBQmtZQ
mUGu+4zOZ0dv/ve/dw8ANf8CZsLe7u4Xd3f2y5Pdzw/gyw0wHY+WpbAa/BUN
v5aczZTMaVES9BpmupAJcKlEBY5WMYoPQOijPyFm/nwoftsfzHYPfmcf4IRL
Dx3OSg8JZ/UntcaMxIZHDcN4bJaeVzBdhrf3Tem7w3v08Le/T0BKiM7uk9//
rtVqnSs5dEpCvZuxDuD1GMmpTrTMg8RC8mLFAAw1UDMQh86igSZkz5XMuLO+
Ufm1sg/By8SHR8/OzvkJepj0GjMCPwMHFJ/hIMQYm3KD4yzgtZLs+rQktwRy
iY3s+BCIIV4BojSKLFUvSXHOKyXnTOWoh8rSKsjRlZA4ebUgMcliCWSXtf6W
WJTOarEDW7NlvsnUAadst8CMrkFHsu2CchAZD973g5Z9vqpN1UZ7b6pkapxc
8+934P2zWYRC4t3bW8BrxxtPGHPK6CVYOPDQciVHBXZblgug0SkYgOrB2U9g
PCbzofMfmoaVpP62ghB/mKOKNcWnoDxnqHC3XW9boMPmOU5rSqaDjKy6aved
HmhvOwSZEelI52y1DtAlTMs4s3iJDFpLYDWVolNdsKsMSFU6QrLuqm47+EmD
hDonq8M+It7KSeGCVsrRmsdeABqPIoDSFHXNFqzFEgaKRhBZjQGEkeprC6v9
QXrcUwcST4dBUBESVAiyBRRYmzwE6CfXYNaT9Qb9Ib2+uAArYAjrahTKlQvL
sQfY/1o5sY1gp1lnWSfdx5t1g8oCYzOEYmBD8siCXYAGbzvMap0gUGD7DDB4
BggEKgXLhqxM3z72DUEakJm0XDwIEZynPlCglVYwLIyAzigwvLXqwB5pR4RL
X1HuHoH5BOg4+Yp0ZImTHar2u3sIkhfYzmeMRkTRStSd6O+VjTHRsBdk9IKB
fMp+MRtvyHDgnSzE1zodZjdCDgDvSMjJYiUYNUAuNPbtw0uvJVApDjoAy0IQ
gSviHPC8YO1uMFpt8Ec0v0EeZmCSgGUKzsuQsdmrjB22BsAk1wiGTDqS4DEU
uyh7OnNgwALt1/C2sG+jKFGpQTaQAOxI1dlluVFqgWOhhayKHQAFDbUZ4JxI
ACVLFUlFlpbebKBREtGW3r1bA5NEHw/IdSKBtrIBUSd7tCRLSCUeshRixBC0
E7S8FLsIleBgkPXBI/XmB5LuZtMpvVmfzm/wpbQCEQcCYLyGgATRqJkPBgDc
aJ4AmkHycvBjBcSyWAWy49W10ApnhXpP1mNkGTaOLv/47Xdnr54zPy9vX6jp
LMtlvljd0+Xx6ze12FHQLyzTfZADowH8yJMzBrkYkR4Wp/nWuKsEqkxj80OP
UNNNSNXzc1iZSdQmSzmgFZahpInfgh0Qh33ENYgolAY0mZqW9JYBgW49SVWx
DYk+FEX7AoM0dKXeodnsnFCKjMh04aV7lrKMMKQXRxLsb+gHPsp+lntlEg07
wyCJVWNWKmEr+O2O9RS4hbgVOQKQ3CgAlrWV37iOavYvu15sCN1U2ofVeltd
LY1tCwDA+tSx3z8Ge4HcstjOOWy1OkT05j5mHpof0O6cOdbw+of2TRHFVus5
EHYdgby0QxhjSAFVJoc5kXHVDs4wSNEktDjaiVrKt10KufWeiIgMd8lgAZly
6zn8mFTgpBjGdJagcwxzOXMqLrxBQhXNQJJJHCWeoMPL9GiDr6bI51b59BU8
Bvw/enQRWYynyPSvGZGPHuHqXHo+9zEzEt4cyAf58F2vXbJNVnsw7UiXNENP
KpNpQC3Hox5Ze9XK7/STgrGJeroalJUJeBnDRRckbkecZoVz5rADCYaLjSea
6srCQpr5DERkQQxpuadBFT96BB5Cmt0kajhG94VRdzJyS1FSMFbirKLXTXgA
A2KrUBU7LcCYZt534UYf6bfLW6f4cnPCNsr/NkZM5glukFU2/wCuVQq0G9PZ
RYDEUppBfFkNQXMiWYq2tMORV1mlIZ3X52xFx5xeBpN86QncCE8obgv64/z4
zXHvErTayevj83hGU4yN81bSsEFYdMVJYTmBSNVKszIh8y/0KtBWFKcJgWZr
FQsXOy/BU9rMeN1D5XveO714fQIvfN07uaz7LE+8Bcxhl22m8hO7TQyDYMBe
vZtpMHzb1jx6VzATO/QuJyTyZy2acQcMKAG1jh7glkB7JdH5NUvABg/kEXfd
FV8zDmWARTvr0IKfVzAE02Ako3Z7EJQY+i0oIWmvsax9MFyFUzMcMCbKskI6
qOugfVkqenMPRRf6+xRORkotd052oQINppew+3LbsRCJQtwUk1yplfIAVQaQ
ZpNAKDGqNUSKqG8w073k3qwb8OascKRND2IiJmjyUoAyhwpVEVuHPb/Jrdh/
wuAQLyn/TujgmCK3o5mH/lEM0ZvP2AO7oa0RUMgoy1lUktaM9nIequ64244W
z20d8c4SzIGc9Ecv2BjCRVui/61QAB49Of3SCwVtYmlASLXaaQXPXzYwd6nf
SNb45dmnV0Ed6/GY1KJM10uJrmPvcveeyZ1LHQUvaRCUBMiV+HcQEfWhU/RO
g5bYn4QDLh67lhYh4M+yQ8B7gYZiFBTYRB+BHEPgAVgttkLtSqwwQkNk1pmw
zGlhkev2KVrQJIfzUsC1yZPATg0FrtgnJ3oku5qjb5FMINd9qaewmaNAPS+z
GNrOA4ikD8wE5Q4tg5cdtUF8jKLidT0M8cIVONBo9lFMiePH5ajedqAbJ8RS
cPETPda4/dtsDlt9tDoqsr0cmT8TGq0gLOU2dIKqY7cTWDQdOx8SXTeU8jje
VL7T0/nU/b5mz8GZjr3jHpqi4wzs4cmUYnxG+V+XeeDWnHYpSYE+WepqE1xJ
L5sCXDXr0U4wnk35bYIyxf0dEKbp3IjPqjbHfne/FHPD1T0ZOcO+lFBRRzwQ
FUWvbVzerzYttFm+0p4smSzQaM8Ver9WAjWstR2ibEPKKE7zuLuzjzkh+bWG
2b5N5TXICLRrtoXK8wznwpsGLNvLz+JQxhpfBdkKfZKhluM0M4UeiJlcJJkc
gon3jduQiSOEpfyGSp5KUQMlwg7vAGPOclkWxIF9WAIUhuRJfu1IZrXUKAX2
LcbXxfbJQyEdb4zm/BFrAVc3AbwFdTPRyWaCnHIjye/naLtni1KEppoLYKL0
s1TdYLiU4uLLw6Rkl5wefy2yvjUGvHVWmy6bCTpJfMYahlWXp1D4OD2GgMoi
w2cRWQEXUhMbCMw4pRDMJljZI+wiNwrj52swSltIvAbREtS2ahjvPQPuFHK3
iZBOAeAAJDCZ1HmQi1F+kWNKxIdnJZvya+fMCwdKXqPgw+hoGTkWJ42sFkDi
PTG33pi3GdrW6MLmUyzZVcRN42V7mGyjxAB26lugRRxdm0i/swxquNAUwJpO
Za6/d3sMlG/VvGXaxhUCsgfipLDZJaVm0f5XtPceERfR4cxlwoD9TXtNbW/K
202QdnmfSQ4mlDzCVI3EBdJWSQIMkPVenGZdIcR7cQT/vYX/TuG/c/yLmy7u
33tMEwIxBh9esZJ5L56rkcTsnffQyeWz53sH8ExU/istwnsAXwLRwAdkFHrh
YUr2CnRyeygeLEWXoAMjT7eWLGxXHD09AnYHKkja4u3TtykipS1On55mR4gB
3iF7eu6nvgWaR4/Tp1sDhdkqW7D8HE7KUB2KYxDgWX4Is/abJKSaxhqTVGNZ
STrQEordB9s7gDVAp0CRZpOgkrYIQVusubbwkzN49JgkeT+7ZuWU+rbWNWP3
SuYSxPZsYuOxFisc70F/ivgW/sq8rwvaCGBjoB0FoL5XeeYtIQyVDTktn9IG
ojwvEADTWYGb0eRoSVPx9E/QO8fgmBXFOH6ip5rTUMMAHLFnNKGkQWlho3DV
6IGNW/ukgZAsT6KdszgmFP3E7SjPBW5H2fvFlb0blloRE3nLKvRhtb7b6a6m
0ZYYjxFuZgC7T5yPdn3qSfb4gmHFAf8nL9mmaRiH8EpuvX8N7cXatnNt6+my
nDNZN2hr0FezbO9lA3dr26jLjEmbhoCrqtiYYfeMMII7yXUz1T6hRaXHvdjG
Xo0H60cvMZhxPeJ1XmZNA7TIJQ1rzllgfccbDy3LW2n4VOxsdysaJNI7mlJs
Bok0RhzT+JSAFVBNypkzYmtxwd2ajd6g4eJwXaOWk4OrFZoOWv802i4a9tel
8TbUevt7a7QeLcwHab6AumXarxTp+yVpwP29Rg24v+c0IH76ezTgr0dX2Ojc
hqoinEzwagD5zuamcYSBw+qxRmmQPKU9ox9b+jyobx2H4N+Jz4Szbvq5dRTs
FhEIJ/VOognR4Vy4js+dC6dYgRhvb4EyovO70ct3d5Twazgxjfpan2fTrqV9
kzcf5+2R+OD8PJd8J6vBh644S8MBnra4sKdkzuHvUKVZU8KoO0lTzy2Uhe0G
PSiXPAY4/s/wT0hprsetIJWOGMJV/y4oo7AVP3q/soF9p0W7wOJ28xbCtmgR
IkANvtvZ3bBlaLHTIvTx501b+xa7rbvyLxu0vvsA3Cxt4Qj8wW6lxRubYUPf
Omv//e69+BQTeVrEOIxYGMllVd8Dtm63e8/ZXOnhIS/eshbiK9ztWlQa3i17
P3onTKfS+Dgd5IsZMt8bG0WrTvJHmFksFXGKB3s//hi9mT/u46eyssUGaPtx
KdTGZ8okWmnx2/Uk+l5Ymq6MtQGNLieDTRDOxOdabIK+MhP9LKT2+ZP7tECV
XSPQfwLi/Ee08CJ6r9Lio4gWvywR7bigxDv/BFwQRPTeihYfRfR9oaq0uL/A
/aUTzv1beGG4X2nxURiKj8KwscXPJgz3V7T4KAzvC1Wlxa9WGF7YAPDmLdxp
qs1b2KW4R4vSt7+vhRfRB5UWH0W0+CiiG1v8QswOYXnzA1paHv2Alo1Sen27
TRTQwYoWHxXQfaGqtPiFEHkUbafNuKUbD24j7njTTYdof8HuhlS2E7aEzCnh
vVPbjXvGFXbWDMA56+147+IhJx3gFsA2Z52akGRgiw08DO9vryp8ZhP/qXnY
zCCp/hCj9dv1jQ0K4uOPu742FwFZyWVYmhxqZ+GzBjasb4Gmi9s/jLqZ5Wom
ufZZnK4qAKKxKmx2q4zoEN7N5vlACZ+9gQjr2jxkbqzdKZSl6WuEMN4BDMB8
YmpJcAw27995iElgGLshyCM65vwWD+lxinh/ESVBVkstuHRIn+ToIXCn+8qr
yfOrZ/eVU13WdOK2dD8B1f+JgFbJsMIi/liKPTooi3Z11608b5ujYqmWUpH4
h28f7NZy0dt4/hOlFn1uPq6zqJChyymO+m3HQ7pCbgwWryhZyR6zSzOF70/B
nz+JKdhCUKdgq5s2OFpYIUPusZkMP38SjpssPZW0jKwbj5tEpO2nUiJtO4+/
m7b9tBrJcqdObhacmNxcAmsWTQyAP6WTro0kupSA9lyii67lGFhxyjvPS2TI
KoT7mS5BOBBQq/WC8eJOZcWnq2olUk39PAKMmSSbHEbtuqoV1ICqdZkim5Xo
EjMA7UkMVAT2vL8/OLe/snzkpqfcflw5YCnh2wf7pYV3OdmGjX3sleSADKkd
K3b7Xa4fIoHo1565/va7Z10wEfGAzUAmLsXbDSlTLs0H6JUrq2bYU3d0fupQ
6G0SOCvAwSphpWmUMxB+IzT0gZDcr9RLrsrVYob1EyfVOi/bOJZGM2JRUB1B
lRjKUUz0lVqT9ueOLf40euCgJCvi5cdVJ7whAoNwX7/8VOh22aLbgeyCm01W
vHffFY8g/5WveOlgK5crslzDJ2fZXuBSFhKPrmhX9MtWULIsYysK0HnCG6nJ
4hhmgM0uTHUM7mjCxTrVgnqjgbiIalY6mcDdtQWfZ+UTVLWzrDZ76thgBp42
NPvTsMgnUcHT3gRLcgHeTm0nr10n4vYBEEYnqo7a4WKcHT8OeA9vfBFPX3V5
RS3RTCgHU0x19qCFHF5Lm58r/aRYf3TFy+wGzKO8bZVHKILIpUKCHjcsJOOq
rpktn2LVtut6luuM6nPUESjeGk7LKnflesJzOr7yKFYk80YE/tIwdFQ+FJQt
Heqlcq8i45KHXLkulJtFnr1GgpSDPDPGtTUockYq1Ambp4lOr2RfJ/gy6cGm
OmKEYBPMQi7Lg4fIqF41phu7omLtGvYsqknxuvPUoyz3uWshu69aEjhzZUdq
CC4XKClTaoUwpKNQOtnM9a9sNcTQHRVXRDqzFhAeWB4CKoHh+nh2GXnKHUvG
6lppVEuL0+NyBYYffkU6tt5EjAV/Wl2lxJcR3tH4zKioBJbjNROSGPHRIlsS
j5408QUdnM2nmFLrHehgTLlitwO8RsT3SbNBeCrkv053c7WYUFOlvjSUgU04
opRadBXm5eJwZIj1vRBdKvUY+fQ2QlrkMg1vUhXLIqpew8eknUfWZNHSeX/q
ZaqLIqTYl7iLLx0wS2VjVM+lXoE4x2pEqdN68IAPvLhznkT3AVN9KtKcVUWC
Fb+9cDyzNwhVmo79McjbBytPQYPyoSkACKS+3s0At0gGeF4uQamA5WYKaF0+
Ao0ykZOV9YzP3WC5uCgh9X7ls3iBLBDhHLgUaOV0RljBBr56uY650p8Ctaob
mDdK8uVBn6bbHmyhBnDM8nlKFvnGVV1dsUu8iQb5dkDxMCxoXAIuFPY/fv7y
7IjPBOAFJJx2/BqDYTNMkOajkFGFjhUrYIuMgRjigoADq80FXwckTCpnZpKF
c0r8eF09Njelm0mWoOVWrDs6TmRNNNtXdHlCqXpbrlHgioelGodtX/JQJvAF
qMJCsY2DOUjs6XE+AzabYexgVKrozewmQQDQ4ehc9bOMaq6USoaSYxKI0xbY
3pQ8Q0laJkNTkZTRgWiY0cxQ3U2KDLoKV1w5rOGceTuKu6woU+sz6Lk7H7WS
G8ZeiEGBcUYkQbOarI9qytjT0NZoAd0bpFDlqFxs9nvY1p3B/01D8QY0sOz5
haI2SKhDb82o+5JTWI3VR/5rZ/d9SYco3h1q+rFhbcsNlpS2X5/ms1ihBHDl
upsfabJxNX635NRlqNpHp1FKMgbevVJqZi8AKEc1l3O8xUWZ3T8UdGF8RVQr
pkK96AiacqFUK7eDfqhKcHug7A1XUyW7kUxfe7izx3auP+lhbEjf6h08U7F+
h6J05CJsBjB3OJMky+/R6eoCxTSxdoWFQVRzbaeGauZUEskdTS1XAXdlZn01
yixGT18tMqoWaW+aCGqgfDXMo6iGXHT+k0iKfArlu4rLgJedelLJ8ehcL4fl
EfbCp3WjOtOEgxDbO6RSpR1mX7oTpi5dOXiPx62mGL+O4nK5BoMWRLjDn7UI
bZkia6HpUGGPlSMsV+m4WDwBBM9fRcIx0yj85Y2mqBA7AT20EDddUEWuGobw
hoGUK+fWLNwkaGOEOEe5NMYHYKU+VKgo6XDzif3lu0q/vkwE3jEok+8k1uWm
Wo9I9RXd8bh7UNYdVo+HABcYPUCCrmYGD44h2bAGCBoIh6jXJ92Dai3mCv3W
iM2HruhQXJ1PfmIyrCP8g0lyCUWWjfiP9Hg/erQu44cT5H7lGCLdExEb5xSa
5U7thhOe5TXujUHpDbIs0viaCqKWTTwZ1CHhGKY7grr+4hnNZXFRSWgzpatw
wNIYOyrKtWGbAo0LRBOVMevgLUQYfAMVIsG/MV3xbMFhDvI77elPU7vzJ1I9
bVekV6elTS5rgQ1c4e8s55q5QC14khY8aMOhEoR8BhPBE48TlcyMrwnngmKE
Ulv4BeNn4WYsLDWXy5vU7zGVY+0UhKvdGGQoacDVrmlCJoMBLDEflMI99Zgc
MaBXzBS0IjNkqseTwlba4VgXmPFuXhHCma3AKs7Gqf6ebJZc4q1FeEEUcoSd
OLYElgvXgw25GDDWfs45kL6onGuPKyoDEDAWXYrkw31oqMDzPp3F99LEcRIX
8fwU+g/Ty+w6+4JTdlHQMwSMOapYRIRjEda4Bie2vZlp4CHLyd6C2WiPAr0A
exPCJudzdVHeSzCr9iOAhncsSu3Ckf/oFm/BS5f1r3U2xxstPGt5cd7HGinw
thy7x2/QMIV1PPmK8MkCNIRN25EBHr3KgtSHIQGaoR5gXGMRSlh58UwVVLHA
cOp3dWEGNzIcT+dlVgS3D1yJZ3OdkAaxyxr5YrxLKEagkze/q4GuY2EIxuCn
Fa5i5Q52PMfY25Uld8baiIMF4dIuoJBX+kohn7cbSI8reZslV7217WUnNlzp
KtL7y9VCYTwMcLJ9i1w4nfowueUNDra7evVrnAYqNlcP5OIVHwByLSJJ5QeP
kL9CqTF+xd3hZp0rLqBD8Y2Ed5KGc5Ky04wlEz077V1i9EWTJQBeV6VvFGSd
RC5UXu3+de/IP8qB7bOp/t6XRi1FcRowheTliqM7Eo33rWx0JImCcapyhQTh
MopO1xBVueTNazZHPCgrpzMu9CtOeqe9isr2FUu0TOVdtb6DKzwShZOiqC12
120uXfGmXIECd9Ht1RbACBQi3Lq9/Ve80fjubisqTA1dhJs+ud6C1ZbSSd6l
pSnAk67Xw8CADRlh9nY3nCbYGHJm63tgSJnQgsrWXDGBUx5gZeLwjNSSDW1v
NQy15Qy+RXxx5db661XxtvNtlGts+cUd0dXlXDqF8cJplZUKYefK7oZgSqXP
TW9IUi89CtXDRKVcGPfqV0hEJVdEY42V0qu2qAqR1KqKYrj92ojGX0Z9ML6w
8x7FUX6WGi73hpKuF8ZdGpQIzx2n2wiTFwdOBFj7G9jk9jBXUxhFp/locEfs
9hWsFoLd2dnHeXd2DpjJsIOdffh6h2L8hX6nyOqncE5aBIl+4+1bcnOPqYyM
F6GRo+IKOZPWNG7jM7clBwMYewzGfgTGHnwlMHhFsBc9xY1eKqNm40P8YLjM
a6GX3vrdxEb95nZk63uHFHiL7+rEiYcLgeIMhUeupgsWbhynbJdqLPGW2n0o
Cq9Vp73L096Lpr0LX2naFzPQglxt0pWTouqjdJXBIJoeDTzkO+NISldH2eFR
dqNRduArjXIORpOxRa25xhTuf1GBVVC0Q3SaugwNSvNF2DNoqgSGBkqqlLtD
kap+UWtX/9pXrE59PHXZukTByhL+wAIAXyvyhwnyZSRSwUOEgAjHGLbwiZJk
dTZfVgp+2ahwJWA1b5BE7ixQqkNgdBVpdyUJPxDlqzOYj2XpGXIw61Y1fLo1
AoNMbdl6ZLg7mGG5T7Sxc3TI0CC9Aql+ezQBBxl4LxW9qfnhf4y5w2Ji+IPM
DYApnqFhmabu8b9nkxQD2vMf/ku8BuPDmIx/Yzf/9ssf/gZ2FFg3iUT7Bn5y
cRBwnkew6LR/zBe8TN30EEa+1Lh68ykaKLSrh/tnmATpaxyCi/HVyenp2Vc9
v6lzpJJCDzp0PQug7y+UDnt0fnJ5cnF8xLe2ffMGNPQF7wPZqkQv93b2dsL7
FycvTi46L8FtFA+/zHGLHASropUQXzze++zxHufl986Pes/BsuicZJf1N3d3
dqHXvcdfgB35f5zctOmbhQAA

-->

</rfc>
