<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-cacheable-oscore-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Group OSCORE Cacheable CoAP Responses">End-to-End Protected and Cacheable Responses for the Constrained Application Protocol (CoAP) using Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-cacheable-oscore-01"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</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="2026" month="March" day="02"/>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>CoAP, OSCORE, multicast, caching, proxy</keyword>
    <abstract>
      <?line 114?>

<t>When using the Constrained Application Protocol (CoAP), exchanged messages can be protected end-to-end also across untrusted intermediary proxies. This can be achieved with Object Security for Constrained RESTful Environments (OSCORE) or, in the case of group communication, with Group Object Security for Constrained RESTful Environments (Group OSCORE). However, this sidesteps the proxies' abilities to cache responses from the origin server(s). This document restores cacheability of end-end protected responses at proxies, by using Group OSCORE and introducing consensus requests, which any client in an OSCORE group can send to one server or multiple servers in the same group.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/core-wg/cacheable-oscore"/>.</t>
    </note>
  </front>
  <middle>
    <?line 118?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> supports intermediary proxies that perform requests on behalf of clients and relay back responses. A core functionality of intermediary proxies is the caching of responses.</t>
      <t>Even in the presence of such intermediaries, exchanged CoAP messages can be protected end-to-end by using Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>.</t>
      <t>In a group communication environment <xref target="I-D.ietf-core-groupcomm-bis"/>, CoAP exchanged messages can be protected end-to-end by using Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/>. When protected with the group mode of Group OSCORE (see <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), requests and responses exchanged in the OSCORE group can be read by all group members, i.e., not only by the intended recipient(s), thus achieving group-level confidentiality.</t>
      <t>With any security mechanism for CoAP, the caching of responses at intermediaries presents operators with a trade-off between required trust and provided performance:</t>
      <ul spacing="normal">
        <li>
          <t>If an intermediary proxy is trusted, the proxy can inspect traffic that is going through, cache it, and provide cached responses.
<!-- This can be realized in TLS or any other 1:1 scheme by handing broad certificates to proxies, or in Group OSCORE by sending the request in group mode and then inspecting whether the response is from origin or from the proxy –
but those details would just distract here. -->
          </t>
        </li>
        <li>
          <t>An untrusted proxy, while possible with OSCORE and Group OSCORE, sees different ciphertexts for different requests even when those requests target the same resource. Even if the proxy could somehow produce a cache hit, cached responses would be rejected by the request-response matching of (Group) OSCORE.</t>
        </li>
      </ul>
      <t>By using Group OSCORE, this document provides a way out of the trade-off situation.</t>
      <t>In particular, this document enables cacheability of protected responses for proxies that are not members of the OSCORE group and that are unaware of OSCORE and Group OSCORE in general. To this end, it builds on the concept of "consensus request" initially considered in <xref target="I-D.ietf-core-observe-multicast-notifications"/>, and it defines "Deterministic Request" as a convenient incarnation of such concept.</t>
      <t>All clients wishing to send a particular request with the GET method or FETCH method <xref target="RFC8132"/> are able to deterministically compute the same protected request, using a variation of the pairwise mode of Group OSCORE (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). It follows that cache hits become possible at the proxy, which can thus serve clients in the group from its cache. Like in <xref target="I-D.ietf-core-observe-multicast-notifications"/>, this requires that clients and servers are already members of a suitable OSCORE group.</t>
      <t>Cacheability of protected responses is useful also in applications where several clients wish to retrieve the same object from a single server.
Some security properties of OSCORE are dispensed with, in order to gain other desirable properties.</t>
      <t>In order to clearly handle the protocol's security properties
and to broaden applicability to group situations outside the deterministic case,
the technical implementation is split into two halves:</t>
      <ul spacing="normal">
        <li>
          <t>Maintaining request-response bindings in the absence of request source authentication; and</t>
        </li>
        <li>
          <t>Building and processing of Deterministic Requests, which have no source authentication and thus require the former.</t>
        </li>
      </ul>
      <section anchor="use-cases">
        <name>Use Cases</name>
        <t>When firmware updates are delivered using CoAP, many similar devices fetch the same large data at the same time. Collecting such large data at a proxy from its cache not only keeps the traffic low, but also lets the clients ride single file to hide their numbers <xref target="SW-EPIV"/> and identities. By using protected Deterministic Requests as defined in this document, it is possible to efficiently perform data collection at a proxy also when the firmware updates are protected end-to-end.</t>
        <t>When relying on intermediaries to fan out the delivery of multicast data protected end-to-end as in <xref target="I-D.ietf-core-multicast-notifications-proxy"/>, the use of protected Deterministic Requests as defined in this document allows for a more efficient setup, by reducing the amount of message exchanges and enabling early population of cache entries (see <xref target="det-requests-for-notif"/>).</t>
        <t>When building RESTful networks following the patterns of Information-Centric Networking (ICN),
CoAP proxies take the role of forwarding nodes.
Caching plays a large role in such networks,
and cacheable OSCORE provides a compatible security mechanism <xref target="ICN-paper"/>.</t>
        <t>When DNS messages are transported over CoAP <xref target="I-D.ietf-core-dns-over-coap"/>, it is recommended to use OSCORE for protecting such messages <xref target="DNS-CoAP-paper"/>. By restoring cacheability of OSCORE-protected responses, it becomes possible to benefit from the cache retrieval of such CoAP responses that particularly transport DNS messages.</t>
      </section>
      <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 terms and concepts of CoAP <xref target="RFC7252"/> and its method FETCH <xref target="RFC8132"/>, group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/>, CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/><xref target="RFC9053"/>, OSCORE <xref target="RFC8613"/>, and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>This document also introduces the following new terms.</t>
        <ul spacing="normal">
          <li>
            <t>Consensus Request: a CoAP request that multiple clients use to repeatedly access a particular resource.
In this document, it exclusively refers to requests protected with Group OSCORE to a resource hosted at one or more servers in the OSCORE group.  </t>
            <t>
A Consensus Request has all the properties relevant to caching, but its transport dependent properties (e.g., Token or Message ID) are not defined. Thus, different requests on the wire can be said to "be the same Consensus Request" even if they have different Tokens or source addresses.  </t>
            <t>
The Consensus Request is the reference for request-response binding.
 In general, a client processing a response to a Consensus Request did not generate (and thus sign) the consensus request.
 The client not only needs to decrypt the Consensus Request to understand a corresponding response (for example to tell which path was requested),
 but it also needs to verify that this is the only Consensus Request that could elicit this response.</t>
          </li>
          <li>
            <t>Deterministic Client: a fictitious member of an OSCORE group, having no Sender Sequence Number, no asymmetric key pair, and no Recipient Context.  </t>
            <t>
The Group Manager responsible for the OSCORE group (see <xref section="12" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) sets up the Deterministic Client and assigns it a unique Sender ID like for other group members. Furthermore, the Deterministic Client has only the minimum common set of privileges shared by all group members.</t>
          </li>
          <li>
            <t>Deterministic Request: a Consensus Request generated by the Deterministic Client. The use of Deterministic Requests is defined in <xref target="sec-deterministic-requests"/>.</t>
          </li>
          <li>
            <t>Ticket Request: a Consensus Request generated by the server itself.  </t>
            <t>
This term is not used in the main document, but is useful in comparison with other applications of Consensus Requests
that are generated in a different way than as Deterministic Requests.
The prototypical Ticket Request is the Phantom Request defined in <xref target="I-D.ietf-core-observe-multicast-notifications"/>.  </t>
            <t>
In <xref target="sec-ticket-requests"/>, the term is used to bridge the gap with that document.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="oscore-nosourceauth">
      <name>OSCORE Message Processing without Source Authentication</name>
      <t>In OSCORE <xref target="RFC8613"/>, a response is cryptographically bound to the corresponding request through CBOR data items <xref target="RFC8949"/> in their authenticated encryption's Additional Authenticated Data (AAD):
"request_kid" and "request_piv".
Group OSCORE adds "request_kid_context" to that list.
Hereafter, those items are referred to as "request_details".</t>
      <t>The security of such binding depends on the server obtaining source authentication for the request,
and on that source matching the request_details.
If this precondition is not fulfilled, a malicious group member could alter a request to the server (without altering the request_details above),
and the client would still accept the response as if it were a response to its request.</t>
      <t>Source authentication is thus a precondition for the secure use of OSCORE and Group OSCORE.
However, it is hard to provide when:</t>
      <ul spacing="normal">
        <li>
          <t>Requests are built exclusively using shared group keying material, like in the case of a Deterministic Client.</t>
        </li>
        <li>
          <t>Requests are sent without source authentication, or their source authentication is not checked. (This was part of <xref target="I-D.ietf-core-oscore-groupcomm"/> in revisions before version -12)</t>
        </li>
      </ul>
      <t>This document does not [ yet? ] give full guidance on how to restore request-response binding for the general case,
but currently only offers suggestions:</t>
      <ul spacing="normal">
        <li>
          <t>The response can contain the full request. An option that allows doing that is presented in <xref target="I-D.ietf-core-responses"/>.</t>
        </li>
        <li>
          <t>The response can contain a cryptographic hash of the full request. This is used by the method specified in this document, as defined in <xref target="ssec-request-hash-option"/>.
<!-- * The request_details above can be transported in a Class E option (encrypted and integrity protected) or a Class I option (unencrypted, but part of the AAD hence integrity protected).
The latter has the advantage that the option can be removed in transit and reconstructed at the receiver. -->
          </t>
        </li>
        <li>
          <t>The agreed-on request data can be placed in a different position in the AAD,
or take part to the derivation of the (Group) OSCORE Security Context.
In the latter case, care needs to be taken to never initialize a Security Context twice with the same input,
as that would lead to reuse of the Authenticated Encryption with Associated Data (AEAD) nonce.</t>
        </li>
      </ul>
      <t>[ Suggestion for any OSCORE v2: avoid request_details in the request's AAD as individual elements. Rather than having 'request_kid', 'request_piv' (and, in Group OSCORE, 'request_kid_context') as separate fields, they can better be something more pluggable.
This would avoid the need to make up an option before processing, and would allow just plugging the (hash of the) request in there, as replacing the elements for the request_details. ]</t>
      <t>Additional care has to be taken in ensuring that request_details that are not expressed in the request itself are captured. For instance, these include an indication of the Security Context through which the request is assumed to have been originated.</t>
      <t>Requests without source authentication have to be processed assuming only the minimal possible privilege of the requester
