<?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.43 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-key-limits-08" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Key Usage Limits for OSCORE">Key Usage Limits for OSCORE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-limits-08"/>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2026" month="September" day="07"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>Object Security for Constrained RESTful Environments (OSCORE) uses AEAD algorithms to ensure confidentiality and integrity of exchanged messages. Due to known issues allowing forgery attacks against AEAD algorithms, limits should be followed on the number of times a specific key is used for encryption or decryption. Among other reasons, approaching key usage limits requires updating the OSCORE keying material before communications can securely continue. This document defines how two OSCORE peers can follow these key usage limits and what steps they should take to preserve the security of their communications.</t>
    </abstract>
    <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/oscore-key-limits"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> provides end-to-end protection of CoAP <xref target="RFC7252"/> messages at the application-layer, ensuring message confidentiality and integrity, replay protection, as well as binding of response to request between a sender and a recipient.</t>
      <t>OSCORE uses AEAD algorithms to provide confidentiality and integrity of messages exchanged between two peers. Due to known issues allowing forgery attacks against AEAD algorithms, limits should be followed on the number of times a specific key is used to perform encryption or decryption <xref target="I-D.irtf-cfrg-aead-limits"/>.</t>
      <t>The OSCORE specification <xref target="RFC8613"/> does not consider such key usage limits. However, should they be exceeded, an adversary may break the security properties of the used AEAD algorithm, such as message confidentiality and integrity, e.g., by performing a message forgery attack. This and other reasons require that peers who are approaching the key usage limits update the OSCORE keying material before communications can securely continue. This document defines what steps an OSCORE peer should take to preserve the security of its communications, by stopping the use of an OSCORE Security Context shared with another peer when approaching the key usage limits.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
        <t>Readers are expected to be familiar with the terms and concepts related to CoAP <xref target="RFC7252"/> and OSCORE <xref target="RFC8613"/>.</t>
      </section>
    </section>
    <section anchor="aead-key-usage-limits-in-oscore">
      <name>AEAD Key Usage Limits in OSCORE</name>
      <t>This section details how key usage limits for AEAD algorithms can be considered when using OSCORE. In particular, it discusses specific limits for common AEAD algorithms used with OSCORE; parameters to track associated with an OSCORE Security Context; and additions to the OSCORE message processing.</t>
      <section anchor="problem-overview">
        <name>Problem Overview</name>
        <t>The OSCORE security protocol <xref target="RFC8613"/> uses AEAD algorithms to provide integrity and confidentiality of messages, as exchanged between two peers sharing an OSCORE Security Context.</t>
        <t>When processing messages with OSCORE, each peer should follow specific limits as to the number of times it uses a specific key. This applies separately to the Sender Key used to encrypt outgoing messages, and to the Recipient Key used to decrypt and verify incoming protected messages.</t>
        <t>Exceeding these limits may allow an adversary to break the security properties of the AEAD algorithm, such as message confidentiality and integrity, e.g., by performing a message forgery attack.</t>
        <t>The following refers to the two parameters 'q' and 'v' introduced in <xref target="I-D.irtf-cfrg-aead-limits"/>, to use when deploying an AEAD algorithm.</t>
        <ul spacing="normal">
          <li>
            <t>'q': this parameter has as value the number of messages protected with a specific key, i.e., the number of times the AEAD algorithm has been invoked to encrypt data with that key.</t>
          </li>
          <li>
            <t>'v': this parameter has as value the number of alleged forgery attempts that have been made against a specific key, i.e., the number of failed decryptions that have occurred with the AEAD algorithm for that key.</t>
          </li>
        </ul>
        <t>When a peer uses OSCORE:</t>
        <ul spacing="normal">
          <li>
            <t>The key used to protect outgoing messages is its Sender Key from its Sender Context.</t>
          </li>
          <li>
            <t>The key used to decrypt and verify incoming messages is its Recipient Key from its Recipient Context.</t>
          </li>
        </ul>
        <t>Both keys are derived as part of the establishment of the OSCORE Security Context, as defined in <xref section="3.2" sectionFormat="of" target="RFC8613"/>.</t>
        <t>As mentioned above, exceeding specific limits for the 'q' or 'v' value can weaken the security properties of the AEAD algorithm used, thus compromising secure communication requirements.</t>
        <t>Therefore, in order to preserve the security of the used AEAD algorithm, OSCORE has to observe limits for the 'q' and 'v' values, throughout the lifetime of the used AEAD keys.</t>
        <section anchor="limits">
          <name>Limits for 'q' and 'v'</name>
          <t>Formulas for calculating the security levels, as Integrity Advantage (IA) and Confidentiality Advantage (CA) probabilities, are presented in <xref target="I-D.irtf-cfrg-aead-limits"/>. These formulas take as input specific values for 'q' and 'v' (see <xref target="problem-overview"/>) and for 'l', i.e., the maximum length of each message (in cipher blocks).</t>
          <t>For the algorithms shown in <xref target="algorithm-limits"/> that can be used as AEAD Algorithm for OSCORE, the main property to achieve is having IA and CA values which are no larger than p = 2^-64, which will ensure a safe security level for the AEAD Algorithm. This can be achieved by using the values q = 2^20, v = 2^20, and l = 2^10, which this document recommends using for these algorithms.</t>
          <t><xref target="algorithm-limits"/> also shows the resulting IA and CA probabilities enjoyed by the considered algorithms, when taking the values of 'q', 'v' and 'l' above as input to the formulas defined in <xref target="I-D.irtf-cfrg-aead-limits"/>.</t>
          <figure anchor="algorithm-limits">
            <name>Probabilities for algorithms based on chosen q, v and l values.</name>
            <artwork align="center"><![CDATA[
+------------------------+----------------+----------------+
| Algorithm name         | IA probability | CA probability |
|------------------------+----------------+----------------|
| AEAD_AES_128_CCM       | 2^-64          | 2^-66          |
| AEAD_AES_128_GCM       | 2^-97          | 2^-89          |
| AEAD_AES_256_GCM       | 2^-97          | 2^-89          |
| AEAD_CHACHA20_POLY1305 | 2^-73          | -              |
+------------------------+----------------+----------------+
]]></artwork>
          </figure>
          <t>When AEAD_AES_128_CCM_8 is used as AEAD Algorithm for OSCORE, the triplet (q, v, l) considered above yields larger values of IA and CA. Hence, specifically for AEAD_AES_128_CCM_8, this document recommends using the triplet (q, v, l) = (2^20, 2^14, 2^8). This is appropriate, since the resulting CA and IA values are not greater than the threshold value of 2^-50 defined in <xref target="I-D.irtf-cfrg-aead-limits"/>, thus yielding an acceptable security level. Achieving smaller values of CA and IA would require inconveniently reducing 'q', 'v' or 'l', with no additional security benefit since the threshold is already met, as further elaborated in <xref target="aead-aes-128-ccm-8-details"/>.</t>
          <figure anchor="l-values-as-bytes">
            <name>Maximum length of each message (in bytes)</name>
            <artwork align="center"><![CDATA[
+------------------------+----------+----------+-----------+
| Algorithm name         | l=2^6 in | l=2^8 in | l=2^10 in |
|                        | bytes    | bytes    | bytes     |
|------------------------+----------+----------|-----------|
| AEAD_AES_128_CCM       | 1024     | 4096     | 16384     |
| AEAD_AES_128_GCM       | 1024     | 4096     | 16384     |
| AEAD_AES_256_GCM       | 1024     | 4096     | 16384     |
| AEAD_AES_128_CCM_8     | 1024     | 4096     | 16384     |
| AEAD_CHACHA20_POLY1305 | 4096     | 16384    | 65536     |
+------------------------+----------+----------+-----------+
]]></artwork>
          </figure>
          <t>With regards to the limit for 'l', the recommended 'l' value for the algorithms shown in <xref target="algorithm-limits"/>, and for AEAD_AES_128_CCM_8, is 2^10 (16384 bytes) and 2^8 (4096 bytes) respectively. Considering a typical MTU size of 1500 bytes, and the fact that the maximum block size when using block-wise transfers with CoAP is 1024 bytes (see <xref section="2" sectionFormat="of" target="RFC7959"/>), it is unlikely that a larger size of 'l' than what is recommended makes sense to use in typical network setups.</t>
          <t>However, although under typical circumstances an 'l' limit of 2^8 (4096 bytes) is acceptable, exceptional cases can warrant a higher value of 'l'. For instance, Block-wise Extension for Reliable Transport (BERT) extends the CoAP Block-Wise transfer functionality, enabling use of larger messages over reliable transports such as TCP or WebSockets (see <xref target="RFC8323"/>). In case the OSCORE peers wish to take full advantage of BERT functionality and the large message sizes it allows for, the OSCORE peers must use higher values of 'l'. The maximum length of each message in bytes for different values of 'l' and different AEAD algorithms is shown in <xref target="l-values-as-bytes"/>.</t>
          <t>An alternative means of allowing for larger values of 'l', while still maintaining the security properties of the used AEAD algorithm, is to adjust the 'q' and 'v' values to compensate. In practice, this means reducing the values of 'q' and 'v' considering the new value of 'l', to ensure acceptably low values of the IA and CA probabilities. A reasonable target for the IA and CA probability values is the threshold value of 2^-50 defined in <xref target="I-D.irtf-cfrg-aead-limits"/>.</t>
        </section>
      </section>
      <section anchor="context">
        <name>Additional Information in the Security Context</name>
        <t>In addition to what is defined in <xref section="3.1" sectionFormat="of" target="RFC8613"/>, the following parameters associated with an OSCORE Security Context can be used for keeping track of the expiration of that OSCORE Security Context and maintaining key usage below safe limits.</t>
        <section anchor="common-context">
          <name>Common Context</name>
          <t>The Common Context has the following associated parameter.</t>
          <ul spacing="normal">
            <li>
              <t>'exp': with value the expiration time of the OSCORE Security Context, as a non-negative integer. The parameter contains a numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds, analogous to what is specified for NumericDate in <xref section="2" sectionFormat="of" target="RFC7519"/>.  </t>
              <t>
