<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-key-groupcomm-17" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="Key Provisioning for Group Communication">Key Provisioning for Group Communication using ACE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-17"/>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2023" month="October" day="06"/>
    <workgroup>ACE Working Group</workgroup>
    <abstract>
      <t>This document defines how to use the Authentication and Authorization for Constrained Environments (ACE) framework to distribute keying material and configuration parameters for secure group communication. Candidate group members acting as Clients and authorized to join a group can do so by interacting with a Key Distribution Center (KDC) acting as Resource Server, from which they obtain the keying material to communicate with other group members. While defining general message formats as well as the interface and operations available at the KDC, this document supports different approaches and protocols for secure group communication. Therefore, details are delegated to separate application profiles of this document, as specialized instances that target a particular group communication approach and define how communications in the group are protected. Compliance requirements for such application profiles are also specified.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/ace-wg/ace-key-groupcomm"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>This document builds on the Authentication and Authorization for Constrained Environments (ACE) framework and defines how to request, distribute, and renew keying material and configuration parameters to protect message exchanges in a group communication environment.</t>
      <t>Candidate group members acting as Clients and authorized to join a group can interact with the Key Distribution Center (KDC) acting as Resource Server and responsible for that group, in order to obtain the necessary keying material and parameters to communicate with other group members.</t>
      <t>In particular, this document defines the operations and interface available at the KDC, as well as general message formats for the interactions between Clients and KDC. At the same time, communications in the group can rely on different approaches, e.g., based on multicast <xref target="I-D.ietf-core-groupcomm-bis"/> or on publish-subscribe messaging <xref target="I-D.ietf-core-coap-pubsub"/>, and can be protected in different ways.</t>
      <t>Therefore, this document delegates details on the communication and security approaches used in a group to separate application profiles. These are specialized instances of this document, targeting a particular group communication approach and defining how communications in the group are protected, as well as the specific keying material and configuration parameters provided to group members. In order to ensure consistency and aid the development of such application profiles, this document defines a number of related compliance requirements (see <xref target="req"/>).</t>
      <t>New keying material is generated and distributed to the group upon membership changes (rekeying), if the application requires backward security (i.e., new group members must be prevented from accessing communications in the group prior to their joining) and forward security (i.e., former group members must be prevented from accessing communications in the group after their leaving).</t>
      <t>A group rekeying scheme performs the actual distribution of the new keying material, by rekeying the current group members when a new Client joins the group, and the remaining group members when a Client leaves the group. This can rely on different approaches, including efficient group rekeying schemes such as <xref target="RFC2093"/>, <xref target="RFC2094"/>, and <xref target="RFC2627"/>.</t>
      <t>Consistently with what is recommeded in the ACE framework, this document uses CBOR <xref target="RFC8949"/> for data encoding. However, using JSON <xref target="RFC8259"/> instead of CBOR is possible, by relying on the conversion method specified in Sections <xref target="RFC8949" section="6.1" sectionFormat="bare"/> and <xref target="RFC8949" section="6.2" sectionFormat="bare"/> of <xref target="RFC8949"/>.</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:</t>
        <ul spacing="normal">
          <li>The terms and concepts described in the ACE framework <xref target="RFC9200"/> and in the Authorization Information Format (AIF) <xref target="RFC9237"/> to express authorization information. 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).</li>
          <li>The terms and concepts described in CoAP <xref target="RFC7252"/>. 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".</li>
          <li>The terms and concepts described in CBOR <xref target="RFC8949"/> and COSE <xref target="RFC9052"/><xref target="RFC9053"/><xref target="RFC9338"/>.</li>
        </ul>
        <t>A principal interested to participate in group communication as well as already participating as a group member is interchangeably denoted as "Client" or "node".</t>
        <ul spacing="normal">
          <li>
            <t>Group: a set of nodes that share common keying material and security parameters used to protect their communications with one another. That is, the term refers to a "security group".  </t>
            <t>
This is not to be confused with an "application group", which has relevance at the application level and whose members share a common pool of resources or content. Examples of application groups are the set of all nodes deployed in a same physical room, or the set of nodes registered to a pub-sub topic.  </t>
            <t>
The same security group might be associated with multiple application groups. Also, the same application group can be associated with multiple security groups. Further details and considerations on the mapping between the two types of group are out of the scope of this document.</t>
          </li>
          <li>Key Distribution Center (KDC): the entity responsible for managing one or multiple groups, with particular reference to the group membership and the keying material to use for protecting group communications.</li>
        </ul>
        <t>Furthermore, this document uses "names" or "identifiers" for groups and nodes. Their different meanings are summarized below.</t>
        <ul spacing="normal">
          <li>Group name: the invariant once established identifier of a group. It is used in the interactions between Client, AS, and RS to identify a group. A group name is always unique among the group names of the existing groups under the same KDC.</li>
          <li>GROUPNAME: the invariant once established text string used in URIs. GROUPNAME uniquely maps to the group name of a group, although they do not necessarily coincide.</li>
          <li>Group identifier: the identifier of the group keying material used in a group. Unlike group name and GROUPNAME, this identifier changes over time, when the group keying material is updated.</li>
          <li>Node name: the invariant once established identifier of a node. It is used in the interactions between Client and RS, as well as to identify a member of a group. Within the same group, a node name is always unique among the node names of all the current members of that group.</li>
          <li>NODENAME: the invariant once established text string used in URIs to identify a member a group. Its value coincides with the node name of the associated group member.</li>
        </ul>
        <t>This document additionally uses the following terminology:</t>
        <ul spacing="normal">
          <li>Transport profile, to indicate a profile of ACE as per <xref section="5.8.4.3" sectionFormat="of" target="RFC9200"/>. A transport profile specifies the communication protocol and communication security protocol between an ACE Client and Resource Server, as well as proof-of-possession methods, if it supports proof-of-possession access tokens, etc. Transport profiles of ACE include, for instance, <xref target="RFC9203"/>, <xref target="RFC9202"/>, and <xref target="RFC9431"/>.</li>
          <li>Application profile, that defines how applications enforce and use supporting security services they require. These services may include, for instance, provisioning, revocation, and distribution of keying material. An application profile may define specific procedures and message formats.</li>
          <li>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="RFC5280"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</li>
          <li>Individual keying material: information exclusively pertaining to a group member, as associated with its group membership and related to other keying material and parameters used in the group. For example, this can be a member identifier that is unique within the group. The specific nature and format of individual keying material used in a group is defined in application profiles of this specification. The individual keying material of a group member is not related to the secure association between that group member and the KDC.</li>
        </ul>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation without the tag and value abbreviations.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>At a high level, the key provisioning process is separated in two phases: the first one follows the ACE Framework between Client, AS, and KDC; the second one is the actual key distribution between Client and KDC. After the two phases are completed, the Client is able to participate in the group communication, via a Dispatcher entity.</t>
      <figure anchor="fig-roles">
        <name>Key Distribution Participants</name>
        <artwork align="center"><![CDATA[
+------------+               +-----------+
|     AS     |               |    KDC    |
|            |        .----->|           |
+------------+       /       +-----------+
      ^             /
      |            /
      v           /                                 +-----------+
+------------+   /           +------------+         |+-----------+
|   Client   |<-'            | Dispatcher |         ||+-----------+
|            |<------------->|            |<------->|||   Group   |
+------------+               +------------+         |||  members  |
                                                    +++-----------+
]]></artwork>
      </figure>
      <t>The following participants (see <xref target="fig-roles"/>) take part in the authorization and key distribution.</t>
      <ul spacing="normal">
        <li>Client (C): node that wants to join a group and take part in group communication with other group memebrs. Within the group, the Client can have different roles.</li>
        <li>Authorization Server (AS): as per the AS defined in the ACE Framework, it enforces access policies, and knows if a node is allowed to join a given group with write and/or read rights.</li>
        <li>Key Distribution Center (KDC): maintains the keying material to protect group communications, and provides it to Clients authorized to join a given group. During the first part of the exchange (<xref target="sec-auth"/>), it takes the role of the RS in the ACE Framework. During the second part (<xref target="key-distr"/>), which is not based on the ACE Framework, it distributes the keying material. In addition, it provides the latest keying material to group members when requested or, if required by the application, when membership changes.</li>
        <li>
          <t>Dispatcher: entity through which the Clients communicate with the group, when sending a message intended to multiple group members. That is, the Dispatcher distributes such a one-to-many message to the group members as intended recipients. A single-recipient message intended to only one group member may be delivered by alternative means, with no assistance from the Dispatcher.  </t>
          <t>
Examples of a Dispatcher are: the Broker in a pub-sub setting; a relayer for group communication that delivers group messages as multiple unicast messages to all group members; an implicit entity as in a multicast communication setting, where messages are transmitted to a multicast IP address and delivered on the transport channel.  </t>
          <t>
If it consists of an explicit entity such as a pub-sub Broker or a message relayer, the Dispatcher is comparable to an untrusted on-path intermediary, and as such it is able to read the messages sent by Clients in the group.</t>
        </li>
      </ul>
      <t>This document specifies a mechanism for:</t>
      <ul spacing="normal">
        <li>Authorizing a Client to join the group (<xref target="sec-auth"/>), and providing it with the group keying material to communicate with the other group members (<xref target="key-distr"/>).</li>
        <li>Allowing a group member to retrieve group keying material (<xref target="ssec-key-material-retrieval"/> and <xref target="update-keys"/>).</li>
        <li>Allowing a group member to retrieve authentication credentials of other group members (<xref target="sec-key-retrieval"/>) and to provide an updated authentication credential (<xref target="update-pub-key"/>).</li>
        <li>Allowing a group member to leave the group (<xref target="ssec-group-leaving"/>).</li>
        <li>Evicting a group member from the group (<xref target="sec-node-removal"/>).</li>
        <li>
          <t>Renewing and re-distributing the group keying material (rekeying), e.g., upon a membership change in the group (<xref target="sec-group-rekeying"/>).  </t>
          <t>
Rekeying the group may result in a temporary misalignment of the keying material stored by the different group members. Different situations where this can happen and how they can be handled are discussed in <xref target="sec-misalignment-keying-material"/>.</t>
        </li>
      </ul>
      <t><xref target="fig-flow"/> provides a high level overview of the message flow for a node joining a group. The message flow can be expanded as follows.</t>
      <ol spacing="normal" type="1"><li>
          <t>The joining node requests an access token from the AS, in order to access one or more group-membership resources at the KDC and hence join the associated groups.  </t>
          <t>
This exchange between Client and AS MUST be secured, as specified by the transport profile of ACE used between Client and KDC. Based on the response from the AS, the joining node will establish or continue using a secure communication association with the KDC.</t>
        </li>
        <li>
          <t>The joining node transfers authentication and authorization information to the KDC, by transferring the obtained access token. This is typically achieved by including the access token in a request sent to the /authz-info endpoint at the KDC.  </t>
          <t>
Once this exchange is completed, the joining node MUST have a secure communication association established with the KDC, before joining a group under that KDC.  </t>
          <t>
This exchange and the following secure communications between the Client and the KDC MUST occur in accordance with the transport profile of ACE used between Client and KDC, such as the DTLS transport profile <xref target="RFC9202"/> and OSCORE transport profile <xref target="RFC9203"/> of ACE.</t>
        </li>
        <li>
          <t>The joining node starts the joining process to become a member of the group, by sending a request to the related group-membership resource at the KDC. Based on the application requirements and policies, the KDC may perform a group rekeying, by generating new group keying material and distributing it to the current group members through the rekeying scheme used in the group.  </t>
          <t>
