<?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.6.13 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-key-limits-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <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-02"/>
    <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="2024" month="January" day="10"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Object Security for Constrained RESTful Environments (OSCORE) uses AEAD algorithms to ensure confidentiality and integrity of exchanged messages. Due to known issues allowing forgery attacks against AEAD algorithms, limits should be followed on the number of times a specific key is used for encryption or decryption. Among other reasons, approaching key usage limits requires updating the OSCORE keying material before communications can securely continue. This document defines how two OSCORE peers can follow these key usage limits and what steps they should take to preserve the security of their communications.</t>
    </abstract>
    <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>
    <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>In particular, 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 original 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 AEAD algorithm, such as message confidentiality and integrity, e.g., by performing a message forgery attack. Among other reasons, approaching the key usage limits requires updating 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 to use the 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 to 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 amount 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 section <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 key 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 entailed by using the values q = 2^20, v = 2^20, and l = 2^10, that this document recommends to use 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 value 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"/>, and thus yields an acceptable security level. Achieving smaller values of CA and IA would require to inconveniently reduce 'q', 'v' or 'l', with no corresponding increase in terms of security, 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 tranfer 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'.</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 value of 'q' and 'v' considering the new value of 'l', to ensure an acceptably low value 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 a 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 message, 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 for unprotecting 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 alternatively 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 an OSCORE LwM2M object, or specified as part of an EDHOC Application Profile <xref target="I-D.ietf-lake-edhoc"/> used when running EDHOC for establishing the OSCORE Security Context. Regardless of how the lifetime value is determined, the 'exp' parameters 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 implementation: 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 of the peer and (an estimate of) the other peer's. 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 occurred on 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>In order 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, authentication Tag, and possible cipher padding for a message must not exceed the block size for the selected algorithm multiplied with '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 caclulated from 'l', CoAP Block-Wise transfers <xref target="RFC7959"/> may be used as a means to split the whole, large 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>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        <name>Informative References</name>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="I-D.irtf-cfrg-aead-limits" target="https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-aead-limits-07">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>ETH 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="31" month="May" year="2023"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-07"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-edhoc-22">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="August" year="2023"/>
            <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
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-22"/>
        </reference>
      </references>
    </references>
    <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 value 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^10, 2^8), while still keeping a good security level. Note that the value of 'l' does not impact on 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 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. That is, X is the highest Partial IV specified in message received from the other peer, i.e., the highest seen Sender Sequence Number of the other peer. Note that, also in this case, X &lt; SSN* always holds.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-document-updates">
      <name>Document Updates</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>
      <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 project CRITISEC; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81c23IbOZJ951cgpAfbPSSHkiVZ1qw3lpbotmYsyyvRds+O