At the time indicated by this parameter, a peer must stop using this Security Context to process any incoming or outgoing messages, and is required to establish a new Security Context to continue OSCORE-protected communications with the other peer. That is, the expiration of an OSCORE Security Context means that the current Sender Key must no longer be used for protecting outgoing messages, and the Recipient Key must no longer be used to decrypt and verify incoming messages.  </t>
              <t>
The value of 'exp' must be set upon installing the OSCORE Security Context, namely at time t_1, considering a lifetime value t_l. In particular, t_l can be a default value (potentially differing between the two peers sharing the OSCORE Security Context), or can be agreed by the two peers during the establishment of the OSCORE Security Context. For instance, this value may be stored and/or transported in the OSCORE LwM2M object <xref target="LwM2M"/>, or specified as part of an EDHOC Application Profile <xref section="3.9" sectionFormat="of" target="RFC9528"/> used when executing EDHOC to establish the OSCORE Security Context. Regardless of how the lifetime value is determined, the 'exp' parameter is set to indicate the point in time corresponding to t_1 offset by t_l.</t>
            </li>
          </ul>
        </section>
        <section anchor="sender-context">
          <name>Sender Context</name>
          <t>The Sender Context has the following associated parameters.</t>
          <ul spacing="normal">
            <li>
              <t>'count_q': a non-negative integer counter, keeping track of the current 'q' value for the Sender Key. At any time, 'count_q' has as value the number of messages that have been encrypted using the Sender Key. The value of 'count_q' is set to 0 when establishing the Sender Context.</t>
            </li>
            <li>
              <t>'limit_q': a non-negative integer, which specifies the highest value that 'count_q' is allowed to reach, before stopping using the Sender Key to process outgoing messages.  </t>
              <t>