At the end of the joining process, the joining node has received from the KDC the parameters and group keying material to securely communicate with the other group members. Also, the KDC has stored the association between the authorization information from the access token and the secure session with the joining node.</t>
        </li>
        <li>The joining node and the KDC maintain the secure association, to support possible future communications. These especially include key management operations, such as retrieval of updated keying material or participation to a group rekeying process.</li>
        <li>The joining node can communicate securely with the other group members, using the keying material provided in step 3.</li>
      </ol>
      <figure anchor="fig-flow">
        <name>Message Flow Upon New Node's Joining</name>
        <artwork align="center"><![CDATA[
        C                            AS  KDC                   Group
        |                             |   |                   Members
      / |                             |   |                      |
     |  |--- Authorization Request -->|   |                      |
     |  |                             |   |                      |
     |  |<-- Authorization Response --|   |                      |
(*) <   |                             |   |                      |
     |  |                             |   |                      |
     |  |---  Token Transfer Request ---->|                      |
     |  |                                 |                      |
     |  |<--- Token Transfer Response-----|                      |
      \ |                             |   |                      |
        |                             |   |                      |
        |--------- Join Request --------->|                      |
        |                             |   |                      |
        |                             |   | -- Group rekeying -->|
        |                             |   |      (optional)      |
        |<-------- Join Response ---------|                      |
        |                             |   |                      |
        |                             |   |                      |
        |                             |   |       Dispatcher     |
        |                                             |          |
        |<======= Secure group communication =========|=========>|
        |                                             |          |

(*) Defined in the ACE framework
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-auth">
      <name>Authorization to Join a Group</name>
      <t>This section describes in detail the format of messages exchanged by the participants when a node requests access to a given group. This exchange is based on ACE <xref target="RFC9200"/>.</t>
      <t>As defined in <xref target="RFC9200"/>, the Client requests the AS for the authorization to join the group through the KDC (see <xref target="ssec-authorization-request"/>). If the request is approved and authorization is granted, the AS provides the Client with a proof-of-possession access token and parameters to securely communicate with the KDC (see <xref target="ssec-authorization-response"/>).</t>
      <t>Communications between the Client and the AS MUST be secured, according to what is defined by the used transport profile of ACE. The Content-Format used in the message also depends on the used transport profile of ACE. For example, it can be application/ace+cbor for the first two messages and application/cwt for the third message, which are defined in the ACE framework.</t>
      <t>The transport profile of ACE also defines a number of details such as the communication and security protocols used with the KDC (see Appendix C of <xref target="RFC9200"/>).</t>
      <t><xref target="fig-group-member-registration"/> gives an overview of the exchange described above.</t>
      <figure anchor="fig-group-member-registration">
        <name>Message Flow of Join Authorization</name>
        <artwork align="center"><![CDATA[
Client                                             AS    KDC
   |                                                |     |
   |---- Authorization Request: POST /token ------->|     |
   |                                                |     |
   |<--- Authorization Response: 2.01 (Created) ----|     |
   |                                                |     |
   |---- Token Transfer Request: POST /authz-info ------->|
   |                                                |     |
   |<--- Token Transfer Response: 2.01 (Created) -------->|
   |                                                |     |
]]></artwork>
      </figure>
      <section anchor="ssec-authorization-request">
        <name>Authorization Request</name>
        <t>The Authorization Request sent from the Client to the AS is defined in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/> and MAY contain the following parameters, which, if included, MUST have format and value as specified below.</t>
        <ul spacing="normal">
          <li>
            <t>'scope', specifying the name of the groups that the Client requests to access, and optionally the roles that the Client requests to have in those groups.  </t>
            <t>
This parameter is encoded as a CBOR byte string, which wraps a CBOR array of one or more scope entries. All the scope entries are specified according to a same format, i.e., either the AIF format or the textual format defined below.  </t>
            <ul spacing="normal">
              <li>
                <t>If the AIF format is used, each scope entry is encoded as per <xref target="RFC9237"/>. If a scope entry expresses a set of roles to take in a group as per this document, the object identifier "Toid" specifies the group name and MUST be encoded as a CBOR text string, while the permission set "Tperm" specifies the roles that the Client wishes to take in the group.      </t>
                <t>
The AIF format is the default format for application profiles of this specification, and is preferable for those that aim for a compact encoding of scope. This is desirable especially for application profiles defining several roles, with the Client possibly requesting for multiple roles combined.      </t>
                <t><xref target="cddl-ex-0"/> shows an example in CDDL notation <xref target="RFC8610"/> where scope uses the AIF format.</t>
              </li>
              <li>
                <t>If the textual format is used, each scope entry is a CBOR array formatted as follows.      </t>
                <ul spacing="normal">
                  <li>As first element, the group name, encoded as a CBOR text string.</li>
                  <li>Optionally, as second element, the role or CBOR array of roles that the Client wishes to take in the group. This element is optional since roles may have been pre-assigned to the Client, as associated with its verifiable identity credentials. Alternatively, the application may have defined a single, well-known role for the target resource(s) and audience(s).</li>
                </ul>
                <t>
<xref target="cddl-ex"/> shows an example in CDDL notation where scope uses the textual format, with group name and role identifiers encoded as CBOR text strings.</t>
              </li>
            </ul>
            <t>
It is REQUIRED of application profiles of this specificaton to specify the exact format and encoding of scope (REQ1). This includes defining the set of possible roles and their identifiers, as well as the corresponding encoding to use in the scope entries according to the used scope format.  </t>
            <t>
If the application profile uses the AIF format, it is also REQUIRED to register its specific instance of "Toid" and "Tperm", as well as the corresponding Media Type and Content-Format, as per the guidelines in <xref target="RFC9237"/> (REQ2).  </t>
            <t>
If the application profile uses the textual format, it MAY additionally specify CBOR values to use for abbreviating the role identifiers (OPT1).</t>
          </li>
          <li>'audience', with an identifier of the KDC.</li>
        </ul>
        <t>As defined in <xref target="RFC9200"/>, other additional parameters can be included if necessary.</t>
        <figure anchor="cddl-ex-0">
          <name>Example of scope using the AIF format</name>
          <sourcecode type="CDDL"><![CDATA[
gname = tstr

permissions = uint .bits roles

roles = &(
   Requester: 1,
   Responder: 2,
   Monitor: 3,
   Verifier: 4
)

scope_entry = AIF_Generic<gname, permissions>

scope = << [ + scope_entry ] >>
]]></sourcecode>
        </figure>
        <figure anchor="cddl-ex">
          <name>Example of scope using the textual format, with the group name and role identifiers encoded as text strings</name>
          <sourcecode type="CDDL"><![CDATA[
gname = tstr

role = tstr

scope_entry = [ gname , ? ( role / [ 2*role ] ) ]

scope = << [ + scope_entry ] >>
]]></sourcecode>
        </figure>
      </section>
      <section anchor="ssec-authorization-response">
        <name>Authorization Response</name>
        <t>The AS processes the Authorization Request as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>, especially verifying that the Client is authorized to access the specified groups with the requested roles, or possibly a subset of those.</t>
        <t>In case of successful verification, the Authorization Response sent from the AS to the Client is also defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>. Note that the parameter 'expires_in' MAY be omitted if the application defines how the expiration time is communicated to the Client via other means, or if it establishes a default value.</t>
        <t>Additionally, when included, the following parameter MUST have the corresponding values:</t>
        <ul spacing="normal">
          <li>'scope' has the same format and encoding of 'scope' in the Authorization Request, defined in <xref target="ssec-authorization-request"/>. If this parameter is not present, the granted scope is equal to the one requested in <xref target="ssec-authorization-request"/>.</li>
        </ul>
        <t>The proof-of-possession access token (in 'access_token' above) MUST contain the following parameters:</t>
        <ul spacing="normal">
          <li>a confirmation claim (see for example 'cnf' defined in <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CWT);</li>
          <li>an expiration time claim (see for example 'exp' defined in <xref section="3.1.4" sectionFormat="of" target="RFC8392"/> for CWT);</li>
          <li>
            <t>a scope claim (see for example 'scope' registered in <xref section="8.14" sectionFormat="of" target="RFC9200"/> for CWT).  </t>
            <t>
This claim specifies the same access control information as in the 'scope' parameter of the Authorization Response, if the parameter is present in the message, or as in the 'scope' parameter of the Authorization Request otherwise.  </t>
            <t>
By default, this claim has the same encoding as the 'scope' parameter in the Authorization Request, defined in <xref target="ssec-authorization-request"/>.  </t>
            <t>
Optionally, an alternative extended format of scope defined in <xref target="sec-extended-scope"/> can be used. This format explicitly signals the semantics used to express the actual access control information, and according to which this has to be parsed. This enables a Resource Server to correctly process a received access token, also in case:  </t>
            <ul spacing="normal">
              <li>The Resource Server implements a KDC that supports multiple application profiles of this specification, using different scope semantics; and/or</li>
              <li>The Resource Server implements further services beyond a KDC for group communication, using different scope semantics.</li>
            </ul>
            <t>
If the Authorization Server is aware that this applies to the Resource Server for which the access token is issued, the Authorization Server SHOULD use the extended format of scope defined in <xref target="sec-extended-scope"/>.</t>
          </li>
        </ul>
        <t>The access token MAY additionally contain other claims that the transport profile of ACE requires, or other optional parameters.</t>
        <t>When receiving an Authorization Request from a Client that was previously authorized, and for which the AS still stores a valid non-expired access token, the AS MAY reply with that token. Note that it is up to application profiles of ACE to make sure that re-posting the same token does not cause re-use of keying material between nodes (for example, that is done with the use of random nonces in <xref target="RFC9203"/>).</t>
      </section>
      <section anchor="token-post">
        <name>Token Transferring</name>
        <t>The Client sends a Token Transfer Request to the KDC, i.e., a CoAP POST request including the access token and targeting the authz-info endpoint (see <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>).</t>
        <t>Note that this request deviates from the one defined in <xref target="RFC9200"/>, since it allows to ask the KDC for additional information concerning the authentication credentials used in the group to ensure source authentication, as well as for possible additional group parameters.</t>
        <t>The joining node MAY ask for this information from the KDC through the same Token Transfer Request. In this case, the message MUST have Content-Format set to application/ace+cbor defined in <xref section="8.16" sectionFormat="of" target="RFC9200"/>, and the message payload MUST be formatted as a CBOR map, which MUST include the access token. The CBOR map MAY additionally include the following parameter, which, if included, MUST have format and value as specified below.</t>
        <ul spacing="normal">
          <li>'sign_info' defined in <xref target="sign-info"/>, specifying the CBOR simple value "null" (0xf6) to request information about the signature algorithm, the signature algorithm parameters, the signature key parameters, and the exact format of authentication credentials used in the groups that the Client has been authorized to join.</li>
        </ul>
        <t>Alternatively, such information may be pre-configured on the joining node, or may be retrieved by alternative means. For example, the joining node may have performed an early group discovery process and obtained the link to the associated group-membership resource at the KDC, together with attributes descriptive of the group configuration (see, e.g., <xref target="I-D.tiloca-core-oscore-discovery"/>).</t>
        <t>After successful verification, the Client is authorized to receive the group keying material from the KDC and join the group. Hence, the KDC replies to the Client with a Token Transfer Response, i.e., a  CoAP 2.01 (Created) response.</t>
        <t>The Token Transfer Response MUST have Content-Format "application/ace+cbor", and its payload is a CBOR map. Note that this deviates from what is defined in the ACE framework, where the response from the authz-info endpoint is defined as conveying no payload (see <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>).</t>
        <t>If the access token contains a role that requires the Client to send its own authentication credential to the KDC when joining the group, the CBOR map MUST include the parameter 'kdcchallenge' defined in <xref target="kdcchallenge"/>, specifying a dedicated challenge N_S generated by the KDC.</t>
        <t>Later, when joining the group (see <xref target="ssec-key-distribution-exchange"/>), the Client uses the 'kdcchallenge' value and additional information to build a proof-of-possession (PoP) input. This is in turn used to compute a PoP evidence, which the Client also provides to the KDC in order to prove possession of its own private key (see the 'client_cred_verify' parameter in <xref target="gid-post"/>).</t>
        <t>The KDC MUST store the 'kdcchallenge' value associated with the Client at least until it receives a Join Request from it (see <xref target="ssec-key-distribution-exchange"/>), to be able to verify the PoP evidence provided during the join process, and thus that the Client possesses its own private key.</t>
        <t>The same 'kdcchallenge' value MAY be reused several times by the Client, to generate a new PoP evidence, e.g., in case the Client provides the KDC with a new authentication credential while being a group member (see <xref target="update-pub-key"/>), or joins a different group where it intends to use a different authentication credential. Therefore, it is RECOMMENDED that the KDC keeps storing the 'kdcchallenge' value after the first join is processed as well. If the KDC has already discarded the 'kdcchallenge' value, that will trigger an error response with a newly generated 'kdcchallenge' value that the Client can use to restart the join process, as specified in <xref target="ssec-key-distribution-exchange"/>.</t>
        <t>If 'sign_info' is included in the Token Transfer Request, the KDC SHOULD include the 'sign_info' parameter in the Token Transfer Response, as per the format defined in <xref target="sign-info"/>. Note that the field 'id' of each 'sign_info_entry' specifies the name, or array of group names, for which that 'sign_info_entry' applies to. As an exception, the KDC MAY omit the 'sign_info' parameter in the Token Transfer Response even if 'sign_info' is included in the Token Transfer Request, in case none of the groups that the Client is authorized to join uses signatures to achieve source authentication.</t>
        <t>Note that the CBOR map specified as payload of the 2.01 (Created) response may include further parameters, e.g., according to the used transport profile of ACE. Application profiles of this specification MAY define additional parameters to use within this exchange (OPT2).</t>
        <t>Application profiles of this specification MAY define alternative specific negotiations of parameter values for the signature algorithm and signature keys, if 'sign_info' is not used (OPT3).</t>
        <t>If allowed by the used transport profile of ACE, the Client may provide the Access Token to the KDC by other means than the Token Transfer Request. An example is the DTLS transport profile of ACE, where the Client can provide the access token to the KDC during the secure session establishment (see <xref section="3.3.2" sectionFormat="of" target="RFC9202"/>).</t>
        <section anchor="sign-info">
          <name>'sign_info' Parameter</name>
          <t>The 'sign_info' parameter is an OPTIONAL parameter of the request and response messages exchanged between the Client and the authz-info endpoint at the RS (see <xref section="5.10.1." sectionFormat="of" target="RFC9200"/>).</t>
          <t>This parameter allows the Client and the RS to exchange information about a signature algorithm and about authentication credentials to accordingly use for signature verification. Its exact semantics and content are application specific.</t>
          <t>In this specification and in application profiles building on it, this parameter is used to exchange information about the signature algorithm and about authentication credentials to be used with it, in the groups indicated by the transferred acces token as per its 'scope' claim (see <xref target="ssec-authorization-response"/>).</t>
          <t>When used in the Token Transfer Request sent to the KDC (see <xref target="token-post"/>), the 'sign_info' parameter specifies the CBOR simple value "null" (0xf6). This is done to ask for information about the signature algorithm and about the authentication credentials used in the groups that the Client has been authorized to join - or to have a more restricted interaction as per its granted roles (e.g., the Client is an external signature verifier).</t>
          <t>When used in the following Token Transfer Response from the KDC (see <xref target="token-post"/>), the 'sign_info' parameter is a CBOR array of one or more elements. The number of elements is at most the number of groups that the Client has been authorized to join - or to have a more restricted interaction (see above). Each element contains information about signing parameters and about authentication credentials for one or more groups, and is formatted as follows.</t>
          <ul spacing="normal">
            <li>The first element 'id' is a group name or an array of group names, associated with groups for which the next four elements apply. In the following, each specified group name is referred to as 'gname'.</li>
            <li>The second element 'sign_alg' is an integer or a text string if the POST request included the 'sign_info' parameter with value the CBOR simple value "null" (0xf6), and indicates the signature algorithm used in the groups identified by the 'gname' values. It is REQUIRED of the application profiles to define specific values that this parameter can take (REQ3), selected from the set of signing algorithms of the COSE Algorithms registry <xref target="COSE.Algorithms"/>.</li>
            <li>The third element 'sign_parameters' is a CBOR array indicating the parameters of the signature algorithm used in the groups identified by the 'gname' values. Its content depends on the value of 'sign_alg'. It is REQUIRED of the application profiles to define the possible values and structure for the elements of this parameter (REQ4).</li>
            <li>The fourth element 'sign_key_parameters' is a CBOR array indicating the parameters of the key used with the signature algorithm, in the groups identified by the 'gname' values. Its content depends on the value of 'sign_alg'. It is REQUIRED of the application profiles to define the possible values and structure for the elements of this parameter (REQ5).</li>
            <li>The fifth element 'cred_fmt' is either a CBOR integer indicating the format of authentication credentials used in the groups identified by the 'gname' values, or has value the CBOR simple value "null" (0xf6) indicating that the KDC does not act as repository of authentication credentials for group members. Its acceptable integer values are taken from the 'Label' column of the "COSE Header Parameters" registry <xref target="COSE.Header.Parameters"/>, with some of those values also indicating the type of container to use for exchanging the authentication credentials with the KDC (e.g., a chain or bag of certificates). It is REQUIRED of the application profiles to define specific values to use for this parameter, consistently with the acceptable formats of authentication credentials (REQ6).</li>
          </ul>
          <t>The CDDL notation <xref target="RFC8610"/> of the 'sign_info' parameter is given below.</t>
          <sourcecode type="CDDL"><![CDATA[
sign_info = sign_info_req / sign_info_resp

sign_info_req  = null                  ; in the Token Transfer
                                       ; Request to the KDC

sign_info_resp = [ + sign_info_entry ] ; in the Token Transfer
                                       ; Response from the KDC

sign_info_entry =
[
  id : gname / [ + gname ],
  sign_alg : int / tstr,
  sign_parameters : [ any ],
  sign_key_parameters : [ + parameter : any ],
  cred_fmt : int / null
]

gname = tstr
]]></sourcecode>
          <t>This format is consistent with every signature algorithm currently defined in <xref target="RFC9053"/>, i.e., with algorithms that have only the COSE key type as their COSE capability. <xref target="sec-future-cose-algs"/> describes how the format of each 'sign_info_entry' can be generalized for possible future registered algorithms having a different set of COSE capabilities.</t>
        </section>
        <section anchor="kdcchallenge">
          <name>'kdcchallenge' Parameter</name>
          <t>The 'kdcchallenge' parameter is an OPTIONAL parameter of response message returned from the authz-info endpoint at the RS, as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>. This parameter contains a challenge generated by the RS and provided to the Client.</t>
          <t>In this specification and in application profiles building on it, the Client may use this challenge to prove possession of its own private key in the Join Request (see the 'client_cred_verify' parameter in <xref target="gid-post"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="key-distr">
      <name>KDC Functionalities</name>
      <t>This section describes the functionalities provided by the KDC, as related to the provisioning of the keying material as well as to the group membership management.</t>
      <t>In particular, this section defines the interface available at the KDC; specifies the handlers of each resource provided by the KDC interface; and describes how Clients interact with those resources to join a group and to perform additional operations as group members.</t>
      <t>As most important operation after trasferring the access token to the KDC, the Client can perform a Join Request-Response exchange with the KDC, by specifying the group it requests to join (see <xref target="ssec-key-distribution-exchange"/>). Then, the KDC verifies the access token and that the Client is authorized to join the specified group. If so, the KDC provides the Client with the keying material to securely communicate with the other members of the group.</t>
      <t>Later on as a group member, the Client can also rely on the interface at the KDC to perform additional operations, consistent with the roles it has in the group.</t>
      <section anchor="kdc-if">
        <name>Interface at the KDC</name>
        <t>The KDC provides its interface by hosting the following resources. Note that the root url-path "ace-group" used hereafter is a default name; implementations are not required to use this name, and can define their own instead. The Interface Description (if=) Link Target Attribute value "ace.group" is registered in <xref target="if-ace-group"/> and can be used to describe this interface.</t>
        <t>If request messages sent to the KDC as well as success response messages from the KDC include a payload and specify a Content-Format, those messages MUST have Content-Format set to application/ace-groupcomm+cbor, defined in <xref target="content-type"/>. CBOR labels for the message parameters are defined in <xref target="params"/>.</t>
        <ul spacing="normal">
          <li>
            <t>/ace-group : the path of this resource is invariant once the resource is established, and indicates that this specification is used. If other applications run on a KDC implementing this specification and use this same path, those applications will collide, and a mechanism will be needed to differentiate the endpoints.  </t>
            <t>
A Client can access this resource in order to retrieve a set of group names, each corresponding to one of the specified group identifiers. This operation is described in <xref target="retrieval-gnames"/>.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME : one such sub-resource to /ace-group is hosted for each group with name GROUPNAME that the KDC manages, and contains the symmetric group keying material for that group.  </t>
            <t>
A Client can access this resource in order to join the group with name GROUPNAME, or later as a group member to retrieve the current group keying material. These operations are described in <xref target="ssec-key-distribution-exchange"/> and <xref target="ssec-key-material-retrieval"/>, respectively.  </t>
            <t>
If the value of the GROUPNAME URI path and the group name in the access token scope ('gname' in <xref target="ssec-authorization-response"/>) are not required to coincide, the KDC MUST implement a mechanism to map the GROUPNAME value in the URI to the group name, in order to refer to the correct group (REQ7).</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/creds : the path of this resource is invariant once the resource is established. This resource contains the authentication credentials of all the members of the group with name GROUPNAME.  </t>
            <t>
This resource is created only in case the KDC acts as repository of authentication credentials for group members.  </t>
            <t>
A Client can access this resource in order to retrieve the authentication credentials of other group members, in addition to when joining the group. That is, the Client can retrieve the authentication credentials of all the current group members, or a subset of them by specifying filter criteria. These operations are described in <xref target="sec-key-retrieval-all"/> and <xref target="sec-key-retrieval"/>, respectively.  </t>
            <t>
Clients may be authorized to access this resource even without being group members, e.g., if authorized to be external signature verifiers for the group.</t>
          </li>
          <li>
            <t>ace-group/GROUPNAME/kdc-cred : the path of this resource is invariant once the resource is established. This resource contains the authentication credential of the KDC for the group with name GROUPNAME.  </t>
            <t>
This resource is created only in case the KDC has an associated authentication credential and this is required for the correct group operation. It is REQUIRED of application profiles to define whether the KDC has such an associated authentication credential (REQ8).  </t>
            <t>
A Client can interact with this resource in order to retrieve the current authentication credential of the KDC, in addition to when joining the group.  </t>
            <t>
Clients may be authorized to access this resource even without being group members, e.g., if authorized to be external signature verifiers for the group.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/policies : the path of this resource is invariant once the resource is established. This resource contains the group policies of the group with name GROUPNAME.  </t>
            <t>
A Client can access this resource as a group member in order to retrieve the group policies. This operation is described in <xref target="policies"/>.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/num : the path of this resource is invariant once the resource is established. This resource contains the current version number for the symmetric group keying material of the group with name GROUPNAME.  </t>
            <t>
A Client can access this resource as a group member in order to retrieve the version number of the keying material currently used in the group. This operation is described in <xref target="key-version"/>.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/nodes/NODENAME : one such sub-resource of /ace-group/GROUPNAME is hosted for each group member of the group with name GROUPNAME. Each of such resources is identified by the node name NODENAME of the associated group member, and contains the group keying material and the individual keying material for that group member.  </t>
            <t>
A Client as a group member can access this resource in order to retrieve the current group keying material together with its the individual keying material; request new individual keying material to use in the group; and leave the group. These operations are described in <xref target="update-keys"/>, <xref target="new-keys"/>, and <xref target="ssec-group-leaving"/>, respectively.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/nodes/NODENAME/cred : the path of this resource is invariant once the resource is established. This resource contains the individual authentication credential for the node with name NODENAME, as group member of the group with name GROUPNAME.  </t>
            <t>
A Client can access this resource in order to upload at the KDC a new authentication credential to use in the group. This operation is described in <xref target="update-pub-key"/>.  </t>
            <t>
This resource is not created if the group member does not have an authentication credential to use in the group, or if the KDC does not store the authentication credentials of group members.</t>
          </li>
        </ul>
        <t>The KDC is expected to fully provide the interface defined above. It is otherwise REQUIRED of the application profiles of this specification to indicate which resources are not hosted, i.e., which parts of the interface defined in this section are not supported by the KDC (REQ9). Application profiles of this specification MAY extend the KDC interface, by defining additional resources and their handlers.</t>
        <t>It is REQUIRED of the application profiles of this specification to register a Resource Type for the root url-path (REQ10). This Resource Type can be used to discover the correct url to access at the KDC. This Resource Type can also be used at the GROUPNAME sub-resource, to indicate different application profiles for different groups.</t>
        <t>It is REQUIRED of the application profiles of this specification to define what specific actions (e.g., CoAP methods) are allowed on each resource provided by the KDC interface, depending on whether the Client is a current group member; the roles that a Client is authorized to take as per the obtained access token (see <xref target="ssec-authorization-request"/>); and the roles that the Client has as current group member (REQ11).</t>
        <section anchor="client-operations">
          <name>Operations Supported by Clients</name>
          <t>It is expected that a Client minimally supports the following set of primary operations and corresponding interactions with the KDC.</t>
          <ul spacing="normal">
            <li>FETCH request to ace-group/ , in order to retrieve group names associated with group identifiers.</li>
            <li>POST and GET requests to ace-group/GROUPNAME/ , in order to join a group (POST) and later retrieve the current group key material as a group member (GET).</li>
            <li>GET and FETCH requests to ace-group/GROUPNAME/creds , in order to retrieve the authentication credentials of all the other group members (GET) or only some of them by filtering (FETCH). While retrieving authentication credentials remains possible by using GET requests, retrieval by filtering allows to greatly limit the size of exchanged messages.</li>
            <li>GET request to ace-group/GROUPNAME/num , in order to retrieve the current version of the group key material as a group member.</li>
            <li>DELETE request to ace-group/GROUPNAME/nodes/NODENAME , in order to leave the group.</li>
          </ul>
          <t>In addition, some Clients may rather not support the following set of secondary operations and corresponding interactions with the KDC. This can be specified, for instance, in compliance documents defining minimalistic Clients and their capabilities in specific deployments. In turn, these might also have to consider the used application profile of this specification.</t>
          <ul spacing="normal">
            <li>GET request to ace-group/GROUPNAME/kdc-cred , in order to retrieve the current authentication credential of the KDC, in addition to when joining the group. This is relevant only if the KDC has an associated authentication credential and this is required for the correct group operation.</li>
            <li>GET request to ace-group/GROUPNAME/policies , in order to retrieve the current group policies as a group member, in addition to when joining the group.</li>
            <li>GET request to ace-group/GROUPNAME/nodes/NODENAME , in order to retrieve the current group keying material and individual keying material. The former can also be retrieved through a GET request to ace-group/GROUPNAME/ (see above). The latter would not be possible to re-obtain as a group member.</li>
            <li>PUT request to ace-group/GROUPNAME/nodes/NODENAME , in order to ask for new individual keying material. The Client would have to alternatively re-join the group through a POST request to ace-group/GROUPNAME/ (see above). Furthermore, depending on its roles in the group or on the application profile of this specification, the Client might simply not be associated with any individual keying material.</li>
            <li>POST request to ace-group/GROUPNAME/nodes/NODENAME/cred , in order to provide the KDC with a new authentication credential. The Client would have to alternatively re-join the group through a POST request to ace-group/GROUPNAME/ (see above). Furthermore, depending on its roles in the group, the Client might simply not have an associated authentication credential to provide.</li>
          </ul>
          <t>It is REQUIRED of application profiles of this specification to categorize possible newly defined operations for Clients into primary operations and secondary operations, and to provide accompanying considerations (REQ12).</t>
        </section>
        <section anchor="kdc-if-errors">
          <name>Error Handling</name>
          <t>Upon receiving a request from a Client, the KDC MUST check that it is storing a valid access token from that Client. If this is not the case, the KDC MUST reply with a 4.01 (Unauthorized) error response.</t>
          <t>Unless the request targets the /ace-group resource, the KDC MUST check that it is storing a valid access token from that Client such that:</t>
          <ul spacing="normal">
            <li>The scope specified in the access token includes a scope entry related to the group name GROUPNAME associated with the targeted resource; and</li>
            <li>The set of roles specified in that scope entry allows the Client to perform the requested operation on the targeted resource (REQ11).</li>
          </ul>
          <t>In case the KDC stores a valid access token but the verifications above fail, the KDC MUST reply with a 4.03 (Forbidden) error response. This response MAY be an AS Request Creation Hints, as defined in <xref section="5.3" sectionFormat="of" target="RFC9200"/>, in which case the Content-Format MUST be set to application/ace+cbor.</t>
          <t>If the request is not formatted correctly (e.g., required fields are not present or are not encoded as expected), the handler MUST reply with a 4.00 (Bad Request) error response.</t>
          <t>If the request includes unknown or non-expected fields, the handler MUST silently ignore them and continue processing the request. Application profiles of this specification MAY define optional or mandatory payload formats for specific error cases (OPT4).</t>
          <t>Some error responses from the KDC can have Content-Format set to application/ace-groupcomm+cbor. In such a case, the paylod of the response MUST be a CBOR map, which includes the following fields.</t>
          <ul spacing="normal">
            <li>'error', with value a CBOR integer specifying the error occurred at the KDC. The value is taken from the "Value" column of the "ACE Groupcomm Errors" registry defined in <xref target="iana-ace-groupcomm-errors"/> of this specification. This field MUST be present.</li>
            <li>'error_description', with value a CBOR text string specifying a human-readable diagnostic description of the error occurred at the KDC, written in English. The diagnostic text is intended for software engineers as well as for device and network operators, in order to aid debugging and provide context for possible intervention. The diagnostic message SHOULD be logged by the KDC. This field MAY be present, and it is unlikely relevant in an unattended setup where human intervention is not expected.</li>
          </ul>
          <t>The 'error' and 'error_description' fields are defined as OPTIONAL to support for Clients (see <xref target="params"/>). A Client supporting the 'error' parameter and able to understand the specified error may use that information to determine what actions to take next.</t>
          <t><xref target="error-types"/> of this specification defines an initial set of error identifiers, as possible values for the 'error' field. Application profiles of this specification inherit this initial set of error identifiers and MAY define additional value (OPT5).</t>
        </section>
      </section>
      <section anchor="ace-group">
        <name>/ace-group</name>
        <t>This resource implements the FETCH handler.</t>
        <section anchor="ace-group-fetch">
          <name>FETCH Handler</name>
          <t>The FETCH handler receives group identifiers and returns the corresponding group names and GROUPNAME URIs.</t>
          <t>The handler expects a request with payload formatted as a CBOR map, which MUST contain the following fields:</t>
          <ul spacing="normal">
            <li>'gid', whose value is encoded as a CBOR array, containing one or more group identifiers. The exact encoding of group identifier MUST be specified by the application profile (REQ13). The Client indicates that it wishes to receive the group names of all the groups having these identifiers.</li>
          </ul>
          <t>The handler identifies the groups that are secured by the keying material identified by those group identifiers.</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response, whose payload is formatted as a CBOR map that MUST contain the following fields:</t>
          <ul spacing="normal">
            <li>'gid', whose value is encoded as a CBOR array, containing zero or more group identifiers. The handler indicates that those are the identifiers it is sending group names for. This CBOR array is a subset of the 'gid' array in the FETCH request.</li>
            <li>'gname', whose value is encoded as a CBOR array, containing zero or more group names. The elements of this array are encoded as text strings. Each element of index i of this CBOR array corresponds to the element of group identifier i in the 'gid' array.</li>
            <li>'guri', whose value is encoded as a CBOR array, containing zero or more URIs, each indicating a group-membership resource. The elements of this array are encoded as text strings. Each element of index i of this CBOR array corresponds to the element of group identifier i in the 'gid' array.</li>
          </ul>
          <t>If the KDC does not find any group associated with the specified group identifiers, the handler returns a response with payload formatted as a CBOR byte string of zero length.</t>
          <t>Note that the KDC only verifies that the node is authorized by the AS to access this resource. Nodes that are not members of the group but are authorized to do signature verification on the group messages may be allowed to access this resource, if the application needs it.</t>
          <section anchor="retrieval-gnames">
            <name>Retrieve Group Names</name>
            <t>In case the joining node only knows the group identifier of the group it wishes to join or about which it wishes to get update information from the KDC, the node can contact the KDC to request the corresponding group name and group-membership resource URI. The node can request several group identifiers at once. It does so by sending a CoAP FETCH request to the /ace-group endpoint at the KDC formatted as defined in <xref target="ace-group-fetch"/>.</t>
            <t><xref target="fig-ace-group-fetch"/> gives an overview of the exchanges described above, and <xref target="fig-ace-group-fetch-2"/> shows an example.</t>
            <figure anchor="fig-ace-group-fetch">
              <name>Message Flow of Group Name and URI Retrieval Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                         KDC
   |                                                            |
   |------------ Group Name and URI Retrieval Request: -------->|
   |                      FETCH /ace-group                      |
   |                                                            |
   |<-- Group Name and URI Retrieval Response: 2.05 (Content) --|
   |                                                            |
]]></artwork>
            </figure>
            <figure anchor="fig-ace-group-fetch-2">
              <name>Example of Group Name and URI Retrieval Request-Response</name>
              <artwork><![CDATA[
Request:

Header: FETCH (Code=0.05)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation):
  { "gid": [01, 02] }

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation):
  { "gid": [01, 02], "gname": ["group1", "group2"],
    "guri": ["ace-group/g1", "ace-group/g2"] }
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupname">
        <name>/ace-group/GROUPNAME</name>
        <t>This resource implements the POST and GET handlers.</t>
        <section anchor="gid-post">
          <name>POST Handler</name>
          <t>The POST handler processes the Join Request sent by a Client to join a group, and returns a Join Response as successful result of the joining process (see <xref target="ssec-key-distribution-exchange"/>). At a high level, the POST handler adds the Client to the list of current group members, adds the authentication credential of the Client to the list of the group members' authentication credentials, and returns the symmetric group keying material for the group identified by GROUPNAME.</t>
          <t>The handler expects a request with payload formatted as a CBOR map, which MAY contain the following fields, which, if included, MUST have format and value as specified below.</t>
          <ul spacing="normal">
            <li>'scope', with value the specific group that the Client is attempting to join, i.e., the group name, and the roles it wishes to have in the group. This value is a CBOR byte string wrapping one scope entry, as defined in <xref target="ssec-authorization-request"/>.</li>
            <li>
              <t>'get_creds', if the Client wishes to receive the authentication credentials of the current group members from the KDC. This parameter may be included in the Join Request if the KDC stores the authentication credentials of the group members, while it is not useful to include it if the Client obtains those authentication credentials through alternative means, e.g., from the AS. Note that including this parameter might result in a following Join Response of large size, which can be inconvenient for resource-constrained devices.  </t>
              <t>
If the Client wishes to retrieve the authentication credentials of all the current group members, the 'get_creds' parameter MUST encode the CBOR simple value "null" (0xf6). Otherwise, the 'get_creds' parameter MUST encode a non-empty CBOR array, containing the following three elements formatted as defined below.  </t>
              <ul spacing="normal">
                <li>The first element, namely 'inclusion_flag', encodes the CBOR simple value "true" (0xf5). That is, the Client indicates that it wishes to receive the authentication credentials of all group members having their node identifier specified in the third element of the 'get_creds' array, namely 'id_filter' (see below).</li>
                <li>
                  <t>The second element, namely 'role_filter', is a non-empty CBOR array. Each element of the array contains one role or a combination of roles for the group identified by GROUPNAME. That is, when the Join Request includes a non-Null 'get_creds' parameter, the Client filters authentication credentials based on node identifiers.      </t>
                  <t>
In particular, the Client indicates that it wishes to retrieve the authentication credentials of all the group members having any of the single roles, or at least all of the roles indicated in any combination of roles. For example, the array ["role1", "role2+role3"] indicates that the Client wishes to receive the authentication credentials of all group members that have at least "role1" or at least both "role2" and "role3".</t>
                </li>
                <li>
                  <t>The third element, namely 'id_filter', is an empty CBOR array. That is, when the Join Request includes a non-Null 'get_creds' parameter, the Client does not filter authentication credentials based on node identifiers.      </t>
                  <t>
In fact, when first joining the group, the Client is not expected or capable to express a filter based on node identifiers of other group members. Instead, when already a group member and sending a Join Request to re-join, the Client is not expected to include the 'get_creds' parameter in the Join Request altogether, since it can rather retrieve authentication credentials associated with specific group identifiers as defined in <xref target="sec-key-retrieval"/>.</t>
                </li>
              </ul>
              <t>
The CDDL definition <xref target="RFC8610"/> of 'get_creds' is given in <xref target="cddl-ex-getpubkeys"/>, using as example encoding: node identifier encoded as a CBOR byte string; role identifier encoded as a CBOR text string, and combination of roles encoded as a CBOR array of roles.  </t>
              <t>
Note that, for this handler, 'inclusion_flag' is always set to true, the array of roles 'role_filter' is always non-empty, while the array of node identifiers 'id_filter' is always empty. However, this is not necessarily the case for other handlers using the 'get_creds' parameter.</t>
            </li>
          </ul>
          <figure anchor="cddl-ex-getpubkeys">
            <name>CDLL definition of get_creds, using as example node identifier encoded as bstr and role as tstr</name>
            <sourcecode type="CDDL"><![CDATA[
inclusion_flag = bool

role = tstr
comb_role = [ 2*role ]
role_filter = [ *(role / comb_role) ]

id = bstr
id_filter = [ *id ]

get_creds = null / [ inclusion_flag, role_filter, id_filter]
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>'client_cred', encoded as a CBOR byte string, with value the original binary representation of the Client's authentication credential. This parameter is used if the KDC is managing (collecting from/distributing to the Client) the authentication credentials of the group members, and if the Client's role in the group will require for it to send messages to one or more group members. It is REQUIRED of the application profiles to define the specific formats that are acceptable to use for authentication credentials in the group (REQ6).</li>
            <li>'cnonce', encoded as a CBOR byte string, and including a dedicated nonce N_C generated by the Client. This parameter MUST be present.</li>
            <li>
              <t>'client_cred_verify', encoded as a CBOR byte string. This parameter MUST be present if the 'client_cred' parameter is present and no authentication credential associated with the Client's token can be retrieved for that group.  </t>
              <t>
This parameter contains a proof-of-possession (PoP) evidence computed by the Client over the following PoP input: the scope (encoded as CBOR byte string), concatenated with N_S (encoded as CBOR byte string) concatenated with N_C (encoded as CBOR byte string), where:  </t>
              <ul spacing="normal">
                <li>scope is the CBOR byte string either specified in the 'scope' parameter above, if present, or as a default scope that the handler is expected to understand, if omitted.</li>
                <li>N_S is the challenge received from the KDC in the 'kdcchallenge' parameter of the 2.01 (Created) response to the Token Transfer Request (see <xref target="token-post"/>), encoded as a CBOR byte string.</li>
                <li>N_C is the nonce generated by the Client and specified in the 'cnonce' parameter above, encoded as a CBOR byte string.</li>
              </ul>
              <t>
An example of PoP input to compute 'client_cred_verify' using CBOR encoding is given in <xref target="fig-client-cred-input"/>.  </t>
              <t>
A possible type of PoP evidence is a signature, that the Client computes by using its own private key, whose corresponding public key is specified in the authentication credential carried in the 'client_cred' parameter. Application profiles of this specification MUST specify the exact approaches used to compute the PoP evidence to include in 'client_cred_verify', and MUST specify which of those approaches is used in which case (REQ14).  </t>
              <t>
If the token was not provided to the KDC through a Token Transfer Request (e.g., it is used directly to validate TLS instead), it is REQUIRED of the specific application profile to define how the challenge N_S is generated (REQ15).</t>
            </li>
            <li>'creds_repo', which can be present if the format of the Client's authentication credential in the 'client_cred' parameter is a certificate. In such a case, this parameter has as value the URI of the certificate. This parameter is encoded as a CBOR text string. Alternative specific encodings of this parameter MAY be defined in applications of this specification (OPT6).</li>
            <li>
              <t>'control_uri', with value a full URI, encoded as a CBOR text string. A default url-path is /ace-group/GROUPNAME/node, although implementations can use different ones instead. The URI MUST NOT have url-path ace-group/GROUPNAME.  </t>
              <t>
If 'control_uri' is specified in the Join Request, the Client acts as a CoAP server and hosts a resource at this specific URI. The KDC MAY use this URI to send CoAP requests to the Client (acting as CoAP server in this exchange), for example for one-to-one provisioning of new group keying material when performing a group rekeying (see <xref target="update-keys"/>), or to inform the Client of its removal from the group <xref target="sec-node-removal"/>.  </t>
              <t>
In particular, this resource is intended for communications concerning exclusively the group whose group name GROUPNAME is specified in the 'scope' parameter. If the KDC does not implement mechanisms using this resource for that group, it can ignore this parameter. Other additional functionalities of this resource MAY be defined in application profiles of this specifications (OPT7).</t>
            </li>
          </ul>
          <figure anchor="fig-client-cred-input">
            <name>Example of PoP input to compute 'client_cred_verify' using CBOR encoding</name>
            <artwork><![CDATA[
scope, N_S, and N_C expressed in CBOR diagnostic notation:
  scope = h'826667726f7570316673656e646572'
  N_S   = h'018a278f7faab55a'
  N_C   = h'25a8991cd700ac01'


scope, N_S, and N_C as CBOR encoded byte strings:
  scope = 0x4f826667726f7570316673656e646572
  N_S   = 0x48018a278f7faab55a
  N_C   = 0x4825a8991cd700ac01

PoP input:
  0x4f 826667726f7570316673656e646572
    48 018a278f7faab55a 48 25a8991cd700ac01
]]></artwork>
          </figure>
          <t>If the request does not include a 'scope' field, the KDC is expected to understand with what roles the Client is requesting to join the group. For example, as per the access token, the Client might have been granted access to the group with only one role. If the KDC cannot determine which exact scope should be considered for the Client, it MUST reply with a 4.00 (Bad Request) error response.</t>
          <t>The handler considers the scope specified in the access token associated with the Client, and checks the scope entry related to the group with name GROUPNAME associated with the endpoint. In particular, the handler checks whether the set of roles specified in that scope entry includes all the roles that the Client wishes to have in the group as per the Join Request. If this is not the case, the KDC MUST reply with a 4.03 (Forbidden) error response.</t>
          <t>If the KDC manages the group members' authentication credentials, the handler checks if one is included in the 'client_cred' field. If so, the KDC retrieves the authentication credential and performs the following actions.</t>
          <ul spacing="normal">
            <li>If the access token was provided through a Token Transfer Request (see <xref target="token-post"/>) but the KDC cannot retrieve the 'kdcchallenge' associated with this Client (see <xref target="token-post"/>), the KDC MUST reply with a 4.00 Bad Request error response, which MUST also have Content-Format application/ace-groupcomm+cbor. The payload of the error response is a CBOR map including a newly generated 'kdcchallenge' value. This is specified in the 'kdcchallenge' parameter.</li>
            <li>
              <t>The KDC checks the authentication credential to be valid for the group identified by GROUPNAME. That is, it checks that the authentication credential has the format used in the group, is intended for the public key algorithm used in the group, and is aligned with the possible associated parameters used in the group.  </t>
              <t>
If this verification fails, the handler MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 2 ("Authentication credential incompatible with the group configuration").</t>
            </li>
            <li>
              <t>The KDC verifies the PoP evidence contained in the 'client_cred_verify' field. Application profiles of this specification MUST specify the exact approaches used to verify the PoP evidence, and MUST specify which of those approaches is used in which case (REQ14).  </t>
              <t>
If the PoP evidence does not pass verification, the handler MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 3 ("Invalid Proof-of-Possession evidence").</t>
            </li>
          </ul>
          <t>If no authentication credential is included in the 'client_cred' field, the handler checks if an authentication credential is already associated with the received access token and to the group identified by GROUPNAME (see also <xref target="ssec-key-distribution-exchange"/>). Note that the same joining node may use different authentication credentials in different groups, and all those authentication credentials would be associated with the same access token.</t>
          <t>If an eligible authentication credential for the Client is neither present in the 'client_cred' field nor retrieved from the stored ones at the KDC, it is RECOMMENDED that the handler stops the processing and replies with a 4.00 (Bad Request) error response. Applications profiles MAY define alternatives (OPT8).</t>
          <t>If, regardless the reason, the KDC replies with a 4.00 (Bad Request) error response, this response MAY have Content-Format set to application/ace-groupcomm+cbor and have a CBOR map as payload. For instance, the CBOR map can include a 'sign_info' parameter formatted as 'sign_info_res' defined in <xref target="sign-info"/>, with the 'cred_fmt' element set to the CBOR simple value "null" (0xf6) if the Client sent its own authentication credential and the KDC is not set to store authentication credentials of the group members.</t>
          <t>If all the verifications above succeed, the KDC proceeds as follows.</t>
          <t>First, only in case the Client is not already a group member, the handler performs the following actions:</t>
          <ul spacing="normal">
            <li>The handler adds the Client to the list of current members of the group.</li>
            <li>The handler assigns a name NODENAME to the Client, and creates a sub-resource to /ace-group/GROUPNAME at the KDC, i.e., "/ace-group/GROUPNAME/nodes/NODENAME".</li>
            <li>The handler associates the node identifier NODENAME to the access token and the secure session for the Client.</li>
          </ul>
          <t>Then, the handler performs the following actions.</t>
          <ul spacing="normal">
            <li>
              <t>If the KDC manages the group members' authentication credentials:  </t>
              <ul spacing="normal">
                <li>The handler associates the retrieved Client's authentication credential to the tuple composed of the node name NODENAME, the group name GROUPNAME, and the received access token.</li>
                <li>The handler adds the retrieved Client's authentication credential to the stored list of authentication credentials stored for the group identified by GROUPNAME. If such list already includes an authentication credential for the Client, but a different authentication credential is specified in the 'client_cred' field, then the handler MUST replace the old authentication credential in the list with the one specified in the 'client_cred' field.</li>
              </ul>
            </li>
            <li>If the application requires backward security or if the used application profile prescribes so, the KDC MUST generate new group keying material and securely distribute it to the current group members (see <xref target="sec-group-rekeying"/>).</li>
            <li>The handler returns a successful Join Response as defined below, containing the symmetric group keying material; the group policies; and the authentication credentials of the current members of the group, if the KDC manages those and the Client requested them.</li>
          </ul>
          <t>The Join Response MUST have response code 2.01 (Created) if the Client has been added to the list of group members in this join exchange (see above), or 2.04 (Changed) otherwise, i.e., if the Client is re-joining the group without having left it.</t>
          <t>The Join Response message MUST include the Location-Path CoAP option, specifying the URI path to the sub-resource associated with the Client, i.e., "/ace-group/GROUPNAME/nodes/NODENAME".</t>
          <t>The Join Response message MUST have Content-Format application/ace-groupcomm+cbor. The payload of the response is formatted as a CBOR map, which MUST contain the following fields and values.</t>
          <ul spacing="normal">
            <li>'gkty', identifying the key type of the 'key' parameter. The set of values can be found in the "Key Type" column of the "ACE Groupcomm Key Types" registry. Implementations MUST verify that the key type matches the application profile being used, if present, as registered in the "ACE Groupcomm Key Types" registry.</li>
            <li>'key', containing the keying material for the group communication, or information required to derive it.</li>
            <li>'num', containing the version number of the keying material for the group communication, formatted as an integer. This is a strictly monotonic increasing field. The application profile MUST define the initial version number (REQ16).</li>
          </ul>
          <t>The exact format of the 'key' value MUST be defined in applications of this specification (REQ17), as well as values of 'gkty' accepted by the application (REQ18). Additionally, documents specifying the key format MUST register it in the "ACE Groupcomm Key Types" registry defined in <xref target="iana-key"/>, including its name, type, and application profile to be used with.</t>
          <figure anchor="fig-gkty">
            <name>ACE Groupcomm Key Types</name>
            <artwork align="center"><![CDATA[
+----------+----------------+---------+-------------+------------+
| Name     | Key Type Value | Profile | Description | Reference  |
+----------+----------------+---------+-------------+------------+
| Reserved | 0              |         | This value  | [RFC-XXXX] |
|          |                |         | is reserved |            |
+----------+----------------+---------+-------------+------------+
]]></artwork>
          </figure>
          <t>Note to RFC Editor: In <xref target="fig-gkty"/>, please replace "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
          <t>The response SHOULD contain the following parameter:</t>
          <ul spacing="normal">
            <li>'exp', with value the expiration time of the keying material for the group communication, encoded as a CBOR unsigned integer. This field contains a numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds, analogous to what is specified for NumericDate in <xref section="2" sectionFormat="of" target="RFC7519"/>. Group members MUST NOT use the keying material after the time indicated in this field, and they can retrieve the new group keying material from the KDC.</li>
          </ul>
          <t>Optionally, the response MAY contain the following parameters, which, if included, MUST have format and value as specified below.</t>
          <ul spacing="normal">
            <li>'ace_groupcomm_profile', with value a CBOR integer that MUST be used to uniquely identify the application profile for group communication. Applications of this specification MUST register an application profile identifier and the related value for this parameter in the "ACE Groupcomm Profiles" registry (REQ19).</li>
          </ul>
          <figure anchor="ace-groupcomm-profile-0">
            <name>ACE Groupcomm Profiles</name>
            <artwork align="center"><![CDATA[
+----------+------------------------+------------+------------+
| Name     | Description            | CBOR Value | Reference  |
+----------+------------------------+------------+------------+
| Reserved | This value is reserved | 0          | [RFC-XXXX] |
+----------+------------------------+------------+------------+
]]></artwork>
          </figure>
          <t>Note to RFC Editor: In <xref target="ace-groupcomm-profile-0"/>, please replace "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
          <ul spacing="normal">
            <li>'creds', MUST be present if 'get_creds' was present in the request, otherwise it MUST NOT be present. This parameter is a CBOR array specifying the authentication credentials of the group members, i.e., of all of them or of the ones selected according to the 'get_creds' parameter in the request. In particular, each element of the array is a CBOR byte string, with value the original binary representation of a group member's authentication credential. It is REQUIRED of the application profiles to define the specific formats of authentication credentials that are acceptable to use in the group (REQ6).</li>
            <li>
              <t>'peer_roles', SHOULD be present if 'creds' is also present, otherwise it MUST NOT be present. This parameter is a CBOR array of n elements, with n the number of authentication credentials included in the 'creds' parameter (at most the number of members in the group). The i-th element of the array specifies the role (or CBOR array of roles) that the group member associated with the i-th authentication credential in 'creds' has in the group. In particular, each array element is encoded as the role element of a scope entry, as defined in <xref target="ssec-authorization-request"/>.  </t>
              <t>
This parameter MAY be omitted if the Client can rely on other means to unambiguously gain knowledge of the role of each group member whose associated authentication credential is specified in the 'creds' parameter. For example, all such group members may have the same role in the group joined by the Client, and such a role can be unambiguously assumed by the Client (e.g., based on what is defined in the used application profile of this specification). As another example, each and every of the authentication credentials specified in the 'creds' parameter can indicate the role(s) that the corresponding group member has in the group joined by the Client.  </t>
              <t>
When receiving the authentication credential of a Client in the 'client_cred' parameter of a Join Request (see <xref target="ssec-key-distribution-exchange"/>) or of an Authentication Credential Update Request (see <xref target="update-pub-key"/>), the KDC is not expected to check that the authentication credential indicates the role(s) that the Client can have or has in the group in question. When preparing a Join Response, the KDC can decide about including or not the 'peer_roles' parameter depending on the specific set of authentication credentials specified in the 'creds' parameter of that Join Response.</t>
            </li>
            <li>'peer_identifiers', MUST be present if 'creds' is also present, otherwise it MUST NOT be present. This parameter is a CBOR array of n elements, with n the number of authentication credentials included in the 'creds' parameter (at most the number of members in the group). The i-th element of the array specifies the node identifier that the group member associated with the i-th authentication credential in 'creds' has in the group. In particular, the i-th array element is encoded as a CBOR byte string, with value the node identifier of the group member.</li>
            <li>'group_policies', with value a CBOR map, whose entries specify how the group handles specific management aspects. These include, for instance, approaches to achieve synchronization of sequence numbers among group members. The elements of this field are registered in the "ACE Groupcomm Policies" registry. This specification defines the three elements "Sequence Number Synchronization Methods", "Key Update Check Interval", and "Expiration Delta", which are summarized in <xref target="fig-ACE-Groupcomm-Policies"/>. Application profiles that build on this document MUST specify the exact content format and default value of included map entries (REQ20).</li>
          </ul>
          <figure anchor="fig-ACE-Groupcomm-Policies">
            <name>ACE Groupcomm Policies</name>
            <artwork align="center"><![CDATA[
+--------------+-------+----------+----------------------+------------+
|     Name     | CBOR  |   CBOR   |     Description      | Reference  |
|              | label |   type   |                      |            |
+--------------+-------+----------+----------------------+------------+
| Sequence     | TBD   | tstr/int | Method for recipient | [RFC-XXXX] |
| Number       |       |          | group members to     |            |
| Synchroniza- |       |          | synchronize with     |            |
| tion Method  |       |          | sequence numbers of  |            |
|              |       |          | of sender group      |            |
|              |       |          | members. Its value   |            |
|              |       |          | is taken from the    |            |
|              |       |          | 'Value' column of    |            |
|              |       |          | the Sequence Number  |            |
|              |       |          | Synchronization      |            |
|              |       |          | Method registry      |            |
+--------------+-------+----------+----------------------+------------+
| Key Update   | TBD   | int      | Polling interval in  | [RFC-XXXX] |
| Check        |       |          | seconds, for group   |            |
| Interval     |       |          | members to check at  |            |
|              |       |          | the KDC if the       |            |
|              |       |          | latest group keying  |            |
|              |       |          | material is the one  |            |
|              |       |          | that they store      |            |
+--------------+-------+----------+----------------------+------------+
| Expiration   | TBD   | uint     | Number of seconds    | [RFC-XXXX] |
| Delta        |       |          | from 'exp' until a   |            |
|              |       |          | UTC date/time, after |            |
|              |       |          | which group members  |            |
|              |       |          | MUST stop using the  |            |
|              |       |          | group keying         |            |
|              |       |          | material that they   |            |
|              |       |          | store to decrypt     |            |
|              |       |          | incoming messages    |            |
+--------------+-------+----------|----------------------|------------+
]]></artwork>
          </figure>
          <t>Note to RFC Editor: In <xref target="fig-ACE-Groupcomm-Policies"/>, please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
          <ul spacing="normal">
            <li>
              <t>'kdc_cred', encoded as a CBOR byte string, with value the original binary representation of the KDC's authentication credential. This parameter is used if the KDC has an associated authentication credential and this is required for the correct group operation. It is REQUIRED of application profiles to define whether the KDC has an authentication credential and if this has to be provided through the 'kdc_cred' parameter (REQ8).  </t>
              <t>
In such a case, the KDC's authentication credential MUST have the same format used for the authentication credentials of the group members. It is REQUIRED of the application profiles to define the specific formats that are acceptable to use for the authentication credentials in the group (REQ6).</t>
            </li>
            <li>'kdc_nonce', encoded as a CBOR byte string, and including a dedicated nonce N_KDC generated by the KDC. This parameter MUST be present if the 'kdc_cred' parameter is present.</li>
            <li>
              <t>'kdc_cred_verify', encoded as a CBOR byte string. This parameter MUST be present if the 'kdc_cred' parameter is present.  </t>
              <t>
This parameter contains a proof-of-possession (PoP) evidence computed by the KDC over the following PoP input: the nonce N_C (encoded as CBOR byte string) concatenated with the nonce N_KDC (encoded as CBOR byte string), where:  </t>
              <ul spacing="normal">
                <li>N_C is the nonce generated by the Client and specified in the 'cnonce' parameter of the Join Request, encoded as a CBOR byte string.</li>
                <li>N_KDC is the nonce generated by the KDC and specified in the 'kdc_nonce' parameter, encoded as a CBOR byte string.</li>
              </ul>
              <t>
An example of PoP input to compute 'kdc_cred_verify' using CBOR encoding is given in <xref target="fig-kdc-cred-input"/>.  </t>
              <t>
A possible type of PoP evidence is a signature, that the KDC computes by using its own private key, whose corresponding public key is specified in the authentication credential carried in the 'kdc_cred' parameter. Application profiles of this specification MUST specify the exact approaches used by the KDC to compute the PoP evidence to include in 'kdc_cred_verify', and MUST specify which of those approaches is used in which case (REQ21).</t>
            </li>
            <li>'rekeying_scheme', identifying the rekeying scheme that the KDC uses to provide new group keying meterial to the group members. This parameter is encoded as a CBOR integer, whose value is taken from the "Value" column of the "ACE Groupcomm Rekeying Schemes" registry defined in <xref target="iana-ace-groupcomm-rekeying-schemes"/> of this specification.</li>
          </ul>
          <figure anchor="rekeying-scheme-0">
            <name>ACE Groupcomm Rekeying Schemes</name>
            <artwork align="center"><![CDATA[
+-------+----------------+-------------------------------+------------+
| Value |      Name      |          Description          | Reference  |
+-------+----------------+-------------------------------+------------+
|   0   | Point-to-Point | The KDC individually targets  | [RFC-XXXX] |
|       |                | each node to rekey, using the |            |
|       |                | pairwise secure communication |            |
|       |                | association with that node    |            |
+-------+----------------+-------------------------------+------------+
]]></artwork>
          </figure>
          <t>Application profiles of this specification MAY define a default group rekeying scheme, to refer to in case the 'rekeying_scheme' parameter is not included in the Join Response (OPT9).</t>
          <t>Note to RFC Editor: In <xref target="rekeying-scheme-0"/>, please replace "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
          <ul spacing="normal">
            <li>
              <t>'mgt_key_material', encoded as a CBOR byte string and containing the specific administrative keying material that the joining node requires in order to participate in the group rekeying process performed by the KDC. This parameter MUST NOT be present if the 'rekeying_scheme' parameter is not present and the application profile does not specify a default group rekeying scheme to use in the group. Some simple rekeying scheme may not require specific administrative keying material to be provided, e.g., the basic "Point-to-Point" group rekeying scheme (see <xref target="point-to-point-rekeying"/>).  </t>
              <t>
In more advanced group rekeying schemes, the administrative keying material can be composed of multiple keys organized, for instance, into a logical tree hierarchy, whose root key is the only administrative key shared by all the group members. In such a case, each group member is exclusively associated with one leaf key in the hierarchy, and stores only the administrative keys from the associated leaf key all the way up along the path to the root key. That is, different group members can be provided with a different subset of the overall administrative keying material.  </t>
              <t>
It is expected from separate documents to define how the advanced group rekeying scheme possibly indicated in the 'rekeying_scheme' parameter is used by an application profile of this specification. This includes defining the format of the administrative keying material to specify in 'mgt_key_material', consistently with the group rekeying scheme and the application profile in question.</t>
            </li>
            <li>
              <t>'control_group_uri', with value a full URI, encoded as a CBOR text string. The URI MUST specify addressing information intended to reach all the members in the group. For example, this can be a multicast IP address, optionally together with a port number that, if omitted, defaults to 5683, i.e., the default port number for the "coap" URI scheme (see <xref section="6.1" sectionFormat="of" target="RFC7252"/>). The URI MUST include GROUPNAME in the url-path. A default url-path is /ace-group/GROUPNAME, although implementations can use different ones instead. The URI MUST NOT have url-path ace-group/GROUPNAME/node.  </t>
              <t>
If 'control_group_uri' is included in the Join Response, the Clients supporting this parameter act as CoAP servers, host a resource at this specific URI, and listen to the specified addressing information.  </t>
              <t>
The KDC MAY use this URI to send one-to-many CoAP requests to the Client group members (acting as CoAP servers in this exchange), for example for one-to-many provisioning of new group keying material when performing a group rekeying (see <xref target="update-keys"/>), or to inform the Clients of their removal from the group <xref target="sec-node-removal"/>.  </t>
              <t>
In particular, this resource is intended for communications concerning exclusively the group whose group name GROUPNAME is specified in the 'scope' parameter. If the KDC does not implement mechanisms using this resource for that group, it can ignore this parameter. Other additional functionalities of this resource MAY be defined in application profiles of this specifications (OPT10).</t>
            </li>
          </ul>
          <figure anchor="fig-kdc-cred-input">
            <name>Example of PoP input to compute 'kdc_cred_verify' using CBOR encoding</name>
            <artwork><![CDATA[
N_C and N_KDC expressed in CBOR diagnostic notation:
  N_C   = h'25a8991cd700ac01'
  N_KDC = h'cef04b2aa791bc6d'


N_C and N_KDC as CBOR encoded byte strings:
  N_C   = 0x4825a8991cd700ac01
  N_KDC = 0x48cef04b2aa791bc6d

PoP input:
  0x48 25a8991cd700ac01 48 cef04b2aa791bc6d
]]></artwork>
          </figure>
          <t>After sending the Join Response, the KDC MUST store the N_C value specified in the 'cnonce' parameter of the Join Request, as a 'clientchallenge' value associated with the Client. If, as a group member, the Client later sends a GET request to the /ace-group/GROUPNAME/kdc-cred resource for retrieving the latest KDC's authentication credential (see <xref target="kdc-pub-key-get"/>), then the KDC is able to use the stored 'clientchallenge' for computing a PoP evidence to include in the response sent to the Client, hence proving the possession of its own private key.</t>
          <t>If the Join Response includes the 'kdc_cred_verify' parameter, the Client verifies the conveyed PoP evidence and considers the group joining unsuccessful in case of failed verification. Application profiles of this specification MUST specify the exact approaches used by the Client to verify the PoP evidence in 'kdc_cred_verify', and MUST specify which of those approaches is used in which case (REQ21).</t>
          <t>Specific application profiles that build on this document MUST specify the communication protocol that members of the group use to communicate with each other (REQ22) and how exactly the keying material is used to protect the group communication (REQ23).</t>
          <section anchor="ssec-key-distribution-exchange">
            <name>Join the Group</name>
            <t><xref target="fig-key-distr-join"/> gives an overview of the join exchange between the Client and the KDC, when the Client first joins a group, while <xref target="fig-key-distr-join-2"/> shows an example.</t>
            <figure anchor="fig-key-distr-join">
              <name>Message Flow of the Join Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                     KDC
   |                                                        |
   |-------- Join Request: POST /ace-group/GROUPNAME ------>|
   |                                                        |
   |<------------ Join Response: 2.01 (Created) ----------- |
   | Location-Path = "/ace-group/GROUPNAME/nodes/NODENAME"  |
]]></artwork>
            </figure>
            <figure anchor="fig-key-distr-join-2">
              <name>Example of First Join Request-Response for Group Joining</name>
              <artwork align="center"><![CDATA[
Request:

Header: POST (Code=0.02)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation,
         with AUTH_CRED and POP_EVIDENCE being CBOR byte strings):
  { "scope": << [ "group1", ["sender", "receiver"] ] >> ,
    "get_creds": [true, ["sender"], []], "client_cred": AUTH_CRED,
    "cnonce": h'25a8991cd700ac01', "client_cred_verify": POP_EVIDENCE }

Response:

Header: Created (Code=2.01)
Content-Format: "application/ace-groupcomm+cbor"
Location-Path: "kdc.example.com"
Location-Path: "g1"
Location-Path: "nodes"
Location-Path: "c101"
Payload (in CBOR diagnostic notation,
         with KEY being a CBOR byte strings):
  { "gkty": 13, "key": KEY, "num": 12, "exp": 1609459200,
    "creds": [ AUTH_CRED_1, AUTH_CRED_2 ],
    "peer_roles": ["sender", ["sender", "receiver"]],
    "peer_identifiers": [ ID1, ID2 ] }
]]></artwork>
            </figure>
            <t>If not previously established, the Client and the KDC MUST first establish a pairwise secure communication channel (REQ24). This can be achieved, for instance, by using a transport profile of ACE. The join exchange MUST occur over that secure channel. The Client and the KDC MAY use that same secure channel to protect further pairwise communications that must be secured.</t>
            <t>The secure communication protocol is REQUIRED to establish the secure channel between the Client and the KDC by using the proof-of-possession key bound to the access token. As a result, the proof-of-possession to bind the access token to the Client is performed by using the proof-of-possession key bound to the access token for establishing secure communication between the Client and the KDC.</t>
            <t>To join the group, the Client sends a CoAP POST request to the /ace-group/GROUPNAME endpoint at the KDC, where GROUPNAME is the group name of the group to join, formatted as specified in <xref target="gid-post"/>. This group name is the same as in the scope entry corresponding to that group, specified in the 'scope' parameter of the Authorization Request/Response, or it can be retrieved from it. Note that, in case of successful joining, the Client will receive the URI to retrieve individual keying material and to leave the group in the Location-Path option of the response.</t>
            <t>If the node is joining a group for the first time and the KDC maintains the authentication credentials of the group members, the Client is REQUIRED to send its own authentication credential and proof-of-possession (PoP) evidence in the Join Request (see the 'client_cred' and 'client_cred_verify' parameters in <xref target="gid-post"/>). The request is accepted only if both the authentication credential is provided and the PoP evidence is successfully verified.</t>
            <t>If a node re-joins a group as authorized by the same access token and using the same authentication credential, it can omit the authentication credential and the PoP evidence, or just the PoP evidence, from the Join Request. Then, the KDC will be able to retrieve the node's authentication credential associated with the access token for that group. If the authentication credential has been discarded, the KDC replies with 4.00 (Bad Request) error response, as specified in <xref target="gid-post"/>. If a node re-joins a group but wants to update its own authentication credential, it needs to include both its authentication credential and the PoP evidence in the Join Request like when it joined the group for the first time.</t>
          </section>
        </section>
        <section anchor="gid-get">
          <name>GET Handler</name>
          <t>The GET handler returns the symmetric group keying material for the group identified by GROUPNAME.</t>
          <t>The handler expects a GET request.</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/>, the handler verifies that the Client is a current member of the group. If the verification fails, the KDC MUST reply with a 4.03 (Forbidden) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 0 ("Operation permitted only to group members").</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response containing the symmetric group keying material. The payload of the response is formatted as a CBOR map which MUST contain the parameters 'gkty', 'key', and 'num' specified in <xref target="gid-post"/>.</t>
          <t>Each of the following parameters specified in <xref target="gid-post"/> MUST also be included in the payload of the response, if they are included in the payload of the Join Responses sent for the group: 'rekeying_scheme', 'mgt_key_material'.</t>
          <t>The payload MAY also include the parameters 'ace_groupcomm_profile' and 'exp' parameters specified in <xref target="gid-post"/>.</t>
          <section anchor="ssec-key-material-retrieval">
            <name>Retrieve Group Keying Material</name>
            <t>A node in the group can contact the KDC to retrieve the current group keying material, by sending a CoAP GET request to the /ace-group/GROUPNAME endpoint at the KDC, where GROUPNAME is the group name.</t>
            <t><xref target="fig-retrieve-key-material"/> gives an overview of the join exchange between the Client and the KDC, when the Client first joins a group, while <xref target="fig-retrieve-key-material-2"/> shows an example.</t>
            <figure anchor="fig-retrieve-key-material">
              <name>Message Flow of Key Distribution Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                              KDC
   |                                                                 |
   |----- Key Distribution Request: GET /ace-group/GROUPNAME ------>|
   |                                                                 |
   |<----------- Key Distribution Response: 2.05 (Content) --------- |
   |                                                                 |
]]></artwork>
            </figure>
            <figure anchor="fig-retrieve-key-material-2">
              <name>Example of Key Distribution Request-Response</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation,
         with KEY being a CBOR byte strings):
  { "gkty": 13, "key": KEY, "num": 12 }
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupnamecreds">
        <name>/ace-group/GROUPNAME/creds</name>
        <t>This resource implements the GET and FETCH handlers.</t>
        <section anchor="pubkey-fetch">
          <name>FETCH Handler</name>
          <t>The FETCH handler receives identifiers of group members for the group identified by GROUPNAME and returns the authentication credentials of such group members.</t>
          <t>The handler expects a request with payload formatted as a CBOR map, that MUST contain the following field.</t>
          <ul spacing="normal">
            <li>
              <t>'get_creds', whose value is encoded as in <xref target="gid-post"/> with the following modifications.  </t>
              <ul spacing="normal">
                <li>
                  <t>The arrays 'role_filter' and 'id_filter' MUST NOT both be empty, i.e., in CBOR diagnostic notation: [ bool, [ ], [ ] ]. If the 'get_creds' parameter has such a format, the request MUST be considered malformed, and the KDC MUST reply with a 4.00 (Bad Request) error response.      </t>
                  <t>
