<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.14 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-group-oscore-profile-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.2 -->
  <front>
    <title abbrev="Group OSCORE Profile of ACE">Group OSCORE Profile of the Authentication and Authorization for Constrained Environments Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-group-oscore-profile-09"/>
    <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="2022" month="September" day="05"/>
    <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 correct 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 group messages 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 over IP multicast <xref target="I-D.ietf-core-groupcomm-bis"/> to communicate to 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 the proof of possession is not done by a dedicated protocol element, but rather occurs after the first Group OSCORE exchange.</t>
      <t>Furthermore, this profile provides proof of the Client's membership to the correct OSCORE group, by binding the Access Token to the Client's authentication credential used in the group and including the Client's public 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>Equivalent COSE Key: a COSE Key built from an authentication credential used in the OSCORE group. The equivalent COSE Key preserves all the main information elements from the authentication credential, in particular the key coordinates and the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable).</li>
          <li>Pairwise-only group: an OSCORE group that uses only the pairwise mode (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) "abcd0000", and got assigned Sender ID (sid) "0", "1" and "2" 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: 0, gid: abcd0000, ...) |                           |
|                            |            |                           |
|                            |            |                           |
|<-------------------------------- Access Token + RS Information -----|
|                            | (aud: RS1, sid: 0, gid: abcd0000, ...) |
|                            |            |                           |
|---- POST /authz-info ----->|            |                           |
|      (access_token)        |            |                           |
|                            |            |                           |
|<--- 2.01 Created ----------|            |                           |
|                            |            |                           |
|-------- POST /token ----------------------------------------------->|
|  (aud: RS2, sid: 0, gid: abcd0000, ...) |                           |
|                            |            |                           |
|                            |            |                           |
|                            |            |                           |
|<-------------------------------- Access Token + RS Information -----|
|                            | (aud: RS2, sid: 0, gid: abcd0000, ...) |
|                            |            |                           |
|----- POST /authz-info ----------------->|                           |
|       (access_token)       |            |                           |
|                            |            |                           |
|                            |            |                           |
|<--- 2.01 Created -----------------------|                           |
|                            |            |                           |
|-- Group OSCORE Request -+->|            |                           |
| (kid: 0, gid: abcd0000) \-------------->|                           |
|                            |            |                           |
|                         /proof-of-possession/                       |
|                            |            |                           |
|                            |            |                           |
|<-- Group OSCORE Response --|            |                           |
|         (kid: 1)           |            |                           |
|                            |            |                           |
/proof-of-possession/        |            |                           |
|                            |            |                           |
/Mutual authentication       |            |                           |
 between C and RS1/          |            |                           |
|                            |            |                           |
|                            |            |                           |
|<-- Group OSCORE Response ---------------|                           |
|         (kid: 2)           |            |                           |
|                            |            |                           |
/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 public key used in the OSCORE group; and a proof-of-possession (PoP) evidence to proof 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 public key indicated by the Client in the Access Token.</t>
        <t>The Access Token request and response MUST be confidentiality-protected and ensure authenticity. This profile RECOMMENDS the use of 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="RFC6347"/><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, and the authorization information is a policy 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 multicast request 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), by means of the 'cnf' claim.</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"/> when including Value Type "COSE_Key" (1) and specifying an asymmetric key. In particular, the specified public key is the COSE Key equivalent to the authentication credential that the Client uses in the OSCORE group. The specified public key will be used as the pop-key bound to the Access Token.  </t>
            <t>
Alternative Value Types defined in future specifications are fine to consider, if indicating a non-encrypted asymmetric key or full-fledged autentication credential.</t>
          </li>
        </ul>
        <t>In addition, the Client computes its proof-of-possession (PoP) evidence, in order to prove possession of its own private key used in the OSCORE group to the AS. This allows the AS to verify that the Client indeed owns the private key associated with that public key, as its alleged identity credential within 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 private key corresponds to the authentication credential used in the OSCORE group, for which the equivalent COSE Key is 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 corresponds to the Client's authentication credential used in the OSCORE group, for which the equivalent COSE Key is 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" : {
         "COSE_Key" : {
           "kty" : EC2,
           "crv" : P-256,
           "x" : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa
                   27c9e354089bbe13',
           "y" : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020
                   731e79a3b4e47120'
         }
       },
       "client_cred_verify" : h'...'
       (signature content omitted for brevity)
     }
]]></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 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 public key 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 public key MUST be specified in the 'cnf' claim, which follows the syntax from <xref section="3.1" sectionFormat="of" target="RFC8747"/> when including Value Type "COSE_Key" (1) and specifying an asymmetric key. In particular, the 'cnf' claim includes the same COSE Key specified in the 'req_cnf' parameter of the Token Request, i.e., the COSE Key equivalent to the authentication credential that the Client uses in the OSCORE group.  </t>
            <t>
