<?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  (Ruby 3.0.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-group-oscore-profile-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="Group OSCORE Profile of ACE">The Group Object Security for Constrained RESTful Environments (Group OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-group-oscore-profile-10"/>
    <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="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="L." surname="Seitz" fullname="Ludwig Seitz">
      <organization>Combitech</organization>
      <address>
        <postal>
          <street>Djäknegatan 31</street>
          <city>Malmö</city>
          <code>21135 Malmö</code>
          <country>Sweden</country>
        </postal>
        <email>ludwig.seitz@combitech.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>
    <date year="2023" month="March" day="08"/>
    <area>Internet</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. The profile uses Group OSCORE to provide communication security between a Client and a (set of) Resource Server(s) as members of an OSCORE Group. The profile securely binds an OAuth 2.0 Access Token with the public key of the Client associated with the private key used in the OSCORE group. The profile uses Group OSCORE to achieve server authentication, as well as proof-of-possession for the Client's public key. Also, it provides proof of the Client's membership to the OSCORE group, by binding the Access Token to information from the Group OSCORE Security Context, thus allowing the Resource Server(s) to verify the Client's membership upon receiving a message protected with Group OSCORE from the Client.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Constrained RESTful Environments Working Group mailing list (ace@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://gitlab.com/crimson84/draft-tiloca-ace-group-oscore-profile"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>A number of applications rely on a group communication model, where a Client can access a resource shared by multiple Resource Servers at once, e.g., over IP multicast. Typical examples are switching of luminaries, actuators control, and distribution of software updates. Secure communication in the group can be achieved by sharing a set of keying material, which is typically provided upon joining the group.</t>
      <t>For some of such applications, it may be just fine to enforce access control in a straightforward fashion. That is, any Client authorized to join the group, hence to get the group keying material, can be also implicitly authorized to perform any action at any resource of any Server in the group. An example of application where such implicit authorization might be used is a simple lighting scenario, where the lightbulbs are the Servers, while the user account on an app on the user's phone is the Client. In this case, it might be fine to not require additional authorization evidence from any user account, if it is acceptable that any current group member is also authorized to switch on and off any light, or to check their status.</t>
      <t>However, in different instances of such applications, the approach above is not desirable, as different group members are intended to have different access rights to resources of other group members. That is, access control to the secure group communication channel and access control to the resource space provided by servers in the group should remain logically separated domains. For instance, a more fine-grained approach is required in the two following use cases.</t>
      <t>As a first case, an application provides control of smart locks acting as Servers in the group, where: a first type of Client, e.g., a user account of a child, is allowed to only query the status of the smart locks; while a second type of Client, e.g., a user account of a parent, is allowed to both query and change the status of the smart locks. Further similar applications concern the enforcement of different sets of permissions in groups with sensor/actuator devices, e.g., thermostats, acting as Servers. Also, some group members may even be intended as Servers only. Hence, they must be prevented from acting as Clients altogether and from accessing resources at other Servers, especially when attempting to perform non-safe operations.</t>
      <t>As a second case, building automation scenarios often rely on Servers that, under different circumstances, enforce different level of priority for processing received commands. For instance, BACnet deployments consider multiple classes of Clients, e.g., a normal light switch (C1) and an emergency fire panel (C2). Then, a C1 Client is not allowed to override a command from a C2 Client, until the latter relinquishes control at its higher priority. That is: i) only C2 Clients should be able to adjust the minimum required level of priority on the Servers, so rightly locking out C1 Clients if needed; and ii) when a Server is set to accept only high-priority commands, only C2 Clients should be able to perform such commands otherwise allowed also to C1 Clients. Given the different maximum authority of different Clients, fine-grained access control would effectively limit the execution of high- and emergency-priority commands only to devices that are in fact authorized to do so. Besides, it would prevent a misconfigured or compromised device from initiating a high-priority command and lock out normal control.</t>
      <t>In the cases above, being a legitimate group member and storing the group keying material is not supposed to imply any particular access rights. Also, introducing a different security group for each different set of access rights would result in additional keying material to distribute and manage. In particular, if the access rights for a single node change, this would require to evict that node from the current group, followed by that node joining a different group aligned with its new access rights. Moreover, the keying material of both groups would have to be renewed for their current members. Overall, this would have a non negligible impact on operations and performance in the system.</t>
      <t>A fine-grained access control model can be rather enforced within a same group, by using the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. That is, a Client has to first obtain authorization credentials in the form of an Access Token, and post it to the Resource Server(s) in the group before accessing the intended resources.</t>
      <t>The ACE framework delegates to separate profile documents how to secure communications between the Client and the Resource Server. However each of the current profiles of ACE defined in <xref target="RFC9202"/><xref target="RFC9203"/><xref target="I-D.ietf-ace-mqtt-tls-profile"/> admits a single security protocol that cannot be used to protect one-to-many group messages, for example sent over IP multicast.</t>
      <t>This document specifies the "coap_group_oscore" profile of the ACE framework, where a Client uses CoAP <xref target="RFC7252"/> or CoAP for group communication <xref target="I-D.ietf-core-groupcomm-bis"/> to communicate with one or multiple Resource Servers, which are members of an application group and share a common set of resources. This profile uses Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> as the security protocol to protect messages exchanged between the Client and the Resource Servers. Hence, it requires that both the Client and the Resource Servers have previously joined the same OSCORE group.</t>
      <t>That is, this profile describes how access control is enforced for a Client after it has joined an OSCORE group, to access resources at other members in that group. The process for joining the OSCORE group through the respective Group Manager as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> takes place before the process described in this document, and is out of the scope of this profile.</t>
      <t>The Client proves its access to be authorized to the Resource Server by using an Access Token, which is bound to a key (the proof-of-possession key). This profile uses Group OSCORE to achieve server authentication, as well as proof-of-possession for the Client's public key used in the OSCORE group in question. Note that proof-of-possession is not achieved through a dedicated protocol element, but instead after the first message exchange protected with Group OSCORE.</t>
      <t>Furthermore, this profile provides proof of the Client's membership to the OSCORE group, by binding the Access Token to the Client's authentication credential used in the group and including the Client's public key, as well as to information from the pre-established Group OSCORE Security Context. This allows the Resource Server to verify the Client's group membership upon reception of a message protected with Group OSCORE from that Client.</t>
      <t>OSCORE <xref target="RFC8613"/> specifies how to use COSE <xref target="RFC9052"/><xref target="RFC9053"/> to secure CoAP messages. Group OSCORE builds on OSCORE to provide secure group communication, and ensures source authentication: by means of digital signatures embedded in protected messages (in group mode); or by protecting messages with pairwise keying material derived from the asymmetric keys of the two peers exchanging the message (in pairwise mode).</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts related to CBOR <xref target="RFC8949"/>, COSE <xref target="RFC9052"/><xref target="RFC9053"/>, CoAP <xref target="RFC7252"/>, OSCORE <xref target="RFC8613"/> and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>. These especially include:</t>
        <ul spacing="normal">
          <li>Group Manager, as the entity responsible for a set of groups where communications among members are secured with Group OSCORE.</li>
          <li>
            <t>Authentication credential, as the 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"/>.  </t>
            <t>
Members of an OSCORE group have an associated authentication credential in the format used in the group. As per <xref section="2.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, an authentication credential provides 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).</t>
          </li>
        </ul>
        <t>Readers are expected to be familiar with the terms and concepts described in the ACE framework for authentication and authorization <xref target="RFC9200"/>, as well as in the OSCORE profile of ACE <xref target="RFC9203"/>. The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes Client (C), Resource Server (RS), and Authorization Server (AS).</t>
        <t>Note that, unless otherwise indicated, the term "endpoint" is used here following its OAuth definition, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol".</t>
        <t>Additionally, this document makes use of the following terminology.</t>
        <ul spacing="normal">
          <li>Pairwise-only group: an OSCORE group that uses only the pairwise mode of Group OSCORE (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</li>
        </ul>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation, without the tag and value abbreviations.</t>
      </section>
    </section>
    <section anchor="sec-protocol-overview">
      <name>Protocol Overview</name>
      <t>This section provides an overview of this profile, i.e., on how to use the ACE framework for authentication and authorization <xref target="RFC9200"/> to secure communications between a Client and a (set of) Resource Server(s) using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      <t>Note that this profile of ACE describes how access control can be enforced for a node after it has joined an OSCORE group, to access resources at other members in that group.</t>
      <t>In particular, the process for joining the OSCORE group through the respective Group Manager as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> must take place before the process described in this document, and is out of the scope of this profile.</t>
      <t>An overview of the protocol flow for this profile is shown in <xref target="fig-protocol-overview"/>. In the figure, it is assumed that both RS1 and RS2 are associated with the same AS. It is also assumed that C, RS1 and RS2 have previously joined an OSCORE group with Group Identifier (gid) 0xabcd0000, and got assigned Sender ID (sid) 0x00, 0x01 and 0x02 in the group, respectively. The names of messages coincide with those of <xref target="RFC9200"/> when applicable.</t>
      <figure anchor="fig-protocol-overview">
        <name>Protocol Overview.</name>
        <artwork align="center"><![CDATA[
C                            RS1          RS2                        AS
| [--- Resource Request --->] |            |                          |
|                             |            |                          |
| [<----- AS Request -------] |            |                          |
|       Creation Hints        |            |                          |
|                             |            |                          |
|-------- POST /token ----------------------------------------------->|
|  (aud: "RS1", sid: 0x00,    |            |                          |
|   gid: 0xabcd0000, ...)     |            |                          |
|                             |            |                          |
|                             |            |                          |
|<--------------------------------- Access Token + RS Information ----|
|                             |        (aud: "RS1", sid: 0x00,        |
|                             |         gid: 0xabcd0000, ...)         |
|                             |            |                          |
|---- POST /authz-info ------>|            |                          |
|      (access_token)         |            |                          |
|                             |            |                          |
|<--- 2.01 Created -----------|            |                          |
|                             |            |                          |
|-------- POST /token ----------------------------------------------->|
|  (aud: "RS2", sid: 0x00,    |            |                          |
|   gid: 0xabcd0000, ...)     |            |                          |
|                             |            |                          |
|                             |            |                          |
|                             |            |                          |
|<--------------------------------- Access Token + RS Information ----|
|                             |        (aud: "RS2", sid: 0x00,        |
|                             |         gid: 0xabcd0000, ...)         |
|                             |            |                          |
|----- POST /authz-info ------------------>|                          |
|       (access_token)        |            |                          |
|                             |            |                          |
|                             |            |                          |
|<--- 2.01 Created ------------------------|                          |
|                             |            |                          |
|-- Group OSCORE Request -+-->|            |                          |
|    (kid: 0x00,           \  |            |                          |
|     gid: 0xabcd0000)      \------------->|                          |
|                             |            |                          |
|                          /proof-of-possession/                      |
|                             |            |                          |
|                             |            |                          |
|<-- Group OSCORE Response ---|            |                          |
|       (kid: 0x01)           |            |                          |
|                             |            |                          |
/proof-of-possession/         |            |                          |
|                             |            |                          |
/Mutual authentication        |            |                          |
 between C and RS1/           |            |                          |
|                             |            |                          |
|                             |            |                          |
|<-- Group OSCORE Response ----------------|                          |
|       (kid: 0x02)           |            |                          |
|                             |            |                          |
/proof-of-possession/         |            |                          |
|                             |            |                          |
/Mutual authentication        |            |                          |
 between C and RS2/           |            |                          |
|                             |            |                          |
|            ...              |            |                          |
]]></artwork>
      </figure>
      <section anchor="sec-protocol-overview-pre-conditions">
        <name>Pre-Conditions</name>
        <t>Using Group OSCORE and this profile requires both the Client and the Resource Servers to have previously joined the same OSCORE group. This especially includes the derivation of the Group OSCORE Security Context and the assignment of unique Sender IDs to use in the group. Nodes may join the OSCORE group through the respective Group Manager by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, which is also based on ACE.</t>
        <t>After the Client and Resource Servers have joined the group, this profile provides access control for accessing resources on those Resource Servers, by securely communicating with Group OSCORE.</t>
        <t>As a pre-requisite for this profile, the Client has to have successfully joined the OSCORE group where also the Resource Servers (RSs) are members. Depending on the limited information initially available, the Client may have to first discover the exact OSCORE group used by the RSs for the resources of interest, e.g., by using the approach defined in <xref target="I-D.tiloca-core-oscore-discovery"/>.</t>
      </section>
      <section anchor="sec-protocol-overview-token-retrieval">
        <name>Access Token Retrieval</name>
        <t>This profile requires that the Client retrieves an Access Token from the AS for the resource(s) it wants to access on each of the RSs, using the /token endpoint, as specified in <xref section="5.8" sectionFormat="of" target="RFC9200"/>. In a general case, it can be assumed that different RSs are associated with different ASs, even if the RSs are members of a same OSCORE group.</t>
        <t>In the Access Token request to the AS, the Client MUST include the Group Identifier of the OSCORE group and its own Sender ID in that group. The AS MUST specify these pieces of information in the Access Token, included in the Access Token response to the Client.</t>
        <t>Furthermore, in the Access Token request to the AS, the Client MUST also include: its own authentication credential used in the OSCORE group; and a proof-of-possession (PoP) evidence to prove possession of the corresponding private key. The PoP evidence is computed over a PoP input uniquely related to the secure communication association between the Client and the AS. The AS MUST include also the authentication credential indicated by the Client in the Access Token.</t>
        <t>The Access Token request and response MUST be confidentiality-protected and ensure authenticity. In this profile, it is RECOMMENDED to use OSCORE between the Client and the AS, to reduce the number of libraries the client has to support. Other protocols fulfilling the security requirements defined in Sections <xref target="RFC9200" section="5" sectionFormat="bare"/> and <xref target="RFC9200" section="6" sectionFormat="bare"/> of <xref target="RFC9200"/> MAY alternatively be used, such as TLS <xref target="RFC8446"/> or DTLS <xref target="RFC9147"/>.</t>
      </section>
      <section anchor="sec-protocol-overview-token-posting">
        <name>Access Token Posting</name>
        <t>After having retrieved the Access Token from the AS, the Client posts the Access Token to the RS, using the /authz-info endpoint and mechanisms specified in <xref section="5.10" sectionFormat="of" target="RFC9200"/>, as well as Content-Format = application/ace+cbor. When using this profile, the communication with the /authz-info endpoint is not protected.</t>
        <t>If the Access Token is valid, the RS replies to this POST request with a 2.01 (Created) response with Content-Format = application/ace+cbor. Also, the RS associates the received Access Token with the Group OSCORE Security Context identified by the Group Identifier specified in the Access Token, following <xref section="3.2" sectionFormat="of" target="RFC8613"/>. In practice, the RS maintains a collection of Security Contexts with associated authorization information, for all the clients that it is currently communicating with. The authorization information is a policy that is used as input when processing requests from those clients.</t>
        <t>Finally, the RS stores the association between i) the authorization information from the Access Token; and ii) the Group Identifier of the OSCORE group together with the Sender ID and the authentication credential of the Client in that group. This binds the Access Token with the Group OSCORE Security Context of the OSCORE group.</t>
        <t>Finally, when the Client communicates with the RS using the Group OSCORE Security Context, the RS verifies that the Client is a legitimate member of the OSCORE group and especially the exact group member with the same Sender ID associated with the Access Token. This occurs when verifying a request protected with Group OSCORE, since the request includes the Client's Sender ID and either it embeds a signature computed also over that Sender ID (if protected with the group mode), or it is protected by means of pairwise symmetric keying material derived from the asymmetric keys of the two peers (if protected with the pairwise mode).</t>
      </section>
      <section anchor="sec-protocol-overview-communication">
        <name>Secure Communication</name>
        <t>The Client can send a request protected with Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> to the RS. This can be a unicast request addressed to the RS, or a one-to-many group request (e.g., over IP multicast) addressed to the OSCORE group where the RS is also a member. To this end, the Client uses the Group OSCORE Security Context already established upon joining the OSCORE group, e.g., by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. The RS may send a response back to the Client, protecting it by means of the same Group OSCORE Security Context.</t>
      </section>
    </section>
    <section anchor="sec-c-as-comm">
      <name>Client-AS Communication</name>
      <t>This section details the Access Token POST Request that the Client sends to the /token endpoint of the AS, as well as the related Access Token response.</t>
      <t>The Access Token MUST be bound to the public key of the Client as proof-of-possession key (pop-key), which is included in the Client's authentication credential specified in the 'cnf' claim of the Access Token.</t>
      <section anchor="sec-c-as-token-endpoint">
        <name>C-to-AS: POST to Token Endpoint</name>
        <t>The Client-to-AS request is specified in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. The Client MUST send this POST request to the /token endpoint over a secure channel that guarantees authentication, message integrity and confidentiality.</t>
        <t>The POST request is formatted as the analogous Client-to-AS request in the OSCORE profile of ACE (see <xref section="3.1" sectionFormat="of" target="RFC9203"/>), with the following additional parameters that MUST be included in the payload.</t>
        <ul spacing="normal">
          <li>'context_id', defined in <xref target="context_id"/> of this document. This parameter specifies the Group Identifier (GID), i.e., the ID Context of an OSCORE group where the Client and the RS are currently members. In particular, the Client wishes to communicate with the RS using the Group OSCORE Security Context associated with that OSCORE group.</li>
          <li>'salt_input', defined in <xref target="salt_input"/> of this document. This parameter includes the Sender ID that the Client has in the OSCORE group whose GID is specified in the 'context_id' parameter above.</li>
          <li>
            <t>'req_cnf', defined in <xref section="3.1" sectionFormat="of" target="RFC9201"/>. This parameter follows the syntax from <xref section="3.1" sectionFormat="of" target="RFC8747"/>, and its inner confirmation value specifies the authentication credential that the Client uses in the OSCORE group. The public key included in the authentication credential will be used as the pop-key bound to the Access Token.  </t>
            <t>
At the time of writing this specification, acceptable formats of authentication credentials in Group OSCORE 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"/>.  </t>
            <t>
Further formats may be available in the future, and would be acceptable to use as long as they comply with the criteria compiled in <xref section="2.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. In particular, an authentication credential has to explicitly include 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).  </t>
            <t>
[ As to CWTs and CCSs, the CWT Confirmation Methods 'kcwt' and 'kccs' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]  </t>
            <t>
[ As to X.509 certificates, the CWT Confirmation Methods 'x5bag' and '5chain' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]  </t>
            <t>
[ As to C509 certificates, the CWT Confirmation Methods 'c5b'and 'c5c' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]</t>
          </li>
        </ul>
        <t>In addition, the Client computes its proof-of-possession (PoP) evidence, in order to prove to the AS the possession of its own private key used in the OSCORE group. This allows the AS to verify that the Client indeed owns the private key associated with the public key of the authentication credential that the Client allegedly uses in the OSCORE group.</t>
        <t>To this end, the Client MUST use as PoP input the byte representation of a quantity that uniquely represents the secure communication association between the Client and the AS. It is RECOMMENDED that the Client considers the following as PoP input.</t>
        <ul spacing="normal">
          <li>If the Client and the AS communicate over (D)TLS, the PoP input is an exporter value computed as defined in <xref section="7.5" sectionFormat="of" target="RFC8446"/>. In particular, the exporter label MUST be 'EXPORTER-ACE-Sign-Challenge-Client-AS' defined in <xref target="iana-tls-exporter-label"/> of this document, together with an empty 'context_value', and 32 bytes as 'key_length'.</li>
          <li>
            <t>If the Client and the AS communicate over OSCORE, the PoP input is the output PRK of a HKDF-Extract step <xref target="RFC5869"/>, i.e., PRK = HMAC-Hash(salt, IKM). In particular, 'salt' takes (x1 | x2), where x1 is the ID Context of the OSCORE Security Context between the Client and the AS, x2 is the Sender ID of the Client in that Security Context, and | denotes byte string concatenation. Also, 'IKM' is the OSCORE Master Secret of the OSCORE Security Context between the Client and the AS.  </t>
            <t>