Note that a group member can retrieve the authentication credentials of all the current group members by sending a GET request to the same KDC resource instead (see <xref target="sec-key-retrieval-all"/>).</t>
                </li>
                <li>The element 'inclusion_flag' encodes the CBOR simple value "true" (0xf5) if the third element 'id_filter' specifies an empty CBOR array, or if the Client wishes to receive the authentication credentials of the nodes having their node identifier specified in 'id_filter' (i.e, selection by inclusive filtering). Instead, this element encodes the CBOR simple value "false" (0xf4) if the Client wishes to receive the authentication credentials of the nodes not having the node identifiers specified in the third element 'id_filter' (i.e., selection by exclusive filtering).</li>
                <li>The array 'role_filter' can be empty, if the Client does not wish to filter the requested authentication credentials based on the roles of the group members.</li>
                <li>The array 'id_filter' contains zero or more node identifiers of group members, for the group identified by GROUPNAME. The Client indicates that it wishes to receive the authentication credentials of the nodes having or not having these node identifiers, in case the 'inclusion_flag' element encodes the CBOR simple value "true" (0xf5) or "false" (0xf4), respectively. The array 'id_filter' may be empty, if the Client does not wish to filter the requested authentication credentials based on the node identifiers of the group members.</li>
              </ul>
            </li>
          </ul>
          <t>Note that, in case the 'role_filter' array and the 'id_filter' array are both non-empty:</t>
          <ul spacing="normal">
            <li>If the 'inclusion_flag' encodes the CBOR simple value "true" (0xf5), the handler returns the authentication credentials of group members whose roles match with 'role_filter' and/or having their node identifier specified in 'id_filter'.</li>
            <li>If the 'inclusion_flag' encodes the CBOR simple value "false" (0xf4), the handler returns the authentication credentials of group members whose roles match with 'role_filter' and, at the same time, not having their node identifier specified in 'id_filter'.</li>
          </ul>
          <t>The specific format of authentication credentials as well as identifiers, roles, and combination of roles of group members MUST be specified by application profiles of this specification (REQ1, REQ6, REQ25).</t>
          <t>The handler identifies the authentication credentials of the current group members for which either:</t>
          <ul spacing="normal">
            <li>the role identifier matches with one of those indicated in the request; note that the request can contain a "combination of roles", where the handler select all group members who have all roles included in the combination.</li>
            <li>the node identifier matches with one of those indicated in the request.</li>
          </ul>
          <t>If all verifications succeed, the handler returns a 2.05 (Content) message response with payload formatted as a CBOR map, containing only the following parameters from <xref target="gid-post"/>.</t>
          <ul spacing="normal">
            <li>'num', which encodes the version number of the current group keying material.</li>
            <li>'creds', which encodes the list of authentication credentials of the selected group members.</li>
            <li>
              <t>'peer_roles', which encodes the role (or CBOR array of roles) that each of the selected group members has in the group.  </t>
              <t>