The value of 'limit_q' depends on the AEAD algorithm specified in the Common Context, considering the properties of that algorithm. The value of 'limit_q' is determined according to <xref target="limits"/>.</t>
            </li>
          </ul>
          <t>Note for implementers: it is possible to avoid storing and maintaining the counter 'count_q'. Rather, an estimated value to be compared against 'limit_q' can be computed, by leveraging the Sender Sequence Number (SSN) of the peer and (an estimate of) the other peer's SSN. A possible method to achieve this is described in <xref target="estimation-count-q"/>. While this relieves peers from storing and maintaining the precise 'count_q' value, it results in overestimating the number of encryptions performed with a Sender Key. This in turn results in approaching 'limit_q' sooner and thus in performing a key update procedure more frequently.</t>
        </section>
        <section anchor="recipient-context">
          <name>Recipient Context</name>
          <t>The Recipient Context has the following associated parameters.</t>
          <ul spacing="normal">
            <li>
              <t>'count_v': a non-negative integer counter, keeping track of the current 'v' value for the Recipient Key. At any time, 'count_v' has as value the number of failed decryptions that have occurred for incoming messages using the Recipient Key. The value of 'count_v' is set to 0 when establishing the Recipient Context.</t>
            </li>
            <li>
              <t>'limit_v': a non-negative integer, which specifies the highest value that 'count_v' is allowed to reach, before stopping using the Recipient Key to process incoming messages.  </t>
              <t>