[ which is currently described as the authorization of the Deterministic Client, and may be moved up here in later versions of this document ].
If a response to such a request is built and it contains data more sensitive than that
(which might be justified if the response is protected for an authorized group member in pairwise mode),
special consideration for any side channels like response size or timing is required.</t>
    </section>
    <section anchor="sec-deterministic-requests">
      <name>Deterministic Requests</name>
      <t>This section defines a method for clients starting from a same intended CoAP request to independently build the same, corresponding Deterministic Request protected with Group OSCORE.</t>
      <section anchor="sec-deterministic-requests-unprotected">
        <name>Deterministic Unprotected Request</name>
        <t>When clients build their unprotected request,
they can already minimize variability
and thus maximize reproducibility.</t>
        <t>This document does not set out full guidelines for minimizing the variation,
but considered starting points are:</t>
        <ul spacing="normal">
          <li>
            <t>Set the Inner CoAP Observe Option to 0 (register) <xref target="RFC7641"/>, even if no observation is intended (and hence no Outer Observe Option is set). Thus, both Observe and non-Observe requests can be aggregated into a single request, which is upstreamed as an observation at the latest when any Observe request reaches a caching proxy.  </t>
            <t>
In this case, following a Deterministic Request that includes only an Inner Observe Option, servers include an Inner Observe Option (but no Outer Observe Option) in a successful response sent as reply. Also, when receiving a response to such a Deterministic Request previously sent, clients silently ignore the Inner Observe Option in that response.</t>
          </li>
          <li>
            <t>Avoid setting the CoAP ETag Option in requests on a whim.
Instead, clients should only set it when there was a recent response conveying that ETag value.
When using block-wise transfers <xref target="RFC7959"/> and obtaining later blocks, clients should not send the known-stale ETag value.</t>
          </li>
          <li>
            <t>When using block-wise transfers <xref target="RFC7959"/>, maximally sized large Inner blocks (szx=6) <bcp14>SHOULD</bcp14> be selected.
This serves not only to align the clients on consistent cache entries,
but also helps amortize the additional data transferred in the per-message signatures.  </t>
            <t>
Outer block-wise transfer can then be used if these messages exceed a hop's efficiently usable Maximum Transmission Unit (MTU) size.  </t>
            <t>
If Block-wise Extension for Reliable Transport (BERT) <xref target="RFC8323"/> is usable with OSCORE, its use is fine as well;
in that case, the server picks a consistent block size for all clients anyway.
<!-- see https://github.com/core-wg/corrclar/pull/45 -->
            </t>
          </li>
          <li>
            <t>The CoAP Padding Option defined in <xref target="sec-padding"/> can be used to limit an adversary's ability to deduce the content and the target resource of Deterministic Requests from their length. In particular, all Deterministic Requests of the same class (ideally, all requests to a particular server) can be padded to reach the same total length, that should be agreed on among all users of the same Group OSCORE Security Context.</t>
          </li>
        </ul>
        <!--
MT: proposed  s/should be agreed/SHOULD be agreed
-->

<ul spacing="normal">
          <li>
            <t>Clients should not send a protected (inner) CoAP Echo Option <xref target="RFC9175"/> in Deterministic Requests.  </t>
            <t>
In combination with Deterministic Requests, this limits the use of the Echo Option to its inclusion as an unprotected (outer) Echo Option,
and thus to testing the reachability of the client.
However, this is not practically limiting, since the use as an Inner option would be to prove freshness,
which is something that Deterministic Requests simply cannot provide anyway.</t>
          </li>
        </ul>
        <t>These guidelines only serve to ensure that cache entries are utilized. Failure to follow these guidelines has no more severe consequences than decreasing the utility and effectiveness of a cache.</t>
      </section>
      <section anchor="ssec-deterministic-requests-design">
        <name>Design Considerations</name>
        <t>The hard part is determining a consensus pair (key, nonce) to be used with the AEAD cipher for encrypting the plain CoAP request and obtaining the Deterministic Request as a result, while also avoiding the reuse of the same (key, nonce) pair across different requests.</t>
        <t>Diversity can conceptually be enforced by applying a cryptographic hash function to the complete input of the encryption operation over the plain CoAP request (i.e., the AAD and the plaintext of the COSE object), and then using the result as source of uniqueness.
Any non-malleable cryptographically secure hash of sufficient length to make collisions sufficiently unlikely is suitable for this purpose.</t>
        <t>A tempting possibility is to use a fixed (group) key, and use the hash as a deterministic AEAD nonce for each Deterministic Request through the Partial IV component (see <xref section="5.2" sectionFormat="of" target="RFC8613"/>). However, the 40 bits available for the Partial IV are by far insufficient to ensure that the deterministic nonce is not reused across different Deterministic Requests. Even if the full deterministic AEAD nonce could be set, the sizes used by common algorithms would still be too small.</t>
        <t>Consequently, the proposed method takes the opposite approach, by considering a fixed deterministic AEAD nonce, while deriving a different deterministic encryption key for each Deterministic Request. That is, the hash computed over the plain CoAP request is taken as input to the key derivation. As an advantage, this approach does not require to transport the computed hash in the CoAP OSCORE Option.</t>
        <t>[ Note: This has a further positive side effect arising with version -11 of draft-ietf-core-oscore-groupcomm. That is, since the full encoded OSCORE Option is part of the AAD, it avoids a circular dependency from feeding the AAD into the hash computation, which in turn needs crude workarounds like building the full AAD twice, or zeroing out the hash-to-be. ]</t>
      </section>
      <section anchor="ssec-request-hash-option">
        <name>The Request-Hash Option</name>
        <t>In order to transport the hash of the plain CoAP request, a new CoAP option is defined, which <bcp14>MUST</bcp14> be supported by clients and servers that support Deterministic Requests.</t>
        <t>The option is called Request-Hash and its properties are summarized in <xref target="request-hash-table"/>, which extends Table 4 of <xref target="RFC7252"/>. The option is Elective, Safe-to-Forward, part of the Cache-Key, and not repeatable.</t>
        <table align="center" anchor="request-hash-table">
          <name>The Request-Hash 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">TBD548</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">Request-Hash</td>
              <td align="left">opaque</td>
              <td align="left">any</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>The Request-Hash Option is identical in all its properties to the Request-Tag Option defined in <xref target="RFC9175"/>, with the following exceptions:</t>
        <ul spacing="normal">
          <li>
            <t>It is not repeatable.</t>
          </li>
          <li>
            <t>The Option Value may be arbitrarily long.  </t>
            <t>
Implementations can limit the length of the Option Value to that of the longest output of the supported hash functions.</t>
          </li>
          <li>
            <t>It may be present in responses.  </t>
            <t>
Editor's note: Does this affect any other properties?  </t>
            <t>
A response's Request-Hash Option is, as a matter of default value,
equal to the request's Request-Hash Option.
The response is valid only if the value of its Request-Hash Option is equal to the value of the Request-Hash Option in the corresponding request.  </t>
            <t>
Servers (including proxies) thus generally should not need to include the Request-Hash Option explicitly in responses,
especially as a matter of bandwidth efficiency.  </t>
            <t>
A reason (and, currently, the only known) to actually include a Request-Hash option in a response
is the possible use of non-traditional responses as described in <xref target="I-D.ietf-core-responses"/>,
which in terms of that document are non-matching to the request (and thus easily usable).
The Request-Hash Option included in the response allows populating caches (see below) and enables the decryption and verification of a response that is sent as a reply to a Consensus Request.
In the context of non-traditional responses, the value of the Request-Hash Option in the request corresponding to a response can be inferred from the value of the Request-Hash Option in the response.</t>
          </li>
          <li>
            <t>A proxy <bcp14>MAY</bcp14> use any fresh cached response from the selected server to reply to a request with the same Request-Hash;
this may save it some memory.  </t>
            <t>
When replying to a request that includes a Request-Hash Option, the proxy <bcp14>MAY</bcp14> add a Request-Hash Option to the response if the option is not already present in the response, or remove the Request-Hash Option from the response if the option is already present in the response. In either case, the Request-Hash Option in the response <bcp14>MUST</bcp14> have the same value that the Request-Hash Option has in the corresponding request.</t>
          </li>
          <li>
            <t>When used with a Deterministic Request, the Request-Hash Option is created at message protection time by the sender endpoint, and it is used before message decryption and verification by the recipient endpoint. Therefore, in this use case, this option is treated as Class U for OSCORE <xref target="RFC8613"/> in requests. In the same application, for responses, this option is treated as Class I and is often elided from sending, in which case it is reconstructed at the recipient endpoint. Other uses of the Request-Hash Option can treat it according to different classes for the OSCORE processing.</t>
          </li>
        </ul>
        <t>The Request-Hash Option achieves the request-response binding described in <xref target="oscore-nosourceauth"/>.</t>
      </section>
      <section anchor="ssec-use-deterministic-requests">
        <name>Use of Deterministic Requests</name>
        <t>This section defines how a Deterministic Request is built on the client side and then processed on the server side.</t>
        <section anchor="sssec-use-deterministic-requests-pre-conditions">
          <name>Preconditions</name>
          <t>The use of Deterministic Requests in an OSCORE group requires that the interested group members are aware of the Deterministic Client in the group. In particular, they need to know:</t>
          <ul spacing="normal">
            <li>
              <t>The Sender ID of the Deterministic Client, to be used as 'kid' parameter for the Deterministic Requests. This allows all group members to compute the Sender Key of the Deterministic Client.  </t>
              <t>