This parameter SHOULD be present and it MAY be omitted, according to the same criteria defined for the Join Response (see <xref target="gid-post"/>).</t>
            </li>
            <li>'peer_identifiers', which encodes the node identifier that each of the selected group members has in the group.</li>
          </ul>
          <t>The specific format of authentication credentials as well as of node identifiers of group members is specified by the application profile (REQ6, REQ25).</t>
          <t>If the KDC does not store any authentication credential associated with the specified node identifiers, the handler returns a response with payload formatted as a CBOR byte string of zero length.</t>
          <t>The handler MAY enforce one of the following policies, in order to handle possible node identifiers that are included in the 'id_filter' element of the 'get_creds' parameter of the request but are not associated with any current group member. Such a policy MUST be specified by the application profile (REQ26).</t>
          <ul spacing="normal">
            <li>The KDC silently ignores those node identifiers.</li>
            <li>
              <t>The KDC retains authentication credentials of group members for a given amount of time after their leaving, before discarding them. As long as such authentication credentials are retained, the KDC provides them to a requesting Client.  </t>
              <t>
If the KDC adopts this policy, the application profile MUST also specify the amount of time during which the KDC retains the authentication credential of a former group member after its leaving, possibly on a per-member basis.</t>
            </li>
          </ul>
          <t>Note that this resource handler only verifies that the node is authorized by the AS to access this resource. Nodes that are not members of the group but are authorized to do signature verifications on the group messages may be allowed to access this resource, if the application needs it.</t>
          <section anchor="sec-key-retrieval">
            <name>Retrieve a Subset of Authentication Credentials in the Group</name>
            <t>In case the KDC maintains the authentication credentials of group members, a node in the group can contact the KDC to request the authentication credentials, roles, and node identifiers of a specified subset of group members, by sending a CoAP FETCH request to the /ace-group/GROUPNAME/creds endpoint at the KDC, where GROUPNAME is the group name, and formatted as defined in <xref target="pubkey-fetch"/>.</t>
            <t><xref target="fig-public-key-1"/> gives an overview of the exchange mentioned above, while <xref target="fig-public-key-2"/> shows an example of such an exchange.</t>
            <figure anchor="fig-public-key-1">
              <name>Message Flow of Authentication Credential Request-Response to Obtain the Authentication Credentials of Specific Group Members</name>
              <artwork align="center"><![CDATA[
Client                                                      KDC
   |                                                         |
   |            Authentication Credential Request:           |
   |-------------------------------------------------------->|
   |             FETCH /ace-group/GROUPNAME/creds            |
   |                                                         |
   |<-- Authentication Credential Response: 2.05 (Created) --|
   |                                                         |
]]></artwork>
            </figure>
            <figure anchor="fig-public-key-2">
              <name>Example of Authentication Credential Request-Response to Obtain the Authentication Credentials of Specific Group Members</name>
              <artwork><![CDATA[
Request:

Header: FETCH (Code=0.05)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "pub-key"
Content-Format: "application/ace-groupcomm+cbor"
Payload:
  { "get_creds": [true, [], [ ID3 ]] }

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation):
  { "creds": [ AUTH_CRED_3 ],
    "peer_roles": [ "receiver" ],
    "peer_identifiers": [ ID3 ] }
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pubkey-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>If all verifications succeed, the KDC replies with a 2.05 (Content) response as in the FETCH handler in <xref target="pubkey-fetch"/>, but specifying in the payload the authentication credentials of all the group members, together with their roles and node identifiers.</t>
          <t>The parameter 'peer_roles' SHOULD be present in the payload of the response and it MAY be omitted, according to the same criteria defined for the Join Response (see <xref target="gid-post"/>).</t>
          <section anchor="sec-key-retrieval-all">
            <name>Retrieve All Authentication Credentials in the Group</name>
            <t>In case the KDC maintains the authentication credentials of group members, a group or an external signature verifier can contact the KDC to request the authentication credentials, roles, and node identifiers of all the current group members, by sending a CoAP GET request to the /ace-group/GROUPNAME/creds endpoint at the KDC, where GROUPNAME is the group name.</t>
            <t><xref target="fig-public-key-3"/> gives an overview of the message exchange, while <xref target="fig-public-key-4"/> shows an example of such an exchange.</t>
            <figure anchor="fig-public-key-3">
              <name>Message Flow of Authentication Credential Request-Response to Obtain the Authentication Credentials of all the Group Members</name>
              <artwork align="center"><![CDATA[
Client                                                      KDC
   |                                                         |
   |            Authentication Credential Request:           |
   |-------------------------------------------------------->|
   |              GET /ace-group/GROUPNAME/creds             |
   |                                                         |
   |<-- Authentication Credential Response: 2.05 (Content) --|
   |                                                         |
]]></artwork>
            </figure>
            <figure anchor="fig-public-key-4">
              <name>Example of Authentication Credential Request-Response to Obtain the Authentication Credentials of all the Group Members</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "pub-key"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation):
  { "num": 5,
    "creds": [ AUTH_CRED_1, AUTH_CRED_2, AUTH_CRED_3 ],
    "peer_roles": ["sender", ["sender", "receiver"], "receiver"],
    "peer_identifiers": [ ID1, ID2, ID3 ] }
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupnamekdc-cred">
        <name>ace-group/GROUPNAME/kdc-cred</name>
        <t>This resource implements a GET handler.</t>
        <section anchor="kdc-pub-key-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>If all verifications succeed, the handler returns a 2.05 (Content) message containing the KDC's authentication credential together with a proof-of-possession (PoP) evidence. The response MUST have Content-Format set to application/ace-groupcomm+cbor. The payload of the response is a CBOR map, which includes the following fields.</t>
          <ul spacing="normal">
            <li>The 'kdc_cred' parameter, specifying the KDC's authentication credential. This parameter is encoded like the 'kdc_cred' parameter in the Join Response (see <xref target="gid-post"/>).</li>
            <li>The 'kdc_nonce' parameter, specifying a nonce generated by the KDC. This parameter is encoded like the 'kdc_nonce' parameter in the Join Response (see <xref target="gid-post"/>).</li>
            <li>
              <t>The 'kdc_cred_verify' parameter, specifying a PoP evidence computed by the KDC over the following PoP input: the nonce N_C (encoded as CBOR byte string) concatenated with the nonce N_KDC (encoded as CBOR byte string), where:  </t>
              <ul spacing="normal">
                <li>N_C is the nonce generated by the Client that was specified in the 'cnonce' parameter of the Join Request, and that the KDC stored as 'clientchallenge' value associated with this Client after sending the corresponding Join Response (see <xref target="gid-post"/>). This nonce is encoded as a CBOR byte string.</li>
                <li>N_KDC is the nonce generated by the KDC and specified in the 'kdc_nonce' parameter, encoded as a CBOR byte string.</li>
              </ul>
              <t>
An example of PoP input to compute 'kdc_cred_verify' using CBOR encoding is given in <xref target="fig-kdc-cred-input-2"/>.  </t>
              <t>
The PoP evidence is computed by means of the same method used for computing the PoP evidence that was included in the Join Response for this Client (see <xref target="gid-post"/>).  </t>
              <t>