Alternative Value Types defined in future specifications are fine to consider, if indicating a non-encrypted asymmetric key or full-fledged autentication credential.</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) 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" : {
         "COSE_Key" : {
           "kty" : EC2,
           "crv" : P-256,
           "x" : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa
                   27c9e354089bbe13',
           "y" : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020
                   731e79a3b4e47120'
       },
       "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
   06                                   # unsigned(6)
   1A 5112D728                          # unsigned(1360189224)
   04                                   # unsigned(4)
   1A 51145DC8                          # unsigned(1360289224)
   09                                   # unsigned(9)
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70
   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)
            D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD890C7FA27C9
            E354089BBE13
         22                             # negative(2)
         58 20                          # bytes(32)
            F95E1D4B851A2CC80FFF87D8E23F22AFB725D535E515D020731E
            79A3B4E47120
   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 including the public key associated with its own 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 has indeed that Sender ID and an authentication credential including that public key 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) public key; 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 content of the 'cnf' claim as the COSE Key equivalent to 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 COSE Key specified in the 'cnf' claim is its equivalent COSE Key.  </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="10" 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 is such that the COSE Key specified in the 'cnf' claim of the Access Token is its equivalent COSE Key.</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="20" 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" 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="11" 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 public key of the new authentication credential it uses in the OSCORE group, as value of the 'req_cnf' parameter. In particular, the specified public key is the COSE Key equivalent to the new authentication credential that the Client uses in the OSCORE group.</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 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 over multicast to multiple recipients, or sent over unicast to one 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 one 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>
      <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: [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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 [[this document]]</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: [[this document]] (<xref target="sec-c-as-token-endpoint"/>)</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://www.ietf.org/archive/id/draft-ietf-core-groupcomm-bis-07.txt">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-14"/>
        </reference>
        <reference anchor="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://www.ietf.org/archive/id/draft-tiloca-core-oscore-discovery-11.txt">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsuess">
	 </author>
            <author fullname="Peter van der Stok">
              <organization>Consultant</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <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-11"/>
        </reference>
        <reference anchor="I-D.ietf-ace-mqtt-tls-profile" target="https://www.ietf.org/archive/id/draft-ietf-ace-mqtt-tls-profile-17.txt">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT)-TLS profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Cigdem Sengul">
              <organization>Brunel University</organization>
            </author>
            <author fullname="Anthony 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://www.ietf.org/archive/id/draft-ietf-cose-cbor-encoded-cert-04.txt">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="10" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-04"/>
        </reference>
        <reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </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 over IP multicast <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 either 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 multicast requests sent to a group of Resource Servers, 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 correct 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 as 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) "abcd0000", and got assigned Sender ID (sid) "0", "1" and "2" 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: 0, gid: abcd0000, ...)  |                           |
|                            |            |                           |
|<-------------------------------- Access Token + RS Information -----|
|                            | (aud: RS1, sid: 0, gid: abcd0000, ...) |
|                            |            |                           |
|---- 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: 0, gid: abcd0000, ...)  |                           |
|                            |            |                           |
|<-------------------------------- Access Token + RS Information -----|
|                            | (aud: RS2, sid: 0, gid: abcd0000, ...) |
|                            |            |                           |
|---- 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: 0, gid: abcd0000) \-------------->|                           |
|                            |            |                           |
|<-- Group OSCORE Response --|            |                           |
|         (kid: 1)           |            |                           |
|                            |            |                           |
/Mutual authentication       |            |                           |
 between C and RS1           |            |                           |
 (as group members)/         |            |                           |