The Sender ID of the Deterministic Client is immutable throughout the lifetime of the OSCORE group. That is, it is not relinquished and it does not change upon changes of the group keying material following a group rekeying performed by the Group Manager (see <xref section="12.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
            </li>
            <li>
              <t>The hash algorithm to use for computing the hash of a plain CoAP request, when producing the associated Deterministic Request.</t>
            </li>
          </ul>
          <t>Group members have to obtain this information from the Group Manager. A group member can do that, for instance, when obtaining the group keying material upon joining the OSCORE group, or later on as an active member by interacting with the Group Manager.</t>
          <t>The joining process based on the Group Manager defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> can be easily extended to support the provisioning of information about the Deterministic Client. Such an extension is defined in <xref target="sec-obtaining-info"/> of the present document.
No such extension is needed for the management interface of the Group Manager, as <xref target="I-D.ietf-ace-oscore-gm-admin"/> already includes the relevant parameters.</t>
        </section>
        <section anchor="sssec-use-deterministic-requests-client-req">
          <name>Client Composition of Deterministic Requests</name>
          <t>In order to build a Deterministic Request, the client protects the plain CoAP request using the pairwise mode of Group OSCORE (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), with the following alterations.</t>
          <ol spacing="normal" type="1"><li>
              <t>When preparing the OSCORE Option, the external_aad, and the AEAD nonce:  </t>
              <ul spacing="normal">
                <li>
                  <t>The Sender ID used is the Deterministic Client's Sender ID.</t>
                </li>
                <li>
                  <t>The element 'sender_cred' in the aad_array takes the empty CBOR byte string (0x40).</t>
                </li>
                <li>
                  <t>The Partial IV used is 0.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The client uses the hash function indicated for the Deterministic Client and computes a hash H over the following input: the Sender Key of the Deterministic Client, concatenated with the binary serialization of the aad_array from Step 1, concatenated with the COSE plaintext.  </t>
              <t>
Note that the payload of the plain CoAP request (if any) is not self-delimiting, and thus hash functions are limited to non-malleable ones.</t>
            </li>
            <li>
              <t>The client derives the deterministic Pairwise Sender Key K as defined in <xref section="2.5.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, with the following differences:  </t>
              <ul spacing="normal">
                <li>
                  <t>The Sender Key of the Deterministic Client is used as the first argument of the HMAC-based Key Derivation Function (HKDF).</t>
                </li>
                <li>
                  <t>The hash H from Step 2 is used as the second argument IKM-Sender of the HKDF, i.e., as a pseudo Input Keying Material (IKM) computable by all the group members.      </t>
                  <t>
Note that an actual IKM-Sender cannot be obtained, since there is no authentication credential (and public key included therein) associated with the Deterministic Client to be used as Sender Authentication Credential and for computing an actual Diffie-Hellman Shared Secret.</t>
                </li>
                <li>
                  <t>The Sender ID of the Deterministic Client is used as the value for the 'id' element of the 'info' parameter used as third argument of the HKDF.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The client includes a Request-Hash Option in the request to protect, with value set to the hash H from Step 2.</t>
            </li>
            <li>
              <t>The client <bcp14>MAY</bcp14> include an Inner Observe Option set to 0 (register) to be protected with Group OSCORE, even if no observation is intended <xref target="RFC7641"/> (see <xref target="sec-deterministic-requests-unprotected"/>).</t>
            </li>
            <li>
              <t>The client protects the request using the pairwise mode of Group OSCORE as defined in <xref section="8.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, using the AEAD nonce from Step 1, the deterministic Pairwise Sender Key K from Step 3 as AEAD encryption key, and the finalized AAD.</t>
            </li>
            <li>
              <t>The client <bcp14>MUST NOT</bcp14> include an unprotected (outer) Observe Option if no observation is intended, even in case an Inner Observe Option was included at Step 5.</t>
            </li>
            <li>
              <t>The client <bcp14>MUST</bcp14> set 0.05 (FETCH) <xref target="RFC8132"/> as the Outer Code of the protected request to make it usable for a proxy's cache, even if no observation is intended.</t>
            </li>
          </ol>
          <t>The result is the Deterministic Request to be sent.</t>
          <t>Since the encryption key K is derived using material from the whole plain CoAP request, this (key, nonce) pair is only used for this very message, which is deterministically encrypted unless there is a hash collision between two Deterministic Requests.</t>
          <t>The deterministic encryption requires that the AEAD algorithm used is deterministic in itself. This is the case for all the AEAD algorithms currently registered with COSE in <xref target="COSE.Algorithms"/>. For future algorithms, a flag in the COSE registry is to be added.</t>
          <t>Note that, while the process defined above is based on the pairwise mode of Group OSCORE, no information about the server takes part in the key derivation or is included in the AAD. This is intentional, since it allows sending a Deterministic Request to multiple servers at once (see <xref target="det-req-one-to-many"/>). On the other hand, it requires later checks at the client when verifying a response to a Deterministic Request (see <xref target="ssec-use-deterministic-requests-response"/>).</t>
        </section>
        <section anchor="sssec-use-deterministic-requests-server-req">
          <name>Server Processing of Deterministic Requests</name>
          <t>Upon receiving a Deterministic Request, a server performs the following actions.</t>
          <t>A server that does not support Deterministic Requests would not be able to create the necessary Recipient Context, and thus will fail decrypting and verifying the request.</t>
          <ol spacing="normal" type="1"><li>
              <t>If not already available, the server retrieves the information about the Deterministic Client from the Group Manager and derives the Sender Key of the Deterministic Client.</t>
            </li>
            <li>
              <t>The server recognizes the request to be a Deterministic Request, due to the presence of the Request-Hash Option and to the 'kid' parameter of the OSCORE Option that is set to the Sender ID of the Deterministic Client.  </t>
              <t>
If the 'kid' parameter of the OSCORE Option specifies a different Sender ID than the one of the Deterministic Client, the server <bcp14>MUST NOT</bcp14> take the following steps and instead processes the request as per <xref section="8.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>.</t>
            </li>
            <li>
              <t>The server retrieves the hash H from the Request-Hash Option.</t>
            </li>
            <li>
              <t>The server derives a Recipient Context for processing the Deterministic Request. In particular:  </t>
              <ul spacing="normal">
                <li>
                  <t>The Recipient ID is the Sender ID of the Deterministic Client.</t>
                </li>
                <li>
                  <t>The Recipient Key is derived as the key K in Step 3 of <xref target="sssec-use-deterministic-requests-client-req"/>, with the hash H retrieved at Step 3 of the present <xref target="sssec-use-deterministic-requests-server-req"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The server decrypts and verifies the request using the pairwise mode of Group OSCORE as defined in <xref section="8.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and the Recipient Context from Step 4, with the difference that the server does not perform replay checks against a Replay Window (see below).</t>
            </li>
          </ol>
          <t>In case of successful verification, the server <bcp14>MUST</bcp14> also perform the following actions, before possibly delivering the request to the application.</t>
          <ul spacing="normal">
            <li>
              <t>Starting from the recovered plain CoAP request, the server <bcp14>MUST</bcp14> recompute the same hash that the client computed at Step 2 of <xref target="sssec-use-deterministic-requests-client-req"/>.  </t>
              <t>
If the recomputed hash value differs from the value retrieved from the Request-Hash Option at Step 3, the server <bcp14>MUST</bcp14> treat the request as invalid and <bcp14>MAY</bcp14> reply with an unprotected 4.00 (Bad Request) error response. The server <bcp14>MAY</bcp14> set an Outer Max-Age Option with value zero. The diagnostic payload <bcp14>MAY</bcp14> contain the string "Decryption failed".  </t>
              <t>
This prevents an attacker that guessed a valid authentication tag for a given Request-Hash value to poison caches with incorrect responses.</t>
            </li>
            <li>
              <t>The server <bcp14>MUST</bcp14> verify that the unprotected request is safe to be processed in the REST sense, i.e., that it has no side effects. If verification fails, the server <bcp14>MUST</bcp14> discard the request and <bcp14>SHOULD</bcp14> reply with a protected 4.01 (Unauthorized) error response.  </t>
              <t>
Note that some CoAP implementations may not be able to prevent that an application produces side effects from a safe request. This may incur checking whether the particular resource handler is explicitly marked as eligible for processing Deterministic Requests. An implementation may also have a configured list of requests that are known to be side-effect free, or even a pre-built list of valid hashes for all sensible requests for them, and reject any other request.  </t>
              <t>
These checks replace the otherwise present requirement that the server needs to check the Replay Window of the Recipient Context (see Step 5 above), which is inapplicable with the Recipient Context derived at Step 4 from the value of the Request-Hash Option. The reasoning is analogous to the one in <xref target="I-D.amsuess-lwig-oscore"/> to treat the potential replay as answerable, if the handled request is side-effect free.</t>
            </li>
          </ul>
        </section>
        <section anchor="ssec-use-deterministic-requests-response">
          <name>Response to a Deterministic Request</name>
          <t>When preparing a response to a Deterministic Request, the server treats the Request-Hash Option as a Class I option. The value of the Request-Hash Option <bcp14>MUST</bcp14> be equal to the value of the Request-Hash Option that was specified in the corresponding Deterministic Request. Since the client is aware of the Request-Hash value to expect in the response, the server usually elides the Request-Hash Option from the actually transmitted response.</t>
          <t>Treating the Request-Hash Option as a Class I option creates the request-response binding, thus ensuring that no mismatched responses can be successfully unprotected and verified by the client (see <xref target="oscore-nosourceauth"/>).</t>
          <t>The client <bcp14>MUST</bcp14> reject a response to a Deterministic Request, if the value of the Request-Hash Option included in the response is not equal to the value that was specified in the Request-Hash Option of that Deterministic Request.</t>
          <!--
MT: Is there any possible reason in this application of the Request-Hash option to not elide it the from the response?
-->

<t>When preparing the response, the server performs the following actions.</t>
          <ol spacing="normal" type="1"><li>
              <t>The server includes in the response a Max-Age Option with value different from zero, thus making the Deterministic Request usable for the proxy cache.</t>
            </li>
            <li>
              <t>The server preliminarily sets the Request-Hash Option with the full Request-Hash value, i.e., the same value of the Request-Hash Option that was specified in the Deterministic Request.</t>
            </li>
            <li>
              <t>If the Deterministic Request included an Inner Observe Option but not an Outer Observe Option and the resource is observable <xref target="RFC7641"/>, the server <bcp14>MUST</bcp14> include an Inner Observe Option in the response.</t>
            </li>
            <li>
              <t>The server <bcp14>MUST</bcp14> protect the response using the group mode of Group OSCORE, as defined in <xref section="7.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. This is required to ensure that the client can verify the source authentication of the response, since the "pairwise" key used for producing the Deterministic Request is actually shared among all the group members.  </t>
              <t>
Note that the Request-Hash Option is treated as Class I here.</t>
            </li>
            <li>
              <t>The server <bcp14>MUST</bcp14> include its Sender Sequence Number as Partial IV in the response and use it to build the nonce to protect the response. This is required since the server does not perform replay protection on the Deterministic Request (see <xref target="ssec-use-deterministic-requests-response"/>).</t>
            </li>
            <li>
              <t>The server uses 2.05 (Content) as Outer Code of the response even though the response is not necessarily an Observe notification <xref target="RFC7641"/>, in order to make the response cacheable.</t>
            </li>
            <li>
              <t>The server <bcp14>SHOULD</bcp14> remove the Request-Hash Option from the response before sending the response to the client, as per the general option mechanism defined in <xref target="ssec-request-hash-option"/>.</t>
            </li>
            <li>
              <t>If the Deterministic Request included an Inner Observe Option but not an Outer Observe Option, the server <bcp14>MUST NOT</bcp14> include an Outer Observe Option in the response.</t>
            </li>
          </ol>
          <t>Upon receiving the response, the client performs the following actions.</t>
          <ol spacing="normal" type="1"><li>
              <t>In case the response includes a 'kid' in the OSCORE Option, the client <bcp14>MUST</bcp14> verify it to be exactly the 'kid' of the server to which the Deterministic Request was sent, unless responses from multiple servers are expected (see <xref target="det-req-one-to-many"/>).</t>
            </li>
            <li>
              <t>In case the response does not include the Request-Hash Option, the client adds the Request-Hash Option to the response, setting the Option Value to the same Option Value of the Request-Hash Option that was included in the Deterministic Request.  </t>
              <t>
Otherwise, the client <bcp14>MUST</bcp14> reject the response if the Option Value of the Request-Hash Option is different from the Option Value of the Request-Hash Option that was included in the Deterministic Request.</t>
            </li>
            <li>
              <t>The client verifies the response using the group mode of Group OSCORE, as defined in <xref section="7.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. In particular, the client verifies the countersignature in the response, based on the 'kid' either retrieved from the OSCORE Option of the response if present therein, or otherwise of the server to which the Deterministic Request was sent to. When verifying the response, the Request-Hash Option is treated as a Class I option.</t>
            </li>
            <li>
              <t>If the Deterministic Request included an Inner Observe Option but not an Outer Observe option (see <xref target="sec-deterministic-requests-unprotected"/>), the client <bcp14>MUST</bcp14> silently ignore the Inner Observe Option in the response, which <bcp14>MUST NOT</bcp14> result in stopping the processing of the response.  </t>
              <t>
Note that this deviates from <xref section="4.1.3.5.2" sectionFormat="of" target="RFC8613"/>, but it is limited to a very specific situation, where the client and server both know exactly what happens. This does not affect the use of Group OSCORE in other situations.</t>
            </li>
          </ol>
        </section>
        <section anchor="det-req-one-to-many">
          <name>Deterministic Requests to Multiple Servers</name>
          <t>A Deterministic Request can be sent to a CoAP group, e.g., over UDP and IP multicast <xref target="I-D.ietf-core-groupcomm-bis"/>, thus targeting multiple servers at once.</t>
          <t>To simplify key derivation, such a Deterministic Request is still created in the same way as a one-to-one request and still protected with the pairwise mode of Group OSCORE, as defined in <xref target="sssec-use-deterministic-requests-client-req"/>.</t>
          <t>Note that this deviates from the recommendation in <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, since the Deterministic Request in this case is indeed intended to multiple recipients, but yet it is protected with the pairwise mode. However, this is limited to a very specific situation, where the client and servers both know exactly what happens. This does not affect the use of Group OSCORE in other situations.</t>
          <t>[ Note: If it was protected with the group mode, the request hash would need to be fed into a group key derivation just for this corner case. Furthermore, there would need to be a signature in spite of no authentication credential (and public key included therein) associated with the Deterministic Client. ]</t>
          <t>When a server receives a request from the Deterministic Client as addressed to a CoAP group, the server proceeds as defined in <xref target="sssec-use-deterministic-requests-server-req"/>, with the difference that it <bcp14>MUST</bcp14> include its own Sender ID in the response, as the 'kid' parameter of the OSCORE Option.</t>
          <t>Although it is normally optional for the server to include its Sender ID when replying to a request protected in pairwise mode, it is required in this case for allowing the client to retrieve the Recipient Context associated with the server originating the response.</t>
          <t>If a server is a member of a CoAP group, and it fails to successfully decrypt and verify an incoming Deterministic Request, then it is <bcp14>RECOMMENDED</bcp14> for that server to not reply with an error response, in case the server verifies that the Deterministic Request was sent to the CoAP group (e.g., to the associated IP multicast address) or in case the server is not able to verify that altogether.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-obtaining-info">
      <name>Obtaining Information about the Deterministic Client</name>
      <t>This section extends the joining process defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> and based on the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Upon joining the OSCORE group, this enables a new group member to obtain from the Group Manager the required information about the Deterministic Client (see <xref target="sssec-use-deterministic-requests-pre-conditions"/>).</t>
      <t>With reference to the 'key' parameter included in the Join Response defined in <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the Group_OSCORE_Input_Material object specified as its value contains also the two additional parameters 'det_senderId' and 'det_hash_alg'. These are registered in <xref target="ssec-iana-security-context-parameter-registry"/> of this document and are defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>The 'det_senderId' parameter, if present, has as value the OSCORE Sender ID assigned to the Deterministic Client by the Group Manager. This parameter <bcp14>MUST</bcp14> be present if the OSCORE group uses Deterministic Requests as defined in this document. Otherwise, this parameter <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>The 'det_hash_alg' parameter, if present, has as value the hash algorithm to use for computing the hash of a plain CoAP request, when producing the associated Deterministic Request. This parameter takes values from the "Value" column of the "COSE Algorithms" Registry <xref target="COSE.Algorithms"/>. This parameter <bcp14>MUST</bcp14> be present if the OSCORE group uses Deterministic Requests as defined in this document. Otherwise, this parameter <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
      </ul>
      <t>The same extension above applies also to the 'key' parameter included in a Key Distribution Response (see Sections <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.1.1" sectionFormat="bare"/> and <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.1.2" sectionFormat="bare"/> of <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>).</t>
      <t>With reference to the 'key' parameter included in a Signature Verification Data Response defined in <xref section="9.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the Group_OSCORE_Input_Material object specified as its value contains also the 'det_senderId' parameter defined above.</t>
    </section>
    <section removeInRFC="true" anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: when deleting this section, please also delete RFC 7942 from the references of this document.</t>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <section anchor="implementation-in-californium">
        <name>Implementation in Californium</name>
        <ul spacing="normal">
          <li>
            <t>Responsible organization: RISE Research Institutes of Sweden AB</t>
          </li>
          <li>
            <t>Implementation's name: Cacheable OSCORE for Eclipse Californium</t>
          </li>
          <li>
            <t>Available at: https://github.com/rikard-sics/californium/tree/cacheable-oscore</t>
          </li>
          <li>
            <t>Description: Implementation in Java, building on Eclipse Californium, see:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/eclipse-californium/californium</t>
              </li>
              <li>
                <t>http://eclipse.dev/californium/</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Implementation's level of maturity: prototype</t>
          </li>
          <li>
            <t>Version compatibility: -08 (which is the last time the wire format changed)</t>
          </li>
          <li>
            <t>Licensing: according to the same dual license of Eclipse Californium, i.e., according to the "Eclipse Distribution License 1.0" and the "Eclipse Public License 2.0". See:  </t>
            <ul spacing="normal">
              <li>
                <t>https://github.com/eclipse-californium/californium/blob/main/LICENSE</t>
              </li>
              <li>
                <t>https://www.eclipse.org/org/documents/edl-v10.php</t>
              </li>
              <li>
                <t>https://www.eclipse.org/legal/epl-2.0/</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Contact point: Marco Tiloca - marco.tiloca@ri.se</t>
          </li>
          <li>
            <t>Last updated: 2025-06-27</t>
          </li>
        </ul>
      </section>
      <section anchor="implementation-in-aiocoap">
        <name>Implementation in aiocoap</name>
        <ul spacing="normal">
          <li>
            <t>Implementation: aiocoap <eref target="https://christian.amsuess.com/tools/aiocoap/">https://christian.amsuess.com/tools/aiocoap/</eref></t>
          </li>
          <li>
            <t>Description: General purpose unconstrained implementation of CoAP</t>
          </li>
          <li>
            <t>Implementation maturity: Cacheable OSCORE is part of the regular release, but not well integrated in the security setup.</t>
          </li>
          <li>
            <t>Version compatibility: -08 (which is the last time the wire format changed)</t>
          </li>
          <li>
            <t>Licensing: MIT</t>
          </li>
          <li>
            <t>Contact point: Christian Amsüss</t>
          </li>
          <li>
            <t>Last updated: 2025-06-30</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations from <xref target="RFC7252"/>, <xref target="I-D.ietf-core-groupcomm-bis"/>, <xref target="RFC8613"/>, and <xref target="I-D.ietf-core-oscore-groupcomm"/> hold for this document.</t>
      <t>The following elaborates on how, compared to Group OSCORE, Deterministic Requests dispense with some of the OSCORE security properties, by just so much as to make caching possible.</t>
      <ul spacing="normal">
        <li>
          <t>A Deterministic Request is intrinsically designed to be replayed, as intended to be identically sent multiple times by multiple clients to the same server(s).  </t>
          <t>
Consistently, as per the processing defined in <xref target="sssec-use-deterministic-requests-server-req"/>, a server receiving a Deterministic Request does not perform replay checks against an OSCORE Replay Window.  </t>
          <t>
This builds on the following considerations:  </t>
          <ul spacing="normal">
            <li>
              <t>For a given request, the level of tolerance to replay risk is specific to the resource it operates upon (and therefore only known to the origin server). In general, if processing a request does not have state-changing side effects, the consequences of replay are not significant.      </t>
              <t>
Just like for what concerns the lack of source authentication (see below), the server must verify that the received Deterministic Request (more precisely, its handler) is side-effect free. The distinct semantics of the CoAP request methods can help the server make that assessment.</t>
            </li>
            <li>
              <t>Consistently with the point above, a server can choose whether it will process a Deterministic Request on a per-resource basis. It is <bcp14>RECOMMENDED</bcp14> that origin servers allow resources to explicitly configure whether Deterministic Requests are appropriate to receive, as still limited to requests that are safe to be processed in the REST sense, i.e., they do not have state-changing side effects.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Receiving a response to a Deterministic Request does not mean that the response was generated after the Deterministic Request was sent.  </t>
          <t>
However, a valid response to a Deterministic Request still contains two freshness statements:  </t>
          <ul spacing="normal">
            <li>
              <t>It is more recent than any other response from the same group member that conveys a smaller sequence number as Partial IV.</t>
            </li>
            <li>
              <t>It is more recent than the original creation of the deterministic keying material in the Group OSCORE Security Context.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Source authentication of Deterministic Requests is lost.  </t>
          <t>
Instead, the server must verify that the Deterministic Request (more precisely, its handler) is side-effect free. The distinct semantics of the CoAP request methods can help the server make that assessment.  </t>
          <t>
Just like for what concerns the acceptance of replayed Deterministic Requests (see above), the server can choose whether it will process a Deterministic Request on a per-resource basis.</t>
        </li>
        <li>
          <t>The privacy of Deterministic Requests is limited.  </t>
          <t>
An intermediary can determine that two Deterministic Requests from different clients are identical, and thus associate the different responses generated for them.  </t>
          <t>
If a server produces responses in reply to a Deterministic Request and those responses vary in size, the server can use the Padding Option defined in <xref target="sec-padding"/> in order to hide when the response is changing.</t>
        </li>
      </ul>
      <t>[ More on the verification of the Deterministic Request ]</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>Note to RFC Editor: Please replace "[RFC-XXXX]" with the RFC number of this document and delete this paragraph.</t>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-coap-options">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to add the following entries in the "CoAP Option Numbers" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <table align="center" anchor="iana-coap-option-numbers-table">
          <name>Registrations in the CoAP Option Numbers Registry</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">TBD548</td>
              <td align="left">Request-Hash</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
            <tr>
              <td align="left">TBD64988</td>
              <td align="left">Padding</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
          </tbody>
        </table>
        <t>[</t>
        <t>For the Request-Hash Option, the number suggested to IANA is 548.</t>
        <t>For the Padding Option, the option number is picked to be the highest number in the "Expert Review" range; the high option number allows it to follow practically all other options, and thus to be set when the final unpadded message length including all options is known. Therefore, the number suggested to IANA is 64988.</t>
        <t>Applications that make use of the "Experimental use" range and want to preserve that property are invited to pick the largest suitable experimental number (65532).</t>
        <t>Note that unless other high options are used, this means that padding a message adds an overhead of at least 3 bytes, i.e., 1 byte for the Option Delta/Length and two more bytes for the extended Option Delta (see <xref section="3.1" sectionFormat="of" target="RFC7252"/>). This is considered acceptable overhead, given that the application has already chosen to prefer the privacy gains of padding over wire transfer length.</t>
        <t>]</t>
      </section>
      <section anchor="ssec-iana-security-context-parameter-registry">
        <name>OSCORE Security Context Parameters Registry</name>
        <t>IANA is asked to add the following entries in the "OSCORE Security Context Parameters" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: det_senderId</t>
          </li>
          <li>
            <t>CBOR Label: 14 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: byte string</t>
          </li>
          <li>
            <t>Registry: -</t>
          </li>
          <li>
            <t>Description: OSCORE Sender ID assigned to the Deterministic Client of an OSCORE group</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: det_hash_alg</t>
          </li>
          <li>
            <t>CBOR Label: 15 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: text string / integer</t>
          </li>
          <li>
            <t>Registry: <xref target="COSE.Algorithms"/> Values (Hash)</t>
          </li>
          <li>
            <t>Description: Hash algorithm to use in an OSCORE group when producing a Deterministic Request</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="February" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) is a web transfer
   protocol for constrained devices and constrained networks.  In a
   number of use cases, constrained devices often naturally operate in
   groups (e.g., in a building automation scenario, all lights in a
   given room may need to be switched on/off as a group).  This document
   specifies the use of CoAP for group communication, including the use
   of UDP/IP multicast as the default underlying data transport.  Both
   unsecured and secured CoAP group communication are specified.
   Security is achieved by use of the Group Object Security for
   Constrained RESTful Environments (Group OSCORE) protocol.  The target
   application area of this specification is any group communication use
   cases that involve resource-constrained devices or networks that
   support CoAP.  This document replaces and obsoletes RFC 7390, while
   it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-18"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="23" month="December" year="2025"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of messages exchanged with the Constrained Application
   Protocol (CoAP) between members of a group, e.g., sent over IP
   multicast.  In particular, the described protocol defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with each other
   member of the group for pairwise OSCORE communication.  Group OSCORE
   can be used between endpoints communicating with CoAP or CoAP-
   mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-28"/>
        </reference>
        <reference anchor="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="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9175">
          <front>
            <title>Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing</title>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document specifies enhancements to the Constrained Application Protocol (CoAP) that mitigate security issues in particular use cases. The Echo option enables a CoAP server to verify the freshness of a request or to force a client to demonstrate reachability at its claimed network address. The Request-Tag option allows the CoAP server to match block-wise message fragments belonging to the same request. This document updates RFC 7252 with respect to the following: processing requirements for client Tokens, forbidding non-secure reuse of Tokens to ensure response-to-request binding when CoAP is used with a security protocol, and amplification mitigation (where the use of the Echo option is now recommended).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9175"/>
          <seriesInfo name="DOI" value="10.17487/RFC9175"/>
        </reference>
        <reference anchor="COSE.Algorithms" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for Group Object Security for Constrained RESTful Environments (Group OSCORE) Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="February" year="2026"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   request and provision keying material in group communication
   scenarios that are based on the Constrained Application Protocol
   (CoAP) and are secured with Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  This application profile
   delegates the authentication and authorization of Clients, which join
   an OSCORE group through a Resource Server acting as Group Manager for
   that group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication, and proof of possession of a key owned by the Client
   and bound to an OAuth 2.0 access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-20"/>
        </reference>
        <reference anchor="I-D.amsuess-lwig-oscore">
          <front>
            <title>OSCORE Implementation Guidance</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="29" month="April" year="2020"/>
            <abstract>
              <t>   Object Security for Constrained RESTful Environments (OSCORE) is a
   means of end-to-end protection of short request/response exchanges
   for tiny devices, typically transported using the Constrained
   Application Protocol (CoAP).  This document aims to assist
   implementers in leveraging the optimizations catered for by the
   combination of CoAP and OSCORE, and by generally providing experience
   from earlier implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-lwig-oscore-00"/>
        </reference>
        <reference anchor="I-D.ietf-core-observe-multicast-notifications">
          <front>
            <title>Observe Notifications as CoAP Multicast Responses</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server and to receive notifications as
   unicast responses upon changes of the resource state.  In some use
   cases, such as based on publish-subscribe, it would be convenient for
   the server to send a single notification addressed to all the clients
   observing the same target resource.  This document updates RFC7252
   and RFC7641, and defines how a server sends observe notifications as
   response messages over multicast, synchronizing all the observers of
   the same resource on the same shared Token value.  Besides, this
   document defines how the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE) can be used to
   protect multicast notifications end-to-end between the server and the
   observer clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-13"/>
        </reference>
        <reference anchor="I-D.ietf-core-multicast-notifications-proxy">
          <front>
            <title>Using Proxies for Observe Notifications as CoAP Multicast Responses</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server and to receive notifications as
   unicast responses upon changes of the resource state.  Instead of
   sending a distinct unicast notification to each different client, a
   server can alternatively send a single notification as a response
   message over multicast, to all the clients observing the same target
   resource.  When doing so, the security protocol Group Object Security
   for Constrained RESTful Environments (Group OSCORE) can be used to
   protect multicast notifications end-to-end between the server and the
   observer clients.  This document describes how multicast
   notifications can be used in network setups that leverage a proxy,
   e.g., in order to accommodate clients that are not able to directly
   listen to multicast traffic.



   The present version -00 refers to version -12 of draft-ietf-core-
   observe-multicast-notifications, which includes content about proxies
   that is also included in the present document.  Such content will be
   removed from draft-ietf-core-observe-multicast-notifications in its
   next revision.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-multicast-notifications-proxy-00"/>
        </reference>
        <reference anchor="I-D.ietf-core-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>NeuralAgent GmbH</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
            </author>
            <date day="16" month="September" year="2025"/>
            <abstract>
              <t>   This document defines a protocol for exchanging DNS queries (OPCODE
   0) over the Constrained Application Protocol (CoAP).  These CoAP
   messages can be protected by (D)TLS-Secured CoAP (CoAPS) or Object
   Security for Constrained RESTful Environments (OSCORE) to provide
   encrypted DNS message exchange for constrained devices in the
   Internet of Things (IoT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-dns-over-coap-20"/>
        </reference>
        <reference anchor="I-D.ietf-core-responses">
          <front>
            <title>CoAP: Non-traditional response forms</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="12" month="January" year="2026"/>
            <abstract>
              <t>   In CoAP as defined by RFC 7252, responses are always unicast back to
   a client that posed a request.  The present memo describes two forms
   of responses that go beyond that model.

   The design spaces for the new CoAP Options proposed to represent
   these responses are now sufficiently understood that they can be
   developed to standards-track specifications, either in this document
   or by transferring the specification for an Option to a document that
   that Option closely works with.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-responses-00"/>
        </reference>
        <reference anchor="I-D.ietf-ace-oscore-gm-admin">
          <front>
            <title>Admin Interface for the OSCORE Group Manager</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="23" month="February" year="2026"/>
            <abstract>
              <t>   Group communication for the Constrained Application Protocol (CoAP)
   can be secured using Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  A Group Manager is responsible for
   handling the joining of new group members, as well as for managing
   and distributing the group keying material.  This document defines a
   RESTful admin interface at the Group Manager that allows an
   Administrator entity to create and delete OSCORE groups, as well as
   to retrieve and update their configuration.  The ACE framework for
   Authentication and Authorization is used to enforce authentication
   and authorization of the Administrator at the Group Manager.
   Protocol-specific transport profiles of ACE are used to achieve
   communication security, proof of possession, and server
   authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oscore-gm-admin-15"/>
        </reference>
        <reference anchor="SW-EPIV">
          <front>
            <title>Star Wars</title>
            <author initials="G." surname="Lucas" fullname="George Lucas">
              <organization/>
            </author>
            <date year="1977"/>
          </front>
          <seriesInfo name="Lucasfilm Ltd." value=""/>
        </reference>
        <reference anchor="ICN-paper" target="https://ieeexplore.ieee.org/document/9525000">
          <front>
            <title>Group Communication with OSCORE: RESTful Multiparty Access to a Data-Centric Web of Things</title>
            <author initials="C." surname="Gündoğan" fullname="Cenk Gündoğan">
              <organization/>
            </author>
            <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
              <organization/>
            </author>
            <author initials="T. C." surname="Schmidt" fullname="Thomas C. Schmidt">
              <organization/>
            </author>
            <author initials="M." surname="Wählisch" fullname="Matthias Wählisch">
              <organization/>
            </author>
            <date year="2021" month="October"/>
          </front>
        </reference>
        <reference anchor="DNS-CoAP-paper" target="https://doi.org/10.1145/3609423">
          <front>
            <title>Securing Name Resolution in the IoT: DNS over CoAP</title>
            <author initials="M. S." surname="Lenders" fullname="Martine S. Lenders">
              <organization/>
            </author>
            <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
              <organization/>
            </author>
            <author initials="C." surname="Gündogan" fullname="Cenk Gündogan">
              <organization/>
            </author>
            <author initials="M." surname="Nawrocki" fullname="Marcin Nawrocki">
              <organization/>
            </author>
            <author initials="T. C." surname="Schmidt" fullname="Thomas C. Schmidt">
              <organization/>
            </author>
            <author initials="M." surname="Wählisch" fullname="Matthias Wählisch">
              <organization/>
            </author>
            <date year="2023" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 695?>

<section anchor="sec-padding">
      <name>Padding</name>
      <t>As discussed in <xref target="sec-security-considerations"/>, information can be leaked by the length of a response or, in different contexts, of a request.</t>
      <t>In order to hide such information and mitigate the impact on privacy, the new CoAP Padding Option is defined (see <xref target="ssec-padding-option"/>), as a means to increase the length of a message without changing its meaning. The option can be used with any CoAP transport, but it is especially useful when using OSCORE or Group OSCORE, since they do not provide any padding of their own.</t>
      <t>Before choosing to pad a message by using the Padding Option, application designers should consider whether they can arrange for common message variants to have the same length, by picking a suitable content representation; the canonical example here is expressing "yes" and "no" with "y" and "n", respectively.</t>
      <section anchor="ssec-padding-option">
        <name>The Padding Option</name>
        <t>The option is called Padding and its properties are summarized in <xref target="padding-table"/>, which extends Table 4 of <xref target="RFC7252"/>. The option is Elective, Safe-to-Forward, not part of the Cache-Key, and repeatable. The option may be repeated, as that may be the only way to achieve a certain total length for the padded message.</t>
        <table align="center" anchor="padding-table">
          <name>The Padding 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">TBD64988</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">Padding</td>
              <td align="left">opaque</td>
              <td align="left">any</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>The Padding Option is treated as Class E for OSCORE <xref target="RFC8613"/>, which makes it indistinguishable from other Class E options or from the message payload to third parties.</t>
      </section>
      <section anchor="using-and-processing-the-padding-option">
        <name>Using and Processing the Padding Option</name>
        <t>A server that produces different responses of different length for a given class of requests might wish to produce responses of consistent length, typically to hide the variation from anyone but the intended recipient. In such a case, the server can pick a length that all possible responses can be padded to, and set the Padding Option with a suitable all-zero Option Value in all responses to that class of requests.</t>
        <t>Likewise, a client can decide on a class of requests that it pads to reach a consistent length. This has considerably less efficacy and applicability when applied to Deterministic Requests. That is: an external observer can group together different requests even if they are of the same length; and padding would hinder convergence on a single Consensus Request, thus requiring all users of the same Group OSCORE Security Context to agree in advance on the same total length for the requests.</t>
        <t>Any party receiving a Padding Option <bcp14>MUST</bcp14> ignore it.
In particular, a server <bcp14>MUST NOT</bcp14> make its choice of padding a response dependent on any padding present in the corresponding request.
A means driven by the client for coordinating response padding is out of scope for this document.</t>
        <t>Proxies that see a Padding Option <bcp14>MAY</bcp14> discard it.</t>
      </section>
    </section>
    <section anchor="sec-ticket-requests">
      <name>Simple Cacheability using Ticket Requests</name>
      <t>Building on the concept of Phantom Requests and Informative Responses defined in <xref target="I-D.ietf-core-observe-multicast-notifications"/>,
basic caching is already possible without building a Deterministic Request.</t>
      <t>The approach discussed in this appendix is not provided for application. In fact, it is efficient only when dealing with very large representations and no OSCORE Inner block-wise mode (which is inefficient for other reasons), or when dealing with Observe notifications (which are already well covered in <xref target="I-D.ietf-core-observe-multicast-notifications"/>).</t>
      <t>Rather, it is more provided as a "mental exercise" for the authors and interested readers to bridge the gap between this document and <xref target="I-D.ietf-core-observe-multicast-notifications"/>.</t>
      <t>That is, instead of replying to a client with a regular response, a server can send an Informative Response, defined as a protected 5.03 (Service Unavailable) error message. The payload of the Informative Response contains the Phantom Request, which is a Ticket Request in the broader terminology used by this document.</t>
      <t>Unlike a Deterministic Request, a Phantom Request is protected with the group mode of Group OSCORE.
Instead of verifying a hash, the client will be able to see from the countersignature of later responses that this was indeed the request that the server is replying to.
The client also verifies that the request URI is identical between the original request and the Ticket Request.</t>
      <t>The remaining exchange can largely play out like in <xref target="I-D.ietf-core-multicast-notifications-proxy"/>'s "Example with a Proxy and with Group OSCORE". That is, the client first sends the Phantom Request to the proxy (but, lacking a <tt>tp_info</tt>, without including a Listen-To-Multicast-Responses Option). Then, the proxy forwards the Phantom Request to the server, due to the lack of the Listen-To-Multicast-Responses Option.</t>
      <t>The server then produces a regular response and includes an Outer Max-Age Option with Option Value different from zero. Note that there is no point in including an Inner Max-Age Option, as the client could not pin it in time.</t>
      <t>When a second, different client later asks for the same resource at the same server, its new request uses a different 'kid' and 'Partial IV' than the first client's. Thus, the new request produces a cache miss at the proxy and is forwarded to the server, which replies with the same Ticket Request provided to the first client. After that, when the second client sends the Ticket Request, a cache hit at the proxy will be produced, and the Ticket Request can be served from the proxy's cache.</t>
      <t>When multiple proxies are in use, or the response has expired from the proxy's cache, the server receives the Ticket Request multiple times. It is a matter of perspective whether the server treats that as an acceptable replay (given that this whole mechanism only makes sense on requests free of side effects), or whether it is conceptualized as having an internal proxy where the request produces a cache hit.</t>
    </section>
    <section anchor="det-requests-for-notif">
      <name>Application for More Efficient End-to-End Protected Multicast Notifications</name>
      <t>The specification <xref target="I-D.ietf-core-observe-multicast-notifications"/> defines how a CoAP server can serve all clients observing a same resource at once, by sending notifications over multicast. As described in <xref target="I-D.ietf-core-multicast-notifications-proxy"/>, the approach supports the possible presence of intermediaries such as proxies, also if Group OSCORE is used to protect notifications end-to-end.</t>
      <t>However, comparing the "Example with a Proxy" in <xref section="6" sectionFormat="of" target="I-D.ietf-core-multicast-notifications-proxy"/> and the "Example with a Proxy and with Group OSCORE" in <xref section="7" sectionFormat="of" target="I-D.ietf-core-multicast-notifications-proxy"/> shows that, when using Group OSCORE, more requests need to reach the server. This is because every client originally protects its Observation request individually, and thus it needs a custom response served to obtain the Phantom Request as a Ticket Request.</t>
      <t>If the clients send their requests as the same Deterministic Request, then the server can use these requests as Ticket Requests as well. Thus, there is no need for the server to provide a same Phantom Request to each client.</t>
      <t>Instead, the server can send a single, unprotected Informative Response - very much like in the example without Group OSCORE - hence setting the proxy up and optionally providing also the latest notification along the way. The proxy can thus be configured by the server following the first request from the clients, after which it has an active observation and a fresh cache entry in time for the second client to arrive. This is shown by the "Example with a Proxy and with Deterministic Requests" in <xref section="8" sectionFormat="of" target="I-D.ietf-core-multicast-notifications-proxy"/>.</t>
    </section>
    <section anchor="open-questions">
      <name>Open Questions</name>
      <ul spacing="normal">
        <li>
          <t>Is "deterministic encryption" something worthwhile to consider in COSE?  </t>
          <t>
COSE would probably specify something more elaborate for the KDF
(the current KDF round is the pairwise mode's;
COSE would probably run through KDF with a KDF context structure).  </t>
          <t>
COSE would give a header parameter name to the Request-Hash
(which, for the purpose of OSCORE Deterministic Requests, would put back into Request-Hash by extending the option compression function across the two options).  </t>
          <t>
Conceptually, they should align well, and the implementation changes are likely limited to how the KDF is run.</t>
        </li>
        <li>
          <t>An unprotection failure from a mismatched hash will not be part of the ideally constant-time code paths that otherwise lead to AEAD unprotect failures. Is that a problem?  </t>
          <t>
After all, it does tell the attacker that they did succeed in producing a valid MAC (it's just not doing it any good, because this key is only used for Deterministic Requests and thus also needs to pass the Request-Hash check).</t>
        </li>
      </ul>
      <!--
MT: This second bullet point seems something that can already be said in the Security Considerations section.
-->

</section>
    <section anchor="unsorted-further-ideas">
      <name>Unsorted Further Ideas</name>
      <ul spacing="normal">
        <li>
          <t>We could allow clients to elide all other options than the Request-Hash Option, and elide the payload,
if they have reason to believe that they can produce a cache hit with the abbreviated request alone.  </t>
          <t>
This may prove troublesome in terms of cache invalidation
(the server would have to use short-lived responses to indicate that it does need the full request,
or we would need special handling for error responses,
or criteria by which proxies do not even forward these if they do not have a response at hand).  </t>
          <t>
That may be more trouble than it is worth without a strong use case (say, of complex but converging FETCH requests).  </t>
          <t>
Hashes could also be used in a truncated form for that
-- should we suggest SHA-256/128 as a default? (Its birthday paradox starts to kick in at around 2<sup>64</sup> deterministic requests).</t>
        </li>
      </ul>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This appendix includes test vectors for an example where the method defined in this document is used.</t>
      <t>In the following, a CoAP Client C and a CoAP Server S are member of the same OSCORE group, and they exchange Deterministic Requests and corresponding responses.</t>
      <t>Note that, while they are consistent with the presented example, the values of the Token and Message ID in the CoAP messages are only indicative, as they are subject to change throughout different message exchanges.</t>
      <t>The considered authentication credentials of the CoAP Server S and of the Group Manager are CWT Claims Sets (CCSs) <xref target="RFC8392"/>. Both authentication credentials as well as the aad_array used through the Group OSCORE processing are also expressed in CBOR extended diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/> ("diagnostic notation").</t>
      <section anchor="setup">
        <name>Setup</name>
        <t>The Group OSCORE Security Context specifies the following parameters.</t>
        <ul spacing="normal">
          <li>
            <t>AEAD Algorithm: AES-CCM-16-64-128 (10)</t>
          </li>
          <li>
            <t>HKDF Algorithm: HKDF SHA-256 (5)</t>
          </li>
          <li>
            <t>Group Encryption Algorithm: AES-CCM-16-64-128 (10)</t>
          </li>
          <li>
            <t>Signature Algorithm: EdDSA (used with curve Ed25519) (-8, 6)</t>
          </li>
          <li>
            <t>Pairwise Key Agreement Algorithm: ECDH-SS-HKDF-256 (used with curve X25519) (-27, 4)</t>
          </li>
          <li>
            <t>Hash algorithm for Deterministic Requests: SHA-256 (-16)</t>
          </li>
          <li>
            <t>Master Secret (16 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x0102030405060708090a0b0c0d0e0f10
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Master Salt (8 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x9e7ca92223786340
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>ID Context (2 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xdd11
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Deterministic Client's Sender ID (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xdc
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Server's Sender ID (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x52
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Server's authentication credential as CCS (diagnostic notation):</t>
          </li>
        </ul>
        <sourcecode type="cbor-diag"><![CDATA[
   { 1: "coaps://server.example.com",
     2: "sender",
     3: "coaps://client.example.org",
     4: 1879067471,
     8: {
          1: {
                1: 1,
                3: -8,
               -1: 6,
               -2: h'77ec358c1d344e41ee0e87b8383d23a2
                     099acd39bdf989ce45b52e887463389b'
             }
        }
   }
]]></sourcecode>
        <ul spacing="normal">
          <li>
            <t>Server's authentication credential as CCS (serialization) (118 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xa501781a636f6170733a2f2f7365727665722e6578616d706c652e636f6d
     026673656e64657203781a636f6170733a2f2f636c69656e742e6578616d
     706c652e6f7267041a70004b4f08a101a401010327200621582077ec358c
     1d344e41ee0e87b8383d23a2099acd39bdf989ce45b52e887463389b
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Server's private key (serialization) (32 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x857eb61d3f6d70a278a36740d132c099
     f62880ed497e27bdfd4685fa1a304f26
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Group Manager's authentication credential as CCS (diagnostic notation):</t>
          </li>
        </ul>
        <sourcecode type="cbor-diag"><![CDATA[
   { 1: "coaps://mysite.example.com",
     2: "groupmanager",
     3: "coaps://domain.example.org",
     4: 2879067471,
     8: {
          1: {
               1: 1,
               3: -8,
              -1: 6,
              -2: h'cde3efd3bc3f99c9c9ee210415c6cba55
                    061b5046e963b8a58c9143a61166472'
            }
        }
   }
]]></sourcecode>
        <ul spacing="normal">
          <li>
            <t>Group Manager's authentication credential as CCS (serialization) (124 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xa501781a636f6170733a2f2f6d79736974652e6578616d706c652e636f6d
     026c67726f75706d616e6167657203781a636f6170733a2f2f646f6d6169
     6e2e6578616d706c652e6f7267041aab9b154f08a101a401010327200621
     5820cde3efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a58c9143a
     61166472
]]></artwork>
      </section>
      <section anchor="ssec-test-vectors-det-req-1">
        <name>Deterministic Request</name>
        <t>The client generates an unprotected CoAP GET request, which contains only the Uri-Path option with value "helloWorld". The request is Confirmable, with a Token length equal to 8 bytes.</t>
        <t>Unprotected CoAP request (23 bytes):</t>
        <artwork><![CDATA[
0x48019483f0aeef1c796812a0ba68656c6c6f576f726c64

0x48 (Version: 1, Type: CON, Token Length: 8 - 1 byte)
  01 (Code: GET - 1 byte)
  9483 (Message ID - 2 bytes)
  f0aeef1c796812a0 (Token - 8 bytes)
  ba 68656c6c6f576f726c64 (Uri-path:"helloWorld" - 11 bytes)
]]></artwork>
        <t>The client protects the CoAP request above to produce a Deterministic Request. When doing so, the client does not include an Inner Observe option.</t>
        <t> </t>
        <t>The following information is used to compute the Request-Hash value.</t>
        <ul spacing="normal">
          <li>
            <t>Deterministic Client's Sender Key (16 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x761c3081b8d8329790a8b321b3b4c3a4
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>aad_array (diagnostic notation):</t>
          </li>
        </ul>
        <sourcecode type="cbor-diag"><![CDATA[
   [1,
    [10, 10, -8, -27],
    h'dc',
    h'00',
    h'',
    h'dd11',
    h'190002dd11dc',
    h'',
    h'a501781a636f6170733a2f2f6d79736974652e6578616d706c652e636f6d
      026c67726f75706d616e6167657203781a636f6170733a2f2f646f6d6169
      6e2e6578616d706c652e6f7267041aab9b154f08a101a401010327200621
      5820cde3efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a58c9143a
      61166472'
   ]
]]></sourcecode>
        <ul spacing="normal">
          <li>
            <t>aad_array (serialization) (150 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x8901840a0a27381a41dc41004042dd1146190002dd11dc40587ca501781a
     636f6170733a2f2f6d79736974652e6578616d706c652e636f6d026c6772
     6f75706d616e6167657203781a636f6170733a2f2f646f6d61696e2e6578
     616d706c652e6f7267041aab9b154f08a101a4010103272006215820cde3
     efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a58c9143a61166472
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Plaintext (12 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x01ba68656c6c6f576f726c64
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Request-Hash value (32 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x404b3a7c9f8c878a0b5246cca71e3926
     f0a8cebefdcabbc80e79579d5a1ee17d
]]></artwork>
        <t> </t>
        <t>The following information is used to produce the protected Deterministic Request.</t>
        <ul spacing="normal">
          <li>
            <t>Partial IV (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x00
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>kid (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xdc
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>kid context (2 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xdd11
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>AAD (serialization) (163 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
    0x8368456e6372797074304058968901840a0a27381a41dc41004042dd114619
      0002dd11dc40587ca501781a636f6170733a2f2f6d79736974652e6578616d
      706c652e636f6d026c67726f75706d616e6167657203781a636f6170733a2f
      2f646f6d61696e2e6578616d706c652e6f7267041aab9b154f08a101a40101
      03272006215820cde3efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a
      58c9143a61166472
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Plaintext (12 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x01ba68656c6c6f576f726c64
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Encryption Key (16 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x5d4671f0d12d27a59dec68c2e2ebcc88
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Nonce (13 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x46eb80969ab7389b084dd6f996
]]></artwork>
        <t> </t>
        <t>From the previous parameter, the following is derived:</t>
        <ul spacing="normal">
          <li>
            <t>OSCORE option value (6 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x190002dd11dc
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Request-Hash option value (32 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x404b3a7c9f8c878a0b5246cca71e3926
     f0a8cebefdcabbc80e79579d5a1ee17d
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Ciphertext (20 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x65bcd5d5edf413497bfdeec8975e2acafa702b45
]]></artwork>
        <t>From there, the protected CoAP request as Deterministic Request (76 bytes):</t>
        <artwork><![CDATA[
0x48059483f0aeef1c796812a096190002dd11dced010e13404b3a7c9f8c878a
  0b5246cca71e3926f0a8cebefdcabbc80e79579d5a1ee17dff65bcd5d5edf4
  13497bfdeec8975e2acafa702b45

0x48 (version:1, type: CON, Token Length: 8 - 1 byte)
  05 (Code: FETCH - 1 byte)
  9483 (Message ID - 2 bytes)
  f0aeef1c796812a0 (Token - 8 bytes)
  96 190002dd11dc (OSCORE option - 7 bytes)
  ed 010e 13 404b3a7c9f8c878a0b5246cca71e3926f0a8cebefdcabbc8
             0e79579d5a1ee17d (Request-Hash option - 36 bytes)
  ff (payload marker - 1 byte)
  65bcd5d5edf413497bfdeec8975e2acafa702b45 (payload - 20 bytes)
]]></artwork>
      </section>
      <section anchor="response-to-deterministic-request">
        <name>Response to Deterministic Request</name>
        <t>The server responds to the first request with an ACK message, to which a 2.05 (Content) response indicating a Max-Age of 3600 seconds is piggybacked. The payload of the response is the ASCII-encoded string ". ID: 42".</t>
        <t>Unprotected CoAP response (61 bytes):</t>
        <artwork><![CDATA[
0x68459483f0aeef1c796812a0d2010e10ed010913404b3a7c9f8c878a0b5246
  cca71e3926f0a8cebefdcabbc80e79579d5a1ee17dff2e2049443a203432

0x68 (version: 1, type: ACK, Token Length: 8 - 1 byte)
  45 (Code: 2.05 - 1 byte)
  9483 (Message ID - 2 bytes)
  f0aeef1c796812a0 (Token - 8 bytes)
  d2 01 0e10 (Max-Age:3600 - 4 bytes)
  ed 0109 13 404b3a7c9f8c878a0b5246cca71e3926f0a8cebefdcabbc8
             0e79579d5a1ee17d (Request-Hash - 36 bytes)
  ff (payload marker - 1 byte)
  2e2049443a203432 (payload - 8 bytes)
]]></artwork>
        <t>The server protects the CoAP response above as follows. When doing so, the server: does not include an Inner Observe option; includes its own Sender ID in the 'kid' of the OSCORE option; elides the Request-Hash option from the response.</t>
        <t> </t>
        <t>The following information is used to protect the response.</t>
        <ul spacing="normal">
          <li>
            <t>Partial IV (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x00
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>kid (1 byte):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x52
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>kid context (2 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xdd11
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>aad_array (diagnostic notation):</t>
          </li>
        </ul>
        <sourcecode type="cbor-diag"><![CDATA[
   [1,
    [10, 10, -8, -27],
    h'dc',
    h'00',
    h'ed011713404b3a7c9f8c878a0b5246cca71e3926f0a8cebefdcabbc80e79
      579d5a1ee17d',
    h'dd11',
    h'290052',
    h'a501781a636f6170733a2f2f7365727665722e6578616d706c652e636f6d
      026673656e64657203781a636f6170733a2f2f636c69656e742e6578616d
      706c652e6f7267041a70004b4f08a101a401010327200621582077ec358c
      1d344e41ee0e87b8383d23a2099acd39bdf989ce45b52e887463389b',
    h'a501781a636f6170733a2f2f6d79736974652e6578616d706c652e636f6d
      026c67726f75706d616e6167657203781a636f6170733a2f2f646f6d6169
      6e2e6578616d706c652e6f7267041aab9b154f08a101a401010327200621
      5820cde3efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a58c9143a
      61166472'
   ]
]]></sourcecode>
        <ul spacing="normal">
          <li>
            <t>aad_array (serialization) (303 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x8901840a0a27381a41dc41005824ed011713404b3a7c9f8c878a0b5246cc
     a71e3926f0a8cebefdcabbc80e79579d5a1ee17d42dd11432900525876a5
     01781a636f6170733a2f2f7365727665722e6578616d706c652e636f6d02
     6673656e64657203781a636f6170733a2f2f636c69656e742e6578616d70
     6c652e6f7267041a70004b4f08a101a401010327200621582077ec358c1d
     344e41ee0e87b8383d23a2099acd39bdf989ce45b52e887463389b587ca5
     01781a636f6170733a2f2f6d79736974652e6578616d706c652e636f6d02
     6c67726f75706d616e6167657203781a636f6170733a2f2f646f6d61696e
     2e6578616d706c652e6f7267041aab9b154f08a101a40101032720062158
     20cde3efd3bc3f99c9c9ee210415c6cba55061b5046e963b8a58c9143a61
     166472
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>AAD (serialization) (317 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x8368456e6372797074304059012f8901840a0a27381a41dc41005824ed01
     1713404b3a7c9f8c878a0b5246cca71e3926f0a8cebefdcabbc80e79579d
     5a1ee17d42dd11432900525876a501781a636f6170733a2f2f7365727665
     722e6578616d706c652e636f6d026673656e64657203781a636f6170733a
     2f2f636c69656e742e6578616d706c652e6f7267041a70004b4f08a101a4
     01010327200621582077ec358c1d344e41ee0e87b8383d23a2099acd39bd
     f989ce45b52e887463389b587ca501781a636f6170733a2f2f6d79736974
     652e6578616d706c652e636f6d026c67726f75706d616e6167657203781a
     636f6170733a2f2f646f6d61696e2e6578616d706c652e6f7267041aab9b
     154f08a101a4010103272006215820cde3efd3bc3f99c9c9ee210415c6cb
     a55061b5046e963b8a58c9143a61166472
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Plaintext (14 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x45d2010e10ff2e2049443a203432
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Encryption Key (16 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xa8c8b7db5d05cfc7faa2bb1afaca6c2f
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Nonce (13 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x46eb80969ab73815084dd6f996
]]></artwork>
        <t> </t>
        <t>From the previous parameter, the following is derived:</t>
        <ul spacing="normal">
          <li>
            <t>OSCORE option value (3 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x290052
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Request-Hash option value (32 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x404b3a7c9f8c878a0b5246cca71e3926
     f0a8cebefdcabbc80e79579d5a1ee17d
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Ciphertext (22 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xcbc7356c84c10b626fef8bd57ed2dfaeec175f8e44e1
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Plain signature (64 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x44879f32ab6e8533fd89dedada6e104d10d88ea42fa6d0
     c8e7ccb21e0088e0226ef98405a84f13525a22fd7cf327
     9f3b1cee59af3f45e96d38c48f38a0217405
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Signature Encryption Key (16 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0x85ca7c0bc5b8ea2e267b203dc3b71ce6
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Signature Keystream (64 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xf6161f5ea4d6375819924cbcac00f45a469c517f0a435d
     e590b7a242064d5afc092fa2290b480166701088a1c4ad
     06d3e933a3f21a39b3204f7159b977193ce8
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Encrypted Signature (64 bytes):</t>
          </li>
        </ul>
        <artwork><![CDATA[
   0xb291806c0fb8b26be41b9266766ee4175644dfdb25e58d
     2d777b105c06c5bade67d6262ca30712342a3275dd378a
     99e8f5ddfa5d257c5a4d77b5d681d73848ed
]]></artwork>
        <t> </t>
        <t>From there, the protected CoAP response (106 bytes):</t>
        <artwork><![CDATA[
0x68459483f0aeef1c796812a093290052520e10ffcbc7356c84c10b626fef8b
  d57ed2dfaeec175f8e44e1b291806c0fb8b26be41b9266766ee4175644dfdb
  25e58d2d777b105c06c5bade67d6262ca30712342a3275dd378a99e8f5ddfa
  5d257c5a4d77b5d681d73848ed

0x68 (version:1, type: ACK, Token Length: 8 - 1 byte)
  45 (Code: 2.05 - 1 byte)
  9483 (Message ID - 2 bytes)
  f0aeef1c796812a0 (Token - 8 bytes)
  93 290052 (OSCORE option - 4 bytes)
  52 0e10 (Max age option - 3 bytes)
  ff (payload marker - 1 byte)
  cbc7356c84c10b626fef8bd57ed2dfaeec175f8e44e1b29180
    6c0fb8b26be41b9266766ee4175644dfdb25e58d2d777b10
    5c06c5bade67d6262ca30712342a3275dd378a99e8f5ddfa
    5d257c5a4d77b5d681d73848ed (payload - 86 bytes)
]]></artwork>
      </section>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Updated title.</t>
          </li>
          <li>
            <t>Revised abstract and first part of the introduction.</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Suggested values for IANA registrations.</t>
          </li>
          <li>
            <t>Removed changelog for the individual submission document.</t>
          </li>
          <li>
            <t>Minor clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Martine Lenders"/>, <contact fullname="Michael Richardson"/>, <contact fullname="Jim Schaad"/>, and <contact fullname="Göran Selander"/> for their comments and feedback.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
VReErYQbjKwopZrsG/Z1USgdJR4IsMvf071mGzxzJX1k3KX8ERtyDsv/dTTq
RQtk1OoOGIjyk1K81Smm9hAtKSHUg2+FP5V71SR8JOHGRBPJPto3CKagMJHs
9EaYxYZhg80hmhlwRReGkfwT10IoCH4SowfjC3EM648MTyxRzyglQY5Et3ht
0Ccq+UpbChNopMI8g1tr8+uYBzJVMko07d2wEIoh8BccZMIveVSK6UeHEQXt
fgqBtR3iScVbcpC000J8vuSFRyYhrAPf6SIdYM8Wojxy7EYkrwGEc7XYmprM
yyA0vIi2Q5sT24O9JaxOsU7AwYU3WUnNUVKWYwBWTkeSOM2dZucey6gIU2FM
roYXAO0jKVQbrFXDqB7knKZA+AcXkKEiGWyPPJZhBIyC1SQOyCpIc9ZKjcMu
lmqdJSh6hg8iF+VyqvCyTAcQVjkARLt8IxGiOEefBZYdqByzRMShaesm7LZx
bYoNUQz6zzqnCKkpXqHwYpl1FppDAZghf6sNGnW+w73ISZ0wr4tNhkVs4VX7
EdN9nMMsCMzYpc8yC1UxZczpKa0caZwbYghl11Qcsh7PTzVrvdcuykjuJUzH
CE9tsrK9HFeK9e/Wa5WbIvdPnwJYkOxAZwDvWaNhCjdzTZx1xFF8m/fN2Whu
Excr1q/a0ZVaaryUb7gYpR1gGBVIdn5nZAvTGKYocxiq9Rcgli725/lLdA7/
vod/38C/7/C/qImYf/6CoZc1wOov2GsJBeVfAFxLhQL5L7DK9devxqMZfBhV
/g2g9Bc4gMI8wr+Qb48eOAbWBloOrPLpNPpqH0Dci+jXR02Idnz+63Ng1Cjf
29H7X7/fFACPdvTm128yOjyd/d2v39lTnxyxk+TXR+hb0vmRKJR1i6N5kHBc
Z2XqGyrXLHRovu25wgLz2ppXbad3Og8leju2LrHhsnRy0LsstuRl9d+j48nE
b1QOgjkHTEPjJcP8YrTUglJMdtiyIU+OVr5GU4XuL2ryreRvuCBye+ACnh7o
SCtQHjkXEw4gO5OkCvYLut4vUXSRpGWWv6BjArd+lZGYRKkgbNm2gnDA/i1+
8cwu9KJouLQ2601rjpcjHxdUJW8d2mXwNbhRuTsXUa5ZzuQh+FEnWCYVz6Xo
HLQw9cEpmzYVvtN+oWxCPVO3X5PHRwC8EhZ2zC5p4woHMJ2wTSxpNaj1OpeA
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

-->

</rfc>