Application profiles of this specification MUST specify the exact approaches used by the KDC to compute the PoP evidence to include in 'kdc_cred_verify', and MUST specify which of those approaches is used in which case (REQ21).</t>
            </li>
          </ul>
          <figure anchor="fig-kdc-cred-input-2">
            <name>Example of PoP input to compute 'kdc_cred_verify' using CBOR encoding</name>
            <artwork><![CDATA[
N_C and N_KDC expressed in CBOR diagnostic notation:
  N_C   = h'25a8991cd700ac01'
  N_KDC = h'0b7db12aaff56da3'


N_C and N_KDC as CBOR encoded byte strings:
  N_C   = 0x4825a8991cd700ac01
  N_KDC = 0x480b7db12aaff56da3

PoP input:
  0x48 25a8991cd700ac01 48 0b7db12aaff56da3
]]></artwork>
          </figure>
          <section anchor="kdc-pub-key">
            <name>Retrieve the KDC's Authentication Credential</name>
            <t>In case the KDC has an associated authentication credential as required for the correct group operation, a group member or an external signature verifier can contact the KDC to request the KDC's authentication credential, by sending a CoAP GET request to the /ace-group/GROUPNAME/kdc-cred endpoint at the KDC, where GROUPNAME is the group name.</t>
            <t>Upon receiving the 2.05 (Content) response, the Client retrieves the KDC's authentication credential from the ’kdc_cred’ parameter, and MUST verify the proof-of-possession (PoP) evidence specified in the 'kdc_cred_verify' parameter. In case of successful verification of the PoP evidence, the Client MUST store the obtained KDC's authentication credential and replace the currently stored one.</t>
            <t>The PoP evidence is verified by means of the same method used when processing the Join Response (see <xref target="gid-post"/>). Application profiles of this specification MUST specify the exact approaches used by the Client to verify the PoP evidence in 'kdc_cred_verify', and MUST specify which of those approaches is used in which case (REQ21).</t>
            <t><xref target="fig-kdc-pub-key-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-kdc-pub-key-req-resp-ex"/> shows an example.</t>
            <figure anchor="fig-kdc-pub-key-req-resp">
              <name>Message Flow of KDC Authentication Credential Request-Response to Obtain the Authentication Credential of the KDC</name>
              <artwork align="center"><![CDATA[
Group
Member                                                         KDC
  |                                                             |
  |             KDC Authentication Credential Request           |
  |------------------------------------------------------------>|
  |              GET ace-group/GROUPNAME/gm-pub-key             |
  |                                                             |
  |<-- KDC Authentication Credential Response: 2.05 (Content) --|
  |                                                             |
]]></artwork>
            </figure>
            <figure anchor="fig-kdc-pub-key-req-resp-ex">
              <name>Example of KDC Authentication Credential Request-Response to Obtain the Authentication Credential of the KDC</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "kdc-pub-key"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation, with AUTH_CRED_KDC
         and POP_EVIDENCE being CBOR byte strings):
  {
    "kdc_nonce": h'0b7db12aaff56da3',
    "kdc_cred": AUTH_CRED_KDC,
    "kdc_cred_verify": POP_EVIDENCE
  }
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupnamepolicies">
        <name>/ace-group/GROUPNAME/policies</name>
        <t>This resource implements the GET handler.</t>
        <section anchor="policies-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/>, the handler verifies that the Client is a current member of the group. If the verification fails, the KDC MUST reply with a 4.03 (Forbidden) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 0 ("Operation permitted only to group members").</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response containing the list of policies for the group identified by GROUPNAME. The payload of the response is formatted as a CBOR map including only the parameter 'group_policies' defined in <xref target="gid-post"/> and specifying the current policies in the group. If the KDC does not store any policy, the payload is formatted as a zero-length CBOR byte string.</t>
          <t>The specific format and meaning of group policies MUST be specified in the application profile (REQ20).</t>
          <section anchor="policies">
            <name>Retrieve the Group Policies</name>
            <t>A node in the group can contact the KDC to retrieve the current group policies, by sending a CoAP GET request to the /ace-group/GROUPNAME/policies endpoint at the KDC, where GROUPNAME is the group name, and formatted as defined in <xref target="policies-get"/></t>
            <t><xref target="fig-policies"/> gives an overview of the exchange described above, while <xref target="fig-policies-2"/> shows an example.</t>
            <figure anchor="fig-policies">
              <name>Message Flow of Policies Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                      KDC
   |                                                         |
   |-- Policies Request: GET ace-group/GROUPNAME/policies -->|
   |                                                         |
   |<----------- Policies Response: 2.05 (Content) ----------|
   |                                                         |
]]></artwork>
            </figure>
            <figure anchor="fig-policies-2">
              <name>Example of Policies Request-Response</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "policies"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload(in CBOR diagnostic notation):
  { "group_policies": {"exp-delta": 120} }
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupnamenum">
        <name>/ace-group/GROUPNAME/num</name>
        <t>This resource implements the GET handler.</t>
        <section anchor="num-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/>, the handler verifies that the Client is a current member of the group. If the verification fails, the KDC MUST reply with a 4.03 (Forbidden) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 0 ("Operation permitted only to group members").</t>
          <t>If all verifications succeed, the handler returns a 2.05 (Content) message containing an integer that represents the version number of the symmetric group keying material. This number is incremented on the KDC every time the KDC updates the symmetric group keying material, before the new keying material is distributed. This number is stored in persistent storage.</t>
          <t>The payload of the response is formatted as a CBOR integer.</t>
          <section anchor="key-version">
            <name>Retrieve the Keying Material Version</name>
            <t>A node in the group can contact the KDC to request information about the version number of the symmetric group keying material, by sending a CoAP GET request to the /ace-group/GROUPNAME/num endpoint at the KDC, where GROUPNAME is the group name, formatted as defined in <xref target="num-get"/>. In particular, the version is incremented by the KDC every time the group keying material is renewed, before it's distributed to the group members.</t>
            <t><xref target="fig-version"/> gives an overview of the exchange described above, while <xref target="fig-version-2"/> shows an example.</t>
            <figure anchor="fig-version">
              <name>Message Flow of Version Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                    KDC
   |                                                       |
   |---- Version Request: GET ace-group/GROUPNAME/num ---->|
   |                                                       |
   |<--------- Version Response: 2.05 (Content) -----------|
   |                                                       |
]]></artwork>
            </figure>
            <figure anchor="fig-version-2">
              <name>Example of Version Request-Response</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "num"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload(in CBOR diagnostic notation):
  13
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="node-subresource">
        <name>/ace-group/GROUPNAME/nodes/NODENAME</name>
        <t>This resource implements the GET, PUT, and DELETE handlers.</t>
        <t>In addition to what is defined in <xref target="kdc-if-errors"/>, each of the handlers performs the following two verifications.</t>
        <ul spacing="normal">
          <li>The handler verifies that the Client is a current member of the group. If the verification fails, the KDC MUST reply with a 4.03 (Forbidden) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 0 ("Operation permitted only to group members").</li>
          <li>The handler verifies that the node name of the Client is equal to NODENAME used in the url-path. If the verification fails, the handler replies with a 4.03 (Forbidden) error response.</li>
        </ul>
        <section anchor="node-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response containing both the group keying material and the individual keying material for the Client, or information enabling the Client to derive it. The payload of the response is formatted as a CBOR map. The format for the group keying material is the same as defined in the response of <xref target="gid-get"/>. The specific format of individual keying material for group members, or of the information to derive it, and corresponding CBOR label, MUST be specified in the application profile (REQ27) and registered in <xref target="iana-reg"/>.</t>
          <t>Optionally, the KDC can make the sub-resource at ace-group/GROUPNAME/nodes/NODENAME also Observable <xref target="RFC7641"/> for the associated node. In case the KDC removes that node from the group without having been explicitly asked for it, this allows the KDC to send an unsolicited 4.04 (Not Found) response to the node as a notification of eviction from the group (see <xref target="sec-node-removal"/>).</t>
          <t>Note that the node could have been observing also the resource at ace-group/GROUPNAME, in order to be informed of changes in the keying material. In such a case, this method would result in largely overlapping notifications received for the resource at ace-group/GROUPNAME and the sub-resource at ace-group/GROUPNAME/nodes/NODENAME.</t>
          <t>In order to mitigate this, a node that supports the No-Response option <xref target="RFC7967"/> can use it when starting the observation of the sub-resource at ace-group/GROUPNAME/nodes/NODENAME. In particular, the GET observation request can also include the No-Response option, with value set to 2 (Not interested in 2.xx responses).</t>
          <section anchor="update-keys">
            <name>Retrieve Group and Individual Keying Material</name>
            <t>When any of the following happens, a node MUST stop using the stored group keying material to protect outgoing messages, and SHOULD stop using it to decrypt and verify incoming messages.</t>
            <ul spacing="normal">
              <li>Upon expiration of the keying material, according to what is indicated by the KDC with the 'exp' parameter (e.g., in a Join Response), or to a pre-configured value.</li>
              <li>Upon receiving a notification of revoked/renewed keying material from the KDC, possibly as part of an update of the keying material (rekeying) triggered by the KDC.</li>
              <li>Upon receiving messages from other group members without being able to retrieve the keying material to correctly decrypt them. This may be due to rekeying messages previously sent by the KDC, that the Client was not able to receive or decrypt.</li>
            </ul>
            <t>In either case, if it wants to continue participating in the group communication, the Client has to request the latest keying material from the KDC. To this end, the Client sends a CoAP GET request to the /ace-group/GROUPNAME/nodes/NODENAME endpoint at the KDC, formatted as specified in <xref target="node-get"/>. The Client can request the latest keying material from the KDC before the currently stored, old keying material reaches its expiration time.</t>
            <t>Note that policies can be set up, so that the Client sends a Key Distribution Request to the KDC only after a given number of received messages could not be decrypted (because of failed decryption processing or inability to retrieve the necessary keying material).</t>
            <t>It is application dependent and pertaining to the particular message exchange (e.g., <xref target="I-D.ietf-core-oscore-groupcomm"/>) to set up these policies for instructing Clients to retain incoming messages and for how long (OPT11). This allows Clients to possibly decrypt such messages after getting updated keying material, rather than just consider them non valid messages to discard right away.</t>
            <t>After having failed to decrypt messages from another group member and having sent a Key Distribution Request to the KDC, the Client might end up retrieving the same, latest group keying material that it already stores. In such a case, multiple failed decryptions might be due to the message sender and/or the KDC that have changed their authentication credential. Hence, the Client can retrieve such latest authentication credentials, by sending to the KDC an Authentication Credential Request (see <xref target="sec-key-retrieval"/> and <xref target="sec-key-retrieval-all"/>) and a KDC Authentication Credential Request (see <xref target="kdc-pub-key"/>), respectively.</t>
            <t>The Client can also send to the KDC a Key Distribution Request without having been triggered by a failed decryption of a message from another group member, if the Client wants to be sure that it currently stores the latest group keying material. If that is the case, the Client will receive from the KDC the same group keying material it already stores.</t>
            <t><xref target="fig-key-redistr-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-key-redistr-req-resp-2"/> shows an example.</t>
            <figure anchor="fig-key-redistr-req-resp">
              <name>Message Flow of Key Distribution Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                          KDC
   |                                                             |
   |------------------ Key Distribution Request: --------------->|
   |           GET ace-group/GROUPNAME/nodes/NODENAME            |
   |                                                             |
   |<-------- Key Distribution Response: 2.05 (Content) ---------|
   |                                                             |
]]></artwork>
            </figure>
            <figure anchor="fig-key-redistr-req-resp-2">
              <name>Example of Key Distribution Request-Response</name>
              <artwork><![CDATA[
Request:

Header: GET (Code=0.01)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "nodes"
Uri-Path: "c101"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation,
         with KEY and IND_KEY being CBOR byte strings,
         and "ind-key" being the profile-specified label
         for individual keying material):
  { "gkty": 13, "key": KEY, "num": 12, "ind-key": IND_KEY }
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="node-put">
          <name>PUT Handler</name>
          <t>The PUT handler processes requests from a Client that asks for new individual keying material, as required to process messages exchanged in the group.</t>
          <t>The handler expects a PUT request with empty payload.</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/> and at the beginning of <xref target="node-subresource"/>, the handler verifies that this operation is consistent with the set of roles that the Client has in the group (REQ11). If the verification fails, the KDC MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 1 ("Request inconsistent with the current roles").</t>
          <t>If the KDC is currently not able to serve this request, i.e., to generate new individual keying material for the requesting Client, the KDC MUST reply with a 5.03 (Service Unavailable) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 4 ("No available node identifiers").</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response containing newly generated, individual keying material for the Client. The payload of the response is formatted as a CBOR map. The specific format of newly-generated individual keying material for group members, or of the information to derive it, and corresponding CBOR label, MUST be specified in the application profile (REQ27) and registered in <xref target="iana-reg"/>.</t>
          <t>The typical successful outcome consists in replying with newly generated, individual keying material for the Client, as defined above. However, application profiles of this specification MAY also extend this handler in order to achieve different akin outcomes (OPT12), for instance:</t>
          <ul spacing="normal">
            <li>Not providing the Client with newly generated, individual keying material, but rather rekeying the whole group, i.e., providing all the current group members with newly generated group keying material.</li>
            <li>Both providing the Client with newly generated, individual keying material, as well as rekeying the whole group, i.e., providing all the current group members with newly generated group keying material.</li>
          </ul>
          <t>In either case, the handler may specify the new group keying material as part of the 2.05 (Content) response.</t>
          <t>Note that this handler is not intended to accommodate requests from a group member to trigger a group rekeying, whose scheduling and execution is an exclusive prerogative of the KDC (see also related security considerations in <xref target="sec-cons-rekeying"/>).</t>
          <section anchor="new-keys">
            <name>Request to Change Individual Keying Material</name>
            <t>A Client may ask the KDC for new, individual keying material. For instance, this can be due to the expiration of such individual keying material, or to the exhaustion of AEAD nonces, if an AEAD encryption algorithm is used for protecting communications in the group. An example of individual keying material can simply be an individual encryption key associated with the Client. Hence, the Client may ask for a new individual encryption key, or for new input material to derive it.</t>
            <t>To this end, the Client performs a Key Renewal Request-Response exchange with the KDC, i.e., it sends a CoAP PUT request to the /ace-group/GROUPNAME/nodes/NODENAME endpoint at the KDC, where GROUPNAME is the group name and NODENAME is its node name, and formatted as defined in <xref target="node-get"/>.</t>
            <t><xref target="fig-renewal-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-renewal-req-resp-2"/> shows an example.</t>
            <figure anchor="fig-renewal-req-resp">
              <name>Message Flow of Key Renewal Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                    KDC
   |                                                       |
   |------------------ Key Renewal Request: -------------->|
   |           PUT ace-group/GROUPNAME/nodes/NODENAME      |
   |                                                       |
   |<-------- Key Renewal Response: 2.05 (Content) --------|
   |                                                       |
]]></artwork>
            </figure>
            <figure anchor="fig-renewal-req-resp-2">
              <name>Example of Key Renewal Request-Response</name>
              <artwork><![CDATA[
Request:

Header: PUT (Code=0.03)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "nodes"
Uri-Path: "c101"
Payload: -

Response:

Header: Content (Code=2.05)
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation, with IND_KEY being a
         CBOR byte string, and "ind-key" being the profile-specified
         label for individual keying material):
  { "ind-key": IND_KEY }
]]></artwork>
            </figure>
            <t>Note that there is a difference between the Key Renewal Request in this section and the Key Distribution Request in <xref target="update-keys"/>. The former asks the KDC for new individual keying material, while the latters asks the KDC for the current group keying material together with the current individual keying material.</t>
            <t>As discussed in <xref target="node-put"/>, application profiles of this specification may define alternative outcomes for the Key Renewal Request-Response exchange (OPT12), where the provisioning of new individual keying material is replaced by or combined with the execution of a whole group rekeying.</t>
          </section>
        </section>
        <section anchor="node-delete">
          <name>DELETE Handler</name>
          <t>The DELETE handler removes the node identified by NODENAME from the group identified by GROUPNAME.</t>
          <t>The handler expects a DELETE request with empty payload.</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/>, the handler verifies that the Client is a current member of the group. If the verification fails, the KDC MUST reply with a 4.03 (Forbidden) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 0 ("Operation permitted only to group members").</t>
          <t>If all verification succeeds, the handler performs the actions defined in <xref target="sec-node-removal"/> and replies with a 2.02 (Deleted) response with empty payload.</t>
          <section anchor="ssec-group-leaving">
            <name>Leave the Group</name>
            <t>A Client can actively request to leave the group. In this case, the Client sends a CoAP DELETE request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME at the KDC, where GROUPNAME is the group name and NODENAME is its node name, formatted as defined in <xref target="node-delete"/></t>
            <t>Note that, after having left the group, the Client may wish to join it again. Then, as long as the Client is still authorized to join the group, i.e., the associated access token is still valid, the Client can request to re-join the group directly to the KDC (see <xref target="ssec-key-distribution-exchange"/>), without having to retrieve a new access token from the AS.</t>
          </section>
        </section>
      </section>
      <section anchor="ace-groupgroupnamenodesnodenamecred">
        <name>/ace-group/GROUPNAME/nodes/NODENAME/cred</name>
        <t>This resource implements the POST handler.</t>
        <section anchor="node-pub-key-post">
          <name>POST Handler</name>
          <t>The POST handler is used to replace the stored authentication credential of this Client (identified by NODENAME) with the one specified in the request at the KDC, for the group identified by GROUPNAME.</t>
          <t>The handler expects a POST request with payload as specified in <xref target="gid-post"/>, with the difference that it includes only the parameters 'client_cred', 'cnonce', and 'client_cred_verify'.</t>
          <t>The PoP evidence included in the 'client_cred_verify' parameter is computed in the same way considered in <xref target="gid-post"/> and defined by the specific application profile (REQ14), by using the following to build the PoP input: i) the same scope specified by the Client in the 'scope' parameter of the original Join Request; ii) the latest N_S value stored by the Client; iii) a new N_C nonce generated by the Client and specified in the parameter 'client_cred' of this request.</t>
          <t>An example of PoP input to compute 'client_cred_verify' using CBOR encoding is given in <xref target="fig-client-cred-input-2"/>.</t>
          <t>It is REQUIRED of the application profiles to define the specific formats of authentication credentials that are acceptable to use in the group (REQ6).</t>
          <t>In addition to what is defined in <xref target="kdc-if-errors"/> and at the beginning of <xref target="node-subresource"/>, the handler verifies that this operation is consistent with the set of roles that the node has in the group. If the verification fails, the KDC MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 1 ("Request inconsistent with the current roles").</t>
          <t>If the KDC cannot retrieve the 'kdcchallenge' associated with this Client (see <xref target="token-post"/>), the KDC MUST reply with a 4.00 (Bad Request) error response, which MUST also have Content-Format application/ace-groupcomm+cbor. The payload of the error response is a CBOR map including a newly generated 'kdcchallenge' value. This is specified in the 'kdcchallenge' parameter. In such a case the KDC MUST store the newly generated value as the 'kdcchallenge' value associated with this Client, replacing the currently stored value (if any).</t>
          <t>Otherwise, the handler checks that the authentication credential specified in the 'client_cred' field is valid for the group identified by GROUPNAME. That is, the handler checks that the authentication credential is encoded according to the format used in the group, is intended for the public key algorithm used in the group, and is aligned with the possible associated parameters used in the group. If that cannot be successfully verified, the handler MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 2 ("Authentication Credential incompatible with the group configuration").</t>
          <t>Otherwise, the handler verifies the PoP evidence contained in the 'client_cred_verify' field of the request, by using the authentication credential specified in the 'client_cred' field, as well as the same way considered in <xref target="gid-post"/> and defined by the specific application profile (REQ14). If the PoP evidence does not pass verification, the handler MUST reply with a 4.00 (Bad Request) error response. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 3 ("Invalid Proof-of-Possession evidence").</t>
          <t>If all verifications succeed, the handler performs the following actions.</t>
          <ul spacing="normal">
            <li>The handler associates the authentication credential from the 'client_cred' field of the request with the node identifier NODENAME, as well as with the access token associated with the node identified by NODENAME.</li>
            <li>In the stored list of group members' authentication credentials for the group identified by GROUPNAME, the handler replaces the authentication credential of the node identified by NODENAME with the authentication credential specified in the 'client_cred' field of the request.</li>
          </ul>
          <t>Then, the handler replies with a 2.04 (Changed) response, which does not include a payload.</t>
          <figure anchor="fig-client-cred-input-2">
            <name>Example of PoP input to compute 'client_cred_verify' using CBOR encoding</name>
            <artwork><![CDATA[
scope, N_S, and N_C expressed in CBOR diagnostic notation:
  scope = h'826667726f7570316673656e646572'
  N_S   = h'018a278f7faab55a'
  N_C   = h'0446baefc56111bf'


scope, N_S, and N_C as CBOR encoded byte strings:
  scope = 0x4f826667726F7570316673656E646572
  N_S   = 0x48018a278f7faab55a
  N_C   = 0x480446baefc56111bf

PoP input:
  0x4f 826667726f7570316673656e646572
    48 018a278f7faab55a 48 0446baefc56111bf
]]></artwork>
          </figure>
          <section anchor="update-pub-key">
            <name>Uploading a Authentication Credential Key</name>
            <t>In case the KDC maintains the authentication credentials of group members, a node in the group can contact the KDC to upload a new authentication credential to use in the group, and to replace the currently stored one.</t>
            <t>To this end, the Client performs an Authentication Credential Update Request-Response exchange with the KDC, i.e., it sends a CoAP POST request to the /ace-group/GROUPNAME/nodes/NODENAME/cred endpoint at the KDC, where GROUPNAME is the group name and NODENAME is its node name.</t>
            <t>The request is formatted as specified in <xref target="node-pub-key-post"/>.</t>
            <t>Figure <xref target="fig-pub-key-update-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-pub-key-update-req-resp-2"/> shows an example.</t>
            <figure anchor="fig-pub-key-update-req-resp">
              <name>Message Flow of Authentication Credential Update Request-Response</name>
              <artwork align="center"><![CDATA[
Client                                                          KDC
|                                                                |
|----------- Authentication Credential Update Request: --------->|
|          POST ace-group/GROUPNAME/nodes/NODENAME/cred          |
|                                                                |
|<-- Authentication Credential Update Response: 2.04 (Changed) --|
|                                                                |
]]></artwork>
            </figure>
            <figure anchor="fig-pub-key-update-req-resp-2">
              <name>Example of Authentication Credential Update Request-Response</name>
              <artwork><![CDATA[
Request:

Header: POST (Code=0.02)
Uri-Host: "kdc.example.com"
Uri-Path: "ace-group"
Uri-Path: "g1"
Uri-Path: "nodes"
Uri-Path: "c101"
Uri-Path: "pub-key"
Content-Format: "application/ace-groupcomm+cbor"
Payload (in CBOR diagnostic notation, with AUTH_CRED
         and POP_EVIDENCE being CBOR byte strings):
  { "client_cred": AUTH_CRED, "cnonce": h'0446baefc56111bf',
    "client_cred_verify": POP_EVIDENCE }

Response:

Header: Changed (Code=2.04)
Payload: -
]]></artwork>
            </figure>
            <t>Additionally, after updating its own authentication credential, a group member MAY send a number of requests including an identifier of the updated authentication credential, to notify other group members that they have to retrieve it. How this is done depends on the group communication protocol used, and therefore is application profile specific (OPT13).</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-node-removal">
      <name>Removal of a Group Member</name>
      <t>A Client identified by NODENAME may be removed from a group identified by GROUPNAME where it is a member, for example due to the following reasons.</t>
      <ol spacing="normal" type="1"><li>The Client explicitly asks to leave the group, as defined in <xref target="ssec-group-leaving"/>.</li>
        <li>The node has been found compromised or is suspected so.</li>
        <li>The Client's authorization to be a group member with the current roles is not valid anymore, i.e., the access token has expired or has been revoked. If the AS provides token introspection (see <xref section="5.9" sectionFormat="of" target="RFC9200"/>), the KDC can optionally use it and check whether the Client is still authorized.</li>
      </ol>
      <t>In either case, the KDC performs the following actions.</t>
      <ul spacing="normal">
        <li>The KDC removes the Client from the list of current members of the group.</li>
        <li>In case of forced eviction, i.e., for cases 2 and 3 above, the KDC deletes the authentication credential of the removed Client, if it acts as repository of authentication credentials for group members.</li>
        <li>If the removed Client is registered as an observer of the group-membership resource at ace-group/GROUPNAME, the KDC removes the Client from the list of observers of that resource.</li>
        <li>
          <t>If the sub-resource nodes/NODENAME was created for the removed Client, the KDC deletes that sub-resource.  </t>
          <t>
In case of forced eviction, i.e., for cases 2 and 3 above, the KDC MAY explicitly inform the removed Client, by means of the following methods.  </t>
          <ul spacing="normal">
            <li>If the evicted Client implements the 'control_uri' resource specified in <xref target="gid-post"/>, the KDC sends a DELETE request, targeting the URI specified in the 'control_uri' parameter of the Join Request (see <xref target="gid-post"/>).</li>
            <li>
              <t>If the evicted Client is observing its associated sub-resource at ace-group/GROUPNAME/nodes/NODENAME (see <xref target="node-get"/>), the KDC sends an unsolicited 4.04 (Not Found) error response, which does not include the Observe option and indicates that the observed resource has been deleted (see <xref section="3.2" sectionFormat="of" target="RFC7641"/>).      </t>
              <t>
