<?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-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Identifier Update for OSCORE">Identifier Update for OSCORE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-id-update-03"/>
    <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="07"/>
    <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 terminates an ongoing OSCORE ID update procedure with another peer as successful, in any of the following two cases.</t>
      <ul spacing="normal">
        <li>
          <t>The peer has received and successfully verified three message from the other peer containing the Recipient-ID-Ack Option.</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 responder <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:
- Sends a message including the Recipient-ID Option, or
- Receives such a message from the other peer.</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 next sent message sent using CTX_A must include the Recipient-ID option with this peer's chosen Recipient ID value.
            </t>
            <ul spacing="normal">
              <li>
                <t>Note that this also informs the other peer of support for the ID update procedure.</t>
              </li>
              <li>
                <t>If the peer initiated the procedure, it must not resend the offer immediately.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t><strong>Acknowledgment</strong></t>
        <ul spacing="normal">
          <li>
            <t>If a peer hsa 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 revert to sending messages with the Recipient ID option according to the following:</t>
        <ul spacing="normal">
          <li>
            <t>A local timer should be maintained during the procedure.
            </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.</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>Three valid messages are received from the peer that include the Recipient-ID-Ack Option. At this point:</t>
          <ul spacing="normal">
            <li>
              <t>It is safe to delete CTX_A.</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 or Timeout</strong></t>
          <t>If 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 responder <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>A peer terminates an ongoing OSCORE ID update procedure with another peer as failed, in case, after having sent the first ID update message for the procedure in question, a pre-defined amount of time has elapsed without receiving and successfully verifying the second ID update message from the other peer. It is <bcp14>RECOMMENDED</bcp14> that such an amount of time is equal to MAX_TRANSMIT_WAIT (see <xref section="4.8.2" sectionFormat="of" target="RFC7252"/>).</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">empty</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="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="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="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 {                          |
            |  ...                              |
            |                                   | 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 {                          |
            |  ...                              |
            |                                   | 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 {                          |
            |  ...                              |
            |                                   | 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 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.</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 running the OSCORE ID update procedure stand-alone or 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 option number 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 Number</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>
          </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.</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="3" month="March" year="2025"/>
            <abstract>
              <t>   This document defines Key Update for OSCORE (KUDOS), a lightweight
   procedure that two CoAP endpoints can use to update their keying
   material by establishing a new OSCORE Security Context.  Accordingly,
   it updates the use of the OSCORE flag bits in the CoAP OSCORE Option
   as well as the protection of CoAP response messages with OSCORE, and
   it deprecates the key update procedure specified in Appendix B.2 of
   RFC 8613.  Thus, this document updates RFC 8613.

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

<section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <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:
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
BzJWgp9ihQAA

-->

</rfc>