The HKDF MUST be one of the HMAC-based HKDF <xref target="RFC5869"/> algorithms defined for COSE <xref target="RFC9053"/>. The Client and AS may agree on the HKDF algorithm to use during the Client's registration at the AS. HKDF SHA-256 is mandatory to implement.</t>
          </li>
        </ul>
        <t>Then, the Client computes the PoP evidence as follows.</t>
        <ul spacing="normal">
          <li>If the OSCORE group is not a pairwise-only group, the PoP evidence MUST be a signature. The Client computes the signature by using the same private key and signature algorithm it uses for signing messages in the OSCORE group. The Client's private key is the one associated with the Client's authentication credential used in the OSCORE group and specified in the 'req_cnf' parameter above.</li>
          <li>
            <t>If the OSCORE group is a pairwise-only group, the PoP evidence MUST be a MAC computed as follows, by using the HKDF Algorithm HKDF SHA-256, which consists of composing the HKDF-Extract and HKDF-Expand steps <xref target="RFC5869"/>.  </t>
            <t>
MAC = 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 empty byte string.</li>
              <li>
                <t>IKM is computed as a cofactor Diffie-Hellman shared secret, see Section 5.7.1.2 of <xref target="NIST-800-56A"/>, using an ECDH algorithm pre-agreed between Client and AS. The Client uses its own Diffie-Hellman private key and the Diffie-Hellman public key of the AS. For X25519 and X448, the procedure is described in <xref section="5" sectionFormat="of" target="RFC7748"/>.      </t>
                <t>
The Client's private key is the one associated with the Client's authentication credential used in the OSCORE group and specified in the 'req_cnf' parameter above. The Client may obtain the Diffie-Hellman public key of the AS during its registration process at the AS.      </t>
                <t>
The Client and AS may agree on the ECDH algorithm to use during the Client's registration at the AS. The ECDH-SS + HKDF-256 algorithm specified in <xref section="6.3.1" sectionFormat="of" target="RFC9053"/> is mandatory to implement.</t>
              </li>
              <li>info takes as value the PoP input.</li>
              <li>L is equal to 8, i.e., the size of the MAC, in bytes.</li>
            </ul>
          </li>
        </ul>
        <t>Finally, the Client MUST include one of the two following parameters in the payload of the POST request to the AS.</t>
        <ul spacing="normal">
          <li>'client_cred_verify', defined in <xref target="client_cred_verify"/> of this document, specifying the Client's PoP evidence as a signature, which is computed as defined above. This parameter MUST be included if and only if the OSCORE group is not a pairwise-only group.</li>
          <li>'client_cred_verify_mac', defined in <xref target="client_cred_verify_mac"/> of this document, specifying the Client's PoP evidence as a MAC, which is computed as defined above. This parameter MUST be included if and only if the OSCORE group is a pairwise-only group.</li>
        </ul>
        <t>An example of such a request is shown in <xref target="fig-example-C-to-AS-symm"/>.</t>
        <figure anchor="fig-example-C-to-AS-symm">
          <name>Example C-to-AS POST /token request for an Access Token bound to an asymmetric key.</name>
          <artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "as.example.com"