The value of 'limit_v' depends on the AEAD algorithm specified in the Common Context, considering the properties of that algorithm. The value of 'limit_v' is determined according to <xref target="limits"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="oscore-message-processing">
        <name>OSCORE Message Processing</name>
        <t>To keep track of the 'q' and 'v' values and ensure that AEAD keys are not used beyond reaching their limits, OSCORE peers protect messages with OSCORE as defined in this section.</t>
        <t>A limitation that is introduced is that, in order to not exceed the selected value for 'l', the total size of the COSE plaintext <xref target="RFC9052"/>, authentication tag, and possible ciphertext padding for a message must not exceed the block size for the selected algorithm multiplied by 'l'. The size of the COSE plaintext is calculated as described in <xref section="5.3" sectionFormat="of" target="RFC8613"/>.</t>
        <t>If OSCORE peers need to transmit messages exceeding the maximum recommended size calculated from 'l', CoAP Block-Wise transfers <xref target="RFC7959"/> may be used to split content into smaller segments. The following steps can be adopted by a client or server to determine whether the usage of block-wise transfer is necessary for the transmission of a specific OSCORE protected message.</t>
        <ol spacing="normal" type="1"><li>
            <t>The CoAP message to transmit is first produced.</t>
          </li>
          <li>
            <t>The sum of the total size of the COSE plaintext, the length of the authentication tag, and the length of any potential ciphertext padding should be computed to produce a value T. It should be noted that the size of the padding and the length of the authentication tag depend on the used AEAD algorithm.</t>
          </li>
          <li>
            <t>If the value of T exceeds the 'l' value for the used AEAD algorithm, block-wise transfer is to be used with the CoAP message before protecting it with OSCORE.</t>
          </li>
        </ol>
        <t>The processing of CoAP messages with OSCORE follows the steps outlined in <xref section="8" sectionFormat="of" target="RFC8613"/>, with the additions defined below.</t>
        <section anchor="protecting-req-resp">
          <name>Protecting a Request or a Response</name>
          <t>Before encrypting the COSE object using the Sender Key, the 'count_q' counter is incremented.</t>
          <t>If 'count_q' exceeds the 'limit_q' limit, the message processing is aborted. From then on, the Sender Key must not be used to encrypt further messages.</t>
        </section>
        <section anchor="verifying-req-resp">
          <name>Verifying a Request or a Response</name>
          <t>If an incoming message is detected to be a replay (see <xref section="7.4" sectionFormat="of" target="RFC8613"/>), the 'count_v' counter is not incremented.</t>
          <t>If the decryption and verification of the COSE object using the Recipient Key fails, the 'count_v' counter is incremented.</t>
          <t>After 'count_v' has exceeded the 'limit_v' limit, incoming messages must not be decrypted and verified using the Recipient Key, and their processing must be aborted.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document mainly covers security considerations about using AEAD keys in OSCORE and their usage limits, in addition to the security considerations of <xref target="RFC8613"/>.</t>
      <t>[TODO: Add more considerations.]</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.irtf-cfrg-aead-limits">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="September" year="2026"/>
            <abstract>
              <t>   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.  This document is a product of the Crypto
   Forum Research Group (CFRG) in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-13"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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="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="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="LwM2M" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Core, Approved Version 1.2, OMA-TS-LightweightM2M_Core-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 230?>