ZxxgESSrVSzQdaHMsbWxn7Fv+xfztG/9J/slmxcAhbqQlLs7YtrR0aaLBSCR
l5OJzAQ7nU5reSIet1pZmEXqRPxJrcTbVE6VeBXOwywVE52Iy+vTy6tBS45G
iVpufmesg1jOYaJxIidZJ1TZpBPoRHV0Sn/dqFUnolGdSGYqzVqtXZFmMh5/
lJGOYWCW5KrVChcJfUyz/V7vaW+/JRMlT8R5nKkkVlnrdnoiTvXVQLzXyU0Y
T8X3ic4XrZvb4p3OGZLQCmR2IsJ4oltpPpqHaRrqOFstYKXzwfBFqxXoMYw/
ETlQetxahCcC/uyKQMYiT5WQSSJX4mE4ETKKxEqljwTsdibTmZipBCgVItPB
CX4DH1OdZImapCc0x1hNZB4BgzJtv1/N+Wv8Z0vm2UwnJy1BfzrmbwHUwhtX
XfHyp39Mozweuy+YtVfhjUzG9W91Atu4Or8eiP5z9zAFehRw4DyVkx91Mk6n
Ergt9vfdG0GYrUCoIUiheKbHsND1oLN3dHDQE9ewxZuZjubeC3mcJTDu+laN
Veyeq7kMoxOREIndmSYK/y0Ju6lq3uZFVwzDSAeysskLmQS6+tVvaIdzpK+b
EX1mf61YJ3OZhUuFIr16cbq/t/fUfHyyf7hvPh7vPTmwH4/2Hp+AsoN2lkc+
OSxGPj20H48f7z/Gj+eds26YoGVNkmlHKjk2NuW+RLOL5I3qqPEMtLPVUnGG
TIDvrwevXpyInb/AfJ0f4M9fd1qtTqcj5AgYKQMwyMvRjyrIxLUK8gQGkXmf
6hi/DmM1FleD6+Ekj8QgXoaJjucwdyoeMgA8QqNJRX/QPwODmWqYYDYnA1Bx
micK2BpPwjGSIyOcHCwfFCFTU1pKT4T6HMxkPIV15ipFlEm74ixXOMVNrG9j
ASacwxJgjvoWLR/Im6oEZsoyGdzAF1MgM82qNLQF80ikM51HYzFSMBLngJV0
LLKZEnE+H6kEicjCOS4h0oUKwkkYCMAtWBg3NyZ+qDhIVosMsAThYKzsv7qi
P9dAlIb5EgGYlQLj2kIuFomWwQzpxalygk9DUKI+5WEC6+WLMSgBvILEMD/x
bXwC2qESYBmQDcsjG+fzPA4B3GDRlNAqRXmpaIUshllyBZY1A5oBknOUEcIR
yC8VM30rslttV1golfAMzA9cHYCvRiZK6nYmMzA4tUjxrZXlZQaqhgJawC5U
slS0gdTqD/JzpsKkQnSX9W4ejseRQjcAwJ3ocR4QV3fFl90QH9z9UoX88sVY
2t0dEKiXoH0pyG/cyXQH/sJnmeJFgdJT3X/DQ9BkYYjVQtAv2haIMjJbABNb
qaTNqk1S4nc3K3kbBL6Akd7CoCCpuFXgYODvURijR0JigJ0L2CfxFrUE/CUo
QHarVIzKCdSDkuHkEr4OwkUISwJbz2OxkEkWBnkkgTwj53WGaXiy3TIdJwoT
tcSgOpEe/dZsFfenEoTXtSYL0l4LqHd3wM4hLAeETcMY7M8w0y4mzQyFio01
UBPrDPmZhiigNA9mNXMC7w7bWaL6WCNCg4KdAncVeJwxKAVIeQyvpBJYNgeN
gfhL3pSNC6QHG8xCWJTtrMLLNi8PenVP5VTdabctRivLNxSbdIPLArwH2iFF
/3TE82ALhnm4d28AQ6rLFBCP0kwvFkS/pmjR24ZDK0CqTH2G9WcQwwKEglSA
CmYZ0XA7Q3PewjPQw91dMVQoEB3p6UrsIkRmxYM71lQceIthkNi5eHs93Gnz
3+L1JX2+Gvz72/OrwRl+vn7Zf/XKfbBvXL+8fPvqrPhUjDy9vLgYvD7jwfBU
VB5d9P+80yZ92rl8Mzy/fN1/tQOqBfvxhQJcQHaBpqPWJcDyDNgCCgq4HCTh
SKE6iuenb8TeAVsWxlFgWWxlED3BZ+QZL6VjUAD+J1kQMFLJBKfAgD2QizCT
UUoIC8IGTMKwHbh5BVaOjg/JUZ/BnDOGC8QaOQ+jECYhWaE0kM3sAUHVArUg
HcYDDA2p+Qx80aiBBw0oQrbO2gkqtFqJMgRmpcYhjVUG0Sa77JoVoRus4jma
xUg57EF9Q+3KU9QrXqIrKv4hBEMJ0yBP0UE4FPUWQcUHYqprEcASi3jiP+Cs
ELxnyFZgC4aTN8D3VAehZVVhflX7+AM7svE4ZAPHCQprsvgDRhLAR9gNG8Sb
RI8iNReXAJPLUN2CSSz4UUebR8YuLHB7wAkxv45K4L3NRxb+0OhCCUk9H0n6
tsFPEhoQtK5lCGzwPcqu2HLhgT2uA2IDbJTQzMRxVVFKx9Sq8wQNoJ2XnahB
Uwp4UDMUijdDvDXTXHMA8idSTJavcbJC59lU+ySzsZqBVzZYKY01LpleBNmF
E3DjMegeTmNiJf9U0GoNyFMaxEydXaCnpIij7EDRtn9r/pNVk+WFLyZqYo0H
UQe1pTCpB58e0GIPlg9EaGJlBsuNEUzbOidCgjHEnnplNK+8VaDmO1zkhAHb
rYzZDmTAUka5quiP08hCQOzgSpoEGNNV3Xaj7tVZTuuN0FzCeKlvyooF8YK0
uAxOHdWUyF5+E9mgHmrKRzkrDjVHVKdJZxIiACJgDj7CBanr9yTnmCzAiScA
1zBvEV36U+oAlM7FAA0bR7D1tkXmL9m0yT7Z4k9ww0MXI5gol/lfNzwMhdEq
PGOdJHruPysApz7vJqOsLlE2a7dK8bhY6DnEP7gO+18gIlxyEICOyVoiHHfk
KArTGcUN5uEatGxzBDGhAyGZxLXxoY+7+zjWd8N9tOYYv8VFR+Ap2ibsxm01
uUBcGe0PPqL5sU6hs70FRFHxt2EKMRc1J6egEl6fh4TvHNCWA00bLNOplgEj
oYi4jduEQA8EuOXozcKs4pph5Izdgh7x8IY9W8yhTadId6LzKbgaPhBH4USh
KdcXQ/mSm971M8X+lF92DUq1Wi8AKyEeMRGHjDA4cUcDt6EIjkwmmjt3vrg/
Xso4Q3h9eN5/RJOfVkDae+UUXsEYQY4gyEMhtUkHiYFxdg9ARb+I7mZiKabT
g8QobgE8cerD/Krt+WGqlAvwvnyphSt3vAMaFj3wYWYuP4fzfA5MiKdgPpgs
Q9dvfctDIBwsDc8Vo0jD8fpRl9jKEFXEMxwG0y7dU7c5xh8TRpIopYmI+iWY
ssGHPasYnSc3i8cYkBPCAuAeyvC8z1LpW6bczkL0qsD3WAuIQqeKkA+iHfFM
7P+tc3TQNu/chhDGm+QhILCcVLXB6WqZShO9mJ2AZBmZRysTDOMIQ8wnWnO/
1xZL9wnJjehfe702M6V8jEkUmikAaGr9q6Ej9ZkNEmjkMhxJNAmCHSDoXh5l
ZU6VdBQ28KNeMf04wAvw/bQJuXhQx9IGUVFAAdukfaSF0QNGvUJpTcThVLqE
pJvTI/9Z/Gn9rrPmT+2L+oPWV0/FsAhgM+7iK3KlYMcKHpxWHrS+/vyVv+LK
oDsf+4Prj3v7xx9PTy/cyqSLwiMFHxx5D6qDvy8PfvqkMvj46ZrB+4dHP2/w
6cs+/Lff+/jm8tWf9x73DvndJ4/9wR1R+vP1l4nKl/mXE7Fb1XBB5cRnO29K
OowG4uHQSKaczwtmGqBXfEL7Y7tjw+zuAEJAEJzcdADFp/GznQAROtm5M7FR
VWofj13ibztqZUm4iFQmHuK6bRE9KhkVmccqVBHYt8EngxZgTc5Iu+IlBKbg
il0+MIpW7mBeJq29HkAKRKoT9Uw8ZEQCJDrA/x8/MtDGZzPA3QSP10ADBGaq
AienTOm5A16G3ExM4SiUWdCllWcwaqbh+OhAA5TosHdvKDAnPAxqDN/w+BVg
tgSiuCpqd0WfvASFPXOMx30GF2Tf0onWxEAIUxh9xksVY0AJvAZhwSmowDfr
NSnEBt8S6ISz6BTawWDMUirKSlFOBxazhFFUMckTysypCFQgkS4eoK1KlXZA
np0gmHeOOyY587NAsPnjZhCMnu3/7Qip4Y/Hxce9Hn2GwWv+fAW/kQFr1368
J4J6H/3XNyLoXm//wHw86D09sk+PHh8fbEfQbxpcRdBvXpkh5BsHN8Fv04iv
4ujw8PHRN8DvWiWpwm/UYdPpyLTDIjX4e7E9YqT3H21CWrSkRE1lMnaZCbL5
IkRlzDFwpjjAYBSZfGP42XaxbxOAAuKRsj9kpjLpNALN4SFx3TxEo8cYG6Bm
1aVqISI7J2Oy1QKRWlwM3wJo/p2wbu+w1+OxFscwDxxkNvQrom+KrXmcl1ul
p53bEIsAiYxTyuMQCFF2GCgnhWLp0BGgOKHa8ymW+iH8p4ws+rE4Cm8o3YYk
SOuGLMXIZEJvqm6EaUkCcziSYMrOFA9zA3lm47EiWcP3Wb7AGNXVomSUzfBw
B4vTwdIMCMIEvBb26QSKcB0XZyUgP1FhPnomB/x8tKZkCM4kMZFBJ2dsrcF6
gJiF05mFf7OzrsCDC6ZdJPnX5wV7B58z2BbyDdXkSkUhuZchcn2hE/CdzwdX
w0ewasbROciOZMBzvLciAgkB2scBE8a5uxjzDSBN5BcQYjju8hx4RsPEP6+Y
2RVTlyMcnr5BD/Reja5hLZU5UZvuDZAupd+RC342g3PCsL0ZWRieJyc5loPd
sRWowW2VKXaaSoQ6s0YNoaQuZUEp7mrXV5vnKaV9S+xPLf9brT5WULCVihpT
YHLYrcmduWJuPTRi5zsL0eFneHSbyxDPXnHtKF/PkjSmKUICHTn+EcltTkng
C5hHAbUAh831DWxlCVFzKOhi4ilWaDoaufkCDycoY6huS2rZ9jpZ/OgGghrt
vYlD1xzkIO4xhVLWIeRf5mCyadDK7jJMf51AjSsnfVNpAZs8t/1HOuZynapX
L7HYGPDnO+owsJUa5IhFoDX5t71S/q1tTppWjbwMt1crMlnkdcVUP0GBzLtR
iuuwVHOy+cPPizCRtrODUHTdfMh1X1OLYttIUS0F8w5eJXYXRlJRrMwffNQp
2DQk6Cm9R+m20v69TTtWcE4b6H9wwpwoktjepvys26a0qIRAOO7E4MLJkqlY
AWtQrrdIlyPZmOjG1+GEktgMFrarcG7MWYXLo4Mxa8RYyvXuPX3S6/T24L9h
r3dC//2HeDs8BV8CSMDGz8ck2Co+H8Omf4+bACufxpqsLlJyYadFTywjPdV5
6mtZMQlK/jXTegZzlfXOedVDrB53sVNT9BlCiHHYZhMQ2ymn4pcO2jbrThiJ
RX53RAvTuvJw+h2LdECwlx8H6qrpeA4uQtcCwbUNm+dG1gPiNC1gWxyMoDtF
vaXSGOFqC0WHAUqaWNduMIv1BUiDmi4AouJFnPmVBOIPZvB0jG7At0jb3YR8
WFMMrFUCN0yXx96EtQoES3dYgnW0Hp5xhF4HfN2C8A2YHUWVnpO62eDZK1pR
0xcqS/bh41675B5kkfg2xvnhY1SrreNDC1bSNgSbAQ8XsCHKUMNC43Ay4Yld
rdhWAEv14g1EQ+BIqfOS346op0jCcb9IHhazjnM36bcUW6rRGZkFb4ralND3
a0qjxOPfo2uzkRL7hkLlXt1e7F8ITf19RH1h214tCN4fnL28PBX9ovcOK/8T
jDKMqyt3vHIp3zQ/JHlMmM5zUPem3esWjnZBP/HcE6FpAyEz7o6sSp48H3fi
cF1HGe3zXBs1dWScwGDcofcWYBcZOV2crpyswEgQ1A4WnuBQFB6qGLufcumO
3A/3A1bcT+W9+7mflP0PtUB/xIJwswfhHmmEy0b3a/ECA6zyabBAkC5CMoIm
uwG35L1qzpVirSkRw0aKfJq/Uhke3EqFZHqsLzXtaCiTPqBYYANvbPnCKjSz
nULtNHPbAvpLhEjT5Ej9nnBSb9vuN9do1rQ13wHVsLYJGi3x2A1AZyTTVFkp
UxbGaKLCcizTroXL1ZAej61+PaaRhpL1YEitE6v+X754MetrQEvSoHC+iKgc
SkBwYk7LC52mIYXUcFpY6nBMGMSNDuPaKcRobsF9MHWJDpO6LkFE4ZxMwghK
c1PVfEEtfLYhoNiDa7uaL/IMMWDEac5ETiviusY2XszTvi76IJBzynTyPvSW
hy8fVVz5AzpAuL2Ctc702K+5ZSYzXGqm+/LFTBlSeAo77nzCOuZ7OqfREDzV
wvjUOAYK6DYxcIENx3B4LNSXWEW5C04/U1cbnpjt2rXosejITW23TBH5ly03
pNmyPIn92f2myUIYqdax4SZlo+HFUi8OxfbYeGraycZ4mpujlU2oyRrzygZl
a60LBLSu17qCtfW3fwbcLn8x3C6rcFsKspoRd7kRcRu6WlwvC8VU1YaQAqUq
azdh8PI+GNzUROJgeD3PvhWGl98Mw+UI1kPiewWplv5/PhIv74/EYBgmYLow
Gac3RY/iLmUHXF8KqmpZTxvyN/hPk1UhUl33iCtXUTQ3UisIjVgkZqNhYk7l
7XJyy7ZDNXVMVjqFMq/hFtNePKE5YZsjp99ux3FHufsGSeQGIpPjivhsVtih
y5NnGs4fLolLsry8BrIjBFg+sefwFM4FJtAdyimflxzqmyaPBaZgTB6u6DA0
Z6gSPV7K2mKCI7FQsjnWDLHX02Dwg+j//uu/WVnWkyuox4K7dRrauIvj+GH3
cbUN63xSFlqs2ObouIC5Zf/GSdHp6TLxfsKbKAxkEBlCyIER05tyv5ye55Zt
Srrbc4utHUt7+NVge1HIB+DbmcZ0NidbCfopdsd3TAUzVVPu0yKuFajPdw/s
OXCsFybtIEUQEXbg0Qf7rxLuuTNGiFhIrp+zoyYP3FBqQCnECk0QO12tjA0f
6cornaOK3iTL92pbLUhlj4kntlml8oUCS03CBJRsYUwCxuwbNQGhGC3ZruZ0
kHJ1KSoSlRU/s4pffhN9lzs5G1sgTbT2UFwasvGYgWWqFEtjlEM4q2feu2Ay
ZC0m2eFTbieu09JMtQFzi+UNaW1g2WNYf1LORA+NnrOTqhfRGvPja7SBQ9ai
RT+ritR4ND+rkvkoaXqTve5zezuuEVNZ15ly1nY4iUT1bPBxJRfsiCs6/y02
U+bVBGJvCjIluFy+Cke4d2XvyNF9mGI7HYjlOniahuDsOe/VxpsGRkghOffQ
eKwyJ3kX4NozA/mDgDsySfvPbSjzAV8ryxB9CT2mT6aPr3aZgYKOESVIuuIF
QhfqlNB8qaUh45Y56Xq90bZ3wQs4kHfvqG13K+uW9jWfc+eUfamGMjZS8O7M
SHursVLbfNI9KEn8UYmryxJXcVs1zuLb3mU914ds7c1Hl5owKx3J2K6xYf3y
2v1JcUD8YANkezmvJN2lk249EvblZbbBeTGzi1K2okSuw74wKd0BMRlNqy54
qcjPW1EYyLlgc5nIdRzhGY5uyy0po2gHBaVBOHFueVgEYu6GkkeVfxuJ4iG/
JlSq9VWWAJmV70V9+Mvw8uzyBItSfBIrD+h++CtdEO6/7le2yPeEZSzvqptF
acWax8jAv3E8gmAUpztTpie0Ql1z9wGttKELqGi1bRhbBFmmZWBrh5oprNYa
ZzEgNmf9cds4GgLnuFbVLDV8dhvaLXAHxxD7/Mw+1KYODb8BlVPaKAuvPFzr
Q/0VOlD7G5tKzC5tVwX1hXDOvZQycvkThbVcxEhgwTNTWuU71lOtiSP09Am2
i9TOXSQ2jI3s1KWacNHVZ/v8AI4hiIH1iya/Hjf5lavo9sRviKj20lFuzMUu
fsW6uI8czhfYzwKKct63k8NmxmGKuJ3yxF7POqavVn5PZKk/434tb/dr+60p
hWmd+vldv/dr+v30zHR9m7+5q46aZw+qPb8gbq95lsfuHd5v7HHT2Huu+7Rh
rKUZ1/fHPq2M3UTztrGbaN42diPNB6Wxh73K2I00bxm7keYtYzfSXJbR4bfo
xraxG2neMrZC869uC0frbOGggebD+409bhp7z3WfNoyt2sLROlvYQPO2sZto
3jZ2I80HpbF1W9hE85axG2neMnYjzWUZ1W1hE81bxm6kecvYMs2/xB9tu9tA
8cT6Cw4N0d8vuuiwKwaudlMuXGJA2lDXqf2EAP8GhvSKRSYvIsq1pubCmD3Q
VarLeJCbUSELYwvuZuEAhUpZmBPDFgAKumK6BooBWq2SOuTuPCKMSlAuA+6a
b9vYhMFJH69W7lp0MM4vikcf4d25TrOPYvD6FO9OXF+/Fr8T8P8P3z0qFZz4
gFMhjI5dt3jDki7Z4mDTdWerK148F6amJLemttc1U3z4bu0kfmFv3SxF846b
S5YLa8Up2P5gEOdm8Bz3BptRsMfvnSgusTnGpfyDQcNZbi+PefkgXKVSTbbK
0JRmsUd7LmWOqC92XbbD3e81ZVb49OHjJ/GvwuZLjBTsF06QP3C79w/VWkVq
E1DEdJM2qFGPrHM8avMs+KLHpFqlpdyTYX+FqcJLKqB6jRt+RP6D+BcjORnd
YqCNvZv3opOW8si0ZSuPXNt0k9wwFxIVKLpKbQsbRreuODnzPozH+lYsojwV
e9Rw00NhhPa4nJmWVkpRrOrpYU6rl0vSYqUyT0k3UVtirp3Skdwwt3/71c6X
Yq/H5mq63/rmBNHmS5eWMdiC3V4vnF1xZjMJb6lWnJoem6BjUwwdLiLj0f/q
xakYnJ0PL69OxJtXg/71QFwNLi7fDcTw5fm1uB6c4s/hcOnsnUooId/p7SFM
dnr7nH/DqbF7cv8OVYMXHfMvQuAW08rgHg/e8wZj9yUNphZ5zFKZ33UhhMDf
S8pc8tO/tb2m+4l19IIvypsObDt8WxO2KUqZLIZLZTMkkhasuJuq+H2uRaI6
7t43Q5rf0F4ujFCpCNco0t809ym16NcvHDCalNPqMadpKX3pX0GGgJvmIs2h
C/hwysZGN3uk5osP/tG/4W4IpcmKiyZV2fd8ubHQxiH2W8DrIf4kwNLd+Pfk
6f3cE31xZStghmWxf3+fgo+uSXNRBq+/oHTRZzOpxEYa5rONDFw4gOQjHrAX
L9pkWIBYEUPv4n6ki2yXftaIGyuKVBb/EiyXycjwsMPVmhD/JFKAPxYXqTHX
zjjRVn52h5EY9yOo8bOdWO+Ylgv+CdWU7z4m5rJMfAMu6svpLAlhN/gzJ/P0
p/9N0ztMAuEXMkmBn+I5Nr3HsX38Rz3DrkKV//Q/4kJmWZpq9933P/0jkYg6
kUTcuTO/8QTfXMmJxB8rDePOK71Qf8evTL0mTMQEVGxEv4IUc6Nu8SMOgm7g
6OqvY7nfPsHmR9hOmi9M4+RoJd6dv359+a7vClGnKsrCoPOaql+JpuT36dX5
8BwAh39PyXR8vtzv7ffcK9fnL86vOy81WP/D7/kODvaH0vpPD/ePDvcfdVv/
D2t7F6EbWAAA

-->

</rfc>