Uri-Path: "token"
Content-Format: "application/ace+cbor"
Payload:
{
  "audience" : "tempSensor4711",
  "scope" : "read",
  "context_id" : h'abcd0000',
  "salt_input" : h'00',
  "req_cnf" : {
    "kccs" : {
      "sub" : "42-50-31-FF-EF-37-32-39",
      "cnf" : {
        "COSE_Key" : {
          "kty" : 2,
          "crv" : 1,
          "x" : h'd7cc072de2205bdc1537a543d53c60a6
                  acb62eccd890c7fa27c9e354089bbe13',
          "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
                  b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  },
  "client_cred_verify" : h'...'
   (signature content omitted for brevity)
}
]]></artwork>
        </figure>
        <t>In the example above, the Client specifies that its authentication credential in the OSCORE group is the CCS shown in <xref target="fig-client-auth-cred"/>.</t>
        <figure anchor="fig-client-auth-cred">
          <name>Example of Client Authentication Credential as CWT Claims Set (CCS).</name>
          <artwork><![CDATA[
{
  "sub" : "42-50-31-FF-EF-37-32-39",
  "cnf" : {
    "COSE_Key" : {
      "kty" : 2,
      "crv" : 1,
      "x" : h'd7cc072de2205bdc1537a543d53c60a6
              acb62eccd890c7fa27c9e354089bbe13',
      "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
              b725d535e515d020731e79a3b4e47120'
    }
  }
}
]]></artwork>
        </figure>
        <section anchor="context_id">
          <name>'context_id' Parameter</name>
          <t>The 'context_id' parameter is an OPTIONAL parameter of the Access Token request message defined in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. This parameter provides a value that the Client wishes to use with the RS as a hint for a security context. Its exact content is profile specific.</t>
        </section>
        <section anchor="salt_input">
          <name>'salt_input' Parameter</name>
          <t>The 'salt_input' parameter is an OPTIONAL parameter of the Access Token request message defined in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. This parameter provides a value that the Client wishes to use as part of a salt with the RS, for deriving cryptographic keying material. Its exact content is profile specific.</t>
        </section>
        <section anchor="client_cred_verify">
          <name>'client_cred_verify' Parameter</name>
          <t>The 'client_cred_verify' parameter is an OPTIONAL parameter of the Access Token request message defined in <xref section="5.8.1." sectionFormat="of" target="RFC9200"/>. This parameter provides a signature computed by the Client to prove the possession of its own private key.</t>
        </section>
        <section anchor="client_cred_verify_mac">
          <name>'client_cred_verify_mac' Parameter</name>
          <t>The 'client_cred_verify_mac' parameter is an OPTIONAL parameter of the Access Token request message defined in <xref section="5.8.1." sectionFormat="of" target="RFC9200"/>. This parameter provides a Message Authentication Code (MAC) computed by the Client to prove the possession of its own private key.</t>
        </section>
      </section>
      <section anchor="sec-as-c-token">
        <name>AS-to-C: Access Token</name>
        <t>After having verified the POST request to the /token endpoint and that the Client is authorized to obtain an Access Token corresponding to its Access Token request, the AS MUST verify the proof-of-possession (PoP) evidence. In particular, the AS proceeds as follows.</t>
        <ul spacing="normal">
          <li>As PoP input, the AS uses the same value considered by the Client in <xref target="sec-c-as-token-endpoint"/>.</li>
          <li>As public key of the Client, the AS uses the one included in the authentication credential specified in the 'req_cnf' parameter of the Access Token request.</li>
          <li>If the Access Token request includes the 'client_cred_verify' parameter, this specifies the PoP evidence as a signature. Then, the AS verifies the signature by using the public key of the Client.</li>
          <li>
            <t>If the Access Token request includes the 'client_cred_verify_mac' parameter, this specifies the PoP evidence as a Message Authentication Code (MAC).  </t>
            <t>
Then, the AS recomputes the MAC through the same process taken by the Client when preparing the value of the 'client_cred_verify_mac' parameter for the Access Token (see <xref target="sec-c-as-token-endpoint"/>), with the difference that the AS uses its own Diffie-Hellman private key and the Diffie-Hellman public key of the Client. The verification succeeds if and only if the recomputed MAC is equal to the MAC conveyed as PoP evidence in the Access Token request.</t>
          </li>
        </ul>
        <t>If both the 'client_cred_verify' and 'client_cred_verify_mac' parameters are present, or if the verification of the PoP evidence fails, the AS considers the Client request invalid.</t>
        <t>If the Client request was invalid, or not authorized, the AS returns an error response as described in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
        <t>If all verifications are successful, the AS responds as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>. In particular:</t>
        <ul spacing="normal">
          <li>The AS can signal that the use of Group OSCORE is REQUIRED for a specific Access Token by including the 'ace_profile' parameter with the value "coap_group_oscore" in the Access Token response. The Client MUST use Group OSCORE towards all the Resource Servers for which this Access Token is valid. Usually, it is assumed that constrained devices will be pre-configured with the necessary profile, so that this kind of profile signaling can be omitted.</li>
          <li>The AS MUST NOT include the 'rs_cnf' parameter defined in <xref target="RFC9201"/>. In general, the AS may not be aware of the authentication credentials (and public keys included thereof) that the RSs use in the OSCORE group. Also, the Client is able to retrieve the authentication credentials of other group members from the responsible Group Manager, both upon joining the group or later on as a group member, as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</li>
        </ul>
        <t>The AS MUST include the following information as metadata of the issued Access Token. The use of CBOR web tokens (CWT) as specified in <xref target="RFC8392"/> is RECOMMENDED.</t>
        <ul spacing="normal">
          <li>The profile "coap_group_oscore". If the Access Token is a CWT, this is placed in the 'ace_profile' claim of the Access Token, as per <xref section="5.10" sectionFormat="of" target="RFC9200"/>.</li>
          <li>The salt input specified in the 'salt_input' parameter of the Token Request. If the Access Token is a CWT, the content of the 'salt_input' parameter MUST be placed in the 'salt_input' claim of the Access Token, defined in <xref target="salt_input_claim"/> of this document.</li>
          <li>The Context Id input specified in the 'context_id' parameter of the Token Request. If the Access Token is a CWT, the content of the 'context_id' parameter MUST be placed in the 'contextId_input' claim of the Access Token, defined in <xref target="contextId_input_claim"/> of this document.</li>
          <li>
            <t>The authentication credential that the client uses in the OSCORE group and specified in the 'req_cnf' parameter of the Token request.  </t>
            <t>
If the Access Token is a CWT, the Client's authentication credential MUST be specified in the 'cnf' claim, which follows the syntax from <xref section="3.1" sectionFormat="of" target="RFC8747"/>. In particular, the 'cnf' claim includes the same authentication credential specified in the 'req_cnf' parameter of the Token Request (see <xref target="sec-c-as-token-endpoint"/>).</t>
          </li>
        </ul>
        <t><xref target="fig-example-AS-to-C"/> shows an example of such an AS response. The access token has been truncated for readability.</t>
        <figure anchor="fig-example-AS-to-C">
          <name>Example AS-to-C Access Token response with the Group OSCORE profile.</name>
          <artwork><![CDATA[
Header: Created (Code=2.01)
Content-Type: "application/ace+cbor"
Payload:
{
  "access_token" : h'8343a1010aa2044c53 ...'
   (remainder of CWT omitted for brevity),
  "ace_profile" : "coap_group_oscore",
  "expires_in" : 3600
}
]]></artwork>
        </figure>
        <t><xref target="fig-example-AS-to-C-CWT"/> shows an example CWT Claims Set, containing the Client's public key in the group (as pop-key), as specified by the inner confirmation value in the 'cnf' claim.</t>
        <figure anchor="fig-example-AS-to-C-CWT">
          <name>Example CWT Claims Set with OSCORE parameters.</name>
          <artwork><![CDATA[
{
  "aud" : "tempSensorInLivingRoom",
  "iat" : "1360189224",
  "exp" : "1360289224",
  "scope" :  "temperature_g firmware_p",
  "cnf" : {
    "kccs" : {
      "sub" : "42-50-31-FF-EF-37-32-39",
      "cnf" : {
        "COSE_Key" : {
          "kty" : 2,
          "crv" : 1,
          "x" : h'd7cc072de2205bdc1537a543d53c60a6
                  acb62eccd890c7fa27c9e354089bbe13',
          "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
                  b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  "salt_input" : h'00',
  "contextId_input" : h'abcd0000'
}
]]></artwork>
        </figure>
        <t>The same CWT Claims Set as in <xref target="fig-example-AS-to-C-CWT"/> and encoded in CBOR is shown in <xref target="fig-example-AS-to-C-CWT-encoding"/>, using the value abbreviations defined in <xref target="RFC9200"/> and <xref target="RFC8747"/>. The bytes in hexadecimal are reported in the first column, while their corresponding CBOR meaning is reported after the "#" sign on the second column, for easiness of readability.</t>
        <t>NOTE: it should be checked (and in case fixed) that the values used below (which are not yet registered) are the final values registered by IANA.</t>
        <figure anchor="fig-example-AS-to-C-CWT-encoding">
          <name>Example CWT Claims Set with OSCORE parameters, CBOR encoded.</name>
          <artwork><![CDATA[
A7                                      # map(7)
   03                                   # unsigned(3)
   76                                   # text(22)
      74656D7053656E736F72496E4C6976696E67526F6F6D
      # "tempSensorInLivingRoom"
   06                                   # unsigned(6)
   1A 5112D728                          # unsigned(1360189224)
   04                                   # unsigned(4)
   1A 51145DC8                          # unsigned(1360289224)
   09                                   # unsigned(9)
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70
      # "temperature_g firmware_p"
   08                                   # unsigned(8)
   A1                                   # map(1)
      05                                # unsigned(5)
      A2                                # map(2)
         02                             # unsigned(2)
         77                             # text(23)
            34322D35302D33312D46462D45462D33372D33322D3339
            # "42-50-31-FF-EF-37-32-39"
         08                             # unsigned(8)
         A1                             # map(1)
            01                          # unsigned(1)
            A4                          # map(4)
               01                       # unsigned(1)
               02                       # unsigned(2)
               20                       # negative(0)
               01                       # unsigned(1)
               21                       # negative(1)
               58 20                    # bytes(32)
                  D7CC072DE2205BDC1537A543D53C60A6
                  ACB62ECCD890C7FA27C9E354089BBE13
               22                       # negative(2)
               58 20                    # bytes(32)
                  F95E1D4B851A2CC80FFF87D8E23F22AF
                  B725D535E515D020731E79A3B4E47120
   18 3C                                # unsigned(60)
   41                                   # bytes(1)
      00
   18 3D                                # unsigned(61)
   44                                   # bytes(4)
      ABCD0000
]]></artwork>
        </figure>
        <section anchor="salt_input_claim">
          <name>Salt Input Claim</name>
          <t>The 'salt_input' claim provides a value that the Client requesting the Access Token wishes to use as a part of a salt with the RS, e.g., for deriving cryptographic material.</t>
          <t>This parameter specifies the value of the salt input, encoded as a CBOR byte string.</t>
        </section>
        <section anchor="contextId_input_claim">
          <name>Context ID Input Claim</name>
          <t>The 'contextId_input' claim provides a value that the Client requesting the Access Token wishes to use with the RS, as a hint for a security context.</t>
          <t>This parameter specifies the value of the Context ID input, encoded as a CBOR byte string.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-c-rs-comm">
      <name>Client-RS Communication</name>
      <t>This section details the POST request and response to the /authz-info endpoint between the Client and the RS.</t>
      <t>The proof-of-possession required to bind the Access Token to the Client is explicitly performed when the RS receives and verifies a request from the Client protected with Group OSCORE, either with the group mode (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) or with the pairwise mode (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>In particular, the RS uses the Client's public key bound to the Access Token, either when verifying the signature of the request (if protected with the group mode), or when verifying the request as integrity-protected with pairwise keying material derived from the two peers' authentication credentials and asymmetric keys (if protected with the pairwise mode). In either case, the RS also authenticates the Client.</t>
      <t>Similarly, when receiving a protected response from the RS, the Client uses the RS's public key either when verifying the signature of the response (if protected with the group mode), or when verifying the response as integrity-protected with pairwise keying material derived from the two peers' authentication credentials and asymmetric keys (if protected with the pairwise mode). In either case, the Client also authenticates the RS. Mutual authentication is only achieved after the client has successfully verified the protected response from the RS.</t>
      <t>Therefore, an attacker using a stolen Access Token cannot generate a valid Group OSCORE message as protected through the Client's private key, and thus cannot prove possession of the pop-key bound to the Access Token. Also, if a Client legitimately owns an Access Token but has not joined the OSCORE group, it cannot generate a valid Group OSCORE message, as it does not store the necessary keying material shared among the group members.</t>
      <t>Furthermore, a Client C1 is supposed to obtain a valid Access Token from the AS, as specifying the Client's authentication credential (and the public key included thereof) associated with the Client's private key used in the OSCORE group, together with its own Sender ID in that OSCORE group (see <xref target="sec-c-as-token-endpoint"/>). This allows the RS receiving an Access Token to verify with the Group Manager of that OSCORE group whether such a Client indeed has that Sender ID and uses that authentication credential in the OSCORE group.</t>
      <t>As a consequence, a different Client C2, also member of the same OSCORE group, is not able to impersonate C1, by: i) getting a valid Access Token, specifying the Sender ID of C1 and a different (made-up) authentication credential; ii) successfully posting the Access Token to RS; and then iii) attempting to communicate using Group OSCORE impersonating C1, while blaming C1 for the consequences.</t>
      <section anchor="sec-c-rs-authz">
        <name>C-to-RS POST to authz-info Endpoint</name>
        <t>The Client posts the Access Token to the /authz-info endpoint of the RS, as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>.</t>
      </section>
      <section anchor="sec-rs-c-created">
        <name>RS-to-C: 2.01 (Created)</name>
        <t>The RS MUST verify the validity of the Access Token as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>, with the following additions.</t>
        <ul spacing="normal">
          <li>The RS MUST check that the claims 'salt_input', 'contextId_input' and 'cnf' are included in the Access Token.</li>
          <li>
            <t>The RS considers: the content of the 'contextId_input' claim as the GID of the OSCORE group; the content of the 'salt_input' claim as the Sender ID that the Client has in the group; and the inner confirmation value of 'cnf' claim as the authentication credential that the Client uses in the group.  </t>
            <t>
The RS MUST check whether it already stores the authentication credential specified in the inner confirmation value of the 'cnf' claim as associated with the pair (GID, Sender ID) above.  </t>
            <t>
If this is not the case, the RS MUST request the Client's authentication credential to the Group Manager of the OSCORE group as described in <xref section="9.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, specifying the Client's Sender ID in the OSCORE group, i.e., the value of the 'salt_input' claim. Then, the RS performs the following actions.  </t>
            <ul spacing="normal">
              <li>The RS MUST check whether the Client's authentication credential retrieved from the Group Manager matches the one retrieved from the inner confirmation value of the 'cnf' claim of the Access Token.</li>
              <li>The RS MUST check that the Client's Sender ID provided by the Group Manager together with the Client's authentication credential matches the one retrieved from the 'salt_input' claim of the Access Token.</li>
            </ul>
          </li>
        </ul>
        <t>If any of the checks above fails, the RS MUST consider the Access Token non valid, and MUST respond to the Client with an error response code equivalent to the CoAP code 4.00 (Bad Request).</t>
        <t>If the Access Token is valid and further checks on its content are successful, the RS associates the authorization information from the Access Token with the Group OSCORE Security Context.</t>
        <t>In particular, the RS associates the authorization information from the Access Token with the 3-tuple (GID, SaltInput, AuthCred), where GID is the Group Identifier of the OSCORE Group, while SaltInput and AuthCred are the Sender ID and the authentication credential that the Client uses in that OSCORE group, respectively.</t>
        <t>The RS MUST keep this association up-to-date over time, as the 3-tuple (GID, SaltInput, AuthCred) associated with the Access Token might change. In particular:</t>
        <ul spacing="normal">
          <li>If the OSCORE group is rekeyed (see <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and <xref section="11" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the Group Identifier also changes in the group, and the new one replaces the current 'GID' value in the 3-tuple.</li>
          <li>If the Client requests and obtains a new OSCORE Sender ID from the Group Manager (see <xref section="2.5.3.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and <xref section="9.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the new Sender ID replaces the current 'SaltInput' value in the 3-tuple.</li>
        </ul>
        <t>Finally, the RS MUST send a 2.01 (Created) response to the Client, as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>.</t>
      </section>
      <section anchor="sec-client-rs-secure-communication">
        <name>Client-RS Secure Communication</name>
        <t>When previously joining the OSCORE group, both the Client and RS have already established the related Group OSCORE Security Context to communicate as group members. Therefore, they can simply start to securely communicate using Group OSCORE, without deriving any additional keying material or security association.</t>
        <section anchor="client-side">
          <name>Client Side</name>
          <t>After having received the 2.01 (Created) response from the RS, following the POST request to the authz-info endpoint, the Client starts the communication with the RS, by sending a request protected with Group OSCORE using the Group OSCORE Security Context <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
          <t>When communicating with the RS to access the resources as specified by the authorization information, the Client MUST use the Group OSCORE Security Context of the OSCORE group, whose GID was specified in the 'context_id' parameter of the Token request.</t>
        </section>
        <section anchor="resource-server-side">
          <name>Resource Server Side</name>
          <t>After successful validation of the Access Token as defined in <xref target="sec-rs-c-created"/> and after having sent the 2.01 (Created) response, the RS can start to communicate with the Client using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
          <t>When processing an incoming request protected with Group OSCORE, the RS MUST consider as valid Client's authentication credential only the one associated to the stored Access Token. As defined in <xref target="sec-client-public-key-change"/>, a possible change of authentication credential requires the Client to upload to the RS a new Access Token bound to the new authentication credential.</t>
          <t>Additionally, for every incoming request, if Group OSCORE verification succeeds, the verification of access rights is performed as described in <xref target="sec-c-rs-access-rights"/>.</t>
          <t>After the expiration of the Access Token related to a Group OSCORE Security Context, if the Client uses the Group OSCORE Security Context to send a request for any resource intended for OSCORE group members and that requires an active Access Token, the RS MUST respond with a 4.01 (Unauthorized) error message protected with the Group OSCORE Security Context.</t>
        </section>
      </section>
      <section anchor="sec-c-rs-access-rights">
        <name>Access Rights Verification</name>
        <t>The RS MUST follow the procedures defined in <xref section="5.10.2" sectionFormat="of" target="RFC9200"/>. If an RS receives a Group OSCORE-protected request from a Client, the RS processes it according to <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>If the Group OSCORE verification succeeds, and the target resource requires authorization, the RS retrieves the authorization information from the Access Token associated with the Group OSCORE Security Context. Then, the RS MUST verify that the action requested on the resource is authorized.</t>
        <t>The response code MUST be 4.01 (Unauthorized) if the RS has no valid Access Token for the Client. If the RS has an Access Token for the Client but no actions are authorized on the target resource, the RS MUST reject the request with a 4.03 (Forbidden). If the RS has an Access Token for the Client but the requested action is not authorized, the RS MUST reject the request with a 4.05 (Method Not Allowed).</t>
      </section>
      <section anchor="sec-client-public-key-change">
        <name>Change of Client's Authentication Credential in the Group</name>
        <t>During its membership in the OSCORE group, the client might change the authentication credential it uses in the group. When this happens, the Client uploads the new authentication credential to the Group Manager, as defined in <xref section="9.4" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
        <t>After that, and in order to continue communicating with the RS, the Client MUST perform the following actions.</t>
        <ol spacing="normal" type="1"><li>
            <t>The Client requests a new Access Token to the AS, as defined in <xref target="sec-c-as-comm"/>. In particular, when sending the POST request as defined in <xref target="sec-c-as-token-endpoint"/>, the Client indicates:  </t>
            <ul spacing="normal">
              <li>The current Group Identifier of the OSCORE group, as value of the 'context_id' parameter.</li>
              <li>The current Sender ID it has in the OSCORE group, as value of the 'salt_input' parameter.</li>
              <li>The new authentication credential it uses in the OSCORE group, as inner confirmation value of the 'req_cnf' parameter.</li>
              <li>The proof-of-possession (PoP) evidence corresponding to the public key of the new authentication credential, as value of the 'client_cred_verify' or 'client_cred_verify_mac' parameter.</li>
            </ul>
          </li>
          <li>After receiving the response from the AS (see <xref target="sec-as-c-token"/>), the Client performs the same exchanges with the RS as defined in <xref target="sec-c-rs-comm"/>.</li>
        </ol>
        <t>When receiving the new Access Token, the RS performs the same steps defined in <xref target="sec-rs-c-created"/>, with the following addition, in case the new Access Token is successfully verified and stored. The RS also deletes the old Access Token, i.e., the one whose associated 3-tuple has the same GID and SaltInput values as in the 3-tuple including the new authentication credential of the Client and associated with the new Access Token.</t>
      </section>
    </section>
    <section anchor="sec-comm-as">
      <name>Secure Communication with the AS</name>
      <t>As specified in the ACE framework (see Sections <xref target="RFC9200" section="5.8" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9" sectionFormat="bare"/> of <xref target="RFC9200"/>), the requesting entity (RS and/or Client) and the AS communicate via the /token or /introspection endpoint. The use of CoAP and OSCORE <xref target="RFC8613"/> for this communication is RECOMMENDED in this profile. Other protocols fulfilling the security requirements defined in Sections <xref target="RFC9200" section="5" sectionFormat="bare"/> and <xref target="RFC9200" section="6" sectionFormat="bare"/> of <xref target="RFC9200"/> (such as HTTP and DTLS or TLS) MAY be used instead.</t>
      <t>If OSCORE <xref target="RFC8613"/> is used, the requesting entity and the AS are expected to have a pre-established Security Context in place. How this Security Context is established is out of the scope of this profile. Furthermore, the requesting entity and the AS communicate using OSCORE through the /introspection endpoint as specified in <xref section="5.9" sectionFormat="of" target="RFC9200"/>, and through the /token endpoint as specified in <xref section="5.8" sectionFormat="of" target="RFC9200"/>.</t>
    </section>
    <section anchor="sec-discard-context">
      <name>Discarding the Security Context</name>
      <t>As members of an OSCORE group, the Client and the RS may independently leave the group or be forced to, e.g., if compromised or suspected so. Upon leaving the OSCORE group, the Client or RS also discards the Group OSCORE Security Context, which may anyway be renewed by the Group Manager through a group rekeying process (see <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>The Client or RS can acquire a new Group OSCORE Security Context, by re-joining the OSCORE group, e.g., by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. In such a case, the Client SHOULD request a new Access Token and post it to the RS.</t>
    </section>
    <section anchor="sec-cbor-mappings">
      <name>CBOR Mappings</name>
      <t>The new parameters defined in this document MUST be mapped to CBOR types as specified in <xref target="fig-cbor-mappings-parameters"/>, using the given integer abbreviation for the map key.</t>
      <figure anchor="fig-cbor-mappings-parameters">
        <name>CBOR mappings for new parameters.</name>
        <artwork align="center"><![CDATA[
+------------------------+----------+------------+
| Parameter name         | CBOR Key | Value Type |
+------------------------+----------+------------+
| context_id             | TBD      | bstr       |
| salt_input             | TBD      | bstr       |
| client_cred_verify     | TBD      | bstr       |
| client_cred_verify_mac | TBD      | bstr       |
+------------------------+----------+------------+
]]></artwork>
      </figure>
      <t>The new claims defined in this document MUST be mapped to CBOR types as specified in <xref target="fig-cbor-mappings-claims"/>, using the given integer abbreviation for the map key.</t>
      <figure anchor="fig-cbor-mappings-claims">
        <name>CBOR mappings for new claims.</name>
        <artwork align="center"><![CDATA[
+-----------------+----------+------------+
| Claim name      | CBOR Key | Value Type |
+-----------------+----------+------------+
| salt_input      | TBD      | bstr       |
| contextId_input | TBD      | bstr       |
+-----------------+----------+------------+
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus, the general security considerations from the ACE framework also apply to this profile.</t>
      <t>The proof-of-possession (PoP) key bound to an Access Token is always an asymmetric key, i.e., the public key included in the authentication credential that the Client uses in the OSCORE group. This means that there is never a same shared secret used as PoP key with possible multiple RSs. Therefore, it is possible and safe for the AS to issue an Access Token whose audience comprises multiple RSs.</t>
      <t>In such a case, as per <xref section="6.1" sectionFormat="of" target="RFC9200"/>, the AS has to ensure the integrity protection of the Access Token by protecting it through an asymmetric signature. In addition, the used audience has to correctly identify all the RSs that are intended recipients of the Access Token. As a particular case, the audience can be the name of the OSCORE group, if the Access Token is intended to all the RSs in that group.</t>
      <t>Furthermore, this document inherits the general security considerations about Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>, as to the specific use of Group OSCORE according to this profile.</t>
      <t>Group OSCORE is designed to secure point-to-point as well as point-to-multipoint communications, providing a secure binding between a single request and multiple corresponding responses. In particular, Group OSCORE fulfills the same security requirements of OSCORE, for group requests and responses.</t>
      <t>Group OSCORE ensures source authentication of messages both in group mode (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) and in pairwise mode (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>When protecting an outgoing message in group mode, the sender uses its private key to compute a digital signature, which is embedded in the protected message. The group mode can be used to protect messages sent to multiple recipients (e.g., over IP multicast) or to a single recipient.</t>
      <t>When protecting an outgoing message in pairwise mode, the sender uses a pairwise symmetric key, as derived from the asymmetric keys of the two peers exchanging the message. The pairwise mode can be used to protect only messages intended to a single recipient.</t>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus the general privacy considerations from the ACE framework also apply to this profile.</t>
      <t>As this profile uses Group OSCORE, the privacy considerations from <xref target="I-D.ietf-core-oscore-groupcomm"/> apply to this document as well.</t>
      <t>An unprotected response to an unauthorized request may disclose information about the RS and/or its existing relationship with the Client. It is advisable to include as little information as possible in an unencrypted response. However, since both the Client and the RS share a Group OSCORE Security Context, unauthorized, yet protected requests are followed by protected responses, which can thus include more detailed information.</t>
      <t>Although it may be encrypted, the Access Token is sent in the clear to the /authz-info endpoint at the RS. Thus, if the Client uses the same single Access Token from multiple locations with multiple Resource Servers, it can risk being tracked through the Access Token's value.</t>
      <t>Note that, even though communications are protected with Group OSCORE, some information might still leak, due to the observable size, source address and destination address of exchanged messages.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace "[RFC-XXXX]" with the RFC number of this document and delete this paragraph.</t>
      <section anchor="iana-ace-oauth-profile">
        <name>ACE Profile Registry</name>
        <t>IANA is asked to add the following entry to the "ACE Profile" registry defined in <xref section="8.8" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>Name: coap_group_oscore</li>
          <li>Description: Profile to secure communications between constrained nodes using the Authentication and Authorization for Constrained Environments framework, by enabling authentication and fine-grained authorization of members of an OSCORE group, that use a pre-established Group OSCORE Security Context to communicate with Group OSCORE. Optionally, the dual mode defined in <xref target="full-version"/> additionally establishes a pairwise OSCORE Security Context, and thus also enables OSCORE communication between two members of the OSCORE group.</li>
          <li>CBOR Value: TBD (value between 1 and 255)</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters" registry.</t>
        <ul spacing="normal">
          <li>Name: "context_id"</li>
          <li>Parameter Usage Location: token request</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="context_id"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "salt_input"</li>
          <li>Parameter Usage Location: token request</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="salt_input"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred_verify"</li>
          <li>Parameter Usage Location: token request</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="client_cred_verify"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred_verify_mac"</li>
          <li>Parameter Usage Location: token request</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="client_cred_verify_mac"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred"</li>
          <li>Parameter Usage Location: token request</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="client_cred-appendix"/> of [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-token-cbor-mappings">
        <name>OAuth Parameters CBOR Mappings Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters CBOR Mappings" registry defined in <xref section="8.10" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>Name: "context_id"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: bstr</li>
          <li>Reference: <xref target="context_id"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "salt_input"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: bstr</li>
          <li>Reference: <xref target="salt_input"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred_verify"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: bstr</li>
          <li>Reference: <xref target="client_cred_verify"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred_verify_mac"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: bstr</li>
          <li>Reference: <xref target="client_cred_verify_mac"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: "client_cred"</li>
          <li>CBOR Key: TBD</li>
          <li>Value Type: bstr</li>
          <li>Reference: <xref target="client_cred-appendix"/> of [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-token-cwt-claims">
        <name>CBOR Web Token Claims Registry</name>
        <t>IANA is asked to add the following entries to the "CBOR Web Token Claims" registry.</t>
        <ul spacing="normal">
          <li>Claim Name: "salt_input"</li>
          <li>Claim Description: Client provided salt input</li>
          <li>JWT Claim Name: "N/A"</li>
          <li>Claim Key: TBD</li>
          <li>Claim Value Type(s): bstr</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="salt_input_claim"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Claim Name: "contextId_input"</li>
          <li>Claim Description: Client context id input</li>
          <li>JWT Claim Name: "N/A"</li>
          <li>Claim Key: TBD</li>
          <li>Claim Value Type(s): bstr</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="contextId_input_claim"/> of [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Claim Name: "client_cred"</li>
          <li>Claim Description: Client Credential</li>
          <li>JWT Claim Name: "N/A"</li>
          <li>Claim Key: TBD</li>
          <li>Claim Value Type(s): map</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): <xref target="client_cred_claim-appendix"/> of [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-tls-exporter-label">
        <name>TLS Exporter Label Registry</name>
        <t>IANA is asked to add the following entry to the "TLS Exporter Label" registry defined in <xref section="6" sectionFormat="of" target="RFC5705"/> and updated in <xref section="12" sectionFormat="of" target="RFC8447"/>.</t>
        <ul spacing="normal">
          <li>Value: EXPORTER-ACE-Sign-Challenge-Client-AS</li>
          <li>DTLS-OK: Y</li>
          <li>Recommended: N</li>
          <li>Reference: <xref target="sec-c-as-token-endpoint"/> of [RFC-XXXX]</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-groupcomm-bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-groupcomm-bis-08">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang" initials="C." surname="Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="11" month="January" year="2023"/>
            <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-08"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-groupcomm-17">
          <front>
            <title>Group OSCORE - Secure Group Communication for CoAP</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <date day="20" month="December" year="2022"/>
            <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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-17"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore" target="https://datatracker.ietf.org/doc/html/draft-ietf-ace-key-groupcomm-oscore-16">
          <front>
            <title>Key Management for OSCORE Groups in ACE</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <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-16"/>
        </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="RFC5705" target="https://www.rfc-editor.org/info/rfc5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes.  This document describes a general mechanism for allowing that.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </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="RFC6749" target="https://www.rfc-editor.org/info/rfc6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt">
              <organization/>
            </author>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.  This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </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="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="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="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="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="RFC8447" target="https://www.rfc-editor.org/info/rfc8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy.  These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
        <reference anchor="RFC6920" target="https://www.rfc-editor.org/info/rfc6920">
          <front>
            <title>Naming Things with Hashes</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="D. Kutscher" initials="D." surname="Kutscher">
              <organization/>
            </author>
            <author fullname="C. Dannewitz" initials="C." surname="Dannewitz">
              <organization/>
            </author>
            <author fullname="B. Ohlman" initials="B." surname="Ohlman">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker">
              <organization/>
            </author>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function.  It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it.  The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
        </reference>
        <reference anchor="RFC8747" target="https://www.rfc-editor.org/info/rfc8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </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="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="RFC9201" target="https://www.rfc-editor.org/info/rfc9201">
          <front>
            <title>Additional OAuth Parameters for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for Authentication and Authorization for Constrained Environments (ACE). These are used to express the proof-of-possession (PoP) key the client wishes to use, the PoP key that the authorization server has selected, and the PoP key the resource server uses to authenticate to the client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9201"/>
          <seriesInfo name="DOI" value="10.17487/RFC9201"/>
        </reference>
        <reference anchor="RFC9203" target="https://www.rfc-editor.org/info/rfc9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework.  It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security 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="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </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.tiloca-core-oscore-discovery" target="https://datatracker.ietf.org/doc/html/draft-tiloca-core-oscore-discovery-13">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>Consultant</organization>
            </author>
            <date day="8" month="March" year="2023"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices may
   not know the exact security groups to join, the respective Group
   Manager, or other information required to perform the joining
   process.  This document describes how a CoAP endpoint can use
   descriptions and links of resources registered at the CoRE Resource
   Directory to discover security groups and to acquire information for
   joining them through the respective Group Manager.  A given security
   group may protect multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the ACE framework for
   Authentication and Authorization in constrained environments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-discovery-13"/>
        </reference>
        <reference anchor="I-D.ietf-ace-mqtt-tls-profile" target="https://datatracker.ietf.org/doc/html/draft-ietf-ace-mqtt-tls-profile-17">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT)-TLS profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Cigdem Sengul" initials="C." surname="Sengul">
              <organization>Brunel University</organization>
            </author>
            <author fullname="Anthony Kirby" initials="A." surname="Kirby">
              <organization>Oxbotica</organization>
            </author>
            <date day="23" month="March" year="2022"/>
            <abstract>
              <t>   This document specifies a profile for the ACE (Authentication and
   Authorization for Constrained Environments) framework to enable
   authorization in a Message Queuing Telemetry Transport (MQTT)-based
   publish-subscribe messaging system.  Proof-of-possession keys, bound
   to OAuth2.0 access tokens, are used to authenticate and authorize
   MQTT Clients.  The protocol relies on TLS for confidentiality and
   MQTT server (Broker) authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-mqtt-tls-profile-17"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert" target="https://datatracker.ietf.org/doc/html/draft-ietf-cose-cbor-encoded-cert-05">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="10" month="January" year="2023"/>
            <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-05"/>
        </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="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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="RFC9202" target="https://www.rfc-editor.org/info/rfc9202">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="S. Gerdes" initials="S." surname="Gerdes">
              <organization/>
            </author>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a profile of the Authentication and Authorization for Constrained Environments (ACE) framework that allows constrained servers to delegate client authentication and authorization.  The protocol relies on DTLS version 1.2 or later for communication security between entities in a constrained network using either raw public keys or pre-shared keys. A resource-constrained server can use this protocol to delegate management of authorization information to a trusted host with less-severe limitations regarding processing power and memory.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9202"/>
          <seriesInfo name="DOI" value="10.17487/RFC9202"/>
        </reference>
      </references>
    </references>
    <section anchor="full-version">
      <name>Dual Mode (Group OSCORE &amp; OSCORE)</name>
      <t>This appendix defines the dual mode of this profile, which allows using both OSCORE <xref target="RFC8613"/> and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> as security protocols, by still relying on a single Access Token.</t>
      <t>That is, the dual mode of this profile specifies how a Client uses CoAP <xref target="RFC7252"/> to communicate to a single Resource Server, or CoAP for group communication <xref target="I-D.ietf-core-groupcomm-bis"/> to communicate to multiple Resource Servers that are members of a group and share a common set of resources.</t>
      <t>In particular, the dual mode of this profile uses two complementary security protocols to provide secure communication between the Client and the Resource Server(s). That is, it defines the use of OSCORE or Group OSCORE to protect unicast requests addressed to a single Resource Server, as well as possible responses. Additionally, it defines the use of Group OSCORE to protect one-to-many, group requests addressed to multiple Resource Servers (e.g., sent over IP multicast), as well as possible individual responses. Like in the main mode of this profile, the Client and the Resource Servers need to have already joined the same OSCORE group, for instance by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, which is also based on ACE.</t>
      <t>The Client proves its access to be authorized to the Resource Server by using an Access Token, which is bound to a key (the proof-of-possession key). This profile mode uses OSCORE to achieve proof-of-possession, and OSCORE or Group OSCORE to achieve server authentication.</t>
      <t>Unlike in the main mode of this profile, where a public key is used as pop-key, this dual mode uses OSCORE-related, symmetric keying material as pop-key instead. Furthermore, this dual mode provides proof of Client's membership to the OSCORE group, by securely binding the pre-established Group OSCORE Security Context to the pairwise OSCORE Security Context newly established between the Client and the Resource Server.</t>
      <t>In addition to the terminology used for the main mode of this profile, the rest of this appendix refers also to "pairwise OSCORE Security Context" as to an OSCORE Security Context established between only one Client and one Resource Server, and used to communicate with OSCORE <xref target="RFC8613"/>.</t>
      <section anchor="sec-protocol-overview-appendix">
        <name>Protocol Overview</name>
        <t>This section provides an overview on how to use the ACE framework for authentication and authorization <xref target="RFC9200"/> to secure communications between a Client and a (set of) Resource Server(s) using OSCORE <xref target="RFC8613"/> and/or Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>Just like for main mode of this profile overviewed in <xref target="sec-protocol-overview"/>, the process for joining the OSCORE group through the respective Group Manager as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> must take place before the process described in the rest of this section, and is out of the scope of this profile.</t>
        <t>An overview of the protocol flow for the dual mode of this profile is shown in <xref target="fig-protocol-overview-appendix"/>. In the figure, it is assumed that both RS1 and RS2 are associated with the same AS. It is also assumed that C, RS1 and RS2 have previously joined an OSCORE group with Group Identifier (gid) 0xabcd0000, and got assigned Sender ID (sid) 0x00, 0x01 and 0x02 in the group, respectively. The names of messages coincide with those of <xref target="RFC9200"/> when applicable.</t>
        <figure anchor="fig-protocol-overview-appendix">
          <name>Protocol Overview.</name>
          <artwork align="center"><![CDATA[
C                            RS1          RS2                        AS
| [--- Resource Request --->] |            |                          |
|                             |            |                          |
| [<----- AS Request -------] |            |                          |
|       Creation Hints        |            |                          |
|                             |            |                          |
|-------- POST /token ----------------------------------------------->|
|  (aud: "RS1", sid: 0x00,    |            |                          |
|   gid: 0xabcd0000, ...)     |            |                          |
|                             |            |                          |
|<--------------------------------- Access Token + RS Information ----|
|                             |        (aud: "RS1", sid: 0x00,        |
|                             |         gid: 0xabcd0000, ...)         |
|                             |            |                          |
|---- POST /authz-info ------>|            |                          |
|  (access_token, N1, ID1)    |            |                          |
|                             |            |                          |
|<-- 2.01 Created (N2, ID2) --|            |                          |
|                             |            |                          |
/Pairwise              /Pairwise           |                          |
 Security Context       Security Context   |                          |
 Derivation/            Derivation/        |                          |
|                             |            |                          |
|-------- POST /token ----------------------------------------------->|
|  (aud: "RS2", sid: 0x00,    |            |                          |
|   gid: 0xabcd0000, ...)     |            |                          |
|                             |            |                          |
|<--------------------------------- Access Token + RS Information ----|
|                             |        (aud: "RS2", sid: 0x00,        |
|                             |         gid: 0xabcd0000, ...)         |
|                             |            |                          |
|---- POST /authz-info ------------------->|                          |
|  (access_token, N1', ID1')  |            |                          |
|                             |            |                          |
|<-- 2.01 Created (N2', ID2')--------------|                          |
|                             |            |                          |
/Pairwise Security            |   /Pairwise Security                  |
 Context Derivation/          |    Context Derivation/                |
|                             |            |                          |
|----- OSCORE Request ------->|            |                          |
|        (kid: ID2)           |            |                          |
|                             |            |                          |
|                             |            |                          |
|                             |            |                          |
|                             |            |                          |
|                /Proof-of-possession;     |                          |
|                 Pairwise Security        |                          |
|                 Context storage/         |                          |
|                             |            |                          |
|<---- OSCORE Response -------|            |                          |
|                             |            |                          |
/Proof-of-possession;         |            |                          |
 Pairwise Security            |            |                          |
 Context storage/             |            |                          |
|                             |            |                          |
/Mutual authentication        |            |                          |
 between C and RS1            |            |                          |
 (as OSCORE peers)/           |            |                          |
|                             |            |                          |
|                             |            |                          |
|-- Group OSCORE Request -+-->|            |                          |
|    (kid: 0x00,           \  |            |                          |
|     gid: 0xabcd0000)      \------------->|                          |
|                             |            |                          |
|<-- Group OSCORE Response ---|            |                          |
|       (kid: 0x01)           |            |                          |
|                             |            |                          |
/Mutual authentication        |            |                          |
 between C and RS1            |            |                          |
 (as group members)/          |            |                          |
|                             |            |                          |
|<-- Group OSCORE Response ----------------|                          |
|       (kid: 0x02)           |            |                          |
|                             |            |                          |
/Mutual authentication        |            |                          |
 between C and RS2            |            |                          |
 (as group members)/          |            |                          |
|                             |            |                          |
|            ...              |            |                          |
]]></artwork>
        </figure>
        <section anchor="sec-protocol-overview-pre-conditions-appendix">
          <name>Pre-Conditions</name>
          <t>The same pre-conditions for the main mode of this profile (see <xref target="sec-protocol-overview-pre-conditions"/>) hold for the dual mode described in this appendix.</t>
        </section>
        <section anchor="sec-protocol-overview-token-posting-appendix">
          <name>Access Token Posting</name>
          <t>After having retrieved the Access Token from the AS, the Client generates a nonce N1 and an identifier ID1 unique in the sets of its own Recipient IDs from its pairwise OSCORE Security Contexts. The Client then posts both the Access Token, N1 and its chosen ID to the RS, using the /authz-info endpoint and mechanisms specified in <xref section="5.10" sectionFormat="of" target="RFC9200"/> and Content-Format = application/ace+cbor.</t>
          <t>When using the dual mode of this profile, the communication with the /authz-info endpoint is not protected, except for update of access rights. Note that, when using the dual mode, this request can alternatively be protected with Group OSCORE, using the Group OSCORE Security Context paired with the pairwise OSCORE Security Context originally established with the first Access Token posting.</t>
          <t>If the Access Token is valid, the RS replies to this POST request with a 2.01 (Created) response with Content-Format = application/ace+cbor, which in a CBOR map contains a nonce N2 and an identifier ID2 unique in the sets of its own Recipient IDs from its pairwise OSCORE Security Contexts.</t>
        </section>
        <section anchor="sec-oscore-setup-appendix">
          <name>Setup of the Pairwise OSCORE Security Context</name>
          <t>After sending the 2.01 (Created) response, the RS sets the ID Context of the pairwise OSCORE Security Context (see <xref section="3" sectionFormat="of" target="RFC8613"/>) to the Group Identifier of the OSCORE group specified in the Access Token, concatenated with N1, concatenated with N2, concatenated with the value in the contextId parameter of the OSCORE_Input_Material provided in the 'cnf' claim of the Access Token.</t>
          <t>Then, the RS derives the complete pairwise OSCORE Security Context associated with the received Access Token, following <xref section="3.2" sectionFormat="of" target="RFC8613"/>. In practice, the RS maintains a collection of Security Contexts with associated authorization information, for all the clients that it is currently communicating with. The authorization information is a policy that is used as input when processing requests from those clients.</t>
          <t>During the derivation process, the RS uses: the ID Context above; the exchanged nonces N1 and N2; the identifier ID1 received from the Client, set as its own OSCORE Sender ID; the identifier ID2 provided to the Client, set as its Recipient ID for the Client; and the parameters in the Access Token. The derivation process uses also the Master Secret of the OSCORE group, that the RS knows as a group member, as well as the Sender ID of the Client in the OSCORE group, which is specified in the Access Token. This ensures that the pairwise OSCORE Security Context is securely bound to the Group OSCORE Security Context of the OSCORE group.</t>
          <t>Finally, the RS stores the association between i) the authorization information from the Access Token; and ii) the Group Identifier of the OSCORE group together with the Sender ID and the authentication credential of the Client in that group.</t>
          <t>After having received the nonce N2, the Client sets the ID Context in its pairwise OSCORE Security Context (see <xref section="3" sectionFormat="of" target="RFC8613"/>) to the Group Identifier of the OSCORE group, concatenated with N1, concatenated with N2, concatenated with the value in the contextId parameter of the OSCORE_Input_Material provided in the 'cnf' parameter of the Access Token response from the AS. Then, the Client derives the complete pairwise OSCORE Security Context, following <xref section="3.2" sectionFormat="of" target="RFC8613"/>.</t>
          <t>During the derivation process, the Client uses: the ID Context above, the exchanged nonces N1 and N2; the identifier ID1 provided to the RS, set as its own Recipient ID for the RS; the identifier ID2 received from the RS, set as its own OSCORE Sender ID; and the parameters received from the AS. The derivation process uses also the Master Secret of the OSCORE group, that the Client knows as a group member, as well as its own Sender ID in the OSCORE group.</t>
          <t>When the Client communicates with the RS using the pairwise OSCORE Security Context, the RS achieves proof-of-possession of the credentials bound to the Access Token. Also, the RS verifies that the Client is a legitimate member of the OSCORE group.</t>
        </section>
        <section anchor="sec-protocol-overview-communication-appendix">
          <name>Secure Communication</name>
          <t>Other than starting the communication with the RS using Group OSCORE as described in <xref target="sec-client-rs-secure-communication"/>, the Client can send to the RS a request protected with OSCORE, using the pairwise OSCORE Security Context.</t>
          <t>If the request is successfully verified, then the RS stores the pairwise OSCORE Security Context, and uses it to protect the possible response, as well as further communications with the Client, until the Access Token is deleted, e.g., due to its expiration. This pairwise OSCORE Security Context is discarded when an Access Token (whether the same one or a different one) is used to successfully derive a new pairwise OSCORE Security Context.</t>
          <t>As discussed in <xref section="7" sectionFormat="of" target="RFC9203"/>, the use of random nonces N1 and N2 during the exchange between the Client and the RS prevents the reuse of an Authenticated Encryption with Associated Data (AEAD) (nonce, key) pair for two different messages. Reuse might otherwise occur when the Client and RS derive a new pairwise OSCORE Security Context from an existing (non-expired) Access Token, e.g., in case of reboot of either the Client or the RS, and might lead to loss of both confidentiality and integrity.</t>
          <t>Additionally, just as per the main mode of this profile (see <xref target="sec-client-rs-secure-communication"/>), the Client and RS can also securely communicate by protecting messages with Group OSCORE, using the Group OSCORE Security Context already established upon joining the OSCORE group.</t>
        </section>
      </section>
      <section anchor="sec-c-as-comm-appendix">
        <name>Client-AS Communication</name>
        <t>This section details the Access Token POST Request that the Client sends to the /token endpoint of the AS, as well as the related Access Token response.</t>
        <t><xref section="3.2" sectionFormat="of" target="RFC8613"/> defines how to derive a pairwise OSCORE Security Context based on a shared Master Secret and a set of other parameters, established between the OSCORE client and server, which the Client receives from the AS in this exchange.</t>
        <t>The proof-of-possession key (pop-key) received from the AS in this exchange MUST be used to build the Master Secret in OSCORE (see <xref target="sec-c-rs-setup-client-appendix"/> and <xref target="sec-c-rs-setup-server-appendix"/>).</t>
        <section anchor="sec-c-as-token-endpoint-appendix">
          <name>C-to-AS: POST to Token Endpoint</name>
          <t>The Client-to-AS request is specified in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. The Client MUST send this POST request to the /token endpoint over a secure channel that guarantees authentication, message integrity and confidentiality.</t>
          <t>The POST request is formatted as the analogous Client-to-AS request in the main mode of this profile (see <xref target="sec-c-as-token-endpoint"/>), with the following differences.</t>
          <ul spacing="normal">
            <li>The parameter 'req_cnf' MUST NOT be included in the payload.</li>
            <li>
              <t>The parameter 'client_cred', defined in <xref target="client_cred-appendix"/> of this document, MUST be included in the payload. This parameter specifies the authentication credential that the Client uses in the OSCORE group, whose identifier is indicated in the 'context_id' parameter.  </t>
              <t>
This parameter is used like the 'req_cnf' parameter of the Client-to-AS request (see <xref target="sec-c-as-token-endpoint"/>), with the difference that the Client's public key included in the specified authentication credential is not used as proof-of-possession key bound to the access token.</t>
            </li>
            <li>The proof-of-possession (PoP) evidence included in the 'client_cred_verify' or 'client_cred_verify_mac' parameter is computed by using the Client's private key associated with the Client's authentication credential specified in the 'client_cred' parameter above.</li>
          </ul>
          <t>An example of such a request is shown in <xref target="fig-example-C-to-AS-symm-appendix"/>.</t>
          <figure anchor="fig-example-C-to-AS-symm-appendix">
            <name>Example C-to-AS POST /token request for an Access Token bound to a symmetric key.</name>
            <artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "as.example.com"
Uri-Path: "token"
Content-Format: "application/ace+cbor"
Payload:
{
  "audience" : "tempSensor4711",
  "scope" : "read",
  "context_id" : h'abcd0000',
  "salt_input" : h'00',
  "client_cred" : {
    "kccs" : {
      "sub" : "42-50-31-FF-EF-37-32-39",
      "cnf" : {
        "COSE_Key" : {
          "kty" : 2,
          "crv" : 1,
          "x" : h'd7cc072de2205bdc1537a543d53c60a6
                  acb62eccd890c7fa27c9e354089bbe13',
          "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
                  b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  },
  "client_cred_verify" : h'...'
   (signature content omitted for brevity),
}
]]></artwork>
          </figure>
          <t>In the example above, the Client specifies that its authentication credential in the OSCORE group is the CCS shown in <xref target="fig-client-auth-cred-symm-appendix"/>.</t>
          <figure anchor="fig-client-auth-cred-symm-appendix">
            <name>Example of Client Authentication Credential as CWT Claims Set (CCS).</name>
            <artwork><![CDATA[
{
  "sub" : "42-50-31-FF-EF-37-32-39",
  "cnf" : {
    "COSE_Key" : {
      "kty" : 2,
      "crv" : 1,
      "x" : h'd7cc072de2205bdc1537a543d53c60a6
              acb62eccd890c7fa27c9e354089bbe13',
      "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
              b725d535e515d020731e79a3b4e47120'
    }
  }
}
]]></artwork>
          </figure>
          <t>Later on, the Client may want to update its current access rights, without changing the existing pairwise OSCORE Security Context with the RS. In this case, the Client MUST include in its POST request to the /token endpoint a 'req_cnf' parameter, defined in <xref section="3.1" sectionFormat="of" target="RFC9201"/>, which MUST include a 'kid' field, as defined in <xref section="3.1" sectionFormat="of" target="RFC8747"/>. The 'kid' field has as value a CBOR byte string containing the OSCORE_Input_Material Identifier (assigned as discussed in <xref target="sec-as-c-token-appendix"/>).</t>
          <t>This identifier, together with other information such as audience, can be used by the AS to determine the shared secret bound to the proof-of-possession Access Token and therefore MUST identify a symmetric key that was previously generated by the AS as a shared secret for the communication between the Client and the RS. The AS MUST verify that the received value identifies a proof-of-possession key that has previously been issued to the requesting Client. If that is not the case, the Client-to-AS request MUST be declined with the error code "invalid_request" as defined in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
          <t>This POST request for updating the access rights of an Access Token SHOULD NOT include the parameters 'salt_input', 'context_id', 'client_cred' and 'client_cred_verify'. An exception is the case defined in <xref target="sec-client-public-key-change-dual-mode"/>, where the Client, following a change of authentication credential in the OSCORE group, requests a new Access Token associated with the public key of the new authentication credential, while still without changing the existing pairwise OSCORE Security Context with the RS.</t>
          <t>An example of such a request is shown in <xref target="fig-example-C-to-AS-symm-kid-appendix"/>.</t>
          <figure anchor="fig-example-C-to-AS-symm-kid-appendix">
            <name>Example C-to-AS POST /token request for updating rights to an Access Token bound to a symmetric key.</name>
            <artwork><![CDATA[
     Header: POST (Code=0.02)
     Uri-Host: "as.example.com"
     Uri-Path: "token"
     Content-Format: "application/ace+cbor"
     Payload:
     {
       "audience" : "tempSensor4711",
       "scope" : "read",
       "req_cnf" : {
         "kid" : h'01'
       }
     }
]]></artwork>
          </figure>
          <section anchor="client_cred-appendix">
            <name>'client_cred' Parameter</name>
            <t>The 'client_cred' parameter is an OPTIONAL parameter of the Access Token request message defined in <xref section="5.8.1." sectionFormat="of" target="RFC9200"/>.</t>
            <t>This parameter specifies an asymmetric key (or an associated identifier) that the Client wishes to use as its own public key, but which is not used as proof-of-possession key.</t>
            <t>This parameter follows the syntax of the 'cnf' claim from <xref section="3.1" sectionFormat="of" target="RFC8747"/>.</t>
          </section>
        </section>
        <section anchor="sec-as-c-token-appendix">
          <name>AS-to-C: Access Token</name>
          <t>After having verified the POST request to the /token endpoint and that the Client is authorized to obtain an Access Token corresponding to its Access Token request, the AS MUST verify the proof-of-possession (PoP) evidence.</t>
          <t>In particular, the AS proceeds as defined in <xref target="sec-as-c-token"/>, with the difference that it uses the public key included in the authentication credential specified in the 'client_cred' parameter as public key of the Client.</t>
          <t>If both the 'client_cred_verify' and 'client_cred_verify_mac' parameters are present, or if the verification of the PoP evidence fails, the AS considers the Client request invalid. The AS does not perform this operation when asked to update a previously released Access Token.</t>
          <t>If all verifications are successful, the AS responds as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>. If the Client request was invalid, or not authorized, the AS returns an error response as described in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
          <t>The AS can signal that the use of OSCORE and Group OSCORE is REQUIRED for a specific Access Token by including the "ace_profile" parameter with the value "coap_group_oscore" in the Access Token response. This means that the Client MUST use OSCORE and/or Group OSCORE towards all the Resource Servers for which this Access Token is valid.</t>
          <t>In particular, the Client MUST follow <xref target="sec-c-rs-setup-client-appendix"/> to derive the pairwise OSCORE Security Context to use for communications with the RS. Instead, the Client has already established the related Group OSCORE Security Context to communicate with members of the OSCORE group, upon previously joining that group.</t>
          <t>Usually, it is assumed that constrained devices will be pre-configured with the necessary profile, so that this kind of profile signaling can be omitted.</t>
          <t>In contrast with the main mode of this profile, the Access Token response to the Client is analogous to the one in the OSCORE profile of ACE, as described in <xref section="3.2" sectionFormat="of" target="RFC9203"/>. In particular, the AS provides an OSCORE_Input_Material object, which is defined in <xref section="3.2.1" sectionFormat="of" target="RFC9203"/> and included in the 'cnf' parameter (see <xref section="3.2" sectionFormat="of" target="RFC9201"/>) of the Access Token response.</t>
          <t>The AS MUST provide different OSCORE_Input_Material (and therefore different Access Tokens) to different authorized clients, in order for the RS to differentiate between clients.</t>
          <t>In the issued Access Token, the AS MUST include as metadata the same information as defined in the main mode of this profile (see <xref target="sec-as-c-token"/>) with the following differences.</t>
          <ul spacing="normal">
            <li>
              <t>The authentication credential that the Client uses in the OSCORE group and specified in the 'client_cred' parameter of the Token request (see <xref target="sec-c-as-token-endpoint-appendix"/>) MUST also be included in the Access Token.  </t>
              <t>
If the Access Token is a CWT, the AS MUST include it in the 'client_cred' claim of the Access Token, defined in <xref target="client_cred_claim-appendix"/> of this document. In particular, the 'client_cred' claim includes the same authentication credential specified in the 'client_cred' parameter of the Token Request.</t>
            </li>
            <li>The OSCORE_Input_Material specified in the 'cnf' parameter of the Access Token response MUST also be included in the Access Token. If the Access Token is a CWT, the same OSCORE_Input_Material included in the 'cnf' parameter of the Access Token response MUST be included in the 'osc' field of the 'cnf' claim of the Access Token (see <xref section="3.2" sectionFormat="of" target="RFC9203"/>).</li>
          </ul>
          <t><xref target="fig-example-AS-to-C-appendix"/> shows an example of such an AS response. The access token has been truncated for readability.</t>
          <figure anchor="fig-example-AS-to-C-appendix">
            <name>Example AS-to-C Access Token response with the Group OSCORE profile.</name>
            <artwork><![CDATA[
Header: Created (Code=2.01)
Content-Type: "application/ace+cbor"
Payload:
{
  "access_token" : h'8343a1010aa2044c53 ...'
   (remainder of CWT omitted for brevity),
  "ace_profile" : "coap_group_oscore",
  "expires_in" : 3600,
  "cnf" : {
    "osc" : {
      "alg" : AES-CCM-16-64-128,
      "id"  : h'01',
      "ms" : h'f9af838368e353e78888e1426bd94e6f',
      "salt" : h'1122',
      "contextId" : h'99'
    }
  }
}
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-CWT-appendix"/> shows an example CWT, containing the necessary OSCORE parameters in the 'cnf' claim.</t>
          <figure anchor="fig-example-AS-to-C-CWT-appendix">
            <name>Example CWT with OSCORE parameters.</name>
            <artwork><![CDATA[
{
  "aud" : "tempSensorInLivingRoom",
  "iat" : 1360189224,
  "exp" : 1360289224,
  "scope" : "temperature_g firmware_p",
  "cnf" : {
    "osc" : {
      "alg" : AES-CCM-16-64-128,
      "id"  : h'01',
      "ms" : h'f9af838368e353e78888e1426bd94e6f',
      "salt" : h'1122',
      "contextId" : h'99'
    },
  }
  "salt_input" : h'00',
  "contextId_input" : h'abcd0000',
  "client_cred" : {
    "kccs" : {
      "sub" : "42-50-31-FF-EF-37-32-39",
      "cnf" : {
        "COSE_Key" : {
          "kty" : 2,
          "crv" : 1,
          "x" : h'd7cc072de2205bdc1537a543d53c60a6
                  acb62eccd890c7fa27c9e354089bbe13',
          "y" : h'f95e1d4b851a2cc80fff87d8e23f22af
                  b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  }
}
]]></artwork>
          </figure>
          <t>The same CWT as in <xref target="fig-example-AS-to-C-CWT-appendix"/> and encoded in CBOR is shown in <xref target="fig-example-AS-to-C-CWT-encoding-appendix"/>, using the value abbreviations defined in <xref target="RFC9200"/> and <xref target="RFC8747"/>.</t>
          <t>NOTE: it should be checked (and in case fixed) that the values used below (which are not yet registered) are the final values registered in IANA.</t>
          <figure anchor="fig-example-AS-to-C-CWT-encoding-appendix">
            <name>Example CWT with OSCORE parameters.</name>
            <artwork><![CDATA[
A8                                      # map(8)
   03                                   # unsigned(3)
   76                                   # text(22)
      74656D7053656E736F72496E4C6976696E67526F6F6D
      # "tempSensorInLivingRoom"
   06                                   # unsigned(6)
   1A 5112D728                          # unsigned(1360189224)
   04                                   # unsigned(4)
   1A 51145DC8                          # unsigned(1360289224)
   09                                   # unsigned(9)
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70
      # "temperature_g firmware_p"
   08                                   # unsigned(8)
   A1                                   # map(1)
      04                                # unsigned(4)
      A5                                # map(5)
         04                             # unsigned(4)
         0A                             # unsigned(10)
         00                             # unsigned(0)
         41                             # bytes(1)
            01
         02                             # unsigned(2)
         50                             # bytes(16)
            F9AF838368E353E78888E1426BD94E6F
         05                             # unsigned(5)
         42                             # bytes(2)
            1122
         06                             # unsigned(6)
         41                             # bytes(1)
            99
   18 3C                                # unsigned(60)
   41                                   # bytes(1)
      00
   18 3D                                # unsigned(61)
   44                                   # bytes(4)
      ABCD0000
   18 3E                                # unsigned(62)
   A1                                   # map(1)
      05                                # unsigned(5)
      A2                                # map(2)
         02                             # unsigned(2)
         77                             # text(23)
            34322D35302D33312D46462D45462D33372D33322D3339
            # "42-50-31-FF-EF-37-32-39"
         08                             # unsigned(8)
         A1                             # map(1)
            01                          # unsigned(1)
            A4                          # map(4)
               01                       # unsigned(1)
               02                       # unsigned(2)
               20                       # negative(0)
               01                       # unsigned(1)
               21                       # negative(1)
               58 20                    # bytes(32)
                  D7CC072DE2205BDC1537A543D53C60A6
                  ACB62ECCD890C7FA27C9E354089BBE13
               22                       # negative(2)
               58 20                    # bytes(32)
                  F95E1D4B851A2CC80FFF87D8E23F22AF
                  B725D535E515D020731E79A3B4E47120
]]></artwork>
          </figure>
          <t>If the Client has requested an update to its access rights using the same pairwise OSCORE Security Context, which is valid and authorized, the AS MUST omit the 'cnf' parameter in the response to the client.</t>
          <t>Instead, the updated Access Token conveyed in the AS-to-C response MUST include a 'cnf' claim specifying a 'kid' field, as defined in <xref section="3.1" sectionFormat="of" target="RFC8747"/>. The response from the AS MUST carry the OSCORE Input Material identifier in the 'kid' field within the 'cnf' claim of the Access Token. That is, the 'kid' field is a CBOR byte string, with value the same value of the 'kid' field of the 'req_cnf' parameter from the C-to-AS request for updating rights to the Access Token (see <xref target="fig-example-C-to-AS-symm-kid-appendix"/>). This information needs to be included in the Access Token, in order for the RS to identify the previously generated pairwise OSCORE Security Context.</t>
          <t><xref target="fig-example-AS-to-C-kid-appendix"/> shows an example of such an AS response. The Access Token has been truncated for readability.</t>
          <figure anchor="fig-example-AS-to-C-kid-appendix">
            <name>Example AS-to-C Access Token response with the Group OSCORE profile, for update of access rights.</name>
            <artwork><![CDATA[
     Header: Created (Code=2.01)
     Content-Type: "application/ace+cbor"
     Payload:
     {
       "access_token" : h'8343a1010aa2044c53 ...'
        (remainder of CWT omitted for brevity),
       "profile" : "coap_group_oscore",
       "expires_in" : 3600
     }
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-CWT-kid-appendix"/> shows an example CWT, containing the necessary OSCORE parameters in the 'cnf' claim for update of access rights.</t>
          <figure anchor="fig-example-AS-to-C-CWT-kid-appendix">
            <name>Example CWT with OSCORE parameters for update of access rights.</name>
            <artwork><![CDATA[
     {
       "aud" : "tempSensorInLivingRoom",
       "iat" : 1360189224,
       "exp" : 1360289224,
       "scope" :  "temperature_h",
       "cnf" : {
         "kid" : h'01'
       }
     }
]]></artwork>
          </figure>
          <section anchor="client_cred_hash-appendix">
            <name>Public Key Hash as Client Credential</name>
            <t>As a possible optimization to limit the size of the Access Token, the AS may specify as value of the 'client_cred' claim simply the hash of the authentication credential that the Client uses in the OSCORE group.</t>
            <t>The specifically used hash-function MUST be collision-resistant on byte-strings, and MUST be selected from the "Named Information Hash Algorithm" Registry defined in <xref section="9.4" sectionFormat="of" target="RFC6920"/>.</t>
            <t>In particular, the AS provides the Client with an Access Token as defined in <xref target="sec-as-c-token-appendix"/>, with the following differences.</t>
            <t>The AS prepares INPUT_HASH, as a CBOR byte string wrapping the Client's authentication credential.</t>
            <t>Then, the AS computes the hash of INPUT_HASH according to the procedure described in <xref target="RFC6920"/>, yielding the output OUTPUT_HASH in binary format, as described in <xref section="6" sectionFormat="of" target="RFC6920"/>.</t>
            <t>Finally, within the 'client_cred' claim of the Access Token, the AS specifies  an entry of type "kid" (3) defined in <xref section="3.1" sectionFormat="of" target="RFC8747"/>, with value a CBOR byte string wrapping OUTPUT_HASH.</t>
            <t>Upon receiving the Access Token, the RS processes it according to <xref target="sec-rs-c-created-appendix"/>, with the following differences.</t>
            <t>The RS considers: the content of the 'contextId_input' claim as the GID of the OSCORE group; the content of the 'salt_input' claim as the Sender ID that the Client has in the group; and the content of the inner confirmation value of the 'client_cred' claim as the hash RECEIVED_HASH of the authentication credential that the Client uses in the group.</t>
            <t>The RS MUST check whether it already stores an authentication credential associated with the pair (GID, Sender ID) above, such that the recomputed hash NEW_HASH matches the RECEIVED_HASH from the inner confirmation value of the 'client_cred' claim.</t>
            <t>If this is not the case, the RS MUST request the Client's authentication credential to the Group Manager of the OSCORE group as described in <xref section="9.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, specifying the Client's Sender ID in the OSCORE group, i.e., the value of the 'salt_input' claim. Then, the RS performs the following actions.</t>
            <ul spacing="normal">
              <li>The RS MUST check whether RECEIVED_HASH matches the recomputed hash NEW_HASH of the Client's authentication credential retrieved from the Group Manager.</li>
              <li>The RS MUST check that the Client's Sender ID provided by the Group Manager together with the Client's authentication credential matches the one retrieved from the 'salt_input' claim of the Access Token.</li>
            </ul>
            <t>The RS MUST calculate NEW_HASH using the same method used by the AS described above, and using the same hash function. The hash function to use can be determined from the information conveyed in the 'client_cred' claim, as the procedure described in <xref target="RFC6920"/> also encodes the used hash function as metadata of the hash value.</t>
          </section>
          <section anchor="client_cred_claim-appendix">
            <name>Client Credential Claim</name>
            <t>The 'client_cred' claim specifies an asymmetric key (or an associated identifier) that the Client owning the Access Token wishes to use as its own public key, but which is not used as proof-of-possession key.</t>
            <t>This claim follows the syntax of the 'cnf' claim from <xref section="3.1" sectionFormat="of" target="RFC8747"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="sec-c-rs-comm-appendix">
        <name>Client-RS Communication</name>
        <t>This section details the POST request and response to the /authz-info endpoint between the Client and the RS. With respect to the exchanged messages and their content, the Client and the RS perform as defined in the OSCORE profile of ACE (see <xref section="4" sectionFormat="of" target="RFC9203"/>).</t>
        <t>That is, the Client generates a nonce N1 and posts it to the RS, together with: an identifier ID1 unique in the sets of its own Recipient IDs from its pairwise OSCORE Security Contexts; and the Access Token that includes the material provisioned by the AS.</t>
        <t>Then, the RS generates a nonce N2, and an identifier ID2 unique in the sets of its own Recipient IDs from its pairwise OSCORE Security Contexts. After that, the RS derives a pairwise OSCORE Security Context as described in <xref section="3.2" sectionFormat="of" target="RFC8613"/>. In particular, it uses the two exchanged nonces and the two identifiers established with the Client, as well as two shared secrets together with additional pieces of information specified in the Access Token.</t>
        <t>Both the client and the RS generate the pairwise OSCORE Security Context using the pop-key as part of the OSCORE Master Secret. In addition, the derivation of the pairwise OSCORE Security Context takes as input also information related to the OSCORE group, i.e., the Master Secret and Group Identifier of the group, as well as the Sender ID of the Client in the group. Hence, the derived pairwise OSCORE Security Context is also securely bound to the Group OSCORE Security Context of the OSCORE Group. Thus, the proof-of-possession required to bind the Access Token to the Client occurs after the first OSCORE message exchange.</t>
        <t>Therefore, an attacker using a stolen Access Token cannot generate a valid pairwise OSCORE Security Context and thus cannot prove possession of the pop-key. Also, if a Client legitimately owns an Access Token but has not joined the OSCORE group, that Client cannot generate a valid pairwise OSCORE Security Context either, since it lacks the Master Secret used in the OSCORE group.</t>
        <t>Besides, just like in the main mode (see <xref target="sec-c-rs-comm"/>), the RS is able to verify whether the Client has indeed the claimed Sender ID and authentication credential in the OSCORE group.</t>
        <section anchor="sec-c-rs-authz-appendix">
          <name>C-to-RS POST to authz-info Endpoint</name>
          <t>The Client MUST generate a nonce N1, an OSCORE Recipient ID (ID1), and post them to the /authz-info endpoint of the RS together with the Access Token, as defined in the OSCORE profile of ACE (see <xref section="4.1" sectionFormat="of" target="RFC9203"/>).</t>
          <t>The same recommendations, considerations and behaviors defined in <xref section="4.1" sectionFormat="of" target="RFC9203"/> hold.</t>
          <t>If the Client has already posted a valid Access Token, has already established a pairwise OSCORE Security Context with the RS, and wants to update its access rights, the Client can do so by posting the new Access Token (retrieved from the AS and specifying the updated set of access rights) to the /authz-info endpoint.</t>
          <t>The Client MUST protect the request using either the pairwise OSCORE Security Context established during the first Access Token exchange, or the Group OSCORE Security Context associated with that pairwise OSCORE Security Context.</t>
          <t>In either case, the Client MUST only send the Access Token in the payload, i.e., no nonce or identifier are sent. After proper verification (see <xref section="4.2" sectionFormat="of" target="RFC9203"/>), the new Access Token will supersede the old one at the RS, by replacing the corresponding authorization information. At the same time, the RS will maintain the same pairwise OSCORE Security Context and Group OSCORE Security Context, as now both associated with the new Access Token.</t>
        </section>
        <section anchor="sec-rs-c-created-appendix">
          <name>RS-to-C: 2.01 (Created)</name>
          <t>The RS MUST verify the validity of the Access Token as defined in <xref target="sec-rs-c-created"/>, with the following differences.</t>
          <ul spacing="normal">
            <li>If the POST request to /authz-info is not protected, the RS checks that the 'cnf' claim is included in the Access Token and that it contains an OSCORE_Input_Material object. Also, the RS checks that the 'salt_input', 'client_cred' and 'contextId_input' claims are included in the Access Token.</li>
            <li>If the POST request to /authz-info is protected with the pairwise OSCORE Security Context shared with the Client or with the Group OSCORE Security Context of the OSCORE group, i.e., the Client is requesting an update of access rights, the RS checks that the 'cnf' claim is included in the Access Token and that it contains only the 'kid' field.</li>
            <li>If the 'salt_input', 'client_cred' and 'contextId_input' claims are included in the Access Token, the RS extracts the content of the inner confirmation value of the 'client_cred' claim. Then, the RS considers that content as the authentication credential that the Client uses in the group, whose GID is specified in the 'contextId_input' claim. The RS can compare this authentication credential with the Client's authentication credential retrieved from its local storage or from the Group Manager (see <xref target="sec-rs-c-created"/>).</li>
          </ul>
          <t>If any of the checks fails, the RS MUST consider the Access Token non valid, and MUST respond to the Client with an error response code equivalent to the CoAP code 4.00 (Bad Request).</t>
          <t>If the Access Token is valid and further checks on its content are successful, the RS proceeds as follows.</t>
          <t>In case the POST request to /authz-info was not protected, the RS MUST generate a nonce N2, an OSCORE Recipient ID (ID2), and include them in the 2.01 (Created) response to the Client, as defined in the OSCORE profile of ACE (see <xref section="4.2" sectionFormat="of" target="RFC9203"/>).</t>
          <t>Instead, in case the POST request to /authz-info was protected, the RS MUST ignore any nonce and identifiers in the request, if any was sent. Then, the RS MUST check that the 'kid' field of the 'cnf' claim in the new Access Token matches the identifier of the OSCORE Input Material of a pairwise OSCORE Security Context such that:</t>
          <ul spacing="normal">
            <li>The pairwise OSCORE Security Context was used to protect the request, if this was protected with OSCORE; or</li>
            <li>The pairwise OSCORE Security Context is bound to the Group OSCORE Security Context used to protect the request, if this was protected with Group OSCORE.</li>
          </ul>
          <t>If either verification is successful, the new Access Token supersedes the old one at the RS. Besides, the RS associates the new Access Token to the same pairwise OSCORE Security Context identified above, as also bound to a Group OSCORE Security Context. The RS MUST respond with a 2.01 (Created) response with no payload, protected with the same Security Context used to protect the request.  In particular, no new pairwise OSCORE Security Context is established between the Client and the RS. If any verification fails, the RS MUST respond with a 4.01 (Unauthorized) error response.</t>
          <t>Further recommendations, considerations and behaviors defined in <xref section="4.2" sectionFormat="of" target="RFC9203"/> hold for this document.</t>
        </section>
        <section anchor="sec-c-rs-setup-client-appendix">
          <name>OSCORE Setup - Client Side</name>
          <t>Once having received the 2.01 (Created) response from the RS, following an unprotected POST request to the /authz-info endpoint, the Client MUST extract the nonce N2 from the 'nonce2' parameter, and the Client identifier from the 'ace_server_recipientid' parameter in the CBOR map of the response payload. Note that this identifier is used by C as Sender ID in the pairwise OSCORE Security Context to be established with the RS, and is different from as well as unrelated to the Sender ID of C in the OSCORE group.</t>
          <t>Then, the Client performs the following actions, in order to set up and fully derive the pairwise OSCORE Security Context for communicating with the RS.</t>
          <ul spacing="normal">
            <li>The Client MUST set the ID Context of the pairwise OSCORE Security Context as the concatenation of: i) GID, i.e., the Group Identifier of the OSCORE group, as specified by the Client in the 'context_id' parameter of the Client-to-AS request; ii) the nonce N1; iii) the nonce N2; and iv) CID, i.e., the value in the contextId parameter of the OSCORE_Input_Material provided in the 'cnf' parameter of the Access Token response from the AS. The concatenation occurs in this order: ID Context = GID | N1 | N2 | CID, where | denotes byte string concatenation.</li>
            <li>The Client MUST set the updated Master Salt of the pairwise OSCORE Security Context as the concatenation of SaltInput, MSalt, the nonce N1, the nonce N2 and GMSalt, where: i) SaltInput is the Sender ID that the Client has in the OSCORE group, which is known to the Client as a member of the OSCORE group; ii) MSalt is the (optional) Master Salt in the pairwise OSCORE Security Context (received from the AS in the Token); and iii) GMSalt is the (optional) Master Salt in the Group OSCORE Security Context, which is known to the Client as a member of the OSCORE group. The concatenation occurs in this order: Master Salt = SaltInput | MSalt | N1 | N2 | GMSalt, where | denotes byte string concatenation. Optional values, if not specified, are not included in the concatenation. The five parameters SaltInput, MSalt, N1, N2 and GMSalt are to be concatenated as encoded CBOR byte strings. An example of Master Salt construction using CBOR encoding is given in <xref target="fig-example-master-salt-construction"/>.</li>
          </ul>
          <figure anchor="fig-example-master-salt-construction">
            <name>Example of Master Salt construction using CBOR encoding.</name>
            <artwork><![CDATA[
SaltInput, MSalt, N1, N2 and GMSalt, in CBOR diagnostic notation:
      SaltInput = h'00'
      MSalt = h'f9af838368e353e78888e1426bd94e6f'
      N1 = h'018a278f7faab55a'
      N2 = h'25a8991cd700ac01'
      GMSalt = h'99'

SaltInput, MSalt, N1, N2 and GMSalt, as CBOR encoded byte strings:
      SaltInput = 0x4100
      MSalt = 0x50f9af838368e353e78888e1426bd94e6f
      N1 = 0x48018a278f7faab55a
      N2 = 0x4825a8991cd700ac01
      GMSalt = 0x4199

Master Salt = 0x41 00
                50 f9af838368e353e78888e1426bd94e6f
                48 018a278f7faab55a
                48 25a8991cd700ac01
                41 99
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>The Client MUST set the Master Secret of the pairwise OSCORE Security Context to the concatenation of MSec and GMSec, where: i) MSec is the value of the 'ms' parameter in the OSCORE_Input_Material of the 'cnf' parameter, received from the AS in <xref target="sec-as-c-token-appendix"/>; while ii) GMSec is the Master Secret of the Group OSCORE Security Context, which is known to the Client as a member of the OSCORE group.</li>
            <li>The Client MUST set the Recipient ID as ace_client_recipientid, sent as described in <xref target="sec-c-rs-authz-appendix"/>.</li>
            <li>The Client MUST set the Sender ID as ace_server_recipientid, received as described in <xref target="sec-c-rs-authz-appendix"/>.</li>
            <li>The Client MUST set the AEAD Algorithm, ID Context, HKDF, and OSCORE Version as indicated in the corresponding parameters received from the AS in <xref target="sec-as-c-token-appendix"/>, if present in the OSCORE_Input_Material of the 'cnf' parameter. In case these parameters are omitted, the default values SHALL be used as described in Sections <xref target="RFC8613" section="3.2" sectionFormat="bare"/> and <xref target="RFC8613" section="5.4" sectionFormat="bare"/> of <xref target="RFC8613"/>.</li>
          </ul>
          <t>Finally, the client MUST derive the complete pairwise OSCORE Security Context following <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>.</t>
          <t>From then on, when communicating with the RS to access the resources as specified by the authorization information, the Client MUST use the newly established pairwise OSCORE Security Context or the Group OSCORE Security Context of the OSCORE Group where both the Client and the RS are members.</t>
          <t>If any of the expected parameters is missing (e.g., any of the mandatory parameters from the AS or the RS), or if ace_client_recipientid equals ace_server_recipientid (and as a consequence the Sender and Recipient Keys derived would be equal, see <xref section="3.3" sectionFormat="of" target="RFC8613"/>), then the client MUST stop the exchange, and MUST NOT derive the pairwise OSCORE Security Context. The Client MAY restart the exchange, to get the correct security input material.</t>
          <t>The Client can use this pairwise OSCORE Security Context to send requests to the RS protected with OSCORE. Besides, the Client can use the Group OSCORE Security Context for protecting unicast requests to the RS, or one-to-many, group requests to the OSCORE group including also the RS. Mutual authentication as group members is only achieved after the client has successfully verified the Group OSCORE protected response from the RS. Similarly, mutual authentication as OSCORE peers is only achieved after the client has successfully verified the OSCORE protected response from the RS, using the pairwise OSCORE Security Context.</t>
          <t>Note that part of the ID Context of the pairwise OSCORE Security Context can be assigned by the AS, communicated and used by both the RS and Client after the exchange specified in this profile is executed, in order to compute the ID Context value as defined above. Subsequently, the Client and RS can update their ID Context by running a mechanism such as the one defined in Appendix B.2 of <xref target="RFC8613"/> if they both support it and are configured to do so. In that case, the ID Context in the pairwise OSCORE Security Context will not match the "contextId" parameter of the corresponding OSCORE_Input_Material. Running the procedure in Appendix B.2 of <xref target="RFC8613"/> results in the keying material in the pairwise OSCORE Security Contexts of the Client and RS being updated. The Client can achieve the same result by re-posting the Access Token to the unprotected /authz-info endpoint at the RS, as described in <xref section="4.1" sectionFormat="of" target="RFC9203"/>, although without updating the ID Context.</t>
        </section>
        <section anchor="sec-c-rs-setup-server-appendix">
          <name>OSCORE Setup - Resource Server Side</name>
          <t>After validation of the Access Token as defined in <xref target="sec-rs-c-created-appendix"/> and after sending the 2.01 (Created) response to an unprotected POST request to the /authz-info endpoint, the RS performs the following actions, in order to set up and fully derive the pairwise OSCORE Security Context created to communicate with the Client.</t>
          <ul spacing="normal">
            <li>The RS MUST set the ID Context of the pairwise OSCORE Security Context as the concatenation of: i) GID, i.e., the Group Identifier of the OSCORE group, as specified in the 'contextId' parameter of the OSCORE_Input_Material, in the 'cnf' claim of the Access Token received from the Client (see <xref target="sec-c-rs-authz-appendix"/>); ii) the nonce N1; iii) the nonce N2; and iv) CID which is the value in the contextId parameter of the OSCORE_Input_Material provided in the 'cnf' claim of the Access Token. The concatenation occurs in this order: ID Context = GID | N1 | N2 | CID, where | denotes byte string concatenation.</li>
            <li>The RS MUST set the new Master Salt of the pairwise OSCORE Security Context as the concatenation of SaltInput, MSalt, the nonce N1, the nonce N2 and GMSalt, where: i) SaltInput is the Sender ID that the Client has in the OSCORE group, as specified in the 'salt_input' claim included in the Access Token received from the Client (see <xref target="sec-c-rs-authz-appendix"/>); ii) MSalt is the (optional) Master Salt in the pairwise OSCORE Security Context as specified in the 'salt' parameter in the OSCORE_Input_Material of the 'cnf' claim, included in the Access Token received from the Client; and iii) GMSalt is the (optional) Master Salt in the Group OSCORE Security Context, which is known to the RS as a member of the OSCORE group. The concatenation occurs in this order: Master Salt = SaltInput | MSalt | N1 | N2  | GMSalt, where | denotes byte string concatenation. Optional values, if not specified, are not included in the concatenation. The same considerations for building the Master Salt, considering the inputs as encoded CBOR byte strings as in <xref target="fig-example-master-salt-construction"/>, hold also for the RS.</li>
            <li>The RS MUST set the Master Secret of the pairwise OSCORE Security Context to the concatenation of MSec and GMSec, where: i) MSec is the value of the 'ms' parameter in the OSCORE_Input_Material of the 'cnf' claim, included in the Access Token received from the Client (see <xref target="sec-c-rs-authz-appendix"/>); while ii) GMSec is the Master Secret of the Group OSCORE Security Context, which is known to the RS as a member of the OSCORE group.</li>
            <li>The RS MUST set the Recipient ID as ace_server_recipientid, sent as described in <xref target="sec-rs-c-created-appendix"/>.</li>
            <li>The RS MUST set the Sender ID as ace_client_recipientid, received as described in <xref target="sec-rs-c-created-appendix"/>.</li>
            <li>The RS MUST set the AEAD Algorithm, ID Context, HKDF, and OSCORE Version from the corresponding parameters received from the Client in the Access Token (see <xref target="sec-c-rs-authz-appendix"/>), if present in the OSCORE_Input_Material of the 'cnf' claim. In case these parameters are omitted, the default values SHALL be used as described in Sections <xref target="RFC8613" section="3.2" sectionFormat="bare"/> and <xref target="RFC8613" section="5.4" sectionFormat="bare"/> of <xref target="RFC8613"/>.</li>
          </ul>
          <t>Finally, the RS MUST derive the complete pairwise OSCORE Security Context following <xref section="3.2.1" sectionFormat="of" target="RFC8613"/>.</t>
          <t>Once having completed the derivation above, the RS MUST associate the authorization information from the Access Token with the just established pairwise OSCORE Security Context. Furthermore, as defined in <xref target="sec-rs-c-created"/>, the RS MUST associate the authorization information from the Access Token with the Group OSCORE Security Context.</t>
          <t>Then, the RS uses this pairwise OSCORE Security Context to verify requests from and send responses to the Client protected with OSCORE, when this Security Context is used. If OSCORE verification fails, error responses are used, as specified in <xref section="8" sectionFormat="of" target="RFC8613"/>.</t>
          <t>Besides, the RS uses the Group OSCORE Security Context to verify (one-to-many) requests from and send responses to the Client protected with Group OSCORE. When processing an incoming request protected with Group OSCORE, the RS MUST consider as valid authentication credential of the Client only the authentication credential associated with the stored Access Token. As defined in <xref target="sec-client-public-key-change-dual-mode"/>, a change of authentication credential in the group requires the Client to upload to the RS a new Access Token, where the 'client_cred' claim specifies the new authentication credential that the Client has in the group.</t>
          <t>If Group OSCORE verification fails, error responses are used, as specified in Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="8" sectionFormat="bare"/> and <xref target="I-D.ietf-core-oscore-groupcomm" section="9" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/>. Additionally, for every incoming request, if OSCORE or Group OSCORE verification succeeds, the verification of access rights is performed as described in <xref target="sec-c-rs-access-rights-appendix"/>.</t>
          <t>After the deletion of the Access Token related to a pairwise OSCORE Security Context and to a Group OSCORE Security, e.g., due to the Access Token expiration, the RS MUST NOT use the pairwise OSCORE Security Context. The RS MUST respond with an unprotected 4.01 (Unauthorized) error message to received requests that are protected with a pairwise OSCORE Security Context associated with a deleted Access Token. Also, if the Client uses the Group OSCORE Security Context to send a request for any resource intended for OSCORE group members and that requires an active Access Token, the RS MUST respond with a 4.01 (Unauthorized) error message protected with the Group OSCORE Security Context.</t>
          <t>The same considerations, related to the value of the ID Context changing, as in <xref target="sec-c-rs-setup-client-appendix"/> hold also for the RS.</t>
        </section>
        <section anchor="sec-c-rs-access-rights-appendix">
          <name>Access Rights Verification</name>
          <t>The RS MUST follow the procedures defined in <xref target="sec-c-rs-access-rights"/>.</t>
          <t>Additionally, if the RS receives an OSCORE-protected request from a Client, the RS processes it according to <xref target="RFC8613"/>.</t>
          <t>If the OSCORE verification succeeds, and the target resource requires authorization, the RS retrieves the authorization information from the Access Token associated with the pairwise OSCORE Security Context and to the Group OSCORE Security Context. Then, the RS MUST verify that the action requested on the resource is authorized.</t>
          <t>The response code MUST be 4.01 (Unauthorized) if the RS has no valid Access Token for the Client.</t>
        </section>
        <section anchor="sec-client-public-key-change-dual-mode">
          <name>Change of Client's Authentication Credential in the Group</name>
          <t>During its membership in the OSCORE group, the client might change the authentication credential it uses in the group. When this happens, the Client uploads the new authentication credential to the Group Manager, as defined in <xref section="9.4" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
          <t>After that, the Client may still have an Access Token previously uploaded to the RS, which is not expired yet and still valid to the best of the Client's knowledge. Then, in order to continue communicating with the RS, the Client MUST perform the following actions.</t>
          <ol spacing="normal" type="1"><li>
              <t>The Client requests a new Access Token to the AS, as defined in <xref target="sec-c-as-token-endpoint-appendix"/> for the update of access rights, i.e., with the 'req_cnf' parameter including only a 'kid' field. In particular, when sending the POST request to the AS, the Client indicates:  </t>
              <ul spacing="normal">
                <li>The current Group Identifier of the OSCORE group, as value of the 'context_id' parameter.</li>
                <li>The current Sender ID it has in the OSCORE group, as value of the 'salt_input' parameter.</li>
                <li>The new authentication credential it uses in the OSCORE group, as inner confirmation value of the 'client_cred' parameter.</li>
                <li>The proof-of-possession (PoP) evidence corresponding to the public key of the new authentication credential, as value of the 'client_cred_verify' or 'client_cred_verify_mac' parameter.</li>
                <li>The same current or instead new set of access rights, as value of the 'scope' parameter.</li>
              </ul>
            </li>
            <li>After receiving the response from the AS (see <xref target="sec-as-c-token-appendix"/>), the Client performs the same exchanges with the RS as defined in <xref target="sec-c-rs-comm-appendix"/>, with the following difference: the POST request to /authz-info for uploading the new Access Token MUST be protected with the pairwise OSCORE Security Context shared with the RS.</li>
          </ol>
          <t>When receiving the new Access Token, the RS performs the same steps defined in <xref target="sec-rs-c-created-appendix"/>. In particular, no new pairwise OSCORE Security Context is established between the Client and the RS.</t>
        </section>
      </section>
      <section anchor="sec-comm-as-appendix">
        <name>Secure Communication with the AS</name>
        <t>The same considerations for secure communication with the AS as defined in <xref target="sec-comm-as"/> hold.</t>
      </section>
      <section anchor="sec-discard-context-appendix">
        <name>Discarding the Security Context</name>
        <t>The Client and the RS MUST follow what is defined in <xref section="6" sectionFormat="of" target="RFC9203"/> about discarding the pairwise OSCORE Security Context.</t>
        <t>Additionally, they MUST follow what is defined in the main mode of this profile (see <xref target="sec-discard-context"/>), with respect to the Group OSCORE Security Context.</t>
        <t>The Client or RS can acquire a new Group OSCORE Security Context, by re-joining the OSCORE group, e.g., by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. In such a case, the Client SHOULD request a new Access Token and post it to the RS, in order to establish a new pairwise OSCORE Security Context and bind it to the Group OSCORE Security Context obtained upon re-joining the group.</t>
      </section>
      <section anchor="sec-cbor-mappings-appendix">
        <name>CBOR Mappings</name>
        <t>The new parameters defined in this document MUST be mapped to CBOR types as specified in <xref target="fig-cbor-mappings-parameters"/>, with the following addition, using the given integer abbreviation for the map key.</t>
        <figure anchor="fig-cbor-mappings-parameters-appendix">
          <name>CBOR mappings for new parameters.</name>
          <artwork align="center"><![CDATA[
+----------------+----------+------------+
| Parameter name | CBOR Key | Value Type |
+----------------+----------+------------+
| client_cred    | TBD      | map        |
+----------------+----------+------------+
]]></artwork>
        </figure>
        <t>The new claims defined in this document MUST be mapped to CBOR types as specified in <xref target="fig-cbor-mappings-claims"/>, with the following addition, using the given integer abbreviation for the map key.</t>
        <figure anchor="fig-cbor-mappings-claims-appendix">
          <name>CBOR mappings for new claims.</name>
          <artwork align="center"><![CDATA[
+--------------+----------+------------+
| Claim name   | CBOR Key | Value Type |
+--------------+----------+------------+
| client_cred  | TBD      | map        |
+--------------+----------+------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-security-considerations-appendix">
        <name>Security Considerations</name>
        <t>The dual mode of this profile inherits the security considerations from the main mode (see <xref target="sec-security-considerations"/>), as well as from the security considerations of the OSCORE profile of ACE <xref target="RFC9203"/>. Also, the security considerations about OSCORE <xref target="RFC8613"/> hold for the dual mode of this profile, as to the specific use of OSCORE.</t>
        <t>Unlike the main mode and consistently with <xref section="6.1" sectionFormat="of" target="RFC9200"/>, the dual mode of this profile cannot be used to issue an Access Token for an audience that comprises multiple RSs. This is because the proof-of-possession key bound to an Access Token is the OSCORE Master Secret included in the OSCORE_Input_Material object of the 'cnf' claim, and it has to be shared only between the Client and one RS.</t>
      </section>
      <section anchor="sec-privacy-considerations-appendix">
        <name>Privacy Considerations</name>
        <t>The same privacy considerations as defined in the main mode of this profile apply (see <xref target="sec-privacy-considerations"/>).</t>
        <t>In addition, as this profile mode also uses OSCORE, the privacy considerations from <xref target="RFC8613"/> apply as well, as to the specific use of OSCORE.</t>
        <t>Furthermore, this profile mode inherits the privacy considerations from the OSCORE profile of ACE <xref target="RFC9203"/>.</t>
      </section>
    </section>
    <section anchor="profile-requirements">
      <name>Profile Requirements</name>
      <t>This appendix lists the specifications on this profile based on the    requirements of the ACE framework, as requested in Appendix C of <xref target="RFC9200"/>.</t>
      <ul spacing="normal">
        <li>(Optional) discovery process of how the Client finds the right AS for an RS it wants to send a request to: Not specified.</li>
        <li>Communication protocol the Client and the RS must use: CoAP.</li>
        <li>
          <t>Security protocol(s) the Client and RS must use: Group OSCORE, i.e., exchange of secure messages by using a pre-established Group OSCORE Security Context.  </t>
          <t>
The optional dual mode defined in <xref target="full-version"/> additionally uses OSCORE, i.e., establishment of a pairwise OSCORE Security Context and exchange of secure messages.</t>
        </li>
        <li>
          <t>How the Client and the RS mutually authenticate: Explicitly, by possession of a common Group OSCORE Security Context, and by either: usage of digital signatures embedded in messages, if protected with the group mode of Group OSCORE; or protection of messages with the pairwise mode of Group OSCORE, by using pairwise symmetric keys, derived from the asymmetric keys of the two peers exchanging the message. Note that mutual authentication is not achieved before the Client has verified a Group OSCORE response using the corresponding security context.  </t>
          <t>
In the optional dual mode defined in Appendix A, mutual authentication can be achieved like for the main mode (see above) or also implicitly, by possession of a pairwise OSCORE security context. Note that, in the latter case, mutual authentication is not achieved before the Client has verified an OSCORE response using the pairwise OSCORE security context.</t>
        </li>
        <li>Content-format of the protocol messages: "application/ace+cbor".</li>
        <li>
          <t>Proof-of-Possession protocol(s) and how to select one; which key types (e.g., symmetric/asymmetric) supported: Group OSCORE algorithms; distributed and verified asymmetric keys.  </t>
          <t>
In the optional dual mode defined in <xref target="full-version"/>: OSCORE algorithms; pre-established symmetric keys.</t>
        </li>
        <li>profile identifier: coap_group_oscore</li>
        <li>(Optional) how the RS talks to the AS for introspection: HTTP/CoAP (+ TLS/DTLS/OSCORE).</li>
        <li>How the client talks to the AS for requesting a token: HTTP/CoAP (+ TLS/DTLS/OSCORE).</li>
        <li>How/if the authz-info endpoint is protected: Not protected.</li>
        <li>(Optional) other methods of token transport than the authz-info endpoint: Not specified.</li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Benjamin Kaduk"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Dave Robin"/>, <contact fullname="Jim Schaad"/> and <contact fullname="Göran Selander"/> for their comments and feedback.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+292XLbWJYo+q6vQMgRbamSZIqUqCk7O1qW5LQ7PR3RWUNU
dThAEpJQJgEWAVpWZ/rE+Y3zdF/uN/TTfas/OV9y17RHbICg7BzqRKkqnBIJ
7GHttdc8dLvdrQ+n0f7WVpmWs+Q0it7eJtF3y3y1iF6P/5pMymiUTFbLtLyP
rvNldJ5nRbmM0yyZRleXo7fXq1l0mX1Il3k2T7KyiHbk3dH566vL3ejNMr9O
Z0mUX0clDHy2gn+zMp3EZZpnUZxN6aN8mf4Xf+LP4Y59dg5DPl3G8+QuX77f
isfjZQKrt6e0Z4THt6b5JIPnT6PpMr4uu2U6yydxN54k3Rt8q5sXk3yZdBf8
VncWl0lRbm1tPYqKEpb3Lp7lGbxdLlfJ1la6WNKvRTnY2zvZG2zFyyQ+jZ5n
ZbLMknLr7uYUJ43+AKtLsxte2Nb7O/NI9wKXsQX7P4UJplvFajxPiwK2Xt4v
YJ7nl2+fbm1N8im8fhqtyuvu8dYihWOJokfRJM6iVZFE8XIZ30c76XUUz2bR
fVLsRgC227i4jW6TJawzisp8corfwK9FviyXyXVxSmNMk+t4NQNglrn6/n7O
X+OfWzEdx+lWRD9d+W8UpRk88bIXvSUA6o8Zti/j5ST3v8qXsIOr56PL6OyJ
/hAONklg78+L+Pqv+XJa3MQA5mgw0E9MANVOo+9TAL/5LJ/CLKPLbv/w4GAv
GsHu3t/ms7n1wCorl/De6C6ZJpn+PJnH6ew0muP6enz2/75Me0US3t9VL3r2
9/++ma2yqbfDq/R9vJxWv/0NbXJJS+zd5rTCpm2+6MGlTsv/8vb4YjW9S2+8
r2iD5/l8nJbJ5LayxYu//v3/fZ8lvMH9vrfBl/Fs/vf/ru5w0O/vD6vfNm5v
RquDPcHq/n2iFtSD38KbfNqL3sDlheey1NsoUJBskhSTOPAE7fdymU6KAshR
4FDf5sviNp5n6lD3f9ZDvVZL7S3UUv89kdXR3re2snw5B+L5IcFL+7x70UsT
IBtE1YjEwVPz7jgtql8L7dNPOU8giXyf3Ftj8OP40NXTczjCE/l1eLQ3VL8e
H6pPD48O1K9Hg+FA/Xp0cCy/HvePDtSv+yfqgePD/r769eDgSA12MthTnx7p
T49P9BQne3oK+FWNAG/tmV/75ld64NXz0dvu8d5ed3h4xgSvkfhd9qIn8fJ9
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
rzpMOEem9dMNsLnQykiqrS0iQBD1bTECk1SUHdJ8VQB/Ra6Q8LNE3hzjOmKT
kJ/SBg9IIhPgeQnfU9+2VxjSyRxOrekaxeGUKZjMa/wLQldFlETOU1WS1EET
OYpLzwVAb+GMtvnSHh0+gP/c3CpDxoIlOjnol8S5l2SqsQnBWs8vYnD8Ho3/
MzSJCHksrUUpeImxwrqgTIDhA5S3lII9yRdyHw3MhZoKKNFkARMSqWFoMZ91
ZccAAhi+VeEE2io8zlcZvR+T62VHdlJxjcCXu2vvzc/pgKn1CuFnf1slRUnm
5Fdw9RhfQuMrNU9Z0BWOgJiUTIkgTc1NBu7FpwbyHimuSTwVvCYuSzxZuUjU
FW/ylaBhnU0oaO3yrtnP61VyxnIPxZIgHBgbcppmk9lKDx04G+dc63xYQIe6
ifJ/wzSNPi1BNVIBiyBu17izHKOP49RaKNVtI79WXBrHluYOEqIBtMCwXBFi
0BZ5/nokT2FEhhIq9ob7zP5EziEuqlhEz52cLDmoPga8v/UWXaYvSVaskFUI
uNzDPiVnWBJnBSvHoMbBsRegEsQlvYWAm04ZCwx4NCfbUdY6kqJ3v0G2Pb5X
T5KaoB4lkC7ilJV5X4mYwn8+KJMaaUvF/XyegHZFGKUNkGjpXSTIB+SGKTRU
Z4gr0rPQouCkHj2K3qKJMctn+c199Aj9jqX54BPTV6QqdxiaFm2//GH0drvD
/41evabfry7/xw/Pry4v8PfRs7MXL/Qv6onRs9c/vLgwv5k3z1+/fHn56oJf
hk8j76OXZ3/a5uPafv3m7fPXr85ebFf4Bft3cmWxXC4wPGTKPMviMU/O30T9
A0Y4jEgCLGMU7R8dwO93t0r0J2sE/0kGThCekpg8WhhCOYkXiAwFXeYC0Dmj
QEqA5hUQPuW8SD4uGCV4XdfxPJ2lMIh25COYWUMji/CiJIduLK+cP3l9Jas7
OYCVdpouS6cifXaiwB3EuTYU30iMAHyx7K9M5JLTra3fuTJCR8l6HERCsgQa
KscSCaJdr0ofJina02JikENvHC8QX+Mwl/idr2QaEt0xkidNapNaP64CjaC0
5o5DwoGk8ccufyXlMEZtoKQ1hoI0rHCIS+UNR4pat1reKh36H5IxsyMgIud/
eFuwnRZ+A/oap3M0xKN6fH4+gq/4ePdP6Mj/2BvunUQY9QOUdkL6JKPEyWAo
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
fnHskH206t0Jrx59j3AuK0pd1Rt5kb7XVRKwCVTN7V9/XBhuYMfoSpEBq9Jj
oAQeXhUMFo7JvP1FAgstZxtZUcZxwblkQKjdKEmqf8m+PN27izpWOn23A1s1
K/ViHKy5TcwIOQh3ypooE2wWpVqey2WjE6AbZ3BHapSGhujYceSBm6BeLXjt
rvkNIPJDNmuHA1y0JnbCWQodSSJVQ1U0gCYl1ka6kvTbcV2CTgEHM5KOIveD
rp3hdf1vgoyTPmclusk5ejUy7k0dCuWZ52Pa0JBY2k7Iuuey5G7m1txoTwqZ
XCvTopoSIDZPs3yW30h1TxN213iPl+gLU99oMWCJoojcGZhge92GtiUIw5hk
K1sObZb8sJivYu0Y/6wSYC7VOQ1aaqtCBxvw3wgfil7DGB/S5M4kRyoW1c3l
KyO/egXUTUn5LFIPIwFBcUFKxVddppRcXrVsu8ZsuwnVWsN8bIMoxmgHPLXd
AJt0cws8SexrnyS0Sqf+jxXgCNEF3FgtQmn42AlTFUirEC0V445D1kWZOy4z
U3PKC6N/QKdc4I9YmiV+L71DAc7XqlawWphT56ByVQQ/JE20RbYIOakNBl3r
iA9C0WvMu1dXtl70qvZEa8BkDqsnZYmaRwdbT5PYfjXqS1GgAeddB/K1iGGf
jbSDm6IC7JHOO844xPi98kSU3eYV7TW+FithdOcmne5Gex9V+zoG8w2mWhcS
mWWSQHcKfhgfg395CfDLwCuh5RQt44RP2FPhBClNYJUTlFdl3zlLb/ZdpXRa
abs5poO1Y3cb+6wgfKw/als0gbL4U/RnVO30/VYdTOHDf/vP6Cc3Nr72B+OV
m342GefP/0qhyhhbaS0Gfx6yHipgg2TwWYruwQesp+lng3FUCDZnRUuuVCVw
u/nn32g9O/EKNPltOORtDNKA3xknN97XDb9rkL/X6+1uuq/6Lzcb51/X7t6N
m/gKI1CeW7EH+Ejr9TTAcLN91cNws3H8P7znGH8Ed6w4FIUX7cfBvVt9ejvR
q34HqFt/d8P11H+52Thw7lxrSjchfjXABQ12YXO//Hq+fqNEUOcn9HHjOFXB
lH8CHzePc5FQyCdg+Nf2N4GP/2Hp2OCfdOyz6VgVhpvt6zdBxzwkaRwnQMce
EyF7vPuboWO0oMHjXXdjvzAd0xTHe7X5CTWOplNBOkRLaHziS++L6Y+S7T0B
cTM+yD877xHzid88aD31X/5znNA4X7+pWhO/ech6atF3w3EU+mItFNDNDO7+
gvzC4LMElIdIxS9EN+qOZ7Nx6o9nw3Fqj2ezcb4YfMJtvTYeR1vczsWS4TRB
3WCcnVib7ClrZdeG0G/gvj90HLgUjgVRk/qvNqfzTOMdyQh+/rL5vjwpSVjG
XzaTWxp+NpQ3PAAZ2rH5eWkQ9X9dPvibvF9OfdZdX/5pNc4vc+6by5n63H9l
+ednO3fH+PkPfO72n6CbPXScUP2Hetu+qgJRcXE1ln4gn1jSPcckYknKafCI
LajngHrUdZCJO8B9ZL3L0S4BuG5CzPS9xTp3Va+I55mxHJdSpt1R5N9Iw7qm
vXKQlbS2s7fq9QVQPX4q+WlOh0fLh6saV1JNzxwDG15JI75MFQFIyYvRx+CU
v5kmFUXCedmqA+OVykeFZyVxkvKO1zhmC6fAaEnZvNTjTqcPuiELsjrqz4PO
j4z6namaSnbFl3DWHaasJ5gTlhbzhjJjXjQ3vXfO/YC6T8niEn2rfCykuMaT
5CuMQlcpyWYdDVFqlCkYLiUYXL1U89WpdR3Mb0sWXCycYwIr5dF7kZWzd1ez
NAlUUKmnVItrBoiFCXUfKOJgTUJf2zYOiA5+x7XGQIQcdpH6+UnWANfpEhbs
oLrckjWNn6xK2XCKKg4avnWKz0o15LoeG/R1K7zQwTaZaqGO5YYwKFe1teHL
NwhevsHPdfmYHI2SEsvWMbTerDsSQ6fEGV/g61WiZFf0XdcUgjaEv8Nt9jpm
rEURvwidioKloIJdtxpzc83fQKFOh/jAcWFUR2Ycz+gDCXw6CH2K4zl9fnRI
drW3B6/qHRU9ffdShRvpSHrdH2RdN7q3dlV2LmSge7gsKLN0LXhDvnbdgMaF
j4l5rtQENKEvVBBkiSm0Vnl05MjqJkwwzlsXv6ngrNxJs6qGVi0U5yKFYTgk
XIJROdBA6jU7nX1UyWzmS/WF81NKkszhokuJeyu6jOtu3Xl9SHTYpPBidN3L
onq65jmRZW0PVa9rOGF82ql/UagTHzcLNfnORE8KxS9fDfh7j6Xrc9Tigepz
gPE7caEJjN9wKzDawKCn14LKGssmVF4Re9OU1Co7F+q6SgdThZFU8qCIMHjg
ZVzgfRpxBalgVSFdtAoA+z7DSHGstO8I705wKj7q9Cy25Khg0W0dX9lIVySg
UhWq0ataezPTwgoJtJu0bNyJKNBqzG7CavXJU1pSustfbdZYgs84lZdbkeRq
88tNWgYGDsmqC1XfVEtxY7cFVoBJpVkrTvsFmdRvlQ1VXvY66FQLrttNQwTE
D2JRLRlPKxpr5VeE6WznIXTWp4yoqXgUNkgZsV95gNBWyXZgwCrJDtDX6khy
LF+WwApU2xBZtfzGfsRKy7LGtqJu3UL8RjVZj0fyigShF8EYeNUFVxOZwiW+
XgU8AJceV0roFxXAkDAxS27SMsXYcoFLDaVmiT3YmrHegOCombaszoXYYUHS
lU0Bq7bJX6gvW03XreYOkW7DDmoLl2TWFanvIFjVOtcdrVEG1ZB17Q06bISo
csF2BTGk4JqdQUMv+1k5Ds7r/sNubLVXugkLIpXpLKjScpmYqap6LcVzuCqU
6mymEjdaiBVSVRzhTcGkXnHMHbs3NxnaMCgeZW1485qSBClxaFcLxRg/bkOb
6bzUym5xeGe8plVR+LaaI2Oo2VcoJSlNSzgQoGo+hQboaDag6HhjesOIwoRF
ecAjlPERLEbyoIIyVCBKX5gzo6RcxGUc7Zxdnl3sRju0og5l03DPeaL3d7kF
PV2uCBgDTscFknKEOoEqnwCM+HS8JWtFryV0pcNZZuqH4fq6hDeoq7sqnpSy
l8YhlKU3znOi/0lauv3aI83F+G7wHmYJNxyc5VyiiQx91JVG6KlqS6DLoVba
Cv51xX2BFskG9tx11Gi3kjemqtIjxwv2gHXrsOoY7c+wj4W63a6wL0BdBoLT
s/dsVNusV7Vfqs0j4TJoRZW6kD1MOVF9xoUUW5cQ8Ps4KDlwVNGiVD/FoIgI
W6qX4nTqouS3aFRfi+Y6tS5W1YVdCYYTVyT3lC6aJSh1anOhVL0jgzaF5ASx
9mcBSzcdtJsOKQ+BokQNNZ4pNU/yzXaDoltlNF1MXVHh8SqdTQPyW6oFRvvK
8G1B657cHiuLnhtke4/x3q3HdlUzY0wiPRudMjrBQvjMLxWuPHJR1U0q9307
gu40osPQa7uG+J2ubaeDaapdtf/WYbaUqpaUKAB1lkgR7JsVIA1gXOI3iO1Y
9UhVnWeEoUf65PydVaTkugLJsGT7Eum8QAvzm3xV1EBjTYKke8yBNP7dYO8o
xaA4K1sag2nFz3QQI5i+ek2o51cRX8T32Ekv9L5VtuFxx02aqq+a4hTN62iM
r5tWSUFqUpNh32xKaFviXHV1tnQ2KlU9FSGhsbczN1zzVqiEKMpwo3erndpc
S4eHDJuctTlhf8ePi6ba8ObuNXSoY/+VTsKtoXGOOqWTndmg3boXnb++h3eR
i7i5FdZLnrpp3wYuVnXlkL28Rc/oQPNv6zJYqyErBGfrJR9jNJHg2UsRepsY
unl48mxXCHEXk5rtVDw3S+wZSCFYa4XI0M45EJBv93p7g92tH5Zp91lelKfR
dlz0ZNAegGebvnoTl7fwFZ3W9pbrGcNXAp6x7a03fDNPt34E5N9WleG3Ixwo
mS9GSVbky4Ojfn+7gw9Q+iJ9i7ISf2aV2IIvbh+rQKvH/IapVETfqs/tsjbw
BU4Pn76fTArzJ76+GtN0B4PucK+73+8+fdq9fNrdP+ruD7r7J7QCehCupP0i
fHL+enT57vvk3v0YJynps0HH/nCy/IAf9p0PP/Kap0eTyd7RYJoMBnvD8XTS
H+4fxcOD/elwf3K4Fx9ar6ifeDI+HCSTyfT4ZG9ydB0PjiYnyf7wYO/4ZDxO
+vuPnXnueZ7rk2HSnx6Mj4f9eDCZHO9dX18fH02Pk8H+9WAQXwfmGR8NhrCM
YTLsD6d7g72j/X5ydBLvjw8SOLXB3mP9zqct+7/47yf/IFQ1MVpMr9ejl3d0
dXK2ViILnqfEDlF1omYu5f1uZ+tTME6lEfdVqMqlXCZ5yElTcZty17RHj91C
AT0MaZH8VnVRLQuiEqAt7kN+qSYaEeA2eNNpuPORf+OVyIZlLoltNl95unxt
UN1F8yCKV9C7gtoPROvWKP1AdG6HyoS4NbjWDHUf2XQFiIb2ycApz1UlLWwM
CPwcTnuX8GvrRUzM37WiY73qu5gr7UtYCAXMSHtaJz6EWT9mhzs167UxYK1e
ZZkGJZ8b+aXfJI2kMlV3W5wmbSTtOCTsdMKFsvZtKb9viqs4c8OA71Hkgjs3
m9Z3ZTZjHR9RNS2SO6xXuS23alUrMR3j+xI7s5J5SWI7XKXdd6XYKeU6czyu
GLvclrSeekXSopE2O57LjFVZ2zWnWmMqTttx2hBIJ0BujjNNuG4Hy51uVx5H
TAtJZJUeeKXqzSNHopvMuJSTSeEdSYg6PV8FqtkLJE+CuyjlOWlfx0n8HWc1
Xeu1mi0+MwVn6ZEQFGDp5Vt3/WPymmKvIQ0zqxun05A+1pFetBPvKnmyvVJ3
pglQnswWOpPlMkebMiD9dppR0NM7eWu7Fu9RV953dWXBMOe26oAzXQHJpinK
OGqfv3RJRJ1QXUXPF2X3v+44+lHHE4bx7ELyfC8ioRhD4iREQwEw0Iu5pv18
F4PiuqgyMwFJpOqGssFbVeBVr3nc7SY8u9PYSD2kP2zcQxsIHxaPo2J0X5C+
fxmtA4hovRhCbLhW/aBvG3QQ/b2riNDHLbURelarJPSXltzXKif8VEBD4S+E
lXnawPZ7pbbs9bWsLKLyBgKtDdZNhVp9l+UCB9rHNcq5j9B+515SU1T6ERv3
ghYctnbV6boplTV6/ebt89evzl6sDTGQxiliZqulb/1ekMCFTEKVTnnRDqsA
1i01rHe3YiS643L6UojJcm+bG92JxhQsJqFCLQwk1QUzUZKGIfcgd3xUELJD
BKWbTa2II7HpI8SV81MXuMY+G5JDvFAa3Sq+9C2ZdVJeNg36xJ3advkY5akK
XrqNx8TrGUIM3XnP5fNtrEnhCpRnIw6NSKZFhZ+6kCJWUmdhS61uLw9qvtje
dFQEOImIHuQg10H3QWtZDdv1zGWq/UtSEL/Emok8EWOFabxGyJG/MSa7a3RA
adCqVkyF60JR5m2SZ7ToNs0TiY1PlijoshYCVHgp8QvkxlY1ekUnim35bJlQ
txbXJ8VQwQhSe/G8Q+PP1ksWPKxig019Bp4n4vl1aIN3FEYqkerYPBVLS1nd
kPSM5WqZEZ1icU/HWVVDMtaIeAx0jMJAW4tl73arl1bK5QKcry7/xw/Pry45
bik2XQ79ppWM0koE2Qae+26hmssYLPWi1LYr3WO2Q1GUViOqQItRRw1dGWkn
VHKuzO+oo7ruKOmXDsVdKudeWlRiMRgzgxTDXgXT7DaeNuPmLFvEoShmc53X
B5Swqk4FK52FkU4bcEHbPtvNO9U0dHzpsHfbK8PGGGIFav5QrHTtWr9AnN0S
aArDTMgDD2c31vlfXF7OkqezBI8MiwLrXByKaiNkgQnep1jo8dpUYaYrQVo9
a8pifeRTRk1lGReWqLympmU4MtKJmmbRR7n4VCOsLPH0CV3Z8BorPHYabv2+
TXh0HH6Qo+l6kmGbRT7+K4xpRTfXGFAGtjlGVdquumVcN5YfJ2uvuo+Rsk3B
pYaO0Q1TpZ1NVE14QzuubcI8bk9SUJCu+c6STSSIn8Ji8uU0WVrxm85LKQWN
qFZWOvRfjMRiHHDjbWyRxWrTB8CKpxhSRBJfPK907HO6q7f0A9vyym5b7+/n
O0w5aKKtDCPn74r8zQ5O217GkORay1Unocf7Qf+qSSGL0SQbPp20DG+hNk2n
3tEdbF3guLuDtzg0r6zO6im4gTz5f/7X/7aGhL/qzkPChDRyhO9b4Kw3CCBv
f4AtDs+q8u2vch2lWr/IwPoegwSjDMgBDS00ZhNF3GcLsGtrEQXORhu0yrCQ
6NtuMiO3FtKh1va4k0RApstyuco4gOGaxEwgP+NUAlZCnmNdzYqsN5j/t6v9
wdwbp5032CrVxTaS4/2D/bi/19+L48HewcFkuB9pN+EyQUI35dNBp0nYSxh5
sudpSMikxzgKsniX0uT7h3t7AQ8YvOA4v+LZDf59djnqnp+/7PYPu4cH3f7g
WPum0Nyj7D36w3mhPFbx9fH+8f7hcbI/3E+OjuEn6R8MDsfTk4Pk8Nq8gfZS
fqffHwzM5zqhg788OVnvtarDHd+OJN/XYL1mGY6MqAoMo50ojKlwUo3YStfV
86cYEU5NU8kas25WyNcZr6aeGe959iJFA8ZVns/5/IFjk9sSTr5/fDIYHCis
UJ8OzKfG6ocjouYJQue7G0xRnoNGAfgWcp/+oyBPZ4sxqD6YwmuOFIjD+Ge8
hTXPrxRv0ZIA2FeyYkwGwmoXtjc3j+74W8VX8TkyY0Strj2KgSBb5sIuyaFa
71GwB6G3nMIYn+yQa3HRjokBiCrsiFxunQcuSa9Moq9ev708RaEO1rGaYexv
NLlNqF/yDis07GC6Tj9itLwWemlSCdwbJ6jp70hTomVC1hzsZ82NnxKKs4/F
0XSNiZjqdfMATiS9hu3zOzuu4kfo5xHWG9g5Jg/K3n6rF1YZ+6N39umto8NW
byEN2BkoV010dHA4PLw42hvuw38vj/YPnx4NDk4OLw/OD0+ODg/ht8Oj4eDw
KfzvYkuNUUeSafHtlqEXf0gr6Z9FQ6BzF0eDBnhZbxmCzxA72GzSA2vSg+HF
eftJB9akJ5tNesLHdBz11+KEOqYD/5gOh0eDwz7gPv53OHx6eDTYO4Rjgr8u
jo7gG/r0aM89qiCvoy20wU5rC4yfZ/217yiE7qsNrD+hyvHgTMN20wx3DRle
M1NoGnzrrO1b/T37tb22r9lvHTQD8BHFqRQGeDJX35q3tvS/P+/AGmS4brUy
76E78dOTs6cstFyC0HJJQsslCi1PLk4OLg+fWstqPi9rWfaJHazbDC9r4K4K
xSJr5mayUyE4MvODDuLkhKjHcbTf2KzBn5cxYM2UNRPv7akpLzaZkt8/aEcd
eUpz956cX6BoqCa+3GTiwcMJRYsrX8Wis2YU0tPYOPSwO3R0tOYtptz7LsqA
TjwYXMDt2YN/9/eB0x0cHhzCv0P8Fz45on8H9O/JljtiraBt7aWZkFdIOP+s
OR/vZGSmhndsKum+ddaAgjzNgftC00z100QNp1pznvwzqKOMj0CRvaEqWw4F
/5wVDurf0nNV3xoe1yxSXdz96q7g5+Lo/BzUpItLVJOeXJyjmnQGatLFcP/8
cO8spCadnT85HFyen1+AmnR+9PRscHR+cslq0pMnl/39yn7qIa73U13bA/fz
9GR42b84eALq2Nng/Px47+nTp8dHF8eXg/2ng8HZ08ArT0Adg+0OL0Edu2B1
7PLo5Gz/ycElqWOt9a2KGrOh4uV6ktFyJ/ZxbmskXm+JkHAD9oyyxHUT1+a6
a+cPeTud7mGWe5rMoGiDC1pQTdsqxwE20QEJtodStbz1Yj+yD8m9Zf4V85Rr
h7VCfy1bK1uh7zmS7zNigkOVTXjeSbxc3tvuDrIwR8bCbGWIicXKii/Gg25Z
58s0HvUHYWu3F5ossSisFusz5z+VUdoaQ30USDozZaO8qNSamLI643bLUEHV
e9L2dWUUflOu9QbUeud0FDKHAgUCjlvUJwjbJtzVb2aFd8C0sRWeCFOTKZ4e
aGWPpydr4yE3Mc/TT3sbPc+w3kjPz1Ut9W0CKEMn9QVt3p3GypzNBvF1yPP5
RvHGxQXwyQmDXWc65weD9nN9YFUjOn+lLemueeHWGvhLRtHWQb09+117zBQC
+4Zj775P7qNncUEpGMKrrWyfarDsO7j9t06sJZcelIoy+aJM56oCG9bVSBW/
LYAXhx3OwqUwT0jYoEll0W7JqhO5SAEOTChxTerRzw8BkMANFThG5V7Jckpb
vwaaRyMrrypWiEwxTLML1zDFhsxYboZYXJdZXMEVR9QLRTLj8kGaYW2/ijGC
yO6fRGdyNrsBGaa8nW9HV2R7Xd6HhYGT3oEIA4cnA46hWxNQ44QFl7eVQNbm
EFLHtr02NuOtmjuBFcHcz1+9+eHtX949Oxs963DaTCVf6W4JM1Qym2vP1iku
SuGalCFdONhhTYuXAtivxOgyr80nyRRzOr2QJQ3TTnSPEohaVL4qUX56/cNb
Myq8ME4zpHh8kE0hUIf+gemah46s1TJoQ/ZtYsWJOGeIMPg8sFQhSTv7u+3k
SUcuazohGwIYHYchdJynpEBVXerVSNVx4wJVznEwsi0R2SYsLGyObldWyC6X
ztOpuoqiuB5CBV0paPGdqalpk4ZvgkNZqULuKKZsnE97bmNNemRglQLmDZ5m
GdXiytCYzWi/ljLGFt5fXZ5fPv/95YVg6GcRSZs6Xim1At1PkSrBlZqiQVKs
DLMTaicLZhdhCaodgH/HgG9X5SqTgGpnw6lKCLTXV5d/kG0CpCa3cv09CGii
+wDIqsJtKPWHcuIUUHSCQSvi5dbbVH2aQ+VH66nJCQdRt2jm3LF1TWeBjUUO
QWPpJb2O5cKsxX67kiZedA6CL7w7G9PCTeheGKG8w7PPtf70nVyCRsibHgUa
LZxTqFldtRaJgZ2urimZoe6pVgvItlilvWuMug2sOkCDamtwm83EM5QOgKYb
2Hm2F5Aob/Opn4trkFDuJRcbdN6kM1HCEmuRzkcqMlximHVu79S+oUYe8o0r
gdvZUYRvPS/nkD327/M7WsAzC7QjWwWY9AChf0/E6KrMTKnxIcnZi58MJZvZ
xqAvkfGV32UhJvzzZoIpde5LZYGpVOOrhoJyyw0Kyjk5YIi5vs0v2O5iTdb2
H/A+S890NY6py6ur8ckr6VLx+UqdP5dqBqKng8H2fmCmUgdMWKZjlVvXb4W7
nqR6J1g00SFdp79YSxYjGTkYzMlqdhzx3KkIjUhp0yy//UBg64POL9vuIuI0
RW6GIstSJadblBBsk11hdzmwlEE7yQ8rfVYKSCuQ45cGGEW464lKRrfLKsJ7
TimEwuN8sS6hGQHscEqEqF0WorFI/dbWE5UcOKlcHXW0WpxsBKNVtpeLGRKF
A2B5EphToZAgqvbAh2eVqG7bK6SM3yeFadFAPMmGgUpykktYJ45VK0fWVW6X
VzfrIsBSf/SMi3PorbYwRZPB36lX+uDGAN/xIt7eroSChXgQ0nTq6IMG+DRI
NZysJipbC0uUa6j698iUKnPbrYXJaTkd4sFlGU/ew6uMQjGqPLPETwiOM2Sd
Gidj8VGtv960/lWhRkCqxqWb3dLfgrWquHd6jco678/U8AbQA6kqqmn0K1ZF
cQLMdZPsukDhdFMY+2Hb4Xq82N2b6uHB4gB2RQB/V0WF1Sm980mCCn0hJXep
AGElo8gvGIpSgS6nC8QBURINlYAJknRtl492tPNpIuAgUQV+d3s9bFRlwy48
ejXSdUctQSNYfBQ2wI8Ea46yFG+dheLhHZMv55by3wE+vdvRLB6XOW+UegTJ
yDnlay6uWeehgoqXl7fbs2J2ScWbw2I4TrajbToq8znDcFbM88+XNW5Sf3zq
ktcLuaeV4QIBg3KuYLa7y7qc1Bb82sp35RPAoliFVxXLq4ZlLRH1pGmOmaHj
e9VVjL6v1GzZCeiHWJ9IJ7Zp1V+5saXOsDP5bhNe9KpoaBeYV8I1E0arFPd6
MmHB1KqMHmispshyRxX2XlPLumJqistWhfoztf5wFbE8A9oq9Xr95C6n1Kvi
2Fku1xRrERgOTUn8lEPHUiGAEwuKO2UKKlfHS77qhPGB8o+LFQwHpJWlIuwU
iZYE3XKog1iFzefiiem5YJeyqO2tAwsujdYP7MbYwmhi1UzLPNOK9TWeJlGb
LL/jEhEhK6IPBKG/V6qciNcCztDcsNnZtZtY1TqIRuDKQslyIR+KPX4ra/bv
VOKgX7rEvpfVXoxyBGSvsioP2Lo3xS7UxyiYOihpafUGbE7E9nqMVKb3qmpV
62gFrfJc42JNfmxbQHntO1qRJdFlPJUHr3DY496mzZUtwps0e6sMm4mS8mnz
z3e8RM5oJBNzY8P2ZztAvSV4Gfvxqa5Ln+sM8YzRdh0XLtdA46sy5g93i6hC
2+g4CvVYqwFMT1mXkb2jPZsTb9Imc/AmpmNPFEARY5ZPMO25zJeo3eTLGtO3
LUm7RGtXCtFkmuoJGlolc7SJWeBdRb+MDw8rymjnuPAbT01T/mmvpgzVEkSN
D0ZJMm2qOs/P3vB3B729vWjnSTxVmeC7a7qw0kJ0+xveU87VQTWiBGrtXLmV
l8TwKdU4MBtrHVG6i+vId42AP2gS8Aci4FuFDecKC+tax3o9Eh8sy1ezwXXY
ZLoBMGoAkd5kWBIDEY8BQdu0zFM6hlNKbKWMpTgky1YOLQg5dEKhhjZNzcIi
lu2hSStml3DAJRL1FpxHeTxPTYeCdYpGbPocBaTyDpfAAqR3QG0HE30DZKH1
dGmxiVnnoQuzR+VrLGK5IyE7fbRqxGEtCRdhUbgXaTuDIIoWMIvwiLLxdsKt
Rg/jPBMrmVXTsBGGPccjqWhmm+bQoHtobSQgBtEGNjmxXuRbllG7adPmKS1q
e9gEnCvCbZyjDjAbDxQHBIofMhMKvuvxEIy6EXL/RUwNg6qpQeJ77SoprIpo
yGC3667a9QhLBHkWoHAlrq2t10gCQ/1C63DAadBoeeJBzswMOgRLJAZsAFVd
WEQ3viSqg7hxUdNHA6dytjpkJf8a0mlew+IY3Mnn3VKxunQaCN3Xjcxz1VxP
9q2brejm83wiblMU5eM+xwtZiYVoU+hsnIQdJMrgQ73sVMkmbnRmLPGrzDP3
O2b58/pARbfaenO0hRV3jk3w0Ny6EKnHaoTXar9eRTdpVK2urOIeblcjRo0H
dFWPtTog/WPZAH6KnX8pVMioUu261sa2iC5OQtftEW6J09TZ5hvdS1jZYfET
96OBNB3+sBudu+v+DXXB9eHMbhLVzYvQ59Q+xW9J6/nLT+g9xn8H+C9tjytW
w19wHDnyT68mvZmlEWOUnVJ5CkAH/VzUoUEIiJ3oJf7ecU7O+WvAFil5jPZE
mKeHUMW9W8X71XTlxna0voOKYmPr268ywtGy1Ap28gW7VXcdYLUlYjv1fdyk
qtau6pqNN2+DqdfY8z4HDO1x1l7Xt9bxAYLyVjwcdo68HRpHrwUKUjSDhFpU
7jS56eiiG749xBsJd3WN9NgK7a9iLeKqg6FcuyPn0HSr33Zc6IImfjBvIbXq
dSKQDSguabliGYct+vS+ShDEU7uBZQbKosxpmC7ajLr2MJU66y221dFlWKZp
DIpgATInQpGAJalA1pF+y8WA5POXcuQtahLJG4AGNET/OB4cHV8fXcfxeDiM
9dcD+nowjI9PTvqT6dHeXjwxqR7fmQmxZlG7/WEGhgYssSVzQKEN7n086KvE
Ir3DvY/DvXV7tLcIgxz7m7T3iN/7u/Q3iQs5Odnacq8Xfhrp9Zmf4V7UcoHm
5+A4qlmk80zNQq1n+ljPoCn9pg5lA71yNrkklHdTz+CC7cvbiJxB1vYSnlSY
lUxsjkXfCL12LafzIiBR11j6r0MiRqe2B2hD8sg30htCuIlZXBAgPycPaTod
x8KGA4FGIpZmSyPpkI2prvt4wJX/qXFSK9iAZ6zqQBbIv9Ss2BPapB11LCmv
Ez37/uIpKzICud8DR5JA2UpHSdd7aHGwB2AJ8VCp4f4Q1KRoLWV8LBx+irxS
Uj5VbNN1vIILLSWvRs/OXrzQ3YhqQ+4KirlD0Ax1JpbE3lmJPQQXC+iWuoWm
f2ya3kbvUjpduLyxmVbgm1FDLqo5X6uvkdVJKm2y5kxFxougnlTrCq5aBFZi
8M2Su5kbMLF2n628+oEgMRHWdPOAamgtnrlUAa94MpKPC7aC2LmqRTRPC6Lp
O9xx3HphHqPJKMfi3VYCpoXaOr17V7UfCJMPdGXEs7qrzuXdiIghq0GFk1s2
aEJBPcI1ofo+uS90nN6dqhVHUyCdcmu47juow2EEWQVbizJfCIxU5IV23GAj
pQ2MB27H47M/IcKVGHLpDg9IeSN0icjJpORIQhyJQyZVzK8bj4K+NMa8dH0c
LhtCKApc2iDpmOewcdyzD1fmXIezaDixGrXTfSzKwPSEL3mWoJUB0AwICGcB
+U+6HRh1VwOyKSsL6stVucKEK9dRCPjEb6mi+Kl4gOPJLXsNTWzkxCiyxsQ+
u3fbq/hp5wK9kAWyF43SeTqLl0gZ53XLU0MlX2J1rdZl12psER9kTIp2zPAD
TFySB6P77unI9Y7dw2AqqTb8gCZyVxzepWidBovuvO75o62S69SfHRZDHNC2
Dkp2lb8fSQg1NnBuARyNVmMmS6VidRblFQe3KvpCCRDWmBh7tMoyjqKdJ7jm
tJjr1oA4GLpoLKv7mcqKf8JGdy6TSfRLOrwIdIrVYpEvKciBKCg3bVU9GLAe
PsbUSa9IjAjQUV7W+tqaTyjgCTV78gfSO3YJ24o5zhWSgiJNL7oSyNAKdGbT
GhjAsCDFaJvT+4Ri/nSKRMsNFa65Ux3lOCHCxUY5h5bjIcvtpPckihPXwgFm
XTtyMeREsz0RwYhUK2StPgPCj/qEZ2fYd+7mVjegcxoGmrMOe2e8risNbhpm
3dVmVBRg4KQHbBQq5pem5SuOfEttocG1/1kOnrUZnF/QpyCbDfZtMWhYScr8
zToWKrE/AZN88NZ3QgVSwjZ8X5uSm+jHwfta4O7m3gqjYBvzwZf1VzQWlfp1
3RI+rqGX+/9Cd0QQfau5xY2BhZ+Lk1/SoVG7n4dZuyTP+EHb/yUdJ1ejX8lp
8tvwmpDY4QVwUEGvVWoKuFj7MtEe6kvC9qLRZxKsJl/v8ehwOAhpZabmWy19
+ce1CH/OHWlDIn52i3GLy1N3aiFLcchu22AprpH6aqes2IlDluk1duJN53yQ
lVgf9QamYTckI1SssR5THmg1lrDs347FWAH/57UW28Fkavip7E8nNkvAor0q
HRtJn9aahi2TqJuaJJI9ZXRuYh/uRRK5N+d03BapNj/DspvjNL2SA5Jy39Im
KUlG2tjH8WKYw5dYJSsKz80VtFiK9Z+mDkViIqZSkKUsJxRn6QZO8jXA96oi
o0G0Yx/J/MBaXYRgbRtPgcaOZQ7d/UzYOBHF0R8QQlKTTIIigYPBRafgStaV
GwaoyXqIdWZBbYaGa2HR+TebFc2iYltet+DoLHAnJIqUy7xQhSg2EHanq3jW
xQxqMpZEYjbEGPV1ac7GKI0lT+3NUGorRl7anLUSPq0ERSbBTdVwlN7VPk3H
L7PG/h4H274QsheA7YiBJ04ZLiy5JZW3TCkuLMhxputfIJlHeTCBhdxXcI6Y
mKzUbw3srJys3slU7pbf3dqtr40UiE06azzH9FaX33LlgjNtYp4mwCrqzFpW
SGubiiaN4e9wLOR8m650voqXELxIl5YfUl1G9E0pz0w7x1Q4ntw1otUHl6u6
EbBGLdAYlw0iKLckd2hJq3ov7r2PGfTVa6/qQFj3oD2hJQoaO6Wz0dupPMKA
ISUKnBzX7nielA9J5xVqkkBGYayMH8742yx2X4E3kL/QghuHVMOOX2jF0YMs
gxIRRSpZrlS/NTH6n+p0PjQdCyyu+E7+3r6xfgmI8D10k5KlgzdhufIShBhA
ZUC+zw49SnXVB8FgK++3a7vPBEmI/ersMXm1qcCnLRQ8d/SrGqKmCxLFyxtq
VSboaHDMFuE6Zvmc/mjSOzcR8+rKU7YhYuvxMZCMphPLhYuxhd1qnJDrJgVy
Gwur0YFguJsgqYoOhy6UOWauAROoeKHRVpveqYyJlg50CuqZy5PPK2ICA0Ow
er0UsrV1weUfMPtSSMttughbLUknYko3R5xW4kuzIJWGqpuyIEii8i3dNNfN
z/JMK1EkUNSzvpuDFHBuUb/TYr6xm4NDBbRLdEGCHpdUav1Y3QR4F8nUjjVw
Kv1x/foptQUkuZqGZfSQd8Z48/1Km2hHmSXTm0Rht+tQBshkq6Q+DKkaQKTK
4OHnodqhfcf9qNlsVcrUIsMorCw2d+rW16A2IZ/9RHovof4UJjSDoxicHHs/
kY40Ntu/F/LanbkQU0F4xSl1C2fbDVAdyjdq7b7yMupDWTC9wPhWxlSzf6G+
emxw/OZbltaXcRcuvUnFgOACQpXGdt7kb0AgQRcW2k1ci5aqKK5LaarJGrcS
gr1VPJRZw2NUAgKfv5vHk5rls8Ajh4QBaJyQTYsJ1f0JnRF2QHCHH6g6NW6l
72D7GctSFwzv3K1PYKPFqyCWwolYDF/iSh3QdSVWToOXy3aHczcFJJi1FZcU
k/0SpUVIPiQm5IK2qjYrOasCMDjgRft4ggrp+VlyeKmQKw2ReFVcTT2xkVXR
lQ6xIuzWOXa4wKDNWLyBg9jCc5iaYDD7RVpM4qU+6cqe9QKn/GBX6GNNgTYr
6tQW0u+4FmtYFFCNASSJOB5jtMrUXVeLwDRXoi8xIGrNEnBgU0gvl1x8FSdm
3WJv73SD7wL1b9voY6aSjsSIxROS6IWFr3HgcEwRVi5UkHE5AFsMxvdWTB8c
1DKPQdRxgN9G8MJ7wiFp1Vpgo2evf3hxYaoKV2mErrnnVtW1BSR9m+T9VroG
FbpM28E8ysdY5gc2veIuDQ7oTKFCdna+5AYPhXUrx/myO5ePfZTnFWs/iYNY
Vvq7JpY4DougNBv2qCgC9jX0rrrzmklqqLspzGqOXWWolQnWtrHbb2vZDlPH
uYy1nSD0Vdf7+Sr4K/yx9VP0Rgt7GVKqn3hr2GPnp+j3xFOxu1X002ajWvwe
k5h+it4+kcaoP9Gi5WejUUM5UHVgrvQgUpn2jB4IP/fwe9sR8JO7fPm+CyrD
Tfbt9gQ2kCy3LVSRulA/H5rwBL8CijQdJReHJ+SI2qNHa+RojRqfgxgM2JZI
wQ83IYSSC4RO2axdEx4V9t91eb9PgtB8EOZeaXYLgrJUFdNJBL4koYTWYDnZ
mjUQ97PqOOhB6mZx9S6vohKZxpjz26X06sZi4UCGsuN/rdIjDWDhjglSvUba
XZGtPFdOB2zok1GlXRcuyHloLUVJEd98xywhxg7A3VPe1/rzkbrCym2OnRCL
YlU1YlxL+wPQoyUBhqq4zRfLFNXA+WpWppieeTUqVHtGbFY4ibUHINy7wCq+
480o4SWhKuCVGJemyojBIJmYefdtrJpGijZABoIagRoj4ZVA/QZd85P6e7Pg
79dcGy5cJEP5GLaBiIgtG+/tKxOeXhUGs4hwXLgjMY6h2Zy0e9vHWrNOaSRh
bgAvRi5mK0R3Agqqy3FISNMq2t1uOD84Pv76iq3YyPfg8ODs5L3u0vpCtbTQ
dBckRUXQVKs6oTBeisc4LoztGH7sUbXbDpZ3jfwbiTSBy1id7VyDc51pwBeb
YoR2XusIRtQNcnJliv0fn78Vx4RgMaCTmFDJ5ID6mdxrLNBdmsLInjOqzE+x
hI9h/TS5q02iCp5P8llYDQUCQWWJQe3HOoH0vmY+6tWdYtd/23nT9fuz4U8n
2sBuRRnVPT+0+hGjDbZr68zrNCQ4LLygKkDUIqCO9oKR9t0PHGeFqG+pfu4F
ksWqFZCg1a4OHUKhYZMEyWfuMTtgx/wuvI/G/AWQvPyIPV5TyhjiqtZWcfuY
1Hn4fV0p4Ixyobgc3CnsN+YVTtObtMRKlyBvUMvOIkI3wlTotVq5hIlVDDfi
1BQ6Z68Bq+PpDD5eqz7rqt0nNIKlkurnnDY/sCqVvKlJitsISF9cbLXB6XFy
PEqclTXZVa/CaXZi89dZdWNqcWCfJPInnUnnuee1yc8I0q451JZdDFo/Z2rU
jNma6pzVpQiqrDm1dhJVjLTuiHEUvbaLh8edNuaNyOffiMo2DFx1tsYsLktd
KfzLADtrgPPaJTJ55LbK7OzUkcSKTCrMreu4TGO8UULTGwMkm1riFSQan0tz
UxRSvhGXEkpXrLVJ9rTG468NSu+qRL1k6hJYOCsJMy2+QeYCD49XKg/SgMm9
GxugmE88T0Pz+mS7MtvvjKKhHSynUaVDtMcrFVvE/Pt49t40JWd+CJroMieD
Gla4iZ69ffvma6puu/NV9PbF6OsL/IdXu+vQX3GFhsa0y0tHZIhvOfDXqekc
6afk2UW1mUPrP33xIEciLV3lmISxc24ZZwXlacJ9yuomqnJ/jKJQPkcjPcX8
2TShzz6hGput0IOcTL/dznJlhWBXeMEtSag9DU7+HlDix/Nb0CfKFHWBefH3
/68AmRVUGPjiSZL9NZ4D3nwfT1fv1af/kd9mcEmS1d//H6zvWhYFohJ/d4G+
2Kt8nOpP/iOdRyMg1fH0k2TzwYff/f2/AQbA3mYx+tE+GZ9jynX2aHeUVpck
0zFsUQyoKK9piU9bT3SPdjTsY4cCdbuQ1P3++atXr39/ZqovJqA1TbqvkM/D
yZG2cn71/O3z0eX5N4q/4oPPBnuDPf3I6PnT56PusxyUh53vltj2OL5ZJiRW
RifDweFwANjz/wMGMQDr0/IBAA==

-->

</rfc>