<section anchor="aead-aes-128-ccm-8-details">
      <name>Detailed considerations for AEAD_AES_128_CCM_8</name>
      <t>For the AEAD_AES_128_CCM_8 algorithm when used as AEAD Algorithm for OSCORE, larger IA and CA values are achieved, depending on the values of 'q', 'v' and 'l'. <xref target="algorithm-limits-ccm8"/> shows the resulting IA and CA probabilities enjoyed by AEAD_AES_128_CCM_8, when taking different values of 'q', 'v' and 'l' as input to the formulas defined in <xref target="I-D.irtf-cfrg-aead-limits"/>.</t>
      <t>As shown in <xref target="algorithm-limits-ccm8"/>, it is especially possible to achieve the lowest IA = 2^-50 and a good CA = 2^-70 by considering the largest possible value of the (q, v, l) triplet equal to (2^20, 2^14, 2^8), while still keeping a good security level. Note that the value of 'l' does not impact the IA, while CA displays good values for every considered value of 'l'.</t>
      <figure anchor="algorithm-limits-ccm8">
        <name>Probabilities for AEAD_AES_128_CCM_8 based on chosen q, v and l values.</name>
        <artwork align="center"><![CDATA[
+-----------------------+----------------+----------------+
| 'q', 'v' and 'l'      | IA probability | CA probability |
|-----------------------+----------------+----------------|
| q=2^20, v=2^20, l=2^8 | 2^-44          | 2^-70          |
| q=2^15, v=2^20, l=2^8 | 2^-44          | 2^-80          |
| q=2^10, v=2^20, l=2^8 | 2^-44          | 2^-90          |
| q=2^20, v=2^15, l=2^8 | 2^-49          | 2^-70          |
| q=2^15, v=2^15, l=2^8 | 2^-49          | 2^-80          |
| q=2^10, v=2^15, l=2^8 | 2^-49          | 2^-90          |
| q=2^20, v=2^14, l=2^8 | 2^-50          | 2^-70          |
| q=2^15, v=2^14, l=2^8 | 2^-50          | 2^-80          |
| q=2^10, v=2^14, l=2^8 | 2^-50          | 2^-90          |
| q=2^20, v=2^10, l=2^8 | 2^-54          | 2^-70          |
| q=2^15, v=2^10, l=2^8 | 2^-54          | 2^-80          |
| q=2^10, v=2^10, l=2^8 | 2^-54          | 2^-90          |
|-----------------------+----------------+----------------|
| q=2^20, v=2^20, l=2^6 | 2^-44          | 2^-74          |
| q=2^15, v=2^20, l=2^6 | 2^-44          | 2^-84          |
| q=2^10, v=2^20, l=2^6 | 2^-44          | 2^-94          |
| q=2^20, v=2^15, l=2^6 | 2^-49          | 2^-74          |
| q=2^15, v=2^15, l=2^6 | 2^-49          | 2^-84          |
| q=2^10, v=2^15, l=2^6 | 2^-49          | 2^-94          |
| q=2^20, v=2^14, l=2^6 | 2^-50          | 2^-74          |
| q=2^15, v=2^14, l=2^6 | 2^-50          | 2^-84          |
| q=2^10, v=2^14, l=2^6 | 2^-50          | 2^-94          |
| q=2^20, v=2^10, l=2^6 | 2^-54          | 2^-74          |
| q=2^15, v=2^10, l=2^6 | 2^-54          | 2^-84          |
| q=2^10, v=2^10, l=2^6 | 2^-54          | 2^-94          |
+-----------------------+----------------+----------------+
]]></artwork>
      </figure>
    </section>
    <section anchor="estimation-count-q">
      <name>Estimation of 'count_q'</name>
      <t>This section defines a method to compute an estimate of the counter 'count_q' (see <xref target="sender-context"/>), hence not requiring a peer to store it in its own Sender Context.</t>
      <t>This method relies on the fact that, at any point in time, a peer has performed <em>at most</em> ENC = (SSN + SSN*) encryptions using its own Sender Key, where:</t>
      <ul spacing="normal">
        <li>
          <t>SSN is the current value of this peer's Sender Sequence Number.</t>
        </li>
        <li>
          <t>SSN* is the current value of the other peer's Sender Sequence Number. That is, SSN* is an overestimation of the responses without Partial IV that this peer has sent.</t>
        </li>
      </ul>
      <t>Thus, when protecting an outgoing message (see <xref target="protecting-req-resp"/>), the peer aborts the message processing if the estimated est_q &gt; limit_q, where est_q = (SSN + X) and X is determined as follows.</t>
      <ul spacing="normal">
        <li>
          <t>If the outgoing message is a response, X is the Partial IV specified in the corresponding request that this peer is responding to. Note that X &lt; SSN* always holds.</t>
        </li>
        <li>
          <t>If the outgoing message is a request, X is the highest Partial IV value marked as received in this peer's Replay Window plus 1, or 0 if it has not accepted any protected message from the other peer yet. Note that, also in this case, X &lt; SSN* always holds.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-07-08">
        <name>Version -07 to -08</name>
        <ul spacing="normal">
          <li>
            <t>Minor refinements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-06-07">
        <name>Version -06 to -07</name>
        <ul spacing="normal">
          <li>
            <t>Added missing references.</t>
          </li>
          <li>
            <t>Revised content.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-05-06">
        <name>Version -05 to -06</name>
        <ul spacing="normal">
          <li>
            <t>Minor revision.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>
            <t>Editorial updates.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Various editorial updates.</t>
          </li>
          <li>
            <t>Improved references.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Updated references.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Extended discussion on setting the lifetime of OSCORE Security Contexts.</t>
          </li>
          <li>
            <t>Mention adjusting the 'q' and 'v' values to compensate for a larger 'l' value.</t>
          </li>
          <li>
            <t>Specify how to perform pre-calculation of message size to determine need for block-wise.</t>
          </li>
          <li>
            <t>Cover exceptional cases where the 'l' value needs to be larger than 2^8.</t>
          </li>
          <li>
            <t>Note on relevance of 'l' limit considering maximum block size and typical MTU.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00">
        <name>Version -00</name>
        <ul spacing="normal">
          <li>
            <t>Editorial improvements.</t>
          </li>
          <li>
            <t>Extended terminology.</t>
          </li>
          <li>
            <t>Recommendation on limits for CCM_8. Details in Appendix.</t>
          </li>
          <li>
            <t>Example of method to estimate and not store 'count_q'.</t>
          </li>
          <li>
            <t>Split out material from Key Update for OSCORE draft into this new document.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Carsten Bormann"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Göran Selander"/> and <contact fullname="Rafa Marin-Lopez"/> for their feedback and comments.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