The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 5 ("Group membership terminated").</t>
            </li>
          </ul>
        </li>
        <li>If the application requires forward security or the used application profile requires so, the KDC MUST generate new group keying material and securely distribute it to all the current group members except the leaving node (see <xref target="sec-group-rekeying"/>).</li>
      </ul>
    </section>
    <section anchor="sec-group-rekeying">
      <name>Group Rekeying Process</name>
      <t>A group rekeying is started and driven by the KDC. The KDC is not intended to accommodate explicit requests from group members to trigger a group rekeying. That is, the scheduling and execution of a group rekeying is an exclusive prerogative of the KDC. Reasons that can trigger a group rekeying are a change in the group membership, the current group keying material approaching its expiration time, or a regularly scheduled update of the group keying material.</t>
      <t>The KDC can perform a group rekeying before the current group keying material expires, unless it is acceptable or there are reasons to temporarily pause secure communications in the group, following the expiration of the current keying material.</t>
      <t>The KDC MUST increment the version number NUM of the current keying material, before distributing the newly generated keying material with version number NUM+1 to the group. Once completed the group rekeying, the KDC MUST delete the old keying material and SHOULD store the newly distributed keying material in persistent storage.</t>
      <t>Distributing the new group keying material requires the KDC to send multiple rekeying messages to the group members. Depending on the rekeying scheme used in the group and the reason that has triggered the rekeying process, each rekeying message can be intended to one or multiple group members, hereafter referred to as target group members. The KDC MUST support at least the "Point-to-Point" group rekeying scheme in <xref target="point-to-point-rekeying"/> and MAY support additional ones.</t>
      <t>Each rekeying message MUST have Content-Format set to application/ace-groupcomm+cbor and its payload formatted as a CBOR map, which MUST include at least the information specified in the Key Distribution Response message (see <xref target="gid-get"/>), i.e., the parameters 'gkty', 'key', and 'num' defined in <xref target="gid-post"/>. The CBOR map MAY include the parameter 'exp', as well as the parameter 'mgt_key_material' specifying new administrative keying material for the target group members, if relevant for the used rekeying scheme.</t>
      <t>A rekeying message may include additional information, depending on the rekeying scheme used in the group, the reason that has triggered the rekeying process, and the specific target group members. In particular, if the group rekeying is performed due to one or multiple Clients that have joined the group and the KDC acts as repository of authentication credentials of the group members, then a rekeying message MAY also include the authentication credentials that those Clients use in the group, together with the roles and node identifier that the corresponding Client has in the group. It is RECOMMENDED to specify this information by means of the parameters 'creds', 'peer_roles', and 'peer_identifiers', like done in the Join Response message (see <xref target="gid-post"/>).</t>
      <t>The complete format of a rekeying message, including the encoding and content of the 'mgt_key_material' parameter, has to be defined in separate specifications aimed at profiling the used rekeying scheme in the context of the used application profile of this specification. As a particular case, an application profile of this specification MAY define additional information to include in rekeying messages for the "Point-to-Point" group rekeying scheme in <xref target="point-to-point-rekeying"/> (OPT14).</t>
      <t>Consistently with the used group rekeying scheme, the actual delivery of rekeying messages can occur through different approaches, as discussed in the following <xref target="point-to-point-rekeying"/> and <xref target="one-to-many-rekeying"/>.</t>
      <t>The possible, temporary misalignment of the keying material stored by the different group members due to a group rekeying is discussed in <xref target="sec-misalignment-keying-material"/>. Further security considerations related to the group rekeying process are compiled in <xref target="sec-cons-rekeying"/>.</t>
      <section anchor="point-to-point-rekeying">
        <name>Point-to-Point Group Rekeying</name>
        <t>This approach consists in the KDC sending one individual rekeying message to each target group member. In particular, the rekeying message is protected by means of the security association between the KDC and the target group member in question, as per the used application profile of this specification and the used transport profile of ACE.</t>
        <t>This is the approach taken by the basic "Point-to-Point" group rekeying scheme, that the KDC can explicitly signal in the Join Response (see <xref target="gid-post"/>), through the 'rekeying_scheme' parameter specifying the value 0.</t>
        <t>When taking this approach in the group identified by GROUPNAME, the KDC can practically deliver the rekeying messages to the target group members in different, co-existing ways.</t>
        <ul spacing="normal">
          <li>
            <t>The KDC SHOULD make the ace-group/GROUPNAME resource Observable <xref target="RFC7641"/>. Thus, upon performing a group rekeying, the KDC can distribute the new group keying material through individual notification responses sent to the target group members that are also observing that resource.  </t>
            <t>
In case the KDC deletes the group (and thus deletes the ace-group/GROUPNAME resource), relying on CoAP Observe as discussed above also allows the KDC to send an unsolicited 4.04 (Not Found) response to each observer group member, as a notification of group termination. The response MUST have Content-Format set to application/ace-groupcomm+cbor and is formatted as defined in <xref target="key-distr"/>. The value of the 'error' field MUST be set to 6 ("Group deleted").</t>
          </li>
          <li>
            <t>If a target group member specified a URI in the 'control_uri' parameter of the Join Request upon joining the group (see <xref target="gid-post"/>), the KDC can provide that group member with the new group keying material by sending a unicast POST request to that URI.  </t>
            <t>
A Client that does not plan to observe the ace-group/GROUPNAME resource at the KDC SHOULD provide a URI in the 'control_uri' parameter of the Join Request upon joining the group.</t>
          </li>
        </ul>
        <t>If the KDC has to send a rekeying message to a target group member, but this did not include the 'control_uri' parameter in the Join Request and is not a registered observer for the ace-group/GROUPNAME resource, then that target group member would not be able to participate to the group rekeying. Later on, after having repeatedly failed to successfully exchange secure messages in the group, that group member can retrieve the current group keying material from the KDC, by sending a GET request to ace-group/GROUPNAME or ace-group/GROUPNAME/nodes/NODENAME (see <xref target="gid-get"/> and <xref target="node-get"/>, respectively).</t>
      </section>
      <section anchor="one-to-many-rekeying">
        <name>One-to-Many Group Rekeying</name>
        <t>This section provides high-level recommendations on how the KDC can rekey a group by means of a more efficient and scalable group rekeying scheme, e.g., <xref target="RFC2093"/><xref target="RFC2094"/><xref target="RFC2627"/>. That is, each rekeying message might be, and likely is, intended to multiple target group members, and thus can be delivered to the whole group, although possible to decrypt only for the actual target group members.</t>
        <t>This yields an overall lower number of rekeying messages, thus potentially reducing the overall time required to rekey the group. On the other hand, it requires the KDC to provide and use additional administrative keying material to protect the rekeying messages, and to additionally sign them to ensure source authentication (see <xref target="one-to-many-rekeying-protection"/>). Typically, this pays off in large-scale groups, where the introduced performance overhead is less than the one experienced by rekeying the group in a point-to-point fashion (see <xref target="point-to-point-rekeying"/>).</t>
        <t>The exact set of rekeying messages to send, their content and format, the administrative keying material to use to protect them, as well as the set of target group members depend on the specific group rekeying scheme, and are typically affected by the reason that has triggered the group rekeying. Details about the data content and format of rekeying messages have to be defined by separate documents profiling the use of the group rekeying scheme, in the context of the used application profile of this specification.</t>
        <t>When one of these group rekeying schemes is used, the KDC provides a number of related information to a Client joining the group in the Join Response message (see <xref target="gid-post"/>). In particular, 'rekeying_scheme' identifies the rekeying scheme used in the group (if no default can be assumed); 'control_group_uri', if present, specifies a URI with a multicast address where the KDC will send the rekeying messages for that group; 'mgt_key_material' specifies a subset of the administrative keying material intended for that particular joining Client to have, as used to protect the rekeying messages sent to the group when intended also to that joining Client.</t>
        <t>Rekeying messages can be protected at the application layer, by using COSE and the administrative keying material as prescribed by the specific group rekeying scheme (see <xref target="one-to-many-rekeying-protection"/>). After that, the delivery of protected rekeying messages to the intended target group members can occur in different ways, such as the following ones.</t>
        <ul spacing="normal">
          <li>
            <t>Over multicast - In this case, the KDC simply sends a rekeying message as a CoAP request addressed to the multicast URI specified in the 'control_group_uri' parameter of the Join Response (see <xref target="gid-post"/>).  </t>
            <t>
If a particular rekeying message is intended to a single target group member, the KDC may alternatively protect the message using the security association with that group member, and deliver the message like when using the "Point-to-Point" group rekeying scheme (see <xref target="point-to-point-rekeying"/>).</t>
          </li>
          <li>
            <t>Through a pub-sub communication model - In this case, the KDC acts as publisher and publishes each rekeying message to a specific "rekeying topic", which is associated with the group and is hosted at a broker server. Following their group joining, the group members subscribe to the rekeying topic at the broker, thus receiving the group rekeying messages as they are published by the KDC.  </t>
            <t>
In order to make such message delivery more efficient, the rekeying topic associated with a group can be further organized into subtopics. For instance, the KDC can use a particular subtopic to address a particular set of target group members during the rekeying process, as possibly aligned to a similar organization of the administrative keying material (e.g., a key hierarchy).  </t>
            <t>
The setup of rekeying topics at the broker as well as the discovery of the topics at the broker for group members are application specific. A possible way is for the KDC to provide such information in the Join Response message (see <xref target="gid-post"/>), by means of a new parameter analogous to 'control_group_uri' and specifying the URI(s) of the rekeying topic(s) that a group member has to subscribe to at the broker.</t>
          </li>
        </ul>
        <t>Regardless the specifically used delivery method, the group rekeying scheme can perform a possible roll-over of the administrative keying material through the same sent rekeying messages. Actually, such a roll-over occurs every time a group rekeying is performed upon the leaving of group members, which have to be excluded from future communications in the group.</t>
        <t>From a high level point of view, each group member stores only a subset of the overall administrative keying material, obtained upon joining the group. Then, when a group rekeying occurs:</t>
        <ul spacing="normal">
          <li>Each rekeying message is protected by using a (most convenient) key from the administrative keying material such that: i) the used key is not stored by any node leaving the group, i.e., the key is safe to use and does not have to be renewed; and ii) the used key is stored by all the target group members, that indeed have to be provided with new group keying material to protect communications in the group.</li>
          <li>Each rekeying message includes not only the new group keying material intended to all the rekeyed group members, but also any new administrative keys that: i) are pertaining to and supposed to be stored by the target group members; and ii) had to be updated since leaving group members store the previous version.</li>
        </ul>
        <t>Further details depend on the specific rekeying scheme used in the group.</t>
        <section anchor="one-to-many-rekeying-protection">
          <name>Protection of Rekeying Messages</name>
          <t>When using a group rekeying scheme relying on one-to-many rekeying messages, the actual data content of each rekeying message is prepared according to what the rekeying scheme prescribes.</t>
          <t>Then, the KDC can protect the rekeying message as defined below. The used encryption algorithm which SHOULD be the same one used to protect communications in the group. The method defined below assumes that the following holds for the management keying material specified in the 'mgt_key_material' parameter of the Join Response (see <xref target="gid-post"/>).</t>
          <ul spacing="normal">
            <li>The included symmetric encryption keys are accompanied by a corresponding and unique key identifier assigned by the KDC.</li>
            <li>A Base IV is also included, with the same size of the AEAD nonce considered by the encryption algorithm to use.</li>
          </ul>
          <t>First, the KDC computes a COSE_Encrypt0 object as follows.</t>
          <ul spacing="normal">
            <li>The encryption key to use is selected from the administrative keying material, as defined by the rekeying scheme used in the group.</li>
            <li>The plaintext is the actual data content of the rekeying message.</li>
            <li>The Additional Authenticated Data (AAD) is empty, unless otherwise specified by separate documents profiling the use of the group rekeying scheme.</li>
            <li>
              <t>Since the KDC is the only sender of rekeying messages, the AEAD nonce can be computed as follows, where NONCE_SIZE is the size in bytes of the AEAD nonce. Separate documents profiling the use of the group rekeying scheme may define alternative ways to compute the AEAD nonce.  </t>
              <t>
The KDC considers the following values.  </t>
              <ul spacing="normal">
                <li>COUNT, as a 2-byte unsigned integer associated with the used encryption key. Its value is set to 0 when starting to perform a new group rekeying instance, and is incremented after each use of the encryption key.</li>
                <li>NEW_NUM, as the version number of the new group keying material to distribute in this rekeying instance, left-padded with zeroes to exactly NONCE_SIZE - 2 bytes.</li>
              </ul>
              <t>
Then, the KDC computes a Partial IV as the byte string concatenation of COUNT and NEW_NUM, in this order. Finally, the AEAD nonce is computed as the XOR between the Base IV and the Partial IV.  </t>
              <t>