|                            |            |                           |
|<-- Group OSCORE Response ---------------|                           |
|         (kid: 2)           |            |                           |
|                            |            |                           |
/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, and the authorization information is a policy 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, due to, for example, expiration. This pairwise OSCORE Security Context is discarded when an Access Token (whether the same or different) 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 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 modifications.</t>
          <ul spacing="normal">
            <li>The parameter 'req_cnf' MUST NOT be included in the payload.</li>
            <li>The parameter 'client_cred', defined in <xref target="client_cred-appendix"/> of this document, MUST be included in the payload. This parameter specifies the public key that the Client uses in the OSCORE group, whose identifier is indicated in the 'context_id' parameter. In particular, the specified public key is the COSE Key equivalent to the authentication credential that the Client uses in the OSCORE group.</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 public key 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" : {
         "COSE_Key" : {
           "kty" : EC2,
           "crv" : P-256,
           "x" : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa
                   27c9e354089bbe13',
           "y" : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020
                   731e79a3b4e47120'
         }
       },
       "client_cred_verify" : h'...'
       (signature content omitted for brevity),
     }
]]></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"/>. This parameter provides an asymmetric key 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"/> when including Value Type "COSE_Key" (1) and specifying an asymmetric key. Alternative Value Types defined in future specifications are fine to consider if indicating a non-encrypted asymmetric key.</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 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 send 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 modifications.</t>
          <ul spacing="normal">
            <li>
              <t>The public key 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 COSE Key specified in the 'client_cred' parameter of the Token Request, i.e., the COSE Key equivalent to the authentication credential that the Client uses in the OSCORE group.</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" : {
         "COSE_Key" : {
           "kty" : EC2,
           "crv" : P-256,
           "x" : h'd7cc072de2205bdc1537a543d53c60a6acb62eccd890c7fa
                   27c9e354089bbe13',
           "y" : h'f95e1d4b851a2cc80fff87d8e23f22afb725d535e515d020
                   731e79a3b4e47120'
         }
       }
     }
]]></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
   06                                   # unsigned(6)
   1A 5112D728                          # unsigned(1360189224)
   04                                   # unsigned(4)
   1A 51145DC8                          # unsigned(1360289224)
   09                                   # unsigned(9)
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70
   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                          # "\x01"
         02                             # unsigned(2)
         50                             # bytes(16)
            F9AF838368E353E78888E1426BD94E6F
         05                             # unsigned(5)
         42                             # bytes(2)
            1122                        # "\x11\""
         06                             # unsigned(6)
         41                             # bytes(1)
            99                          # "\x99"
   18 3C                                # unsigned(60)
   41                                   # bytes(1)
      00
   18 3D                                # unsigned(61)
   44                                   # bytes(4)
      ABCD0000
   18 3E                                # unsigned(62)
   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)
            D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD890C7FA27C9
            E354089BBE13
         22                             # negative(2)
         58 20                          # bytes(32)
            F95E1D4B851A2CC80FFF87D8E23F22AFB725D535E515D020731E
            79A3B4E47120
]]></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 Client's public key, i.e., the hash of the COSE Key K equivalent to 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 follows, with | denoting byte string concatenation.</t>
            <ul spacing="normal">
              <li>If the equivalent COSE Key K has COSE Key Type OKP, INPUT_HASH = i, where 'i' is the x-parameter of the COSE_Key specified in the 'client_cred' parameter of the Token request, encoded as a CBOR byte string.</li>
              <li>If the equivalent COSE Key K has COSE Key Type EC2, INPUT_HASH = (i_1 | i_2), where 'i_1' and 'i_2' are the x-parameter and y-parameter of the COSE_Key specified in the 'client_cred' parameter of the Token request, respectively, each encoded as a CBOR byte string.</li>
              <li>If the equivalent COSE Key K has COSE Key Type RSA, INPUT_HASH = (i_1 | i_2), where 'i_1' and 'i_2' are the n-parameter and e-parameter of the COSE_Key specified in the 'client_cred' parameter of the Token request, respectively, each encoded as a CBOR byte string.</li>
            </ul>
            <t>Then, the AS hashes INPUT_HASH according to the procedure described in <xref target="RFC6920"/>, with the output OUTPUT_HASH in binary format, as described in <xref section="6" sectionFormat="of" target="RFC6920"/>.</t>
            <t>Finally, the AS includes a single entry within the 'client_cred' claim of the Access Token. This entry has label "kid" (3) defined in <xref section="3.1" sectionFormat="of" target="RFC8747"/>, and 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 'client_cred' claim as the hash RECEIVED_HASH of a COSE Key equivalent to 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 of its equivalent COSE Key matches with RECEIVED_HASH from 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="10" 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 with the recomputed hash NEW_HASH of a COSE Key equivalent to 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 provides an asymmetric key 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 parameter follows the syntax of the 'cnf' claim from <xref section="3.1" sectionFormat="of" target="RFC8747"/> when including Value Type "COSE_Key" (1) and specifying an asymmetric key. Alternative Value Types defined in future specifications are fine to consider, if indicating a non-encrypted asymmetric key or full-fledged autentication credential.</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 as 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 modifications.</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 'client_cred'. Then, the RS considers that content as the COSE Key equivalent to the authentication credential that the Client uses in the group, whose GID is specified in the 'contextId_input' claim. The RS can compare this public key with the actual COSE Key equivalent to the authentication credential of the claimed Client, 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 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 multicast 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 the ID Context of the pairwise OSCORE Security Context can be assigned by the AS, communicated and set in both the RS and Client after the exchange specified in this profile is executed. 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 (multicast) 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 a COSE Key equivalent to 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 Context, due to, for example, 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 correspond to a pairwise OSCORE Security Context 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="11" 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 public key of the new authentication credential it uses in the OSCORE group, as value of the 'client_cred' parameter. In particular, the specified public key is the COSE Key equivalent to the new authentication credential that the Client uses in the OSCORE group.</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 the 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>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. 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.</li>
        <li>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 the mutual authentication is not completed before the Client has verified an OSCORE or a Group OSCORE response using the corresponding security context.</li>
        <li>Content-format of the protocol messages: "application/ace+cbor".</li>
        <li>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. In the optional dual mode defined in <xref target="full-version"/>: OSCORE algorithms; pre-established symmetric keys.</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 Benjamin Kaduk, John Mattsson, Dave Robin, Jim Schaad and Goeran 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:
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
Wf5/e+GV1iJdFYPEeO2G3BygV0q/NU6xbxuu+fcUXun6V8Skgf1ubhE74oCb
JjNipZKqdJsqBDcGFA8plmixzDiHekLCLnCfYSrh8LV+G1WUjV03mOm56/pg
EIoP9MBYlezYan+yf7Afd/e6e3Hc2zs4GB3uR7YhP9rhxuVjxihsYREy5Les
GTRfIh9OleGZZ5OPc6wiAfQHH90/2ttr4hCQA/J9AerrcKGBcCagqqWMxv8g
FrRhwyFMcFt5tIiCx0bmCfXychpO7SBbltySAIUKYYfjRvM8aC+yl2Rlvsrz
mQXfNCY32HYXQNs9Oe31Dlzg6x97/o/aB8ezYJNRuKbvbrDgyQzF2ndz2zH3
T6da5a/Wqfa5obfSY8+ey3ODi4I4XHGcOfjLt0PdCW1XoGvxVnMf9xVOmVh1
abiSAzWh0ZX9693a1rvcugYLD3y26wIEiv2HFLM9mZqlcmLbTKE5fjfFTk8f
gdCOUmztjJxmkVCosOamXNRnlE+XM24bOCW1Anv2OoZk2hEmhZGmUZhxTL+8
7UfbpIuq6BvVml7G5obMsEMqdzPxGAQophdYwMRqEz66TUbvkTVwxzoqXQPr
/Yg1ADRvJkBJ+5JhgoXgd0wvUdRN75NSonvQrMw1knjjaNKQ180DaJ940X/d
96hS/ziA9oG/R6ATz3eOiYft7Td6YZlxufadfXrr+KjRW3hddnoqziE6Pjg6
PDo/3jvch/9eHO8fPTvuHZweXRwMjk6Pj47g09HxYe/oGfzfOa2t2Sx6bUc0
UbcfHXa7vfPj3kmjtwwtZoAcbDbpgTXpweH5oPmkPWvS080mPeVTOIm6K6ZT
b/EpHPincHR43DvqwnXE/x4ePjs67u0dwSnAv86Pj+EX+vaYaOne2mnc9Z3Q
ZP3u2ncUMiqBKtpb+44NRfVWf+2h8TQaCOtnCk2Db9UX/Pfe6llv9fbWvJVh
C2qQynf2vniFvXVv6bnstw5PVi7yERPrnX17V/B3fjwYgAhwfoEiwNPzAYoA
fRABzg/3B0d7/aP+4OlR72IwOAcRYHD8rN87Hpw6A1ww73/69KK7b+1hHZT1
Hnpfvodnp4cX3fODpyBc9HuDwcnes2fPTo7PTy56+896vf6zpyBcwH4OL0C4
OAfhAgSJC2eA49P+/tODC5IqiBicRPurWkjIagzd4kM/aHZdeBPmwugpzzeZ
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
xdnoAQA=

-->

</rfc>