81gfPcBTbicAJy7AyBq8spe8V+NpaqgggdQZiXXRlQ7qS9/WxA5kACLuICXx
v/AiS/8QrT9Kn3SfX+3hC3IvBpQ4aYlvEZ9QqITix3DWJOAKF5FML7fprHBc
C2Tee0qf7eTdwtzmsu6CUjFVp8V4BM5TPqF5ErNSdX3eOvCO/KnP1oXHVtxX
jbV4u/PAoU0IGo1z8aV2nJUWauwm2UaAv3hv5IaK2jU2jxp657uw51t3fN0T
0/vgjJnehpe68Oi18Bdn3lMrOrtpBAYfhHKzWOTxcXJYPwBlO6QwgqOH/BaU
XTSDIm8QTjw3TCx9L/tUlUOV+wQVuUBumcir/lWWgEPzn+X68Nfb61fXp1in
4ijMH9D68Dd6rLl31atskZ9uDtPwvrpZPK1U8Zgwcp+THoD/idO9ov4iSql7
U5ruiErbCq60pUupbBLe0E1X+lK6pWFnZ50ut9a6ful5UN2J29T2hjA6rdc6
vW7V1pqeENwG5k5/ZRftpjYSt4V2bdW61kj7O7TQ9rZ2v+idmtYPal7hRLyX
RbJpFImFXoRLYMMLXXblR8THShFX6Opz7GmpxVp0dugnmamtocdfy3ZE06AI
yAwODaxf6070C+wm6tdEVNsAKVlm/Ri3ll0+Zh1PZ9x0gyVoMzvsZhjniOE5
z+z022NCa+V2dHpdJA9rzntY43JNKnST16/vW35Y2/LPL3Tjuv7L/X/U/ntQ
7VqG83baf3ls5/BhY4/XjX3guidrxhqacX137Ell7Daad43dRvOusVtpPvDG
HrYrY7fSvGPsVpp3jN1Ks39Gh18jG7vGbqV5x9gKzb+7Lhxt0oWDNTQfPmzs
8bqxD1z3ZM3Yqi4cbdKFLTTvGruN5l1jt9J84I2t68I2mneM3UrzjrFbafbP
qK4L22jeMXYrzTvG+jT/Fnu06+kMcig2P6Kxxof8TY9qPBLntoZTZssxukTX
dE19p/YCBH6JR+gUjXSSRPh1pw3FMhPdVerOGNVNqLaF3gV3urCLQnUtzJBh
nwC5XSk9w4ouWq3Aesute0QZ1aJs3tv2CDexN4NTQE4V3fbvoMtfFpE+wr1T
lRcfxfnVGT720e9fiT9hAe3DN0+9whPHOhXCKAJb4uOh9IQwDtY9eabG4nh0
cW7rc2vLfS09xYdvtkxSrfStn6ls7rHzhX6RrYyKzVuPOFuDYd1b7FPBLsD3
xkvUpBPzcn7r0e1kbh6CczJEuEqlzOw8fVlLvJhYn2ubA+rg3ZT+sA8o6/Ir
fAJ5E/8qTAJFn4T5wR7mD9yZ/kO1SJGblBQxXqcRatQj6yyPmjwL3ugwqVZj
8Ts2zKukKrykaqrT1uH65T+If9EnFyZL9Laxu/NBdNJSDpmmZOWQa7pzsjvm
QiYjSc+Cm9KGlq0bztZ8H6dDtRSzZJ6LDrXjtPEwYhM9F7rrlTIWq3rCmJPp
vuSKlSyc/Tb5GU2zPvZkNzfzAIJyE7+/o+psrhtdosAE9gGXbSHg/nyaySkI
fpxmo+ieClDmXYNB+zniTtA+5uwWTtB+Dl/vkc+XcaqwxRzh0DwI7g0+4sHP
ncFH8JUG94bU+x+z6NIrJlA9+QRv5CLOOaNQsC558x7yvEfOvIfw1SMKJuDa
kzfygEceOiMP4CuNPB/GWKYHCdCsqQ7e58EHzuB9+EqD34dZjB2Xcs0kIJFT
/RJHb5/e5F2efN+ZvAtfK5TFPNFabnd4hq4zQwe+0gwsBdvWb/PojjMa+1J5
fXo8AWvW/E4egkZ83VVh88Du8/YbesKYFZf8igPdm26G72pP1/U3ncmxWX22
B4QtK+4xK1+2NstkYJ/YZyx3nznwa0RUGcM1ykoAzX1GT1HUHwphGPUrDCkn
rCmR6z5DDuEGzUW6TK9OSOQCWwFNRoEfTnEzH2ue36F0YfkwUP34nHPbLjTO
eTqv6tJ6pwt+mmWp++YFTkm1dL6PUpm9GeXMPulZQ+wsYkYbx8h6Q0g/IiH7
ME7nEB8hVgPRsNq3rBEk0kupuL2kTOjxK4u5ZkhgiM2/Btb4hVYRvvsvkUMu
JHLK0b+GsMctGXL4Ym8E4Cr3dOsJv+M15ycxM/1QU3oH9vnz2SSLYUP4kppp
/sv/5Pk95sHwhzDLgafiJT4TkKbm8r+rCTZcyvkv/y0uw6LIc2V/++6Xf2Yh
uklJiA7KvX5HF/xyE45CfIdvnAZv1Ez+A3/S5as4EyMQswG9xSrlLubyFRyC
npRS1beb2TfXYF8obCefz3R76WAl3l9cXV2/79m63JlMijgKrqgYmCmsBOTi
7Obi9qJ/fsZpzB/f3pz3+/xqLN0k+xpf72ruF/2Lby/6wWsFcPDkO35wCltq
iZiTw+7RYfdpq/G/gbpGRdNaAAA=

-->

</rfc>