In order to comply with the security requirements of AEAD encryption algorithms, the KDC MUST NOT use the same pair (AEAD encryption key, AEAD nonce). For example, this includes not using the same encryption key from the administrative keying material more than 2^16 times during the same rekeying instance.</t>
            </li>
            <li>
              <t>The protected header of the COSE_Encrypt0 object MUST include the following parameters.  </t>
              <ul spacing="normal">
                <li>'alg', specifying the used encryption algorithm.</li>
                <li>'kid', specifying the identifier of the encryption key from the administrative keying material used to protect this rekeying message.</li>
              </ul>
            </li>
            <li>The unprotected header of the COSE_Encrypt0 object MUST include the 'Partial IV' parameter, with value the Partial IV computed above.</li>
          </ul>
          <t>In order to ensure source authentication, each rekeying message protected with the administrative keying material MUST be signed by the KDC. To this end, the KDC computes a countersignature of the COSE_Encrypt0 object, as described in Sections <xref target="RFC9338" section="3.2" sectionFormat="bare"/> and <xref target="RFC9338" section="3.3" sectionFormat="bare"/> of <xref target="RFC9338"/>. In particular, the following applies when computing the countersignature.</t>
          <ul spacing="normal">
            <li>The Countersign_structure contains the context text string "CounterSignature0".</li>
            <li>The private key of the KDC is used as signing key.</li>
            <li>The payload is the ciphertext of the COSE_Encrypt0 object.</li>
            <li>The Additional Authenticated Data (AAD) is empty, unless otherwise specified by separate documents profiling the use of a group rekeying scheme.</li>
            <li>The protected header of the signing object MUST include the parameter 'alg', specifying the used signature algorithm.</li>
          </ul>
          <t>If source authentication of messages exchanged in the group is also ensured by means of signatures, then rekeying messages MUST be signed using the same signature algorithm and related parameters. Also, the KDC's authentication credential including the public key to use for signature verification MUST be provided in the Join Response through the 'kdc_cred' parameter, together with the corresponding proof-of-possession (PoP) evidence in the 'kdc_cred_verify' parameter.</t>
          <t>If source authentication of messages exchanged in the group is not ensured by means of signatures, then the KDC MUST provide its authentication credential together with a corresponding PoP evidence as part of the management keying material specified in the 'mgt_key_material' parameter of the Join Response (see <xref target="gid-post"/>). It is RECOMMENDED to specify this information by using the same format and encoding used for the parameters 'kdc_cred', 'kdc_nonce', and 'kdc_cred_verify' in the Join Response. It is up to separate documents profiling the use of the group rekeying scheme to specify such details.</t>
          <t>After that, the KDC specifies the computed countersignature in the 'COSE_Countersignature0' header parameter of the COSE_Encrypt0 object.</t>
          <t>Finally, the KDC specifies the COSE_Encrypt0 object as payload of a CoAP request, which is sent to the target group members as per the used message delivery method.</t>
        </section>
      </section>
      <section anchor="sec-misalignment-keying-material">
        <name>Misalignment of Group Keying Material</name>
        <t>A group member can receive a message shortly after the group has been rekeyed, and new keying material has been distributed by the KDC. In the following two cases, this may result in misaligned keying material between the group members.</t>
        <t>In the first case, the sender protects a message using the old group keying material. However, the recipient receives the message after having received the new group keying material, hence not being able to correctly process it. A possible way to limit the impact of this issue is to preserve the old, recent group keying material for a maximum amount of time defined by the application, during which it is used solely for processing incoming messages. By doing so, the recipient can still temporarily process received messages also by using the old, retained group keying material. Note that a former (compromised) group member can take advantage of this by sending messages protected with the old, retained group keying material. Therefore, a conservative application policy should not admit the storage of old group keying material. Eventually, the sender will have obtained the new group keying material too, and can possibly re-send the message protected with such keying material.</t>
        <t>In the second case, the sender protects a message using the new group keying material, but the recipient receives that message before having received the new group keying material. Therefore, the recipient would not be able to correctly process the message and hence discards it. If the recipient receives the new group keying material shortly after that and the application at the sender endpoint performs retransmissions, the former will still be able to receive and correctly process the message. In any case, the recipient should actively ask the KDC for the latest group keying material according to an application-defined policy, for instance after a given number of unsuccessfully decrypted incoming messages.</t>
      </section>
    </section>
    <section anchor="sec-extended-scope">
      <name>Extended Scope Format</name>
      <t>This section defines an extended format of binary encoded scope, which additionally specifies the semantics used to express the same access control information from the corresponding original scope.</t>
      <t>As also discussed in <xref target="ssec-authorization-response"/>, this enables a Resource Server to unambiguously process a received access token, also in case the Resource Server runs multiple applications or application profiles that involve different scope semantics.</t>
      <t>The extended format is intended only for the 'scope' claim of access tokens, for the cases where the claim takes as value a CBOR byte string. That is, the extended format does not apply to the 'scope' parameter included in ACE messages, i.e., the Authorization Request and Authorization Response exchanged between the Client and the Authorization Server (see Sections <xref target="RFC9200" section="5.8.1" sectionFormat="bare"/> and <xref target="RFC9200" section="5.8.2" sectionFormat="bare"/> of <xref target="RFC9200"/>), the AS Request Creation Hints message from the Resource Server (see <xref section="5.3" sectionFormat="of" target="RFC9200"/>), and the Introspection Response from the Authorization Server (see <xref section="5.9.2" sectionFormat="of" target="RFC9200"/>).</t>
      <t>The value of the 'scope' claim following the extended format is composed as follows. Given the original scope using a semantics SEM and encoded as a CBOR byte string, the corresponding extended scope consists of the same CBOR byte string enclosed by a CBOR tag <xref target="RFC8949"/>, whose tag number identifies the semantics SEM.</t>
      <t>The resulting tagged CBOR byte string is used as value of the 'scope' claim of the access token.</t>
      <t><xref target="cddl-ex-0-ext"/> and <xref target="cddl-ex-ext"/> build on the examples in <xref target="ssec-authorization-response"/>, and show the corresponding extended scopes.</t>
      <figure anchor="cddl-ex-0-ext">
        <name>Example CDLL definition of scope, using the default Authorization Information Format</name>
        <sourcecode type="CDDL"><![CDATA[
gname = tstr

permissions = uint .bits roles

roles = &(
   Requester: 1,
   Responder: 2,
   Monitor: 3,
   Verifier: 4
)

scope_entry = AIF_Generic<gname, permissions>

scope = << [ + scope_entry ] >>

extended_scope = #6.TAG_FOR_THIS_SEMANTICS(scope)
]]></sourcecode>
      </figure>
      <figure anchor="cddl-ex-ext">
        <name>CDLL definition of scope, using as example group name encoded as tstr and role as tstr</name>
        <sourcecode type="CDDL"><![CDATA[
gname = tstr

role = tstr

scope_entry = [ gname , ? ( role / [ 2*role ] ) ]

scope = << [ + scope_entry ] >>

extended_scope = #6.TAG_FOR_THIS_SEMANTICS(scope)
]]></sourcecode>
      </figure>
      <t>The usage of the extended scope format is not limited to application profiles of this specification or to applications based on group communication. Rather, it is generally applicable to any application and application profile where access control information in the access token is expressed as a binary encoded scope.</t>
      <t>Applications and application profiles using the extended format of scope have to specify which CBOR tag from <xref target="CBOR.Tags"/> is used for identifying the scope semantics, or to register a new CBOR tag if a suitable one does not exist already (REQ28). In case there is an already existing, suitable CBOR tag, a new CBOR tag should not be registered in order to avoid codepoint squatting.</t>
      <t>If the binary encoded scope uses a semantics associated with a registered CoAP Content-Format <xref target="RFC7252"/><xref target="CoAP.Content.Formats"/>, then a suitable CBOR tag associated with that CoAP Content-Format would already be registered, as defined in <xref section="4.3" sectionFormat="of" target="RFC9277"/>.</t>
      <t>This is especially relevant when the binary encoded scope uses the AIF format. That is, it is expected that the definition of an AIF specific data model comes together with the registration of CoAP Content-Formats for the relevant combinations of its Toid and Tperm values. As discussed above, this yields the automatic registration of the CBOR tags associated with those CoAP Content-Formats.</t>
    </section>
    <section anchor="params">
      <name>ACE Groupcomm Parameters</name>
      <t>This specification defines a number of parameters used during the second part of the message exchange, after the exchange of Token Transfer Request and Response. The table below summarizes them, and specifies the CBOR key to use instead of the full descriptive name.</t>
      <t>Note that the media type application/ace-groupcomm+cbor MUST be used when these parameters are transported in the respective message fields.</t>
      <figure anchor="fig-ACE-Groupcomm-Parameters">
        <name>ACE Groupcomm Parameters</name>
        <artwork align="center"><![CDATA[
+-----------------------+------+---------------------+------------+
| Name                  | CBOR | CBOR Type           | Reference  |
|                       | Key  |                     |            |
+-----------------------+------+---------------------+------------+
| error                 | TBD  | int                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| error_description     | TBD  | tstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| gid                   | TBD  | array               | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| gname                 | TBD  | array of tstr       | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| guri                  | TBD  | array of tstr       | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| scope                 | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| get_creds             | TBD  | array /             | [RFC-XXXX] |
|                       |      | Simple value "null" |            |
+-----------------------+------+---------------------+------------+
| client_cred           | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| cnonce                | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| client_cred_verify    | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| creds_repo            | TBD  | tstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| control_uri           | TBD  | tstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| gkty                  | TBD  | int / tstr          | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| key                   | TBD  | See the "ACE        | [RFC-XXXX] |
|                       |      | Groupcomm Key       |            |
|                       |      | Types" registry     |            |
+-----------------------+------+---------------------+------------+
| num                   | TBD  | int                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| ace_groupcomm_profile | TBD  | int                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| exp                   | TBD  | int                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| creds                 | TBD  | array               | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| peer_roles            | TBD  | array               | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| peer_identifiers      | TBD  | array               | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| group_policies        | TBD  | map                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| kdc_cred              | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| kdc_nonce             | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| kdc_cred_verify       | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| rekeying_scheme       | TBD  | int                 | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| mgt_key_material      | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| control_group_uri     | TBD  | tstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| sign_info             | TBD  | array               | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
| kdcchallenge          | TBD  | bstr                | [RFC-XXXX] |
+-----------------------+------+---------------------+------------+
]]></artwork>
      </figure>
      <t>Note to RFC Editor: In <xref target="fig-ACE-Groupcomm-Parameters"/>, please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <t>The KDC is expected to support all the parameters above. Instead, a Client can support only a subset of such parameters, depending on the roles it expects to take in the joined groups or on other conditions defined in application profiles of this specification.</t>
      <t>In the following, the parameters are categorized according to the support expected by Clients. That is, a Client that supports a parameter is able to: i) use and specify it in a request message to the KDC; and ii) understand and process it if specified in a response message from the KDC. It is REQUIRED of application profiles of this specification to sort their newly defined parameters according to the same categorization (REQ29).</t>
      <t>Note that the actual use of a parameter and its inclusion in a message depends on the specific exchange, the specific Client and group involved, as well as what is defined in the used application profile of this specification.</t>
      <t>A Client MUST support the following parameters.</t>
      <ul spacing="normal">
        <li>'scope', 'gkty', 'key', 'num', 'exp', 'gid', 'gname', 'guri', 'creds', 'peer_identifiers', 'ace_groupcomm_profile', 'control_uri', 'rekeying_scheme'.</li>
      </ul>
      <t>A Client SHOULD support the following parameter.</t>
      <ul spacing="normal">
        <li>'get_creds'. That is, not supporting this parameter would yield the inconvenient and undesirable behavior where: i) the Client does not ask for the other group members' authentication credentials upon joining the group (see <xref target="ssec-key-distribution-exchange"/>); and ii) later on as a group member, the Client only retrieves the authentication credentials of all group members (see <xref target="sec-key-retrieval-all"/>).</li>
      </ul>
      <t>A Client MAY support the following optional parameters. Application profiles of this specification MAY define that Clients must or should support these parameters instead (OPT15).</t>
      <ul spacing="normal">
        <li>'error', 'error_description'.</li>
      </ul>
      <t>The following conditional parameters are relevant only if specific conditions hold. It is REQUIRED of application profiles of this specification to define whether Clients must, should, or may support these parameters, and under which circumstances (REQ30).</t>
      <ul spacing="normal">
        <li>'client_cred', 'cnonce', 'client_cred_verify'. These parameters are relevant for a Client that has an authentication credential to use in a joined group.</li>
        <li>'kdcchallenge'. This parameter is relevant for a Client that has an authentication credential to use in a joined group and that provides the access token to the KDC through a Token Transfer Request (see <xref target="token-post"/>).</li>
        <li>'creds_repo'. This parameter is relevant for a Client that has an authentication credential to use in a joined group and that makes it available from a key repository different than the KDC.</li>
        <li>'group_policies'. This parameter is relevant for a Client that is interested in the specific policies used in a group, but it does not know them or cannot become aware of them before joining that group.</li>
        <li>'peer_roles'. This parameter is relevant for a Client that has to know about the roles of other group members, especially when retrieving and handling their corresponding authentication credentials.</li>
        <li>'kdc_nonce', 'kdc_cred', 'kdc_cred_verify'. These parameters are relevant for a Client that joins a group for which, as per the used application profile of this specification, the KDC has an associated authentication credential and this is required for the correct group operation.</li>
        <li>'mgt_key_material'. This parameter is relevant for a Client that supports an advanced rekeying scheme possibly used in the group, such as based on one-to-many rekeying messages sent over IP multicast.</li>
        <li>'control_group_uri'. This parameter is relevant for a Client that supports the hosting of local resources each associated with a group (hence acting as CoAP server) and the reception of one-to-many requests sent to those resources by the KDC (e.g., over IP multicast), targeting multiple members of the corresponding group. Examples of related management operations that the KDC can perform by this means are the eviction of group members and the execution of a group rekeying process through an advanced rekeying scheme, such as based on one-to-many rekeying messages.</li>
      </ul>
    </section>
    <section anchor="error-types">
      <name>ACE Groupcomm Error Identifiers</name>
      <t>This specification defines a number of values that the KDC can include as error identifiers, in the 'error' field of an error response with Content-Format application/ace-groupcomm+cbor.</t>
      <figure anchor="fig-ACE-Groupcomm-Error-Identifiers">
        <name>ACE Groupcomm Error Identifiers</name>
        <artwork align="center"><![CDATA[
+-------+---------------------------------------------+
| Value |                 Description                 |
+-------+---------------------------------------------+
|   0   | Operation permitted only to group members   |
+-------+---------------------------------------------+
|   1   | Request inconsistent with the current roles |
+-------+---------------------------------------------+
|   2   | Authentication credential incompatible with |
|       | the group configuration                     |
+-------+---------------------------------------------+
|   3   | Invalid proof-of-possession evidence        |
+-------+---------------------------------------------+
|   4   | No available node identifiers               |
+-------+---------------------------------------------+
|   5   | Group membership terminated                 |
+-------+---------------------------------------------+
|   6   | Group deleted                               |
+-------+---------------------------------------------+
]]></artwork>
      </figure>
      <t>A Client supporting the 'error' parameter (see <xref target="kdc-if-errors"/> and <xref target="params"/>) and able to understand the specified error may use that information to determine what actions to take next. If it is included in the error response and supported by the Client, the 'error_description' parameter may provide additional context.</t>
      <t>In particular, the following guidelines apply, and application profiles of this specification can define more detailed actions for the Client to take when learning that a specific error has occurred.</t>
      <ul spacing="normal">
        <li>In case of error 0, the Client should stop sending the request in question to the KDC. Rather, the Client should first join the targeted group. If it has not happened already, this first requires the Client to obtain an appropriate access token authorizing access to the group and provide it to the KDC.</li>
        <li>In case of error 1, the Client as a group member should re-join the group with all the roles needed to perform the operation in question. This might require the Client to first obtain a new access token and provide it to the KDC, if the current access token does not authorize to take those roles in the group. For operations admitted to a Client which is not a group member (e.g., an external signature verifier), the Client should first obtain a new access token authorizing to also have the missing roles.</li>
        <li>In case of error 2, the Client has to obtain or self-generate a different asymmetric key pair, as aligned to the publick key algorithms and parameters used in the targeted group. After that, the Client should provide the KDC with its new authentication credential, consistent with the format used in the targeted group and including the new public key.</li>
        <li>In case of error 3, the Client should ensure to be computing its proof-of-possession evidence by correctly using the parameters and procedures defined in the used application profile of this specification. In an unattended setup, it might be not possible for a Client to autonomously diagnose the error and take an effective next action to address it.</li>
        <li>In case of error 4, the Client should wait for a certain (pre-configured) amount of time, before trying re-sending its request to the KDC.</li>
        <li>In case of error 5, the Client may try joining the group again. This might require the Client to first obtain a new access token and provide it to the KDC, e.g., if the current access token has expired.</li>
        <li>In case of error 6, the Client should clean up its state regarding the group, just like if it has left the group with no intention to re-join it.</li>
      </ul>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>Security considerations are inherited from the ACE framework <xref target="RFC9200"/>, and from the specific transport profile of ACE used between the Clients and the KDC, e.g., <xref target="RFC9202"/> and <xref target="RFC9203"/>.</t>
      <t>Furthermore, the following security considerations apply.</t>
      <section anchor="sec-cons-communication">
        <name>Secure Communication in the Group</name>
        <t>When a group member receives a message from a certain sender for the first time since joining the group, it needs to have a mechanism in place to avoid replayed messages and to assert their freshness, e.g., <xref section="B.1.2" sectionFormat="of" target="RFC8613"/> or <xref section="10" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. Such a mechanism aids the recipient group member also in case it has rebooted and lost the security state used to protect previous group communications with that sender.</t>
        <t>By its nature, the KDC is invested with a large amount of trust, since it acts as generator and provider of the symmetric keying material used to protect communications in each of its groups. While details depend on the specific communication and security protocols used in the group, the KDC is in the position to decrypt messages exchanged in the group as if it was also a group member, as long as those are protected through commonly shared group keying material.</t>
        <t>A compromised KDC would thus put the attacker in the same position, which also means that:</t>
        <ul spacing="normal">
          <li>The attacker can generate and control new group keying material, hence possibly rekeying the group and evicting certain group members as part of a broader attack.</li>
          <li>The attacker can actively participate to communications in a group even without been authorized to join it, and can allow further unauthorized entities to do so.</li>
          <li>The attacker can build erroneous associations between node identifiers and group members' authentication credentials.</li>
        </ul>
        <t>On the other hand, as long as the security protocol used in the group ensures source authentication of messages (e.g., by means of signatures), the KDC is not able to impersonate group members since it does not have their private keys.</t>
        <t>Further security considerations are specific of the communication and security protocols used in the group, and thus have to be provided by those protocols and complemented by the application profiles of this specification using them.</t>
      </section>
      <section anchor="sec-cons-rekeying">
        <name>Update of Group Keying Material</name>
        <t>The KDC can generate new group keying material and provide it to the group members (rekeying) through the rekeying scheme used in the group, as discussed in <xref target="sec-group-rekeying"/>.</t>
        <t>In particular, the KDC must renew the group keying material latest upon its expiration. Before then, the KDC may also renew the group keying material on a regular or periodical fashion.</t>
        <t>Unless otherwise defined by an application profile of this specification, the KDC SHOULD renew the group keying material upon a group membership change. In particular, since the minimum number of group members is one, the KDC SHOULD provide also a Client joining an empty group with new keying material never used before in that group. Similarly, the KDC SHOULD provide new group keying material also to a Client that remains the only member in the group after the leaving of other group members.</t>
        <t>Note that the considerations in <xref target="sec-cons-communication"/> about dealing with replayed messages still hold, even in case the KDC rekeys the group upon every single joining of a new group member. However, if the KDC has renewed the group keying material upon a group member's joining, and the time interval between the end of the rekeying process and that member's joining is sufficiently small, then that group member is also on the safe side, since it would not accept replayed messages protected with the old group keying material previous to its joining.</t>
        <t>Once a joining node has obtained the new, latest keying material through a Join Response from the KDC (see <xref target="ssec-key-distribution-exchange"/>), the joining node becomes able to read any message that was exchanged in the group and protected with that keying material. This is the case if the KDC provides the current group members with the new, latest keying material before completing the joining procedure. However, the joining node is not able to read messages exchanged in the group and protected with keying material older than the one provided in the Join Response, i.e., having a strictly lower version number NUM.</t>
        <t>A node that has left the group should not expect any of its outgoing messages to be successfully processed, if received by other nodes in the group after its leaving, due to a possible group rekeying occurred before the message reception.</t>
        <t>The KDC may enforce a rekeying policy that takes into account the overall time required to rekey the group, as well as the expected rate of changes in the group membership. That is, the KDC may not rekey the group at each and every group membership change, for instance if members' joining and leaving occur frequently and performing a group rekeying takes too long. Instead, the KDC might rekey the group after a minimum number of group members have joined or left within a given time interval, or after a maximum amount of time since the last group rekeying was completed, or yet during predictable network inactivity periods.</t>
        <t>However, this would result in the KDC not constantly preserving backward and forward security in the group. That is:</t>
        <ul spacing="normal">
          <li>Newly joining group members would be able to access the keying material used before their joining, and thus they could access past group communications if they have recorded old exchanged messages. This might still be acceptable for some applications and in situations where the new group members are freshly deployed through strictly controlled procedures.</li>
          <li>The leaving group members would remain able to access upcoming group communications, as protected with the current keying material that has not been updated. This is typically undesirable, especially if the leaving group member is compromised or suspected to be, and it might have an impact or compromise the security properties of the protocols used in the group to protect messages exchanged among the group members.</li>
        </ul>
        <t>The KDC should renew the group keying material in case it has rebooted, even in case it stores the whole group keying material in persistent storage. This assumes that the secure associations with the current group members as well as any administrative keying material required to rekey the group are also stored in persistent storage.</t>
        <t>However, if the KDC relies on Observe notifications to distribute the new group keying material, the KDC would have lost all the current ongoing Observations with the group members after rebooting, and the group members would continue using the old group keying material. Therefore, the KDC will rather rely on each group member asking for the new group keying material (see <xref target="ssec-key-material-retrieval"/> and <xref target="update-keys"/>), or rather perform a group rekeying by actively sending rekeying messages to group members as discussed in <xref target="sec-group-rekeying"/>.</t>
        <t>The KDC needs to have a mechanism in place to detect DoS attacks from nodes repeatedly performing actions that might trigger a group rekeying. Such actions can include leaving and/or re-joining the group at high rates, or often asking the KDC for new indidivual keying material. Ultimately, the KDC can resort to removing these nodes from the group and (temperorarily) preventing them from joining the group again.</t>
        <t>The KDC also needs to have a congestion control mechanism in place, in order to avoid network congestion upon distributing new group keying material. For example, CoAP and Observe give guidance on such mechanisms, see <xref section="4.7" sectionFormat="of" target="RFC7252"/> and <xref section="4.5.1" sectionFormat="of" target="RFC7641"/>.</t>
      </section>
      <section anchor="block-wise-considerations">
        <name>Block-Wise Considerations</name>
        <t>If the Block-Wise CoAP options <xref target="RFC7959"/> are used, and the keying material is updated in the middle of a Block-Wise transfer, the sender of the blocks just changes the group keying material to the updated one and continues the transfer. As long as both sides get the new group keying material, updating the group keying material in the middle of a transfer will not cause any issue. Otherwise, the sender will have to transmit the message again, when receiving an error message from the recipient.</t>
        <t>Compared to a scenario where the transfer does not use Block-Wise, depending on how fast the group keying material is changed, the group members might consume a larger amount of the network bandwidth by repeatedly resending the same blocks, which might be problematic.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="media-type">
        <name>Media Type Registrations</name>
        <t>This specification registers the 'application/ace-groupcomm+cbor' media type for messages of the protocols defined in this document following the ACE exchange and carrying parameters encoded in CBOR. This registration follows the procedures specified in <xref target="RFC6838"/>.</t>
        <t>Type name: application</t>
        <t>Subtype name: ace-groupcomm+cbor</t>
        <t>Required parameters: N/A</t>
        <t>Optional parameters: N/A</t>
        <t>Encoding considerations: Must be encoded as a CBOR map containing the parameters defined in [RFC-XXXX].</t>
        <t>Security considerations: See <xref target="sec-cons"/> of [RFC-XXXX].</t>
        <t>Interoperability considerations: N/A</t>
        <t>Published specification: [RFC-XXXX]</t>
        <t>Applications that use this media type: The type is used by Authorization Servers, Clients, and Resource Servers that support the ACE groupcomm framework as specified in [RFC-XXXX].</t>
        <t>Fragment identifier considerations: N/A</t>
        <t>Additional information: N/A</t>
        <t>Person &amp; email address to contact for further information: ACE WG mailing list (ace@ietf.org) or IETF Applications and Real-Time Area (art@ietf.org)</t>
        <t>Intended usage: COMMON</t>
        <t>Restrictions on usage: None</t>
        <t>Author/Change controller: IETF</t>
        <t>Provisional registration: No</t>
      </section>
      <section anchor="content-type">
        <name>CoAP Content-Formats</name>
        <t>IANA is asked to register the following entry to the "CoAP Content-Formats" registry within the "CoRE Parameters" registry group.</t>
        <t>Media Type: application/ace-groupcomm+cbor</t>
        <t>Encoding: -</t>
        <t>ID: TBD</t>
        <t>Reference: [RFC-XXXX]</t>
      </section>
      <section anchor="iana-kinfo">
        <name>OAuth Parameters</name>
        <t>IANA is asked to register the following entries in the "OAuth Parameters" registry following the procedure specified in <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
        <ul spacing="normal">
          <li>Parameter name: sign_info</li>
          <li>Parameter usage location: client-rs request, rs-client response</li>
          <li>Change Controller: IETF</li>
          <li>Specification Document(s): [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Parameter name: kdcchallenge</li>
          <li>Parameter usage location: rs-client response</li>
          <li>Change Controller: IETF</li>
          <li>Specification Document(s): [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-kinfo-map">
        <name>OAuth Parameters CBOR Mappings</name>
        <t>IANA is asked to register the following entries in the "OAuth Parameters CBOR
Mappings" registry following the procedure specified in <xref section="8.10" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>Name: sign_info</li>
          <li>CBOR Key: TBD (range -256 to 255)</li>
          <li>Value Type: Simple value "null" / array</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: kdcchallenge</li>
          <li>CBOR Key: TBD (range -256 to 255)</li>
          <li>Value Type: Byte string</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="if-ace-group">
        <name>Interface Description (if=) Link Target Attribute Values</name>
        <t>IANA is asked to register the following entry in the "Interface Description (if=) Link Target Attribute Values" registry within the "CoRE Parameters" registry group.</t>
        <ul spacing="normal">
          <li>Attribute Value: ace.group</li>
          <li>Description: The 'ace group' interface is used to provision keying material and related information and policies to members of a group using the ACE framework.</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-reg">
        <name>ACE Groupcomm Parameters</name>
        <t>This specification establishes the "ACE Groupcomm Parameters" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Name: This is a descriptive name that enables easier reference to
the item. The name MUST be unique. It is not used in the encoding.</li>
          <li>CBOR Key: This is the value used as CBOR key of the item. These values MUST be unique. The value can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535, as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>CBOR Type: This contains the CBOR type of the item, or a pointer to the registry that defines its type, when that depends on another item.</li>
          <li>Reference: This contains a pointer to the public specification for the item.</li>
        </ul>
        <t>This registry has been initially populated with the values in <xref target="fig-ACE-Groupcomm-Parameters"/>.</t>
      </section>
      <section anchor="iana-key">
        <name>ACE Groupcomm Key Types</name>
        <t>This specification establishes the "ACE Groupcomm Key Types" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Name: This is a descriptive name that enables easier reference to
the item. The name MUST be unique. It is not used in the encoding.</li>
          <li>Key Type Value: This is the value used to identify the keying material. These values MUST be unique. The value can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535, as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>Profile: This field may contain one or more descriptive strings of application profiles to be used with this item. The values should be taken from the Name column of the "ACE Groupcomm Profiles" registry.</li>
          <li>Description: This field contains a brief description of the keying material.</li>
          <li>Reference: This contains a pointer to the public specification for the format of the keying material, if one exists.</li>
        </ul>
        <t>This registry has been initially populated with the value in <xref target="fig-gkty"/>.</t>
      </section>
      <section anchor="ace-groupcomm-profiles">
        <name>ACE Groupcomm Profiles</name>
        <t>This specification establishes the "ACE Groupcomm Profiles" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Name: The name of the application profile, to be used as value of the profile attribute.</li>
          <li>Description: Text giving an overview of the application profile and the context it is developed for.</li>
          <li>CBOR Value: CBOR abbreviation for the name of this application profile. These values MUST be unique. The value can be a positive integer or a negative integer. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 are designated as "Specification Required". Integer values greater than 65535 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>Reference: This contains a pointer to the public specification of the abbreviation for this application profile, if one exists.</li>
        </ul>
        <t>This registry has been initially populated with the value in <xref target="ace-groupcomm-profile-0"/>.</t>
      </section>
      <section anchor="ace-groupcomm-policies">
        <name>ACE Groupcomm Policies</name>
        <t>This specification establishes the "ACE Groupcomm Policies" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Name: The name of the group communication policy.</li>
          <li>CBOR label: The value to be used to identify this group communication policy. These values MUST be unique. The value can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535, as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>CBOR type: the CBOR type used to encode the value of this group communication policy.</li>
          <li>Description: This field contains a brief description for this group communication policy.</li>
          <li>Reference: This field contains a pointer to the public specification providing the format of the group communication policy, if one exists.</li>
        </ul>
        <t>This registry has been initially populated with the values in <xref target="fig-ACE-Groupcomm-Policies"/>.</t>
      </section>
      <section anchor="sequence-number-synchronization-methods">
        <name>Sequence Number Synchronization Methods</name>
        <t>This specification establishes the "Sequence Number Synchronization Methods" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Name: The name of the sequence number synchronization method.</li>
          <li>Value: The value to be used to identify this sequence number synchronization method. These values MUST be unique. The value can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535, as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>Description: This field contains a brief description for this sequence number synchronization method.</li>
          <li>Reference: This field contains a pointer to the public specification describing the sequence number synchronization method.</li>
        </ul>
      </section>
      <section anchor="iana-ace-groupcomm-errors">
        <name>ACE Groupcomm Errors</name>
        <t>This specification establishes the "ACE Groupcomm Errors" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Value: The value to be used to identify the error. These values MUST be unique. The value can be a positive integer or a negative integer. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 are designated as "Specification Required". Integer values greater than 65535 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>Description: This field contains a brief description of the error.</li>
          <li>Reference: This field contains a pointer to the public specification defining the error, if one exists.</li>
        </ul>
        <t>This registry has been initially populated with the values in <xref target="fig-ACE-Groupcomm-Error-Identifiers"/>. The Reference column for all of these entries refers to this document.</t>
      </section>
      <section anchor="iana-ace-groupcomm-rekeying-schemes">
        <name>ACE Groupcomm Rekeying Schemes</name>
        <t>This specification establishes the "ACE Groupcomm Rekeying Schemes" IANA registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <t>The registry has been created to use the "Expert Review" registration procedure <xref target="RFC8126"/>. Expert review guidelines are provided in <xref target="review"/>. Values in this registry are covered by different registration policies as indicated. It should be noted that, in addition to the expert review, some portions of the registry require a specification, potentially a Standards Track RFC, to be supplied as well.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>Value: The value to be used to identify the group rekeying scheme. These values MUST be unique. The value can be a positive integer or a negative integer. Different ranges of values use different registration policies <xref target="RFC8126"/>. Integer values from -256 to 255 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 are designated as "Specification Required". Integer values greater than 65535 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</li>
          <li>Name: The name of the group rekeying scheme.</li>
          <li>Description: This field contains a brief description of the group rekeying scheme.</li>
          <li>Reference: This field contains a pointer to the public specification defining the group rekeying scheme, if one exists.</li>
        </ul>
        <t>This registry has been initially populated with the value in <xref target="rekeying-scheme-0"/>.</t>
      </section>
      <section anchor="review">
        <name>Expert Review Instructions</name>
        <t>The IANA Registries established in this document are defined as expert review.
This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason so they should be given substantial latitude.</t>
        <t>Expert reviewers should take into consideration the following points:</t>
        <ul spacing="normal">
          <li>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments, code points in other ranges should not be assigned for testing.</li>
          <li>Specifications are required for the standards track range of point assignment. Specifications should exist for specification required ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</li>
          <li>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for Standards Track documents does not mean that a Standards Track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <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="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <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">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <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">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines 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">
          <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"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <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="RFC9237">
          <front>
            <title>An Authorization Information Format (AIF) for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Information about which entities are authorized to perform what operations on which constituents of other entities is a crucial component of producing an overall system that is secure. Conveying precise authorization information is especially critical in highly automated systems with large numbers of entities, such as the Internet of Things.</t>
              <t>This specification provides a generic information model and format for representing such authorization information, as well as two variants of a specific instantiation of that format for use with Representational State Transfer (REST) resources identified by URI path.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9237"/>
          <seriesInfo name="DOI" value="10.17487/RFC9237"/>
        </reference>
        <reference anchor="RFC9338">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9338"/>
          <seriesInfo name="DOI" value="10.17487/RFC9338"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <date day="2" month="September" year="2023"/>
            <abstract>
              <t>   This document defines the security protocol 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 protocol
   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.
   Group OSCORE can be used between endpoints communicating with CoAP or
   CoAP-mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-20"/>
        </reference>
        <reference anchor="COSE.Algorithms" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="COSE.Header.Parameters" target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="COSE.Key.Types" target="https://www.iana.org/assignments/cose/cose.xhtml#key-type">
          <front>
            <title>COSE key Types</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CBOR.Tags" target="https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CoAP.Content.Formats" target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#content-formats">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC2093">
          <front>
            <title>Group Key Management Protocol (GKMP) Specification</title>
            <author fullname="H. Harney" initials="H." surname="Harney"/>
            <author fullname="C. Muckenhirn" initials="C." surname="Muckenhirn"/>
            <date month="July" year="1997"/>
            <abstract>
              <t>This specification proposes a protocol to create grouped symmetric keys and distribute them amongst communicating peers. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2093"/>
          <seriesInfo name="DOI" value="10.17487/RFC2093"/>
        </reference>
        <reference anchor="RFC2094">
          <front>
            <title>Group Key Management Protocol (GKMP) Architecture</title>
            <author fullname="H. Harney" initials="H." surname="Harney"/>
            <author fullname="C. Muckenhirn" initials="C." surname="Muckenhirn"/>
            <date month="July" year="1997"/>
            <abstract>
              <t>This specification proposes a protocol to create grouped symmetric keys and distribute them amongst communicating peers. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2094"/>
          <seriesInfo name="DOI" value="10.17487/RFC2094"/>
        </reference>
        <reference anchor="RFC2627">
          <front>
            <title>Key Management for Multicast: Issues and Architectures</title>
            <author fullname="D. Wallner" initials="D." surname="Wallner"/>
            <author fullname="E. Harder" initials="E." surname="Harder"/>
            <author fullname="R. Agee" initials="R." surname="Agee"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>This report contains a discussion of the difficult problem of key management for multicast communication sessions. It focuses on two main areas of concern with respect to key management, which are, initializing the multicast group with a common net key and rekeying the multicast group. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2627"/>
          <seriesInfo name="DOI" value="10.17487/RFC2627"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <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">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="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"/>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <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>
        <reference anchor="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"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <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="RFC9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="RFC9431">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) and Transport Layer Security (TLS) Profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="C. Sengul" initials="C." surname="Sengul"/>
            <author fullname="A. Kirby" initials="A." surname="Kirby"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework to enable authorization in a publish-subscribe messaging system based on Message Queuing Telemetry Transport (MQTT). Proof-of-Possession keys, bound to OAuth 2.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="RFC" value="9431"/>
          <seriesInfo name="DOI" value="10.17487/RFC9431"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang" initials="C." surname="Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-09"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Unaffiliated</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for CoAP
   that extends the capabilities of CoAP for supporting nodes with long
   breaks in connectivity and/or up-time.  The Constrained Application
   Protocol (CoAP) is used by CoAP clients both to publish and to
   subscribe via a known topic resource.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-06"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-discovery">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>Consultant</organization>
            </author>
            <date day="8" month="September" year="2023"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices may
   not know the exact security groups to join, the respective Group
   Manager, or other information required to perform the joining
   process.  This document describes how a CoAP endpoint can use
   descriptions and links of resources registered at the CoRE Resource
   Directory to discover security groups and to acquire information for
   joining them through the respective Group Manager.  A given security
   group may protect multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the ACE framework for
   Authentication and Authorization in constrained environments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-discovery-14"/>
        </reference>
      </references>
    </references>
    <section anchor="req">
      <name>Requirements on Application Profiles</name>
      <t>This section lists the requirements on application profiles of this specification, for the convenience of application profile designers.</t>
      <section anchor="mandatory-to-address-requirements">
        <name>Mandatory-to-Address Requirements</name>
        <ul spacing="normal">
          <li>REQ1: Specify the format and encoding of 'scope'. This includes defining the set of possible roles and their identifiers, as well as the corresponding encoding to use in the scope entries according to the used scope format (see <xref target="ssec-authorization-request"/>).</li>
          <li>REQ2: If the AIF format of 'scope' is used, register its specific instance of "Toid" and "Tperm" as Media Type parameters and a corresponding Content-Format, as per the guidelines in <xref target="RFC9237"/>.</li>
          <li>REQ3: If used, specify the acceptable values for 'sign_alg' (see <xref target="token-post"/>).</li>
          <li>REQ4: If used, specify the acceptable values for 'sign_parameters' (see <xref target="token-post"/>).</li>
          <li>REQ5: If used, specify the acceptable values for 'sign_key_parameters' (see <xref target="token-post"/>).</li>
          <li>REQ6: Specify the acceptable formats for authentication credentials and, if used, the acceptable values for 'cred_fmt' (see <xref target="token-post"/>).</li>
          <li>REQ7: If the value of the GROUPNAME URI path and the group name in the access token scope (gname in <xref target="ssec-authorization-response"/>) are not required to coincide, specify the mechanism to map the GROUPNAME value in the URI to the group name (see <xref target="kdc-if"/>).</li>
          <li>REQ8: Define whether the KDC has an authentication credential and if this has to be provided through the 'kdc_cred' parameter, see <xref target="gid-post"/>.</li>
          <li>REQ9: Specify if any part of the KDC interface as defined in this document is not supported by the KDC (see <xref target="kdc-if"/>).</li>
          <li>REQ10: Register a Resource Type for the root url-path, which is used to discover the correct url to access at the KDC (see <xref target="kdc-if"/>).</li>
          <li>REQ11: Define what specific actions (e.g., CoAP methods) are allowed on each resource provided by the KDC interface, depending on whether the Client is a current group member; the roles that a Client is authorized to take as per the obtained access token (see <xref target="ssec-authorization-request"/>); and the roles that the Client has as current group member.</li>
          <li>REQ12: Categorize possible newly defined operations for Clients into primary operations expected to be minimally supported and secondary operations, and provide accompanying considerations (see <xref target="client-operations"/>).</li>
          <li>REQ13: Specify the encoding of group identifier (see <xref target="ace-group-fetch"/>).</li>
          <li>REQ14: Specify the approaches used to compute and verify the PoP evidence to include in 'client_cred_verify', and which of those approaches is used in which case (see <xref target="gid-post"/>).</li>
          <li>REQ15: Specify how the nonce N_S is generated, if the token is not provided to the KDC through the Token Transfer Request to the authz-info endpoint (e.g., if it is used directly to validate TLS instead).</li>
          <li>REQ16 Define the initial value of the 'num' parameter (see <xref target="gid-post"/>).</li>
          <li>REQ17: Specify the format of the 'key' parameter (see <xref target="gid-post"/>).</li>
          <li>REQ18: Specify the acceptable values of the 'gkty' parameter (see <xref target="gid-post"/>).</li>
          <li>REQ19: Specify and register the application profile identifier (see <xref target="gid-post"/>).</li>
          <li>REQ20: If used, specify the format and content of 'group_policies' and its entries. Specify the policies default values (see <xref target="gid-post"/>).</li>
          <li>REQ21: Specify the approaches used to compute and verify the PoP evidence to include in 'kdc_cred_verify', and which of those approaches is used in which case (see <xref target="gid-post"/>).</li>
          <li>REQ22: Specify the communication protocol the members of the group must use (e.g., multicast CoAP).</li>
          <li>REQ23: Specify the security protocol the group members must use to protect their communication (e.g., group OSCORE). This must provide encryption, integrity, and replay protection.</li>
          <li>REQ24: Specify how the communication is secured between Client and KDC. Optionally, specify transport profile of ACE <xref target="RFC9200"/> to use between Client and KDC (see <xref target="ssec-key-distribution-exchange"/>).</li>
          <li>REQ25: Specify the format of the identifiers of group members (see <xref target="gid-post"/>).</li>
          <li>REQ26: Specify policies at the KDC to handle ids that are not included in 'get_creds' (see <xref target="pubkey-fetch"/>).</li>
          <li>REQ27: Specify the format of newly-generated individual keying material for group members, or of the information to derive it, and corresponding CBOR label (see <xref target="node-get"/>).</li>
          <li>REQ28: Specify which CBOR tag is used for identifying the semantics of binary scopes, or register a new CBOR tag if a suitable one does not exist already (see <xref target="sec-extended-scope"/>).</li>
          <li>REQ29: Categorize newly defined parameters according to the same criteria of <xref target="params"/>.</li>
          <li>REQ30: Define whether Clients must, should, or may support the conditional parameters defined in <xref target="params"/>, and under which circumstances.</li>
        </ul>
      </section>
      <section anchor="optional-to-address-requirements">
        <name>Optional-to-Address Requirements</name>
        <ul spacing="normal">
          <li>OPT1: Optionally, if the textual format of 'scope' is used, specify CBOR values to use for abbreviating the role identifiers in the group (see <xref target="ssec-authorization-request"/>).</li>
          <li>OPT2: Optionally, specify the additional parameters used in the exchange of Token Transfer Request and Response (see <xref target="token-post"/>).</li>
          <li>OPT3: Optionally, specify the negotiation of parameter values for signature algorithm and signature keys, if 'sign_info' is not used (see <xref target="token-post"/>).</li>
          <li>OPT4: Optionally, specify possible or required payload formats for specific error cases.</li>
          <li>OPT5: Optionally, specify additional identifiers of error types, as values of the 'error' field in an error response from the KDC.</li>
          <li>OPT6: Optionally, specify the encoding of 'creds_repo' if the default is not used (see <xref target="gid-post"/>).</li>
          <li>OPT7: Optionally, specify the functionalities implemented at the 'control_uri' resource hosted at the Client, including message exchange encoding and other details (see <xref target="gid-post"/>).</li>
          <li>OPT8: Optionally, specify the behavior of the handler in case of failure to retrieve an authentication credential for the specific node (see <xref target="gid-post"/>).</li>
          <li>OPT9: Optionally, define a default group rekeying scheme, to refer to in case the 'rekeying_scheme' parameter is not included in the Join Response (see <xref target="gid-post"/>).</li>
          <li>OPT10: Optionally, specify the functionalities implemented at the 'control_group_uri' resource hosted at the Client, including message exchange encoding and other details (see <xref target="gid-post"/>).</li>
          <li>OPT11: Optionally, specify policies that instruct Clients to retain messages and for how long, if they are unsuccessfully decrypted (see <xref target="update-keys"/>). This makes it possible to decrypt such messages after getting updated keying material.</li>
          <li>OPT12: Optionally, specify for the KDC to perform group rekeying (together or instead of renewing individual keying material) when receiving a Key Renewal Request (see <xref target="new-keys"/>).</li>
          <li>OPT13: Optionally, specify how the identifier of a group member's authentication credential is included in requests sent to other group members (see <xref target="update-pub-key"/>).</li>
          <li>OPT14: Optionally, specify additional information to include in rekeying messages for the "Point-to-Point" group rekeying scheme (see <xref target="sec-group-rekeying"/>).</li>
          <li>OPT15: Optionally, specify if Clients must or should support any of the parameters defined as optional in this specification (see <xref target="params"/>).</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-future-cose-algs">
      <name>Extensibility for Future COSE Algorithms</name>
      <t>As defined in <xref section="8.1" sectionFormat="of" target="RFC9053"/>, future algorithms can be registered in the "COSE Algorithms" registry <xref target="COSE.Algorithms"/> as specifying none or multiple COSE capabilities.</t>
      <t>To enable the seamless use of such future registered algorithms, this section defines a general, agile format for each 'sign_info_entry' of the 'sign_info' parameter in the Token Transfer Response, see <xref target="sign-info"/>.</t>
      <t>If any of the currently registered COSE algorithms is considered, using this general format yields the same structure of 'sign_info_entry' defined in this document, thus ensuring backward compatibility.</t>
      <section anchor="sec-future-cose-algs-sign-info-entry">
        <name>Format of 'sign_info_entry'</name>
        <t>The format of each 'sign_info_entry' (see <xref target="sign-info"/>) is generalized as follows.</t>
        <ul spacing="normal">
          <li>
            <t>'sign_parameters' includes N &gt;= 0 elements, each of which is a COSE capability of the signature algorithm indicated in 'sign_alg'.  </t>
            <t>
In particular, 'sign_parameters' has the same format and value of the COSE capabilities array for the signature algorithm indicated in 'sign_alg', as specified for that algorithm in the 'Capabilities' column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
          </li>
          <li>
            <t>'sign_key_parameters' is replaced by N elements 'sign_capab', each of which is a CBOR array.  </t>
            <t>
The i-th 'sign_capab' array (i = 0, ..., N-1) is the array of COSE capabilities for the algorithm capability specified in 'sign_parameters'[i].  </t>
            <t>
In particular, each 'sign_capab' array has the same format and value of the COSE capabilities array for the algorithm capability specified in 'sign_parameters'[i].  </t>
            <t>
Such a COSE capabilities array is currently defined for the algorithm capability COSE key type, in the "Capabilities" column of the "COSE Key Types" registry <xref target="COSE.Key.Types"/>.</t>
          </li>
        </ul>
        <figure anchor="fig-sign-info-entry-general">
          <name>'sign_info_entry' with general format</name>
          <sourcecode type="CDDL"><![CDATA[
sign_info_entry =
[
    id : gname / [ + gname ],
    sign_alg : int / tstr,
    sign_parameters : [ * alg_capab : any ],
  * sign_capab : [ * capab : any ],
    cred_fmt : int / null
]

gname = tstr
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="sec-document-updates">
      <name>Document Updates</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>
      <section anchor="sec-16-17">
        <name>Version -16 to -17</name>
        <ul spacing="normal">
          <li>Expanded definition of "Dispatcher".</li>
          <li>Added definition of "Individual keying material" to the terminology.</li>
          <li>Early definition of "backward security" and "forward security".</li>
          <li>Clarified high-level breakdown of the key provisioning process in two phases.</li>
          <li>Fixed the CDDL definition of 'sign_info_entry'.</li>
          <li>Clarified meaning of the 'cred_fmt' and 'exp' parameters.</li>
          <li>Clarified that invariance applies to resources paths, not to resources.</li>
          <li>Relaxed rule about including the 'peer_roles' parameter.</li>
          <li>Ensured that the KDC always has a Client-side challenge for computing a proof-of-possession evidence.</li>
          <li>More guidelines for group members that fail to decrypt messages.</li>
          <li>Fetching the latest keying material can happen before the old, stored one expires.</li>
          <li>Renewing the current keying material can happen before it expires.</li>
          <li>Moved up the discussion on misalignment of group keying material.</li>
          <li>Expanded security considerations on group rekeying for joining nodes.</li>
          <li>Revised size of integer for building AEAD nonces for group rekeying.</li>
          <li>Added reserved value to the "ACE Groupcomm Profiles" IANA registry.</li>
          <li>Revised the future-ready generalization of 'sign_info_entry'.</li>
          <li>Revised and fixed IANA considerations.</li>
          <li>Fixes and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-15-16">
        <name>Version -15 to -16</name>
        <ul spacing="normal">
          <li>Distinction between authentication credentials and public keys.</li>
          <li>Consistent renaming of parameters and URI paths.</li>
          <li>Updated format of scope entries when using AIF.</li>
          <li>Updated signaling of semantics for binary encoded scopes.</li>
          <li>Editorial fixes.</li>
        </ul>
      </section>
      <section anchor="sec-14-15">
        <name>Version -14 to -15</name>
        <ul spacing="normal">
          <li>Fixed nits.</li>
        </ul>
      </section>
      <section anchor="sec-13-14">
        <name>Version -13 to -14</name>
        <ul spacing="normal">
          <li>Clarified scope and goal of the document in abstract and introduction.</li>
          <li>Overall clarifications on semantics of operations and parameters.</li>
          <li>Major restructuring in the presentation of the KDC interface.</li>
          <li>Revised error handling, also removing redundant text.</li>
          <li>Imported parameters and KDC resource about the KDC's public key from draft-ietf-ace-key-groupcomm-oscore.</li>
          <li>New parameters 'group_rekeying_scheme' and 'control_group_uri'.</li>
          <li>Provided example of administrative keying material transported in 'mgt_key_material'.</li>
          <li>Reasoned categorization of parameters, as expected support by ACE Clients.</li>
          <li>Reasoned categorization of KDC functionalities, as minimally/optional to support for ACE Clients.</li>
          <li>Guidelines on enhanced error responses using 'error' and 'error_description'.</li>
          <li>New section on group rekeying, discussing at a high-level a basic one-to-one approach and possible one-to-many approaches.</li>
          <li>Revised and expanded security considerations, also about the KDC.</li>
          <li>Updated list of requirements for application profiles.</li>
          <li>Several further clarifications and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-05-13">
        <name>Version -05 to -13</name>
        <ul spacing="normal">
          <li>Incremental revision of the KDC interface.</li>
          <li>Removed redundancy in parameters about signature algorithm and signature keys.</li>
          <li>Node identifiers always indicated with 'peer_identifiers'.</li>
          <li>Format of public keys changed from raw COSE Keys to be certificates, CWTs or CWT Claims Set (CCS). Adapted parameter 'pub_key_enc'.</li>
          <li>Parameters and functionalities imported from draft-ietf-key-groupcomm-oscore where early defined.</li>
          <li>Possible provisioning of the KDC's Diffie-Hellman public key in response to the Token transferring to /authz-info.</li>
          <li>Generalized proof-of-possession evidence, to be not necessarily a signature.</li>
          <li>Public keys of group members may be retrieved filtering by role and/or node identifier.</li>
          <li>Enhanced error handling with error code and error description.</li>
          <li>Extended "typed" format for the 'scope' claim, optional to use.</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>Updated uppercase/lowercase URI segments for KDC resources.</li>
          <li>Supporting single Access Token for multiple groups/topics.</li>
          <li>Added 'control_uri' parameter in the Join Request.</li>
          <li>Added 'peer_roles' parameter to support legal requesters/responders.</li>
          <li>Clarification on stopping using owned keying material.</li>
          <li>Clarification on different reasons for processing failures, related policies, and requirement OPT11.</li>
          <li>Added a KDC sub-resource for group members to upload a new public key.</li>
          <li>Possible group rekeying following an individual Key Renewal Request.</li>
          <li>Clarified meaning of requirement REQ3; added requirement OPT12.</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>Revised RESTful interface, as to methods and parameters.</li>
          <li>Extended processing of Join Request, as to check/retrieval of public keys.</li>
          <li>Revised and extended profile requirements.</li>
          <li>Clarified specific usage of parameters related to signature algorithms/keys.</li>
          <li>Included general content previously in draft-ietf-ace-key-groupcomm-oscore</li>
          <li>Registration of media type and content format application/ace-group+cbor</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>Exchange of information on the signature algorithm and related parameters, during the Token POST (Section 3.3).</li>
          <li>Restructured KDC interface, with new possible operations (Section 4).</li>
          <li>Client PoP signature for the Join Request upon joining (Section 4.1.2.1).</li>
          <li>Revised text on group member removal (Section 5).</li>
          <li>Added more profile requirements (Appendix A).</li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>Editorial fixes.</li>
          <li>Distinction between transport profile and application profile (Section 1.1).</li>
          <li>New parameters 'sign_info' and 'pub_key_enc' to negotiate parameter values for signature algorithm and signature keys (Section 3.3).</li>
          <li>New parameter 'type' to distinguish different Key Distribution Request messages (Section 4.1).</li>
          <li>New parameter 'client_cred_verify' in the Key Distribution Request to convey a Client signature (Section 4.1).</li>
          <li>Encoding of 'pub_keys_repos' (Section 4.1).</li>
          <li>Encoding of 'mgt_key_material' (Section 4.1).</li>
          <li>Improved description on retrieval of new or updated keying material (Section 6).</li>
          <li>Encoding of 'get_pub_keys' in Public Key Request (Section 7.1).</li>
          <li>Extended security considerations (Sections 10.1 and 10.2).</li>
          <li>New "ACE Public Key Encoding" IANA registry (Section 11.2).</li>
          <li>New "ACE Groupcomm Parameters" IANA registry (Section 11.3), populated with the entries in Section 8.</li>
          <li>New "Ace Groupcomm Request Type" IANA registry (Section 11.4), populated with the values in Section 9.</li>
          <li>New "ACE Groupcomm Policy" IANA registry (Section 11.7) populated with two entries "Sequence Number Synchronization Method" and "Key Update Check Interval" (Section 4.2).</li>
          <li>Improved list of requirements for application profiles (Appendix A).</li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>Changed name of 'req_aud' to 'audience' in the Authorization Request (Section 3.1).</li>
          <li>Defined error handling on the KDC (Sections 4.2 and 6.2).</li>
          <li>Updated format of the Key Distribution Response as a whole (Section 4.2).</li>
          <li>Generalized format of 'pub_keys' in the Key Distribution Response (Section 4.2).</li>
          <li>Defined format for the message to request leaving the group (Section 5.2).</li>
          <li>Renewal of individual keying material and methods for group rekeying initiated by the KDC (Section 6).</li>
          <li>CBOR type for node identifiers in 'get_pub_keys' (Section 7.1).</li>
          <li>Added section on parameter identifiers and their CBOR keys (Section 8).</li>
          <li>Added request types for requests to a Join Response (Section 9).</li>
          <li>Extended security considerations (Section 10).</li>
          <li>New IANA registries "ACE Groupcomm Key registry", "ACE Groupcomm Profile registry", "ACE Groupcomm Policy registry" and "Sequence Number Synchronization Method registry" (Section 11).</li>
          <li>Added appendix about requirements for application profiles of ACE on group communication (Appendix A).</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The following individuals were helpful in shaping this document: <contact fullname="Christian Amsüss"/>, <contact fullname="Carsten Bormann"/>, <contact fullname="Rikard Höglund"/>, <contact fullname="Ben Kaduk"/>, <contact fullname="Watson Ladd"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Daniel Migault"/>, <contact fullname="Jim Schaad"/>, <contact fullname="Ludwig Seitz"/>, <contact fullname="Göran Selander"/>, <contact fullname="Cigdem Sengul"/>, <contact fullname="Peter van der Stok"/>, and <contact fullname="Paul Wouters"/>.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; by the H2020 project SIFIS-Home (Grant agreement 952652); and by the EIT-Digital High Impact Initiative ACTIVE.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963YbR5Yu+J9PkUOtdUSWAYoXXWzarjkqiSqr25Z0RKmr
e1werSSQILMFINFIQDRbUq95jfk3zzKPMk8y+xqxIzIyAZCU69LF5WWRQGZc
d+zY12/3+/2tD8fZ0dbWolyMi+Psn4ur7NW8+lDWZTUtp+fZqJpnf5xXy1n2
pJpMltNykC/gq2xZ47ePn5xs5Wdn8+LD+q9uDavBNJ9AZ8N5Plr0y2Ix6ueD
ov++uOqf4/MDeLw/zhdFvdjaKmfz42wxX9aLw/39b/YPty7Pj7Hf7E/V/D12
Q11sQdvHWb0YbtXLs0lZ4xgWVzPo5PnJm2dbW4NqCM8eZ0vo6+utWXm8lWWL
anCcXRU1/FpX88W8GNXu76uJ/ROeHBazxcVxdn9rK18uLqo5NoA/ffk3y8op
PP9sL3uVj6vJWTkt3Tc822fzfDoo6kGeeKKaw9hO5uWgrmFtH//BfVHDsAqY
2ZtqXl/kk2l9ni/yaXZ45J4YlIsrWPyyXuT+s2oIHZ6e9A8e3r+/n53C+N9f
VOOJeWA5XczhvdPLYlhM3efFJC/Hx9lIh7o306H+z0JGtwe7k577T3vZm3Jc
DfJo4j/l80EVf0Uzfv389CQ12+d1Pvr3aj7U2R5+0dlOcHx7Cxrf/5yXe3Wx
tTWt5hOg1g8F7vPrZ08ODw6+kV8fPrrvfv366Gv59euDw4fu10f39deHB/vy
66PDB4f66zcPH+kDj+67X79x7X6z756FX4/0VzgA7tcjfe2bIx7D8/7TPTpK
g2pe9Kua/nHHCZ948vL0ZO/x+Lyal4uLSc0UHFIz7crzxy8e099DOIJADPkY
VgT/Fh6B7WS+Hf4qn5/jzl0sFrP6+N69y8vLvTKf5nvQ4r0cjuP5dFJMF/W9
QVUX9L+9Xy8Wk/Gd3LZDI/yhyIfFfO9VPgfqWRTzGw6Um8t8czcb7wU115/Z
5mjYwP723gDHueFwgQlm1MzNhom8FPkfju4PL1/vvcnPbzCwajoo6yL7QznN
51fZy7N/LwaL7HUxmxc19M4Xwg72s5thRxsO/aya9xfwmv+NJ4Fjrx6/2oPu
F/Dk3jM6kzeZxuNXmTTWl8Y2XWU4U37r479l7QfSxUi62Cqno5id7H9z5H9V
bnH48FBP9YPDrx3jeOBYz6OH9w8cD3mgn3596H89+ubQsx7DOA79r/7TR46H
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

-->

</rfc>
