<?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.14 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-groupcomm-15" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.2 -->
  <front>
    <title abbrev="Group OSCORE">Group OSCORE - Secure Group Communication for CoAP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-15"/>
    <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>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Mattsson" fullname="John Preuss Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Park" fullname="Jiye Park">
      <organization>Universitaet Duisburg-Essen</organization>
      <address>
        <postal>
          <street>Schuetzenbahn 70</street>
          <city>Essen</city>
          <code>45127</code>
          <country>Germany</country>
        </postal>
        <email>ji-ye.park@uni-due.de</email>
      </address>
    </author>
    <date year="2022" month="September" day="05"/>
    <area>Applications</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines Group Object Security for Constrained RESTful Environments (Group OSCORE), providing end-to-end security of CoAP messages exchanged between members of a group, e.g., sent over IP multicast. In particular, the described approach defines how OSCORE is used in a group communication setting to provide source authentication for CoAP group requests, sent by a client to multiple servers, and for protection of the corresponding CoAP responses. Group OSCORE also defines a pairwise mode where each member of the group can efficiently derive a symmetric pairwise key with any other member of the group for pairwise OSCORE communication.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> is a web transfer protocol specifically designed for constrained devices and networks <xref target="RFC7228"/>. Group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/> addresses use cases where deployed devices benefit from a group communication model, for example to reduce latencies, improve performance, and reduce bandwidth utilization. Use cases include lighting control, integrated building control, software and firmware updates, parameter and configuration updates, commissioning of constrained networks, and emergency multicast (see <xref target="sec-use-cases"/>). Group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/> mainly uses UDP/IP multicast as the underlying data transport.</t>
      <t>Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> describes a security protocol based on the exchange of protected CoAP messages. OSCORE builds on CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/><xref target="RFC9053"/> and provides end-to-end encryption, integrity, replay protection and binding of response to request between a sender and a recipient, independent of the transport layer also in the presence of intermediaries. To this end, a CoAP message is protected by including its payload (if any), certain options, and header fields in a COSE object, which replaces the authenticated and encrypted fields in the protected message.</t>
      <t>This document defines Group OSCORE, a security protocol for Group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>, providing the same end-to-end security properties as OSCORE in the case where CoAP requests have multiple recipients. In particular, the described approach defines how OSCORE is used in a group communication setting to provide source authentication for CoAP group requests, sent by a client to multiple servers, and for protection of the corresponding CoAP responses. Group OSCORE also defines a pairwise mode where each member of the group can efficiently derive a symmetric pairwise key with any other member of the group for pairwise OSCORE communication. Just like OSCORE, Group OSCORE is independent of the transport layer and works wherever CoAP does.</t>
      <t>As with OSCORE, it is possible to combine Group OSCORE with communication security on other layers. One example is the use of transport layer security, such as DTLS <xref target="RFC9147"/>, between one client and one proxy (and vice versa), or between one proxy and one server (and vice versa). This prevents observers from accessing addressing information conveyed in CoAP options that would not be protected by Group OSCORE, but would be protected by DTLS. These options include Uri-Host, Uri-Port and Proxy-Uri. Note that DTLS does not define how to secure messages sent over IP multicast.</t>
      <t>Group OSCORE defines two modes of operation, that can be used independently or together:</t>
      <ul spacing="normal">
        <li>In the group mode, Group OSCORE requests and responses are digitally signed with the private key of the sender and the signature is embedded in the protected CoAP message. The group mode supports all COSE signature algorithms as well as signature verification by intermediaries. This mode is defined in <xref target="mess-processing"/>.</li>
        <li>In the pairwise mode, two group members exchange OSCORE requests and responses (typically) over unicast, and the messages are protected with symmetric keys. These symmetric keys are derived from Diffie-Hellman shared secrets, calculated with the asymmetric keys of the sender and recipient, allowing for shorter integrity tags and therefore lower message overhead. This mode is defined in <xref target="sec-pairwise-protection"/>.</li>
      </ul>
      <t>Both modes provide source authentication of CoAP messages. The application decides what mode to use, potentially on a per-message basis. Such decisions can be based, for instance, on pre-configured policies or dynamic assessing of the target recipient and/or resource, among other things. One important case is when requests are protected with the group mode, and responses with the pairwise mode. Since such responses convey shorter integrity tags instead of bigger, full-fledged signatures, this significantly reduces the message overhead in case of many responses to one request.</t>
      <t>A special deployment of Group OSCORE is to use pairwise mode only. For example, consider the case of a constrained-node network <xref target="RFC7228"/> with a large number of CoAP endpoints and the objective to establish secure communication between any pair of endpoints with a small provisioning effort and message overhead. Since the total number of security associations that needs to be established grows with the square of the number of endpoints, it is desirable to restrict the amount of secret keying material provided to each endpoint. Moreover, a key establishment protocol would need to be executed for each security association. One solution to this is to deploy Group OSCORE, with the endpoints being part of a group, and use the pairwise mode. This solution assumes a trusted third party called Group Manager (see <xref target="group-manager"/>). However, it has the benefit of providing a single shared secret, while distributing only the public keys of group members or a subset of those. After that, a CoAP endpoint can locally derive the OSCORE Security Context for the other endpoint in the group, and protect CoAP communications with very low overhead <xref target="I-D.ietf-lwig-security-protocol-comparison"/>.</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 described in CoAP <xref target="RFC7252"/> including "endpoint", "client", "server", "sender" and "recipient"; group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>; CBOR <xref target="RFC8949"/>; COSE <xref target="RFC9052"/><xref target="RFC9053"/> and related countersignatures  <xref target="I-D.ietf-cose-countersign"/>.</t>
        <t>Readers are also expected to be familiar with the terms and concepts for protection and processing of CoAP messages through OSCORE, such as "Security Context" and "Master Secret", defined in <xref target="RFC8613"/>.</t>
        <t>Terminology for constrained environments, such as "constrained device" and "constrained-node network", is defined in <xref target="RFC7228"/>.</t>
        <t>This document refers also to the following terminology.</t>
        <ul spacing="normal">
          <li>Keying material: data that is necessary to establish and maintain secure communication among endpoints. This includes, for instance, keys and IVs <xref target="RFC4949"/>.</li>
          <li>Authentication credential: set of information associated with an entity, including that entity's public key and parameters associated with the public key. Examples of authentication credentials are CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC7925"/> and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. Further details about authentication credentials are provided in <xref target="sec-pub-key-format"/>.</li>
          <li>Group: a set of endpoints that share group keying material and security parameters (Common Context, see <xref target="sec-context"/>). That is, unless otherwise specified, the term group used in this document refers to a "security group" (see <xref section="2.1" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/>), not to be confused with "CoAP group" or "application group".</li>
          <li>Group Manager: entity responsible for a group. Each endpoint in a group communicates securely with the respective Group Manager, which is neither required to be an actual group member nor to take part in the group communication. The full list of responsibilities of the Group Manager is provided in <xref target="sec-group-manager"/>.</li>
          <li>Silent server: member of a group that never sends protected responses in reply to requests. For CoAP group communications, requests are normally sent without necessarily expecting a response. A silent server may send unprotected responses, as error responses reporting an OSCORE error. Note that an endpoint can implement both a silent server and a client, i.e., the two roles are independent. An endpoint acting only as a silent server performs only Group OSCORE processing on incoming requests. Silent servers maintain less keying material and in particular do not have a Sender Context for the group. Since silent servers do not have a Sender ID, they cannot support the pairwise mode.</li>
          <li>Group Identifier (Gid): identifier assigned to the group, unique within the set of groups of a given Group Manager.</li>
          <li>Birth Gid: with respect to a group member, the Gid obtained by that group member upon (re-)joining the group.</li>
          <li>Group request: CoAP request message sent by a client in the group to all servers in that group.</li>
          <li>Key Generation Number: an integer value identifying the current version of the keying material used in a group.</li>
          <li>Source authentication: evidence that a received message in the group originated from a specific identified group member. This also provides assurance that the message was not tampered with by anyone, be it a different legitimate group member or an endpoint which is not a group member.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-context">
      <name>Security Context</name>
      <t>As per the terminology in <xref target="terminology"/>, this document refers to a group as a set of endpoints sharing keying material and security parameters for executing the Group OSCORE protocol. Each endpoint of a group is aware of whether the group uses the group mode, or the pairwise mode, or both. Then, an endpoint can use any mode it supports if also used in the group.</t>
      <t>All members of a group maintain a Security Context as defined in <xref section="3" sectionFormat="of" target="RFC8613"/> and extended as defined in this section. How the Security Context is established by the group members is out of scope for this document, but if there is more than one Security Context applicable to a message, then the endpoints MUST be able to tell which Security Context was latest established.</t>
      <t>The default setting for how to manage information about the group, including the Security Context, is described in terms of a Group Manager (see <xref target="group-manager"/>). In particular, the Group Manager indicates whether the group uses the group mode, the pairwise mode, or both of them, as part of the group data provided to candidate group members when joining the group.</t>
      <t>The remainder of this section provides further details about the Security Context of Group OSCORE. In particular, each endpoint which is member of a group maintains a Security Context as defined in <xref section="3" sectionFormat="of" target="RFC8613"/>, extended as follows (see <xref target="fig-additional-context-information"/>).</t>
      <ul spacing="normal">
        <li>
          <t>One Common Context, shared by all the endpoints in the group. Several new parameters are included in the Common Context.  </t>
          <t>
If a Group Manager is used for maintaining the group, the Common Context is extended with the authentication credential of the Group Manager, including the Group Manager's public key. When processing messages, the authentication credential of the Group Manager is included in the external additional authenticated data (see <xref target="sec-cose-object-ext-aad"/>).  </t>
          <t>
If the group uses the group mode, the Common context is extended with the following new parameters.  </t>
          <ul spacing="normal">
            <li>Signature Encryption Algorithm and Signature Algorithm. These relate to the encryption/decryption operations and to the computation/verification of countersignatures, respectively, when a message is protected with the group mode (see <xref target="mess-processing"/>).</li>
            <li>Group Encryption Key, used to perform encryption/decryption of countersignatures, when a message is protected with the group mode (see <xref target="mess-processing"/>).</li>
          </ul>
          <t>
If the group uses the pairwise mode, the Common Context is extended with a Pairwise Key Agreement Algorithm used for agreement on a static-static Diffie-Hellman shared secret, from which pairwise keys are derived (see <xref target="key-derivation-pairwise"/>) to protect messages with the pairwise mode (see <xref target="sec-pairwise-protection"/>).</t>
        </li>
        <li>
          <t>One Sender Context, extended with the endpoint's private key and authentication credential including the endpoint's public key.  </t>
          <t>
The private key is used to sign messages protected with the group mode, or for deriving pairwise keys in pairwise mode (see <xref target="sec-derivation-pairwise"/>). The authentication credential is used for deriving pairwise keys in pairwise mode, and is included in the external additional authenticated data when processing outgoing messages (see <xref target="sec-pairwise-protection"/>).  </t>
          <t>
If the endpoint supports the pairwise mode, the Sender Context is also extended with the Pairwise Sender Keys associated with the other endpoints (see <xref target="sec-derivation-pairwise"/>).  </t>
          <t>
The Sender Context is omitted if the endpoint is configured exclusively as silent server.</t>
        </li>
        <li>
          <t>One Recipient Context for each other endpoint from which messages are received. It is not necessary to maintain Recipient Contexts associated with endpoints from which messages are not (expected to be) received. The Recipient Context is extended with the authentication credential of the other endpoint, including that endpoint's public key.  </t>
          <t>
The public key is used to verify the signature of messages protected with the group mode from the other endpoint and for deriving the pairwise keys in pairwise mode (see <xref target="sec-derivation-pairwise"/>). The authentication credential is used for deriving pairwise keys in pairwise mode, and is included in the external additional authenticated data when processing incoming messages from the other endpoint (see <xref target="sec-pairwise-protection"/>).  </t>
          <t>
If the endpoint supports the pairwise mode, then the Recipient Context is also extended with the Pairwise Recipient Key associated with the other endpoint (see <xref target="sec-derivation-pairwise"/>).</t>
        </li>
      </ul>
      <figure anchor="fig-additional-context-information">
        <name>Additions to the OSCORE Security Context. The optional elements labeled with * (with ^) are present only if the group uses the group mode (the pairwise mode).</name>
        <artwork align="center"><![CDATA[
+-------------------+-------------------------------------------------+
| Context Component | New Information Elements                        |
+-------------------+-------------------------------------------------+
| Common Context    |   Group Manager Authentication Credential       |
|                   | * Signature Encryption Algorithm                |
|                   | * Signature Algorithm                           |
|                   | * Group Encryption Key                          |
|                   | ^ Pairwise Key Agreement Algorithm              |
+-------------------+-------------------------------------------------+
| Sender Context    |   Endpoint's own private key                    |
|                   |   Endpoint's own authentication credential      |
|                   | ^ Pairwise Sender Keys for the other endpoints  |
+-------------------+-------------------------------------------------+
| Each              |   Other endpoint's authentication credential    |
| Recipient Context | ^ Pairwise Recipient Key for the other endpoint |
+-------------------+-------------------------------------------------+
]]></artwork>
      </figure>
      <section anchor="ssec-common-context">
        <name>Common Context</name>
        <t>The Common Context may be acquired from the Group Manager (see <xref target="group-manager"/>). The following sections define how the Common Context is extended, compared to <xref target="RFC8613"/>.</t>
        <section anchor="ssec-common-context-aead-alg">
          <name>AEAD Algorithm</name>
          <t>AEAD Algorithm identifies the COSE AEAD algorithm to use for encryption, when messages are protected using the pairwise mode (see <xref target="sec-pairwise-protection"/>). This algorithm MUST provide integrity protection. This parameter is immutable once the Common Context is established, and it is not relevant if the group uses only the group mode.</t>
        </section>
        <section anchor="ssec-common-context-id-context">
          <name>ID Context</name>
          <t>The ID Context parameter (see Sections <xref target="RFC8613" section="3.1" sectionFormat="bare"/> and <xref target="RFC8613" section="3.3" sectionFormat="bare"/> of <xref target="RFC8613"/>) in the Common Context SHALL contain the Group Identifier (Gid) of the group. The choice of the Gid format is application specific. An example of specific formatting of the Gid is given in <xref target="gid-ex"/>. The application needs to specify how to handle potential collisions between Gids (see <xref target="ssec-gid-collision"/>).</t>
        </section>
        <section anchor="ssec-common-context-gm-pub-key">
          <name>Group Manager Authentication Credential</name>
          <t>Group Manager Authentication Credential specifies the authentication credential of the Group Manager, including the Group Manager's public key. This is included in the external additional authenticated data when processing messages (see <xref target="sec-cose-object-ext-aad"/>).</t>
          <t>Each group member MUST obtain the authentication credential of the Group Manager with a valid proof-of-possession of the corresponding private key, for instance from the Group Manager itself when joining the group. Further details on the provisioning of the Group Manager's authentication credential to the group members are out of the scope of this document.</t>
        </section>
        <section anchor="ssec-common-context-cs-enc-alg">
          <name>Signature Encryption Algorithm</name>
          <t>Signature Encryption Algorithm identifies the algorithm to use for encryption, when messages are protected using the group mode (see <xref target="mess-processing"/>). This algorithm MAY provide integrity protection. This parameter is immutable once the Common Context is established.</t>
          <t>This algorithm is not used to encrypt the countersignature in messages protected using the group mode, for which the method defined in <xref target="sec-cose-object-unprotected-field"/> is used.</t>
        </section>
        <section anchor="ssec-common-context-cs-alg">
          <name>Signature Algorithm</name>
          <t>Signature Algorithm identifies the digital signature algorithm used to compute a countersignature on the COSE object (see Sections <xref target="I-D.ietf-cose-countersign" section="3.2" sectionFormat="bare"/> and <xref target="I-D.ietf-cose-countersign" section="3.3" sectionFormat="bare"/> of <xref target="I-D.ietf-cose-countersign"/>), when messages are protected using the group mode (see <xref target="mess-processing"/>). This parameter is immutable once the Common Context is established.</t>
        </section>
        <section anchor="ssec-common-context-group-enc-key">
          <name>Group Encryption Key</name>
          <t>Group Encryption Key specifies the encryption key for deriving a keystream to encrypt/decrypt a countersignature, when a message is protected with the group mode (see <xref target="mess-processing"/>).</t>
          <t>The Group Encryption Key is derived as defined for Sender/Recipient Keys in <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>, with the following differences.</t>
          <ul spacing="normal">
            <li>The 'id' element of the 'info' array is the empty byte string.</li>
            <li>The 'alg_aead' element of the 'info' array takes the value of Signature Encryption Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>).</li>
            <li>The 'type' element of the 'info' array is "Group Encryption Key". The label is an ASCII string and does not include a trailing NUL byte.</li>
            <li>L and the 'L' element of the 'info' array are the size of the key for the Signature Encryption Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>), in bytes.</li>
          </ul>
        </section>
        <section anchor="ssec-common-context-dh-alg">
          <name>Pairwise Key Agreement Algorithm</name>
          <t>Pairwise Key Agreement Algorithm identifies the elliptic curve Diffie-Hellman algorithm used to derive a static-static Diffie-Hellman shared secret, from which pairwise keys are derived (see <xref target="key-derivation-pairwise"/>) to protect messages with the pairwise mode (see <xref target="sec-pairwise-protection"/>). This parameter is immutable once the Common Context is established.</t>
        </section>
      </section>
      <section anchor="ssec-sender-recipient-context">
        <name>Sender Context and Recipient Context</name>
        <t>OSCORE specifies the derivation of Sender Context and Recipient Context, specifically of Sender/Recipient Keys and Common IV, from a set of input parameters (see <xref section="3.2" sectionFormat="of" target="RFC8613"/>).</t>
        <t>The derivation of Sender/Recipient Keys and Common IV defined in OSCORE applies also to Group OSCORE, with the following extensions compared to <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>.</t>
        <ul spacing="normal">
          <li>If the group uses (also) the group mode, the 'alg_aead' element of the 'info' array takes the value of Signature Encryption Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>).</li>
          <li>If the group uses only the pairwise mode, the 'alg_aead' element of the 'info' array takes the value of AEAD Algorithm from the Common Context (see <xref target="ssec-common-context-aead-alg"/>).</li>
        </ul>
        <t>The Sender ID SHALL be unique for each endpoint in a group with a certain tuple (Master Secret, Master Salt, Group Identifier), see <xref section="3.3" sectionFormat="of" target="RFC8613"/>.</t>
        <t>For Group OSCORE, the Sender Context and Recipient Context additionally contain asymmetric keys, as described previously in <xref target="sec-context"/>. The private key of the sender and the authentication credential including the corresponding public key can, for example, be generated by the endpoint or provisioned during manufacturing.</t>
        <t>With the exception of the authentication credential of the sender endpoint and the possibly associated pairwise keys, a receiver endpoint can derive a complete Security Context from a received Group OSCORE message and the Common Context. The authentication credentials in the Recipient Contexts can be retrieved from the Group Manager (see <xref target="group-manager"/>) upon joining the group. An authentication credential can alternatively be acquired from the Group Manager at a later time, for example the first time a message is received from a particular endpoint in the group (see <xref target="ssec-verify-request"/> and <xref target="ssec-verify-response"/>).</t>
        <t>For severely constrained devices, it may be not feasible to simultaneously handle the ongoing processing of a recently received message in parallel with the retrieval of the sender endpoint's authentication credential. Such devices can be configured to drop a received message for which there is no (complete) Recipient Context, and retrieve the sender endpoint's authentication credential in order to have it available to verify subsequent messages from that endpoint.</t>
        <t>An endpoint admits a maximum amount of Recipient Contexts for a same Security Context, e.g., due to memory limitations. After reaching that limit, the creation of a new Recipient Context results in an overflow. When this happens, the endpoint has to delete a current Recipient Context to install the new one. It is up to the application to define policies for selecting the current Recipient Context to delete. If the new Recipient Context has been installed after the endpoint has experienced the overflow above, then the Recipient Context is initialized with an invalid Replay Window, and accordingly requires the endpoint to take appropriate actions (see <xref target="ssec-loss-mutable-context-overflow"/>).</t>
      </section>
      <section anchor="sec-pub-key-format">
        <name>Authentication Credentials</name>
        <t>In a group, the following MUST hold for the authentication credential of each endpoint as well as for the authentication credential of the Group Manager.</t>
        <ul spacing="normal">
          <li>All authentication credentials MUST be encoded according to the same format used in the group. The used format MUST provide the public key as well as the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable).</li>
          <li>
            <t>All authentication credentials and the public key specified therein MUST be for the public key algorithm used in the group and aligned with the possible associated parameters used in the group, e.g., the used elliptic curve (when applicable).  </t>
            <t>
If the group uses (also) the group mode, the public key algorithm is the Signature Algorithm used in the group. If the group uses only the pairwise mode, the public key algorithm is the Pairwise Key Agreement Algorithm used in the group.  </t>
            <t>
If the authentication credentials are X.509 certificates <xref target="RFC7925"/> or C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>, the public key algorithm is fully described by the "algorithm" field of the "SubjectPublicKeyInfo" structure, and by the "subjectPublicKeyAlgorithm" element, respectively.  </t>
            <t>
If authentication credentials are CBOR Web Tokens (CWTs) or CWT Claims Sets (CCSs) <xref target="RFC8392"/>, the public key algorithm is fully described by a COSE key type and its "kty" and "crv" parameters.</t>
          </li>
        </ul>
        <t>Authentication credentials are used to derive pairwise keys (see <xref target="key-derivation-pairwise"/>) and are included in the external additional authenticated data when processing messages (see <xref target="sec-cose-object-ext-aad"/>). In both these cases, an endpoint in a group MUST treat authentication credentials as opaque data, i.e., by considering the same binary representation made available to other endpoints in the group, possibly through a designated trusted source (e.g., the Group Manager).</t>
        <t>For example, an X.509 certificate is provided as its direct binary serialization. If C509 certificates or CWTs are used as authentication credentials, each is provided as the binary serialization of a (possibly tagged) CBOR array. If CCSs are used as authentication credentials, each is provided as the binary serialization of a CBOR map.</t>
        <t>If authentication credentials are CWTs, then the untagged CWT associated with an entity is stored in the Security Context and used as authentication credential for that entity.</t>
        <t>If authentication credentials are X.509 / C509 certificates or CWTs and the authentication credential associated with an entity is provided within a chain or a bag, then only the end-entity certificate or end-entity untagged CWT is stored in the Security Context and used as authentication credential for that entity.</t>
        <t>Storing whole authentication credentials rather than only a subset of those may result in a non-negligible storage overhead. On the other hand, it also ensures that authentication credentials are correctly used in a simple, flexible and non-error-prone way, also taking into account future credential formats as entirely new or extending existing ones. In particular, it is ensured that:</t>
        <ul spacing="normal">
          <li>When used to derive pairwise keys and when included in the external additional authenticated data, authentication credentials can also specify possible metadata and parameters related to the included public key. Besides the public key algorithm, these comprise other relevant pieces of information such as key usage, expiration time, issuer and subject.</li>
          <li>All endpoints using another endpoint's authentication credential use exactly the same binary serialization, as obtained and distributed by the credential provider (e.g., the Group Manager) and as originally crafted by the credential issuer. In turn, this does not require to define and maintain canonical subsets of authentication credentials and their corresponding encoding, and spares endpoints from error-prone re-encoding operations.</li>
        </ul>
        <t>Depending on the particular deployment and the intended group size, limiting the storage overhead of endpoints in a group can be an incentive for system/network administrators to prefer using a compact format of authentication credentials in the first place.</t>
      </section>
      <section anchor="sec-derivation-pairwise">
        <name>Pairwise Keys</name>
        <t>Certain signature schemes, such as EdDSA and ECDSA, support a secure combined signature and encryption scheme. This section specifies the derivation of "pairwise keys", for use in the pairwise mode defined in <xref target="sec-pairwise-protection"/>.</t>
        <t>Group OSCORE keys used for both signature and encryption MUST be used only for purposes related to Group OSCORE. These include the processing of messages with Group OSCORE, as well as performing proof-of-possession of private keys, e.g., upon joining a group through the Group Manager (see <xref target="group-manager"/>).</t>
        <section anchor="key-derivation-pairwise">
          <name>Derivation of Pairwise Keys</name>
          <t>Using the Group OSCORE Security Context (see <xref target="sec-context"/>), a group member can derive AEAD keys, to protect point-to-point communication between itself and any other endpoint X in the group by means of the AEAD Algorithm from the Common Context (see <xref target="ssec-common-context-aead-alg"/>). The key derivation of these so-called pairwise keys follows the same construction as in <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>:</t>
          <artwork><![CDATA[
Pairwise Sender Key    = HKDF(Sender Key, IKM-Sender, info, L)
Pairwise Recipient Key = HKDF(Recipient Key, IKM-Recipient, info, L)

with

IKM-Sender    = Sender Auth Cred | Recipient Auth Cred | Shared Secret
IKM-Recipient = Recipient Auth Cred | Sender Auth Cred | Shared Secret
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>The Pairwise Sender Key is the AEAD key for processing outgoing messages addressed to endpoint X.</li>
            <li>The Pairwise Recipient Key is the AEAD key for processing incoming messages from endpoint X.</li>
            <li>HKDF is the OSCORE HKDF algorithm <xref target="RFC8613"/> from the Common Context.</li>
            <li>The Sender Key from the Sender Context is used as salt in the HKDF, when deriving the Pairwise Sender Key.</li>
            <li>The Recipient Key from the Recipient Context associated with endpoint X is used as salt in the HKDF, when deriving the Pairwise Recipient Key.</li>
            <li>Sender Auth Cred is the endpoint's own authentication credential from the Sender Context.</li>
            <li>Recipient Auth Cred is the endpoint X's authentication credential from the Recipient Context associated with the endpoint X.</li>
            <li>The Shared Secret is computed as a cofactor Diffie-Hellman shared secret, see Section 5.7.1.2 of <xref target="NIST-800-56A"/>, using the Pairwise Key Agreement Algorithm. The endpoint uses its private key from the Sender Context and the other endpoint's public key included in Recipient Auth Cred. Note the requirement of validation of public keys in <xref target="ssec-crypto-considerations"/>. For X25519 and X448, the procedure is described in <xref section="5" sectionFormat="of" target="RFC7748"/> using public keys mapped to Montgomery coordinates, see <xref target="montgomery"/>.</li>
            <li>IKM-Sender is the Input Keying Material (IKM) used in the HKDF for the derivation of the Pairwise Sender Key. IKM-Sender is the byte string concatenation of Sender Auth Cred, Recipient Auth Cred and the Shared Secret. The authentication credentials Sender Auth Cred and Recipient Auth Cred are binary encoded as defined in <xref target="sec-pub-key-format"/>.</li>
            <li>IKM-Recipient is the Input Keying Material (IKM) used in the HKDF for the derivation of the Pairwise Recipient Key. IKM-Recipient is the byte string concatenation of Recipient Auth Cred, Sender Auth Cred and the Shared Secret. The authentication credentials Recipient Auth Cred and Sender Auth Cred are binary encoded as defined in <xref target="sec-pub-key-format"/>.</li>
            <li>
              <t>info and L are as defined in <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>. That is:  </t>
              <ul spacing="normal">
                <li>The 'alg_aead' element of the 'info' array takes the value of AEAD Algorithm from the Common Context (see <xref target="ssec-common-context-aead-alg"/>).</li>
                <li>L  and the 'L' element of the 'info' array are the size of the key for the AEAD Algorithm from the Common Context (see <xref target="ssec-common-context-aead-alg"/>), in bytes.</li>
              </ul>
            </li>
          </ul>
          <t>If EdDSA asymmetric keys are used, the Edward coordinates are mapped to Montgomery coordinates using the maps defined in Sections <xref target="RFC7748" section="4.1" sectionFormat="bare"/> and <xref target="RFC7748" section="4.2" sectionFormat="bare"/> of <xref target="RFC7748"/>, before using the X25519 and X448 functions defined in <xref section="5" sectionFormat="of" target="RFC7748"/>. For further details, see <xref target="montgomery"/>. ECC asymmetric keys in Montgomery or Weirstrass form are used directly in the key agreement algorithm without coordinate mapping.</t>
          <t>After establishing a partially or completely new Security Context (see <xref target="ssec-sec-context-persistence"/> and <xref target="sec-group-key-management"/>), the old pairwise keys MUST be deleted. Since new Sender/Recipient Keys are derived from the new group keying material (see <xref target="ssec-sender-recipient-context"/>), every group member MUST use the new Sender/Recipient Keys when deriving new pairwise keys.</t>
          <t>As long as any two group members preserve the same asymmetric keys, their Diffie-Hellman shared secret does not change across updates of the group keying material.</t>
        </section>
        <section anchor="montgomery">
          <name>ECDH with Montgomery Coordinates</name>
          <section anchor="curve25519">
            <name>Curve25519</name>
            <t>The y-coordinate of the other endpoint's Ed25519 public key is decoded as specified in <xref section="5.1.3" sectionFormat="of" target="RFC8032"/>. The Curve25519 u-coordinate is recovered as u = (1 + y) / (1 - y) (mod p) following the map in <xref section="4.1" sectionFormat="of" target="RFC7748"/>. Note that the mapping is not defined for y = 1, and that y = -1 maps to u = 0 which corresponds to the neutral group element and thus will result in a degenerate shared secret. Therefore implementations MUST abort if the y-coordinate of the other endpoint's Ed25519 public key is 1 or -1 (mod p).</t>
            <t>The private signing key byte strings (= the lower 32 bytes used for generating the public key, see step 1 of <xref section="5.1.5" sectionFormat="of" target="RFC8032"/>) are decoded the same way for signing in Ed25519 and scalar multiplication in X25519. Hence, to compute the shared secret the endpoint applies the X25519 function to the Ed25519 private signing key byte string and the encoded u-coordinate byte string as specified in <xref section="5" sectionFormat="of" target="RFC7748"/>.</t>
          </section>
          <section anchor="curve448">
            <name>Curve448</name>
            <t>The y-coordinate of the other endpoint's Ed448 public key is decoded as specified in <xref section="5.2.3." sectionFormat="of" target="RFC8032"/>. The Curve448 u-coordinate is recovered as u = y^2 * (d * y^2 - 1) / (y^2 - 1) (mod p) following the map from "edwards448" in <xref section="4.2" sectionFormat="of" target="RFC7748"/>, and also using the relation x^2 = (y^2 - 1)/(d * y^2 - 1) from the curve equation. Note that the mapping is not defined for y = 1 or -1. Therefore implementations MUST abort if the y-coordinate of the peer endpoint's Ed448 public key is 1 or -1 (mod p).</t>
            <t>The private signing key byte strings (= the lower 57 bytes used for generating the public key, see step 1 of <xref section="5.2.5" sectionFormat="of" target="RFC8032"/>) are decoded the same way for signing in Ed448 and scalar multiplication in X448. Hence, to compute the shared secret the endpoint applies the X448 function to the Ed448 private signing key byte string and the encoded u-coordinate byte string as specified in <xref section="5" sectionFormat="of" target="RFC7748"/>.</t>
          </section>
        </section>
        <section anchor="pairwise-seqno">
          <name>Usage of Sequence Numbers</name>
          <t>When using any of its Pairwise Sender Keys, a sender endpoint including the 'Partial IV' parameter in the protected message MUST use the current fresh value of the Sender Sequence Number from its Sender Context (see <xref target="ssec-sender-recipient-context"/>). That is, the same Sender Sequence Number space is used for all outgoing messages protected with Group OSCORE, thus limiting both storage and complexity.</t>
          <t>On the other hand, when combining group and pairwise communication modes, this may result in the Partial IV values moving forward more often. This can happen when a client engages in frequent or long sequences of one-to-one exchanges with servers in the group, by sending requests over unicast. In turn, this contributes to a sooner exhaustion of the Sender Sequence Number space of the client, which would then require to take actions for deriving a new Sender Context before resuming communications in the group (see <xref target="ssec-wrap-around-partial-iv"/>).</t>
        </section>
        <section anchor="pairwise-implementation">
          <name>Security Context for Pairwise Mode</name>
          <t>If the pairwise mode is supported, the Security Context additionally includes Pairwise Key Agreement Algorithm and the pairwise keys, as described at the beginning of <xref target="sec-context"/>.</t>
          <t>The pairwise keys as well as the shared secrets used in their derivation (see <xref target="key-derivation-pairwise"/>) may be stored in memory or recomputed every time they are needed. The shared secret changes only when a public/private key pair used for its derivation changes, which results in the pairwise keys also changing. Additionally, the pairwise keys change if the Sender ID changes or if a new Security Context is established for the group (see <xref target="sec-group-re-join"/>). In order to optimize protocol performance, an endpoint may store the derived pairwise keys for easy retrieval.</t>
          <t>In the pairwise mode, the Sender Context includes the Pairwise Sender Keys to use with the other endpoints (see <xref target="fig-additional-context-information"/>). In order to identify the right key to use, the Pairwise Sender Key for endpoint X may be associated with the Recipient ID of endpoint X, as defined in the Recipient Context (i.e., the Sender ID from the point of view of endpoint X). In this way, the Recipient ID can be used to lookup for the right Pairwise Sender Key. This association may be implemented in different ways, e.g., by storing the pair (Recipient ID, Pairwise Sender Key) or linking a Pairwise Sender Key to a Recipient Context.</t>
        </section>
      </section>
      <section anchor="ssec-sec-context-persistence">
        <name>Update of Security Context</name>
        <t>It is RECOMMENDED that the immutable part of the Security Context is stored in non-volatile memory, or that it can otherwise be reliably accessed throughout the operation of the group, e.g., after a device reboots. However, also immutable parts of the Security Context may need to be updated, for example due to scheduled key renewal, new or re-joining members in the group, or the fact that the endpoint changes Sender ID (see <xref target="sec-group-re-join"/>).</t>
        <t>On the other hand, the mutable parts of the Security Context are updated by the endpoint when executing the security protocol, but may nevertheless become outdated, e.g., due to loss of the mutable Security Context (see <xref target="ssec-loss-mutable-context"/>) or exhaustion of Sender Sequence Numbers (see <xref target="ssec-wrap-around-partial-iv"/>).</t>
        <t>If it is not feasible or practically possible to store and maintain up-to-date the mutable part in non-volatile memory (e.g., due to limited number of write operations), the endpoint MUST be able to detect a loss of the mutable Security Context and MUST accordingly take the actions defined in <xref target="ssec-loss-mutable-context"/>.</t>
        <section anchor="ssec-loss-mutable-context">
          <name>Loss of Mutable Security Context</name>
          <t>An endpoint may lose its mutable Security Context, e.g., due to a reboot (see <xref target="ssec-loss-mutable-context-total"/>) or to an overflow of Recipient Contexts (see <xref target="ssec-loss-mutable-context-overflow"/>).</t>
          <t>In such a case, the endpoint needs to prevent the re-use of a nonce with the same AEAD key, and to handle incoming replayed messages.</t>
          <section anchor="ssec-loss-mutable-context-total">
            <name>Reboot and Total Loss</name>
            <t>In case a loss of the Sender Context and/or of the Recipient Contexts is detected (e.g., following a reboot), the endpoint MUST NOT protect further messages using this Security Context to avoid reusing an AEAD nonce with the same AEAD key.</t>
            <t>In particular, before resuming its operations in the group, the endpoint MUST retrieve new Security Context parameters from the Group Manager (see <xref target="sec-group-re-join"/>) and use them to derive a new Sender Context (see <xref target="ssec-sender-recipient-context"/>). Since this includes a newly derived Sender Key, a server will not reuse the same pair (key, nonce), even when using the Partial IV of (old re-injected) requests to build the AEAD nonce for protecting the corresponding responses.</t>
            <t>From then on, the endpoint MUST use the latest installed Sender Context to protect outgoing messages. Also, newly created Recipient Contexts will have a Replay Window which is initialized as valid.</t>
            <t>If not able to establish an updated Sender Context, e.g., because of lack of connectivity with the Group Manager, the endpoint MUST NOT protect further messages using the current Security Context and MUST NOT accept incoming messages from other group members, as currently unable to detect possible replays.</t>
            <t>An adversary may leverage the above to perform a Denial of Service attack and prevent some group members from communicating altogether. That is, the adversary can first block the communication path between the Group Manager and some individual group members. This can be achieved, for instance, by injecting fake responses to DNS queries for the Group Manager hostname, or by removing a network link used for routing traffic towards the Group Manager. Then, the adversary can induce a reboot for some endpoints in the group, e.g., by triggering a short power outage. After that, such endpoints that have lost their Sender Context and/or Recipient Contexts following the reboot would not be able to obtain new Security Context parameters from the Group Manager, as specified above. Thus, they would not be able to further communicate in the group until connectivity with the Group Manager is restored.</t>
          </section>
          <section anchor="ssec-loss-mutable-context-overflow">
            <name>Overflow of Recipient Contexts</name>
            <t>After reaching the maximum amount of Recipient Contexts, an endpoint will experience an overflow when installing a new Recipient Context, as it requires to first delete an existing one (see <xref target="ssec-sender-recipient-context"/>).</t>
            <t>Every time this happens, the Replay Window of the new Recipient Context is initialized as not valid. Therefore, the endpoint MUST take the following actions, before accepting request messages from the client associated with the new Recipient Context.</t>
            <t>If it is not configured as silent server, the endpoint MUST either:</t>
            <ul spacing="normal">
              <li>Retrieve new Security Context parameters from the Group Manager and derive a new Sender Context, as defined in <xref target="ssec-loss-mutable-context-total"/>; or</li>
              <li>When receiving a first request to process with the new Recipient Context, use the approach specified in <xref target="sec-synch-challenge-response"/> and based on the Echo Option for CoAP <xref target="RFC9175"/>, if supported. In particular, the endpoint MUST use its Partial IV when generating the AEAD nonce and MUST include the Partial IV in the response message conveying the Echo Option. If the endpoint supports the CoAP Echo Option, it is RECOMMENDED to take this approach.</li>
            </ul>
            <t>If it is configured exclusively as silent server, the endpoint MUST wait for the next group rekeying to occur, in order to derive a new Security Context and re-initialize the Replay Window of each Recipient Contexts as valid.</t>
          </section>
        </section>
        <section anchor="ssec-wrap-around-partial-iv">
          <name>Exhaustion of Sender Sequence Number</name>
          <t>An endpoint can eventually exhaust the Sender Sequence Number, which is incremented for each new outgoing message including a Partial IV. This is the case for group requests, Observe notifications <xref target="RFC7641"/> and, optionally, any other response.</t>
          <t>Implementations MUST be able to detect an exhaustion of Sender Sequence Number, after the endpoint has consumed the largest usable value. If an implementation's integers support wrapping addition, the implementation MUST treat Sender Sequence Number as exhausted when a wrap-around is detected.</t>
          <t>Upon exhausting the Sender Sequence Numbers, the endpoint MUST NOT use this Security Context to protect further messages including a Partial IV.</t>
          <t>The endpoint SHOULD inform the Group Manager, retrieve new Security Context parameters from the Group Manager (see <xref target="sec-group-re-join"/>), and use them to derive a new Sender Context (see <xref target="ssec-sender-recipient-context"/>).</t>
          <t>From then on, the endpoint MUST use its latest installed Sender Context to protect outgoing messages.</t>
        </section>
        <section anchor="sec-group-re-join">
          <name>Retrieving New Security Context Parameters</name>
          <t>The Group Manager can assist an endpoint with an incomplete Sender Context to retrieve missing data of the Security Context and thereby become fully operational in the group again. The two main options for the Group Manager are described in this section: i) assignment of a new Sender ID to the endpoint (see <xref target="new-sender-id"/>); and ii) establishment of a new Security Context for the group (see <xref target="new-sec-context"/>). The update of the Replay Window in each of the Recipient Contexts is discussed in <xref target="sec-synch-seq-num"/>.</t>
          <t>As group membership changes, or as group members get new Sender IDs (see <xref target="new-sender-id"/>) so do the relevant Recipient IDs that the other endpoints need to keep track of. As a consequence, group members may end up retaining stale Recipient Contexts, that are no longer useful to verify incoming secure messages.</t>
          <t>The Recipient ID ('kid') SHOULD NOT be considered as a persistent and reliable identifier of a group member. Such an indication can be achieved only by using that member's public key, when verifying countersignatures of received messages (in group mode), or when verifying messages integrity-protected with pairwise keying material derived from authentication credentials and associated asymmetric keys (in pairwise mode).</t>
          <t>Furthermore, applications MAY define policies to: i) delete (long-)unused Recipient Contexts and reduce the impact on storage space; as well as ii) check with the Group Manager that an authentication credential with the public key included therein is currently the one associated with a 'kid' value, after a number of consecutive failed verifications.</t>
          <section anchor="new-sender-id">
            <name>New Sender ID for the Endpoint</name>
            <t>The Group Manager may assign a new Sender ID to an endpoint, while leaving the Gid, Master Secret and Master Salt unchanged in the group. In this case, the Group Manager MUST assign a Sender ID that has not been used in the group since the latest time when the current Gid value was assigned to the group (see <xref target="sec-group-key-management"/>).</t>
            <t>Having retrieved the new Sender ID, and potentially other missing data of the immutable Security Context, the endpoint can derive a new Sender Context (see <xref target="ssec-sender-recipient-context"/>). When doing so, the endpoint resets the Sender Sequence Number in its Sender Context to 0, and derives a new Sender Key. This is in turn used to possibly derive new Pairwise Sender Keys.</t>
            <t>From then on, the endpoint MUST use its latest installed Sender Context to protect outgoing messages.</t>
            <t>The assignment of a new Sender ID may be the result of different processes. The endpoint may request a new Sender ID, e.g., because of exhaustion of Sender Sequence Numbers (see <xref target="ssec-wrap-around-partial-iv"/>). An endpoint may request to re-join the group, e.g., because of losing its mutable Security Context (see <xref target="ssec-loss-mutable-context"/>), and is provided with a new Sender ID together with the latest immutable Security Context.</t>
            <t>For the other group members, the Recipient Context corresponding to the old Sender ID becomes stale (see <xref target="sec-group-key-management"/>).</t>
          </section>
          <section anchor="new-sec-context">
            <name>New Security Context for the Group</name>
            <t>The Group Manager may establish a new Security Context for the group (see <xref target="sec-group-key-management"/>). The Group Manager does not necessarily establish a new Security Context for the group if one member has an outdated Security Context (see <xref target="new-sender-id"/>), unless that was already planned or required for other reasons.</t>
            <t>All the group members need to acquire new Security Context parameters from the Group Manager. Once having acquired new Security Context parameters, each group member performs the following actions.</t>
            <ul spacing="normal">
              <li>From then on, it MUST NOT use the current Security Context to start processing new messages for the considered group.</li>
              <li>It completes any ongoing message processing for the considered group.</li>
              <li>
                <t>It derives and install a new Security Context. In particular:  </t>
                <ul spacing="normal">
                  <li>It re-derives the keying material stored in its Sender Context and Recipient Contexts (see <xref target="ssec-sender-recipient-context"/>). The Master Salt used for the re-derivations is the updated Master Salt parameter if provided by the Group Manager, or the empty byte string otherwise.</li>
                  <li>It resets its Sender Sequence Number in its Sender Context to 0.</li>
                  <li>It re-initializes the Replay Window of each Recipient Context.</li>
                  <li>For each ongoing observation where it is an observer client and that it wants to keep active, it resets to 0 the Notification Number of each associated server (see <xref target="sec-long-term-observations"/>).</li>
                </ul>
              </li>
            </ul>
            <t>From then on, it can resume processing new messages for the considered group. In particular:</t>
            <ul spacing="normal">
              <li>It MUST use its latest installed Sender Context to protect outgoing messages.</li>
              <li>It SHOULD use its latest installed Recipient Contexts to process incoming messages, unless application policies admit to temporarily retain and use the old, recent, Security Context (see <xref target="ssec-key-rotation-late-sender"/>).</li>
            </ul>
            <t>The distribution of a new Gid and Master Secret may result in temporarily misaligned Security Contexts among group members. In particular, this may result in a group member not being able to process messages received right after a new Gid and Master Secret have been distributed. A discussion on practical consequences and possible ways to address them, as well as on how to handle the old Security Context, is provided in <xref target="ssec-key-rotation"/>.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="group-manager">
      <name>The Group Manager</name>
      <t>As with OSCORE, endpoints communicating with Group OSCORE need to establish the relevant Security Context. Group OSCORE endpoints need to acquire OSCORE input parameters, information about the group(s) and about other endpoints in the group(s). This document is based on the existence of an entity called Group Manager and responsible for the group, but it does not mandate how the Group Manager interacts with the group members. The list of responsibilities of the Group Manager is compiled in <xref target="sec-group-manager"/>.</t>
      <t>A possible Group Manager to use is specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, where the join process is based on the ACE framework for authentication and authorization in constrained environments <xref target="RFC9200"/>.</t>
      <t>The Group Manager assigns an integer Key Generation Number to each of its groups, identifying the current version of the keying material used in that group. The first Key Generation Number assigned to every group MUST be 0. Separately for each group, the value of the Key Generation Number increases strictly monotonically, each time the Group Manager distributes new keying material to that group (see <xref target="sec-group-key-management"/>). That is, if the current Key Generation Number for a group is X, then X+1 will denote the keying material distributed and used in that group immediately after the current one.</t>
      <t>The Group Manager assigns unique Group Identifiers (Gids) to the groups under its control. Also, for each group, the Group Manager assigns unique Sender IDs (and thus Recipient IDs) to the respective group members. According to a hierarchical approach, the Gid value assigned to a group is associated with a dedicated space for the values of Sender ID and Recipient ID of the members of that group. When an endpoint (re-)joins a group, it is provided also with the current Gid to use in the group.</t>
      <t>The Group Manager maintains records of the authentication credentials of endpoints in a group, and provides information about the group and its members to other group members and to external entities with selected roles (see <xref target="sec-additional-entities"/>). Upon endpoints' joining, the Group Manager collects such authentication credentials and MUST verify proof-of-possession of the respective private key.</t>
      <t>An endpoint acquires group data such as the Gid and OSCORE input parameters including its own Sender ID from the Group Manager, and provides information about its authentication credential to the Group Manager, for example upon joining the group.</t>
      <t>Furthermore, when joining the group or later on as a group member, an endpoint can retrieve from the Group Manager the authentication credential of the Group Manager as well as the authentication credential and other information associated with other members of the group, with which it can derive the corresponding Recipient Context. Together with the requested authentication credentials, the Group Manager MUST provide the Sender ID of the associated group members and the current Key Generation Number in the group. An application can configure a group member to asynchronously retrieve information about Recipient Contexts, e.g., by Observing <xref target="RFC7641"/> a resource at the Group Manager to get updates on the group membership.</t>
      <section anchor="sec-additional-entities">
        <name>Support for Additional Entities</name>
        <t>The Group Manager MAY serve additional entities acting as signature checkers, e.g., intermediary gateways. These entities do not join a group as members, but can retrieve authentication credentials of group members and other selected group data from the Group Manager, in order to solely verify countersignatures of messages protected in group mode (see <xref target="sec-processing-signature-checker"/>).</t>
        <t>In order to verify countersignatures of messages in a group, a signature checker needs to retrieve the following information about that group from the Group Manager.</t>
        <ul spacing="normal">
          <li>The current ID Context (Gid) used in the group.</li>
          <li>
            <t>The authentication credentials of the group members and the authentication credential of the Group Manager.  </t>
            <t>
If the signature checker is provided with a CWT for a given entity, then the authentication credential associated with that entity that the signature checker stores and uses is the untagged CWT.  </t>
            <t>
If the signature checker is provided with a chain or a bag of X.509 / C509 certificates or of CWTs for a given entity, then the authentication credential associated with that entity that the signature checker stores and uses is just the end-entity certificate or end-entity untagged CWT.</t>
          </li>
          <li>The current Group Encryption Key (see <xref target="ssec-common-context-group-enc-key"/>).</li>
          <li>The identifiers of the algorithms used in the group (see <xref target="sec-context"/>), i.e.: i) Signature Encryption Algorithm and Signature Algorithm; and ii) AEAD Algorithm and Pairwise Key Agreement Algorithm, if the group uses also the pairwise mode.</li>
        </ul>
        <t>A signature checker MUST be authorized before it can retrieve such information. To this end, the same method mentioned above based on the ACE framework <xref target="RFC9200"/> can be used.</t>
      </section>
      <section anchor="sec-group-key-management">
        <name>Management of Group Keying Material</name>
        <t>In order to establish a new Security Context for a group, the Group Manager MUST generate and assign to the group a new Group Identifier (Gid) and a new value for the Master Secret parameter. When doing so, a new value for the Master Salt parameter MAY also be generated and assigned to the group. When establishing the new Security Context, the Group Manager should preserve the current value of the Sender ID of each group member.</t>
        <t>The specific group key management scheme used to distribute new keying material is out of the scope of this document. A simple group key management scheme is defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. When possible, the delivery of rekeying messages should use a reliable transport, in order to reduce chances of group members missing a rekeying instance.</t>
        <t>The set of group members should not be assumed as fixed, i.e., the group membership is subject to changes, possibly on a frequent basis.</t>
        <t>The Group Manager MUST rekey the group when one or more endpoints leave the group. An endpoint may leave the group at own initiative, or may be evicted from the group by the Group Manager, e.g., in case an endpoint is compromised, or is suspected to be compromised. In either case, rekeying the group excludes such endpoints from future communications in the group, and thus preserves forward security. If a network node is compromised or suspected to be compromised, the Group Manager MUST evict from the group all the endpoints hosted by that node that are member of the group and rekey the group accordingly.</t>
        <t>If required by the application, the Group Manager MUST rekey the group also before one or more new joining endpoints are added to the group, thus preserving backward security.</t>
        <t>The establishment of the new Security Context for the group takes the following steps.</t>
        <ol spacing="normal" type="1"><li>The Group Manager MUST increment the Key Generation Number for the group by 1.</li>
          <li>
            <t>The Group Manager MUST build a set of stale Sender IDs including:  </t>
            <ul spacing="normal">
              <li>The Sender IDs that, during the current Gid, were both assigned to an endpoint and subsequently relinquished (see <xref target="new-sender-id"/>).</li>
              <li>The current Sender IDs of the group members that the upcoming group rekeying aims to exclude from future group communications, if any.</li>
            </ul>
          </li>
          <li>
            <t>The Group Manager rekeys the group, by distributing:  </t>
            <ul spacing="normal">
              <li>The new keying material, i.e., the new Master Secret, the new Gid and (optionally) the new Master Salt.</li>
              <li>The new Key Generation Number from step 1.</li>
              <li>The set of stale Sender IDs from step 2.</li>
            </ul>
            <t>
Further information may be distributed, depending on the specific group key management scheme used in the group.</t>
          </li>
        </ol>
        <t>When receiving the new group keying materal, a group member considers the received stale Sender IDs and performs the following actions.</t>
        <ul spacing="normal">
          <li>The group member MUST remove every authentication credential associated with a stale Sender ID from its list of group members' authentication credentials used in the group.</li>
          <li>The group member MUST delete each of its Recipient Contexts used in the group whose corresponding Recipient ID is a stale Sender ID.</li>
        </ul>
        <t>After that, the group member installs the new keying material and derives the corresponding new Security Context.</t>
        <t>A group member might miss one group rekeying or more consecutive instances. As a result, the group member will retain old group keying material with Key Generation Number GEN_OLD. Eventually, the group member can notice the discrepancy, e.g., by repeatedly failing to verify incoming messages, or by explicitly querying the Group Manager for the current Key Generation Number. Once the group member gains knowledge of having missed a group rekeying, it MUST delete the old keying material it stores.</t>
        <t>Then, the group member proceeds according to the following steps.</t>
        <ol spacing="normal" type="1"><li>The group member retrieves from the Group Manager the current group keying material, together with the current Key Generation Number GEN_NEW. The group member MUST NOT install the obtained group keying material yet.</li>
          <li>The group member asks the Group Manager for the set of stale Sender IDs.</li>
          <li>
            <t>If no exact indication can be obtained from the Group Manager, the group member MUST remove all the authentication credentials from its list of group members' authentication credentials used in the group and MUST delete all its Recipient Contexts used in the group.  </t>
            <t>
Otherwise, the group member MUST remove every authentication credential associated with a stale Sender ID from its list of group members' authentication credentials used in the group, and MUST delete each of its Recipient Contexts used in the group whose corresponding Recipient ID is a stale Sender ID.</t>
          </li>
          <li>The group member installs the current group keying material, and derives the corresponding new Security Context.</li>
        </ol>
        <t>Alternatively, the group member can re-join the group. In such a case, the group member MUST take one of the following two actions.</t>
        <ul spacing="normal">
          <li>The group member performs steps 2 and 3 above. Then, the group member re-joins the group.</li>
          <li>
            <t>The group member re-joins the group with the same roles it currently has in the group, and, during the re-joining process, it asks the Group Manager for the authentication credentials of all the current group members.  </t>
            <t>
Then, given Z the set of authentication credentials received from the Group Manager, the group member removes every authentication credential which is not in Z from its list of group members' authentication credentials used in the group, and deletes each of its Recipient Contexts used in the group that does not include any of the authentication credentials in Z.</t>
          </li>
        </ul>
        <t>By removing authentication credentials and deleting Recipient Contexts associated with stale Sender IDs, it is ensured that a recipient endpoint storing the latest group keying material does not store the authentication credentials of sender endpoints that are not current group members. This in turn allows group members to rely on stored authentication credentials to confidently assert the group membership of sender endpoints, when receiving incoming messages protected in group mode (see <xref target="mess-processing"/>).</t>
        <section anchor="recycling-of-identifiers">
          <name>Recycling of Identifiers</name>
          <t>This section specifies how the Group Manager handles and possibly reassigns Gid values and Sender ID values in a group.</t>
          <section anchor="sec-gid-recycling">
            <name>Recycling of Group Identifiers</name>
            <t>Since the Gid value changes every time a group is rekeyed, it can happen that, after several rekeying instances, the whole space of Gid values has been used for the group in question. When this happens, the Group Manager has no available Gid values to use that have never been assigned to the group during the group's lifetime.</t>
            <t>The occurrence of such an event and how long it would take to occur depend on the format and encoding of Gid values used in the group (see, e.g., <xref target="gid-ex"/>), as well as on the frequency of rekeying instances yielding a change of Gid value. Independently for each group under its control, the Group Manager can take one of the two following approaches.</t>
            <ul spacing="normal">
              <li>The Group Manager does not reassign Gid values. That is, once the whole space of Gid values has been used for a group, the Group Manager terminates the group and may re-establish a new group.</li>
              <li>
                <t>While the Gid value changes every time a group is rekeyed, the Group Manager can reassign Gid values previously used during a group's lifetime. By doing so, the group can continue to exist even once the whole space of Gid values has been used.  </t>
                <t>
The Group Manager MAY support and use this approach. In such a case, the Group Manager MUST take additional actions when handling Gid values and rekeying the group, as specified below.  </t>
                <t>
When a node (re-)joins the group and it is provided with the current Gid to use in the group, the Group Manager considers such a Gid as the Birth Gid of that endpoint for that group. For each group member, the Group Manager MUST store the latest corresponding Birth Gid until that member leaves the group. In case the endpoint has in fact re-joined the group, the newly determined Birth Gid overwrites the one currently stored.  </t>
                <t>
When establishing a new Security Context for the group, the Group Manager takes the additional following step between steps 1 and 2 of <xref target="sec-group-key-management"/>.  </t>
                <t>
A. The Group Manager MUST check if the new Gid to be distributed is equal to the Birth Gid of any of the current group members. If any of such "elder members" is found in the group, then:  </t>
                <ul spacing="normal">
                  <li>
                    <t>The Group Manager MUST evict the elder members from the group. That is, the Group Manager MUST terminate their membership and MUST rekey the group in such a way that the new keying material is not provided to those evicted elder members.      </t>
                    <t>
This ensures that an Observe notification <xref target="RFC7641"/> can never successfully match against the Observe requests of two different observations. In fact, the excluded elder members would eventually re-join the group, thus terminating any of their ongoing (long-lasting) observations (see <xref target="sec-long-term-observations"/>). Therefore, it is ensured by construction that no observer client can have two different ongoing observations such that the two respective Observe requests were protected using the same Partial IV, Gid and Sender ID.</t>
                  </li>
                  <li>Until a further following group rekeying, the Group Manager MUST store the list of those latest-evicted elder members. If any of those endpoints re-joins the group before a further following group rekeying occurs, the Group Manager MUST NOT rekey the group upon their re-joining. When one of those endpoints re-joins the group, the Group Manager can rely, e.g., on the ongoing secure communication association to recognize the endpoint as included in the stored list.</li>
                </ul>
              </li>
            </ul>
          </section>
          <section anchor="sec-sid-recycling">
            <name>Recycling of Sender IDs</name>
            <t>From the moment when a Gid is assigned to a group until the moment a new Gid is assigned to that same group, the Group Manager MUST NOT reassign a Sender ID within the group. This prevents to reuse a Sender ID ('kid') with the same Gid, Master Secret and Master Salt. Within this restriction, the Group Manager can assign a Sender ID used under an old Gid value (including under a same, recycled Gid value), thus avoiding Sender ID values to irrecoverably grow in size.</t>
            <t>Even when an endpoint joining a group is recognized as a current member of that group, e.g., through the ongoing secure communication association, the Group Manager MUST assign a new Sender ID different than the one currently used by the endpoint in the group, unless the group is rekeyed first and a new Gid value is established.</t>
          </section>
          <section anchor="relation-between-identifiers-and-keying-material">
            <name>Relation between Identifiers and Keying Material</name>
            <t><xref target="fig-key-material-diagram"/> overviews the different identifiers and keying material components, considering their relation and possible reuse across group rekeying.</t>
            <figure anchor="fig-key-material-diagram">
              <name>Relations among keying material components.</name>
              <artwork align="center"><![CDATA[
Components changed in lockstep
    upon a group rekeying
+----------------------------+            * Changing a kid does not
|                            |              need changing the Group ID
| Master               Group |<--> kid1
| Secret <---> o <--->  ID   |            * A kid is not reassigned
|              ^             |<--> kid2     under the ongoing usage of
|              |             |              the current Group ID
|              |             |<--> kid3
|              v             |            * Upon changing the Group ID,
|         Master Salt        | ... ...      every current kid should
|         (optional)         |              be preserved for efficient
|                            |              key rollover
| The Key Generation Number  |
| is incremented by 1        |            * After changing Group ID, an
|                            |              unused kid can be assigned,
+----------------------------+              even if it was used before
                                            the Group ID change
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="sec-group-manager">
        <name>Responsibilities of the Group Manager</name>
        <t>The Group Manager is responsible for performing the following tasks:</t>
        <ol spacing="normal" type="1"><li>Creating and managing OSCORE groups. This includes the assignment of a Gid to every newly created group, ensuring uniqueness of Gids within the set of its OSCORE groups and, optionally, the secure recycling of Gids.</li>
          <li>Defining policies for authorizing the joining of its OSCORE groups.</li>
          <li>Handling the join process to add new endpoints as group members.</li>
          <li>Establishing the Common Context part of the Security Context, and providing it to authorized group members during the join process, together with the corresponding Sender Context.</li>
          <li>Updating the Key Generation Number and the Gid of its OSCORE groups, upon renewing the respective Security Context.</li>
          <li>
            <t>Generating and managing Sender IDs within its OSCORE groups, as well as assigning and providing them to new endpoints during the join process, or to current group members upon request of renewal or re-joining. This includes ensuring that:  </t>
            <ul spacing="normal">
              <li>Each Sender ID is unique within each of the OSCORE groups;</li>
              <li>Each Sender ID is not reassigned within the same group since the latest time when the current Gid value was assigned to the group. That is, the Sender ID is not reassigned even to a current group member re-joining the same group, without a rekeying happening first.</li>
            </ul>
          </li>
          <li>Defining communication policies for each of its OSCORE groups, and signaling them to new endpoints during the join process.</li>
          <li>Renewing the Security Context of an OSCORE group upon membership change, by revoking and renewing common security parameters and keying material (rekeying).</li>
          <li>Providing the management keying material that a new endpoint requires to participate in the rekeying process, consistently with the key management scheme used in the group joined by the new endpoint.</li>
          <li>Assisting a group member that has missed a group rekeying instance to understand which authentication credentials and Recipient Contexts to delete, as associated with former group members.</li>
          <li>Acting as key repository, in order to handle the authentication credentials of the members of its OSCORE groups, and providing such authentication credentials to other members of the same group upon request. The actual storage of authentication credentials may be entrusted to a separate secure storage device or service.</li>
          <li>Validating that the format and parameters of authentication credentials of group members are consistent with the public key algorithm and related parameters used in the respective OSCORE group.</li>
        </ol>
        <t>The Group Manager specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> provides these functionalities.</t>
      </section>
    </section>
    <section anchor="sec-cose-object">
      <name>The COSE Object</name>
      <t>Building on <xref section="5" sectionFormat="of" target="RFC8613"/>, this section defines how to use COSE <xref target="RFC9052"/> to wrap and protect data in the original message. OSCORE uses the untagged COSE_Encrypt0 structure with an Authenticated Encryption with Associated Data (AEAD) algorithm. Unless otherwise specified, the following modifications apply for both the group mode and the pairwise mode of Group OSCORE.</t>
      <section anchor="sec-cose-object-unprotected-field">
        <name>Countersignature</name>
        <t>When protecting a message in group mode, the 'unprotected' field MUST additionally include the following parameter:</t>
        <ul spacing="normal">
          <li>
            <t>COSE_Countersignature0: its value is set to the encrypted countersignature of the COSE object, namely ENC_SIGNATURE. That is:  </t>
            <ul spacing="normal">
              <li>
                <t>The countersignature of the COSE object, namely SIGNATURE, is computed by the sender as described in Sections <xref target="I-D.ietf-cose-countersign" section="3.2" sectionFormat="bare"/> and <xref target="I-D.ietf-cose-countersign" section="3.3" sectionFormat="bare"/> of <xref target="I-D.ietf-cose-countersign"/>, by using its private key and according to the Signature Algorithm in the Security Context.      </t>
                <t>
In particular, the Countersign_structure contains the context text string "CounterSignature0", the external_aad as defined in <xref target="sec-cose-object-ext-aad"/> of this document, and the ciphertext of the COSE object as payload.</t>
              </li>
              <li>
                <t>The encrypted countersignature, namely ENC_SIGNATURE, is computed as      </t>
                <t>
ENC_SIGNATURE = SIGNATURE XOR KEYSTREAM      </t>
                <t>
where KEYSTREAM is derived as per <xref target="sssec-encrypted-signature-keystream"/>.</t>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="sssec-encrypted-signature-keystream">
          <name>Keystream Derivation</name>
          <t>The following defines how an endpoint derives the keystream KEYSTREAM, used to encrypt/decrypt the countersignature of an outgoing/incoming message M protected in group mode.</t>
          <t>The keystream SHALL be derived as follows, by using the HKDF Algorithm from the Common Context (see Section 3.2 of <xref target="RFC8613"/>), which consists of composing the HKDF-Extract and HKDF-Expand steps <xref target="RFC5869"/>.</t>
          <t>KEYSTREAM = HKDF(salt, IKM, info, L)</t>
          <t>The input parameters of HKDF are as follows.</t>
          <ul spacing="normal">
            <li>salt takes as value the Partial IV (PIV) used to protect M. Note that, if M is a response, salt takes as value either: i) the fresh Partial IV generated by the server and included in the response; or ii) the same Partial IV of the request generated by the client and not included in the response.</li>
            <li>IKM is the Group Encryption Key from the Common Context (see <xref target="ssec-common-context-group-enc-key"/>).</li>
            <li>info is the serialization of a CBOR array consisting of (the notation follows <xref target="RFC8610"/>):</li>
          </ul>
          <sourcecode type="CDDL"><![CDATA[
info = [
  id : bstr,
  id_context : bstr,
  type : bool,
  L: uint
]
]]></sourcecode>
          <t>where:</t>
          <ul spacing="normal">
            <li>id is the Sender ID of the endpoint that generated PIV.</li>
            <li>
              <t>id_context is the ID Context (Gid) used when protecting M.  </t>
              <t>
Note that, in case of group rekeying, a server might use a different Gid when protecting a response, compared to the Gid that it used to verify (that the client used to protect) the request, see <xref target="ssec-protect-response"/>.</t>
            </li>
            <li>type is the CBOR simple value "true" (0xf5) if M is a request, or the CBOR simple value "false" (0xf4) otherwise.</li>
            <li>L is the size of the countersignature, as per Signature Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>), in bytes.</li>
          </ul>
        </section>
        <section anchor="clarifications-on-using-a-countersignature">
          <name>Clarifications on Using a Countersignature</name>
          <t>Note that the literature commonly refers to a countersignature as a signature computed by an entity A over a document already protected by a different entity B.</t>
          <t>However, the COSE_Countersignature0 structure belongs to the set of abbreviated countersignatures defined in Sections <xref target="I-D.ietf-cose-countersign" section="3.2" sectionFormat="bare"/> and <xref target="I-D.ietf-cose-countersign" section="3.3" sectionFormat="bare"/> of <xref target="I-D.ietf-cose-countersign"/>, which were designed primarily to deal with the problem of encrypted group messaging, but where it is required to know who originated the message.</t>
          <t>Since the parameters for computing or verifying the abbreviated countersignature generated by A are provided by the same context used to describe the security processing performed by B and to be countersigned, these structures are applicable also when the two entities A and B are actually the same one, like the sender of a Group OSCORE message protected in group mode.</t>
        </section>
      </section>
      <section anchor="sec-cose-object-kid">
        <name>The 'kid' and 'kid context' parameters</name>
        <t>The value of the 'kid' parameter in the 'unprotected' field of response messages MUST be set to the Sender ID of the endpoint transmitting the message, if the request was protected in group mode. That is, unlike in <xref target="RFC8613"/>, the 'kid' parameter is always present in responses to a request that was protected in group mode.</t>
        <t>The value of the 'kid context' parameter in the 'unprotected' field of requests messages MUST be set to the ID Context, i.e., the Group Identifier value (Gid) of the group. That is, unlike in <xref target="RFC8613"/>, the 'kid context' parameter is always present in requests.</t>
      </section>
      <section anchor="sec-cose-object-ext-aad">
        <name>external_aad</name>
        <t>The external_aad of the Additional Authenticated Data (AAD) is different compared to OSCORE <xref target="RFC8613"/>, and is defined in this section.</t>
        <t>The same external_aad structure is used in group mode and pairwise mode for authenticated encryption/decryption (see <xref section="5.3" sectionFormat="of" target="RFC9052"/>), as well as in group mode for computing and verifying the countersignature (see Sections <xref target="I-D.ietf-cose-countersign" section="3.2" sectionFormat="bare"/> and <xref target="I-D.ietf-cose-countersign" section="3.3" sectionFormat="bare"/> of <xref target="I-D.ietf-cose-countersign"/>).</t>
        <t>In particular, the external_aad includes also the Signature Algorithm, the Signature Encryption Algorithm, the Pairwise Key Agreement Algorithm, the value of the 'kid context' in the COSE object of the request, the OSCORE option of the protected message, the sender's authentication credential, and the Group Manager's authentication credential.</t>
        <t>The external_aad SHALL be a CBOR array wrapped in a bstr object as defined below, following the notation of <xref target="RFC8610"/>:</t>
        <figure anchor="fig-ext-aad">
          <name>external_aad</name>
          <artwork type="CDDL" align="center"><![CDATA[
external_aad = bstr .cbor aad_array

aad_array = [
   oscore_version : uint,
   algorithms : [alg_aead : int / tstr / null,
                 alg_signature_enc : int / tstr / null,
                 alg_signature : int / tstr / null,
                 alg_pairwise_key_agreement : int / tstr / null],
   request_kid : bstr,
   request_piv : bstr,
   options : bstr,
   request_kid_context : bstr,
   OSCORE_option: bstr,
   sender_cred: bstr,
   gm_cred: bstr / null
]
]]></artwork>
        </figure>
        <t>Compared with <xref section="5.4" sectionFormat="of" target="RFC8613"/>, the aad_array has the following differences.</t>
        <ul spacing="normal">
          <li>
            <t>The 'algorithms' array is extended as follows.  </t>
            <t>
The parameter 'alg_aead' MUST be set to the CBOR simple value "null" (0xf6) if the group does not use the pairwise mode, regardless whether the endpoint supports the pairwise mode or not. Otherwise, this parameter MUST encode the value of AEAD Algorithm from the Common Context (see <xref target="ssec-common-context-aead-alg"/>), as per <xref section="5.4" sectionFormat="of" target="RFC8613"/>.  </t>
            <t>
Furthermore, the 'algorithms' array additionally includes:  </t>
            <ul spacing="normal">
              <li>'alg_signature_enc', which specifies Signature Encryption Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>). This parameter MUST be set to the CBOR simple value "null" (0xf6) if the group does not use the group mode, regardless whether the endpoint supports the group mode or not. Otherwise, this parameter MUST encode the value of Signature Encryption Algorithm as a CBOR integer or text string, consistently with the "Value" field in the "COSE Algorithms" Registry for this AEAD algorithm.</li>
              <li>'alg_signature', which specifies Signature Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>). This parameter MUST be set to the CBOR simple value "null" (0xf6) if the group does not use the group mode, regardless whether the endpoint supports the group mode or not. Otherwise, this parameter MUST encode the value of Signature Algorithm as a CBOR integer or text string, consistently with the "Value" field in the "COSE Algorithms" Registry for this signature algorithm.</li>
              <li>'alg_pairwise_key_agreement', which specifies Pairwise Key Agreement Algorithm from the Common Context (see <xref target="ssec-common-context-cs-alg"/>). This parameter MUST be set to the CBOR simple value "null" (0xf6) if the group does not use the pairwise mode, regardless whether the endpoint supports the pairwise mode or not. Otherwise, this parameter MUST encode the value of Pairwise Key Agreement Algorithm as a CBOR integer or text string, consistently with the "Value" field in the "COSE Algorithms" Registry for this HKDF algorithm.</li>
            </ul>
          </li>
          <li>
            <t>The new element 'request_kid_context' contains the value of the 'kid context' in the COSE object of the request (see <xref target="sec-cose-object-kid"/>).  </t>
            <t>
In case Observe <xref target="RFC7641"/> is used, this enables endpoints to safely keep an observation active beyond a possible change of Gid (i.e., of ID Context), following a group rekeying (see <xref target="sec-group-key-management"/>). In fact, it ensures that every notification cryptographically matches with only one observation request, rather than with multiple ones that were protected with different keying material but share the same 'request_kid' and 'request_piv' values.</t>
          </li>
          <li>
            <t>The new element 'OSCORE_option', containing the value of the OSCORE Option present in the protected message, encoded as a binary string. This prevents the attack described in <xref target="ssec-cross-group-injection"/> when using the group mode, as further explained  in <xref target="sssec-cross-group-injection-group-mode"/>.  </t>
            <t>
Note for implementation: this construction requires the OSCORE option of the message to be generated and finalized before computing the ciphertext of the COSE_Encrypt0 object (when using the group mode or the pairwise mode) and before calculating the countersignature (when using the group mode). Also, the aad_array needs to be large enough to contain the largest possible OSCORE option.</t>
          </li>
          <li>The new element 'sender_cred', containing the sender's authentication credential. This parameter MUST be set to a CBOR byte string, which encodes the sender's authentication credential in its original binary representation made available to other endpoints in the group (see <xref target="sec-pub-key-format"/>).</li>
          <li>The new element 'gm_cred', containing the Group Manager's authentication credential. If no Group Manager maintains the group, this parameter MUST encode the CBOR simple value "null" (0xf6). Otherwise, this parameter MUST be set to a CBOR byte string, which encodes the Group Manager's authentication credential in its original binary representation made available to other endpoints in the group (see <xref target="sec-pub-key-format"/>). This prevents the attack described in <xref target="ssec-group-cloning"/>.</li>
        </ul>
      </section>
    </section>
    <section anchor="compression">
      <name>OSCORE Header Compression</name>
      <t>The OSCORE header compression defined in <xref section="6" sectionFormat="of" target="RFC8613"/> is used, with the following differences.</t>
      <ul spacing="normal">
        <li>The payload of the OSCORE message SHALL encode the ciphertext of the COSE_Encrypt0 object. In the group mode, the ciphertext above is concatenated with the value of the COSE_Countersignature0 of the COSE object, computed as described in <xref target="sec-cose-object-unprotected-field"/>.</li>
        <li>This document defines the usage of the sixth least significant bit, called "Group Flag", in the first byte of the OSCORE option containing the OSCORE flag bits. This flag bit is specified in <xref target="iana-cons-flag-bits"/>.</li>
        <li>The Group Flag MUST be set to 1 if the OSCORE message is protected using the group mode (see <xref target="mess-processing"/>).</li>
        <li>The Group Flag MUST be set to 0 if the OSCORE message is protected using the pairwise mode (see <xref target="sec-pairwise-protection"/>). The Group Flag MUST also be set to 0 for ordinary OSCORE messages processed according to <xref target="RFC8613"/>.</li>
      </ul>
      <section anchor="examples-of-compressed-cose-objects">
        <name>Examples of Compressed COSE Objects</name>
        <t>This section covers a list of OSCORE Header Compression examples of Group OSCORE used in group mode (see <xref target="sssec-example-cose-group"/>) or in pairwise mode (see <xref target="sssec-example-cose-pairwise"/>).</t>
        <t>The examples assume that the COSE_Encrypt0 object is set (which means the CoAP message and cryptographic material is known). Note that the examples do not include the full CoAP unprotected message or the full Security Context, but only the input necessary to the compression mechanism, i.e., the COSE_Encrypt0 object. The output is the compressed COSE object as defined in <xref target="compression"/> and divided into two parts, since the object is transported in two CoAP fields: OSCORE option and payload.</t>
        <t>The examples assume that the plaintext (see <xref section="5.3" sectionFormat="of" target="RFC8613"/>) is 6 bytes long, and that the AEAD tag is 8 bytes long, hence resulting in a ciphertext which is 14 bytes long. When using the group mode, the COSE_Countersignature0 byte string as described in <xref target="sec-cose-object"/> is assumed to be 64 bytes long.</t>
        <section anchor="sssec-example-cose-group">
          <name>Examples in Group Mode</name>
          <ul spacing="normal">
            <li>Request with ciphertext = 0xaea0155667924dff8a24e4cb35b9, kid = 0x25, Partial IV = 5 and kid context = 0x44616c.</li>
          </ul>
          <artwork><![CDATA[
   * Before compression (96 bytes):

      [
      h'',
      { 4:h'25', 6:h'05', 10:h'44616c', 11:h'de9e ... f1' },
      h'aea0155667924dff8a24e4cb35b9'
      ]
]]></artwork>
          <artwork><![CDATA[
   * After compression (85 bytes):

      Flag byte: 0b00111001 = 0x39 (1 byte)

      Option Value: 0x39 05 03 44 61 6c 25 (7 bytes)

      Payload: 0xaea0155667924dff8a24e4cb35b9 de9e ... f1
      (14 bytes + size of the encrypted countersignature)

]]></artwork>
          <ul spacing="normal">
            <li>Response with ciphertext = 0x60b035059d9ef5667c5a0710823b, kid = 0x52 and no Partial IV.</li>
          </ul>
          <artwork><![CDATA[
   * Before compression (88 bytes):

      [
      h'',
      { 4:h'52', 11:h'ca1e ... b3' },
      h'60b035059d9ef5667c5a0710823b'
      ]
]]></artwork>
          <artwork><![CDATA[
   * After compression (80 bytes):

      Flag byte: 0b00101000 = 0x28 (1 byte)

      Option Value: 0x28 52 (2 bytes)

      Payload: 0x60b035059d9ef5667c5a0710823b ca1e ... b3
      (14 bytes + size of the encrypted countersignature)
]]></artwork>
        </section>
        <section anchor="sssec-example-cose-pairwise">
          <name>Examples in Pairwise Mode</name>
          <ul spacing="normal">
            <li>Request with ciphertext = 0xaea0155667924dff8a24e4cb35b9, kid = 0x25, Partial IV = 5 and kid context = 0x44616c.</li>
          </ul>
          <artwork><![CDATA[
   * Before compression (29 bytes):

      [
      h'',
      { 4:h'25', 6:h'05', 10:h'44616c' },
      h'aea0155667924dff8a24e4cb35b9'
      ]
]]></artwork>
          <artwork><![CDATA[
   * After compression (21 bytes):

      Flag byte: 0b00011001 = 0x19 (1 byte)

      Option Value: 0x19 05 03 44 61 6c 25 (7 bytes)

      Payload: 0xaea0155667924dff8a24e4cb35b9 (14 bytes)
]]></artwork>
          <ul spacing="normal">
            <li>Response with ciphertext = 0x60b035059d9ef5667c5a0710823b and no Partial IV.</li>
          </ul>
          <artwork><![CDATA[
   * Before compression (18 bytes):

      [
      h'',
      {},
      h'60b035059d9ef5667c5a0710823b'
      ]
]]></artwork>
          <artwork><![CDATA[
   * After compression (14 bytes):

      Flag byte: 0b00000000 = 0x00 (1 byte)

      Option Value: 0x (0 bytes)

      Payload: 0x60b035059d9ef5667c5a0710823b (14 bytes)
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="message-binding-sequence-numbers-freshness-and-replay-protection">
      <name>Message Binding, Sequence Numbers, Freshness and Replay Protection</name>
      <t>The requirements and properties described in <xref section="7" sectionFormat="of" target="RFC8613"/> also apply to Group OSCORE. In particular, Group OSCORE provides message binding of responses to requests, which enables absolute freshness of responses that are not notifications, relative freshness of requests and notification responses, and replay protection of requests. In addition, the following holds for Group OSCORE.</t>
      <section anchor="sec-long-term-observations">
        <name>Supporting Observe</name>
        <t>When Observe <xref target="RFC7641"/> is used, a client maintains for each ongoing observation one Notification Number for each different server. Then, separately for each server, the client uses the associated Notification Number to perform ordering and replay protection of notifications received from that server (see <xref target="ssec-verify-response-observe"/>).</t>
        <t>Group OSCORE allows to preserve an observation active indefinitely, even in case the group is rekeyed, with consequent change of ID Context, or in case the observer client obtains a new Sender ID.</t>
        <t>As defined in <xref target="mess-processing"/> when discussing support for Observe, this is achieved by the client and server(s) storing the 'kid' and 'kid context' used in the original Observe request, throughout the whole duration of the observation.</t>
        <t>Upon leaving the group or before re-joining the group, a group member MUST terminate all the ongoing observations that it has started in the group as observer client.</t>
      </section>
      <section anchor="sec-synch-seq-num">
        <name>Update of Replay Window</name>
        <t>Sender Sequence Numbers seen by a server as Partial IV values in request messages can spontaneously increase at a fast pace, for example when a client exchanges unicast messages with other servers using the Group OSCORE Security Context. As in OSCORE <xref target="RFC8613"/>, a server always needs to accept such increases and accordingly updates the Replay Window in each of its Recipient Contexts.</t>
        <t>As discussed in <xref target="ssec-loss-mutable-context"/>, a newly created Recipient Context would have an invalid Replay Window, if its installation has required to delete another Recipient Context. Hence, the server is not able to verify if a request from the client associated with the new Recipient Context is a replay. When this happens, the server MUST validate the Replay Window of the new Recipient Context, before accepting messages from the associated client (see <xref target="ssec-loss-mutable-context"/>).</t>
        <t>Furthermore, when the Group Manager establishes a new Security Context for the group (see <xref target="new-sec-context"/>), every server re-initializes the Replay Window in each of its Recipient Contexts.</t>
      </section>
      <section anchor="sec-freshness">
        <name>Message Freshness</name>
        <t>When receiving a request from a client for the first time, the server is not synchronized with the client's Sender Sequence Number, i.e., it is not able to verify if that request is fresh. This applies to a server that has just joined the group, with respect to already present clients, and recurs as new clients are added as group members.</t>
        <t>During its operations in the group, the server may also lose synchronization with a client's Sender Sequence Number. This can happen, for instance, if the server has rebooted or has deleted its previously synchronized version of the Recipient Context for that client (see <xref target="ssec-loss-mutable-context"/>).</t>
        <t>If the application requires message freshness, e.g., according to time- or event-based policies, the server has to (re-)synchronize with a client's Sender Sequence Number before delivering request messages from that client to the application. To this end, the server can use the approach in <xref target="sec-synch-challenge-response"/> based on the Echo Option for CoAP <xref target="RFC9175"/>, as a variant of the approach defined in Appendix B.1.2 of <xref target="RFC8613"/> applicable to Group OSCORE.</t>
      </section>
    </section>
    <section anchor="sec-message-reception">
      <name>Message Reception</name>
      <t>Upon receiving a protected message, a recipient endpoint retrieves a Security Context as in <xref target="RFC8613"/>. An endpoint MUST be able to distinguish between a Security Context to process OSCORE messages as in <xref target="RFC8613"/> and a Group OSCORE Security Context to process Group OSCORE messages as defined in this document.</t>
      <t>To this end, an endpoint can take into account the different structure of the Security Context defined in <xref target="sec-context"/>, for example based on the presence of Signature Algorithm and/or Pairwise Key Agreement Algorithm in the Common Context. Alternatively implementations can use an additional parameter in the Security Context, to explicitly signal that it is intended for processing Group OSCORE messages.</t>
      <t>If either of the following conditions holds, a recipient endpoint MUST discard the incoming protected message:</t>
      <ul spacing="normal">
        <li>The Group Flag is set to 0, and the recipient endpoint retrieves a Security Context which is both valid to process the message and also associated with an OSCORE group, but the endpoint does not support the pairwise mode.</li>
        <li>The Group Flag is set to 1, and the recipient endpoint retrieves a Security Context which is both valid to process the message and also associated with an OSCORE group, but the endpoint does not support the group mode.</li>
        <li>
          <t>The Group Flag is set to 1, and the recipient endpoint can not retrieve a Security Context which is both valid to process the message and also associated with an OSCORE group.  </t>
          <t>
As per <xref section="6.1" sectionFormat="of" target="RFC8613"/>, this holds also when retrieving a Security Context which is valid but not associated with an OSCORE group. Future specifications may define how to process incoming messages protected with a Security Contexts as in <xref target="RFC8613"/>, when the Group Flag bit is set to 1.</t>
        </li>
      </ul>
      <t>Otherwise, if a Security Context associated with an OSCORE group and valid to process the message is retrieved, the recipient endpoint processes the message with Group OSCORE, using the group mode (see <xref target="mess-processing"/>) if the Group Flag is set to 1, or the pairwise mode (see <xref target="sec-pairwise-protection"/>) if the Group Flag is set to 0.</t>
      <t>Note that, if the Group Flag is set to 0, and the recipient endpoint retrieves a Security Context which is valid to process the message but is not associated with an OSCORE group, then the message is processed according to <xref target="RFC8613"/>.</t>
    </section>
    <section anchor="mess-processing">
      <name>Message Processing in Group Mode</name>
      <t>When using the group mode, messages are protected and processed as specified in <xref target="RFC8613"/>, with the modifications described in this section. The security objectives of the group mode are discussed in <xref target="ssec-sec-objectives"/>.</t>
      <t>The Group Manager indicates that the group uses (also) the group mode, as part of the group data provided to candidate group members when joining the group.</t>
      <t>During all the steps of the message processing, an endpoint MUST use the same Security Context for the considered group. That is, an endpoint MUST NOT install a new Security Context for that group (see <xref target="new-sec-context"/>) until the message processing is completed.</t>
      <t>The group mode MUST be used to protect group requests intended for multiple recipients or for the whole group. This includes both requests directly addressed to multiple recipients, e.g., sent by the client over multicast, as well as requests sent by the client over unicast to a proxy, that forwards them to the intended recipients over multicast <xref target="I-D.ietf-core-groupcomm-bis"/>. For encryption and decryption operations, the Signature Encryption Algorithm from the Common Context is used.</t>
      <t>As per <xref target="RFC7252"/><xref target="I-D.ietf-core-groupcomm-bis"/>, group requests sent over multicast MUST be Non-confirmable, and thus are not retransmitted by the CoAP messaging layer. Instead, applications should store such outgoing messages for a predefined, sufficient amount of time, in order to correctly perform potential retransmissions at the application layer. According to <xref section="5.2.3" sectionFormat="of" target="RFC7252"/>, responses to Non-confirmable group requests SHOULD also be Non-confirmable, but endpoints MUST be prepared to receive Confirmable responses in reply to a Non-confirmable group request. Confirmable group requests are acknowledged when sent over non-multicast transports, as specified in <xref target="RFC7252"/>.</t>
      <t>Furthermore, endpoints in the group locally perform error handling and processing of invalid messages according to the same principles adopted in <xref target="RFC8613"/>. However, a recipient MUST stop processing and reject any message which is malformed and does not follow the format specified in <xref target="sec-cose-object"/> of this document, or which is not cryptographically validated in a successful way.</t>
      <t>In either case, it is RECOMMENDED that a server does not send back any error message in reply to a received request, if any of the two following conditions holds:</t>
      <ul spacing="normal">
        <li>The server is not able to identify the received request as a group request, i.e., as sent to all servers in the group.</li>
        <li>The server identifies the received request as a group request.</li>
      </ul>
      <t>This prevents servers from replying with multiple error messages to a client sending a group request, so avoiding the risk of flooding and possibly congesting the network.</t>
      <section anchor="ssec-protect-request">
        <name>Protecting the Request</name>
        <t>A client transmits a secure group request as described in <xref section="8.1" sectionFormat="of" target="RFC8613"/>, with the following modifications.</t>
        <ul spacing="normal">
          <li>In step 2, the Additional Authenticated Data is modified as described in <xref target="sec-cose-object"/> of this document.</li>
          <li>In step 4, the encryption of the COSE object is modified as described in <xref target="sec-cose-object"/> of this document. The encoding of the compressed COSE object is modified as described in <xref target="compression"/> of this document. In particular, the Group Flag MUST be set to 1. The Signature Encryption Algorithm from the Common Context MUST be used.</li>
          <li>In step 5, the countersignature is computed and the format of the OSCORE message is modified as described in <xref target="sec-cose-object"/> and <xref target="compression"/> of this document. In particular the payload of the OSCORE message includes also the encrypted countersignature (see <xref target="sec-cose-object-unprotected-field"/>).</li>
        </ul>
        <section anchor="ssec-protect-request-observe">
          <name>Supporting Observe</name>
          <t>If Observe <xref target="RFC7641"/> is supported, the following holds for each newly started observation.</t>
          <ul spacing="normal">
            <li>If the client intends to keep the observation active beyond a possible change of Sender ID, the client MUST store the value of the 'kid' parameter from the original Observe request, and retain it for the whole duration of the observation. Even in case the client is individually rekeyed and receives a new Sender ID from the Group Manager (see <xref target="new-sender-id"/>), the client MUST NOT update the stored value associated with a particular Observe request.</li>
            <li>
              <t>If the client intends to keep the observation active beyond a possible change of ID Context following a group rekeying (see <xref target="sec-group-key-management"/>), then the following applies.  </t>
              <ul spacing="normal">
                <li>The client MUST store the value of the 'kid context' parameter from the original Observe request, and retain it for the whole duration of the observation. Upon establishing a new Security Context with a new Gid as ID Context (see <xref target="new-sec-context"/>), the client MUST NOT update the stored value associated with a particular Observe request.</li>
                <li>
                  <t>The client MUST store an invariant identifier of the group, which is immutable even in case the Security Context of the group is re-established. For example, this invariant identifier can be the "group name" in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, where it is used for joining the group and retrieving the current group keying material from the Group Manager.      </t>
                  <t>
After a group rekeying, such an invariant information makes it simpler for the observer client to retrieve the current group keying material from the Group Manager, in case the client has missed both the rekeying messages and the first observe notification protected with the new Security Context (see <xref target="ssec-protect-response-observe"/>).</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ssec-verify-request">
        <name>Verifying the Request</name>
        <t>Upon receiving a secure group request with the Group Flag set to 1, following the procedure in <xref target="sec-message-reception"/>, a server proceeds as described in <xref section="8.2" sectionFormat="of" target="RFC8613"/>, with the following modifications.</t>
        <ul spacing="normal">
          <li>
            <t>In step 2, the decoding of the compressed COSE object follows <xref target="compression"/> of this document. In particular:  </t>
            <ul spacing="normal">
              <li>If the server discards the request due to not retrieving a Security Context associated with the OSCORE group, the server MAY respond with a 4.01 (Unauthorized) error message. When doing so, the server MAY set an Outer Max-Age option with value zero, and MAY include a descriptive string as diagnostic payload.</li>
              <li>If the received 'kid context' matches an existing ID Context (Gid) but the received 'kid' does not match any Recipient ID in this Security Context, then the server MAY create a new Recipient Context for this Recipient ID and initialize it according to <xref section="3" sectionFormat="of" target="RFC8613"/>, and also retrieve the authentication credential associated with the Recipient ID to be stored in the new Recipient Context. Such a configuration is application specific. If the application does not specify dynamic derivation of new Recipient Contexts, then the server SHALL stop processing the request.</li>
            </ul>
          </li>
          <li>In step 4, the Additional Authenticated Data is modified as described in <xref target="sec-cose-object"/> of this document.</li>
          <li>
            <t>In step 6, the server also verifies the countersignature, by using the public key from the client's authentication credential stored in the associated Recipient Context. In particular:  </t>
            <ul spacing="normal">
              <li>If the server does not have the public key of the client yet, the server MUST stop processing the request and MAY respond with a 5.03 (Service Unavailable) response. The response MAY include a Max-Age Option, indicating to the client the number of seconds after which to retry. If the Max-Age Option is not present, a retry time of 60 seconds will be assumed by the client, as default value defined in <xref section="5.10.5" sectionFormat="of" target="RFC7252"/>.</li>
              <li>The server MUST perform signature verification before decrypting the COSE object, as defined below. Implementations that cannot perform the two steps in this order MUST ensure that no access to the plaintext is possible before a successful signature verification and MUST prevent any possible leak of time-related information that can yield side-channel attacks.</li>
              <li>
                <t>The server retrieves the encrypted countersignature ENC_SIGNATURE from the message payload, and computes the original countersignature SIGNATURE as      </t>
                <t>
SIGNATURE = ENC_SIGNATURE XOR KEYSTREAM      </t>
                <t>
where KEYSTREAM is derived as per <xref target="sssec-encrypted-signature-keystream"/>.      </t>
                <t>
The server verifies the original countersignature SIGNATURE.</t>
              </li>
              <li>If the signature verification fails, the server SHALL stop processing the request, SHALL NOT update the Replay Window, and MAY respond with a 4.00 (Bad Request) response. The server MAY set an Outer Max-Age option with value zero. The diagnostic payload MAY contain a string, which, if present, MUST be "Decryption failed" as if the decryption had failed.</li>
              <li>When decrypting the COSE object using the Recipient Key, the Signature Encryption Algorithm from the Common Context MUST be used.</li>
            </ul>
          </li>
          <li>Additionally, if the used Recipient Context was created upon receiving this group request and the message is not verified successfully, the server MAY delete that Recipient Context. Such a configuration, which is specified by the application, mitigates attacks that aim at overloading the server's storage.</li>
        </ul>
        <t>A server SHOULD NOT process a request if the received Recipient ID ('kid') is equal to its own Sender ID in its own Sender Context. For an example where this is not fulfilled, see <xref section="9.2.1" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications"/>.</t>
        <section anchor="ssec-verify-request-observe">
          <name>Supporting Observe</name>
          <t>If Observe <xref target="RFC7641"/> is supported, the following holds for each newly started observation.</t>
          <ul spacing="normal">
            <li>The server MUST store the value of the 'kid' parameter from the original Observe request, and retain it for the whole duration of the observation. The server MUST NOT update the stored value of a 'kid' parameter associated with a particular Observe request, even in case the observer client is individually rekeyed and starts using a new Sender ID received from the Group Manager (see <xref target="new-sender-id"/>).</li>
            <li>The server MUST store the value of the 'kid context' parameter from the original Observe request, and retain it for the whole duration of the observation, beyond a possible change of ID Context following a group rekeying (see <xref target="sec-group-key-management"/>). That is, upon establishing a new Security Context with a new Gid as ID Context (see <xref target="new-sec-context"/>), the server MUST NOT update the stored value associated with the ongoing observation.</li>
          </ul>
        </section>
      </section>
      <section anchor="ssec-protect-response">
        <name>Protecting the Response</name>
        <t>If a server generates a CoAP message in response to a Group OSCORE request, then the server SHALL follow the description in <xref section="8.3" sectionFormat="of" target="RFC8613"/>, with the modifications described in this section.</t>
        <t>Note that the server always protects a response with the Sender Context from its latest Security Context, and that establishing a new Security Context resets the Sender Sequence Number to 0 (see <xref target="sec-group-key-management"/>).</t>
        <ul spacing="normal">
          <li>In step 2, the Additional Authenticated Data is modified as described in <xref target="sec-cose-object"/> of this document.</li>
          <li>In step 3, if the server is using a different Security Context for the response compared to what was used to verify the request (see <xref target="sec-group-key-management"/>), then the server MUST include its Sender Sequence Number as Partial IV in the response and use it to build the AEAD nonce to protect the response. This prevents the AEAD nonce from the request from being reused.</li>
          <li>
            <t>In step 4, the encryption of the COSE object is modified as described in <xref target="sec-cose-object"/> of this document. The encoding of the compressed COSE object is modified as described in <xref target="compression"/> of this document. In particular, the Group Flag MUST be set to 1. The Signature Encryption Algorithm from the Common Context MUST be used.  </t>
            <t>
If the server is using a different ID Context (Gid) for the response compared to what was used to verify the request (see <xref target="sec-group-key-management"/>), then the new ID Context MUST be included in the 'kid context' parameter of the response.  </t>
            <t>
The server can obtain a new Sender ID from the Group Manager, when individually rekeyed (see <xref target="new-sender-id"/>) or when re-joining the group. In such a case, the server can help the client to synchronize, by including the 'kid' parameter in a response protected in group mode, even when the request was protected in pairwise mode (see <xref target="sec-pairwise-protection-req"/>).  </t>
            <t>
That is, when responding to a request protected in pairwise mode, the server SHOULD include the 'kid' parameter in a response protected in group mode, if it is replying to that client for the first time since the assignment of its new Sender ID.</t>
          </li>
          <li>In step 5, the countersignature is computed and the format of the OSCORE message is modified as described in <xref target="sec-cose-object"/> and <xref target="compression"/> of this document. In particular the payload of the OSCORE message includes also the encrypted countersignature (see <xref target="sec-cose-object-unprotected-field"/>).</li>
        </ul>
        <section anchor="ssec-protect-response-observe">
          <name>Supporting Observe</name>
          <t>If Observe <xref target="RFC7641"/> is supported, the following holds when protecting notifications for an ongoing observation.</t>
          <ul spacing="normal">
            <li>The server MUST use the stored value of the 'kid' parameter from the original Observe request (see <xref target="ssec-verify-request-observe"/>), as value for the 'request_kid' parameter in the external_aad structure (see <xref target="sec-cose-object-ext-aad"/>).</li>
            <li>The server MUST use the stored value of the 'kid context' parameter from the original Observe request (see <xref target="ssec-verify-request-observe"/>), as value for the 'request_kid_context' parameter in the external_aad structure (see <xref target="sec-cose-object-ext-aad"/>).</li>
          </ul>
          <t>Furthermore, the server may have ongoing observations started by Observe requests protected with an old Security Context. After completing the establishment of a new Security Context, the server MUST protect the following notifications with the Sender Context of the new Security Context.</t>
          <t>For each ongoing observation, the server can help the client to synchronize, by including also the 'kid context' parameter in notifications following a group rekeying, with value set to the ID Context (Gid) of the new Security Context.</t>
          <t>If there is a known upper limit to the duration of a group rekeying, the server SHOULD include the 'kid context' parameter during that time. Otherwise, the server SHOULD include it until the Max-Age has expired for the last notification sent before the installation of the new Security Context.</t>
        </section>
      </section>
      <section anchor="ssec-verify-response">
        <name>Verifying the Response</name>
        <t>Upon receiving a secure response message with the Group Flag set to 1, following the procedure in <xref target="sec-message-reception"/>, the client proceeds as described in <xref section="8.4" sectionFormat="of" target="RFC8613"/>, with the following modifications.</t>
        <t>Note that a client may receive a response protected with a Security Context different from the one used to protect the corresponding request, and that, upon the establishment of a new Security Context, the client re-initializes its Replay Windows in its Recipient Contexts (see <xref target="sec-group-key-management"/>).</t>
        <ul spacing="normal">
          <li>
            <t>In step 2, the decoding of the compressed COSE object is modified as described in <xref target="compression"/> of this document. In particular, a 'kid' may not be present, if the response is a reply to a request protected in pairwise mode. In such a case, the client assumes the response 'kid' to be the Recipient ID for the server to which the request protected in pairwise mode was intended for.  </t>
            <t>
If the response 'kid context' matches an existing ID Context (Gid) but the received/assumed 'kid' does not match any Recipient ID in this Security Context, then the client MAY create a new Recipient Context for this Recipient ID and initialize it according to <xref section="3" sectionFormat="of" target="RFC8613"/>, and also retrieve the authentication credential associated with the Recipient ID to be stored in the new Recipient Context. If the application does not specify dynamic derivation of new Recipient Contexts, then the client SHALL stop processing the response.</t>
          </li>
          <li>In step 3, the Additional Authenticated Data is modified as described in <xref target="sec-cose-object"/> of this document.</li>
          <li>
            <t>In step 5, the client also verifies the countersignature, by using the public key from the server's authentication credential stored in the associated Recipient Context. In particular:  </t>
            <ul spacing="normal">
              <li>The client MUST perform signature verification before decrypting the COSE object, as defined below. Implementations that cannot perform the two steps in this order MUST ensure that no access to the plaintext is possible before a successful signature verification and MUST prevent any possible leak of time-related information that can yield side-channel attacks.</li>
              <li>
                <t>The client retrieves the encrypted countersignature ENC_SIGNATURE from the message payload, and computes the original countersignature SIGNATURE as      </t>
                <t>
SIGNATURE = ENC_SIGNATURE XOR KEYSTREAM      </t>
                <t>
where KEYSTREAM is derived as per <xref target="sssec-encrypted-signature-keystream"/>.      </t>
                <t>
The client verifies the original countersignature SIGNATURE.</t>
              </li>
              <li>If the verification of the countersignature fails, the server SHALL stop processing the response, and SHALL NOT update the Notification Number associated with the server if the response is an Observe notification <xref target="RFC7641"/>.</li>
              <li>
                <t>After a successful verification of the countersignature, the client performs also the following actions if the response is not an Observe notification.      </t>
                <ul spacing="normal">
                  <li>In case the request was protected in pairwise mode and the 'kid' parameter is present in the response, the client checks whether this received 'kid' is equal to the expected 'kid', i.e., the known Recipient ID for the server to which the request was intended for.</li>
                  <li>In case the request was protected in pairwise mode and the 'kid' parameter is not present in the response, the client checks whether the server that has sent the response is the same one to which the request was intended for. This can be done by checking that the public key used to verify the countersignature of the response is equal to the public key included in the authentication credential Recipient Auth Cred, which was taken as input to derive the Pairwise Sender Key used for protecting the request (see <xref target="key-derivation-pairwise"/>).</li>
                </ul>
                <t>
In either case, if the client determines that the response has come from a different server than the expected one, then the client SHALL discard the response and SHALL NOT deliver it to the application. Otherwise, the client hereafter considers the received 'kid' as the current Recipient ID for the server.</t>
              </li>
              <li>When decrypting the COSE object using the Recipient Key, the Signature Encryption Algorithm from the Common Context MUST be used.</li>
            </ul>
          </li>
          <li>Additionally, if the used Recipient Context was created upon receiving this response and the message is not verified successfully, the client MAY delete that Recipient Context. Such a configuration, which is specified by the application, mitigates attacks that aim at overloading the client's storage.</li>
        </ul>
        <section anchor="ssec-verify-response-observe">
          <name>Supporting Observe</name>
          <t>If Observe <xref target="RFC7641"/> is supported, the following holds when verifying notifications for an ongoing observation.</t>
          <ul spacing="normal">
            <li>The client MUST use the stored value of the 'kid' parameter from the original Observe request (see <xref target="ssec-protect-request-observe"/>), as value for the 'request_kid' parameter in the external_aad structure (see <xref target="sec-cose-object-ext-aad"/>).</li>
            <li>The client MUST use the stored value of the 'kid context' parameter from the original Observe request (see <xref target="ssec-protect-request-observe"/>), as value for the 'request_kid_context' parameter in the external_aad structure (see <xref target="sec-cose-object-ext-aad"/>).</li>
          </ul>
          <t>This ensures that the client can correctly verify notifications, even in case it is individually rekeyed and starts using a new Sender ID received from the Group Manager (see <xref target="new-sender-id"/>), as well as when it installs a new Security Context with a new ID Context (Gid) following a group rekeying (see <xref target="sec-group-key-management"/>).</t>
          <ul spacing="normal">
            <li>
              <t>The ordering and the replay protection of notifications received from a server are performed as per Sections <xref target="RFC8613" section="4.1.3.5.2" sectionFormat="bare"/> and <xref target="RFC8613" section="7.4.1" sectionFormat="bare"/> of <xref target="RFC8613"/>, by using the Notification Number associated with that server for the observation in question. In addition, the client performs the following actions for each ongoing observation.  </t>
              <ul spacing="normal">
                <li>When receiving the first valid notification from a server, the client MUST store the current kid "kid1" of that server for the observation in question. If the 'kid' field is included in the OSCORE option of the notification, its value specifies "kid1". If the Observe request was protected in pairwise mode (see <xref target="sec-pairwise-protection-req"/>), the 'kid' field may not be present in the OSCORE option of the notification (see <xref target="sec-cose-object-kid"/>). In this case, the client assumes "kid1" to be the Recipient ID for the server to which the Observe request was intended for.</li>
                <li>
                  <t>When receiving another valid notification from the same server - which can be identified and recognized through the same public key used to verify the countersignature and included in the server's authentication credential - the client determines the current kid "kid2" of the server as above for "kid1", and MUST check whether "kid2" is equal to the stored "kid1". If "kid1" and "kid2" are different, the client MUST cancel or re-register the observation in question.      </t>
                  <t>
Note that, if "kid2" is different from "kid1" and the 'kid' field is omitted from the notification - which is possible if the Observe request was protected in pairwise mode - then the client will compute a wrong keystream to decrypt the countersignature (i.e., by using "kid1" rather than "kid2" in the 'id' field of the 'info' array in <xref target="sssec-encrypted-signature-keystream"/>), thus subsequently failing to verify the countersignature and discarding the notification.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>This ensures that the client remains able to correctly perform the ordering and replay protection of notifications, even in case a server legitimately starts using a new Sender ID, as received from the Group Manager when individually rekeyed (see <xref target="new-sender-id"/>) or when re-joining the group.</t>
        </section>
      </section>
      <section anchor="sec-processing-signature-checker">
        <name>External Signature Checkers</name>
        <t>When receiving a message protected in group mode, a signature checker (see <xref target="sec-additional-entities"/>) proceeds as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The signature checker retrieves the encrypted countersignature ENC_SIGNATURE from the message payload, and computes the original countersignature SIGNATURE as  </t>
            <t>
SIGNATURE = ENC_SIGNATURE XOR KEYSTREAM  </t>
            <t>
where KEYSTREAM is derived as per <xref target="sssec-encrypted-signature-keystream"/>.</t>
          </li>
          <li>The signature checker verifies the original countersignature SIGNATURE, by using the public key of the sender endpoint as included in that endpoint's authentication credential. The signature checker determines the right authentication credential based on the ID Context (Gid) and the Sender ID of the sender endpoint.</li>
        </ul>
        <t>Note that the following applies when attempting to verify the countersignature of a response message.</t>
        <ul spacing="normal">
          <li>The response may not include a Partial IV and/or an ID Context. In such a case, the signature checker considers the same values from the corresponding request, i.e., the request matching with the response by CoAP Token value.</li>
          <li>The response may not include a Sender ID. This can happen when the response protected in group mode matches a request protected in pairwise mode (see <xref target="ssec-pre-conditions"/>), with a case in point provided by <xref target="I-D.amsuess-core-cachable-oscore"/>. In such a case, the signature checker needs to use other means (e.g., source addressing information of the server endpoint) to identify the correct authentication credential including the public key to use for verifying the countersignature of the response.</li>
        </ul>
        <t>The particular actions following a successful or unsuccessful verification of the countersignature are application specific and out of the scope of this document.</t>
      </section>
    </section>
    <section anchor="sec-pairwise-protection">
      <name>Message Processing in Pairwise Mode</name>
      <t>When using the pairwise mode of Group OSCORE, messages are protected and processed as in <xref target="RFC8613"/>, with the modifications described in this section. The security objectives of the pairwise mode are discussed in <xref target="ssec-sec-objectives"/>.</t>
      <t>The pairwise mode takes advantage of an existing Security Context for the group mode to establish a Security Context shared exclusively with any other member. In order to use the pairwise mode in a group that uses also the group mode, the signature scheme of the group mode MUST support a combined signature and encryption scheme. This can be, for example, signature using ECDSA, and encryption using AES-CCM with a key derived with ECDH. For encryption and decryption operations, the AEAD Algorithm from the Common Context is used (see <xref target="ssec-common-context-aead-alg"/>).</t>
      <t>The pairwise mode does not support the use of additional entities acting as verifiers of source authentication and integrity of group messages, such as intermediary gateways (see <xref target="group-manager"/>).</t>
      <t>An endpoint implementing only a silent server does not support the pairwise mode.</t>
      <t>If the signature algorithm used in the group supports ECDH (e.g., ECDSA, EdDSA), the pairwise mode MUST be supported by endpoints that use the CoAP Echo Option <xref target="RFC9175"/> and/or block-wise transfers <xref target="RFC7959"/>, for instance for responses after the first block-wise request, which possibly targets all servers in the group and includes the CoAP Block2 option (see <xref section="3.8" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/>). This prevents the attack described in <xref target="ssec-unicast-requests"/>, which leverages requests sent over unicast to a single group member and protected with the group mode.</t>
      <t>Senders cannot use the pairwise mode to protect a message intended for multiple recipients. In fact, the pairwise mode is defined only between two endpoints and the keying material is thus only available to one recipient.</t>
      <t>However, a sender can use the pairwise mode to protect a message sent to (but not intended for) multiple recipients, if interested in a response from only one of them. For instance, this is useful to support the address discovery service defined in <xref target="ssec-pre-conditions"/>, when a single 'kid' value is indicated in the payload of a request sent to multiple recipients, e.g., over multicast.</t>
      <t>The Group Manager indicates that the group uses (also) the pairwise mode, as part of the group data provided to candidate group members when joining the group.</t>
      <section anchor="ssec-pre-conditions">
        <name>Pre-Conditions</name>
        <t>In order to protect an outgoing message in pairwise mode, the sender needs to know the authentication credential and the Recipient ID for the recipient endpoint, as stored in the Recipient Context associated with that endpoint (see <xref target="pairwise-implementation"/>).</t>
        <t>Furthermore, the sender needs to know the individual address of the recipient endpoint. This information may not be known at any given point in time. For instance, right after having joined the group, a client may know the authentication credential and Recipient ID for a given server, but not the addressing information required to reach it with an individual, one-to-one request.</t>
        <t>To make addressing information of individual endpoints available, servers in the group MAY expose a resource to which a client can send a group request targeting a set of servers, identified by their 'kid' values specified in the request payload. The specified set may be empty, hence identifying all the servers in the group. Further details of such an interface are out of scope for this document.</t>
      </section>
      <section anchor="sec-differences-oscore-pairwise">
        <name>Main Differences from OSCORE</name>
        <t>The pairwise mode protects messages between two members of a group, essentially following <xref target="RFC8613"/>, but with the following notable differences.</t>
        <ul spacing="normal">
          <li>The 'kid' and 'kid context' parameters of the COSE object are used as defined in <xref target="sec-cose-object-kid"/> of this document.</li>
          <li>The external_aad defined in <xref target="sec-cose-object-ext-aad"/> of this document is used for the encryption process.</li>
          <li>The Pairwise Sender/Recipient Keys used as Sender/Recipient keys are derived as defined in <xref target="sec-derivation-pairwise"/> of this document.</li>
        </ul>
      </section>
      <section anchor="sec-pairwise-protection-req">
        <name>Protecting the Request</name>
        <t>When using the pairwise mode, the request is protected as defined in <xref section="8.1" sectionFormat="of" target="RFC8613"/>, with the differences summarized in <xref target="sec-differences-oscore-pairwise"/> of this document. The following difference also applies.</t>
        <ul spacing="normal">
          <li>If Observe <xref target="RFC7641"/> is supported, what is defined in <xref target="ssec-protect-request-observe"/> of this document holds.</li>
        </ul>
      </section>
      <section anchor="sec-pairwise-verify-req">
        <name>Verifying the Request</name>
        <t>Upon receiving a request with the Group Flag set to 0, following the procedure in <xref target="sec-message-reception"/>, the server MUST process it as defined in <xref section="8.2" sectionFormat="of" target="RFC8613"/>, with the differences summarized in <xref target="sec-differences-oscore-pairwise"/> of this document. The following differences also apply.</t>
        <ul spacing="normal">
          <li>If the server discards the request due to not retrieving a Security Context associated with the OSCORE group or to not supporting the pairwise mode, the server MAY respond with a 4.01 (Unauthorized) error message or a 4.02 (Bad Option) error message, respectively. When doing so, the server MAY set an Outer Max-Age option with value zero, and MAY include a descriptive string as diagnostic payload.</li>
          <li>If a new Recipient Context is created for this Recipient ID, new Pairwise Sender/Recipient Keys are also derived (see <xref target="key-derivation-pairwise"/>). The new Pairwise Sender/Recipient Keys are deleted if the Recipient Context is deleted as a result of the message not being successfully verified.</li>
          <li>If Observe <xref target="RFC7641"/> is supported, what is defined in <xref target="ssec-verify-request-observe"/> of this document holds.</li>
        </ul>
      </section>
      <section anchor="sec-pairwise-protection-resp">
        <name>Protecting the Response</name>
        <t>When using the pairwise mode, a response is protected as defined in <xref section="8.3" sectionFormat="of" target="RFC8613"/>, with the differences summarized in <xref target="sec-differences-oscore-pairwise"/> of this document. The following differences also apply.</t>
        <ul spacing="normal">
          <li>If the server is using a different Security Context for the response compared to what was used to verify the request (see <xref target="sec-group-key-management"/>), then the server MUST include its Sender Sequence Number as Partial IV in the response and use it to build the AEAD nonce to protect the response. This prevents the AEAD nonce from the request from being reused.</li>
          <li>If the server is using a different ID Context (Gid) for the response compared to what was used to verify the request (see <xref target="sec-group-key-management"/>), then the new ID Context MUST be included in the 'kid context' parameter of the response.</li>
          <li>
            <t>The server can obtain a new Sender ID from the Group Manager, when individually rekeyed (see <xref target="new-sender-id"/>) or when re-joining the group. In such a case, the server can help the client to synchronize, by including the 'kid' parameter in a response protected in pairwise mode, even when the request was also protected in pairwise mode.  </t>
            <t>
That is, when responding to a request protected in pairwise mode, the server SHOULD include the 'kid' parameter in a response protected in pairwise mode, if it is replying to that client for the first time since the assignment of its new Sender ID.</t>
          </li>
          <li>If Observe <xref target="RFC7641"/> is supported, what is defined in <xref target="ssec-protect-response-observe"/> of this document holds.</li>
        </ul>
      </section>
      <section anchor="sec-pairwise-verify-resp">
        <name>Verifying the Response</name>
        <t>Upon receiving a response with the Group Flag set to 0, following the procedure in <xref target="sec-message-reception"/>, the client MUST process it as defined in <xref section="8.4" sectionFormat="of" target="RFC8613"/>, with the differences summarized in <xref target="sec-differences-oscore-pairwise"/> of this document. The following differences also apply.</t>
        <ul spacing="normal">
          <li>The client may receive a response protected with a Security Context different from the one used to protect the corresponding request. Also, upon the establishment of a new Security Context, the client re-initializes its Replay Windows in its Recipient Contexts (see <xref target="ssec-sender-recipient-context"/>).</li>
          <li>The same as described in <xref target="ssec-verify-response"/> holds with respect to handling the 'kid' parameter of the response, when received as a reply to a request protected in pairwise mode. The client can also in this case check whether the replying server is the expected one, by relying on the server's public key. However, since the response is protected in pairwise mode, the public key is not used for verifying a countersignature as in <xref target="ssec-verify-response"/>. Instead, the expected server's authentication credential - namely Recipient Auth Cred and including the server's public key - was taken as input to derive the Pairwise Recipient Key used to decrypt and verify the response (see <xref target="key-derivation-pairwise"/>).</li>
          <li>If a new Recipient Context is created for this Recipient ID, new Pairwise Sender/Recipient Keys are also derived (see <xref target="key-derivation-pairwise"/>). The new Pairwise Sender/Recipient Keys are deleted if the Recipient Context is deleted as a result of the message not being successfully verified.</li>
          <li>If Observe <xref target="RFC7641"/> is supported, what is defined in <xref target="ssec-verify-response-observe"/> of this document holds. The client can also in this case identify a server to be the same one across a change of Sender ID, by relying on the server's public key. As to the expected server's authentication credential, the same holds as specified above for non-notification responses.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-synch-challenge-response">
      <name>Challenge-Response Synchronization</name>
      <t>This section describes how a server endpoint can synchronize with Sender Sequence Numbers of client endpoints in the group. Similarly to what is defined in <xref section="B.1.2" sectionFormat="of" target="RFC8613"/>, the server performs a challenge-response exchange with a client, by using the Echo Option for CoAP specified in <xref section="2" sectionFormat="of" target="RFC9175"/>.</t>
      <t>Upon receiving a request from a particular client for the first time, the server processes the message as described in this document, but, even if valid, does not deliver it to the application. Instead, the server replies to the client with an OSCORE protected 4.01 (Unauthorized) response message, including only the Echo Option and no diagnostic payload. The Echo option value SHOULD NOT be reused; when it is reused, it MUST be highly unlikely to have been recently used with this client. Since this response is protected with the Security Context used in the group, the client will consider the response valid upon successfully decrypting and verifying it.</t>
      <t>The server stores the Echo Option value included in the response together with the pair (gid,kid), where 'gid' is the Group Identifier of the OSCORE group and 'kid' is the Sender ID of the client in the group. These are specified in the 'kid context' and 'kid' fields of the OSCORE Option of the request, respectively. After a group rekeying has been completed and a new Security Context has been established in the group, which results also in a new Group Identifier (see <xref target="sec-group-key-management"/>), the server MUST delete all the stored Echo values associated with members of the group.</t>
      <t>Upon receiving a 4.01 (Unauthorized) response that includes an Echo Option and originates from a verified group member, the client sends a request as a unicast message addressed to the same server, echoing the Echo Option value. The client MUST NOT send the request including the Echo Option over multicast.</t>
      <t>If the group uses also the group mode and the used Signature Algorithm supports ECDH (e.g., ECDSA, EdDSA), the client MUST use the pairwise mode to protect the request, as per <xref target="sec-pairwise-protection-req"/>. Note that, as defined in <xref target="sec-pairwise-protection"/>, endpoints that are members of such a group and that use the Echo Option MUST support the pairwise mode.</t>
      <t>The client does not necessarily resend the same group request, but can instead send a more recent one, if the application permits it. This allows the client to not retain previously sent group requests for full retransmission, unless the application explicitly requires otherwise. In either case, the client uses a fresh Sender Sequence Number value from its own Sender Context. If the client stores group requests for possible retransmission with the Echo Option, it should not store a given request for longer than a preconfigured time interval. Note that the unicast request echoing the Echo Option is correctly treated and processed, since the 'kid context' field including the Group Identifier of the OSCORE group is still present in the OSCORE Option as part of the COSE object (see <xref target="sec-cose-object"/>).</t>
      <t>Upon receiving the unicast request including the Echo Option, the server performs the following verifications.</t>
      <ul spacing="normal">
        <li>If the server does not store an Echo Option value for the pair (gid,kid), it considers: i) the time t1 when it has established the Security Context used to protect the received request; and ii) the time t2 when the request has been received. Since a valid request cannot be older than the Security Context used to protect it, the server verifies that (t2 - t1) is less than the largest amount of time acceptable to consider the request fresh.</li>
        <li>If the server stores an Echo Option value for the pair (gid,kid) associated with that same client in the same group, the server verifies that the option value equals that same stored value previously sent to that client.</li>
      </ul>
      <t>If the verifications above fail, the server MUST NOT process the request further and MAY send a 4.01 (Unauthorized) response including an Echo Option, hence performing a new challenge-response exchange.</t>
      <t>If the verifications above are successful, the server proceeds as follows. In case the Replay Window in the Recipient Context associated with the client has not been set yet, the server updates the Replay Window to mark the current Sender Sequence Number from the latest received request as seen (but all newer ones as new), and delivers the message as fresh to the application. Otherwise, the server discards the verification result and treats the message as fresh or as a replay, according to the existing Replay Window.</t>
      <t>A server should not deliver requests from a given client to the application until one valid request from that same client has been verified as fresh, as conveying an echoed Echo Option. A server may perform the challenge-response described above at any time, if synchronization with Sender Sequence Numbers of clients is lost, e.g., after a device reboot. A client has to be ready to perform the challenge-response based on the Echo Option if a server starts it.</t>
      <t>It is the role of the server application to define under what circumstances Sender Sequence Numbers lose synchronization. This can include experiencing a "large enough" gap D = (SN2 - SN1), between the Sender Sequence Number SN1 of the latest accepted group request from a client and the Sender Sequence Number SN2 of a group request just received from that client. However, a client may send several unicast requests to different group members as protected with the pairwise mode, which may result in the server experiencing the gap D in a relatively short time. This would induce the server to perform more challenge-response exchanges than actually needed.</t>
      <t>In order to ameliorate this, the server may rely on a trade-off between the Sender Sequence Number gap D and a time gap T = (t2 - t1), where t1 is the time when the latest group request from a client was accepted and t2 is the time when the latest group request from that client has been received, respectively. Then, the server can start a challenge-response when experiencing a time gap T larger than a given, preconfigured threshold. Also, the server can start a challenge-response when experiencing a Sender Sequence Number gap D greater than a different threshold, computed as a monotonically increasing function of the currently experienced time gap T.</t>
      <t>The challenge-response approach described in this section provides an assurance of absolute message freshness. However, it can result in an impact on performance which is undesirable or unbearable, especially in large groups where many endpoints at the same time might join as new members or lose synchronization.</t>
      <t>Endpoints configured as silent servers are not able to perform the challenge-response described above, as they do not store a Sender Context to secure the 4.01 (Unauthorized) response to the client. Thus, silent servers should adopt alternative approaches to achieve and maintain synchronization with Sender Sequence Numbers of clients.</t>
      <t>Since requests including the Echo Option are sent over unicast, a server can be victim of the attack discussed in <xref target="ssec-unicast-requests"/>, in case such requests are protected with the group mode. Instead, protecting those requests with the pairwise mode prevents the attack above. In fact, only the exact server involved in the challenge-response exchange is able to derive the pairwise key used by the client to protect the request including the Echo Option.</t>
      <t>In either case, an internal on-path adversary would not be able to mix up the Echo Option value of two different unicast requests, sent by a same client to any two different servers in the group. In fact, even if the group mode was used, this would require the adversary to forge the countersignature of both requests. As a consequence, each of the two servers remains able to selectively accept a request with the Echo Option only if it is waiting for that exact integrity-protected Echo Option value, and is thus the intended recipient.</t>
    </section>
    <section anchor="implementation-compliance">
      <name>Implementation Compliance</name>
      <t>Like in <xref target="RFC8613"/>, HKDF SHA-256 is the mandatory to implement HKDF.</t>
      <t>An endpoint may support only the group mode, or only the pairwise mode, or both.</t>
      <t>For endpoints that support the group mode, the following applies.</t>
      <ul spacing="normal">
        <li>For endpoints that use authenticated encryption, the AEAD algorithm AES-CCM-16-64-128 defined in <xref section="4.2" sectionFormat="of" target="RFC9053"/> is mandatory to implement as Signature Encryption Algorithm (see <xref target="ssec-common-context-cs-enc-alg"/>).</li>
        <li>
          <t>For many constrained IoT devices it is problematic to support more than one signature algorithm. Existing devices can be expected to support either EdDSA or ECDSA. In order to enable as much interoperability as we can reasonably achieve, the following applies with respect to the Signature Algorithm (see <xref target="ssec-common-context-cs-alg"/>).  </t>
          <t>
Less constrained endpoints SHOULD implement both: the EdDSA signature algorithm together with the elliptic curve Ed25519 <xref target="RFC8032"/>; and the ECDSA signature algorithm together with the elliptic curve P-256.  </t>
          <t>
Constrained endpoints SHOULD implement: the EdDSA signature algorithm together with the elliptic curve Ed25519 <xref target="RFC8032"/>; or the ECDSA signature algorithm together with the elliptic curve P-256.</t>
        </li>
        <li>Endpoints that implement the ECDSA signature algorithm MAY use "deterministic ECDSA" as specified in <xref target="RFC6979"/>. Pure deterministic elliptic-curve signature algorithms such as deterministic ECDSA and EdDSA have the advantage of not requiring access to a source of high-quality randomness. However, these signature algorithms have been shown vulnerable to some side-channel and fault injection attacks due to their determinism, which can result in extracting a device's private key. As suggested in <xref section="2.1.1" sectionFormat="of" target="RFC9053"/>, this can be addressed by combining both randomness and determinism <xref target="I-D.mattsson-cfrg-det-sigs-with-noise"/>.</li>
      </ul>
      <t>For endpoints that support the pairwise mode, the following applies.</t>
      <ul spacing="normal">
        <li>The AEAD algorithm AES-CCM-16-64-128 defined in <xref section="4.2" sectionFormat="of" target="RFC9053"/> is mandatory to implement as AEAD Algorithm (see <xref target="ssec-common-context-aead-alg"/>).</li>
        <li>The ECDH-SS + HKDF-256 algorithm specified in <xref section="6.3.1" sectionFormat="of" target="RFC9053"/> is mandatory to implement as Pairwise Key Agreement Algorithm (see <xref target="ssec-common-context-dh-alg"/>).</li>
        <li>
          <t>In order to enable as much interoperability as we can reasonably achieve in the presence of constrained devices (see above), the following applies.  </t>
          <t>
Less constrained endpoints SHOULD implement both the X25519 curve <xref target="RFC7748"/> and the P-256 curve as ECDH curves.  </t>
          <t>
Constrained endpoints SHOULD implement the X25519 curve <xref target="RFC7748"/> or the P-256 curve as ECDH curve.</t>
        </li>
      </ul>
      <t>Constrained IoT devices may alternatively represent Montgomery curves and (twisted) Edwards curves <xref target="RFC7748"/> in the short-Weierstrass form Wei25519, with which the algorithms ECDSA25519 and ECDH25519 can be used for signature operations and Diffie-Hellman secret calculation, respectively <xref target="I-D.ietf-lwig-curve-representations"/>.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The same threat model discussed for OSCORE in Appendix D.1 of <xref target="RFC8613"/> holds for Group OSCORE. In addition, when using the group mode, source authentication of messages is explicitly ensured by means of countersignatures, as discussed in <xref target="ssec-group-mode-security"/>.</t>
      <t>Note that, even if an endpoint is authorized to be a group member and to take part in group communications, there is a risk that it behaves inappropriately. For instance, it can forward the content of messages in the group to unauthorized entities. However, in many use cases, the devices in the group belong to a common authority and are configured by a commissioner (see <xref target="sec-use-cases"/>), which results in a practically limited risk and enables a prompt detection/reaction in case of misbehaving.</t>
      <t>The same considerations on supporting Proxy operations discussed for OSCORE in Appendix D.2 of <xref target="RFC8613"/> hold for Group OSCORE.</t>
      <t>The same considerations on protected message fields for OSCORE discussed in Appendix D.3 of <xref target="RFC8613"/> hold for Group OSCORE.</t>
      <t>The same considerations on uniqueness of (key, nonce) pairs for OSCORE discussed in Appendix D.4 of <xref target="RFC8613"/> hold for Group OSCORE. This is further discussed in <xref target="ssec-key-nonce-uniqueness"/> of this document.</t>
      <t>The same considerations on unprotected message fields for OSCORE discussed in Appendix D.5 of <xref target="RFC8613"/> hold for Group OSCORE, with the following differences. First, the 'kid context' of request messages is part of the Additional Authenticated Data, thus safely enabling to keep observations active beyond a possible change of ID Context (Gid), following a group rekeying (see <xref target="sec-cose-object-ext-aad"/>). Second, the countersignature included in a Group OSCORE message protected in group mode is computed also over the value of the OSCORE option, which is also part of the Additional Authenticated Data used in the signing process. This is further discussed in <xref target="ssec-cross-group-injection"/> of this document.</t>
      <t>As discussed in <xref section="6.2.3" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/>, Group OSCORE addresses security attacks against CoAP listed in Sections 11.2-11.6 of <xref target="RFC7252"/>, especially when run over IP multicast.</t>
      <t>The rest of this section first discusses security aspects to be taken into account when using Group OSCORE. Then it goes through aspects covered in the security considerations of OSCORE (see <xref section="12" sectionFormat="of" target="RFC8613"/>), and discusses how they hold when Group OSCORE is used.</t>
      <section anchor="ssec-group-mode-security">
        <name>Security of the Group Mode</name>
        <t>The group mode defined in <xref target="mess-processing"/> relies on commonly shared group keying material to protect communication within a group. Using the group mode has the implications discussed below. The following refers to group members as the endpoints in the group storing the latest version of the group keying material.</t>
        <ul spacing="normal">
          <li>Messages are encrypted at a group level (group-level data confidentiality), i.e., they can be decrypted by any member of the group, but not by an external adversary or other external entities.</li>
          <li>
            <t>If the used encryption algorithm provides integrity protection, then it also ensures group authentication and proof of group membership, but not source authentication. That is, it ensures that a message sent to a group has been sent by a member of that group, but not necessarily by the alleged sender. In fact, any group member is able to derive the Sender Key used by the actual sender endpoint, and thus can compute a valid authentication tag. Therefore, the message content could originate from any of the current group members.  </t>
            <t>
Furthermore, if the used encryption algorithm does not provide integrity protection, then it does not ensure any level of message authentication or proof of group membership.  </t>
            <t>
On the other hand, proof of group membership is always ensured by construction through the strict management of the group keying material (see <xref target="sec-group-key-management"/>). That is, the group is rekeyed in case of members' leaving, and the current group members are informed of former group members. Thus, a current group member storing the latest group keying material does not store the authentication credential of any former group member.  </t>
            <t>
This allows a recipient endpoint to rely on the stored authentication credentials and public keys included therin, in order to always confidently assert the group membership of a sender endpoint when processing an incoming message, i.e., to assert that the sender endpoint was a group member when it signed the message. In turn, this prevents a former group member to possibly re-sign and inject in the group a stored message that was protected with old keying material.</t>
          </li>
          <li>Source authentication of messages sent to a group is ensured through a countersignature, which is computed by the sender using its own private key and then appended to the message payload. Also, the countersignature is encrypted by using a keystream derived from the group keying material (see <xref target="sec-cose-object-unprotected-field"/>). This ensures group privacy, i.e., an attacker cannot track an endpoint over two groups by linking messages between the two groups, unless being also a member of those groups.</li>
        </ul>
        <t>The security properties of the group mode are summarized below.</t>
        <ol spacing="normal" type="1"><li>Asymmetric source authentication, by means of a countersignature.</li>
          <li>Symmetric group authentication, by means of an authentication tag (only for encryption algorithms providing integrity protection).</li>
          <li>Symmetric group confidentiality, by means of symmetric encryption.</li>
          <li>Proof of group membership, by strictly managing the group keying material, as well as by means of integrity tags when using an encryption algorithm that provides also integrity protection.</li>
          <li>Group privacy, by encrypting the countersignature.</li>
        </ol>
        <t>The group mode fulfills the security properties above while also displaying the following benefits. First, the use of an encryption algorithm that does not provide integrity protection results in a minimal communication overhead, by limiting the message payload to the ciphertext and the encrypted countersignature. Second, it is possible to deploy semi-trusted entities such as signature checkers (see <xref target="sec-additional-entities"/>), which can break property 5, but cannot break properties 1, 2 and 3.</t>
      </section>
      <section anchor="ssec-pairwise-mode-security">
        <name>Security of the Pairwise Mode</name>
        <t>The pairwise mode defined in <xref target="sec-pairwise-protection"/> protects messages by using pairwise symmetric keys, derived from the static-static Diffie-Hellman shared secret computed from the asymmetric keys of the sender and recipient endpoint (see <xref target="sec-derivation-pairwise"/>).</t>
        <t>The used encryption algorithm MUST provide integrity protection. Therefore, the pairwise mode ensures both pairwise data-confidentiality and source authentication of messages, without using countersignatures. Furthermore, the recipient endpoint achieves proof of group membership for the sender endpoint, since only current group members have the required keying material to derive a valid Pairwise Sender/Recipient Key.</t>
        <t>The long-term storing of the Diffie-Hellman shared secret is a potential security issue. In fact, if the shared secret of two group members is leaked, a third group member can exploit it to impersonate any of those two group members, by deriving and using their pairwise key. The possibility of such leakage should be contemplated, as more likely to happen than the leakage of a private key, which could be rather protected at a significantly higher level than generic memory, e.g., by using a Trusted Platform Module. Therefore, there is a trade-off between the maximum amount of time a same shared secret is stored and the frequency of its re-computing.</t>
      </section>
      <section anchor="ssec-key-nonce-uniqueness">
        <name>Uniqueness of (key, nonce)</name>
        <t>The proof for uniqueness of (key, nonce) pairs in Appendix D.4 of <xref target="RFC8613"/> is also valid in group communication scenarios. That is, given an OSCORE group:</t>
        <ul spacing="normal">
          <li>Uniqueness of Sender IDs within the group is enforced by the Group Manager. In fact, from the moment when a Gid is assigned to a group until the moment a new Gid is assigned to that same group, the Group Manager does not reassign a Sender ID within the group (see <xref target="sec-group-key-management"/>).</li>
          <li>The case A in Appendix D.4 of <xref target="RFC8613"/> concerns all group requests and responses including a Partial IV (e.g., Observe notifications). In this case, same considerations from <xref target="RFC8613"/> apply here as well.</li>
          <li>The case B in Appendix D.4 of <xref target="RFC8613"/> concerns responses not including a Partial IV (e.g., single response to a group request). In this case, same considerations from <xref target="RFC8613"/> apply here as well.</li>
        </ul>
        <t>As a consequence, each message encrypted/decrypted with the same Sender Key is processed by using a different (ID_PIV, PIV) pair. This means that nonces used by any fixed encrypting endpoint are unique. Thus, each message is processed with a different (key, nonce) pair.</t>
      </section>
      <section anchor="sec-cons-group-key-management">
        <name>Management of Group Keying Material</name>
        <t>The approach described in this document should take into account the risk of compromise of group members. In particular, this document specifies that a key management scheme for secure revocation and renewal of Security Contexts and group keying material MUST be adopted.</t>
        <t><xref target="I-D.ietf-ace-key-groupcomm-oscore"/> specifies a simple rekeying scheme for renewing the Security Context in a group.</t>
        <t>Alternative rekeying schemes which are more scalable with the group size may be needed in dynamic, large groups where endpoints can join and leave at any time, in order to limit the impact on performance due to the Security Context and keying material update.</t>
      </section>
      <section anchor="ssec-key-rotation">
        <name>Update of Security Context and Key Rotation</name>
        <t>A group member can receive a message shortly after the group has been rekeyed, and new security parameters and keying material have been distributed by the Group Manager.</t>
        <t>This may result in a client using an old Security Context to protect a request, and a server using a different new Security Context to protect a corresponding response. As a consequence, clients may receive a response protected with a Security Context different from the one used to protect the corresponding request.</t>
        <t>In particular, a server may first get a request protected with the old Security Context, then install the new Security Context, and only after that produce a response to send back to the client. In such a case, as specified in <xref target="ssec-protect-response"/>, the server MUST protect the potential response using the new Security Context. Specifically, the server MUST include its Sender Sequence Number as Partial IV in the response and use it to build the AEAD nonce to protect the response. This prevents the AEAD nonce from the request from being reused with the new Security Context.</t>
        <t>The client will process that response using the new Security Context, provided that it has installed the new security parameters and keying material before the message processing.</t>
        <t>In case block-wise transfer <xref target="RFC7959"/> is used, the same considerations from <xref section="10.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> hold.</t>
        <t>Furthermore, as described below, a group rekeying may temporarily result in misaligned Security Contexts between the sender and recipient of a same message.</t>
        <section anchor="ssec-key-rotation-late-sender">
          <name>Late Update on the Sender</name>
          <t>In this case, the sender protects a message using the old Security Context, i.e., before having installed the new Security Context. However, the recipient receives the message after having installed the new Security Context, and is thus unable to correctly process it.</t>
          <t>A possible way to ameliorate this issue is to preserve the old, recent, Security Context for a maximum amount of time defined by the application. By doing so, the recipient can still try to process the received message using the old retained Security Context as a second attempt. This makes particular sense when the recipient is a client, that would hence be able to process incoming responses protected with the old, recent, Security Context used to protect the associated group request. Instead, a recipient server would better and more simply discard an incoming group request which is not successfully processed with the new Security Context.</t>
          <t>This tolerance preserves the processing of secure messages throughout a long-lasting key rotation, as group rekeying processes may likely take a long time to complete, especially in large groups. On the other hand, a former (compromised) group member can abusively take advantage of this, and send messages protected with the old retained Security Context. Therefore, a conservative application policy should not admit the retention of old Security Contexts.</t>
        </section>
        <section anchor="ssec-key-rotation-late-recipient">
          <name>Late Update on the Recipient</name>
          <t>In this case, the sender protects a message using the new Security Context, but the recipient receives that message before having installed the new Security Context. Therefore, the recipient would not be able to correctly process the message and hence discards it.</t>
          <t>If the recipient installs the new Security Context shortly after that and the sender endpoint retransmits the message, the former will still be able to receive and correctly process the message.</t>
          <t>In any case, the recipient should actively ask the Group Manager for an updated Security Context according to an application-defined policy, for instance after a given number of unsuccessfully decrypted incoming messages.</t>
        </section>
      </section>
      <section anchor="ssec-gid-collision">
        <name>Collision of Group Identifiers</name>
        <t>In case endpoints are deployed in multiple groups managed by different non-synchronized Group Managers, it is possible for Group Identifiers of different groups to coincide.</t>
        <t>This does not impair the security of the AEAD algorithm. In fact, as long as the Master Secret is different for different groups and this condition holds over time, AEAD keys are different among different groups.</t>
        <t>In case multiple groups use the same IP multicast address, the entity assigning that address may help limiting the chances to experience such collisions of Group Identifiers. In particular, it may allow the Group Managers of those groups using the same IP multicast address to share their respective list of assigned Group Identifiers currently in use.</t>
      </section>
      <section anchor="ssec-cross-group-injection">
        <name>Cross-group Message Injection</name>
        <t>A same endpoint is allowed to and would likely use the same pair (private key, authentication credential) in multiple OSCORE groups, possibly administered by different Group Managers.</t>
        <t>When a sender endpoint sends a message protected in pairwise mode to a recipient endpoint in an OSCORE group, a malicious group member may attempt to inject the message to a different OSCORE group also including the same endpoints (see <xref target="ssec-cross-group-injection-attack"/>).</t>
        <t>This practically relies on altering the content of the OSCORE option, and having the same MAC in the ciphertext still correctly validating, which has a success probability depending on the size of the MAC.</t>
        <t>As discussed in <xref target="sssec-cross-group-injection-group-mode"/>, the attack is practically infeasible if the message is protected in group mode, thanks to the countersignature also bound to the OSCORE option through the Additional Authenticated Data used in the signing process (see <xref target="sec-cose-object-ext-aad"/>).</t>
        <section anchor="ssec-cross-group-injection-attack">
          <name>Attack Description</name>
          <t>Let us consider:</t>
          <ul spacing="normal">
            <li>Two OSCORE groups G1 and G2, with ID Context (Group ID) Gid1 and Gid2, respectively. Both G1 and G2 use the AEAD cipher AES-CCM-16-64-128, i.e., the MAC of the ciphertext is 8 bytes in size.</li>
            <li>A sender endpoint X which is member of both G1 and G2, and uses the same pair (private key, authentication credential) in both groups. The endpoint X has Sender ID Sid1 in G1 and Sender ID Sid2 in G2. The pairs (Sid1, Gid1) and (Sid2, Gid2) identify the same authentication credential of X in G1 and G2, respectively.</li>
            <li>A recipient endpoint Y which is member of both G1 and G2, and uses the same pair (private key, authentication credential) in both groups. The endpoint Y has Sender ID Sid3 in G1 and Sender ID Sid4 in G2. The pairs (Sid3, Gid1) and (Sid4, Gid2) identify the same authentication credential of Y in G1 and G2, respectively.</li>
            <li>A malicious endpoint Z is also member of both G1 and G2. Hence, Z is able to derive the Sender Keys used by X in G1 and G2.</li>
          </ul>
          <t>When X sends a message M1 addressed to Y in G1 and protected in pairwise mode, Z can intercept M1, and attempt to forge a valid message M2 to be injected in G2, making it appear as still sent by X to Y and valid to be accepted.</t>
          <t>More in detail, Z intercepts and stops message M1, and forges a message M2 by changing the value of the OSCORE option from M1 as follows: the 'kid context' is set to G2 (rather than G1); and the 'kid' is set to Sid2 (rather than Sid1). Then, Z injects message M2 as addressed to Y in G2.</t>
          <t>Upon receiving M2, there is a probability equal to 2^-64 that Y successfully verifies the same unchanged MAC by using the Pairwise Recipient Key associated with X in G2.</t>
          <t>Note that Z does not know the pairwise keys of X and Y, since it does not know and is not able to compute their shared Diffie-Hellman secret. Therefore, Z is not able to check offline if a performed forgery is actually valid, before sending the forged message to G2.</t>
        </section>
        <section anchor="sssec-cross-group-injection-group-mode">
          <name>Attack Prevention in Group Mode</name>
          <t>When a Group OSCORE message is protected with the group mode, the countersignature is computed also over the value of the OSCORE option, which is part of the Additional Authenticated Data used in the signing process (see <xref target="sec-cose-object-ext-aad"/>).</t>
          <t>That is, other than over the ciphertext, the countersignature is computed over: the ID Context (Gid) and the Partial IV, which are always present in group requests; as well as the Sender ID of the message originator, which is always present in group requests as well as in responses to requests protected in group mode.</t>
          <t>Since the signing process takes as input also the ciphertext of the COSE_Encrypt0 object, the countersignature is bound not only to the intended OSCORE group, hence to the triplet (Master Secret, Master Salt, ID Context), but also to a specific Sender ID in that group and to its specific symmetric key used for AEAD encryption, hence to the quartet (Master Secret, Master Salt, ID Context, Sender ID).</t>
          <t>This makes it practically infeasible to perform the attack described in <xref target="ssec-cross-group-injection-attack"/>, since it would require the adversary to additionally forge a valid countersignature that replaces the original one in the forged message M2.</t>
          <t>If, hypothetically, the countersignature did not cover the OSCORE option:</t>
          <ul spacing="normal">
            <li>The attack described in <xref target="ssec-cross-group-injection-attack"/> would still be possible against response messages protected in group mode, since the same unchanged countersignature from message M1 would be also valid in message M2.</li>
            <li>
              <t>A simplification would also be possible in performing the attack, since Z is able to derive the Sender/Recipient Keys of X and Y in G1 and G2. That is, Z can also set a convenient Partial IV in the response, until the same unchanged MAC is successfully verified by using G2 as 'request_kid_context', Sid2 as 'request_kid', and the symmetric key associated with X in G2.  </t>
              <t>
Since the Partial IV is 5 bytes in size, this requires 2^40 operations to test all the Partial IVs, which can be done in real-time. The probability that a single given message M1 can be used to forge a response M2 for a given request would be equal to 2^-24, since there are more MAC values (8 bytes in size) than Partial IV values (5 bytes in size).  </t>
              <t>
Note that, by changing the Partial IV as discussed above, any member of G1 would also be able to forge a valid signed response message M2 to be injected in the same group G1.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ssec-group-cloning">
        <name>Prevention of Group Cloning Attack</name>
        <t>Both when using the group mode and the pairwise mode, the message protection covers also the Group Manager's authentication credential. This is included in the Additional Authenticated Data used in the signing process and/or in the integrity-protected encryption process (see <xref target="sec-cose-object-ext-aad"/>).</t>
        <t>By doing so, an endpoint X member of a group G1 cannot perform the following attack.</t>
        <ol spacing="normal" type="1"><li>X sets up a group G2 where it acts as Group Manager.</li>
          <li>X makes G2 a "clone" of G1, i.e., G1 and G2 use the same algorithms and have the same Master Secret, Master Salt and ID Context.</li>
          <li>X collects a message M sent to G1 and injects it in G2.</li>
          <li>Members of G2 accept M and believe it to be originated in G2.</li>
        </ol>
        <t>The attack above is effectively prevented, since message M is protected by including the authentication credential of G1's Group Manager in the Additional Authenticated Data. Therefore, members of G2 do not successfully verify and decrypt M, since they correctly use the authentication credential of X as Group Manager of G2 when attempting to.</t>
      </section>
      <section anchor="ssec-unicast-requests">
        <name>Group OSCORE for Unicast Requests</name>
        <t>If a request is intended to be sent over unicast as addressed to a single group member, it is NOT RECOMMENDED for the client to protect the request by using the group mode as defined in <xref target="ssec-protect-request"/>.</t>
        <t>This does not include the case where the client sends a request over unicast to a proxy, to be forwarded to multiple intended recipients over multicast <xref target="I-D.ietf-core-groupcomm-bis"/>. In this case, the client MUST protect the request with the group mode, even though it is sent to the proxy over unicast (see <xref target="mess-processing"/>).</t>
        <t>If the client uses the group mode with its own Sender Key to protect a unicast request to a group member, an on-path adversary can, right then or later on, redirect that request to one/many different group member(s) over unicast, or to the whole OSCORE group over multicast. By doing so, the adversary can induce the target group member(s) to perform actions intended for one group member only. Note that the adversary can be external, i.e., (s)he does not need to also be a member of the OSCORE group.</t>
        <t>This is due to the fact that the client is not able to indicate the single intended recipient in a way which is secure and possible to process for Group OSCORE on the server side. In particular, Group OSCORE does not protect network addressing information such as the IP address of the intended recipient server. It follows that the server(s) receiving the redirected request cannot assert whether that was the original intention of the client, and would thus simply assume so.</t>
        <t>The impact of such an attack depends especially on the REST method of the request, i.e., the Inner CoAP Code of the OSCORE request message. In particular, safe methods such as GET and FETCH would trigger (several) unintended responses from the targeted server(s), while not resulting in destructive behavior. On the other hand, non safe methods such as PUT, POST and PATCH/iPATCH would result in the target server(s) taking active actions on their resources and possible cyber-physical environment, with the risk of destructive consequences and possible implications for safety.</t>
        <t>A client can instead use the pairwise mode as defined in <xref target="sec-pairwise-protection-req"/>, in order to protect a request sent to a single group member by using pairwise keying material (see <xref target="sec-derivation-pairwise"/>). This prevents the attack discussed above by construction, as only the intended server is able to derive the pairwise keying material used by the client to protect the request. A client supporting the pairwise mode SHOULD use it to protect requests sent to a single group member over unicast, instead of using the group mode. For an example where this is not fulfilled, see <xref section="9.2.1" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications"/>.</t>
        <t>With particular reference to block-wise transfers <xref target="RFC7959"/>, <xref section="3.8" sectionFormat="of" target="I-D.ietf-core-groupcomm-bis"/> points out that, while an initial request including the CoAP Block2 option can be sent over multicast, any other request in a transfer has to occur over unicast, individually addressing the servers in the group.</t>
        <t>Additional considerations are discussed in <xref target="sec-synch-challenge-response"/>, with respect to requests including a CoAP Echo Option <xref target="RFC9175"/> that have to be sent over unicast, as a challenge-response method for servers to achieve synchronization of clients' Sender Sequence Number.</t>
      </section>
      <section anchor="ssec-e2e-protection">
        <name>End-to-end Protection</name>
        <t>The same considerations from <xref section="12.1" sectionFormat="of" target="RFC8613"/> hold for Group OSCORE.</t>
        <t>Additionally, (D)TLS and Group OSCORE can be combined for protecting message exchanges occurring over unicast. However, it is not possible to combine (D)TLS and Group OSCORE for protecting message exchanges where messages are (also) sent over multicast.</t>
      </section>
      <section anchor="ssec-master-secret">
        <name>Master Secret</name>
        <t>Group OSCORE derives the Security Context using the same construction as OSCORE, and by using the Group Identifier of a group as the related ID Context. Hence, the same required properties of the Security Context parameters discussed in <xref section="3.3" sectionFormat="of" target="RFC8613"/> hold for this document.</t>
        <t>With particular reference to the OSCORE Master Secret, it has to be kept secret among the members of the respective OSCORE group and the Group Manager responsible for that group. Also, the Master Secret must have a good amount of randomness, and the Group Manager can generate it offline using a good random number generator. This includes the case where the Group Manager rekeys the group by generating and distributing a new Master Secret. Randomness requirements for security are described in <xref target="RFC4086"/>.</t>
      </section>
      <section anchor="ssec-replay-protection">
        <name>Replay Protection</name>
        <t>As in OSCORE <xref target="RFC8613"/>, also Group OSCORE relies on Sender Sequence Numbers included in the COSE message field 'Partial IV' and used to build AEAD nonces.</t>
        <t>Note that the Partial IV of an endpoint does not necessarily grow monotonically. For instance, upon exhaustion of the endpoint Sender Sequence Number, the Partial IV also gets exhausted. As discussed in <xref target="sec-group-re-join"/>, this results either in the endpoint being individually rekeyed and getting a new Sender ID, or in the establishment of a new Security Context in the group. Therefore, uniqueness of (key, nonce) pairs (see <xref target="ssec-key-nonce-uniqueness"/>) is preserved also when a new Security Context is established.</t>
        <t>Since one-to-many communication such as multicast usually involves unreliable transports, the simplification of the Replay Window to a size of 1 suggested in <xref section="7.4" sectionFormat="of" target="RFC8613"/> is not viable with Group OSCORE, unless exchanges in the group rely only on unicast messages.</t>
        <t>As discussed in <xref target="sec-synch-seq-num"/>, a Replay Window may be initialized as not valid, following the loss of mutable Security Context <xref target="ssec-loss-mutable-context"/>. In particular, <xref target="ssec-loss-mutable-context-total"/> and <xref target="ssec-loss-mutable-context-overflow"/> define measures that endpoints need to take in such a situation, before resuming to accept incoming messages from other group members.</t>
      </section>
      <section anchor="ssec-seccons-freshness">
        <name>Message Freshness</name>
        <t>As discussed in <xref target="sec-freshness"/>, a server may not be able to assert whether an incoming request is fresh, in case it does not have or has lost synchronization with the client's Sender Sequence Number.</t>
        <t>If freshness is relevant for the application, the server may (re-)synchronize with the client's Sender Sequence Number at any time, by using the approach described in <xref target="sec-synch-challenge-response"/> and based on the CoAP Echo Option <xref target="RFC9175"/>, as a variant of the approach defined in Appendix B.1.2 of <xref target="RFC8613"/> applicable to Group OSCORE.</t>
      </section>
      <section anchor="ssec-client-aliveness">
        <name>Client Aliveness</name>
        <t>Building on <xref section="12.5" sectionFormat="of" target="RFC8613"/>, a server may use the CoAP Echo Option <xref target="RFC9175"/> to verify the aliveness of the client that originated a received request, by using the approach described in <xref target="sec-synch-challenge-response"/> of this document.</t>
      </section>
      <section anchor="ssec-crypto-considerations">
        <name>Cryptographic Considerations</name>
        <t>The same considerations from <xref section="12.6" sectionFormat="of" target="RFC8613"/> about the maximum Sender Sequence Number hold for Group OSCORE.</t>
        <t>As discussed in <xref target="ssec-wrap-around-partial-iv"/>, an endpoint that experiences an exhaustion of its own Sender Sequence Numbers MUST NOT protect further messages including a Partial IV, until it has derived a new Sender Context. This prevents the endpoint to reuse the same AEAD nonces with the same Sender Key.</t>
        <t>In order to renew its own Sender Context, the endpoint SHOULD inform the Group Manager, which can either renew the whole Security Context by means of group rekeying, or provide only that endpoint with a new Sender ID value. In either case, the endpoint derives a new Sender Context, and in particular a new Sender Key.</t>
        <t>Additionally, the same considerations from <xref section="12.6" sectionFormat="of" target="RFC8613"/> hold for Group OSCORE, about building the AEAD nonce and the secrecy of the Security Context parameters.</t>
        <t>The group mode uses the "encrypt-then-sign" construction, i.e., the countersignature is computed over the COSE_Encrypt0 object (see <xref target="sec-cose-object-unprotected-field"/>). This is motivated by enabling additional entities acting as signature checkers (see <xref target="sec-additional-entities"/>), which do not join a group as members but are allowed to verify countersignatures of messages protected in group mode without being able to decrypt them (see <xref target="sec-processing-signature-checker"/>).</t>
        <t>If the encryption algorithm used in group mode provides integrity protection, countersignatures of COSE_Encrypt0 with short authentication tags do not provide the security properties associated with the same algorithm used in COSE_Sign (see <xref section="6" sectionFormat="of" target="I-D.ietf-cose-countersign"/>). To provide 128-bit security against collision attacks, the tag length MUST be at least 256-bits. A countersignature of a COSE_Encrypt0 with AES-CCM-16-64-128 provides at most 32 bits of integrity protection.</t>
        <t>The derivation of pairwise keys defined in <xref target="key-derivation-pairwise"/> is compatible with ECDSA and EdDSA asymmetric keys, but is not compatible with RSA asymmetric keys.</t>
        <t>For the public key translation from Ed25519 (Ed448) to X25519 (X448) specified in <xref target="key-derivation-pairwise"/>, variable time methods can be used since the translation operates on public information. Any byte string of appropriate length is accepted as a public key for X25519 (X448) in <xref target="RFC7748"/>. It is therefore not necessary for security to validate the translated public key (assuming the translation was successful).</t>
        <t>The security of using the same key pair for Diffie-Hellman and for signing (by considering the ECDH procedure in <xref target="sec-derivation-pairwise"/> as a Key Encapsulation Mechanism (KEM)) is demonstrated in <xref target="Degabriele"/> and <xref target="Thormarker"/>.</t>
        <t>Applications using ECDH (except X25519 and X448) based KEM in <xref target="sec-derivation-pairwise"/> are assumed to verify that a peer endpoint's public key is on the expected curve and that the shared secret is not the point at infinity. The KEM in <xref target="Degabriele"/> checks that the shared secret is different from the point at infinity, as does the procedure in Section 5.7.1.2 of <xref target="NIST-800-56A"/> which is referenced in <xref target="sec-derivation-pairwise"/>.</t>
        <t>Extending Theorem 2 of <xref target="Degabriele"/>, <xref target="Thormarker"/> shows that the same key pair can be used with X25519 and Ed25519 (X448 and Ed448) for the KEM specified in <xref target="sec-derivation-pairwise"/>. By symmetry in the KEM used in this document, both endpoints can consider themselves to have the recipient role in the KEM - as discussed in Section 7 of <xref target="Thormarker"/> - and rely on the mentioned proofs for the security of their key pairs.</t>
        <t>Theorem 3 in <xref target="Degabriele"/> shows that the same key pair can be used for an ECDH based KEM and ECDSA. The KEM uses a different KDF than in <xref target="sec-derivation-pairwise"/>, but the proof only depends on that the KDF has certain required properties, which are the typical assumptions about HKDF, e.g., that output keys are pseudorandom. In order to comply with the assumptions of Theorem 3, received public keys MUST be successfully validated, see Section 5.6.2.3.4 of <xref target="NIST-800-56A"/>. The validation MAY be performed by a trusted Group Manager. For <xref target="Degabriele"/> to apply as it is written, public keys need to be in the expected subgroup. For this we rely on cofactor DH, Section 5.7.1.2 of <xref target="NIST-800-56A"/> which is referenced in <xref target="sec-derivation-pairwise"/>.</t>
        <t>HashEdDSA variants of Ed25519 and Ed448 are not used by COSE, see <xref section="2.2" sectionFormat="of" target="RFC9053"/>, and are not covered by the analysis in <xref target="Thormarker"/>. Hence, they MUST NOT be used with the public keys used to derive pairwise keys as specified in this document.</t>
      </section>
      <section anchor="ssec-message-segmentation">
        <name>Message Segmentation</name>
        <t>The same considerations from <xref section="12.7" sectionFormat="of" target="RFC8613"/> hold for Group OSCORE.</t>
      </section>
      <section anchor="ssec-privacy">
        <name>Privacy Considerations</name>
        <t>Group OSCORE ensures end-to-end integrity protection and encryption of the message payload and all options that are not used for proxy operations. In particular, options are processed according to the same class U/I/E that they have for OSCORE. Therefore, the same privacy considerations from <xref section="12.8" sectionFormat="of" target="RFC8613"/> hold for Group OSCORE, with the following addition.</t>
        <ul spacing="normal">
          <li>When protecting a message in group mode, the countersignature is encrypted by using a keystream derived from the group keying material (see <xref target="sec-cose-object-unprotected-field"/> and <xref target="sssec-encrypted-signature-keystream"/>). This ensures group privacy. That is, an attacker cannot track an endpoint over two groups by linking messages between the two groups, unless being also a member of those groups.</li>
        </ul>
        <t>Furthermore, the following privacy considerations hold about the OSCORE option, which may reveal information on the communicating endpoints.</t>
        <ul spacing="normal">
          <li>The 'kid' parameter, which is intended to help a recipient endpoint to find the right Recipient Context, may reveal information about the Sender Endpoint. When both a request and the corresponding responses include the 'kid' parameter, this may reveal information about both a client sending a request and all the possibly replying servers sending their own individual response.</li>
          <li>The 'kid context' parameter, which is intended to help a recipient endpoint to find the right Security Context, reveals information about the sender endpoint. In particular, it reveals that the sender endpoint is a member of a particular OSCORE group, whose current Group ID is indicated in the 'kid context' parameter.</li>
        </ul>
        <t>When receiving a group request, each of the recipient endpoints can reply with a response that includes its Sender ID as 'kid' parameter. All these responses will be matchable with the request through the Token. Thus, even if these responses do not include a 'kid context' parameter, it becomes possible to understand that the responder endpoints are in the same group of the requester endpoint.</t>
        <t>Furthermore, using the approach described in <xref target="sec-synch-challenge-response"/> to achieve Sender Sequence Number synchronization with a client may reveal when a server device goes through a reboot. This can be mitigated by the server device storing the precise state of the Replay Window of each known client on a clean shutdown.</t>
        <t>Finally, the approach described in <xref target="ssec-gid-collision"/> to prevent collisions of Group Identifiers from different Group Managers may reveal information about events in the respective OSCORE groups. In particular, a Group Identifier changes when the corresponding group is rekeyed. Thus, Group Managers might use the shared list of Group Identifiers to infer the rate and patterns of group membership changes triggering a group rekeying, e.g., due to newly joined members or evicted (compromised) members. In order to alleviate this privacy concern, it should be hidden from the Group Managers which exact Group Manager has currently assigned which Group Identifiers in its OSCORE groups.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>Note to RFC Editor: Please replace "[This Document]" with the RFC number of this document and delete this paragraph.</t>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-cons-flag-bits">
        <name>OSCORE Flag Bits Registry</name>
        <t>IANA is asked to add the following value entry to the "OSCORE Flag Bits" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <artwork><![CDATA[
+--------------+------------+-----------------------------+-----------+
| Bit Position |    Name    |         Description         | Reference |
+--------------+------------+-----------------------------+-----------+
|       2      | Group Flag | For using a Group OSCORE    | [This     |
|              |            | Security Context, set to 1  | Document] |
|              |            | if the message is protected |           |
|              |            | with the group mode         |           |
+--------------+------------+-----------------------------+-----------+
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-groupcomm-bis" target="https://www.ietf.org/archive/id/draft-ietf-core-groupcomm-bis-07.txt">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-07"/>
        </reference>
        <reference anchor="I-D.ietf-cose-countersign" target="https://www.ietf.org/archive/id/draft-ietf-cose-countersign-09.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <author fullname="Russ Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="31" month="August" year="2022"/>
            <abstract>
              <t>   Concise Binary Object Representation (CBOR) is a data format designed
   for small code size and small message size.  CBOR Object Signing and
   Encryption (COSE) defines a set of security services for CBOR.  This
   document defines a countersignature algorithm along with the needed
   header parameters and CBOR tags for COSE.  This document updates RFC
   9052.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-09"/>
        </reference>
        <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">
              <organization/>
            </author>
            <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="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author fullname="T. Pornin" initials="T." surname="Pornin">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </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">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641" target="https://www.rfc-editor.org/info/rfc7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks.  The state of a resource on a CoAP server can change over time.  This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time.  The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS).  These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </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">
              <organization/>
            </author>
            <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="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613" 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">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need to be able to define basic security services for this data format.  This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.  </t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053" target="https://www.rfc-editor.org/info/rfc9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052). </t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9175" target="https://www.rfc-editor.org/info/rfc9175">
          <front>
            <title>Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing</title>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss">
              <organization/>
            </author>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document specifies enhancements to the Constrained Application Protocol (CoAP) that mitigate security issues in particular use cases. The Echo option enables a CoAP server to verify the freshness of a request or to force a client to demonstrate reachability at its claimed network address. The Request-Tag option allows the CoAP server to match block-wise message fragments belonging to the same request. This document updates RFC 7252 with respect to the following: processing requirements for client Tokens, forbidding non-secure reuse of Tokens to ensure response-to-request binding when CoAP is used with a security protocol, and amplification mitigation (where the use of the Echo option is now recommended).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9175"/>
          <seriesInfo name="DOI" value="10.17487/RFC9175"/>
        </reference>
        <reference anchor="NIST-800-56A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography - NIST Special Publication 800-56A, Revision 3</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-ace-key-groupcomm" target="https://www.ietf.org/archive/id/draft-ietf-ace-key-groupcomm-15.txt">
          <front>
            <title>Key Provisioning for Group Communication using ACE</title>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="23" month="December" year="2021"/>
            <abstract>
              <t>   This document defines how to use the Authentication and Authorization
   for Constrained Environments (ACE) framework to distribute keying
   material and configuration parameters for secure group communication.
   Candidate group members acting as Clients and authorized to join a
   group can do so by interacting with a Key Distribution Center (KDC)
   acting as Resource Server, from which they obtain the keying material
   to communicate with other group members.  While defining general
   message formats as well as the interface and operations available at
   the KDC, this document supports different approaches and protocols
   for secure group communication.  Therefore, details are delegated to
   separate application profiles of this document, as specialized
   instances that target a particular group communication approach and
   define how communications in the group are protected.  Compliance
   requirements for such application profiles are also specified.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-15"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore" target="https://www.ietf.org/archive/id/draft-ietf-ace-key-groupcomm-oscore-14.txt">
          <front>
            <title>Key Management for OSCORE Groups in ACE</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Jiye Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="28" month="April" year="2022"/>
            <abstract>
              <t>   This document defines an application profile of the ACE framework for
   Authentication and Authorization, to request and provision keying
   material in group communication scenarios that are based on CoAP and
   are secured with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  This application profile delegates the
   authentication and authorization of Clients, that join an OSCORE
   group through a Resource Server acting as Group Manager for that
   group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication and proof-of-possession for a key owned by the Client
   and bound to an OAuth 2.0 Access Token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-14"/>
        </reference>
        <reference anchor="I-D.mattsson-cfrg-det-sigs-with-noise" target="https://www.ietf.org/archive/id/draft-mattsson-cfrg-det-sigs-with-noise-04.txt">
          <front>
            <title>Deterministic ECDSA and EdDSA Signatures with Additional Randomness</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Erik Thormarker">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Sini Ruohomaa">
              <organization>Ericsson</organization>
            </author>
            <date day="15" month="February" year="2022"/>
            <abstract>
              <t>   Deterministic elliptic-curve signatures such as deterministic ECDSA
   and EdDSA have gained popularity over randomized ECDSA as their
   security do not depend on a source of high-quality randomness.
   Recent research has however found that implementations of these
   signature algorithms may be vulnerable to certain side-channel and
   fault injection attacks due to their determinism.  One countermeasure
   to such attacks is to re-add randomness to the otherwise
   deterministic calculation of the per-message secret number.  This
   document updates RFC 6979 and RFC 8032 to recommend constructions
   with additional randomness for deployments where side-channel attacks
   and fault injection attacks are a concern.  The updates are invisible
   to the validator of the signature and compatible with existing ECDSA
   and EdDSA validators.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mattsson-cfrg-det-sigs-with-noise-04"/>
        </reference>
        <reference anchor="I-D.ietf-lwig-security-protocol-comparison" target="https://www.ietf.org/archive/id/draft-ietf-lwig-security-protocol-comparison-05.txt">
          <front>
            <title>Comparison of CoAP Security Protocols</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Malisa Vucinic">
              <organization>INRIA</organization>
            </author>
            <date day="2" month="November" year="2020"/>
            <abstract>
              <t>   This document analyzes and compares the sizes of key exchange flights
   and the per-packet message size overheads when using different
   security protocols to secure CoAP.  The analyzed security protocols
   are DTLS 1.2, DTLS 1.3, TLS 1.2, TLS 1.3, EDHOC, OSCORE, and Group
   OSCORE.  The DTLS and TLS record layers are analyzed with and without
   6LoWPAN-GHC compression.  DTLS is analyzed with and without
   Connection ID.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-04"/>
        </reference>
        <reference anchor="I-D.ietf-lwig-curve-representations" target="https://www.ietf.org/archive/id/draft-ietf-lwig-curve-representations-23.txt">
          <front>
            <title>Alternative Elliptic Curve Representations</title>
            <author fullname="Rene Struik">
              <organization>Struik Security Consultancy</organization>
            </author>
            <date day="21" month="January" year="2022"/>
            <abstract>
              <t>   This document specifies how to represent Montgomery curves and
   (twisted) Edwards curves as curves in short-Weierstrass form and
   illustrates how this can be used to carry out elliptic curve
   computations leveraging existing implementations and specifications
   of, e.g., ECDSA and ECDH using NIST prime curves.  We also provide
   extensive background material that may be useful for implementers of
   elliptic curve cryptography.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lwig-curve-representations-23"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert" target="https://www.ietf.org/archive/id/draft-ietf-cose-cbor-encoded-cert-04.txt">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="10" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-04"/>
        </reference>
        <reference anchor="I-D.amsuess-core-cachable-oscore" target="https://www.ietf.org/archive/id/draft-amsuess-core-cachable-oscore-05.txt">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   Group communication with the Constrained Application Protocol (CoAP)
   can be secured end-to-end using Group Object Security for Constrained
   RESTful Environments (Group OSCORE), also across untrusted
   intermediary proxies.  However, this sidesteps the proxies' abilities
   to cache responses from the origin server(s).  This specification
   restores cacheability of protected responses at proxies, by
   introducing consensus requests which any client in a group can send
   to one server or multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-cachable-oscore-05"/>
        </reference>
        <reference anchor="RFC4944" target="https://www.rfc-editor.org/info/rfc4944">
          <front>
            <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro">
              <organization/>
            </author>
            <author fullname="N. Kushalnagar" initials="N." surname="Kushalnagar">
              <organization/>
            </author>
            <author fullname="J. Hui" initials="J." surname="Hui">
              <organization/>
            </author>
            <author fullname="D. Culler" initials="D." surname="Culler">
              <organization/>
            </author>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4944"/>
          <seriesInfo name="DOI" value="10.17487/RFC4944"/>
        </reference>
        <reference anchor="RFC4949" target="https://www.rfc-editor.org/info/rfc4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <author fullname="R. Shirey" initials="R." surname="Shirey">
              <organization/>
            </author>
            <date month="August" year="2007"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="FYI" value="36"/>
          <seriesInfo name="RFC" value="4949"/>
          <seriesInfo name="DOI" value="10.17487/RFC4949"/>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <author fullname="P. Eronen" initials="P." surname="Eronen">
              <organization/>
            </author>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC6282" target="https://www.rfc-editor.org/info/rfc6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui">
              <organization/>
            </author>
            <author fullname="P. Thubert" initials="P." surname="Thubert">
              <organization/>
            </author>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks".  This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs).  The compression format relies on shared context to allow compression of arbitrary prefixes.  How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers.  UDP header compression is specified within this framework.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks.  This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7925" target="https://www.rfc-editor.org/info/rfc7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="T. Fossati" initials="T." surname="Fossati">
              <organization/>
            </author>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery.  The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </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">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby">
              <organization/>
            </author>
            <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="RFC8392" target="https://www.rfc-editor.org/info/rfc8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9200" target="https://www.rfc-editor.org/info/rfc9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices.  Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="Degabriele" target="https://eprint.iacr.org/2011/615">
          <front>
            <title>On the Joint Security of Encryption and Signature in EMV</title>
            <author initials="J. P." surname="Degabriele" fullname="Jean Paul Degabriele">
              <organization/>
            </author>
            <author initials="A." surname="Lehmann" fullname="Anja Lehmann">
              <organization/>
            </author>
            <author initials="K. G." surname="Paterson" fullname="Kenneth G. Paterson">
              <organization/>
            </author>
            <author initials="N. P." surname="Smart" fullname="Nigel P. Smart">
              <organization/>
            </author>
            <author initials="M." surname="Strefler" fullname="Mario Strefler">
              <organization/>
            </author>
            <date year="2011" month="December"/>
          </front>
        </reference>
        <reference anchor="Thormarker" target="https://eprint.iacr.org/2021/509">
          <front>
            <title>On using the same key pair for Ed25519 and an X25519 based KEM</title>
            <author initials="E." surname="Thormarker" fullname="Erik Thormarker">
              <organization/>
            </author>
            <date year="2021" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="sec-requirements">
      <name>Assumptions and Security Objectives</name>
      <t>This section presents a set of assumptions and security objectives for the approach described in this document. The rest of this section refers to three types of groups:</t>
      <ul spacing="normal">
        <li>Application group, i.e., a set of CoAP endpoints that share a common pool of resources.</li>
        <li>Security group, as defined in <xref target="terminology"/> of this document. There can be a one-to-one or a one-to-many relation between security groups and application groups, and vice versa.</li>
        <li>CoAP group, i.e., a set of CoAP endpoints where each endpoint is configured to receive one-to-many CoAP requests, e.g., sent to the group's associated IP multicast address and UDP port as defined in <xref target="I-D.ietf-core-groupcomm-bis"/>. An endpoint may be a member of multiple CoAP groups. There can be a one-to-one or a one-to-many relation between application groups and CoAP groups. Note that a device sending a CoAP request to a CoAP group is not necessarily itself a member of that group: it is a member only if it also has a CoAP server endpoint listening to requests for this CoAP group, sent to the associated IP multicast address and port. In order to provide secure group communication, all members of a CoAP group as well as all further endpoints configured only as clients sending CoAP (multicast) requests to the CoAP group have to be member of a security group. There can be a one-to-one or a one-to-many relation between security groups and CoAP groups, and vice versa.</li>
      </ul>
      <section anchor="ssec-sec-assumptions">
        <name>Assumptions</name>
        <t>The following points are assumed to be already addressed and are out of the scope of this document.</t>
        <ul spacing="normal">
          <li>
            <t>Multicast communication topology: this document considers both 1-to-N (one sender and multiple recipients) and M-to-N (multiple senders and multiple recipients) communication topologies. The 1-to-N communication topology is the simplest group communication scenario that would serve the needs of a typical Low-power and Lossy Network (LLN). Examples of use cases that benefit from secure group communication are provided in <xref target="sec-use-cases"/>.  </t>
            <t>
In a 1-to-N communication model, only a single client transmits data to the CoAP group, in the form of request messages; in an M-to-N communication model (where M and N do not necessarily have the same value), M clients transmit data to the CoAP group. According to <xref target="I-D.ietf-core-groupcomm-bis"/>, any possible proxy entity is supposed to know about the clients. Also, every client expects and is able to handle multiple response messages associated with a same request sent to the CoAP group.</t>
          </li>
          <li>Group size: security solutions for group communication should be able to adequately support different and possibly large security groups. The group size is the current number of members in a security group. In the use cases mentioned in this document, the number of clients (normally the controlling devices) is expected to be much smaller than the number of servers (i.e., the controlled devices). A security solution for group communication that supports 1 to 50 clients would be able to properly cover the group sizes required for most use cases that are relevant for this document. The maximum group size is expected to be in the range of 2 to 100 devices. Security groups larger than that should be divided into smaller independent groups. One should not assume that the set of members of a security group remains fixed. That is, the group membership is subject to changes, possibly on a frequent basis.</li>
          <li>Communication with the Group Manager: an endpoint must use a secure dedicated channel when communicating with the Group Manager, also when not registered as a member of the security group.</li>
          <li>Provisioning and management of Security Contexts: a Security Context must be established among the members of the security group. A secure mechanism must be used to generate, revoke and (re-)distribute keying material, communication policies and security parameters in the security group. The actual provisioning and management of the Security Context is out of the scope of this document.</li>
          <li>Multicast data security ciphersuite: all members of a security group must use the same ciphersuite to provide authenticity, integrity and confidentiality of messages in the group. The ciphersuite is specified as part of the Security Context.</li>
          <li>Backward security: a new device joining the security group should not have access to any old Security Contexts used before its joining. This ensures that a new member of the security group is not able to decrypt confidential data sent before it has joined the security group. The adopted key management scheme should ensure that the Security Context is updated to ensure backward confidentiality. The actual mechanism to update the Security Context and renew the group keying material in the security group upon a new member's joining has to be defined as part of the group key management scheme.</li>
          <li>Forward security: entities that leave the security group should not have access to any future Security Contexts or message exchanged within the security group after their leaving. This ensures that a former member of the security group is not able to decrypt confidential data sent within the security group anymore. Also, it ensures that a former member is not able to send protected messages to the security group anymore. The actual mechanism to update the Security Context and renew the group keying material in the security group upon a member's leaving has to be defined as part of the group key management scheme.</li>
        </ul>
      </section>
      <section anchor="ssec-sec-objectives">
        <name>Security Objectives</name>
        <t>The approach described in this document aims at fulfilling the following security objectives:</t>
        <ul spacing="normal">
          <li>Data replay protection: group request messages or response messages replayed within the security group must be detected.</li>
          <li>Data confidentiality: messages sent within the security group shall be encrypted.</li>
          <li>Group-level data confidentiality: the group mode provides group-level data confidentiality since messages are encrypted at a group level, i.e., in such a way that they can be decrypted by any member of the security group, but not by an external adversary or other external entities.</li>
          <li>Pairwise data confidentiality: the pairwise mode especially provides pairwise data confidentiality, since messages are encrypted using pairwise keying material shared between any two group members, hence they can be decrypted only by the intended single recipient.</li>
          <li>Source message authentication: messages sent within the security group shall be authenticated. That is, it is essential to ensure that a message is originated by a member of the security group in the first place, and in particular by a specific, identifiable member of the security group.</li>
          <li>Message integrity: messages sent within the security group shall be integrity protected. That is, it is essential to ensure that a message has not been tampered with, either by a group member, or by an external adversary or other external entities which are not members of the security group.</li>
          <li>Message ordering: it must be possible to determine the ordering of messages coming from a single sender. In accordance with OSCORE <xref target="RFC8613"/>, this results in providing absolute freshness of responses that are not notifications, as well as relative freshness of group requests and notification responses. It is not required to determine ordering of messages from different senders.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-use-cases">
      <name>List of Use Cases</name>
      <t>Group Communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/> provides the necessary background for multicast-based CoAP communication, with particular reference to low-power and lossy networks (LLNs) and resource constrained environments. The interested reader is encouraged to first read <xref target="I-D.ietf-core-groupcomm-bis"/> to understand the non-security related details. This section discusses a number of use cases that benefit from secure group communication, and refers to the three types of groups from <xref target="sec-requirements"/>. Specific security requirements for these use cases are discussed in <xref target="sec-requirements"/>.</t>
      <ul spacing="normal">
        <li>Lighting control: consider a building equipped with IP-connected lighting devices, switches, and border routers. The lighting devices acting as servers are organized into application groups and CoAP groups, according to their physical location in the building. For instance, lighting devices in a room or corridor can be configured as members of a single application group and corresponding CoAP group. Those lighting devices together with the switches acting as clients in the same room or corridor can be configured as members of the corresponding security group. Switches are then used to control the lighting devices by sending on/off/dimming commands to all lighting devices in the CoAP group, while border routers connected to an IP network backbone (which is also multicast-enabled) can be used to interconnect routers in the building. Consequently, this would also enable logical groups to be formed even if devices with a role in the lighting application may be physically in different subnets (e.g., on wired and wireless networks). Connectivity between lighting devices may be realized, for instance, by means of IPv6 and (border) routers supporting 6LoWPAN <xref target="RFC4944"/><xref target="RFC6282"/>. Group communication enables synchronous operation of a set of connected lights, ensuring that the light preset (e.g., dimming level or color) of a large set of luminaires are changed at the same perceived time. This is especially useful for providing a visual synchronicity of light effects to the user. As a practical guideline, events within a 200 ms interval are perceived as simultaneous by humans, which is necessary to ensure in many setups. Devices may reply back to the switches that issue on/off/dimming commands, in order to report about the execution of the requested operation (e.g., OK, failure, error) and their current operational status. In a typical lighting control scenario, a single switch is the only entity responsible for sending commands to a set of lighting devices. In more advanced lighting control use cases, a M-to-N communication topology would be required, for instance in case multiple sensors (presence or day-light) are responsible to trigger events to a set of lighting devices. Especially in professional lighting scenarios, the roles of client and server are configured by the lighting commissioner, and devices strictly follow those roles.</li>
        <li>Integrated building control: enabling Building Automation and Control Systems (BACSs) to control multiple heating, ventilation and air-conditioning units to predefined presets. Controlled units can be organized into application groups and CoAP groups in order to reflect their physical position in the building, e.g., devices in the same room can be configured as members of a single application group and corresponding CoAP group. As a practical guideline, events within intervals of seconds are typically acceptable. Controlled units are expected to possibly reply back to the BACS issuing control commands, in order to report about the execution of the requested operation (e.g., OK, failure, error) and their current operational status.</li>
        <li>Software and firmware updates: software and firmware updates often comprise quite a large amount of data. This can overload a Low-power and Lossy Network (LLN) that is otherwise typically used to deal with only small amounts of data, on an infrequent base. Rather than sending software and firmware updates as unicast messages to each individual device, multicasting such updated data to a larger set of devices at once displays a number of benefits. For instance, it can significantly reduce the network load and decrease the overall time latency for propagating this data to all devices. Even if the complete whole update process itself is secured, securing the individual messages is important, in case updates consist of relatively large amounts of data. In fact, checking individual received data piecemeal for tampering avoids that devices store large amounts of partially corrupted data and that they detect tampering hereof only after all data has been received. Devices receiving software and firmware updates are expected to possibly reply back, in order to provide a feedback about the execution of the update operation (e.g., OK, failure, error) and their current operational status.</li>
        <li>Parameter and configuration update: by means of multicast communication, it is possible to update the settings of a set of similar devices, both simultaneously and efficiently. Possible parameters are related, for instance, to network load management or network access controls. Devices receiving parameter and configuration updates are expected to possibly reply back, to provide a feedback about the execution of the update operation (e.g., OK, failure, error) and their current operational status.</li>
        <li>Commissioning of Low-power and Lossy Network (LLN) systems: a commissioning device is responsible for querying all devices in the local network or a selected subset of them, in order to discover their presence, and be aware of their capabilities, default configuration, and operating conditions. Queried devices displaying similarities in their capabilities and features, or sharing a common physical location can be configured as members of a single application group and corresponding CoAP group. Queried devices are expected to reply back to the commissioning device, in order to notify their presence, and provide the requested information and their current operational status.</li>
        <li>Emergency multicast: a particular emergency related information (e.g., natural disaster) is generated and multicast by an emergency notifier, and relayed to multiple devices. The latter may reply back to the emergency notifier, in order to provide their feedback and local information related to the ongoing emergency. This kind of setups should additionally rely on a fault-tolerant multicast algorithm, such as Multicast Protocol for Low-Power and Lossy Networks (MPL).</li>
      </ul>
    </section>
    <section anchor="gid-ex">
      <name>Example of Group Identifier Format</name>
      <t>This section provides an example of how the Group Identifier (Gid) can be specifically formatted. That is, the Gid can be composed of two parts, namely a Group Prefix and a Group Epoch.</t>
      <t>For each group, the Group Prefix is constant over time and is uniquely defined in the set of all the groups associated with the same Group Manager. The choice of the Group Prefix for a given group's Security Context is application specific. The size of the Group Prefix directly impact on the maximum number of distinct groups under the same Group Manager.</t>
      <t>The Group Epoch is set to 0 upon the group's initialization, and is incremented by 1 each time new keying material, together with a new Gid, is distributed to the group in order to establish a new Security Context (see <xref target="sec-group-key-management"/>).</t>
      <t>As an example, a 3-byte Gid can be composed of: i) a 1-byte Group Prefix '0xb1' interpreted as a raw byte string; and ii) a 2-byte Group Epoch interpreted as an unsigned integer ranging from 0 to 65535. Then, after having established the Common Context 61532 times in the group, its Gid will assume value '0xb1f05c'.</t>
      <t>Using an immutable Group Prefix for a group assumes that enough time elapses before all possible Group Epoch values are used, i.e., before the Group Manager terminates the group or starts reassigning Gid values to the group (see <xref target="sec-group-key-management"/>). Thus, the expected highest rate for addition/removal of group members and consequent group rekeying should be taken into account for a proper dimensioning of the Group Epoch size.</t>
      <t>As discussed in <xref target="ssec-gid-collision"/>, if endpoints are deployed in multiple groups managed by different non-synchronized Group Managers, it is possible that Group Identifiers of different groups coincide at some point in time. In this case, a recipient has to handle coinciding Group Identifiers, and has to try using different Security Contexts to process an incoming message, until the right one is found and the message is correctly verified. Therefore, it is favorable that Group Identifiers from different Group Managers have a size that result in a small probability of collision. How small this probability should be is up to system designers.</t>
    </section>
    <section anchor="setup">
      <name>Set-up of New Endpoints</name>
      <t>An endpoint joins a group by explicitly interacting with the responsible Group Manager. When becoming members of a group, endpoints are not required to know how many and what endpoints are in the same group.</t>
      <t>Communications between a joining endpoint and the Group Manager rely on the CoAP protocol and must be secured. Specific details on how to secure communications between joining endpoints and a Group Manager are out of the scope of this document.</t>
      <t>The Group Manager must verify that the joining endpoint is authorized to join the group. To this end, the Group Manager can directly authorize the joining endpoint, or expect it to provide authorization evidence previously obtained from a trusted entity. Further details about the authorization of joining endpoints are out of scope.</t>
      <t>In case of successful authorization check, the Group Manager generates a Sender ID assigned to the joining endpoint, before proceeding with the rest of the join process. That is, the Group Manager provides the joining endpoint with the keying material and parameters to initialize the Security Context, including its own authentication credential (see <xref target="sec-context"/>). The actual provisioning of keying material and parameters to the joining endpoint is out of the scope of this document.</t>
      <t>As mentioned in <xref target="group-manager"/>, the Group Manager and the join process can be as specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
    </section>
    <section anchor="sec-document-updates">
      <name>Document Updates</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>
      <section anchor="sec-14-15">
        <name>Version -14 to -15</name>
        <ul spacing="normal">
          <li>Updated references and editorial fixes.</li>
        </ul>
      </section>
      <section anchor="sec-13-14">
        <name>Version -13 to -14</name>
        <ul spacing="normal">
          <li>Replaced "node" with "endpoint" where appropriate.</li>
          <li>Replaced "owning" with "storing" (of keying material).</li>
          <li>Distinction between "authentication credential" and "public key".</li>
          <li>Considerations on storing whole authentication credentials.</li>
          <li>Considerations on Denial of Service.</li>
          <li>Recycling of Group IDs by tracking the "Birth Gid" of each group
member is now optional to support and use for the Group Manager.</li>
          <li>Fine-grained suppression of error responses.</li>
          <li>Changed section title "Mandatory-to-Implement Compliance Requirements" to "Implementation Compliance".</li>
          <li>"Challenge-Response Synchronization" moved to the document body.</li>
          <li>RFC 7641 and draft-ietf-core-echo-request-tag as normative references.</li>
          <li>Clarifications and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-12-13">
        <name>Version -12 to -13</name>
        <ul spacing="normal">
          <li>Fixes in the derivation of the Group Encryption Key.</li>
          <li>Added Mandatory-to-Implement compliance requirements.</li>
          <li>Changed UCCS to CCS.</li>
        </ul>
      </section>
      <section anchor="sec-11-12">
        <name>Version -11 to -12</name>
        <ul spacing="normal">
          <li>No mode of operation is mandatory to support.</li>
          <li>Revised parameters of the Security Context, COSE object and external_aad.</li>
          <li>Revised management of keying material for the Group Manager.</li>
          <li>Informing of former members when rekeying the group.</li>
          <li>Admit encryption-only algorithms in group mode.</li>
          <li>Encrypted countersignature through a keystream.</li>
          <li>Added public key of the Group Manager as key material and protected data.</li>
          <li>Clarifications about message processing, especially notifications.</li>
          <li>Guidance for message processing of external signature checkers.</li>
          <li>Updated derivation of pairwise keys, with more security considerations.</li>
          <li>Termination of ongoing observations as client, upon leaving or before re-joining the group.</li>
          <li>Recycling Group IDs by tracking the "Birth Gid" of each group member.</li>
          <li>Expanded security and privacy considerations about the group mode.</li>
          <li>Removed appendices on skipping signature verification and on COSE capabilities.</li>
          <li>Fixes and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-10-11">
        <name>Version -10 to -11</name>
        <ul spacing="normal">
          <li>Loss of Recipient Contexts due to their overflow.</li>
          <li>Added diagram on keying material components and their relation.</li>
          <li>Distinction between anti-replay and freshness.</li>
          <li>Preservation of Sender IDs over rekeying.</li>
          <li>Clearer cause-effect about reset of SSN.</li>
          <li>The GM provides public keys of group members with associated Sender IDs.</li>
          <li>Removed 'par_countersign_key' from the external_aad.</li>
          <li>One single format for the external_aad, both for encryption and signing.</li>
          <li>Presence of 'kid' in responses to requests protected with the pairwise mode.</li>
          <li>Inclusion of 'kid_context' in notifications following a group rekeying.</li>
          <li>Pairwise mode presented with OSCORE as baseline.</li>
          <li>Revised examples with signature values.</li>
          <li>Decoupled growth of clients' Sender Sequence Numbers and loss of synchronization for server.</li>
          <li>Sender IDs not recycled in the group under the same Gid.</li>
          <li>Processing and description of the Group Flag bit in the OSCORE option.</li>
          <li>Usage of the pairwise mode for multicast requests.</li>
          <li>Clarifications on synchronization using the Echo option.</li>
          <li>General format of context parameters and external_aad elements, supporting future registered COSE algorithms (new Appendix).</li>
          <li>Fixes and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-09-10">
        <name>Version -09 to -10</name>
        <ul spacing="normal">
          <li>Removed 'Counter Signature Key Parameters' from the Common Context.</li>
          <li>New parameters in the Common Context covering the DH secret derivation.</li>
          <li>New countersignature header parameter from draft-ietf-cose-countersign.</li>
          <li>Stronger policies non non-recycling of Sender IDs and Gid.</li>
          <li>The Sender Sequence Number is reset when establishing a new Security Context.</li>
          <li>Added 'request_kid_context' in the aad_array.</li>
          <li>The server can respond with 5.03 if the client's public key is not available.</li>
          <li>The observer client stores an invariant identifier of the group.</li>
          <li>Relaxed storing of original 'kid' for observer clients.</li>
          <li>Both client and server store the 'kid_context' of the original observation request.</li>
          <li>The server uses a fresh PIV if protecting the response with a Security Context different from the one used to protect the request.</li>
          <li>Clarifications on MTI algorithms and curves.</li>
          <li>Removed optimized requests.</li>
          <li>Overall clarifications and editorial revision.</li>
        </ul>
      </section>
      <section anchor="sec-08-09">
        <name>Version -08 to -09</name>
        <ul spacing="normal">
          <li>Pairwise keys are discarded after group rekeying.</li>
          <li>Signature mode renamed to group mode.</li>
          <li>The parameters for countersignatures use the updated COSE registries. Newly defined IANA registries have been removed.</li>
          <li>Pairwise Flag bit renamed as Group Flag bit, set to 1 in group mode and set to 0 in pairwise mode.</li>
          <li>Dedicated section on updating the Security Context.</li>
          <li>By default, sender sequence numbers and replay windows are not reset upon group rekeying.</li>
          <li>An endpoint implementing only a silent server does not support the pairwise mode.</li>
          <li>Separate section on general message reception.</li>
          <li>Pairwise mode moved to the document body.</li>
          <li>Considerations on using the pairwise mode in non-multicast settings.</li>
          <li>Optimized requests are moved as an appendix.</li>
          <li>Normative support for the signature and pairwise mode.</li>
          <li>Revised methods for synchronization with clients' sender sequence number.</li>
          <li>Appendix with example values of parameters for countersignatures.</li>
          <li>Clarifications and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-07-08">
        <name>Version -07 to -08</name>
        <ul spacing="normal">
          <li>Clarified relation between pairwise mode and group communication (Section 1).</li>
          <li>Improved definition of "silent server" (Section 1.1).</li>
          <li>Clarified when a Recipient Context is needed (Section 2).</li>
          <li>Signature checkers as entities supported by the Group Manager (Section 2.3).</li>
          <li>Clarified that the Group Manager is under exclusive control of Gid and Sender ID values in a group, with Sender ID values under each Gid value (Section 2.3).</li>
          <li>Mitigation policies in case of recycled 'kid' values (Section 2.4).</li>
          <li>More generic exhaustion (not necessarily wrap-around) of sender sequence numbers (Sections 2.5 and 10.11).</li>
          <li>Pairwise key considerations, as to group rekeying and Sender Sequence Numbers (Section 3).</li>
          <li>Added reference to static-static Diffie-Hellman shared secret (Section 3).</li>
          <li>Note for implementation about the external_aad for signing (Sectino 4.3.2).</li>
          <li>Retransmission by the application for group requests over multicast as Non-confirmable (Section 7).</li>
          <li>A server MUST use its own Partial IV in a response, if protecting it with a different context than the one used for the request (Section 7.3).</li>
          <li>Security considerations: encryption of pairwise mode as alternative to group-level security (Section 10.1).</li>
          <li>Security considerations: added approach to reduce the chance of global collisions of Gid values from different Group Managers (Section 10.5).</li>
          <li>Security considerations: added implications for block-wise transfers when using the signature mode for requests over unicast (Section 10.7).</li>
          <li>Security considerations: (multiple) supported signature algorithms (Section 10.13).</li>
          <li>Security considerations: added privacy considerations on the approach for reducing global collisions of Gid values (Section 10.15).</li>
          <li>Updates to the methods for synchronizing with clients' sequence number (Appendix E).</li>
          <li>Simplified text on discovery services supporting the pairwise mode (Appendix G.1).</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-06-07">
        <name>Version -06 to -07</name>
        <ul spacing="normal">
          <li>Updated abstract and introduction.</li>
          <li>Clarifications of what pertains a group rekeying.</li>
          <li>Derivation of pairwise keying material.</li>
          <li>Content re-organization for COSE Object and OSCORE header compression.</li>
          <li>Defined the Pairwise Flag bit for the OSCORE option.</li>
          <li>Supporting CoAP Observe for group requests and responses.</li>
          <li>Considerations on message protection across switching to new keying material.</li>
          <li>New optimized mode based on pairwise keying material.</li>
          <li>More considerations on replay protection and Security Contexts upon key renewal.</li>
          <li>Security considerations on Group OSCORE for unicast requests, also as affecting the usage of the Echo option.</li>
          <li>Clarification on different types of groups considered (application/security/CoAP).</li>
          <li>New pairwise mode, using pairwise keying material for both requests and responses.</li>
        </ul>
      </section>
      <section anchor="sec-05-06">
        <name>Version -05 to -06</name>
        <ul spacing="normal">
          <li>Group IDs mandated to be unique under the same Group Manager.</li>
          <li>Clarifications on parameter update upon group rekeying.</li>
          <li>Updated external_aad structures.</li>
          <li>Dynamic derivation of Recipient Contexts made optional and application specific.</li>
          <li>Optional 4.00 response for failed signature verification on the server.</li>
          <li>Removed client handling of duplicated responses to multicast requests.</li>
          <li>Additional considerations on public key retrieval and group rekeying.</li>
          <li>Added Group Manager responsibility on validating public keys.</li>
          <li>Updates IANA registries.</li>
          <li>Reference to RFC 8613.</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>Added references to draft-dijk-core-groupcomm-bis.</li>
          <li>New parameter Counter Signature Key Parameters (Section 2).</li>
          <li>Clarification about Recipient Contexts (Section 2).</li>
          <li>Two different external_aad for encrypting and signing (Section 3.1).</li>
          <li>Updated response verification to handle Observe notifications (Section 6.4).</li>
          <li>Extended Security Considerations (Section 8).</li>
          <li>New "Counter Signature Key Parameters" IANA Registry (Section 9.2).</li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>Added the new "Counter Signature Parameters" in the Common Context (see Section 2).</li>
          <li>Added recommendation on using "deterministic ECDSA" if ECDSA is used as countersignature algorithm (see Section 2).</li>
          <li>Clarified possible asynchronous retrieval of keying material from the Group Manager, in order to process incoming messages (see Section 2).</li>
          <li>Structured Section 3 into subsections.</li>
          <li>Added the new 'par_countersign' to the aad_array of the external_aad (see Section 3.1).</li>
          <li>Clarified non reliability of 'kid' as identity identifier for a group member (see Section 2.1).</li>
          <li>Described possible provisioning of new Sender ID in case of Partial IV wrap-around (see Section 2.2).</li>
          <li>The former signature bit in the Flag Byte of the OSCORE option value is reverted to reserved (see Section 4.1).</li>
          <li>Updated examples of compressed COSE object, now with the sixth less significant bit in the Flag Byte of the OSCORE option value set to 0 (see Section 4.3).</li>
          <li>Relaxed statements on sending error messages (see Section 6).</li>
          <li>Added explicit step on computing the countersignature for outgoing messages (see Sections 6.1 and 6.3).</li>
          <li>Handling of just created Recipient Contexts in case of unsuccessful message verification (see Sections 6.2 and 6.4).</li>
          <li>Handling of replied/repeated responses on the client (see Section 6.4).</li>
          <li>New IANA Registry "Counter Signature Parameters" (see Section 9.1).</li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>Revised structure and phrasing for improved readability and better alignment with draft-ietf-core-object-security.</li>
          <li>Added discussion on wrap-Around of Partial IVs (see Section 2.2).</li>
          <li>Separate sections for the COSE Object (Section 3) and the OSCORE Header Compression (Section 4).</li>
          <li>The countersignature is now appended to the encrypted payload of the OSCORE message, rather than included in the OSCORE Option (see Section 4).</li>
          <li>Extended scope of Section 5, now titled " Message Binding, Sequence Numbers, Freshness and Replay Protection".</li>
          <li>Clarifications about Non-confirmable messages in Section 5.1 "Synchronization of Sender Sequence Numbers".</li>
          <li>Clarifications about error handling in Section 6 "Message Processing".</li>
          <li>Compacted list of responsibilities of the Group Manager in Section 7.</li>
          <li>Revised and extended security considerations in Section 8.</li>
          <li>Added IANA considerations for the OSCORE Flag Bits Registry in Section 9.</li>
          <li>Revised Appendix D, now giving a short high-level description of a new endpoint set-up.</li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>Terminology has been made more aligned with RFC7252 and draft-ietf-core-object-security: i) "client" and "server" replace the old "multicaster" and "listener", respectively; ii) "silent server" replaces the old "pure listener".</li>
          <li>Section 2 has been updated to have the Group Identifier stored in the 'ID Context' parameter defined in draft-ietf-core-object-security.</li>
          <li>Section 3 has been updated with the new format of the Additional Authenticated Data.</li>
          <li>Major rewriting of Section 4 to better highlight the differences with the message processing in draft-ietf-core-object-security.</li>
          <li>Added Sections 7.2 and 7.3 discussing security considerations about uniqueness of (key, nonce) and collision of group identifiers, respectively.</li>
          <li>Minor updates to Appendix A.1 about assumptions on multicast communication topology and group size.</li>
          <li>Updated Appendix C on format of group identifiers, with practical implications of possible collisions of group identifiers.</li>
          <li>Updated Appendix D.2, adding a pointer to draft-palombini-ace-key-groupcomm about retrieval of nodes' public keys through the Group Manager.</li>
          <li>Minor updates to Appendix E.3 about Challenge-Response synchronization of sequence numbers based on the Echo option from draft-ietf-core-echo-request-tag.</li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>Section 1.1 has been updated with the definition of group as "security group".</li>
          <li>
            <t>Section 2 has been updated with:  </t>
            <ul spacing="normal">
              <li>Clarifications on establishment/derivation of Security Contexts.</li>
              <li>A table summarizing the the additional context elements compared to OSCORE.</li>
            </ul>
          </li>
          <li>
            <t>Section 3 has been updated with:  </t>
            <ul spacing="normal">
              <li>Examples of request and response messages.</li>
              <li>Use of CounterSignature0 rather than CounterSignature.</li>
              <li>Additional Authenticated Data including also the signature algorithm, while not including the Group Identifier any longer.</li>
            </ul>
          </li>
          <li>Added Section 6, listing the responsibilities of the Group Manager.</li>
          <li>Added Appendix A (former section), including assumptions and security objectives.</li>
          <li>Appendix B has been updated with more details on the use cases.</li>
          <li>Added Appendix C, providing an example of Group Identifier format.</li>
          <li>Appendix D has been updated to be aligned with draft-palombini-ace-key-groupcomm.</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Christian Amsuess, Stefan Beck, Rolf Blom, Carsten Bormann, Esko Dijk, Martin Gunnarsson, Klaus Hartke, Rikard Hoeglund, Richard Kelsey, Dave Robin, Jim Schaad, Ludwig Seitz, Peter van der Stok and Erik Thormarker for their feedback and comments.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; the H2020 project SIFIS-Home (Grant agreement 952652); the SSF project SEC4Factory under the grant RIT17-0032; and the EIT-Digital High Impact Initiative ACTIVE.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y9+3rcRpYn+D+fAh/9h8iqzBRJibLEWu/XNEWXNZYsrSWX
q3d62h8yEyRRygTYCaQotsvzWPMC+2J7rhEnAgFkUheXe6a8O10UCQTicuLc
z++Mx+OddyfZg52dtmwXxUn251W9vs5evj57+cN5Ns5eF7P1qpDfntXL5boq
Z3lb1lV2Ua/gN6evdvLpdFW8C1/dmdezKl/CgPNVftGOy6K9GM/qVTGuG/qf
S3x4BgOOF3lbNO3Ozs4XWdPm1fznfFFX8GK7Whc7O+X1in5s2qODgycHRzv5
qshPstPr64VMpNm5uTyBmcB8f6pXb8vqkmey8/bmJHtWtcWqKtrxU5zGDrxx
Al+Z7zTr6bJsGni9vb2Gjz07f/PNzs6snsPrJ9kaJvt457o8yeC/L7JZXmXr
psjy1Sq/zfbKiyxfLLLbotnPYA+u8uYquypWMNksa+vZCf4FfmzqVbsqLpoT
GmNeXOTrRdvAE/r32yX/Gf+5k6/bq3p1spPRf2P53ywrK3jixSR7Uy7qWe5+
zXv7Il/N6vhP9QpW8MOz1+fZ6dfulw1MpYC1P2vyi7/Vq3lzmcNeZ0dH7olZ
2d6eZN+VcAb+d/UcvvL6fHz46OHDg+w1rO7tVb1YmgfWVbuC917fFPOicr8v
lnm5OMmWOL9JS/P7l1U5aYr0+v48AUJbwNkXq2iFf/7//tcK5tn5Ky3yfFXO
mgZIMbHQN/WqucqXlS70wWdd6GUNs4Tl8Sz/pZCJTYDA0yv+ZpK9AjpfTsuq
jJb8DQw1K5pZnnjid7bsC53q5FqnusXa/9sECLdt8aFo6f+tvqqyV6ti3TTd
R35na/8bzHWylElut+pX+eptvOLytgh/T8v8sSrfFaumbPOizZ6uy2a6Xl2O
z5vGzEOX/Xp2tS7a/yyqaQ679+VBtOrwJV71w+PDoy+7C/1zsVrm1W1npeX4
toATXr39F+D+4/m6mMyB2VU1PN3CPE+Q8T0bP514Ju+5+7RsTsI/N8WYvojr
u6zwjz98c3Z0ePhEfnx48PiR/PjoyZf62y+Pjo/0x0cPD/XHLx8+lh8fHzzQ
Bx4ffvlQf3x0eOB/fKA/Pnmo4z45cOPCj/rAk8Mvj/HH75+9fjN+fHAwPn50
yrx5kE+fT7KvYZs6XOx8kZdVEf4tevX5JDu7KuIL8bxc3NrfRy+dTrIf6kv4
8e1t9OLpYlFU8R+7b/8lBxm4KN7Fb1/XTVsv4j9H7/8wyZ7m78omevmHcnaV
r+bmb6Ja/FAgRRTV3OsPr/JyNf6pBNn6XXEL9N3m00XZXMFDLdJ1sSya7McG
RfrTspmtirbInteX+apsr5bZ2er2uq0vV/n11S2oKnhW2evrYlbmi+zVeqr6
QSbnN4IJwIzwN8wZYB4wq6ODw8fjg4c80Xx1iVfqqm2vm5P796t3i+v1tJlU
wDkml/W7+/gD/ua+fMd8prmPE5i8fjWR760eTK7nF6DBVBf+ppibkM+K8VtY
tbsrw38VxUkfUs4znl0AZ5iDhgO3qRnfwM6Mqxp2NBhtcVNejhvU5YAnjK9X
NXC7egH3cAnXuoRhojuKetq0KVbvivEStBZYYtPCsG15oavtDg+Dw+Or4npV
AMdpE4/x3Z/Wq3FRISOaj2fFqtVH8mWzLpqGvz7LgYimi8KsGlnDk4cP/Y96
hY8fP9IfHx09dlzi6EhZw5dPjo7dj8f67OMHT9zNP3z4pf4Iaib++LS4zKer
slgUW9x75O0T80rM5AsQR69A/es+0r2Sz4srYMIxIzit/pZHf4pe/W6CatSr
HPlqR7B+V1SgBF8lnohG+Z5W8hoUtzYa4vvysljEf+zqqa9R5110OCBoqmUd
/lG4wssqa68KEP0l3nkh0ay+yM6rGV5wvK+gVWWvQVjkLRojZZWdv/hLeIUP
x4dHySsM5AgDT8p8tpqAaL2Pz95/dHgMD7+5wnuJLHk71u6fj9n7qnwb/9Wv
bk38C9fYwNMZXOrsGtge8b/z+dHx8eETWiDQyF/5X9O8KebZd+cvgjUeHfax
qe4ajw7vHx882dkZj8dZPgVNIZ+BhfXmqmwyMMzWxF/BIgGh1KjZNv1bMTMH
wNZdha/CU/Psh/PXby6Ags+rd+WqrnCEJtuzJt/+KAPG8q5EEyoDLj9ua7jn
86wxZ4r2YgZMvckv4cvFe7jk1SWMPi3amwIE1rJYToE68dE8I9Y3yorJ5WSU
IUvJalCKsmcwgvKkCRh4sJsr+Nd6ka9GtM1z0EhX5RSGza9hRsBJ3Fqv6hu1
bWEr1rjNQE3yqWwW2LdN0bZ0crWsCw6wXq9mBREKTCc2hGWUVfEfwMfaRuY8
vYXxZ4sSf4ahaOrXCxgLuesKnsKzxyGQK8MR4IiwfFwIcD7gpdd1RVtKn+B/
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
UYtirhiooXTRe+A6MaLFTuLxvvWBU+dZx30ox9HPXMZQWjW1Lp0tZkWGXkCX
QXZqjm+UeFxsyzK4N8+e+mmvqF9G2pkQdaQI2gLZaDE7EVbFGKPdmgTrSpcQ
RG6JTi7XO1bi6dwtz6bGUtenthbPmPoN4sgr1rc2t74ObEJVHh3qT+MNK4X3
uL1dt+NN8MLbdRYINkKb77AGWl5etZwzLR23e2YkkDwuaqZAdonAkfd0wAmb
bJnsr6NOS5JUMGrPN7jylOJ0YNfp5V2J2XR2eF4oMXHK1utMRlJ0NHduUddv
gYSUoHgvkkEIRu/x/YN1+Y7/8Xp88x74vsvAmDI1WQC7bM/Oa5T6KKXJL8rq
LcuB1JGQdOrsHycA/Uj+G1bhovvkoAzSfjkgY7pzprGstzE8yIJtEZK6sp69
YSbluxotHUoSRF4nzXZQb+KiXt9KkCpoF2VOxcGzmUTFOV9FO4G4jK/APaX7
zUVpuZRXwmjTusZeZa5HMjGvcCVN71LwpE1/afaLzcOSWSk6xASn+RqzNPBC
AR0UN/lipFmfwphY05M+OoGiImSIMVS/4b70WVilvxJDrC+p+5GRuNWiyZ/M
K+3UjJN0CZsz+RZOwlu5/w9vHWw5PEMN4aYo3giJTDYxqNnE8judkU5z0LOc
qtdDAVvHylpaUWu21o6eXRgsR1dlTMkWqLYxUofLg0VKIOkRZErC+YDWSpcy
PoeeS6IJnro9qPPDefhW7DewM+YyNPtR1WncKGleUGZUvt1O4+zZIWAKLElV
xdfyVPBj4FREx3wuX37R91VhTslBwtJhpK4FppKjGtO3iojEcuEGm8s+27rN
F0JM+KKv9u2pTb5jIekzzU6m2pzo4BxaJYJK4FfYWTRGjYCrkwnixklcMjo1
C2ikjVik5t10bcTaWW84N+qw+4H3BF97g8vmUxo4CdkdWgVOPyKpboLF/Xql
f0xsHTn7xOIVmvf+Nj2yJHF///KNS/jT6Jozo9XPVjZdMsMjfVeXWBavXgve
wKGd5WOzGfqxKYakaDrihPy9O31Xk5/Ue20/vEEkiZQE0CIPfGsZQD8lLMqt
XR0cZ2tt22kecXHr9GSbJphrj1EKNnA+uXpqaGtZGSKqpZ3nmJr4Bmz+j/Mz
ABntYUQQllpWfyOi2feGPQrpdck2tj1Q29c8iaHiGrhisZjsNhavpI5NVyCN
5Xw5fLStJhu14+QBmwm0kJHsHWEPFAkkGgnTSH/ToPrdNzSzBfOgYFPOEUst
6gkp3N92GnfCvdMrhzXWYpYLr1nks7fcAqmqqPwTKdRdjwhN9gMvqPfa9Qsh
HAjVweu2L62RNZ0gREr2hoyNFT9VJAmdyGbW2DA4RT5HLxJmlZCIoZ5qlyL1
EL/AtozKs6dFJcX1r4HUUeHM2xY3jZxqwr8bVHvC6C3N2bhukAct2vqS2vhF
TkU/I9SVOdl/uqjhI0zI1mF3nWNjUclv7rIM8mbjbLB14LtyHveTboyfjpBk
rgjLJm4uP0Uvzd/kNl2gUuA7IMP2PP3+dQY3cqVQFN15XNVNW+VL6T+I2rJ4
DpGdcKUEGj/eWQFv89Vd5ReIB93WFHnpDq2dOrsbB0te4/moEkDuftyLvvJT
Z78Bm7685ApXYGlXGCC5phgFTAq+qdgiqLVLzYQfklR5usAgI1txGKVFZBLy
xAaeZOLsRsTLbbQ7QUP+MFEyCkMEROe4ketGWiknP6k32vQ8D92P6wr02W14
Bwfn2GZUteTlsMI1pJ84XUuTWQzqS7EV1kzoESIm7FFNAnVQCu1IBnifbQqF
B3NSDURJLTdZUWGqoBxwa6G8s3NuXYUxBk0oM+ohgJeuKMHzZnHio4YpNu/M
AqO3sYHgdCRm3sYLn+joI6GAlFMpOePYNDMISnE/rNSsixKp94Szqz9OE6Oy
vX4NK3Z8bWF5/AkYo6v2ZBQopi4mGt1E1jHQTbJhr0ZObSEYHCz8jkKCRGi3
1exqPLtCfaa6LAwgFwNG5Fz6xDHK2VWdveTSKGSl1FGcagWeHH55jCHv8sI7
/pPdbLt6FYcNnbZHlysK+xq1zqkHtrjKvC7MSFfhQoaw1+8K137cLGQy3B+K
lmge1xrdwFdW63XgFge015ZSZ9t1cEvt0E1etk6gVkiazGdXhaRmoRyYAfWO
AtiuiDITOhZp03r103yDsAKSHd6cxknZYFt4XpR39/hcQjsfJTdpUWtys4hn
ZyAAN7Ka8Wyl/lmHSEn+uEgfNyHo3BCQb3tA7CkXaHrddDY6RtnLKSfiAQ9y
rU4VFebRw0O+PCPXx2ZBNvqtq2Fm4kQSSeVjJBw41Vb+rVEfPBdWGqyXkvwA
d/ESGcm6oa9QGJduASpMwXzuNQyQj2xQyz/xBCnpRIMQI3ET2xctwEgPQRBo
GC2pmGv8ylCHdRHAPv2INY26BdXlAC3EQGzOlmBm2OMa6LVYeqiEw4fuI6+/
ffnj86dSiZ7StT6j3T/6LIb/djZx2TYfZxMzBxFZTKjgqf155feHq5rDPbC4
8bphBFrQYIgjUusUXc5gicbTdYe1LLmsjjAOej3nlYB+TW/V3c1YRc4txJCK
XkfOL0Ft55gu5vguCQ3k2icDJJQNyl+yneVNRfVJVu7TWi8rTfoPjv7ZU9/Q
Oew7CA8pEZQIIvQnhlCC4ZzrIB4xkTDQCc3ysLMoZUbjC94taMUNrIk7lA76
DMtmtm6arvrSFP8xrtZLcjqfNqF5e1Ve+0B3TYwntMvBAA+3q+nbH7Ads3kt
CobgUNiwXuOjOHH0VgNKb4viGi1a8rGAFclVdJXmu4yiuaE/osDrjcJHW7Hj
RUtt0Yg/zy1VKY+GQAYKIEeD2umcKVLGb+7imzh8unfvbTm/t6/8Ddkow5ZS
3ZpWAbpYomoWFMwrPHT9iinILk0AUdlGdzVBoQuCcxumt85tlLfydlCrJylO
vDxOj4mad+PnY1hVOGQgIo9qt0/EEY1kxID0iRlHqVo2RyCoKAiKDzbgYxjz
Jy4E2YvbrRJrZim1JNvM4II21NsmRgZta+IQYnTuIV2M99cV+VlS2h0dIflN
RLBjeBKBGyTpjLKd/mSzZZBjzK4KoOkeW5/pcqgQ1mMdJmowW8FULK1vj25Z
1U1IyDMiWtZrfGzYB9HoumEsE+E68hJFlu1Y74Ik3wcsVDndufLQX74I2UNK
CuH1Zc6cYslGMJEGC1dmUeSu7vjP5dxjonPSD1k/HiU9W1fM2TrIiiIhfKQp
nBdH+XRiZlLsuWrE7aOoQ4H0akpttiCSn9wQNwr5pY5d7NXGyZg3eSPfKhwk
UE8qT6ceCM7iW94RD7KtBq+bNmtArqPbQvXslPj2SQDdwGEYfbfA4x8TQSFz
fk5qD7r/g49gPY8Ymj1qclmlMlVhFw9GxgXRhHP8LmzfRrmOLgfGwcnJ6vC9
VELSb6cC4r0Z1l8k+UYse0xHhYd87o34Q4omqgrn9FV2m+QxzXQCH58ygyCL
49bGeyNqa8LtbIIwdaPRxY9JjHC9uQMQugQv4iCE58J6or23RRAWvaoThWGS
SlwUgRNegLE9PxdWoRtRcrbiEIZb96inzP2UY89MfkGaZ5vI2R303qFZZt0P
uTq8CpHMmnxVLu785ZKyo7US8YoqB122TS/JxHrtCAQJpesQ/yd+vQDbfX6L
AFMVsm3KZtIWAxjaF0dG3rDAPBX08lB7VaVXuhN8oPGLSIBwAa9YDrhOBxsG
E6jLoFJTYnhN2nFNVeIhyys7/oOByCVlAWFyjwFkwUl6r7ccndGfFYv4Dwj3
riYpl39q1wL1V5lRNw3khAJefsGWT5NT5KPVCvdnKJrGOgx+KlZvfbJfQjwl
W6w0d6mvKEI1R0OCLABMmrXz1Gl4275mKkkuPAeU7LbIQSODd/q4+TzFid0b
Ettm5duL7WAY44Jt7uKD1UG+UQ+nEktNfknWrm+4W0Qrzdn4T+gakZiL1piW
eOUrTqUg8zQn0OcRx65YQYGJ0/y+N/5OXavO0iji8iXDF8nqgKNYjs0Um5Sn
SfJDKcOmuPtd6hA03YhPqa7QgGIR9w6ZIH8TuOkkNDgObLs8OAuOemaQuAT6
BCOMJAX7A6zzDyXpSLqajIb1BRRQsEQuVcDJy4U0jcEUktIBAeP+o1ZvjRA2
S6IyITNJUMEVzT6eT4PRWFeQ5HIROjGjThlShAvHpgrxcXGa6y47YnG2Pyd8
O5Owd0EUvCf7xyBzglKnHijak8ong1oXTiPWiCSaYF44yUAG/CInbQDyB+OE
ram9ThQbKFaR8zFFe5ZS0JfQNrCKJ8T4I1cZaXxaaebdVWGaSqcozUl2r64E
TrGumAne7rrFVEOQB+JudqMA5DWfalo4LWivEfxT+vUQvDg8KXaRdkDGLQ1C
nBSQJ05eXxgcZ8Hi64aAJZZDRx2oZpwQXRq4Bdh38n/SaXfTIdBlBeRkorqd
LB3Qy9GhTd4s+Wy5AAHiURs6KRaoU5CLw3lMI6BHVN48tUZuGy5JKTu1pK63
QT4riP5oUCSacd2Akl9Qi1WSPzgrMncc74t2/PTsHBQ/OGhKAaIaydBLRGcL
v6pXikuOMLSmOVRRvStXNRmPEoN7cnRw4Iq8okMjQ7NhzyPFtqiy4s8ScfZi
DalbPNLI4WmFSIhSTBMnsmHakalPiPUl70fJW9smhWP76RlYp4nFHdEg4cEE
LhpeEoJlcdFOk3waVMOmP0IB07whi2tVEpIMsOW6ZZBfDFzSoFqWFtswjj02
xE7jZZOJpyve0k6SNDgpHdP9Tc+e+0OJLdRgvRHpEX/94yFn8MBhKU5bx0Fr
MJcdPnpwQmj+FvOSt9dHVnVG2KVpiMKkL2LcyBD0YBA6zX7gCsOnCfCslXLU
eqH5oqlzHfygjWM47I8gTOG+7Vt8xMzm1Lb8ybMrmHi+ml2RsNMUh5G6KYXO
LL2aQ+k6aEF+Cfg4V84q45SKYu99efY0siW4vgyfVRuT/unvFHnbbMRvD7Ts
fWRAje/HxDqxb4GA1UGO61oHpjLAsHFMymfANR+MN4FJipvaJTZ9qNLizOS5
NUNyz/U70a1wzTVCK1yKAxwSPIm00pdQLzicASQXNhoxVYb6Ct1QjsXr1O8p
1HCKMmdgYxco07jyYTgKQmxNglQ9cMcRzZpC17jL3Exy7ngryAOsyNZKtPjN
Hn3DhP0pwf+mShUmxvmUw+dGXe964x9yIaMhbclZT7PIKBpEfvjOU1RZSN0f
GSQ4VKHDzEc2viQC3pOOMEjaaV0kKq4eaKYB28hkHOxhxETEw2+ZgFO86AHJ
CAoc+WwwWhdk17LO3nScoeK7LeaDnVV6oiy27ZmnIWUPflWJO7tR+oVBn9Mq
sB5x3S7xLDaakENT6Bz0Ju6X6Y68S7mpSLNLlOZMKNzLIPsJryk36ZGAeEez
xLC7wxyzASYft5eG3ZJ5hJfBl51n58rGFOo+xa9SzBpjpJy9ZXpiOKaYc4Y7
5eYpKjzFNtmnSMsmXZ1UA9TJYAVo5CnquxtpXpPaT8qvbn/eeBc52gfBZRsW
Fl0C4TvgGLhhdX0syqYINsDv4dyF4SZj5gl8kiBmHrRtd46asRtkLBvnCuDc
x7f6aiAUu8fhi+aCTqfer5uSnU636/E1K/CxXjy4q85/AkJjvxsQda8MH1/X
O765r1BP/0bXt667JYlQD3YIEjW5xEIrtmhNk6bt+xqZ5kA+06U7CfINN6pU
exet6Vl051WEPZNwZwYbN8HfqXfTP3zhf9PM1eKubZ06pMhkYFrSo1AYgGFl
E6uoyEOkvedxwNLYIiqIFGAl0U2yrz8DgjZQZolv92gmF0K2JDpC+mSzCHEW
f70JB8aZh1J1grvNrZquIjQO8m90j8ol2opjAQMDApEWcWVSGw0rQQ2B3ZKF
lthTYSNojlc1phdV+JSW1Az5OoyrwgJVsNR74cxiPCM++xgO+osgHTIypkOG
u1VcMe+3MWm/HFqkJC1h+kiQ0CE+1cjiFc5JL9EDbC6q1Re6Xp0S3smcGHo3
DPeghCdqgB3VOc/NpKM8FPlSAH/bXqXDlam9aa6oVCpAZ3VuoQQemYCkxOFJ
sSzF1TbzCKyZP1VpqeObgTknRtL9AkRKPlFhtLP6WuZiXKDo1uZ+aINfLKNy
li1cgLKv6lzkrZsXi5J8WeTF1AmryJetXDdctCeJhO0qrxrUAUMNRrLUMAVK
kMKi5EnJ/8n9h7SeUfeaG9SFr8kctPKt4cx5bLhcvse6SA9W08kzJdwrailG
0ICadepSblAR8WBnwBrKJulPkFpxQulx37nhCBnJDEJZ8+4DTBsrIlsghE0I
H0ClHI1aDj9ytK9eaZoNoqi0hcFN5nfSgVPViAUWwPYbZe8zDFIStne94v0h
893Bq5hHKPjDJVqSuearXNwsqIAGLeyo6JImq035+vHRFFt37dGUG4ddp6gm
XA3hylIrgTQzU8XFDKykl4PS1sYbq63f/WKwVlZD1XBUNAGX2ysmXKBTcigi
pBeD4sHFSC6DQ07SWIu9E+4MymyVJKWlReQ+6nbw6yCg/fk84rejYP8J1DCf
vQ1PQAos4jT0PrYcpcV42H1vDSBWKN62w1QujpaUSR+Pfnd5+B3YyEMY8qh3
SIYmyJXRcFKTcdA6P5PtLWD+zvXF8/UqDjdQcugNBlgIEDJwvVo/GDc55Nhk
S2b+oqyADAhYrScdaGLm4rNd3JySxozTikkGeKBJd4Op8zO5Ibluz95XfjS8
taTh5RVSwoPU9tLATRBvuzVB63BHE7LR8nH8c6CF+F+ro3DPl3Ltd94B7WMS
fa2HenDRDFprX+ijDv/4ET8urr7AshWmbcIZI+x7WAQ9EbdXKiLTNipG1ZW7
YdyW4o7GHdskN6MRL5oE4TvLJMfp5tSsNxHRKYNaoprN8bE7tOiNp+FRYTXG
GhD4vSHzvt8n0J2vpOHb0GIiV6RrhN1QE90+7yXMHyMt8aJcawfmI/G11XyV
xp1rrEDaFOOu9zSZUYb2VvCRJSVdoDJGEiPiCypAbFa+ammNFMhw7kdi/oJo
T4kwmDLRJUtXW5C+kH8+//7ffn75/OkkO3cFp4nvoHWGpZ6S+I5ZIKviGqZ4
azyh8BvCdMFYbF4uJHYWV934jB+GwSjeoxAukTcjfobTdkJu59KdhvzBkijZ
mf0lRabeVvXNopgzyrMkU+KhoG4bHYpPfBRqxSFxfzv2RSs+D5bXVWLryC+I
frrcRhQHRXPwvtrhvaWRdluS5z9K5DcP+9WJKr4//ykxHZcOqnmVtDXayzdN
f7dF65WEYLS8eZvAM3Gn3SMXWCQS2A83HE7UULkp9bmCOwdluakubIDnfUp2
6cN/ioyxWGzNGVkyvmwlTXPDyn5fcmLUWflvJhceJsgxEAcb7tSHSYYFxaBb
wj/o4bOd8ggyCzvQed0TJgwGskkuIv6CVbaDmoTTPogTZUe0ugceFCfJ2WSi
TUCKicG7z0Vocxx5R7+jK267yhNma2AIGHBRCb0Q197AUYZjFHrtw6PXnBC6
Z7wX7FD/fy2TGhjZaX5b8yK+rM3G2+pgH9BZU+KMPv3t5IvZ3P1mkknksv8U
r0SaJWw4DFwLbPjXFiZrOHuCppkMaXczcGKBohkxRdUQSAm7GjKXnG+wUQys
seQ8p2WeW7eH1R6mvahDRJOZWua2hyKlxk0K3HLujBzZpegmZM+blCwMTIPa
eVQXFB8hfJamWLUd6iRPX2LGknzhjaUubN2GOCo+ZwKpHqgfzvR2RholfNem
ksEfUfNKtldP55lyknGQpHxLhTycQ+ayuRrbgRHEiPzSx2Q9lqiZW+z61/Yh
FKUo51jvwQ//urPz2hWS+hQyxTw2WPgmk4z0U3LBtratBBs3nKDXEHjfouvx
lQwNEJeLwjdsMMtFlutLXqMyqyqjFBAK//zE8cMYdiveZiT/LH8HlgD5sM2X
JKvMw8QRZDJ/PF0oa/g+/eIe8reLAvdHPGWEAbTSxOVGausZixAPEomBOmuU
CibHkEWCHiQeA3UXsHeBXqROM3q6fg3pKKFaQ7/8goddvOcSxCDXnYZnD/gs
DAK4k8puy2IhmCvSR8B+HPUBni5f0zBBsptImUxMg82J9QXUEoznQZIcC68y
hEM4DqeXx2yPSWOtlcjvQnkDgTjMPJEue6H+zEUS4zjQ5xWTn6jC/IPuW3oD
Ewsn/MuSM4q4PeVaMBQ7dJuBcAvLosUNyHlLIMsYwZky8hkj9q576VSWVAaQ
ZBX5+hkL3pVUORP+XW7k4tOIFCSbJAGxWlxgxFS7UY0IjHFaABHy5DmflSMA
JpU1PPoon3XbVNZ0xqb67GT55ADlD35drrAOBH6hSbdOL7hQdH/R2L8J76Tm
GfbsotcRRKcIjQn/XUaXNEAgHNiyKnimCNXtVQSChX2G0FgWzVmQBMxOKKox
XzH4u1kw3A8CX+dPIdfwyroDsdTzihqpbg5YJC+6i2EY+gp9Jg71lc0W7mx7
5Nvd0NidJHue6GlvzIKRPEofbBHyCZ3MpC/+x9qnrgbUYbTcHtXtmXuICG0X
OL5P6NzF0S8YBywm2Iod+1mKJ5sYGx2/HTOKukWAu6m7rZwWHyhXVvtzVnsc
Hisd28Duci4o0hObR+nhbi1tI9ryGn4NZs+HlhE7c5q6KslVEo8uSMgkDyap
GTA/1C8Zowpmg7MlDyFPVUfynbMuSDJ6tAVbwEnXDW+VwEO8F8SWcOdZ4TCQ
fgkIBAoJ6pbTvXEkVK5cfSuj1yxyQoHbD6ayXbWpRTUNjZ7prRQVraUvH0de
O3WzrHi+K+Jd6VbgCg91VIAvmOz1zk5TOM+bCB4sm7wEHn1u5KJS1qHDd+JH
4pC5A7LzDCN28W7mxWJBM1UyZx6nidPcZqFhZ8YlvB+KD7txkqyb9t9Q9MPG
N5DS5JlovItElHan7G2aYr/Gs3Aef9Fl9dwFTSuE5rYNhMgSndWXleJt+iCt
w9Z37E5sVTyCpJ1lomfewGoiA0vrqsHGpDCfoCwi8ZRNslpH5at7xRfJRm8Q
URNd9m6YOaIE1BAqKaGXjxib4KeL4c55QKYBjuCRhf6zzUBJcP76OYGdxlK3
nrwHhQ6MJkzqLBsXOUebvBq95+tF5AmaGRVjw3EU5tl9YXXUjAJf6JjY2LFr
JX1rqSkS7A8B5DVAOQz+rK0UTaRfnYGB+i7kJjhtKoltAomqbErV0nfpTqS9
GWEqhJvxTBO+r7fIKlS01XEXolBcOMCSomOuSE2lTzf05xQ2lvM3S5ryqjpl
/Rc4TJR3ubPDbdhYseLfjedlfrnKlyBq8dywVRnPzi+2jEaNFQLMH4J9IE+S
quEiAYiZLXw5rGljQFeEO7iHzBNW9z/9fztnbvTMYIZhSwFUHkl6EOuMY4E7
fxwP/PfHzPz3h+xM+gPCKHBRnYm88/ds4L/oj1QSro0GDWU9ewrDyJ0O/+O/
//3/Go//b/zsITwnbAB+Bb+r5X+R9qLP/SE7pZmWoSlfzOMp/3s4Zf3WEf2T
77y9MmtppxsP8/eBf4Umm1/z0AA6jwfxc+/63/oDV/Alt3hkxrG5tW6cyWRC
/4/+Y6+BThn3kXMnzSAub2a/b9XTwmXiCWQzdntAVetOZEMN2FCPgDnBi2gb
pIO72d/hzxFSNOZx9ewV50+4zXIbBffwTvMTwEXcJIW5FFIb3eGKZewIKS8Y
tUX8cKxQ7WR3+M8eujCEgF38cpJ90cfjsrZsF8VXu8o3Fcmjn6FNdjPQXjGZ
ckxwIF/tIkZJsdr9lXLdf9gKzeCLMN3dw1h07UAW8gEwg4T4lOBNcBBDZieU
fHCGgNVse8w5Pwr/ITWi9FUfczDtPGPsOrGX+XaE7X5U1qLNwdoClmxXBbfS
wrpwqxhJaA19mcEkuuDi/DSJ6VXgj4cROffgKSZvU7RQUWUUagHLH3RbVItI
fZXTDr5Vp5Y+7oAdGOSEJK7JAI0CMhx5Po9T7c+odMXCePW2mrSFtlygS1/2
dRxhAMi4zu1sk0khgdcpBAWCeR9PuMemDtcD2iBVXeII6eziiMUs9Yr0sVxn
FCaC5o8m7jMxaRozQMgm8T3jf2dK1WH8HraCHB6eXe/WcYe8pGNHV8doh+Te
p6aYYT/M+Ba5+4AKqSZunqP/0GuNpQM4kKVavOhgyX/qHSCU8cFVc6bMJwQ4
jXxMQ1Mhtk6WWGpbbbQ/nC1XO2ORh6ly4LgU/kSqMNDQl4YBRN2jLDuwMe6Y
ijCTGMuoFncmGPj+4wkweUPxHXcoo+3YbzIldUC8JdXuXf1WydhdJa5/M71J
fT1/St/e0/3CKOuTSfbKXgebHtsBNeHwuF170OSH8avKa9McyR2Nu0Ok4RNo
9sK0SNoyMTcTB7bYSHYmmEZ3gHmTjXQWiiu/FeK3J/fPheEoYoAEi/+cS6rF
hiSENOoZZ1CMhAEFmQgokotVR0QcHiICiRZic29dsHnKljoJ2xogg5m1uf7W
wAX0ULhniZsQKxzYRoRBYBiJZYXsbc9n6AB1SNrDaTNajVO1K+6SQeyhEcQf
Ffc6lvQ+xroU7kqH2why/y/YqUWFljgiTXjX3JHh2XQr0CVpV5DfUwDeeVDT
SRZsEXzSErb1jJqDSdZH3R2OyiNztFSlf7GuZqw+kcbpUdPOXr4+z15yDZcq
nLO6KcY1/Q7Uza+xpkNy63/55bXkXRxTV7Fvzh4/OnyA6Fe2Q4NUzjUK9IY2
O32HK0APjo9ggvB7xBNWMiT4QSrml/2BnQSZD9Qj2SQT3SYqfsUnfPUwjP2z
1OIeZOzSRlrR7hen/pjhaVO0Sw+c+jv6FL+/h/W5+/4wQQ1i54tv4e3OYxQp
18t6bvrjYMERx+upaMWzM0qCUc0pKN/1SSW8Wi6OPYtwA1InNV5Xzpc+vsCM
gl+lnMG0Bc1NOyAzF17GPTPCvYyGEL+WC8gtHEp9tHBH5IRASQcST/rghLiQ
80yhtu8addCRoCMkXqmwGSIfXugow7aKMJPz789+fv3sz9+fvvkRNkp1D1sH
c5fR3EgjrX1bm+bgkvxETc5MXxJ3H5rswUTSKCcPKGtJ7ygdkZkIXhbX4wE3
xKD6sBMvThxPFJPrJUmoz2zvJlqRmfP42d8RTD3INRgwU0RQ/D8CCLsr77lZ
HOxq8IsBln7O83m3+1tEnFigD8+huzCqxx25iwCyFC6YqkfROeEXrvPbRZ3P
bSlRP+WkySQ83LyR/Qqeyb7yxJD99eUP2Xfn//r6zQ/npy/kaUb6c7/lWmFu
f4GzBDpBhALcAjc9AxKCdVzYKmrpeoZ/p78BpVWRfsX832IUFhj+Klrmaz3m
EbyxfNGtYuSKrOVz9+cF/a9QRvcmMfQ2OQDvx7l/2Yu+5D8RcH4Gr789ff6c
ou1+D3k1zch2Qymyb797+o25Ay7AHVnTFBhVOYXXkhIEnKza1/ZpIs0bbpKx
vK6DD43P32PfGlYb5BfXZBVQ8gENePz40RM6RU8LX9Gze02OBTzPvnvBUJ6j
7Pk+r7sDvQUfp3VR7ahbOWUw4SCSF5Er48Tpmf5/e6+e/WXf9zoQOfpigsjF
nHJHhYUvOC1eO7GNkkNLt0iEuCDmDk9f2W95aAHHFClQzLDbYUBPv/QnKoOW
EaO4rkc4Y+u5M75BbjYpxZ1vMEbxdy8UeIXlZwQcMkgsdwAUwdPUDzVkHylK
J/nCzr4GfpGvVvmtkpe4l/bIcBHYWj1lR5YHMPxJEMDIzp4+fb5DX/sq++/A
d8D8PsmmcGdG9I+flVf7X7a31wX+s64X+M/nJ9ka7v3O/wgcnTvKv1ROcjQg
tNfrqEUkx83c8byijnDytpuIjJJGELqJFJEXKqksnUomk1O9ffDetVnn4jqO
k/pQE/om4i9Yasfbna+8t4I8loIFrndHCtf2nNUg1BfdrX1LsnCPPPXIA6aj
qG4SHYxsDxGI4E/wtdsFWVzsZnsH7y+O94PLKt+QzKnEmxdgqcirD/e70O3P
HaFiDF7zkzpyUmRWSs34gFsza8agOjNiTkXQ8tr27gxUEaMdw3A/Cl5FrCru
7DiyYMdUiRW3DuuA+mStigtJeM+70onivwYFx2hzHuT4lEKXSEiKjuzaQDjR
hS8YQpM3v8Y+PfVN4ZqYphVeY4pgimN12SgBahHJdIr5o3lKf4kUqg/SM1nO
UZ4NqK3seQN1c8lg5eSqCHpRrerpolgyVKfqVWoFo1inu4g4bhZr38EsIJ5+
Rf2ia7XeWsk6VBvOZsHbRhj1Ss6o5BJZ35KMPB0D2xRKjVMSo3HvA5I7yqYc
lIzo8T6WQD40j78vERQe5muFFZ0GN0gswKbwRy0oEIw1gdEYhltVdyomRRUK
mXdKo37Nb8wkWczNuK7gci7KtzpF4s4ccTEWom2Y0aNvfcGmPvcJwy/eo7Ac
b8g9exApu/Kta/YVgPvwaKbnRNVrRHoAb99+zyFSGTNwQAAhIs6ybF0wQoZx
uFiqQ6Bvum8jvHd6XdG2lpXVC0fpZSHQFoHaU9SWEzN0NcJ+XLMjbSczrPp2
tjFxFBu3U3LohrbTS2IL/hCXrGhKD8lqi3Wx/X4l55/eN54202RgQKYoT41G
AUexj8tEDT5m6OQRTw46cqiRpjJwqwnI/QmWlGsrXsd6rWNLYZTwdgbT8Yy+
9F6+yNcT+nki4PdiriwXPqOWF2qKImmd2425vnOjhfUm4UdDropTCNlqh5WG
37qLqBG8y073c7tHLvrlgOsSGsco+kMKYW8kRtAmyLx2+K7JDbM+htAgGdlQ
G0ef9Ql/wR0j8jz63gDwsfd2BB7eoVcmCfJ3NnNgcVCvaqa9nKwC4ztRiqZa
i5HNB7B2ibGUwSRJWSTBNL7ir0xmU6TmfP4zzWNnx/0otkvGbumftWkAWyZo
pFgkxpPsv8O/fs5BBYOfke3fz1oc/35WrRdk00T/4eOOfH+GC/Qh793hHb3C
P4Nd8nPuaC4xwP+gEYSQfn4bGG/u19flO/tr7YmcePJt0uAT2vyZXzS/Zzr8
GWnI/PZyaX4j84ysQ02DEc6rmS/20AdSW86UuZJGaZnWw060oPD0QuG50J2s
DHtmytHueVK5JwSP+Y0wtWoeeI18GZQXR/eUsu6lJGXCtMLNYcvq0X4IvukK
4bQNUcDYMQf2Ml/NKWIAWh/FzAJdRiqxmpTzn9r7TEJ0B8wS9lCPVPGBNYpF
yN8iUNEPMNxwd5zp5vyYfWcYADQxFnubPqRU9MB56e91rvA9NVt8Ze8GwNWP
MVI1DTvc4E9JHTbKcifSMJL8I+hiE1htoyJEu8Ogt8G7//sC97t/wQ/sikYq
onSXZKkbvNnNfigusYTqVsq/YMpEpz62liSDQRL457nf8dz/gYdtHDLJE0/L
08Txb1L2fue08LuQEBv38DcnD457GMr4g8MTLBY8u3sJDeheGLT8GBU/xPoO
fR4KDKkFtlq/ZssMxdqTQygqdPg0FtSjBmPxAqOQ3GmyCjpWcuNJoLTbmoo3
XJlDiAKwx8Y7WmDOot+3Knwnp2mbxlOukLFsw/JKyeO1lZUkOOpLMC+uuEsW
F1JqTx3yx1KxmVmcM6JWuVB4LgkXy/WiLfEi1ZV+MyoFpMe80R4npKEHsrnK
pW6PrHFLJ+LjMlr2PcUpSJJYoEXfGyl1qXEU0JdYgy9ZjhrXRo9VyBdRCpKm
ZYUdNPg2dQrAUCVu23z2Nk4xYOaFJS9ymmX1N9bKgALJsehDpFbqoEYsFYeI
usf4aDpk75iabg5DqJZHzni8tcT/cNNyNjiI6oMqUp8X2Gc6q7uyTcCVX2DC
jwWn9+4LclgkEwR85o9c8b3ePdFQSsBTGaldP5gv0H/R9vtIegff1w5moXHj
unZMMcF2dYl8nkvOaqU0jnHg34AjOSYQ7F6aco2d16Xbzc6ITYJPpIFpD6yS
mcm62fI7mSRqu5QuuQirQi6QIruip8whyLiMw3Rzy6AZy3pKLI4T/Wzvh2C7
xADubtX2vhiBIQzT83w7NDe7jWJ5g0KxUcLf9ZS2XuI/4LDuxgmZP80WNR4f
59DoXfkWTFiqYVjiXMnV9MsXM/8v8STL01f8tPl7MuSWPQoMXy/znQI07LeQ
rKVIgigbZE+eIYztmBzJ75jhR69zQw7m0OhirmyDl0iu9QQwU/lyJnuqcz4b
UxJ/lW2xPWk1YQm/pIWEzFnK9zDXRZEDW6RCDlRIsJFAidPgFrW7TNjfLPLL
3ZHSHFfE0o0Id11EUXT95Y8XMAaOrUVP+u9EQ9gS7hEaEs0YHxrjS25petdw
SvFdPVRDIaKC0saMkpJrCDJt01cP7vbV0OKwN1f+oKkOpIHsT5Jf134kbgqo
P1BeIzKTcCKNhl2LKPvRhGY4ZHTOzQEpa0pvuSQASxJzE+HDUVk5Kl8K79DP
KgozeBBhTQR0nF1J+Xn8IpM+PQTbQolPVc9mdl/T53xHcjcdbsmRuWyIpNIj
CbV7zPmXRS7S6Kw+feUOHBWdQJcP4FkweF/tm9QxieHINKS/W5D/CxKLv2Bu
uvuaKFv0ULeqDZV4MhzwGc6KqwokAqQPsbota14WaBWVzdIGM9OsEXevXrc4
ZNkEAymtdOMidK2tqPiVYSZLbT+OU7rhYpdmZIqm/P67ti0SOISnaW+I8zUn
EQ/ikKAmtA4eOOnu1p3RjQZKaiNO4xEn3RD8nYabZCByvrVwReGxx8FjVwSl
x8DjXBWDaTVeljjk0cOH5j3BGUmbHwNixegqm6UIi1ztS8OK9KNgFpxe5HgD
DCLaDl45m0fbvafIPH/Q3AGUjGbNX2UH7/MiPzg8Pn706MsnRw/nFxeP86OH
xcPZ9MHx9MmIqpvxqaPjkc1r/Co75gos74ugxx4+fHT4aBYBFWRYdf21N3eU
3veeyEHun2hS93+X/726d08DVL9kD0+u7h0dg077CH44wB8OD+An/hb+6xD+
NS+eFFTHfnF4L/t15MYZWt49eSrKH+zMXSrG7dQfH8dTJ8GAvzvJDqYHB4eH
h/B/aFMePMn2DulP+/qwWNfkVjrhRw6Os4MH2cOH2aPD7NEsOzrO9r6Ub+hb
r/gynWw4tczshby554j6j0GqXH9y+X64D0xFkuGSIqNHsOgHxwfHT+ZPiguc
1+w4P/jy8ODx0YOpJ6PjI8l1NcS0LbU8frw1tRwfKVnM8kPeiumDgCyGpvsx
ZHGwiSzg/zs44Cv1eCNZwCOwY3tH/XQwtI7MLP4j6CDYhJgNOZfrICdyov93
zIyOnnwCZvQbcJ6jww0kduA5z+FmznP4STmPo6/9T8c9PpxjHG7FMT4/V3Cb
0ntk9B/tBPzPpiPL9g4+kCH0Hc8X2QvRaL8uCSthBOosAfoWgoIACuE3WC1B
wBZcGAw62y2WWIudxBqeeEeX5OaQwsdr7I5a9NWVZV+Gzgcyq7iusK3DSsG4
5iswYVw5qCrn07JSmOMgm1FT9LwPiWMa+bSpF9h38cItNHzVwpfb4EEzEiyn
d513JYdR6jt8uMGNOpJCWtpMb3Tat2nZmmIQl2Ne1aB4k+XZramUNtuEeCKR
Hc1B7IFTlHLKwThQrmUD3ifogQa6kIkUNfnert30XaOXfBSEKyC0PYPWRVtA
aH5C/ECuesGBtmiVa+p7WODA+c5ca+7BBhJ7Hxxvp91BrlMNgq+ceuiKI2Rn
xdwNSFVw7ankQjqMpuNmQMGE8dAySiEBBRkw3BgnTRx21HiJG1L6MJtNlWW7
3Q0T42Fyp5kmRnnDbh+RNdnx1XCwBrsprTnFvDGt3oWsxNuLFs/sChsBpaqh
eEZ7zX7QoKAvv9tWnTuvboTG6ZDwuG24Qk7P16vcBm/MKcCCCVcLEYlD8w/r
nVneRDAe4hmPEBoi8FnXZCgFMKpFO5gx1rS5M7XdtxF0PTwwvu2EZENHLaz5
J6Ce+sZd+ea2ml2NgTDG1RpLKuVcYz6P9T4VF4Vo8VtjlS3fNUADzM7FhShY
SPttXhUMGE6IXNRFFOE1LtDLiQjfI77QrCEqiKUcfvFeEcwJ0cSOz5FY8sHz
1BpjlwcXrFM0jF3HyiqdD+3WycncLpqVz2bFdavdonkhTVi/jMiGtO3MgcKN
N4A26Q4jcqH4sgQBgAVGLZdrhFQqfIduaZhswKc6YwowL6HZ5sgs3iFYRDix
EYONNdociMkf6c3WuWjfpoo3vPOlSfYtko1mBdMOCgiOhku0UdqFKSBwWSx6
1zt92Tmi1V2ZVIzhQno7Nsg86L69Y5iMInEy9UX/d0YOzJaO3xT8GrxpM2tZ
hxUE6dNDKRAkE7qCmTDU5uEsPQcebI0a9PwMG7pzooPsCrAq7g6M8ecPJdgv
vKro9UFlMU75+bXTZjKiAHfddSkcz0BcphRFEe9a1Yx86tG9aIh7TZZmZepF
5fBGmjCJ2+rMMCCCK5DgCBU4aQGMzMdh7fxt3bRZF3Se5ia4J/SiK7fjNAqe
stP6EAsZ+SuesvzJdNhNIK09ZTwmil5eC05Z3FfKbB8CzpA+vUB8ZL+LuccG
yTdto+yG787C3FtBhVx9knyS+ci0rvFy1Pxv5iVzwYJw7SSCU9XEebmb3fvv
GhLc6cY9k8ZMvjGyT+BQQ8GRrULmhvgUQJNjXAnFbsfTHFm1YmyN4qXDC9TU
waxty31WviPt1PHrHQnr9U/ZBIkimOXBcdWaqzUPpocnqOl62hbDu6NZPQDZ
u1gUIH5NjW/GSxZ07PPZVa0WKR4J+f8Z9ebwy2MSUsi33uWrMvcdnt33jPp4
ek0tbd9nX08OOxAGtrwwNgOtvQp0UvBklAnJZiFuNv/lV1HjLDNK5DElu2P5
XpV5lw1zOZKN4AVd2jVEqWuYc6k8dmp2uMSJUbkQm/AX4xhi54MCiTyo+9gB
U1WVTRQjCqBLMG5jycmibbiOOxQ5wjuzlkbbxqJzVWM92I8pTBWn7lgtMSBC
Zqez/jTgan4f3t2YD6rZk0FGLSY5maaGUUpY4+5RXtk+Hp26xm48kFrfuN6w
DL3n9H0CT5RCD0I39WW6yVNj3saAFt3+iDOEvOTpkoegh7y5TyUooNipnaOU
AnLSuSAWdMhEwj3K0YEv/LrrRXKhNwKRYpXVUK3NqSOCJw9R3NYzxBrk6Cu7
thUdxjWwE5u0kwkw2bTGw/+SawzKcz9mgdI02S30N1qng3w6jUt2Hk0OUyBt
7BTzVekyX2b9/TPmyeKekrK4YVLZN9zqXhuxC3dAlYt5mmLD6dKHmgeKihDP
LcHyO3bDNzaHR04Rdswk15EBlpBeg+vjatqh4yO/ExOCKBoJktG0l/BV+qBl
a6M7pgSp0tlHxKks2M15PoOjHkwMZsdo+NFPwCYGt3669jbNJh7RKrmEOVFb
JCM5JeuVl0VR5gHoXPHhiOmXzpjwOkeQDS+BAp1TJxnNUr9afyEQYRBbCAra
idk59AtOuCCUMIsEIDXsqyLpjsH/51+kzfEc1CGUc8duDRT4oclBvYfcaL+z
HwT55pGxpbgGK/ttFyngu3P2ZYSAncQJOu5Hbyaqo5HxvKLsdH9koVpHOoHa
CVR50Ot/0J4WiqFi8BQ6I9oO64NuDe1f0u/XsE1tOotR9DuyOOWgzBGrUh7j
iWl5iQRsAlXMVXO4y4y5w24X2I/sNsCiYJMMdIPOweqcURva+VxStWAGidHV
DiWXQegbJzwfegV9owE0gvtO32vqUCWHBiz8PcHM57TxN6ABEo9Zqk3ptsCu
Ovi6xWnF4ncD0jot8Zpw00BflMldjd0/vQdjG0yE3gI4iUyxN5X1AwxbHSF4
xIYZjuJzb7p77Ejme66suyhXSzTplMevGxcURM4uKC4+qGHSE5E8F/kt+lSe
wVUocrSovOneSLMN6dhFjmeFHzQ+AOomeo3Z7GQ5AZmstb8Gtm1Yi9VNrjQL
rExg+ER/Gge7rlvJiHczp4h1kwkDs24TmfhpKDB8nt6Ry9TjrR+FUddo9+KN
f/3tyx+fP3U5tZ29RonnE+/1SGAXHNaJBOmQLNxH/AwoXiEx5Xx4MpNgiGie
jGOEeaSLYn6psG+ebCoY2ZOOy5dsRmmpxlsVe4Z7KgwWNVem6fEVq1W98j1J
jRDVhg/i/vdSNwZeJf5+DcJiVnJe5ry+bjtSd5I5KDBrRmp3uWv7WXZscu5p
des1PtVrlvlCMKeIG6i9wqarWLGEZR1tVjdlsguzCrsR9I/vFvVpUEAQRHzn
ROzuyAgvYlJzk1hWq384P3v54sX590/Pn0oWgPrUvL2FvZanWNCBq+aTMUDE
hvZcMNnFJcugu2bYtDg25E80Fz4dcpGOVLeqewZfYs9cQNDqI8+F9ZHLeuHC
a0E7t/jLiq/UbPuxiSSuuzIY/QxxdtoiXHJYQRlspYLhsVDDPQ+LQxWysPbN
2GhuZfMWt/diUXPn66BVOmwxlqU5pJiCsD841vHKoy2yV5rXJnluASQi/QW0
31PnmxVZQEB9DO0ezLMfajl73LFrE5U4gQLMCKHcNzY7Ynk6DB2Fd5FG2KbO
JXHdgi8+FDQkL7cT+MYf/UXFQ3bty9v+xPfhj4Vp8N0PJZCeBkpeeGIfqL5Y
jTTY02NJc4nrMwN4ZzEzhWemC7Duuu846B23SKztoTKwLjjWACZ6T9F6otpq
X3LjU8lOvdfU5eaQE7Un3UlcaF0IfJ9zReFSDslrrkaYP/KHTAJQwhNYqSY2
RuXyUcbJNvXyLh8nyIKKOr0O4hg6SuxPlWEpTpW7ZRtZOkMZM9l5nKOkC2/I
QAaTVvsFc2dHiYMW5buik3DkJxpa2oFhiM+OCcugux9oc3J+hpjB1IKV96bj
N7HUHO3H5zlIAyP8UUAHxsVjxuHgtXX4bkkpKajDz0kxFJvbpr+6HJP2/wRO
ZoGY+5MgPiNVDOytZN9wFNQ3Cg08PSOvrpZLCV93s/xSnZW8UUBe2LHtgcpW
N4fNNNcuNRNpWohD7fJY2E5gN9u2AcsowMglhwoee8cfpaShLng6j6AlVox+
kb73PgxAGdbxTRlJg59g3ysWjFzOjVDwZSsl6d5/E6c/ki0pAY4PnesoxQNN
jybXLcXdc2+jqUinjJg61QY+ihuw1pq4MXsD2N1heipIyr8EyJldTdelt6qi
2wmqJ5VcN0OjP3k/fQjSSGbknHQc1Uy60XybskcvYLrekCp99AlU6XmxldLp
Qe/vpD1pbPVZkEkjcVk1r3g752uy80wUrieqlUqs6wQGXMLc6b+Kr8TxvYeT
g8Ns78fKt2HcD20xScKbc0PpujNeQ027s5drAnTI349PUeyZrkTMcf+zWNUs
PfAlLb3N5TivSYqaOsoyv6xqMNZmcauUZ4p6JGZoKMoUzAfd0u+lZUEHxl+j
qcEY97yNT4OQqe6zk7D1nwQcEgF/lctmWzh1U+RYX5ZT2YSf4P4TmruHTCxP
u+EeRLTuQqwBR+tHxkhRTTATLk4VmSnugeRKJqCRzyjtCZ1pl6oBaF6dfFqD
p5MskajlnSv01G02vwUJBUc/9z1kMFc/9fmmu/uMQxH7q8zlSlm0v6EN/Si4
QnRqxHPVw9JtaxC0jjFd2qIk20EslPAozfknTnQbpqVnRinI0bzqQIW+Ldpu
1u7A8TgmEXGq48nBg2zvNffIy4BjKWTLvu+fQkqaQ2gPOY3yJk5qG2kgz3hJ
VTFAWudcPVgJnG6NFkBO2ggrcqI63DpyDsdWb51kg7I3FfHiqB8pjPnowA17
Uy4W0lN6vYxLJEaSs5WvF63w0SSuy/Hk8GByHLjlrdZqN16dyt4GZ+ITinHJ
iezZkJMJUFNiCGbYhChzijMX84r2QL6nLk+OUSov5aCFIAohchu/W3FWfuO6
THjcAPQrqo2lGdzWv9uzLqIpWj87JYm9u4EWRf5Wgylj7XZolUpdUXZLyIAY
DcUcyqoqFgLw0yQ23GcAbHCDhE273LV2UU8WgczmxSfUhHZaZ0g/nGsNltm+
YOEnU73BPmlzMB7R7E3A8rZYRiT/e475AlhCmKy7URqM5JHIXIxKKXp4EmhP
B9ne1/lcFemYF32YosTvdpUg1iwEai0PMbIovuA4jnobd5/6OCxuToGo141m
tZgg7RWMzg/oTrPa18sIjEjyIuS74vajYrwdJ+mpgVx2yThkgyZqYmBhWjGz
Do0WYjaRV74KGroozxa6nBue4tu0u7OUqhliC1uqRMYJ4ENewu2NNjQC07Et
LynBRDgLfyYvlxiuxegjkoLHxsNJ3Wu0nSyGxz3tU7AVKVuzi3x9Rhkp0oH6
t0cqMYGwwOOYvlpzMcJNZZthV/Ev3Q6gbyKvbO0X8XauB6RA4HpxUSLulXae
Uln2ZHLEUZEwoi9mrA+6joPaTdeBcNg/HBq3v6F7OBbDvwMXbjylIX8Z9eqJ
J3cXJ1qiqjX2xwy5jmlbtQwwdh/HZbtb+pHvei6/rcN09Jv4lG1nnN/CP7st
vaXs00QZbU/wVtT/VFhIil3owjv3kkK3Emq0RRkzDZI4Ih2k6NvmKgkL1KQ6
OCdHXcVeq9iSv3PeY9xhLqxylZXblpn+EyHTZmJGho76L0iIrqPDQXBtQyeo
irRBP8a4EorQ9LYg0n9szPtBXPpWekbkK2B6kyfdttuGTTfaXyvq2WjN4DtF
hOzFUpMXj7Jn58Na76gLKR0zZoaW5L6dYtd03nQEXatqwovzKZX21RQAqnnL
scugSHRacBFcJzL+z2yDT6VIg0L/bDMNdzylvy0NIxcxU9AlxM1y+2Sxw8N3
vXRDi3NG2BtiOm0TgJYSjKRS0qNTcGoalaJ08SKIABoxDfImrICmutticR04
ompbO0t+QN6MECcjKEkzfL6nd5+oYq68pLfh4F2qKlCldn0GnE4hW0Ems/jZ
vAHS/63IgCcjxoJ1fuCyCQ6BA6mSgkbeJV9l2y1SN+iYoJLAVaTCQimcj1FT
/pnSc/eUnjvl9EQRzY+w2uIWyyEO0AUbr2mFs2szuCKKyGL6IIMuDTUUmqvS
1oo/pESrXSL+7ed0O1PtfPZvUZvHnvPSjpU9dtKmNX+QsfRp1v5vPye+/Qk2
odMhzIAvUBQkifOjDgHg3dFqu3WBQHKgaSVAbRzU3KJwZo5TwZUlpdXwrt1l
9TZ/L8Ib0GciGESVzjRhhwbwwT5O2DnGM9BkNr7DfWbxyHpbk01mwxayPYtl
fYqZes6I02DOold8US5LN6o18bsz2SznUoudrwUpK2cpFbVY6BsSW8S7iip1
QGOySvH+muCA9DotsKYhyEThUiMOt+ATAaTQ8D4lUk469nkEqTaQdBJ3X/4s
eSeGKrfKPIl7Qm6ReeJtdoOzd+uKW5LqTE/xsFHgPYetuqVvrJGsjDoW+Ki4
3JW8QHdmL7KCCHmIwYVMGKVRj3E3jP+BboAt83U+qdmmjlA8L/RkTwsfdilD
G8SDWd1uq/umjQSPogVzasJv8Gw4YaO9ivI49EorrlGtEWyj+A8o/Td5WCMZ
mJLBDD4yB+e+xr8/WS6Opmr+H5WL8xmza2Q/h+KpzvAOnGe/sbvuOLwxnyK9
xsXYPmN6zZurMLv4n3kanzVPI9zx31uixl0zNT5Dqobdno/M1QgO2Anq6OW7
ZW4wp+F9TqZvpJCBU4xW3aEJue3xkQNV2DgadJ2aqG7Ie5s1h4om3z/jYzEW
zEzw/7qzpKLQ9EzdUY5d4887uPvUPdXxtTVxr0h/GmY5oAFg5oJvClsaeGUe
0+YWsG1+zXOhP9veOGxc3VmvSSsvn2FDTK7f3TbFz1/xJhtNQLSHTA9iBTeq
9dst1YM5guowx/dAytH3veUYSruEF79zSesuAQZHaIaLvfb9otOfK6oG2dmK
AK5pibgshJ6rGB8J2yARZC1yNhrVIb+Jn+I7XYhAq9m4cORkQvvCq0BR1yqm
k06VeJDXOi8Y6tkiwbidwbMEAVAoDGoMfp5RE9mA7OGQ+tQtC90WROk87xM4
ycx7HgKwyMhBoJUqMKVcnEsM8RIVeQsQt2hOUiAzcBH/t80dC3bdivzNaWPG
EPn9pI25jHGfNnaX9KlP7Il/5xxEd3bEW5358zni++qK/0Ge+Lss+uM98R++
+M/lin/DQKWm1beVsnllMHBEnEV9PIJktPK3zz0LAJ04ytyqU7UXDtwkXiUi
9R+TBaZ0FTTMYEFwx6YZHmUfgd9Yp7VGiDhNmuzh5HDyYHI84UZhX04edqAw
ArN8O33eN+wIiz5zzbwi0iSB2Om1EuvhaRV8qAVKIPys/NCIMqP0BNZEsGlD
lf4qfPFG78L/OdzlS36XJVtOSDHYzIOYOUUt2ercznlELlwJn4hIamRO7iMx
P/kUyQWjzvS7LtitV9HHZ95ybig3JSYVuscHK4fwAX7X1N507ZQOHWmLhj4q
claCfHMsnxQjwFWEOzCG+pIh2aVfih/gjlYBe0pDKtrCZTbuVaa71H606zop
u2Yl3BQaN5qPYuSdR2ToODtLBoiNFRGYhnDlSHEYeYeRIkV1717PGSLjLzDp
Z4X+qMuyaYvhS6imRYgw6mcYxXLMjBJXtxYEOnf8AVGMveboHGjlB93Occcs
oao1cXAB+7pZATvMnBuJjTRS3dMUs8e2vePwskzQeK/UNNItkZwvv25VbdDt
B6bJapXfKoTnFv4tYiJr1Eqn0jsJ207l5ULc+pvoXCwxByIV+lsG9ZJVseR2
S4Lh1cXpa2MRvFn8RqqME78LIMa2XHJbrSENZsSQksNazCfOg5MG2Kz/GXPv
DK8t2qCK8e/9fuY0Z/xUqveIgQlNp4Dlxu8s41hB4HHex8iksJsdLsYGgaX0
3yfFdMb7XTmT7+JI/pRO5L7NuasruT864+QBEbIDoc1jjSb3gJJD4mjSM+FI
MMGMr9oBoRa0L+ho6crHvf2QXkUnqb8D+CPdtID9L6/bLXhXfWFzChTaQc/J
/0EUKl81bdLEpdsCMGe/sJ6c1s42hv4l0jKkw5gvYk/nJng3sGuTgjFhhyAY
+MSmt1zA8aZGpyF9YZtF+izOuAmOTZMdzi/1ce9tAuuhfU3NbAT/kWSUtpIh
8xTeVYx1hoqGVTJyT75s1gjLTRVyMzBLqDGOAvdsezauExq6EljHXBY5SKo9
gSeu16tZoWjGhL1sQm6hXqYUvN9BqRRxN3B3wtxmc9VlaqjqvQtSiTY5qAUX
2iS7ejvO28smbFMjevIdwziMFZsAu6Drjl0IdYtm9XWRCl73IbBHTZdVKCYw
7Ttg7CG1wTdDFP5t8dk/Oyp7FGO5GzB7+HJLwE/5/F1etTmXydkUlA3d1XiI
2uc9pTKtmisqfijeA6E23DVGMjdv3cXhXlrPDCCzeujC6VLSOn+b2DzBx7vg
n1VawlvbwLVdOkqPIc+1Hwh6kZdTCv6HCqwppuGRglBR0ItnZF5lyjo/e/r6
dBSPw387PX89Pjt7oawL761qD/QrePfbuyKFU+nQ1sjgAVOd0SNagDjOi3w+
zheX6j+MTyPZUIX44YXt/qNaIfERhioSjWZFJK2sMuRxbCC3xSVfggsH78+X
UBHN2AuA/rIyX91m6MynGj5ZFjvv2HG34nXYNlSufRF5paoFdfYsFybktFVj
nA6+Qu6233Zf5RXIQA0drooLIZLzOfyP+GzCvXaFThoZQIHmsbD1NshJgzS3
vchMCzJVSKaLevZ2TOMTFu8FHgZHIZ4cP9EGU9rIjv7hAcM5/OV9dGYwp4Kw
He2AhMGausTKxj4EZesQafwqvsaRj9QltRdWvT+YPO7WvEco9vup6joO9nRy
pvAKSB8A9ds3DOWHS1kgyDfx/wQiftA+AK/2IuxHoVIihqYL2g+xRtVodlGa
BZrk1NwUmwy3ZCDeepHP2hRplT7nia6A9l/DjCZPYaqGxxh/FGpfN3J7FF4I
p4kBdDcFWJ7BSRfV3Xbd22KVisK9p22I7LL3080isH4JGQScVzGPip6INdK8
caosHJbMbn0HR8VfgHmicoMZ94YTiH5HArh2DUURayns3ZZSWUfa3VfohR1V
7COW2MpM4dh5h1y9kVeXdU8GOmWELRs+rj9LVHL2mVq0UH16MT7z+O62sinY
RYKld1qDo5mq0xyit2COKNGp85g2wyfbn3sqNyHpu+72NGIA+SDVsRtKT4Zl
nJgSvueU2LDrXm+lTc/KvE/Kka8zAeLJu6YtFivUxQ84xyjnhMPLEp1qIlcr
qbEI75I4Akh6XHHf8G6b2CC3f8vj6BxFLtPRGJFyDHNnY5vMNnheUbiqbF2N
kd+zETKLcVuPmb058P6aQFQHDD6z7YarKsMcpaUiJkAU76/rRsobWFVykZHc
xm+pzUKE9y9yV8tBWgZnow+NbHSDkyPKlWVCUU8O601QfEm2VNxT+AE8NSAN
dLHcjrIrKqBXm5arkhbG9o3aKGRCxehBwtxGmq5DrgWyARnGFo+YiGweumR0
ax+CgYhly08lODBTt4n2OSe7cO7/Ki4An9SUUnkdNIQzBq20VMbmy5aABzcN
Eyr6zJ0BHRiISJyJ8hegVxKlZo7OLyM5RlWM5ekyBtydthlE+UpyecKupj0B
vXTKOH5d0xAoC2FwIJeB0BkswEU2Tt+SMXzRnHbfizLW7gf5T41bUuev6F5l
+9i7ZDvTTeazJT0OvS0ven0MFIQd9jOEbrrSxpTi2W7RAcPQClyc5TIndFqz
2AF674N58BTp35belA5InSDgNycz3XCRe1I56smX6RIO5UAN4TJHx+GLYlM1
cltgMR98TE1cVEXK3S7bgbPthWT+rc628Yd7a9H9fxPoZepOWVuLe+DWfARC
c0ZKAjx2xFCEbClHD3GbLvagwV78bkCd6Uj6KrNKn5SZLNIa0XsbWCq5Z5EK
lHNuTgAmetpyaNf0vq+hPfEIfiYXHCaEc43aNLIaSsdhMkhdXumn4Et9FfWD
bKkPXGtITjTXGwWFMV23lBO9QFm/E17yT1Soz40K9X8egNEf/olf1AMQ1A9h
RJd0oL7694ZQFI37G4AUfSrtNm4wcif1Ni1GTIFBWsGNIQw/sYYbVOBuo+H2
Qj/8w6TSG7+MfxiixCQ7XaBW+Q9Hk+DgMfE35xA0oKSexWJCSqL0PAVO8qtW
rpTU9JmUatwV16A1xQAi3u4Yj+Td5R+AE2EOGpkvkUFpspajLFj+vPAUL0Tp
dIIStCkSDT9WR8m8PifDtIr13Cet0qV5py0V5Kik86D4HI88kWzRDB2Nabgc
LGyrdGRsi7W4TdUjmoieHnBiTzDjduuCxcCScDdLs2bxe4E2Ihu7Te3iPy2q
396i2lYUbr60LmfKpfL6CgNXA5zPVjWBuSfbRW55gU8dasMdrsnIT4S5YNDu
2qfkY3/sIBvdRdwp3+nsCrTRAqY+dprAa6cp8gua7kQaJII4yAsGJOqNyTRy
rBsbKN/43XOBJworeG2U2XfaECKHs5xSukf3JHtdLstFvmKGnaQQVRK+nhx2
HGFGe/SF/1l3kZhqxEesGYHSFybIirX5Ebj5lG4Q9dXW2ehMOIViMuBFlNIk
kzzXq4GGC5IEsia4jbFwjVp6T9cOIv6CK1xGPl9lQ21zwPJd6xVOkw07+2gI
TLx0XkalfGxxtuzISACKtMdbj0y7qlNuLrr29Kj40Nh9ZvozTAsxdf/kywEb
+RW1J1dj8qq8vIJvr6tF+bZg6iPwwWkh+gRVNJA8EV0UOQstH4mWRbUtaC47
OIS4ro5K2En+GYUbS/UgnOMbiiwuVyJNMODDpjrcSzuKNWpcX46S4s1NZ7cl
uSCyrQ1c+yXrPW5JKI6yvUugLNDN9rWr5b1LwaLw1sSzThfPwKurkSr3Vieb
2/WOtQwDVtRwvK8TigwdAn58Knhpokm8DEraXI5S6N1Nt84kVAIiFMGSFM2m
p97UPW26jkYkwKFblr+Nk2bSHCDezC19KYHXSirmXaSVcw+IDiSwG3vhTeDS
736CzQ1eeTK4Pext1bnnUrrQaiQ29wgANjEkuCQNdRL2DJZ0F822cnySg+6s
DjpZq7H/AqaR4vqc6d6pDUfOQqH0IC4X6LF2lE52zTObC9OXoOqSSIhF+Goe
n7e5bZpgqqy9N5cqoH5fnzJUQTqxZXep+GkqtRqkdZSbiHfYUJl4xDxzCBIY
7f4GGbqdxQnX04JIFX5VgTwzX5XkvXOnSWQR5Edw8H1G6QUkEDWLAvNoRDSw
hVd2UeKuscgFlRxNk8m5w2nozZOYGLog0Zlb1usGy8vwr8FUuE4a+TyF0PKq
wX64VDsMgovwwqLvgwoKP5ctLZKSVxrOqMbtmXSQWMy0mCzhFhZNnz6nEAXa
3yLVsChs+y0yJ7EoV0oZLsyLGXPgJLibq3q9mHMUkDtGSz6P07Ng1EVdXWrl
IyacFYoBgnwAXXyUMfIOy5TCwiBlHzpYH4Mg5HGtN2zFAgzS/a0hHwokqTcN
2MZWkhK18xY1g3RxtrLTMPHOJnmka7TZzI0YemozejldWgFvAxebLf1oUrFj
l02tfcC72olqyrHqAWThCqJOspLzEemc20On/xEyr5G8/WpZhyuKV0n24U/s
vgg+c9R1njtxr++rvpiLDqcPSk4vKKNgAVooo42zK0M4alMMCOS8B5MawwZQ
1zFhEjLwAjO/UGIu0R2kCICEPXjd+nraQP1UIwbYQuL05ILf4dR64CaQDYf6
nufMA4sll6r9KJWmN2bQAM8l5rZhTMBL6oBo1RzPy0VXsbJN4YINk6w1DeqL
DBnUlgxOdxVeM86Zkxvmq48HDN3htZD67KyIrtkZFekGOG+B8/gu6atBY3em
fErH7La2ZQDCJvE5TGvOV295NAE36BFWzuUubZji60wuF5wB5Y6jZgxbihy4
Im0Y/7U/ksoasps7hjjLyi1gwlJpMkFJnHjeSOtBodLzqXrlPdz57ShE0mUP
lFRpBbtmexkaMaruAC+XWQNnseq1lVjHYPBz9J+F/Ew2PLrNjh06xV6XQ7oj
cJt3bFRhkdn/X93XLbdxZGne+ykq6AuR0wBNUqIkq2MuKIqWuC3JWlHudvfO
jKMIFMlqASgsCiCF6dbGvMNe7Yvs1d7Nm8yTbJ7/k1lZAC27d3odMdMiWZWV
vyfPz3e+E/a8mCW09YMJ5usD+Az/zOY3zwhvc4Ihk2slaGtt4hu7n+8Ksf6T
BovvocpdslU4rhDWv6gumwZiNX7I5G0MazlG38KWjkfpzpG+4cqrMf0A2vXn
S7GaF1AALyH1cIuFznBQz8OyjZGCAMRdvRitpgTB7kMx4JCrdMpclpvEacHr
uQjjHpFc2sFLJuj6wIWyU1yX8+JF8Y/F7sVbuJYu3h7uDQwge9Nb0yw8KKPi
80u3lBqGiXtNWGXizPBuq0dxAQFq488rLx9sH4u/x6WpuJAgivQWU4Amqc6E
G8DCf3GSQ5l1FSXBHXIJUOgRhUPECBPPOhqSONEcIIeKAphWGY77Qoob4Mrd
4fEPYmHFOqp5x2WPop2z4WphhaIcLQkLAekEGAfwaRcQA6qbBfHI1jEjLQ0K
c2xCb4P6Pw4q6dXVfbYFjZKcLai7wC8+wP4SrUccUkED5BOCz6maxrtp0yZC
+IPsNtxRRz+3LY806CiEqZcpmKvduh542vPObPx+cuzcZOABVCMIpfkgtYVu
QAAHtVMizL/s4xsX6xqtJO2PHQrtxMBVc2rR0A7XUwMHCrZXkDOhBXTSX61m
I++1Yw0gPKQdEkMPp0JcAd1RBBG5aCChozflWtKVULkFsqoFZj2C9LhsmwkQ
9sj9jLfZDNDpJilqciHY2QWJOZ2HQ1OQmwATQaBFZRcCAd3WC9TDMYH+sioX
lAiC26Xm6aAFpl3X8m6fwj3nckiWpkLjdEwxzQagSKzamOdlkRf0X311ps25
nQNKk8+GpVAj0iez/fDz7ugBs6KugyEYGfdJxRzAQFHpEmh3s9PRxyrgdK0g
NTjuNKtB5biBKPEEcxcQZisbg2Ie4R9YeQCEALAOocvmC7UIyOZEO1CviH4P
IurnaSbpwFQB5iIL6kdYXTkNksKaSfzPpbAK1xH63bRPMZFBLinV4kQRMXDT
upHlL7Vsxi3uApeMqiGh6hMcFkFYzG6bya35zTeF+GrjhnKIAe2J0rEx+6sp
uhmXaP8a0X0XedMkIwky3DFuD1GyMew3yEO/U8U7rJx0cFp/KlbzvB8a1/XO
qxGpkjHggkIY5XY6N+xc0Hujl/PZVTrvEjRMnNKC6+SsVxoEuxZpGXWA4avh
4F8zz2KGUuSyWdpOw8A5kvS2fGYGzAhJfcDiCdzllPKrrSZye/JFncvaiFzy
sKsUE3hX1rhryUMBaZW415RbYGgnoLMqZBJKijN8R1OOfWbz10mVCOBaCFo5
SPyvvnpdf6w6nCCvfvfiOyCiHh4dPxZ1I4j1YAk3NLma4omPJrQFqJCyS1yP
kGe/aBb2+0TVhNz/sDRSeSz20ns/e8qm0aFTQg9RphHw4pdRwRJL7XIUFcaR
wCwYw8PHw8ePhodHT/OYgEeKCPj24PghIU565gySwTYTYm+gvRi1wNVlxBc0
SLx0YQMHFRb7dt58YKOw5Z0WNlLYs5DxOfJ54lOiI0VO5ixJxH5xJqa8NMgy
X0EmrjmWQhgDgtXEmFBMnlLN8PCEWZiCvEc5hTQhl/UEXI3Io8sqS9k28PRa
rr+exe4g91Bvz8StNk+sTmpRFK/BjeZn1PaRoIN1QWHLPqODjuPOUW10o9fV
ZAIJNSPQHW/h1aPj48Nv+SQePDz6/Pm3akTiNH5Zu+/gFNOYTu81nL/NSNgD
+ysM5B+Ks/hI20Js/gI4P+H47wgDXI2QDnxhJ4Y9iUR8/O2TbyHK+G6FKDb/
mvRuSL3LfLBVFpjMB3FpaZIR7cEXmDEdUWQObjdiK5aiPKVQ0oRnADoyBDcz
nJtgFYybaaL8LxGjkO2cgUyCCnoX7pTVZFYt9GJrEIbuq+2EDl+VZEP8maWe
ENNzht0Ss7RttFNxHsQGSDhuC6HbYaECSDaEGVYKZWtX19dKjOHgTvuHmmFK
opYVApZKFm6H+hhImQQfohtfp4i9qdpRpl8L4nHZtiAVrhbXw/B3oENsh7Al
h7MGkY/b76YMNjZ/PX34f3TbJKRL9yZVoh5CiH94cVH8Bi971Amsvz2YtMf7
D5NF2txDxZACdPYk2On0l3v1eXzje/xr3TTKa4KBTjpu/jqQuxA7hpbDXv9S
f8F9gm39SIKUJAzBWZ88espVoeEBlIn895LRGPhT+3Mk/uZvseTu/VT40mmP
5gGqoDNpEQogkeM3Yfmug5AJu4F6jIPaXd4B5XIwos/Gdxih4D/6Hon/ETyK
wz9UQNUVvt5iOH9ahF/gUDh1w1i6nexDEUwDRjkcBsPDJyGiyHVnNSiTGb4C
zA11NXwVroEp0luMFhU4WiYArCRl0rvWWL4gE9Tkrr6mW2Oo01Ey7Q7q6z7q
igFQ/q4haPmB4Sh6gEkhyNdyA84uFEETZ4jDmDhYH2bxBAgxx8Hwe0Gn1VkB
DAaG5z3RYEKzfxenhHqtPE+cFj6i5BR160EiRLKMUpu4KvHAxaZbSyCfjFuB
qdTCl3VycDIdPEjMytJTrBEwmhw3HCkpIx85HbUGcwAI1aAcoSCH0A42fjsp
Hryo24+snICRDVctmLvo0gn3HJI4p/wz7KcLM34nlYFQxFF43GbNM7AAF6Fz
PSmbnXf/zcg6AM0HnAOt1Fll48A3B1UFJWWOpKxMD0hLcHUvKu+CQ3MfHiTI
TIwIDB8c4geJ/zTCFdYEigElgFyrWGEZDFeYOGIjBNnd4mPBXiU+ebxcvgH+
G6FhR78RTE/d4jSHnbjvTkF8PgpErGre/rtF82ntz/U9jslR7ph0T8nGLphJ
r25bgoW6r0Z73H3/4a/w/bBnwc3B1Eq7H6FKE+bt7qHqcq9+PLpfP5igqVUQ
Qu7sAmgUvz+0nuVJTjYO6pdM6/G9hpOtA+0JcIrvAEBvVS0McRWaV7JjJ/88
TGpjRVUhuS+vKpSVgCGik/qxquZxgfoS75xwmNcNRqcU4Ga5JWlatc+w3FRu
pqd+D9xY4VuDvL/NI7rLaEK30bsTyE0CMgBUbW4ZDhRVRYpqg7j6WpQ5fN85
jhDx0H0YvLD93GsnYxIP30VqJOW38knnHjPd+YiO+UbqyEE8kWL1tEbNK7ZZ
eQ0eyyXlkExqsai0bs/h4f7RMPy/x3oGnhwdHyFK1mI9lNy4YkTx+bsOZR9w
GOo4JXBF+SQyTt831IwEm0D5deE+xuKzCAhzikUqUAhLd91g9JfqnEhzyHLo
1lA+l4qLK5m2hLPzMM7qEdCN9v+G+N7WJB6wj9EqMGsU5UerFsd7jzP5YVsz
W2BOaaHZdEcgsv/gvLgaCmFrLSp0gDUzvrAx0o58CNRGyojpgguR/oKizRiM
94sfMlod4UnA0TxVXIffx1yV+EMkIBcV0reGD3ewB+jlyaZjYfBNOsDBbXDA
u5BrdnxoA77xXNhWrgEwOPwW0KVOil1aAPoBiSFRt+HEuLAae46sfq21Nytp
ENSf2VoURd8t4/TDZ5STzMUowAuOgkT/psqbAzeiSPL0ymoRa1DYeIgN484U
FjWXy5YCJoxo73IZhzdD9x2PMS7RTe0GktXn9413oV7GdVK6zKgy+YpCsJCR
n8Jymc6hB8xLocTJpLquxswj6YJHSPbo9fd8DC6tLirNIpIkLd4wYHt71XIp
OqmSQ6izZD6X5TUegQXWyKY7UaZCFPoRBq805YRRHzOVFQIojJaDTPqISrPe
tksU08zbZctu0ce5Jjh0iY6HmSAdk27Rv32oy9/TwabtDkn1g/436NpGlmxn
EZLjZEVSOqputVzUI4g5Sc7RRulwn8p5tqOtGcyuI5oVb3NQpx9AEXMwPAbq
lskuH0ojot2skCcX/7VI1phBAmW2jZxUzA80wbLj3u5NlEde/XWuP8KtYukj
pcUWzYxGUlJCUdGiINC594PkQbHMZVfgBbZIPUOr1QBctB1UNoOTLlw3cSTQ
NlBzZRzO2kO8q13RcUINNlPHwauyvrHmBb2StobgoGhlBOMPemMVFZSlynOr
xYz91Ao9KHMzjhe08JIHtQ/aY7ICTKCIacllquVoLoUAKQFOgLqSuykvtjpp
UuFd27lU7StTB11VcFXfWcLyVJJqJ6k7zvUvZ2hWYLWWsaXNJVWUPF6sa3K0
7t7XzOrSFTQTogPFZm8VGN72cdbmEK1M43KP71oc2Wgte6uUkAkhZ5D0d4HY
E+eUIhvnrhFc1SW4R2Yf3VZtI4CiParJWMSSQDwy0eUK2Bh6VlNyWUudo2sc
SyF0K1EQSl85b0jP++qrQwjUrKdTIFUc5TWEQeTQ626V0MpRsB+1kZyKkrQx
y9y4xS6qvldJMQrz+NL9R8zH3RsQYgcPu91I1MG4HzZw+2Jo5tE+OJZ6tak1
X1mhs3jvxEp2sv2iorL+2zaGMPbWW0u4kTKKAEoGAxJSXm93IsIAjvfZVNG9
i8UcosrfmVVMzJar1eSqnkza2BBzm4xw8UFOTIR6pG4hU0A+YQbEZTULNtAy
dq9IJY9Nw72X8hP7JCEaOMX6Zd42ghN5g0CzS3ZVSi8ToaSIv3oeLjLKPmGd
oL9snLlPGKkh/hpUWeeTBgDe03oYFKB26Zy8Gl7uFIBqt5fA85HZyyARP8ra
rItjzTtFA8b/Eb56OCioxO/DvJ0b1zgSYnzJw81Zu0nhlnvl8ObIrkXOa3t2
REHwD7pCv4XAy2hI/9OJ6ZAdLaEducj05TJuPqn8xiVZU1XJLUwv38+HjSq9
UJn17uiO9RHPr1xQGGXUP4H5O0zkHRXL3qYikFcUKM9p9jtBm/2iQ/+fmRiO
u7YbTAMrwZuYZ5TnijdAXvVWiIXy6Gf8Imweilm3kdeIVwnCJUMAEahmzptg
41bCENG8WbL6rdKxbtuVB6CydRe/zFDMeHyYX1l+BHBkCVrmIiYtwFMOsbam
XjLnSj0N5xli3svKDE/QDjqNo9DDuRFmDw341YsIzEqeHxJfFGGXZHroHLoC
COx8yZbwdA5GzBivOQSieQoULNZnCaPcAioRTl9UOSYNc8lZR0C7LKhIKCa5
ofkAuJlqwZYtfuI63DFwkMOYm8Va0quc5viBhe+70GMMMwfptppU6VmTAGA+
lWRafqqnq2kn65XzQ9NNInYU3yBXC4KnroUJEouNgFSiqFeQxT/0h3ZYEGeD
LSyG8eBdIeB/S4RoSzBIXO90kPIB06IdVbOgTzatM7kp4c/4fPC9Z2CpxCNT
gpZW/JaRsV6BlT0yoyMiUXUHzCq0Nug74JI3L2uE1RL1JhkgYv5QxqF7hZlR
um9Y+qHLHI4L26h+AvATMvQc9UxnYPdwXihdJLgoTrYt0wiWdDGjulcJMwJd
X1JTy+UDe0JhJv4QwrWojnGn4noucIcL4LuErJcFniNWfeMxPb/3mKzzVhm0
bwBc48jnbSSJeb/iaHrA5qJJqp74jTmaNeyIX3W+S8L1jhTv1iVQ3j1/8dO7
898PivD/6PSynUq2BO5SPNqtOkLRF1R/cvpHaNPu6UXF8kF8VVH3ox4xxZnr
TSpKpBaKd9/RIfkdXdBv5IIW7AvMXH7/kxTbkE+l1H18DSGmIwo7oYoAEAQE
n0wBelCToZF46c5njkZtkDbPoDj1hINfw7koueAj4osok2hR3TbOHR/mqroj
x1zKwEAnM++sEEYxzCXCMJRDHZUjrOjs4ohSVdb1Fy7KKRXq4sZdX7FXYvh0
mCFc7CjscZfHlDTVSnUgyBVrsPxlSVXZkhSfFjj9uGAPJXbCN8brWTmtR4Nc
6pmFkkDfoRSzMFngnk0zsJ17Ee05iWplsuIM25opGDHrapJEGcD3Mf47t474
Khzh9w2nZbgLesG/+wzp8h1FzgiANcICSDhwi2rpwyTSwt5r8lDDhWUWudXk
yQ3GQMLBPA+mzqX35cXXKrM3xnnCpZH6sHcCXJGdyYgq6hkHFMIXhImhI9qy
FGdRSymVsZDXd0Ww5Nf/5xEsYxKXlyk6cugTRdKvK59elEmOy02uRHcAaMak
a3mmZmRBm7ltRB4jzM8uo8sR880vwW+ZZDimdPJdUH2WcbynHI3OmNlK2gsD
HeYGs19ccMlmQC90G///uXSCrXZ25BHn2B1xNQkpTLm87wQOXI1EhjHeIAEy
biIOcPwcQXKJNlLsM9NwDG1+VPAypV995VeBWDjW2rwSppCOgwRM07kHGe2V
VimM6E3R4T3oQqPgaIIZ2yyUzo0FX9AbgvGDxkD3Cvc2YdZdRDEsGJ0EkeA6
+bp4DbeJXCoRPUHm9hiCcc1k6VSK0umv7tPqSbMLxTZHXqJQNIPXlIsldvdG
91T6vBQ3XJa4CdeMr8S4vfE4G3I1MxIpIUkz+n+koVE36125zvBEkDcGG2wo
C2DBPiTkCSD2vUG+HkzZZ+mLb1PgBp6p5/k6qd5k80NECHCWl5Q8EfM8MVtI
fvGI3S+zDYnhoEXXM0SloCii2AZYeN3xBIed0laeYEx6hs4OoTCm6COq1kQT
5dKLdfIl6mr2Wf4e2zDFuUvVkTxFhptLEveha74M7thrtFzyESSNFHTgtZAk
RbHimGBDo5xUEcxx4SY20EZpjVtsUhGrg+w0WlsXsQZXGhkL6vDmACy4Xkty
RU5KytQEg0PEAIqyRG4ZozNIMPG6YYnQgiDgyCnXKK3sJuKH/RzAQ4Pbu2ZH
jfe6ymx5GbbrrX3ep8ARXQs6oUHh0HH3KD69Oz1y0rHih2jZ24Qyswn/XHti
qnIstkFoHFQQcn3nhGLbL6LNc9wrpXVnfrGgzstECOT0ytrSSGp/vihPYgz2
gSy7QFcKR6J+JhJDiclqx4HnxA11rO3tV8cUKi0Cl6I4lO8zJjmTNC7cvahA
keh1o1ELYTbePDJSbDA5WxfTCSGm/lACgfZjxkuIF8qMzcqcGPfUa+XM7+ih
3De0swfYlmScKHkYOV1nK0EJrGY5Wm9U4GPEDBcCOm0mk1qQmSmNaKtg13o8
HMmTn03hc1QxmGML8U4yFrRqOBv55EHBy9MZgWGUrgjAOJ68thNTNUy/72Po
eEKR1dKuDUOumcgXPTziTpwilWQU2xaIeZTQ6ZGJLYlWxr2+CaIazQ7x9jsL
sll0u0O7GBE1XF+cU7QILoJuDfy21ZXVJoIW4jIVpEmndadTLVzHqIJ6tLcA
zbkaC8ST1+z2JkFU6iN4tWABsShiDkkII+K0Maokshp1e7TZndTxutVLzjCc
cB3ueO1TxIsTlr3jQusW4jAc3rIcPoTOo2IuTv7uNjIWqBrwGOwEOrWsAIEm
h5FICjUfj3zqANIlQl+jjDUYL4cloKgoChG+w6OFI7rTKFjWi8nbi06cD7+E
tVZAGtyHkMVeLdJzGE/9PleL7ALxhDI9m/nRoQbPog3rToRogBo3ZBI2qzbW
MXCDkHKLYU9C0fnLBz9jA4krAxBOJioT5JcjrkuVXcMhAb4kso+mv+W9GXwf
82QNX6OJf/Bjkt+C12V5G/XozcmpMhIZ+IRuLruiMCBXLhGsSsrrDVkBJPCR
JESyo4MormZjX3MGHLLco/C5bBJLu2EiLN1B/D1MvJTMST27ApY1kNZ1XAAo
rUIVs8CUs49WHqRTZQpW8jL8VjE60aQWHlT8xVlC90iVIiXxhAb+QqrqbpED
soe++up1BeaP+jwwNPrhrokPbPHyEPfIyyPOWIvSvUhqvdiDoCU/V4+PUibA
54AO0XZUruANQxusy1XgsiVwPwqY3fZjWMCnQW4sKfEUNhSG9046YuJHs60M
vngZ9WkgTrj2F0g8bFLMmA83le/BjVZthwm8gNkKb/D3oz8c4R+OGP+AEfJd
eH6Ac7xHme0XOMsw13tWE0p7vhGd/aP78Mt0qWgCM3Lyj//pc/jH7hw+7JvD
R/k5fJjO4aMvnMM/bp9Du0J0BH9SLEPfFO4XryiE8KetqSYWYo0XVG7LHzu3
45vDuHyIH8Smenx/Yl7cIAKRk+zNIUdT7CYkgjQBO+kHjzgnj2QPNQ7TNS0/
EmIbcdkl+sfpdpEsnh+pg1j6B9vkdHqmLw2DfNNQyc4xGOoTnDHpIem37bKZ
t27w1GnsaTQrR5gTAtmscgf2p4OSQxgmUlnEieEoTtDFrEWcmCDtdhlEhNCg
l4d7RsSkZYL4YTz80eNw7veESfVPPI+t7zvcuN1FPepWQHhzFGGK/OWM5PLw
8tG/BOFLevcfs2Xx3MlezSgDeIzSOSo41lPFMKVO/1G7akUr/mRm0ccZK+Ie
FdaSBIMZ/KNA9XyqEb7EvlvP3ilpVqSIMzgqS7sROSP+1GkHi2Y2V1cT4J5G
GmsO71a8txYIpFAWYS5Wxi6RlpUgdgpc+2yLhubC3ejvKKzD7ARJyue9VCPV
nLOJ0vnaXrEelM+H+CV51L9KCvW9lCNFgjV2orSvpkjcY5jwFh30Tg1xZc/R
+N7AgRI43chVOImhUb/1oHwn4K1amCyW5Pc1iygnfXPzvvXaVVkkvxM/06MF
K7FrbvqX6NTXKqZa98mpZ65gy09MTHjAlVv6Z5yUajhxxOpIrSoVZWynkZeP
n1kuwNgMqxL5QgbqGgkm0cCt3h65M6njSITGMV63Arj1JINUuFvAwafPRqBt
I/pBxdZTQUY9DdI2zNC9ezqwHu0ZLuIjcTH2mDoJX7FQ6GbKF282M52I3UKR
aokBlDnj1IHOOnPseD4pR3yj8Oam8gt84hP5+OYIfbhhLtdzOM9LH47vfGJc
0y4a6XmPxNEzwQF+8czwfKg3V32CwpCQ1ofcYG1aZaXkZu0MC9UPp89JyClB
yEZzhhYR5thrXQ56jaxY1/V65mux2MaRHm5WStNavXZRx/qpAXT/ZEVu24og
NrNw4WET/XCJgcPNZjQRLM6bKehrKspL1JoesPz7KShhP4nmNiAdLPnzA0vG
jQ98v0ZTFIUJTz+WtjiObVbG+2lZs6N/eXTgeYRAaGCdCIbbWGNtlHYT9jwf
nkVVToZSG6GKND2GEDJElXz1bjt5wjKn1etWDvomRaTjEmW6C70iefTIbexF
ZRA9WCQuzrib2O97dEe7+ZIHk0ljXlVHyJXq8K6NiOVL2NkjqoWXh8mRkE0e
CzJ21aYnO2/n6Pakk/7ykPy3TqdTt/TppMHLldW+iNBjRH8Lmhw6UXo50nSH
ZggjE/comrMNkdzLvR15XDdVeDbumrS26pfrcqHr32AsSS/7lK7a5S79HAUw
QkH4rNgf3eKXukKSpeavTkdlhKtDiapgXAc9ALOm+e0jxo2CUTsizSuFNB7B
i3R1gwwqdmBxqx3ageLv6rrJyB1h2afssXV/7Fck8GHTJSgz9UcMjiTB3zea
nc09EGOzXqpUe7RfvLHKljAGYil/gy9cgvv5VmFsprKK4c9wMs+QjwkWV1fK
bMhINqs3aN2LrJXLdeJJ3+iueXn4IFmNe23ayBScRgOXqg6dm2bNZLC4X4s3
TgaunetclnaLoy7dQ/xxyiwh7wuFakm2REYeCOofmFj/vaj6LFo6dRMwOm5g
0Lo1lZuWslO1oeN4sFvFRUwkYgrl5N6fnX7/5s3Z2xdnLzT5bnORgsip4EVd
Wps1hoHiy0jYmMRZGaeJHy4JgsSqbE8J3mjAOMY50PwNeFKYXZHGr+GuLm9+
m5TO9fydOTquND3E9bCDZu2UB/CKJbJUQjrl9Q0vhJUHrGgs8RhZqHaYofYM
P+Hrqibrgn1IKqiC4yeCUadVOF16jOwZ5I9P60wE2TwoFljvBc4MFnjBAjzE
jjquFzQlZdR0kK/fIGNlvmjVbruX1CJpFjI9dzdNErxMKyB3UXZRdwtXjmoJ
EKfut52dVjKDmm6fKyxtEJ8ntIrTIq/xR5FLn0ig5EoJX7qpfMlgPrGi7CSk
U37IcohqT8uNGAT7vtS3jD1lYfAoSvnGR9HQPRoE6wfQpPo0GJiGXmmXvC73
fsqjqAFFriZXUy2XKLYfPe8T+XFPzqrlXbP4KOKMMEuYsUGphZwYj96fdxrb
58nKDIl6EjqxFB+xzRX9DZY+rk0rG7jq1FFl+pggq8SJRaQskdmMvYhKSDGK
0mL6RPlIYESo+wQ5og3fyJKrItWqZ2YXz1EkOryewNDOgiAKptBNM5ZvaqqF
Be7OZ8DjimSBpyAh4h2WkFh2lg0IKvkbxk/w8uwDjuq7sw+nr2RsYR6uiTAW
y9btwXm2hRGnl8Lh6TRieiwvx4DJIyiBEnDXtA3AM0BcUZi6AoHyZpHFKM5g
q+Q6/O6HD4Pi3fcX1O13J6Hb39T4P+pT8YXwWFLYRllSsISJOEVM0DIQqAST
6tv4xIzW4UQP5zfrFvwkQfO9rRfNbIqbQu8KyU7zg3SZLEmTEU8f5puF4S7X
iH9mGeDLi+dLtN+zrjpVZI9zqzpJPY5PKKN7ZCgcNhDy9PAnZPIrOvWoSJFN
iMUQoqWVaXQzSt2nrbWc4iyw+9Z1ctU6HTdxdxWYtN2STqQtdQpvntr4zpQV
B7hfRl8jbmokDSgxH1D0LrpX4MgxwQuq/RGJ5rf7R8QmHitMRFFbDfUuHkbp
wqj8/aFGSgqFnSN1pPhhM5khrU8NGbg+PNx/upVBtWAET7NaskOCyWjgPNSc
bZQrvYWy8Tn05khijHyLm8qtoyS/BUkda44YAii7hWu0NqNwh3ZWaRzumzGF
pdxdZ9dSUkQrnGuzjpLEGIIExmgd4JIH8OSwW8UMJjQtq5OpF1fSdPjiVLgm
3x4+OQ5zjHcfWb55o2RAaQiZKmp8U1GWLI3V1cFLS981Wt3uQU9GFxlcZ7Px
cNkMAU/+znwrbGRVRxHJTD/hdJpkdKTVLrbQcp84n3vQ8l7sfXh9Qc4Dr+/w
dqLqJaxXuhJ3miquZVBx8xD/iJvbuAgkn1uvoPEHevux9btc8tHzre6CjrqX
Owph+JTs7YGvPPNT/OWQ4rlh4mP1D+WtBNs6ySARDi5iigxbS5i70dvhjdMU
ven9SqVk1iA9iXfGCNhDv6eEMl3+tE5XXYpcD/fzQ0pWy+yjlD96o6h0Clvi
Z6p9TeiP4AhiuhGCCJPrUb0m4sNnBGwMjWTnZezt4NOrUGsLxnm+vngLTKHm
McqIMP9NOPKWNGUFewY9HxwJeQvYLfVS4/ySLowNUjMCcefHG2FCYCdDm/My
pKNDPIPdlWFHcWvCjaNp0vR5yFGIRrtfvLciRLx5pqioKB0AQqoXVRrhCpvi
0cHTx1Qj5Gupq94VYlSSPZZjJ3hP8PpFtf7QooxOm0FS+yqJpm5kiBfHpPvF
A3PmPxCM2dhSZS3htY2wJEkYoImrdThz2AiBw0LcxXV608IaK0DVVJ9uyrDP
nL2lzeaHOejEJGCmrsGHzG1VY8wkz9ypFAcIKgdwEGiBKiGa4xp5PHnaDcrx
ja58IZ1Fyodq6faUxpfR/SFNhRFfTur2Rpg0ynyOTKQyeIfpVt4fj3bOl23Y
I6cvJbFxdIZpdfJ9aa3bCBK7YC6vCq5prmsY0QaxjWauuVW74mA6VmaF5E/Y
w6Stg5YFSrXU/Y6jqrwV+Cz9IUw+AJhIhSaw82FfHbInxD0TkR7B3rytjczC
nyvl5rTbM2L3YQJdMtfF4+YSbfI7jbS3YP0Ng3DD85wMhgk0WKPFDJmSO0ow
J4uWQF8mDa39dLXEYXTWixcfnhvyQ1KJi72g3h2w4emwvMtywrWsNj0HSsRV
6GJ4lMxQoK5xROOGxRcvGfO6CBVBWy9XwiNKmC44iVPJmKJ4SCe3iXQ8Utxj
8hfSYljcfScVt0X8hv9Dihotxf25b+3sic8J20OSPJf4k3w+qnP/Y3NWTNlD
7PBybcjUCHO8zBeONlP1QR8rAvmUteNEjD2pIGdTAwQu/ywiXoCB7QaZuOfS
te794Zi+JVLk8oQ/24wbUghLWBB2j22yY9hKuQ1XTmlpGe7L6h5Rbqrn+4fd
akE8N7yuiW0AqULkCDiZQLDebSqanWEpv4fYMlyknJ0RWSLHkVhKdpZ4eDYb
bY0ExnCU2pnIUUmHz8ULS8tEV7fir7FQmeIpmFS1ni+b60U5v6lHaaE0zaWA
ZzYUSdtq1T2ORXx52XA+reT39+zWXvMvX73sLgxjWC4ASDeck8YxrG9x8Zz6
w/WhJWeuJf+MV2uSQE5HccNQFAT2xHckxWxcdbEcT5rgd9h6EBrVSBVxicGp
+y3miY9i5E4R7GU5ozxF9SkiDVU6VM914zQ7LnQ4U2xApM97MA4rZdS4xZI6
959nYY6T6gdcCQF5WdmN6K4nYQ6KtDcCy+C1GdVvj0Yh5m9uupn1wt+68XM0
f7HbYfml+7+nKhYdi0sRSBikN0YbS78O9s9ofQ/ruMsmraHLHYaVDCGgiOT4
O4kP1yIZW+HBarykYNcvoH0HhGezxJyZMRFmc4kuQ1kacbMUv/1l1M0MaCCe
M/NciP2OWFnEM2u6KEv1DkNvxPjfV4tLWH6ZW1594QSbCFM59V23UPRQvzPk
MUbB6SzHsUCP3Oe31LvJjileWzyAyA+QIZBvZTrlBPOW7fKWJwBCPUzd3uPn
oQx5WmfqceKchkqJ1n/aVI325PDo6fCyXjrnAONVNV9aan0NOBx1XcAtGjqn
jIBLYMELrxwdP4a2Wow6pOcDLcbMnHWLEhuRPJQYDe0+PCouUSRfZdeHT7RF
bODBOEkkCjGBbZkN78gZDr9XKyutp12mtN9wEtg6S999332eCzxjBEZLlJAh
SZVdSU5KlfPds/GjR08RF8AldHd/xF8kxGe9QxqQWonnqZ5aMNIjOw1u7PtB
kFPy1XBXXRQ8LPFsjRhMLDlAFDKuAqnsEUx9oRwt0nLdqEHWx6MSVxSV4sWI
OXIusQ8hcs+sY5/WspH843gola8FU+xipFvuET9cCKEbekuI0j3/QuILhuYw
mxG6kWQOcWKZAht3L61MnDSCNY5RkI2pjuGmwCPNHWBnwuEp5y2XAQ6GIpj7
UGJ893dnb/bQPzKuplQxWb0KL6rr8jLodZNKLeIPN7CSC5SXcIXPXSiXBor9
260+oQH7o5UzppUi4yZ8c2vHkZ4W4AXjSPVH3PG8cmm5//Fv/6v1a1VLUBvV
UrwzuED0bOwAFCmvNZY9geNFhLJgfF+Bg4IJxLXL0aTg3dFuaDXDwNj5ANG6
NZ5dSZZWZPPx/hOz3N6eX3wYPj04GB4/PoEEAgG8qLd9vGVyw8KdfVpyClkY
XDgi04Ib98MbJAsO91QEQon2sxcNhGJ3tazH7rzyb3A/iH0O05uSMvZ2H/BS
LB7X4q+CBgwb7CyzAaXGxjSscqhQQ2grdNAhv7sy8iszUTOp/Df+49/+Z6fc
s3rfaAqjKRsyiZ4hXqaEsKm4wF3rKghEpC1hSmVuWfnEdXqY2Yb3Xhem7cEz
akeRq41fnNhWR93WM1D87sV3BYLqN6+NkTtxxYTZZK3on2ZmfYT2wGwbBQ2m
rGe5kJXPf0Oxu54jBgXFwpzjx6jlvwqtCT0+eQBWS0gnU9aZeVutxg1FXNCw
UcMNucTWpjX5xkP/ddYH5kjwNcJEl4kBvHyhMArBDjFWURV68PgY09QLFQaI
6JM/YlKNZoViTUIpt5KQx4NukOwJcNHNCaTFgda7sLmWkADsByDuyUvd5So1
29Ule+O/k1jfXaVbedQAeg/usFeDv52celW2N6RAsZsLV0XEiQoSXGSQ4IJw
AYUxxYAc7Usl1W8PjskLxdXDNcPL4DFhZifrFgNx6bXnwq1r815Eoi/W01oN
NDFIJ1YyUz7ajGNJHLsX1TX8MuJmZhtp2Lq//Sx/0pP7oQQw6QSLL/V4trg0
Uxool9IulYEcsiWPqMC62l1J2qrUMsIlm0wY4yJk5n71GR8QVVHvxADkdRQO
SosYsZaZQ2IShELxwzfn35yp/FrTXWFVvDvcc0RbwRO2dQ2e3sunkan0LdY4
Juj9gQsKCjbCsjI6vDR/H/XpNM6CQBf5uDPO9dtbatm5bMC/r3J2nSpDtnQ9
mwPX3py62fR3YgS/rRCyaxBj1jBcbNIVSWi1aAXxRahry+WB+2wNZEnrq6wZ
NFdyoBGS3lI21QXY00UbGPsCz7jVfdq9qKwZMlOLl2ZJ0zXqj890hrU06vee
fvDXXNoGbXn/eUmYdAUww7WKaH1GgDk2hqBvgQPYAuZGse1n3yg+fs1V6DJt
0sDbnhVI+I1yVHbSQG/V0bqNdn/pfb5xlv0dHgwphSWMTzTeMWdLsQrSM0VC
SWOQ96QgCpf9aFKGzlj5x/UTz7cxyKP8ENSN42APfYQ83nhzAXAIt0Vbud14
x0ncYaaDfR2Vj9BcEkfp9aH5WM20YAnk2BC1WNQmewBlo5f9+6cGN2g4+1Vc
rW8FowDYibN++Sy5hZRKwHZ3capKhMn3uyWRbb84pOZwlD0BrGyAWE+vO+h3
QvOHIcZxdVuHRq4bYyfGhb9sGokMsY0EjJDX4ix3UWJuwRc6nsPuaqlYn+Yj
xCiH8EvcjsAlM5NeNlR+osL6a6tleA6u7u9qFwXpnb8uY+ln5gG/RdD8ZqZK
urX7yBE3y0mOm7kM+gz6rqtllV1AowNpzjKSnTadlbaW05F2FuWdBu3I6yJc
mN2RYxrRFcdWFlRdLthxkPq48FEzV9ZP+skpIbGwkdgaWZyc0DSr7oJYgcAH
sk0wXjEcmLB3YEvFnNO+aI8rKj0JTyvZu1MQoHwUnnArVndTj8MQTRdLpohu
k+oTJOTEgEE0u5UUVJlD6YXu5NUzlIbxSgdzoDg/eXuSmgJQECmYaeVnAdA1
oNUGI60OZ+dZ8Q4c/pVwdhQ7//Tf8Pi9YGPnn/55xyQmvGf8v3ExI8qNBQ5w
nqkgBTHsbsma/OQNw2adxjyyzBMYApk2PLzvJuV18RzG+766BtTkmgdEJZ6u
wp8xVAGZrjB8rK/2kfPgxuPkU8RjFLqxUAqanfRDO2E2+EuuuNrOKflicTNB
jtTVahJUJU2+aYvd0+b92R7EwzlA6RoS3P3/sP+++s0w+u83vT90/vN//c1X
f4VeF++aluh+/1oAfwLcF+E//AH/8ySS8t9fw5wKHvivv2J/6L8j+QjtYJzf
v6LnQuyYyCrFR2n34b+/sr4X8VDwh65qxVxrh/BX2b//vLWdTdyh/tFt7WTS
dLOP/nrz7PfSV+E3WGoHxMCJd8fNHBf492j2IUpA6qR5bPFnPqotW8FMPkX1
H4TUOGrZHKTWsgN4bauwRi62RdUuVaDIt9ElxTytiwpdjZXdCy3S/LhYh6i0
XD9d+ov4JVOoqNgi8jaXaJMhm3+DOfmabUcV72VgQhycRB6hmGs9aybN9TqH
PSLXgygxpeBUIekXWVY8bhXTB2AIYt220bdpost0qIx0Ry0Ik4Sx2zjee00F
l0KD9fGWA5b2vV4tSH4Kgb3vLrYjGT5y4frkc/z8gygCnqXQhu7/8OJdMcdI
ezK/W7LoT5zjgKGr3ubRjH2bj/aXrUl3/rH/UfuGTy9VP1X71U8bQYftXQl2
ebx6uIeqyVXix5AkiWfsP7a/glO/vkKKEnB/EF0zfoEVZp0u0MmqGXvUNFNL
c0f8DvKrep/VhJWM1SfBJnDmN402AmoP0Jp3ySTRxDiSO3hMcGjOerT9SjXJ
Wq3RJnOPze1qj/ds0Dw09z2XguYt6PhE/vqn222jzLH+OpboXzsI8dAJZPYw
O2+WWZEubouUYouqHK8dy4e43cGyYMupHTXzqivZQMq80dWPMffLZo4S8Vmi
G4o7jYuJH8LkvC12Yb5cWSs9tMauQRyMb/h5fYBeavvfynarrph3mL+f7zvD
FLjAZbvM7VmtSVy4UkZW+AkCOLyVJUD2urkbzps7Hunrpm3XxVsmJ9h9/frt
3n5xRim0LQEUKMOIb6zLahZkIwes+4+SuM6pHpsa+CuADUFjGL4BFeQcLN7s
LIDWMhnwUZL8YAHyahUUKALfPTwDMUYRRYk3akQC0P62IEr+N71fLnbpWqIA
6FvxtHi5GNMjoTq/NwgvyKmXXvZ0MlwdPqKw5aKhrFx13VAMg6tZIBvdPPyN
jhXR06ojj7sj2WyQXbmWiaRwXitktgKRA7KBSeU3dEozmGLKSsst9DnzyYjh
xJKiDckqz0wAtc1kZYZXdp+raas5BmNggltCxJHT0H39EOMUWHPpp0Ta0QG8
1t7IaRMfpFmXWrJ+lpG/57TR7JhYBL8LNsAjqe3KPtmdgUNlwln84LxbgLMG
6p/g1d0iAkcjr3wnQKZIC68J6WzcuLifdz26lFquxtrwPhLZJ4vQuwaks9Jc
t8G4CT05PtBh3KULRMH6ydrxY9p0ayohhbIQkpfImhLzXqJcjY7CLqj2eB2T
uRLPFDhtYG6QSe/w4ECmYT/RsVvaMTqvpfesoO8eVxcKr/AC1DOCMSj1D5YY
q6LCXESH4nzlS7+5Mpd7GPwUYJNU2toFsZxpZz4pFAKEBUYKafRQuUIo6Fu8
wgMKqXtlW7esp/slVtMx8go9i8JjmP0Ka1XKDRDmg3308N1ZxU7WONSUb3rg
Eu6IF+VaqrWUbZGyBiWnD/r/Dm4ZcGxKPus0Ks3dKXoWxtJFcuOQLiuf2Nef
X5yKgBMrcyfAOWlPQvuS74tBl+YjuRgxtciKFKeR0kFy+rAiVl0l1q7L0Bb/
fFdDZKZwupH752qZA7nX7c9WxfC+024QW3O7qpdB4nc07GTL696yALu97tV4
xUMjRs4wA1TgLGjizHHHkCmXLmLHh+bGf6D2aIsyphFPZwYH/bwcfQR6Nh3H
M05mYKsLPL7GfxEN1ckGSiWngjZYI2mdL9jHCBbCrYL6w80nwW82/KAbm45P
SqYlwHg/fbKWmO3Ln0WTjl3ZvRuOCrr31JHnoVN/TSTm9p4UkQv948cvZcqT
ZY52uh1FCHLNFcHb+YQWr98AWcgeLErS9rP8QNfDMRaIKyHZTPqh7uzgvvqO
WP/cttJUDJwuqhD/s3fV1QrBHN2N1WhGlWb7jr3LOfmKlm2vF9iV3j3IRQl/
xW24oVOzNUQbRdGtl5s7k3wWC3aav9VKljYbv/Wfsud0v/Hc/9L9Fsz6nGPW
GffmVGXb/h4u1aKsp5hvwcRLVpNC3AIZny16U5HMl1ghHAjsWVLLVpeoWWQs
FHp94y6WW3pc0aLv67cT0fLMmt2yB1sIXqMmIXglM3qGQZWteCt3PpC46zVd
5XrLmzGDLblYDKiF256axSbEFWup5lhKWnFrQvJdOaRXzGLdHTOhejEBfE0J
nkQM6SgjgWSSvGXyN5FmpMIJ4rF/amJmMccUqBM139TIYPM0bWFw4xCyOmAh
q1sgX6LNaPmF7DSiF+MypWkjn4Z6i8jbj55/qzMbpX19wT4sPeGwsyFqJrJo
WcDa/crC0kWhXMo04ow3S3P2vNSLcLgwkpvL+MR2pMLFQCpjUU7RVpX/jeIW
Wev7gnnpoEy/bHZumJriErGA5XSOlgt8fyD5sThUv1cw7fYLzopDvMMnN1sl
fp7QBx42G/rqReh5FBAIQAgicbV4fjzSm5m9Af1+6o4j7yc6QQgdi1V60dDL
MfdEnDL1jM8u5Wai86FyRA0UB5NKMh7IG7HwDbxjnjzct0kz0a1B5pNvwj4j
uWFkh7J3Ipqe7NQk0Bl2CSMK4jWjTn4IUuUUPRsS7DRXqCCiY0Mc/B3oOdvi
FzQBSP5eyWMDLfka8/PJv6IchpTZgU0n0Y+7TQRdk8htPEG3MXPatug3Zg+5
xC45x5kwCo4YlP1uWEaNOGogAEDqWPhWeBcrJiN+cYEMzuV46xykQLaKiizL
iRBWNKri1rKmKuFdydbBdHUrKf1Ffu8Bz4EFjKt80FhQ3p249+f94kIL/9gA
EtYtwgFaH3uYEpOWQSa8BnAU7GD2Bj6zdKfSEuLhvflcnLvn7wDgMiPFeCIN
sPMsXK3hoaBJcrzokiJuYZSYGI+rnb7j08nZT4khn8V1SSWx0bm2PdA56IDy
gz2idLSThl/mq0BGl7JtdXqHjt5FA2Q6C4Sg1eNmYRSHGuZzqevkyyCp2Ol3
oVXXFcrmwwAfEPva6cWyuSb2HEva5ol20yfOV4/N/Nk97yLtUpP+Qr9M6VYz
9WzxNsI2OkMIl5yEPpvZN83V1Tfjejql3TcNhsi4ZWBbdg3SmA6Rncb7q7CN
iSYuRISFahtE4CVE9nZdKbO2cbIQKQ8AcJfUpKEij9Syfqmzi06FxHhJ4My6
9QVeqO0Con2wGXkDK6c/hEAF1StjFtSxyyrUefGbimEGstGpeLe7gFaXMyB9
2yVABHp1FxxZhX9hgoLI7j0cxwytL1hwUXI7C8Ifhbo/cEQHKIfsEHmWkfN3
t4/Jw0mLtadz6PiCH79u/vDu5C3TBH776NHnz/jPx0dPj0AKvswEIGhOW8X6
QuFTzeMRfyJeuIm8AnQI6G9kgrK7Cf9CyKKlTJbsTzK48BBNmjAAbFviSPiF
CaR8l1hNqVxUhfhMfJblHCqFYk6MFEoi2g1nvoQdB+C9KyViIYjGbQ0McYZp
HrEbk7pMtUz0ggltLJDXr7RKbcX1Ksh04JUcCD6XleKyODo4KKaUSLC4Bd1z
4buKFB9wRMpZBfMbFvZmFc5q63IQTM0wxRgqgoFlFKYHwx8v3L4hUD2cR3Wn
iEAhZH3bQknHvIiI+blDUwjS0fBm9SnIKp8UJmj0sdsavLrf/y5s26ACrACT
Xi0WsLKsMUAuLEf+9DVYgWW5XBEQ10Lok+QO1SD8wKnGOEAJKqL9x9HalHBU
JGQkEnWXJccQe4IVroLFUGKaZKc3qhZAd7IRbkUYaMxO1N34WCs1m8c7tA2E
FQmQN0KYybhcD7EXexyzswHCcjNvvtArbRzdmR0NMhCugJIFl0IfltnmSBiI
y9biqRweQaQRHky79dgAdxMWdho2TwVBNC6K9BNYQ4d8VQXlbeGXUIs6R+uR
LGLRmVShUiIdJTw7WS0bgcyjBkMLdbEO2zScxN3nJ6cXVKhD1lAn/KbC6Nmg
wIJeE2skiB7QyijBDz4Slpemdw4FfsgLSMKt3ZdPQuyXnuMb72erXMlhvJow
ObxXvOaC/02uTMXEx3e8KS1/MxXrvsJRZGJLIXSYX9Z56OgDFgWZR+Aeyswq
upVc8DlOC4skIKw5Cj5/dP+eZB55o66WdyUXSgkG2RR/IN92+6xoN/059G1J
QeD5Arxq/x0jbHKLGmPymItgcaYNYAUomXc7VEluD/KYENG+LpSlVUPSD6hW
KIUxZM+fb+X7qCUhf4GPkFdAfbzUqr4iqDePumw7XKh4S4Kv3GX+0RkYmDKK
LYNPViJeghoqBY3AQlNtKMgXGqHdB57u2Hxle7VNbZ2aymcghww4QDDLIxw0
KSEkurOmU4MPE9My8BrDwicTYv0Bm3o2WovuMi+vSy4EURsuC5424W5ZbESt
ACkaxFrH4RKpv8OQUy3Ug2QJo5UmWLmJtMhuC8VDwkEpZ0sjFZVlQSuXnDHi
JVJkULIZ8I4F/oIBUbjEJMdG9YBjnNfhxylsMbTL0QOIOtxtU49ZvbFbBS7u
zjeZP3FCtdtWc118n5W35iiF+wTg04RFgwJyONvwJrgl0SUpnTV9zPIjt+zj
7aKsUzmFIvPFVVWNL7n6Xp/E4gX/dcWV5rsYDCBcI9Q+ffBZZKhM8+hR8f9G
iZIWz2uJ17qNDI6gM9fgNFOvCOJLvSY9IXBCUN4BxgEHbx8yZRjPZzAOhj0R
RUhsZGEimTugHr6xsBJTFPLlO6XNLf1860TdcwP8faz7qSpy7JvdfnO0pHs9
4+wLe5uBG+SpjhT1cC8s1pTWP0l1GPA1TXQFEHodJJhSpfAmCU9O40MDTjtB
x4EKxVo1u9LCpOKZVM6fUTmnKrvIgBO0vBKKOkXrR6/yRJFqQTpi2Aj/dQVM
rKbm8tWBwoD2LwUa6lnmeyQmKuIqxBgGxMXIXpUElo7r7W+m0aVDSXdrV+HK
LXO8GBgVWGeXwnMsmrIV5cLed7OeTatwAcDNqeLnWZwaX+kT4rn2H+IDgxwY
oEjULVZrQJCo4MzGBkhH8cbRJm2X4h9i9cBX1lVcYFIvbfTfYjJsjymfazV3
L9DkmIzAMMIoySiWAXPbzewaSx/qN1hR/AjcBqiig7NBQC9ReXihIgpiCQ5J
MIMnYWoQvqgJI8J/OVCOfgOxQZmKZtTQvQ7y5F1engTz7c2713sY7mHgfC7P
GPSwMMbiL19Dknb1qZvgJvyUVsIqNHPT3DnMpGtu92VtfksJpOLAaTKXHcTo
S2AG0DI9hBYHwXLX4N5rYUtNK0Tb09feBfOu/kTGJv/qbN6MbphuEjVads1a
F/klyt+Ce0voVEBlZJg5VV9A7i/Ns3KQWOHUEAO0j740wpEylu+mAeHNd03U
I19TXPLCcoAzL4hkXqlxKbDQaZqqKoLLgkscMpcbY5NNKwewZz0bCUaYglZ9
AyKcjZt3UocR3ntASCCdpQet1UtwtwCViqEAEPk/DmnZcDUAgNTBnMZRB4K3
vYSqC8hXKFhVPaAa89fjrhDavvoZjgCIwC3AM2qaDFHtnviDAH6sh0PkBc1v
4mdFvYd5JPSMX5sHB58uDx+QYR9EulKGLso7zzT6W5ovbObIN8Mzn7wO9S44
Mx6BBBCQ4LrwGNg7gJl4fHz88Bi3DiwHKug3BNfyMGOKcuD1KTP0+PD44RGu
UYxXHSDmE6YAuUQYUU555DjOq4Pj0YMwez9QUnMwtqZSFiN3FjivDVrRyhTE
PwLbI0jieYtMR4j7hFOpCrGfG/w+XcBgcgvEiF+zwyIMAxRLRxXTdhBoE0uQ
QhBgaIXiFIbKzUf77R5biKkhSAdlteCmvr4B4BiSPOAc8IXxTTgizS0VxI5Q
PaIec5wn4XhwWQFQwGPGPrQRkmfxJFMSBMQVqplTUJfJ0QbZ0s+2n/B6DMCI
jrlZxuFabtb0kt7hLGVoYvD4W5AIA+RW1iIhDWy7JhBsj/QWIpM5LnoMgj8I
HbQIlsHGnAqpKexkDIOcR3WnPX0Rwxg5/YjbwY2QfpjkGz8PrAYE4bK+dCGu
Syvv6+uRsP9ACgaggodRFogcQpESxFAIrsChoqzQOvLP1nThKs0bzd9Vedss
yg0TuJl3hWuM4c3DVaeljGvJnqwwpkvS0dcU+OJtgqX0+BkmDLEHbeMixBrx
r2gQAZwT5BrjVy6q5ZB4ft4GUX6mW45QLEH3glIxLjUE8M+tihYglf8Et2mN
lyPIUI5cO+Yjs7GS+5wYvypdJmczsDSMj0CK2sE0uBssKDQj0/suLr6T5TQK
w46AOMb0Viq6W4fbV1HO+FzRZJmLKklKOeGv2LHl4B4MT4FXb6ioEwNNRvkO
pd1pI1VNenPfXNoPnXFgTz23MrzfmQNQmVbLm6BI/yvNO7L7q6xGXvglIcPH
g8xswW2uCpS2lP0WGp0kza2irGaDwHscJobfgWsUyI9qcr00l0vCIjGCTbhS
KSi3XzBdlS6CuTDitsPMZebd5hjnl+p/oP+xuXL0r0lb6F3MzYmYcS3mKhnR
GKscfBd2p4fvXBRz1Tg9aLoHcIVYFqZGQtSPCFvWWXltO8XLEn+SOrQQUCHF
vPCFLmGKVXGRMilJwYMRBLUIjBkxSHIdr73+PKcw6O0d7Nva9zk5J0nS51/+
QkoJ3bsLQj6mUyuiw6+FpvG3Kd21wt/KEdJeOgRc0wIkjmosKtdM8QM78QRu
KN0dsncvyG2kXnpx/uH798+Kd6/PTi7Oivdnb77//Vnx4dX5RXFxdvrh/Pu3
lB3we6ACDaswPHwEszU8PC6+lqYPH4UfP4Nn4weOXChwkCRShfxOMO+QyNim
LT6kFh+5Fh+GH7HF98QFNS52Zs24Yv6nHVmgHaYOcSUC9uO3wkYKKyrvMUXb
TrHb3RN7BP5nA82zJOz07sQdHN6OcfnusDcyYr0CO5K54SjW0dte2/P6i2pW
k3J6US3ALYPPAa/mejThLc6axQsEbCClqcRKdp7XC6jsV493lHUOt89XPhHm
jklECewsCdVcB1OJdFIL9R+K74JQDbuRZCu8tqCAPX4K3LgOXoujY5yM+D2C
9A1TshOaHEOB0zXAFc7B6JsSYSgUP0QownuHZdyBPu7oYzSP9iwtw86pEgm+
l+yQi5gkcKcIar8JVE1cuWzGa9pJ4Yw8efzokEJhi2DEDQ2FWo1umiE7A4dQ
wgSx4OjJuq3cIaBxg3NVUcvJuaiB++2WxpYejyM6Hg/d8TgKP36myf9kJmJc
qsQZGEabTKWV/qE4GUP+Qc+cj2zOPX40Wr0fTk8voF/hf9L+HlJ/j1x/D8OP
2N+3DeVvQNRKAwBIw8o9cXuPT/ItMOJ5Yd2TjTmgmq5cDQmnl/HzP5XlOGos
TnpN74b+rX6Ofko+b1EuGTMWql1o2g/N9hRz0WQZhhSxE+djG/Mvk49YU1M6
RMxGUqn0x25NXamLaBPotdNyEpi/CTXpDaOfud2KypCybWuhpIGHskWwfMp6
WtWUEXDl0gvtbRQRkuTQLSu176+UDXV4GLiOoChLOo6EKNHrst+B2xDXcnMJ
YCEZqCBquQav5NdBwoYU4hz6nF5bZZPGXyCKeR/R2n+al5QfpNWTcJGyfNCm
piY76H1Foq2k6o4jqrnTfqzncwr3yHST8TqyIEZDZaCi2M++SZv7S64DkgSH
ThIchB9RErzmqq0dbuhWGDMpXCClVN0WH9fA5jiFfqZnF12Cs0pMIWpCaI96
L/gyXL5cg5piXJI8wvwClW4QuoJZH2/JsS2Hns9NFWwBMGogv4NwmrxGBDOF
Bi7eKt3zyzcugc2VBOj4ocgba55w60W02g+CoPzJiYyfQmsPjAW0IxKRo4IC
cBQ2UPHnH+VgNvzJ1z4DnB056myiZuR9J0Lk2uXWRBRfJnGsIIJP8GNxG0wC
USWgwZ+U17iexdLGE3gmPro4wZBzK5FLUL7OmUqAmAgGG6DCotuiEjIkKsZm
5wb9krSpqjDlc0CBhW/fLW8cucuD3sqWkkaDFmLCXUywUIAwMgOgbjlycoCk
sbAJpwYnsYR6LPQYIm4JzmPUm9EFgZSYULONG42Y5UkUUy7ZVXe54gwjXebc
TQIyKBmscUNjdVf3xZdoBk9kaxKsO6m82Lnqi4r0GEhMMbQ5J747dhGUce4S
3oVghdTC3fsSgXfwLQm8AxN4B9+GHz9HJ/SUTmdxoTsJKnAZU6s7rnFYALsE
brgu5UcSP0BEgUzqi1dSccruUG2qo13cUDKW4UPIP+k137j0H23QZVhPdBgI
R8msmaGLeeFtFLePYVJli3646SX1JhRGtST9SsMmdNBz0SV3TzzgffhTKjrQ
qVOOfyoXi3KtPWDIMHHAI+SATvzx/sFDBa1Jyee4ohjSCNyW9QRRodIgKRbQ
JBcQAPQX+56lLHNtAV2fqM8CaFJ+AjWAjUfQWSgRd8LyFY5d8hU6dM9BXHfh
0IQ/g6/E4pQ/ra07lUgOczpNXAIKr8ri3fnvYYZcbRHn2q0kktgJBGbKn4HP
XXCbUvHXQS56JMqbD+f+JGPMBoq6xXcjCJYpOikjAfU9YxpHmww08CO2dHCi
E/8UT3w4+Hbin4YfP0eXjhaagtBOuYC9SdHAzE1lUgEFa5idkskSE/3uw00E
GrvCVJW0oKgQ6QikFGUeE0EjB+FbpCWXMDySVtufKfrAMEKcw/gy1StDehmu
0PgycUTIcWlU2pQcysbM8PT2f6GUUuIpEGia7K88H89aUFEDIXRsRabM3M3L
6t4dkvH7+AH0ClX/zOL4SEct9jIltzFJ4YQSgKkugNSyF2dKXs25qGAZl5Uf
5zVffGIzAXDPrsVYm9niweh6k+y+jS/xmiS23eOCc6Rj0jk9OGlsZKBYY1Pj
E90u6giR4WslO93i5IZNJ0TNdK4qispQrriDqlj5hd5nXmYqbo9vCLCGY8qE
vd14hH6R7+bgCYmHp048PAk/fnaNVuMuL2u8LvC5TKpxsasVokhbOaeOjOk4
16Li7US7cse9ts8vWk+4NEbHKKOcrwokl75+tJcILC0HXbZGWcCLb8k3sTvC
Wtt/mHZGQ07xK7XAZqpPaB/cKrEhukHrMfOMR/XKOadXEklhL3Se4FbBJlfc
QaaDb6gMSO0Z2WoL9qhyTlc0t+2aecTNwFWM5zzoEdWnm2Aw0qqmLKN3i3I+
LDGTf48gb3mpJp9owzeOcQ4OD/YPeYn9XZS4EJBAQe8XdWG5SeyYLjoanhLS
tyK6AMA71qMh/U9ayTYuhJq2htzViHuO/bseVOzU/agkLjY1a4pH+w/3eYO+
r5iHldzSUsHPobyM7lJFG1r2DijYhl7NhohiDWINgtXa6yc8ByL2seYfXLwS
yHpH8P4ClKSZKyo0SHSmeimakilGYu8owacqSCJNhQzJ+iMb9SLvC3uW1NFL
hA3kSOPsouyWfcEEROqRMiFyIFKk93Ml7g7li0I/gOabQNosuQyuJ80lunCi
OjUGANoMlPAdOr5Xh2B3Of/BoricNKOPQ0oigh1zpX5dV6Q5Vs+uMLzh94yk
/vj+PNnSH2WT3nPi0t2Szkb1075tmWmYPX5DhifoqtBIwrLASLctRdQNnm0J
OLIikr+8NSLtru5IjBW7emGfyf0C60QXApwEJuxokMW4pXBYlFfeVWyszZey
Wc/udX0/puv7ibu+H4cfo1hneQksJxxyqOEeCpOoqlpqq1wRBmVOdW3bvLfq
Ra+v2zs7RbtbwmlYVEPO5HTsMaDsf2/xEPbosIWPaXkUquOPXimhY1fDF2nT
9Qpd2Mwj1uV7skdzQpXpYXwwsLMpXZRAS3+OFuAmo4Tqmpg+MtBV9WmYnYer
T3w3zWzzROJ13D0jHQ66IipiYrycc/JGE60ft9lzMqFdkl48mzBVIjesmgXV
jgyzhk5k2dkr74RL/WXRbqOTIuIypZ+RLoFG5+7Cb0TCfwOLuedcTu5ADbbx
paE0BRdE79JHx+yYjtljd8yOw4+flTgPPUYUI6yE05kw5NsQ1Dlvgfm2OBep
z9yTIx6pG+G0h/OtpsGLdTB9Ebvlz2wmqjEtIe4pIfa0jooCzcXUwqce7R8c
mBsFZhUypKLLIYreNAKjV8+x+D7YF4TASvYljVf0+cqtjGaAdP24J5pbkdnO
zh0WNLpFXd3yGHNGNF5LKWKOUYAMY5xprWvYZhYXiW6axFvB43U6KATvgXrs
Z0h8QrccOHTLwaPw4+eMlouTRY7Rcf3njxliqq7Dttjm/O2YV/GRJhU4s7vS
1z7cNe7wd/Rl0QBZz4/VZ9DE5Z40RA9vwmi/GVRXpH4cldH2HovVc/aJuQ+9
CPWbSV95asJnZ9us7dBe0KJs2si3ZARES0xwowMHNzp4GH50S7y8odyIzHf9
N/O+911f1P0oto9gY1SzsR5WEqM7Qi8HoclRcXb64uJkB2wD/Bfauy35WDre
elUNs581U1pR3KVnzrGjmoNBZCsHdjK7KFs7wVK32e5ciOQc618eMos+JEiO
LFIfL0Ma03wgOqb68OU+jPZ51IWHXV/HjLLNaoedJpM9TDS55aGyhvnnfc4E
A6fiUconXighrq/WEeERKXIh/gfnPXC2orP70w/JIb+pBIZiW8KF8KiK4Noq
kEbaGzs4MMISTrWmTeJBTj75KJUHlasQI5qk+JcJgjNATJklbNWfwr+Qecpx
D/zs3qrPOOneQ7H1JWQSeklseY3xNhAcLb9HH/uTKqD10E41hxZgiCvVwTrH
EOMwqyXhSbLtt0EEEojssfT1lbuL/wxIa+BZgLnNiHe3Q1YzBycWbTmSyul3
j/i7j7rfBfU2nIVvwv9WiSbAugQrDvFcSVMgnGPJu0VkRs18S5sqEs4Edjtw
YLeDo/DjZ+8XVg2M/Mc3ixLFKHuMyAUKrJFysCmTekn8CKFbU2GI7QD6uBS9
6MAR5gSTclhu49E8oaMZHdpU8MlJTX38VpnQG2nOEabwYD4Er8hoOzWjzZ5+
ZNKgszMZ2kmeeQsTGPPxvFwjk0B85jQnZuHoT7jI9DhBCJC2mhzI5LZX6LQ8
cEziAcGf42JHmWqf1zMiCkp9joPiO6V0hbnhYsrv1DDb6cetpa47XwtCOxSO
506CDnUh67Q7G75GUkY1bfeNx8WOjNNQGQIZxszRyuoURypxXSnuMXGGW+tP
ouCJoCJiIFmiubu3n7rNjkc6eTRxAGQq4brGvo26ot6XF7To11Kdvb2BsBAk
5Qm/eQxOoQi/RtxazEVKJQbBTQ8c3PTgMPz42RB/xHSmjChoiBGD2oRrG4Ms
CMbCk6PjoyzQN5ELmG26Q5KRIeASXJHaxeiqnYQ/qDUFf8VHqehh+HFQWKns
yfq3mHyaBmu4vdYanMOx1jbEz0DixgbpqmZolbJOCjnCAfQ4PwiayGmncLxP
0b6PuDTNrtMX1QVgVQ3SA79xxuWJ5ytHMn7yz5R/Rg/lHTBUCJqEhQ15BFDA
w2YijkSMhrIFpNyaPoPP4VDvOTY6HXqzPuGb9cn+Q70fPHVqFqlJbgthpt4N
WjccitDDPU41ZZerIQBrn/TodwxHo2bNQilbwkToaTsBhQO/6SvlNrM+0hsj
BTTDnbNSTe/T1k8L8jLyIma6SmzSSrkWudvBrSm6cexl7jSU//yL/aMBZu+i
IEH5wHwquI7zctJML4NF1c2XUTSms30gt6R9EAEwBWWdR4L3z/pZ2Az0hUz2
QRrFxmheEsZTd2Xi4MsAsTIpCKl0JAjugYPgHhyEHz/7o3oYNkr/YY2DyZIy
DhLPMwRvFUTQ3jMq+ZjzySmyC5Szb2JnWsfbui/tnBSU2x629zS0+K+ioKNx
GPmr0DQXYCCq8yVnidKFdh/Zpd335TEl/OYdnKpgaEd/IN2dlWPVjQ8i/Sr9
qw1zk3R0mXPoMU4QFsZwQuzJEF22N7LXAmTLThDO15V6xeMBXj4JxmuzluKa
MelU7IrpSi3v+RzAe9T2jtEdz3t2MN7zLq+WXOhMj5rr1+nA8/BGVCydiSLx
F3fkRfYOvkyUja1Sah9rp48ghTkoyNe0beEIl/S7cYW/+/zVX56x5KjG/7gz
a3akOg/mmbZU9QTzkWGLfQxCaQGrFwZ2Mm3//f+0QU5fLKur8PNzTEV930yu
iuehW4PitFyAklE8h1HOZoPirP3YFC/qP4fH3oDFMytermaz8FQLdCO/m5Sr
NhiXi+XHYDe8rz9C9apX//6/rycryPt9X49u4De/qyYt3HkvQCt534TRD4r/
Uk+Li/BnAJq/Xo3v6uuw3erlvw6Kd6iC3EKGMCjhy4Zog84W9UdgTQ8dW3xk
18yyyy5E7jaUFzAnxMyV1ijS5QIOHCslSoCV35+/ffv970/UGjut4OocvkUI
8qJBq+30/fmH84uz09/iE6+ODo4O9G8X59+dXwxfAQfC7kskHyqvFxWlHn17
fPT4+GiPXru4+M5eOjt99F24NiEdysIb1/h6+NbhkyDDHx79Vjt1dv5h+KK+
rpdBPrwKug8AgSAgeY45txjGPzn9cP77IOT+L7KjI2YtJgMA

-->

</rfc>
