<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.6 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-key-groupcomm-06" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" tocDepth="2" version="3">
  <!-- xml2rfc v2v3 conversion 2.39.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-06"/>
    <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="2020" month="May" day="11"/>
    <workgroup>ACE Working Group</workgroup>
    <abstract>
      <t>This document defines message formats and procedures for requesting and distributing group keying material using the ACE framework, to protect communications between group members.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This document expands the ACE framework <xref target="I-D.ietf-ace-oauth-authz" format="default"/> to define the message exchanges used to request, distribute and renew the keying material in a group communication scenario, e.g. based on multicast <xref target="I-D.dijk-core-groupcomm-bis" format="default"/> or on publishing-subscribing <xref target="I-D.ietf-core-coap-pubsub" format="default"/>.
The ACE framework is based on CBOR <xref target="RFC7049" format="default"/>, so CBOR is the format used in this specification. However, using JSON <xref target="RFC8259" format="default"/> instead of CBOR is possible, using the conversion method specified in Sections 4.1 and 4.2 of <xref target="RFC7049" format="default"/>.</t>
      <t>Profiles that use group communication can build on this document, by defining a number of details such as the exact group communication protocol and security protocols used. The specific list of details a profile needs to define is shown in <xref target="req" format="default"/>.</t>
      <t>If the application requires backward and forward security, new keying material is generated and distributed to the group upon membership changes. A key management scheme performs the actual distribution of the new keying material to the group. In particular, the key management scheme rekeys the current group members when a new node joins the group, and the remaining group members when a node leaves the group. Rekeying mechanisms can be based on <xref target="RFC2093" format="default"/>, <xref target="RFC2094" format="default"/> and <xref target="RFC2627" format="default"/>.</t>
      <section anchor="terminology" numbered="true" toc="default">
        <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts described in  <xref target="I-D.ietf-ace-oauth-authz" format="default"/> and <xref target="RFC8152" format="default"/>, such as Authorization Server (AS) and Resource Server (RS).</t>
        <t>This document additionally uses the following terminology:</t>
        <ul spacing="normal">
          <li>Transport profile, to indicate a profile of ACE as per Section 5.6.4.3 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>. 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. Tranport profiles of ACE include, for instance, <xref target="I-D.ietf-ace-oscore-profile" format="default"/>, <xref target="I-D.ietf-ace-dtls-authorize" format="default"/> and <xref target="I-D.ietf-ace-mqtt-tls-profile" format="default"/>.</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 (re-)distribution of keying material. An application profile may define specific procedures and message formats.</li>
        </ul>
      </section>
    </section>
    <section anchor="overview" numbered="true" toc="default">
      <name>Overview</name>
      <figure anchor="fig-roles">
        <name>Key Distribution Participants</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
+------------+                  +-----------+
|     AS     |                  |    KDC    |
|            |        .-------->|           |
+------------+       /          +-----------+
      ^             /
      |            /
      v           /                           +-----------+
+------------+   /      +------------+        |+-----------+
|   Client   |<-'       | Dispatcher |        ||+-----------+
|            |<-------->|    (RS)    |<------->||   Group   |
+------------+          +------------+         +|  members  |
                                                +-----------+
]]></artwork>
      </figure>
      <!-- Peter 30-07: Figure 1 is not referenced in the text. I suggest a slightly different figure where dispatcher and KDC are endpoints of the RS, and for multicast the communication is directly between Client and group members without passing through the RS.

Marco: I am not sure the change is consistent, since the KDC is an AS in pub-sub, i.e. not an RS or part of an RS. Also, in group OSCORE the KDC is the RS, not part of it.

Marco: We have extended the definition of Dispatcher, clarifying the two main cases involving either a Broker (ACE RS) or a bus (multicast delivery). Does this help?
-->

<!-- Peter 18-11: According to text both Dispatcher and KDC can be RS, but only Dispatcher has (RS) added in the figure 1.

FP: Where is the text about Dispatcher being RS in the text? -->

<t>The following participants (see <xref target="fig-roles" format="default"/>) take part in the authorization and key distribution.</t>
      <ul spacing="normal">
        <li>Client (C): node that wants to join the group communication. It can request write and/or read rights.</li>
        <li>Authorization Server (AS): same as AS 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" format="default"/>), it takes the role of the RS in the ACE Framework. During the second part (<xref target="key-distr" format="default"/>), 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>
      </ul>
      <!-- Peter 18-11: Page 4, bullet 3: remove last phrase "If required.... Changes.". It does not add anything, does it?
FP: modified text to shorten.
  -->

<ul spacing="normal">
        <li>Dispatcher: entity through which the Clients communicate with the group and which distributes messages to the group members. Examples of dispatchers are: the Broker node in a pub-sub setting; a relayer node 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.</li>
      </ul>
      <!-- Marco 22-02: A KDC can be responsible for more groups, while every group is associated to only one KDC.
FP: Proposal: let's add this sentence later. There is some considerations to be done about using a "cluster of KDC", but I don't want to overcomplicate v-00. Security considerations?
-->

<t>This document specifies a mechanism for:</t>
      <ul spacing="normal">
        <li>Authorizing a new node to join the group (<xref target="sec-auth" format="default"/>), and providing it with the group keying material to communicate with the other group members (<xref target="key-distr" format="default"/>).</li>
        <li>A node to leave the group of for the KDC to remove a current member of the group (<xref target="sec-node-removal" format="default"/>).</li>
        <li>Retrieving keying material as a current group member (<xref target="update-keys" format="default"/> and <xref target="new-keys" format="default"/>).</li>
        <li>Renewing and re-distributing the group keying material (rekeying) upon a membership change in the group (<xref target="ssec-group-leaving" format="default"/> and <xref target="sec-node-removal" format="default"/>).</li>
      </ul>
      <t><xref target="fig-flow" format="default"/> provides a high level overview of the message flow for a node joining a group communication setting, which can be expanded as follows.</t>
      <ol spacing="normal" type="1">
        <li>The joining node requests an Access Token from the AS, in order to access a specific group-membership resource on the KDC and hence join the associated group. The joining node will start or continue using a secure communication association with the KDC, according to the response from the AS.</li>
        <li>The joining node transfers authentication and authorization information to the KDC, by posting the obtained Access Token to the /authz-info endpoint at the KDC. After that, a joining node MUST have a secure communication association established with the KDC, before starting to join a group under that KDC. Possible ways to provide a secure communication association are DTLS <xref target="RFC6347" format="default"/> and OSCORE <xref target="RFC8613" format="default"/>.</li>
        <li>The joining node starts the joining process to become a member of the group, by accessing the related group-membership resource at the KDC.
At the end of the joining process, the joining node has received from the KDC the parameters and keying material to securely communicate with the other members of the group, and the KDC has stored the association between the authorization information from the access token and the secure session with the client.</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>
      </ol>
      <figure anchor="fig-flow">
        <name>Message Flow Upon New Node's Joining</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
            C                           AS  KDC                Group
            |                           |    |                 Member
          / |                           |    |                     |
          | |   Authorization Request   |    |                     |
 Defined  | |-------------------------->|    |                     |
 in the   | |                           |    |                     |
   ACE    | |   Authorization Response  |    |                     |
framework | |<--------------------------|    |                     |
          | |                                |                     |
          \ |---------- Token Post --------->|                     |
            |                                |                     |
            |------- Joining Request ------->|                     |
            |                                |                     |
            |<------ Joining Response -------|-- Group Rekeying -->|
            |                                |                     |
            |                                     Dispatcher       |
            |                                         |            |
            |<===== Secure group communication =======|===========>|
            |                                         |            |
]]></artwork>
      </figure>
      <t>The exchange of Authorization Request and Authorization Response between Client and AS MUST be secured, as specified by the transport profile of ACE used between Client and KDC.</t>
      <t>The exchange of Joining Request and Joining Response between Client and KDC MUST be secured, as a result of the transport profile of ACE used between Client and KDC.</t>
      <t>All further communications between the Client and the KDC MUST be secured, for instance with the same security mechanism used for the Key Distribution exchange.</t>
      <t>All communications between a Client and the other group members MUST be secured using the keying material provided in <xref target="key-distr" format="default"/>.</t>
    </section>
    <section anchor="sec-auth" numbered="true" toc="default">
      <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 group. This exchange is based on ACE <xref target="I-D.ietf-ace-oauth-authz" format="default"/>.</t>
      <t>As defined in <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, the Client requests from the AS an authorization to join the group through the KDC (see <xref target="ssec-authorization-request" format="default"/>). 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" format="default"/>).</t>
      <t>Communications between the Client and the AS MUST be secured, as defined by the transport profile of ACE used. The Content-Format used in the messages is the one specified by the used transport profile of ACE (e.g. application/ace+cbor for the first two messages and application/cwt for the third message, depending on the format of the access token). 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="I-D.ietf-ace-oauth-authz" format="default"/>).</t>
      <t><xref target="fig-group-member-registration" format="default"/> 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" name="" type="" alt=""><![CDATA[
Client                                            AS  KDC
   |                                               |   |
   |---- Authorization Request: POST /token ------>|   |
   |                                               |   |
   |<--- Authorization Response: 2.01 (Created) ---|   |
   |                                               |   |
   |----- POST Token: POST /authz-info --------------->|
   |                                                   |
]]></artwork>
      </figure>
      <!-- Peter 30-07: It would be nice if here the use of DTLS (or not) and the content format is specified: application/cbor or application/Cose+cbor

[MT] This should be out of scope, as actually per the specific ACE profile in use.
-->

<section anchor="ssec-authorization-request" numbered="true" toc="default">
        <name>Authorization Request</name>
        <t>The Authorization Request sent from the Client to the AS is as defined in Section 5.6.1 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/> and MAY contain the following parameters, which, if included, MUST have the corresponding values:</t>
        <ul spacing="normal">
          <li>
            <t>'scope', containing the identifier of the specific group(s), or topic(s) in the case of pub-sub, that the Client wishes to access, and optionally the role(s) that the Client wishes to take.  </t>
            <t>
This value is a CBOR byte string, encoding a CBOR array of one or more  entries.  </t>
            <t>
An entry has as value a CBOR array, which contains:  </t>
            <ul spacing="normal">
              <li>As first element, the identifier of the specific group or topic.</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 to 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>
In each entry, the encoding of the group or topic identifier (REQ1) and of the role identifiers (REQ2) is application specific, and part of the requirements for the application profile.  </t>
            <t>
In particular, the application profile may specify CBOR values to use for abbreviating role identifiers (OPT7).  </t>
            <t>
The CDDL definition of scope, using as example group identifier encoded as byte string and role identifier as text string, is given in <xref target="cddl-ex" format="default"/>.</t>
          </li>
          <li>'audience', with an identifier of a KDC.</li>
          <li>'req_cnf', as defined in Section 3.1 of <xref target="I-D.ietf-ace-oauth-params" format="default"/>, optionally containing the public key or a reference to the public key of the Client, if it wishes to communicate that to the AS.</li>
        </ul>
        <!--
Peter 30-07: Question: is this a certificate identifier, or the public key extracted from the certificate, or a hash?????

Marco: It is just as per ACE. See Sections 3.2 and 3.4 of draft-ietf-ace-cwt-proof-of-possession-03
-->

<ul spacing="normal">
          <li>Other additional parameters as defined in <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, if necessary.</li>
        </ul>
        <!--
Marco 27-02: "scope" should include a list of identifiers. One can ask authorization for joining multiple groups in a single Authorization Request, so getting a single Access Token.

Jim 13-07: Section 3.1 - Can I get authorization for multiple items at a single time?

FP: Is this something we really want to cover? I think this could open up to a number of comments and questions (how do you renew keying material for just one of these res, for example). Let's think a bit more about this.
-->

<!-- Jim 13-07: Section 3.1 - Does it make sense to allow for multiple audiences to be on a single KDC?

Marco: In principle yes, if you consider a logical audience as the GM/Broker at a single physical KDC.

Should we discuss this in the draft?
-->

<t>As in <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, these parameters are included in the payload, which is formatted as a CBOR map. The Content-Format "application/ace+cbor" defined in Section 8.14 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/> is used.</t>
        <figure anchor="cddl-ex">
          <name>CDLL definition of scope, using as example group identifier encoded as bstr and role as tstr</name>
          <artwork type="CDDL" align="center" name="" alt=""><![CDATA[
gid = bstr

role = tstr

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

scope = << [ + scope_entry ] >>
]]></artwork>
        </figure>
      </section>
      <section anchor="ssec-authorization-response" numbered="true" toc="default">
        <name>Authorization Response</name>
        <t>The Authorization Response sent from the AS to the Client is as defined in Section 5.6.2 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/> and MUST contain the following parameters:</t>
        <ul spacing="normal">
          <li>'access_token', containing the proof-of-possession access token.</li>
          <li>'cnf' if symmetric keys are used, not present if asymmetric keys are used. This parameter is defined in Section 3.2 of <xref target="I-D.ietf-ace-oauth-params" format="default"/> and contains the symmetric proof-of-possession key that the Client is supposed to use with the KDC.</li>
          <li>'rs_cnf' if asymmetric keys are used, not present if symmetric keys are used. This parameter is as defined in Section 3.2 of <xref target="I-D.ietf-ace-oauth-params" format="default"/> and contains information about the public key of the KDC.</li>
          <li>'expires_in', contains the lifetime in seconds of the access token. This parameter 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.</li>
        </ul>
        <t>Additionally, the Authorization Response MAY contain the following parameters, which, if included, MUST have the corresponding values:</t>
        <ul spacing="normal">
          <li>'scope' containing the granted scope, if different from the scope requested by the client. This parameter has the same format and encoding of 'scope' in the Authorization Request, defined in <xref target="ssec-authorization-request" format="default"/>.</li>
          <li>Other additional parameters as defined in <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, if necessary.</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 Section 3.1 of <xref target="RFC8747" format="default"/> for CWT);</li>
          <li>an expiration time claim (see for example 'exp' defined in Section 3.1.4 of <xref target="RFC8392" format="default"/> for CWT);</li>
          <li>a scope claim (see for example 'scope' registered in Section 8.13 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/> for CWT). This claim has the same encoding as 'scope' parameter above. Additionally, this claim has the same value of the 'scope' parameter if the parameter is present in the message, or it takes the value of 'scope' in the Authorization Request otherwise.</li>
        </ul>
        <t>The access token MAY additionally contain other claims that the transport profile of ACE requires, or other optional parameters.</t>
        <t>As in <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, these parameters are included in the payload, which is formatted as a CBOR map. The Content-Format "application/ace+cbor" is used.</t>
        <t>When receiving an Authorization Request from a Client that was previously authorized, and for which the AS still owns 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="I-D.ietf-ace-oscore-profile" format="default"/>).</t>
      </section>
      <section anchor="token-post" numbered="true" toc="default">
        <name>Token Post</name>
        <t>The Client sends a CoAP POST request including the access token to the KDC, as specified in Section 5.8.1 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>. If the specific transport profile of ACE defines it, the Client MAY use a different endpoint than /authz-info at the KDC to post the access token to.</t>
        <t>Optionally, the Client might want to request necessary information concerning the public keys in the group, as well as concerning the algorithm and related parameters for computing signatures in the group. In such a case, the joining node MAY ask for that information to the KDC in this same request. To this end, it sends the CoAP POST request to the /authz-info endpoint using the Content-Format "application/ace+cbor". The payload of the message MUST be formatted as a CBOR map, including the access token and the following parameters:</t>
        <ul spacing="normal">
          <li>'sign_info' defined in <xref target="sign-info" format="default"/>.</li>
          <li>'pub_key_enc' defined in <xref target="pub-key-enc" format="default"/>, encoding the CBOR simple value Null, to require information on the exact encoding of public keys used in the group.</li>
        </ul>
        <t>Alternatively, the joining node may retrieve this information by other means.</t>
        <t>After successful verification, the Client is authorized to receive the group keying material from the KDC and join the group. In particular, the KDC replies to the Client with a 2.01 (Created) response, using Content-Format "application/ace+cbor" defined in Section 8.14 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>.</t>
        <t>The payload of the 2.01 response is a CBOR map. If the access token contains a role that requires the Client to send its own public key to the KDC when joining the group, the CBOR map MUST include the parameter 'kdcchallenge' defined in Section <xref target="kdcchallenge" format="default"/>, specifying a dedicated challenge N_S generated by the KDC. The Client uses this challenge to prove possession of its own private key (see the 'client_cred_verify' parameter in <xref target="key-distr" format="default"/>). Note that the payload format of the response deviates from the default as defined in the ACE framework (see Section 5.8.1 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>).</t>
        <t>The KDC MUST store the 'kdcchallenge' value associated to the Client at least until it receives a join request from it (see <xref target="ssec-key-distribution-exchange" format="default"/>), to be able to verify the proof of possession. The same challenge MAY be reused several times by the Client, to generate new proof of possessions, e.g. in case of update of the public key, or to join a different group with a different key, so it is RECOMMENDED that the KDC keeps storing the 'kdcchallenge' after the first join is processed as well. If the KDC has already discarded the 'kdcchallenge', that will trigger an error response with a newly generated 'kdcchallenge' that the client can use to restart the join process, as specified in <xref target="ssec-key-distribution-exchange" format="default"/>.</t>
        <t>If either of 'sign_info' or 'pub_key_enc' were included in the request, the KDC MAY include the 'sign_info' parameter defined in <xref target="sign-info" format="default"/>, optionally including the 'pub_key_enc' parameter <xref target="pub-key-enc" format="default"/>.</t>
        <t>The 'sign_info' parameter MUST be present if the POST request included the 'sign_info' parameter and/or the pub_key_enc with value Null.
The encoding of the 'sign_info' parameter in the response is defined in <xref target="pub-key-enc" format="default"/>. Note that the field 'id' takes the value of the group identifier for which the 'sign_info' applies to, in this specification.</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 signalled transport profile of ACE.</t>
        <t>Applications of this specification MAY define alternative specific negotiations of parameter values for signature algorithm and signature keys, if 'sign_info' and 'pub_key_enc' are not used (OPT2).</t>
        <!--
Note that this step could be merged with the following message from the Client to the KDC, namely Key Distribution Request.
-->

<section anchor="sign-info" numbered="true" toc="default">
          <name>'sign_info' Parameter</name>
          <t>The 'sign_info' parameter is an OPTIONAL parameter of the AS Request Creation Hints message defined in Section 5.1.2. of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>. This parameter contains information and parameters about the signature algorithm and the public keys to be used between the Client and the RS. Its exact content is application specific.</t>
          <t>In this specification and in application profiles building on it, this parameter is used to ask and retrieve from the KDC information about the signature algorithm and related parameters used in the group.</t>
          <t>When used in the request, the 'sign_info' encodes the CBOR simple value Null, to require information and parameters on the signature algorithm and on the public keys used.</t>
          <t>The CDDL notation of the 'sign_info' parameter formatted as in the request is given below.</t>
          <artwork type="CDDL" name="" align="left" alt=""><![CDATA[
   sign_info_req = nil
]]></artwork>
          <t>The 'sign_info' parameter of the 2.01 (Created) response is a CBOR array of one ore more elements. The number of elements is lower or at most equal to the number of groups the client has been authorized to join. Each element contains information about signing parameters and keys for one or more group or topic and is formatted as follows.</t>
          <ul spacing="normal">
            <li>The first element 'id' is an identifier of the group or an array of identifiers for the groups for which this information applies.</li>
            <li>The second element 'sign_alg' is an integer or a text string if the POST request included the 'sing_info' parameter with value Null, and indicates the signature algorithm used in the group identified by 'gid'. 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 defined in <xref target="RFC8152" format="default"/>. If the POST request did not include the 'sing_info' parameter, this element is encoded as the CBOR simple value Null.</li>
            <li>The third element 'sign_parameters' indicates the parameters of the signature algorithm. Its structure depends on the value of 'sign_alg'. It is REQUIRED of the application profiles to define specific values for this parameter (REQ4). If no parameters of the signature algorithm are specified, 'sign_parameters' MUST be encoded as the CBOR simple value Null. If the POST request did not include the 'sing_info' parameter, this element is encoded as the CBOR simple value Null.</li>
            <li>The fourth element 'sign_key_parameters' indicates the parameters of the key used with the signature algorithm. Its structure depends on the value of 'sign_alg'. It is REQUIRED of the application profiles to define specific values for this parameter (REQ5). If no parameters of the key used with the signature algorithm are specified, 'sign_key_parameters' MUST be encoded as the CBOR simple value Null. If the POST request did not include the 'sing_info' parameter, this element is encoded as the CBOR simple value Null.</li>
            <li>The fifth element 'pub_key_enc' parameter is optional and MUST only be present if the POST request included the 'pub_key_enc' parameter with value Null. If present, it is either a CBOR integer indicating the encoding of public keys used in the group identified by 'gid', or has value Null indicating that the KDC does not act as repository of public keys for group members. Its acceptable values are taken from the "CWT Confirmation Method" Registry defined in <xref target="I-D.ietf-ace-cwt-proof-of-possession" format="default"/>. It is REQUIRED of the application profiles to define specific values to use for this parameter (REQ6).</li>
          </ul>
          <t>The CDDL notation of the 'sign_info' parameter formatted as in the response is given below, with gid formatted as a bstr (note that gid can be encoded differently, see REQ1).</t>
          <artwork type="CDDL" name="" align="left" alt=""><![CDATA[
   sign_info_res = [ + sign_info_entry ]

   sign_info_entry =
   [
     id : gid / [ + gid ],
     sign_alg : int / tstr / nil,
     sign_parameters : any / nil,
     sign_key_parameters : any / nil,
     ? pub_key_enc_res = int / nil
   ]

   gid = bstr
]]></artwork>
        </section>
        <section anchor="pub-key-enc" numbered="true" toc="default">
          <name>'pub_key_enc' Parameter</name>
          <t>The 'pub_key_enc' parameter is an OPTIONAL parameter of the AS Request Creation Hints message defined in Section 5.1.2. of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>. This parameter contains information about the exact encoding of public keys to be used between the Client and the RS. Its exact content is application specific.</t>
          <t>In this specification and in application profiles building on it, this parameter is used to ask the KDC information about the encoding of public keys used in the group.</t>
          <t>The CDDL notation of the 'pub_key_enc' parameter formatted as in the request is given below.</t>
          <artwork type="CDDL" name="" align="left" alt=""><![CDATA[
   pub_key_enc_req = nil
]]></artwork>
        </section>
        <section anchor="kdcchallenge" numbered="true" toc="default">
          <name>'kdcchallenge' Parameter</name>
          <t>The 'kdcchallenge' parameter is an OPTIONAL parameter of the AS Request Creation Hints message defined in Section 5.1.2. of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>. This parameter contains a challenge generated by the KDC and provided to the Client. The Client may use this challenge to prove possession of its own private key in the Joining Request ((see the 'client_cred_verify' parameter in <xref target="key-distr" format="default"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="key-distr" numbered="true" toc="default">
      <name>Keying Material Provisioning and Group Membership Management</name>
      <t>This section defines the interface available at the KDC. Moreover, this section specifies how the clients can use this interface to join a group, leave a group, retrieve new keying material or policies.</t>
      <t>During the first exchange with the KDC ("Joining"), the Client sends a request to the KDC, specifying the group it wishes to join (see <xref target="ssec-key-distribution-exchange" format="default"/>). Then, the KDC verifies the access token and that the Client is authorized to join that group. If so, it provides the Client with the keying material to securely communicate with the other members of the group. Whenever used, the Content-Format in messages containing a payload is set to application/ace-groupcomm+cbor, as defined in <xref target="content-type" format="default"/>.</t>
      <!-- Jim 13-07: Should one talk about the ability to use OBSERVE as part of
key distribution?

Marco: It was just briefly mentioned before and not really elaborated. Although it would work, it seems not useful to have it together with a proper rekeying scheme where the KDC takes the initiative anyway. This would result in much more network traffic and epoch-synchronization.
-->

<!-- Jim 13-07: Section 4.x - I am having a hard time trying to figure out the difference between a group and a topic.  The text does not always seem to distinguish these well.

Marco: We could just go for "group", as a collection of devices sharing the same keyign material (i.e. a security group). Then a group can be mapped to a topic of common interest for its members, such as in a pub-sub environment.
-->

<t>When the Client is already a group member, the Client can use the interface at the KDC to perform the following actions:</t>
      <ul spacing="normal">
        <li>The Client can (re-)get the current keying material, for cases such as expiration, loss or suspected mismatch, due to e.g. reboot or missed group rekeying. This is described in <xref target="update-keys" format="default"/>.</li>
        <li>The Client can retrieve a new individual key, or new input material to derive it. This is described in <xref target="new-keys" format="default"/>.</li>
        <li>The Client can (re-)get the public keys of other group members, e.g. if it is aware of new nodes joining the group after itself. This is described in <xref target="sec-key-retrieval" format="default"/>.</li>
        <li>The Client can (re-)get the policies currently enforced in the group. This is described in <xref target="policies" format="default"/>.</li>
        <li>The Client can (re-)get the version number of the keying material currently used in the group. This is described in <xref target="key-version" format="default"/>.</li>
        <li>The Client can request to leave the group. This is further discussed in <xref target="ssec-group-leaving" format="default"/>.</li>
      </ul>
      <!--
  Jim 14-06: Discuss that a Key Distribution Request/Response can be performed exactly in the same way also by an already member of the group. Mention the cases when this happens, e.g. believed lost of synchronization with the current group security context, crash and reboot and so on, so forced re-synchronization with the correct current security context.

  TODO: Add a general description on when the following msgs are used:
    - join new nodes
    - member for rekeying (triggered by KDC)
    - member after they forgot (crash)
-->

<!-- Jim 13-07: Section 4.x  - cnf - text does not allow for key identifier

Marco: In Section 4.2, we are indicating the key identifier in the optional 'kid' parameter of the COSE Key.
-->

<!-- Jim 13-07: Section X.X - Define a new cnf method to hold the OSCORE context parameters - should it be a normal COSE_Key or something new just to makes sure that it is different.

Marco: Isn't it ok as we are doing with the COSE Key in Section 4.2? Then it works quite fine in ace-oscoap-joining when considering the particular joining of OSCORE groups.
-->

<t>Upon receiving a request from a Client, the KDC MUST check that it is storing a valid access token from that Client for the group identifier assiciated to the endpoint. If that is not the case, i.e. the KDC does not store a valid access token or this is not valid for that Client for the group identifier at hand, the KDC MUST respond to the Client with a 4.01 (Unauthorized) error message.</t>
      <section anchor="interface-at-the-kdc" numbered="true" toc="default">
        <name>Interface at the KDC</name>
        <t>The KDC is configured with the following resources. Note that the root url-path "ace-group" given here are default names: implementations are not required to use these names, and can define their own instead. The Interface Description (if=) Link Target Attribute value ace-group is registered (<xref target="if-ace-group" format="default"/>) and can be used to describe this inferface.</t>
        <ul spacing="normal">
          <li>/ace-group : this resource is fixed and indicates that this specification is used. Other applications that run on a KDC implementing this specification MUST NOT use this same resource.</li>
          <li>/ace-group/GROUPNAME : one sub-resource to /ace-group is implemented for each group the KDC manages. These resources are identified by the group identifiers of the groups the KDC manages (in this example, the group identifier has value "GROUPNAME"). These resources support GET and POST method.</li>
          <li>/ace-group/GROUPNAME/pub-key : this sub-resource is fixed and supports GET and FETCH methods.</li>
          <li>/ace-group/GROUPNAME/policies: this sub-resource is fixed and supports the GET method.</li>
          <li>/ace-group/GROUPNAME/ctx-num: this sub-resource is fixed and supports the GET method.</li>
          <li>/ace-group/GROUPNAME/nodes/NODENAME: one sub-resource to /ace-group/GROUPNAME is implemented for each node in the group the KDC manages. These resources are identified by the node name (in this example, the node name has value "NODENAME"). These resources support GET, PUT and DELETE methods.</li>
          <li>/ace-group/GROUPNAME/nodes/NODENAME/pub-key: one sub-resource to /ace-group/GROUPNAME/nodes/NODENAME is implemented for each node in the group the KDC manages. These resources are identified by the node name (in this example, the node name has value "NODENAME"). These resources support the POST method.</li>
        </ul>
        <t>The details for the handlers of each resource are given in the following sections. These endpoints are used to perform the operations introduced in <xref target="key-distr" format="default"/>.</t>
        <section anchor="ace-group" numbered="true" toc="default">
          <name>ace-group</name>
          <t>No handlers are implemented for this resource.</t>
        </section>
        <section anchor="ace-groupgroupname" numbered="true" toc="default">
          <name>ace-group/GROUPNAME</name>
          <t>This resource implements GET and POST handlers.</t>
          <section anchor="gid-post" numbered="true" toc="default">
            <name>POST Handler</name>
            <t>The POST handler adds the public key of the client to the list of the group members' public keys 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 the corresponding values:</t>
            <ul spacing="normal">
              <li>'scope', with value the specific resource that the Client is authorized to access, i.e. group or topic identifier, and role(s). This value is a CBOR byte string encoding one scope entry, as defined in <xref target="ssec-authorization-request" format="default"/>.</li>
              <li>'get_pub_keys', if the Client wishes to receive the public keys of the other nodes in the group from the KDC. The value is an empty CBOR array. This parameter may be present if the KDC stores the public keys of the nodes in the group and distributes them to the Client; it is useless to have here if the set of public keys of the members of the group is known in another way, e.g. it was provided by the AS.</li>
              <li>'client_cred', with value the public key or certificate of the Client, encoded as a CBOR byte string. This field contains the public key of the Client. This field is used if the KDC is managing (collecting from/distributing to the Client) the public keys of the group members, and if the Client's role in the group will require for it to send messages to the group. The default encoding for public keys is COSE Keys. Alternative specific encodings of this parameter MAY be defined in applications of this specification (OPT1).</li>
              <li>'cnonce', with the same encoding as defined for the "cnonce" parameter of Ace, in Section 5.1.2 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>, and including a dedicated nonce N_C generated by the Client. This parameter MUST be present if the 'client_cred' parameter is 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 public key associated to the client's token can be retrieved for that group. This parameter contains a signature computed by the Client over the scope concatenated with N_S concatenated with N_C, where:  </t>
                <ul spacing="normal">
                  <li>scope is the byte string specified in the 'scope parameter above'.</li>
                  <li>N_S is the challenge received from the KDC in the 'kdcchallenge' parameter of the 2.01 (Created) response to the token POST request (see <xref target="token-post" format="default"/>).</li>
                  <li>N_C is the nonce generated by the Client and specified in the 'cnonce' parameter above.</li>
                </ul>
              </li>
            </ul>
            <t>If the token is not being posted (e.g. if it is used directly to validate TLS instead), it is REQUIRED of the specific profile to define how the challenge N_S is generated (REQ17). The Client computes the signature by using its own private key, whose corresponding public key is either directly specified in the 'client_cred' parameter or included in the certificate specified in the 'client_cred' parameter.</t>
            <ul spacing="normal">
              <li>'pub_keys_repos', can be present if a certificate is present in the 'client_cred' field, with value the URI of the certificate of the Client. This parameter is encoded as a CBOR text string. Alternative specific encodings of this parameter MAY be defined in applications of this specification (OPT3).</li>
              <li>'control_path', with value a full URI, encoded as a CBOR text string. If 'control_path' is supported by the Client, 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 individual provisioning of new keying material when performing a group rekeying (see <xref target="update-keys" format="default"/>), or to inform the Client of its removal from the group <xref target="sec-node-removal" format="default"/>. If the KDC does not implement mechanisms using this resource, it can just ignore this parameter. Other additional functionalities of this resource MAY be defined in application profiles of this specifications (OPT9). In particular, this resource is intended for communications concerning exclusively the group or topic specified in the 'scope' parameter.</li>
            </ul>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message. The KDC MAY set the payload with the 'sign_info' and 'pub_key_enc' parameter, formatted as 'sign_info_res' and 'pub_key_enc_res' in the payload of the 2.01 (Created) response to the Token Post as defined in <xref target="token-post" format="default"/>. Note that in this case, the content format MUST be set to application/ace+cbor.</t>
            <t>If the request is not formatted correctly (e.g. unknown, not-expected fields present, or expected fields with incorrect format), the handler MUST respond with a 4.00 (Bad Request) error message. The response MAY contain a CBOR map in the payload with ace+cbor format, e.g. it could send back "pub_key_enc" set to Null if the Client sent its own public key and the KDC is not set to store public keys of the group members. Application profiles MAY define optional or mandatory payload formats for specific error cases (OPT6).</t>
            <t>If the KDC stores the group members' public keys, the handler checks if one public key is already associated to the access token received (see <xref target="ssec-key-distribution-exchange" format="default"/> for an example) and to the group identified by "GROUPNAME". If that is not the case, it retrieves it from the 'client_cred' field and associates it to the access token received, after verifications succed. In particular, the KDC verifies:</t>
            <ul spacing="normal">
              <li>that such public key has an acceptable format for the group identified by "GROUPNAME", i.e. it is encoded as expected and is compatible with the signature algorithm and possible associated parameters. If that cannot be verified, it is RECOMMENDED that the handler stops the process and responds with a 4.00 (Bad Request) error message. Applications profiles MAY define alternatives (OPT5).</li>
              <li>that the signature contained in "client_cred_verify" passes verification. If that cannot be verified, the handler MUST respond with a 4.00 (Bad Request) error message, and if the token was posted (see REQ17) including the 'kdcchallenge' associated to this Client (see <xref target="token-post" format="default"/>) if it can be retrieved, or otherwise newly generated, in a CBOR map in the payload. This error response MUST also have Content-Format "application/ace+cbor".</li>
            </ul>
            <t>If one public key is already associated to the access token and to that group, but the 'client_cred' is populated with a different public key, the handler MUST delete the previous one and replace it with this one, after verifying the points above.</t>
            <t>If the token was posted but the KDC cannot retrieve the 'kdcchallenge' associated to this Client (see <xref target="token-post" format="default"/>), the KDC MUST respond with a 4.00 Bad Request error response, including a newly generated 'kdcchallenge' in a CBOR map in the payload. This error response MUST also have Content-Format "application/ace+cbor".</t>
            <t>If all verifications succeed, the handler:</t>
            <ul spacing="normal">
              <li>Adds the node to the list of current members of the group.</li>
              <li>Assigns a name NODENAME to the node, and creates a sub-resource to /ace-group/GROUPNAME/ at the KDC (e.g. "/ace-group/GROUPNAME/nodes/NODENAME").</li>
              <li>Associates the identifier "NODENAME" with the access token and the secure session for that node.</li>
              <li>
                <t>If the KDC manages public keys for group members:
                </t>
                <ul spacing="normal">
                  <li>Adds the retrieved public key of the node to the list of public keys stored for the group identified by "GROUPNAME"</li>
                  <li>Associates the node's public key with its access token and the group identified by "GROUPNAME", if such association did not already exist.</li>
                </ul>
              </li>
              <li>Returns a 2.01 (Created) message containing the symmetric group keying material, the group policies and all the public keys of the current members of the group, if the KDC manages those and the Client requested them.</li>
            </ul>
            <t>The response message also contains the URI path to the sub-resource created for that node in a Location-Path CoAP option. 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" Registry. Implementations MUST verify that the key type matches the application profile being used, if present, as registered in the "ACE Groupcomm Key" 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. The initial version MUST be set to 0 at the KDC. This is a strictly monotonic increasing field.</li>
            </ul>
            <t>The exact format of the 'key' value MUST be defined in applications of this specification (REQ7), as well as accepted values of 'gkty' by the application (REQ8). Additionally, documents specifying the key format MUST register it in the "ACE Groupcomm Key" registry defined in <xref target="iana-key" format="default"/>, including its name, type and application profile to be used with.</t>
            <figure anchor="gkty">
              <name>Key Type Values</name>
              <artwork align="center" name="" type="" alt=""><![CDATA[
+----------+----------------+---------+-------------------------+
| Name     | Key Type Value | Profile | Description             |
+----------+----------------+---------+-------------------------+
| Reserved | 0              |         | This value is reserved  |
+----------+----------------+---------+-------------------------+
]]></artwork>
            </figure>
            <!-- FP Im confused why do we say this "The response MAY contain which if included MUST..." twice -->

<t>Optionally, the response MAY contain the following parameters, which, if included, MUST have the corresponding values:</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 Profile" Registry (REQ12).</li>
              <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 specified for NumericDate in Section 2 of <xref target="RFC7519" format="default"/>. Group members MUST stop using the keying material to protect outgoing messages and retrieve new keying material at the time indicated in this field.</li>
              <li>'exp_delta', with value the time interval (starting at 'exp') during which the keying material for the group communication can still be used for verifying incoming messages, encoded as a CBOR unsigned integer. This field contains a numeric value representing the number of seconds from 'exp' until the specified UTC date/time after which group members MUST stop using the keying material to verify incoming messages.</li>
              <li>'pub_keys', may only be present if 'get_pub_keys' was present in the request. This parameter is a CBOR byte string, which encodes the public keys of all the group members paired with the respective member identifiers. The default encoding for public keys is COSE Keys, so the default encoding for 'pub_keys' is a CBOR byte string wrapping a COSE_KeySet (see <xref target="RFC8152" format="default"/>), which contains the public keys of all the members of the group. In particular, each COSE Key in the COSE_KeySet includes the identifier of the corresponding group member as value of its 'kid' key parameter. Alternative specific encodings of this parameter MAY be defined in applications of this specification (OPT1). The specific format of the identifiers of group members MUST be specified in the application profile (REQ9).</li>
              <li>'peer_roles', MUST be present if 'pub_keys' is present. This parameter is a CBOR array of n elements, with n the number of members in the group (and number of public keys included in the 'pub_keys' parameter). The i-th element of the array specifies the role (or CBOR array of roles) that the group member associated to the i-th public key in 'pub_keys' 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" format="default"/>.</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 Policy" Registry. This specification defines the two elements "Sequence Number Synchronization Method" and "Key Update Check Interval", which are summarized in <xref target="fig-ACE-Groupcomm-Policies" format="default"/>. Application profiles that build on this document MUST specify the exact content format of included map entries (REQ14).</li>
            </ul>
            <figure anchor="fig-ACE-Groupcomm-Policies">
              <name>ACE Groupcomm Policies</name>
              <artwork align="center" name="" type="" alt=""><![CDATA[
+--------------+-------+----------|--------------------|------------+
|      Name    | CBOR  |   CBOR   |    Description     | Reference  |
|              | label |   type   |                    |            |
|--------------+-------+----------|--------------------|------------|
| Sequence     | TBD1  | tstr/int | Method for a re-   | [[this     |
| Number       |       |          | cipient node to    | document]] |
| Synchroniza- |       |          | synchronize with   |            |
| tion Method  |       |          | sequence numbers   |            |
|              |       |          | of a sender node.  |            |
|              |       |          | Its value is taken |            |
|              |       |          | from the 'Value'   |            |
|              |       |          | column of the      |            |
|              |       |          | Sequence Number    |            |
|              |       |          | Synchronization    |            |
|              |       |          | Method registry    |            |
|              |       |          |                    |            |
| Key Update   | TBD2  |   int    | Polling interval   | [[this     |
| Check        |       |          | in seconds, to     | document]] |
| Interval     |       |          | check for new      |            |
|              |       |          | keying material at |            |
|              |       |          | the KDC            |            |
+--------------+-------+----------|--------------------|------------+
]]></artwork>
            </figure>
            <ul spacing="normal">
              <li>'mgt_key_material', encoded as a CBOR byte string and containing the administrative keying material to participate in the group rekeying performed by the KDC. The application profile MUST define if this field is used, and if used then MUST specify the exact format and content which depend on the specific rekeying scheme used in the group. If the usage of 'mgt_key_material' is indicated and its format defined for a specific key management scheme, that format must explicitly indicate the key management scheme itself. If a new rekeying scheme is defined to be used for an existing 'mgt_key_material' in an existing profile, then that profile will have to be updated accordingly, especially with respect to the usage of 'mgt_key_material' related format and content (REQ18).</li>
            </ul>
            <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 (REQ10) and how exactly the keying material is used to protect the group communication (REQ11).</t>
            <t>CBOR labels for these fields are defined in <xref target="params" format="default"/>.</t>
          </section>
          <section anchor="gid-get" numbered="true" toc="default">
            <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>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message. The KDC MAY set the payload with the 'sign_info' and 'pub_key_enc' parameter, formatted as 'sign_info_res' and 'pub_key_enc_res' in the payload of the 2.01 (Created) response to the Token Post as defined in <xref target="token-post" format="default"/>. Note that in this case, the content format MUST be set to application/ace+cbor.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, the handler returns a 2.05 (Content) message 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" format="default"/>.</t>
            <t>The payload MAY also include the parameters 'ace-groupcomm-profile', 'exp', 'exp_delta' and 'mgt_key_material' parameters specified in <xref target="gid-post" format="default"/>.</t>
          </section>
        </section>
        <section anchor="ace-groupgroupnamepub-key" numbered="true" toc="default">
          <name>ace-group/GROUPNAME/pub-key</name>
          <t>This resource implements GET and FETCH handlers.</t>
          <section anchor="pubkey-fetch" numbered="true" toc="default">
            <name>FETCH Handler</name>
            <t>The FETCH handler receives identifiers of group members for the group identified by "GROUPNAME" and returns the public keys of such group members.</t>
            <t>The handler expects a request with payload formatted as a CBOR map. The payload of this request is a CBOR Map that MUST contain the following fields:</t>
            <ul spacing="normal">
              <li>
                <t>'get_pub_keys', whose value is a non-empty CBOR array containing two CBOR arrays:  </t>
                <ul spacing="normal">
                  <li>The first array contains zero or more roles (or combination of roles) of group members for the group identified by "GROUPNAME".</li>
                  <li>The second array contains zero or more identifiers of group members for the group identified by "GROUPNAME".</li>
                </ul>
              </li>
            </ul>
            <t>The CDDL definition of 'get_pub_keys' is given in <xref target="cddl-ex-getpubkeys" format="default"/> using as example encoding: node identifier encoded as byte string, role identifier as text string, and combination of roles encoded as a CBOR array of roles. Note that the empty array is not valid for this handler, but is valid for the value of "get_pub_keys" received by the handler of POST to ace-group/GROUPNAME (see <xref target="gid-post" format="default"/>).</t>
            <figure anchor="cddl-ex-getpubkeys">
              <name>CDLL definition of get_pub_keys, using as example node identifier encoded as bstr and role as tstr</name>
              <artwork type="CDDL" align="center" name="" alt=""><![CDATA[
id = bstr

role = tstr

comb_role = [ 2*role ]

get_pub_keys = [ [ *(role / comb_role) ], [ *id ] ] / [ ]
]]></artwork>
            </figure>
            <t>The specific format of public keys as well as identifiers, roles and combination of roles of group members MUST be specified by the application profile (OPT1, REQ2, REQ9).</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>If verification succeeds, the handler identifies the public keys of the current group members for which either:
  - the role identifier matches with one of those indicated in the request (including the exact combination of roles requested), or
  - the identifier matches with one of those indicated in the request.</t>
            <t>Then, the handler returns a 2.05 (Content) message response with payload formatted as a CBOR map, containing only the 'pub_keys' and 'peer_roles' parameters from <xref target="gid-post" format="default"/>. In particular, 'pub_keys' encodes the list of public keys of those group members including the respective member identifiers, while 'peer_roles' encodes their respective role (or CBOR array of roles) in the group.</t>
            <t>If the KDC does not store any public key associated with the specified member identifiers, the handler returns a response with payload formatted as a CBOR byte string of zero length. The specific format of public keys as well as of identifiers of group members is specified by the application profile (OPT1, REQ9).</t>
            <t>The handler MAY enforce one of the following policies, in order to handle possible identifiers that are included in the 'get_pub_keys' parameter of the request but are not associated to any current group member. Such a policy MUST be specified by the application profile (REQ13)</t>
            <ul spacing="normal">
              <li>The KDC silently ignores those identifiers.</li>
              <li>The KDC retains public keys of group members for a given amount of time after their leaving, before discarding them. As long as such public keys are retained, the KDC provides them to a requesting Client.</li>
            </ul>
            <t>Note that this resource handlers only verify 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>
          <section anchor="pubkey-get" numbered="true" toc="default">
            <name>GET Handler</name>
            <t>The handler expects a GET request.</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>If verification succeeds, the handler returns a 2.05 (Content) message containing the public keys of all the current group members, for the group identified by "GROUPNAME". The payload of the response is formatted as a CBOR map, containing only the 'pub_keys' and 'peer_roles' parameters from <xref target="gid-post" format="default"/>. In particular, 'pub_keys' encodes the list of public keys of those group members including the respective member identifiers, while 'peer_roles' encodes their respective role (or CBOR array of roles) in the group.</t>
            <t>If the KDC does not store any public key for the group, the handler returns a response with payload formatted as a CBOR byte string of zero length. The specific format of public keys as well as of identifiers of group members is specified by the application profile (OPT1, REQ9).</t>
            <t>Note that this resource handlers only verify 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>
        </section>
        <section anchor="ace-groupgroupnamepolicies" numbered="true" toc="default">
          <name>ace-group/GROUPNAME/policies</name>
          <t>This resource implements a GET handler.</t>
          <section anchor="policies-get" numbered="true" toc="default">
            <name>GET Handler</name>
            <t>The handler expects a GET request.</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, the handler returns a 2.05 (Content) message 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" format="default"/> 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 (REQ14).</t>
          </section>
        </section>
        <section anchor="ace-groupgroupnamectx-num" numbered="true" toc="default">
          <name>ace-group/GROUPNAME/ctx-num</name>
          <t>This resource implements a GET handler.</t>
          <section anchor="num-get" numbered="true" toc="default">
            <name>GET Handler</name>
            <t>The handler expects a GET request.</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, 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. The payload of the response is formatted as a CBOR integer.</t>
          </section>
        </section>
        <section anchor="ace-groupgroupnamenodesnodename" numbered="true" toc="default">
          <name>ace-group/GROUPNAME/nodes/NODENAME</name>
          <t>This resource implements GET, PUT and DELETE handlers.</t>
          <section anchor="node-put" numbered="true" toc="default">
            <name>PUT Handler</name>
            <t>The PUT handler is used to get the KDC to produce and return individual keying material to protect outgoing messages for the node (identified by "NODENAME") for the group identified by "GROUPNAME".</t>
            <t>The handler expects a request with empty payload.</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client, identified by "NODENAME". If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, the handler returns a 2.05 (Content) message containing newly-generated 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 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 (REQ15) and registered in <xref target="iana-reg" format="default"/>.</t>
          </section>
          <section anchor="node-get" numbered="true" toc="default">
            <name>GET Handler</name>
            <t>The handler expects a GET request.</t>
            <t>The handler verifies that the group identifier of the /ace-group/GROUPNAME path is a subset of the 'scope' stored in the access token associated to this client, identified by "NODENAME". If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>The handler also verifies that the node sending the request and the node name used in the Uri-Path match. If that is not the case, the handler responds with a 4.01 (Unauthorized) error response.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, the handler returns a 2.05 (Content) message 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" format="default"/>. 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 (REQ15) and registered in <xref target="iana-reg" format="default"/>.</t>
          </section>
          <section anchor="node-delete" numbered="true" toc="default">
            <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 request with method DELETE (and empty payload).</t>
            <t>The handler only accept a request from the node that matches the "NODENAME" used in Uri-Path, and that is part of the "GROUPNAME" group: the handler verifies that the group identifier "GROUPNAME" is a subset of the 'scope' stored in the access token associated to this client, and that this client is identified by "NODENAME". If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>The handler also verifies that the node sending the request and the node name used in the Uri-Path match. If that is not the case, the handler responds with a 4.01 (Unauthorized) error response.</t>
            <t>Additionally, the handler verifies that the node is a current member of the group. If verification fails, the KDC MUST respond with a 4.00 (Bad Request) error message.</t>
            <t>If verification succeeds, the handler removes the client from the group identified by "GROUPNAME", for specific roles if roles were specified in the 'scope' field, or for all roles. That includes removing the public key of the client if the KDC keep tracks of that. Then, the handler delete the sub-resource nodes/NODENAME and returns a 2.02 (Deleted) message with empty payload.</t>
          </section>
        </section>
        <section anchor="ace-groupgroupnamenodesnodenamepub-key" numbered="true" toc="default">
          <name>ace-group/GROUPNAME/nodes/NODENAME/pub-key</name>
          <t>This resource implements a POST handler, if the KDC stores the public key of group members. If the KDC does not store the public keys of group members, the handler does not implement any method, and every request returns a 4.05 Method Not Allowed error.</t>
          <section anchor="node-pub-key-post" numbered="true" toc="default">
            <name>POST Handler</name>
            <t>The POST handler is used to replace the stored public key 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" format="default"/>, with the difference that it includes only the parameters 'client_cred', 'cnonce' and 'client_cred_verify'. In particular, the signature included in 'client_cred_verify' is expected to be computed as defined in <xref target="gid-post" format="default"/>, with a newly generated N_C nonce and the previously received N_S. The specific format of public keys is specified by the application profile (OPT1).</t>
            <t>The handler verifies that the group identifier GROUPNAME is a subset of the 'scope' stored in the access token associated to this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message.</t>
            <t>If the request is not formatted correctly (e.g. unknown, not-expected fields present, or expected fields with incorrect format), the handler MUST respond with a 4.00 (Bad Request) error message. Application profiles MAY define optional or mandatory payload formats for specific error cases (OPT6).</t>
            <t>Otherwise, the handler checks that the public key specified in the 'client_cred' field has a valid format for the group identified by "GROUPNAME", i.e. it is encoded as expected and is compatible with the signature algorithm and possible associated parameters. If that cannot be verified, the handler MUST respond with a 4.00 (Bad Request) error message. Applications profiles MAY define alternatives (OPT5).</t>
            <t>Otherwise, the handler verifies the signature contained in the 'client_cred_verify' field of the request, using the public key specified in the 'client_cred' field. If the signature does not pass verification, the handler MUST respond with a 4.00 (Bad Request) error message. If the KDC cannot retrieve the 'kdcchallenge' associated to this Client (see <xref target="token-post" format="default"/>), the KDC MUST respond with a 4.00 Bad Request error respons, including a newly generated 'kdcchallenge' in a CBOR map in the payload the payload. This error response MUST also have Content-Format "application/ace+cbor".</t>
            <t>If verification succeeds, the handler replaces the old public key of the node NODENAME with the one specified in the 'client_cred' field of the request, and stores it as the new current public key of the node NODENAME, in the list of group members' public keys for the group identified by GROUPNAME. Then, the handler replies with a 2.04 (Changed) response, which does not include a payload.</t>
          </section>
        </section>
      </section>
      <section anchor="ssec-key-distribution-exchange" numbered="true" toc="default">
        <name>Joining Exchange</name>
        <t><xref target="fig-key-distr-join" format="default"/> gives an overview of the Joining exchange between Client and KDC, when the Client first joins a group.</t>
        <figure anchor="fig-key-distr-join">
          <name>Message Flow of First Exchange for Group Joining</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                     KDC
   |                                                        |
   |----- Joining Request: POST /ace-group/GROUPNAME ------>|
   |                                                        |
   |<--------- Joining Response: 2.01 (Created) ----------- |
   | Location-Path = "/ace-group/GROUPNAME/nodes/NODENAME"  |
]]></artwork>
        </figure>
        <t>If not previously established, the Client and the KDC MUST first establish a pairwise secure communication channel (REQ16). This can be achieved, for instance, by using a transport profile of ACE. The Joining 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 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 identifier of the group to join, formatted as specified in <xref target="gid-post" format="default"/>. This group identifier is the same as 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 or group 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 public keys of the group members, the Client is REQUIRED to send its own public key and proof of possession ("client_cred" and "client_cred_verify" in <xref target="gid-post" format="default"/>). The request is only accepted if both public key and proof of possession are provided. If a node re-joins a group with the same access token and the same public key, it can omit to send the public key and the proof of possession, or just omit the proof of possession, and the KDC will be able to retrieve its public key associated to its token for that group (if the key has been discarded, the KDC will reply with 4.00 Bad Request, as specified in <xref target="gid-post" format="default"/>). If a node re-joins a group but wants to update its own public key, it needs to send both public key and proof of possession.</t>
        <t>If the application requires backward security, the KDC MUST generate new group keying material and securely distribute it to all the current group members, upon a new node's joining the group. To this end, the KDC uses the message format of the response defined in <xref target="gid-get" format="default"/>. Application profiles may define alternative ways of retrieving the keying material, such as sending separate requests to different resources at the KDC (<xref target="gid-get" format="default"/>, <xref target="pubkey-get" format="default"/>, <xref target="policies-get" format="default"/>). After distributing the new group keying material, the KDC MUST increment the version number of the keying material.</t>
        <!-- Jim 13-07: Section X.X - Define a new cnf method to hold the OSCORE context parameters - should it be a normal COSE_Key or something new just to makes sure that it is different.

Marco: Isn't it ok as we are doing with the COSE Key here in Section 4.2? Then it works quite fine in ace-oscoap-joining when considering the particular joining of OSCORE groups. Also, OSCORE is ongly a particular case, while this document is general. Also, this phase where keying material is provisinoed is not even ACE anymore, so there is no need to really stick to a 'cnf' parameter.
-->

<!-- Jim 13-07: Question - does somebody talk about doing key derivation for a new kid showing up and by the way where is the gid

Marco: This seems very much related to Group OSCORE, rather than general message format. In fact, it's in oscore-groupcomm that we describe how a new Recipient Context is derived on demand when "a new kid shows up".

Similarly for the Gid, this document keeps a high livel perspective. It's in ace-oscoap-join that we say how the current Group ID is provided to a joining node in the 'serverID' parameter of the COSE Key in the Join Response.
-->

<!-- Jim 13-07: Seciton 4.2 - if you are using profile, then you should return it.

Marco:  Why? This part is not even strictly ACE anymore. Also, the Client knows what kind of response to expect, since it is contacted a specific resource on the KDC in the first place.
-->

</section>
      <section anchor="update-keys" numbered="true" toc="default">
        <name>Retrieval of Updated Keying Material</name>
        <t>When any of the following happens, a node MUST stop using the owned 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 indicated by the KDC with the 'exp' (and possibly the 'exp_delta') parameter in a Joining 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 node 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" format="default"/>.</t>
        <!-- Jim 13-07: Comment somewhere about getting strike zones setup correctly for a newly seen sender of messages. Ptr to OSCORE?

Marco: Just expanded the second paragraph in Section 6.

If this is about details on deriving Recipient Contexts, that's OSCORE specific and should not be here.

If this is about retrieving the public key of a newly joined sender, that's actually a general requirement and is not strictly related to OSCORE.

Is there any other convenient OSCORE thing which is reusable here and we are missing?
-->

<t>Note that policies can be set up, so that the Client sends a Key Re-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" format="default"/>) to set up these policies, to instruct clients to retain incoming messages and for how long (OPT4). 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>The same Key Distribution Request could also be sent by the Client without being triggered by a failed decryption of a message, if the Client wants to be sure that it has the latest group keying material. If that is the case, the Client will receive from the KDC the same group keying material it already has in memory.</t>
        <t><xref target="fig-key-redistr-req-resp" format="default"/> gives an overview of the exchange described above.</t>
        <figure anchor="fig-key-redistr-req-resp">
          <name>Message Flow of Key Distribution Request-Response</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                          KDC
   |                                                             |
   |------------------ Key Distribution Request: --------------->|
   |           GET ace-group/GROUPNAME/nodes/NODENAME            |
   |                                                             |
   |<-------- Key Distribution Response: 2.05 (Content) ---------|
   |                                                             |
]]></artwork>
        </figure>
        <t>Alternatively, the re-distribution of keying material can be initiated by the KDC, which e.g.:</t>
        <ul spacing="normal">
          <li>Can make the ace-group/GROUPNAME/nodes/NODENAME resource Observable, and send notifications to Clients when the keying material is updated.</li>
          <li>Can send the payload of the Key Distribution Response in one or multiple multicast POST requests to the members of the group, using secure rekeying schemes such as <xref target="RFC2093" format="default"/><xref target="RFC2094" format="default"/><xref target="RFC2627" format="default"/>.</li>
          <li>Can send unicast POST requests to each Client over a secure channel, with the same payload as the Key Distribution Response. When sending such requests, the KDC can target the URI path possibly provided by the intended recipient upon joining the group, as specified in the 'control_path' parameter of the Joining Request (see <xref target="gid-post" format="default"/>).</li>
          <li>Can act as a publisher in a pub-sub scenario, and update the keying material by publishing on a specific topic on a broker, which all the members of the group are subscribed to.</li>
        </ul>
        <t>Note that these methods of KDC-initiated key distribution have different security properties and require different security associations.</t>
      </section>
      <section anchor="new-keys" numbered="true" toc="default">
        <name>Retrieval of New Keying Material</name>
        <t>Beside possible expiration and depending on what part of the keying material is no longer eligible to be used, the client may need to communicate to the KDC its need for that part to be renewed. For example, if the Client uses an individual key to protect outgoing traffic and has to renew it, the node may request a new one, or new input material to derive it, without renewing the whole group keying material.</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 identifier and NODENAME is the node's name, and formatted as defined in <xref target="node-get" format="default"/>.</t>
        <t><xref target="fig-renewal-req-resp" format="default"/> gives an overview of the exchange described above.</t>
        <figure anchor="fig-renewal-req-resp">
          <name>Message Flow of Key Renewal Request-Response</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                    KDC
   |                                                       |
   |------------------ Key Renewal Request: -------------->|
   |           PUT ace-group/GROUPNAME/nodes/NODENAME      |
   |                                                       |
   |<-------- Key Renewal Response: 2.05 (Content) --------|
   |                                                       |
]]></artwork>
        </figure>
        <t>Note the difference between the Key Distribution Request and the Key Renewal Request: while the first one only triggers distribution (the renewal might have happened independently, e.g. because of expiration), the second one triggers the KDC to produce new individual keying material for the requesting node.</t>
        <t>Furthermore, policies can be set up so that, upon receiving a Key Renewal Request, the KDC replies to the client with an error response, and then performs a complete group rekeying (OPT8).</t>
      </section>
      <section anchor="sec-key-retrieval" numbered="true" toc="default">
        <name>Retrieval of Public Keys and Roles for Group Members</name>
        <t>In case the KDC maintains the public keys of group members, a node in the group can contact the KDC to request public keys and roles of either all group members or a specified subset, by sending a CoAP GET or FETCH request to the /ace-group/GROUPNAME/pub-key endpoint at the KDC, where GROUPNAME is the group identifier, and formatted as defined in <xref target="pubkey-get" format="default"/> and <xref target="pubkey-fetch" format="default"/>.</t>
        <t>When receiving a Public Key Response, the requesting group member stores (or updates) the public keys (in the 'pub_keys' parameter) and roles (in the 'peer_roles' parameter) of the group members.</t>
        <t><xref target="fig-public-key-1" format="default"/> and <xref target="fig-public-key-2" format="default"/> give an overview of the exchanges described above.</t>
        <figure anchor="fig-public-key-1">
          <name>Message Flow of Public Key Exchange to Request All Members Public Keys</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                     KDC
   |                                                        |
   |--Public Key Request: GET /ace-group/GROUPNAME/pub-key->|
   |                                                        |
   |<--------- Public Key Response: 2.05 (Content) ---------|
   |                                                        |
]]></artwork>
        </figure>
        <figure anchor="fig-public-key-2">
          <name>Message Flow of Public Key Exchange to Request Specific Members Public Keys</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                      KDC
   |                                                         |
   |-Public Key Request: FETCH /ace-group/GROUPNAME/pub-key->|
   |                                                         |
   |<--------- Public Key Response: 2.05 (Created) ----------|
   |                                                         |
]]></artwork>
        </figure>
      </section>
      <section anchor="update-pub-key" numbered="true" toc="default">
        <name>Update of Public Key</name>
        <t>In case the KDC maintains the public keys of group members, a node in the group can contact the KDC to upload a new public key to use in the group, and replace the currently stored one.</t>
        <t>To this end, the Client performs a Public Key Update Request/Response exchange with the KDC, i.e. it sends a CoAP POST request to the /ace-group/GROUPNAME/nodes/NODENAME/pub-key endpoint at the KDC, where GROUPNAME is the group identifier and NODENAME is the node's name.</t>
        <t>The request is formatted as specified in <xref target="node-pub-key-post" format="default"/>.</t>
        <t>Figure <xref target="fig-pub-key-update-req-resp" format="default"/> gives an overview of the exchange described above.</t>
        <figure anchor="fig-pub-key-update-req-resp">
          <name>Message Flow of Public Key Update Request-Response</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                           KDC
|                                                                 |
|-------------- Public Key Update Request: ---------------------->|
|      POST ace-group/GROUPNAME/nodes/NODENAME/pub-key            |
|                                                                 |
|<------- Public Key Update Response: 2.04 (Changed) -------------|
|                                                                 |
]]></artwork>
        </figure>
        <t>If the application requires backward security, the KDC MUST generate new group keying material and securely distribute it to all the current group members, upon a group member updating its own public key. To this end, the KDC uses the message format of the response defined in <xref target="gid-get" format="default"/>. Application profiles may define alternative ways of retrieving the keying material, such as sending separate requests to different resources at the KDC (<xref target="gid-get" format="default"/>, <xref target="pubkey-get" format="default"/>, <xref target="policies-get" format="default"/>). After distributing the new group keying material, the KDC MUST increment the version number of the keying material.</t>
        <t>Additionally, after updating its own public key, a group member MAY send a number of the later requests including an identifier of the updated public key, to signal nodes that they need to retrieve it. How that is done depends on the group communication protocol used, and therefore is application profile specific (OPT10).</t>
      </section>
      <section anchor="policies" numbered="true" toc="default">
        <name>Retrieval of 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 identifier, and formatted as defined in <xref target="policies-get" format="default"/></t>
        <t><xref target="fig-policies" format="default"/> gives an overview of the exchange described above.</t>
        <figure anchor="fig-policies">
          <name>Message Flow of Policies Request-Response</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                   KDC
   |                                                      |
   |-Policies Request: GET ace-group/GROUPNAME/policies ->|
   |                                                      |
   |<--------- Policies Response: 2.05 (Content) ---------|
   |                                                      |
]]></artwork>
        </figure>
      </section>
      <section anchor="key-version" numbered="true" toc="default">
        <name>Retrieval of 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/ctx-num endpoint at the KDC, where GROUPNAME is the group identifier, formatted as defined in <xref target="num-get" format="default"/>. In particular, the version is incremented by the KDC every time the group keying material is renewed.</t>
        <t><xref target="fig-version" format="default"/> gives an overview of the exchange described above.</t>
        <figure anchor="fig-version">
          <name>Message Flow of Version Request-Response</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client                                                    KDC
   |                                                       |
   |-- Version Request: GET ace-group/GROUPNAME/ctx-num -->|
   |                                                       |
   |<--------- Version Response: 2.05 (Content) -----------|
   |                                                       |
]]></artwork>
        </figure>
      </section>
      <section anchor="ssec-group-leaving" numbered="true" toc="default">
        <name>Group Leaving Request</name>
        <t>A node 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 identifier and NODENAME is the node's name, formatted as defined in <xref target="node-delete" format="default"/></t>
        <!-- Jim 13-07: Section 5.2 - What is the message to leave - can I leave one scope but not another?  Can I just give up a role?

Marco: We should define an actual message, like the ones for retrieving updating keying material in Section 6. It can be like the one in Section 6.1, only with the second part of 'scope' present and encoded as an empty CBOR array.

Marco: 'scope' encodes one group and some roles. So a node is supposed to leave that group altogether, with all its roles. If the node wants to stay in the group with less roles, it is just fine that is stops playing the roles it is not interested in anymore.
-->

<t>Alternatively, a node may be removed by the KDC, without having explicitly asked for it. This is further discussed in <xref target="sec-node-removal" format="default"/>.</t>
      </section>
    </section>
    <section anchor="sec-node-removal" numbered="true" toc="default">
      <name>Removal of a Node from the Group</name>
      <t>This section describes the different scenarios according to which a node ends up being removed from the group.</t>
      <t>If the application requires forward security, the KDC MUST generate new group keying material and securely distribute it to all the current group members but the leaving node, using the message format of the Key Distribution Response (see <xref target="update-keys" format="default"/>). Application profiles may define alternative message formats. Once distributed the new group keying material, the KDC MUST increment the version number of the keying material.</t>
      <t>Note that, after having left the group, a node may wish to join it again. Then, as long as the node is still authorized to join the group, i.e. it still has a valid access token, it can re-request to join the group directly to the KDC without needing to retrieve a new access token from the AS. This means that the KDC might decide to keep track of nodes with valid access tokens, before deleting all information about the leaving node.</t>
      <t>A node may be evicted from the group in the following cases.</t>
      <ol spacing="normal" type="1">
        <li>The node explicitly asks to leave the group, as defined in <xref target="ssec-group-leaving" format="default"/>.</li>
        <li>The node has been found compromised or is suspected so.</li>
        <li>The node's authorization to be a group member is not valid anymore, either because the access token has expired, or it has been revoked. If the AS provides Token introspection (see Section 5.7 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>), the KDC can optionally use it and check whether the node is still authorized for that group in that role.</li>
      </ol>
      <t>In either case, once aware that a node is not authorized anymore, the KDC has to remove the unauthorized node from the list of group members, if the KDC keeps track of that.</t>
      <t>In case of forced eviction, the KDC MAY explicitly inform the leaving node, if the Client implements the 'control_path' resource specified in <xref target="gid-post" format="default"/>. To this end, the KDC MAY send a DEL request, targeting the URI specified in the 'control_path' parameter of the Joining Request.</t>
    </section>
    <section anchor="params" numbered="true" toc="default">
      <name>ACE Groupcomm Parameters</name>
      <t>This specification defines a number of fields used during the second part of the message exchange, after the ACE Token POST exchange. The table below summarizes them, and specifies the CBOR key to use instead of the full descriptive name. Note that the media type ace-groupcomm+cbor MUST be used when these fields are transported.</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">CBOR Key</th>
            <th align="left">CBOR Type</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">scope</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">get_pub_keys</td>
            <td align="left">TBD</td>
            <td align="left">array</td>
            <td align="left">
              <xref target="gid-post" format="default"/>, <xref target="pubkey-fetch" format="default"/></td>
          </tr>
          <tr>
            <td align="left">client_cred</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">cnonce</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">client_cred_verify</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">pub_keys_repos</td>
            <td align="left">TBD</td>
            <td align="left">text string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">control_path</td>
            <td align="left">TBD</td>
            <td align="left">text string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">gkty</td>
            <td align="left">TBD</td>
            <td align="left">int / text string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">key</td>
            <td align="left">TBD</td>
            <td align="left">see "ACE Groupcomm Key" Registry</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">num</td>
            <td align="left">TBD</td>
            <td align="left">int</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">ace-groupcomm-profile</td>
            <td align="left">TBD</td>
            <td align="left">int</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">exp</td>
            <td align="left">TBD</td>
            <td align="left">int</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">exp_delta</td>
            <td align="left">TBD</td>
            <td align="left">int</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">pub_keys</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">peer_roles</td>
            <td align="left">TBD</td>
            <td align="left">array</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">group_policies</td>
            <td align="left">TBD</td>
            <td align="left">map</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
          <tr>
            <td align="left">mgt_key_material</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
            <td align="left">
              <xref target="gid-post" format="default"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sec-cons" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>When a Client receives a message from a sender for the first time, it needs to have a mechanism in place to avoid replay, e.g. Appendix B.2 of <xref target="RFC8613" format="default"/>. In case the Client rebooted and lost the security state used to protect previous communication with that sender, such a mechanism is useful for the recipient to be on the safe side.
If the group has renewed its group keying material, the time window between the end of the rekeying process and the next loss of security state is safe for recipients, as replayed older messages protected with previous keying material will not be accepted.</t>
      <t>The KDC must renew the group keying material upon its expiration.</t>
      <t>The KDC should renew the keying material upon group membership change, and should provide it to the current group members through the rekeying scheme used in the group.</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.</t>
      <t>That is, the KDC may not rekey the group at every membership change, for instance if members' joining and leaving occur frequently and performing a group rekeying takes too long. Instead, the KDC may rekey the group after a minimum number of group members have joined or left within a given time interval, or during predictable network inactivity periods.</t>
      <t>However, this would result in the KDC not constantly preserving backward and forward security. In fact, newly joining group members could be able to access the keying material used before their joining, and thus could access past group communications. Also, until the KDC performs a group rekeying, the newly leaving nodes would still be able to access upcoming group communications that are protected with the keying material that has not yet been updated.</t>
      <t>The KDC needs to have a mechanism in place to detect DoS attacks from nodes constantly initiating rekeys (for example by updating their public key), such as removing these nodes from the group.</t>
      <section anchor="update-of-keying-material" numbered="true" toc="default">
        <name>Update of 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 keying material. However, the recipient receives the message after having received the new keying material, hence not being able to correctly process it. A possible way to ameliorate this issue is to preserve the old, recent, keying material for a maximum amount of time defined by the application. By doing so, the recipient can still try to process the received message using the old retained keying material as second attempt. Note that a former (compromised) group member can take advantage of this by sending messages protected with the old retained keying material. Therefore, a conservative application policy should not admit the storage of old keying material.</t>
        <t>In the second case, the sender protects a message using the new keying material, but the recipient receives that request before having received the new keying material. Therefore, the recipient would not be able to correctly process the request and hence discards it. If the recipient receives the new 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 an updated keying material according to an application-defined policy, for instance after a given number of unsuccessfully decrypted incoming messages.</t>
        <t>A node that has left the group should not expect any of its outgoing messages to be successfully processed, if received after its leaving, due to a possible group rekeying occurred before the message reception.</t>
      </section>
      <section anchor="block-wise-considerations" numbered="true" toc="default">
        <name>Block-Wise Considerations</name>
        <t>If the block-wise options <xref target="RFC7959" format="default"/> are used, and the keying material is updated in the middle of a block-wise transfer, the sender of the blocks just changes the keying material to the updated one and continues the transfer. As long as both sides get the new keying material, updating the 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 keying material is changed, the nodes might consume a larger amount of the network bandwidth resending the blocks again and again, which might be problematic.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <!--
## OSCORE Security Context Parameters Registry

The following registrations are required for the OSCORE Security Context Parameters Registry specified in Section 9.2 of {{I-D.ietf-ace-oscore-profile}}:

*  Name: cs_alg
*  CBOR Label: TBD
*  CBOR Type: tstr / int
*  Registry: COSE Algorithm Values (ECDSA, EdDSSA)
*  Description: OSCORE Counter Signature Algorithm Value
*  Reference: \[\[this specification\]\]

*  Name: exp
*  CBOR Label: TBD
*  CBOR Type: int / float
*  Registry:
*  Description: OSCORE Counter Signature Algorithm Value
*  Reference: \[\[this specification\]\]
-->

<section anchor="media-type" numbered="true" toc="default">
        <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" format="default"/>.</t>
        <t>Type name: application</t>
        <t>Subtype name: ace-groupcomm+cbor</t>
        <t>Required parameters: none</t>
        <t>Optional parameters: none</t>
        <t>Encoding considerations: Must be encoded as CBOR map containing the protocol parameters defined in [this document].</t>
        <t>Security considerations: See <xref target="sec-cons" format="default"/> of this document.</t>
        <t>Interoperability considerations: n/a</t>
        <t>Published specification: [this document]</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 [this document].</t>
        <t>Additional information:</t>
        <t>Magic number(s): n/a</t>
        <t>File extension(s): .ace-groupcomm</t>
        <t>Macintosh file type code(s): n/a</t>
        <t>Person &amp; email address to contact for further information:
   <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>
        <t>Intended usage: COMMON</t>
        <t>Restrictions on usage: None</t>
        <t>Author: Francesca Palombini <eref target="mailto:francesca.palombini@ericsson.com">francesca.palombini@ericsson.com</eref></t>
        <t>Change controller: IESG</t>
      </section>
      <section anchor="content-type" numbered="true" toc="default">
        <name>CoAP Content-Formats Registry</name>
        <t>This specification registers the following entry to the "CoAP Content-Formats" registry, within the "CoRE Parameters" registry:</t>
        <t>Media Type: application/ace-groupcomm+cbor</t>
        <t>Encoding: -</t>
        <t>ID: TBD</t>
        <t>Reference: [this document]</t>
      </section>
      <section anchor="iana-kinfo" numbered="true" toc="default">
        <name>ACE Authorization Server Request Creation Hints Registry</name>
        <t>IANA is asked to register the following entries in the "ACE Authorization Server Request Creation Hints" Registry defined in Section 8.1 of <xref target="I-D.ietf-ace-oauth-authz" format="default"/>.</t>
        <ul spacing="normal">
          <li>Name: sign_info</li>
          <li>CBOR Key: TBD (range -256 to 255)</li>
          <li>Value Type: any</li>
          <li>Reference: [[This specification]]</li>
          <li>Name: pub_key_enc</li>
          <li>CBOR Key: TBD (range -256 to 255)</li>
          <li>Value Type: integer</li>
          <li>Reference: [[This specification]]</li>
          <li>Name: kdcchallenge</li>
          <li>CBOR Key: TBD (range -256 to 255)</li>
          <li>Value Type: byte string</li>
          <li>Reference: [[This specification]]</li>
        </ul>
      </section>
      <section anchor="iana-reg" numbered="true" toc="default">
        <name>ACE Groupcomm Parameters Registry</name>
        <t>This specification establishes the "ACE Groupcomm Parameters" IANA Registry. The
Registry has been created to use the "Expert Review Required" registration procedure <xref target="RFC8126" format="default"/>. Expert review guidelines are provided in <xref target="review" format="default"/>.</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 string.</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 by the values in <xref target="params" format="default"/>. The Reference column for all of these entries refers to sections of this document.</t>
      </section>
      <section anchor="iana-key" numbered="true" toc="default">
        <name>ACE Groupcomm Key Registry</name>
        <t>This specification establishes the "ACE Groupcomm Key" IANA Registry. The
Registry has been created to use the "Expert Review Required" registration procedure <xref target="RFC8126" format="default"/>. Expert review guidelines are provided in <xref target="review" format="default"/>.</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.</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 Profile" Registry.</li>
          <li>Description: This field contains a brief description of the keying material.</li>
          <li>References: 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 by the values in <xref target="gkty" format="default"/>. The specification column for all of these entries will be this document.</t>
      </section>
      <section anchor="ace-groupcomm-profile-registry" numbered="true" toc="default">
        <name>ACE Groupcomm Profile Registry</name>
        <t>This specification establishes the "ACE Groupcomm Profile" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure <xref target="RFC8126" format="default"/>. Expert review guidelines are provided in <xref target="review" format="default"/>. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, 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. Different ranges of values use different registration policies <xref target="RFC8126" format="default"/>. Integer values from -256 to 255 are designated as Standards Action. 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>
      </section>
      <section anchor="ace-groupcomm-policy-registry" numbered="true" toc="default">
        <name>ACE Groupcomm Policy Registry</name>
        <t>This specification establishes the "ACE Groupcomm Policy" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure <xref target="RFC8126" format="default"/>. Expert review guidelines are provided in <xref target="review" format="default"/>. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, 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.  Key map labels MUST be unique. The label can be a positive integer, a negative integer or a string.  Integer values between 0 and 255 and strings of length 1 are designated as Standards Track Document required. Integer values from 256 to 65535 and strings of length 2 are designated as Specification Required.  Integer values of greater than 65535 and 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 will be initially populated by the values in <xref target="fig-ACE-Groupcomm-Policies" format="default"/>.</t>
      </section>
      <section anchor="sequence-number-synchronization-method-registry" numbered="true" toc="default">
        <name>Sequence Number Synchronization Method Registry</name>
        <t>This specification establishes the "Sequence Number Synchronization Method" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure <xref target="RFC8126" format="default"/>. Expert review guidelines are provided in <xref target="review" format="default"/>. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, 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.</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="if-ace-group" numbered="true" toc="default">
        <name>Interface Description (if=) Link Target Attribute Values Registry</name>
        <t>This specification registers the following entry to the "Interface Description (if=) Link Target Attribute Values Registry" registry, within the "CoRE Parameters" registry:</t>
        <ul spacing="normal">
          <li>Attribute Value: ace-group</li>
          <li>Description: The 'ace group' interface is used to provision keying material and related informations and policies to members of a group using the Ace framework.</li>
          <li>Reference: [This Document]</li>
        </ul>
      </section>
      <section anchor="review" numbered="true" toc="default">
        <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.
 Specifications are needed for the first-come, first-serve range if they are expected to be used outside of closed environments in an interoperable way.
 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="RFC7049" target="https://www.rfc-editor.org/info/rfc7049" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7049"/>
            <seriesInfo name="RFC" value="7049"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <date year="2013" month="October"/>
            <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>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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>
        </reference>
        <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <seriesInfo name="DOI" value="10.17487/RFC6838"/>
            <seriesInfo name="RFC" value="6838"/>
            <seriesInfo name="BCP" value="13"/>
            <author initials="N." surname="Freed" fullname="N. Freed">
              <organization/>
            </author>
            <author initials="J." surname="Klensin" fullname="J. Klensin">
              <organization/>
            </author>
            <author initials="T." surname="Hansen" fullname="T. Hansen">
              <organization/>
            </author>
            <date year="2013" month="January"/>
            <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>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8152"/>
            <seriesInfo name="RFC" value="8152"/>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="BCP" value="26"/>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
            <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>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-ace-oauth-authz" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-authz-33.txt">
          <front>
            <title>Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oauth-authz-33"/>
            <author initials="L" surname="Seitz" fullname="Ludwig Seitz">
              <organization/>
            </author>
            <author initials="G" surname="Selander" fullname="Goeran Selander">
              <organization/>
            </author>
            <author initials="E" surname="Wahlstroem" fullname="Erik Wahlstroem">
              <organization/>
            </author>
            <author initials="S" surname="Erdtman" fullname="Samuel Erdtman">
              <organization/>
            </author>
            <author initials="H" surname="Tschofenig" fullname="Hannes Tschofenig">
              <organization/>
            </author>
            <date month="February" day="6" year="2020"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-ace-oauth-params" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-params.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-params-13.txt">
          <front>
            <title>Additional OAuth Parameters for Authorization in Constrained Environments (ACE)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oauth-params-13"/>
            <author initials="L" surname="Seitz" fullname="Ludwig Seitz">
              <organization/>
            </author>
            <date month="April" day="28" year="2020"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for authentication and authorization for constrained environments (ACE).  These are used to express the proof-of-possession key the client wishes to use, the proof-of-possession key that the Authorization Server has selected, and the key the Resource Server uses to authenticate to the client.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-groupcomm.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-core-oscore-groupcomm-08.txt">
          <front>
            <title>Group OSCORE - Secure Group Communication for CoAP</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-08"/>
            <author initials="M" surname="Tiloca" fullname="Marco Tiloca">
              <organization/>
            </author>
            <author initials="G" surname="Selander" fullname="Goeran Selander">
              <organization/>
            </author>
            <author initials="F" surname="Palombini" fullname="Francesca Palombini">
              <organization/>
            </author>
            <author initials="J" surname="Park" fullname="Jiye Park">
              <organization/>
            </author>
            <date month="April" day="6" year="2020"/>
            <abstract>
              <t>This document defines Group Object Security for Constrained RESTful Environments (Group OSCORE), providing end-to-end security of CoAP messages exchanged between members of a group, e.g. using IP multicast.  In particular, the described approach defines how OSCORE should be used in a group communication setting to provide source authentication for CoAP group requests, sent by a client to multiple servers, and the corresponding CoAP responses.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-ace-cwt-proof-of-possession" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-cwt-proof-of-possession.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-cwt-proof-of-possession-11.txt">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-cwt-proof-of-possession-11"/>
            <author initials="M" surname="Jones" fullname="Michael Jones">
              <organization/>
            </author>
            <author initials="L" surname="Seitz" fullname="Ludwig Seitz">
              <organization/>
            </author>
            <author initials="G" surname="Selander" fullname="Goeran Selander">
              <organization/>
            </author>
            <author initials="S" surname="Erdtman" fullname="Samuel Erdtman">
              <organization/>
            </author>
            <author initials="H" surname="Tschofenig" fullname="Hannes Tschofenig">
              <organization/>
            </author>
            <date month="October" day="31" year="2019"/>
            <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>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <front>
            <title>JSON Web Token (JWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7519"/>
            <seriesInfo name="RFC" value="7519"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC2093" target="https://www.rfc-editor.org/info/rfc2093" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2093.xml">
          <front>
            <title>Group Key Management Protocol (GKMP) Specification</title>
            <seriesInfo name="DOI" value="10.17487/RFC2093"/>
            <seriesInfo name="RFC" value="2093"/>
            <author initials="H." surname="Harney" fullname="H. Harney">
              <organization/>
            </author>
            <author initials="C." surname="Muckenhirn" fullname="C. Muckenhirn">
              <organization/>
            </author>
            <date year="1997" month="July"/>
            <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>
        </reference>
        <reference anchor="RFC2094" target="https://www.rfc-editor.org/info/rfc2094" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2094.xml">
          <front>
            <title>Group Key Management Protocol (GKMP) Architecture</title>
            <seriesInfo name="DOI" value="10.17487/RFC2094"/>
            <seriesInfo name="RFC" value="2094"/>
            <author initials="H." surname="Harney" fullname="H. Harney">
              <organization/>
            </author>
            <author initials="C." surname="Muckenhirn" fullname="C. Muckenhirn">
              <organization/>
            </author>
            <date year="1997" month="July"/>
            <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>
        </reference>
        <reference anchor="RFC2627" target="https://www.rfc-editor.org/info/rfc2627" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2627.xml">
          <front>
            <title>Key Management for Multicast: Issues and Architectures</title>
            <seriesInfo name="DOI" value="10.17487/RFC2627"/>
            <seriesInfo name="RFC" value="2627"/>
            <author initials="D." surname="Wallner" fullname="D. Wallner">
              <organization/>
            </author>
            <author initials="E." surname="Harder" fullname="E. Harder">
              <organization/>
            </author>
            <author initials="R." surname="Agee" fullname="R. Agee">
              <organization/>
            </author>
            <date year="1999" month="June"/>
            <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>
        </reference>
        <reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6347" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <seriesInfo name="DOI" value="10.17487/RFC6347"/>
            <seriesInfo name="RFC" value="6347"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <author initials="N." surname="Modadugu" fullname="N. Modadugu">
              <organization/>
            </author>
            <date year="2012" month="January"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7959" target="https://www.rfc-editor.org/info/rfc7959" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7959.xml">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7959"/>
            <seriesInfo name="RFC" value="7959"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="Z." surname="Shelby" fullname="Z. Shelby" role="editor">
              <organization/>
            </author>
            <date year="2016" month="August"/>
            <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>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <seriesInfo name="DOI" value="10.17487/RFC8259"/>
            <seriesInfo name="RFC" value="8259"/>
            <seriesInfo name="STD" value="90"/>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization/>
            </author>
            <date year="2017" month="December"/>
            <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>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8613"/>
            <seriesInfo name="RFC" value="8613"/>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="J." surname="Mattsson" fullname="J. Mattsson">
              <organization/>
            </author>
            <author initials="F." surname="Palombini" fullname="F. Palombini">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <date year="2019" month="July"/>
            <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>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8392"/>
            <seriesInfo name="RFC" value="8392"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="E." surname="Wahlstroem" fullname="E. Wahlstroem">
              <organization/>
            </author>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2018" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC8747" target="https://www.rfc-editor.org/info/rfc8747" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8747.xml">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8747"/>
            <seriesInfo name="RFC" value="8747"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2020" month="March"/>
            <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>
        </reference>
        <reference anchor="I-D.dijk-core-groupcomm-bis" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.dijk-core-groupcomm-bis.xml" target="http://www.ietf.org/internet-drafts/draft-dijk-core-groupcomm-bis-03.txt">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <seriesInfo name="Internet-Draft" value="draft-dijk-core-groupcomm-bis-03"/>
            <author initials="E" surname="Dijk" fullname="Esko Dijk">
              <organization/>
            </author>
            <author initials="C" surname="Wang" fullname="Chonggang Wang">
              <organization/>
            </author>
            <author initials="M" surname="Tiloca" fullname="Marco Tiloca">
              <organization/>
            </author>
            <date month="March" day="9" year="2020"/>
            <abstract>
              <t>This document specifies the use of the Constrained Application Protocol (CoAP) for group communication, using UDP/IP multicast as the 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 networks.  The most common of such use cases are also discussed.  This document replaces [RFC7390] and updates [RFC7252] and [RFC7641].</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-coap-pubsub.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-core-coap-pubsub-09.txt">
          <front>
            <title>Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-09"/>
            <author initials="M" surname="Koster" fullname="Michael Koster">
              <organization/>
            </author>
            <author initials="A" surname="Keranen" fullname="Ari Keranen">
              <organization/>
            </author>
            <author initials="J" surname="Jimenez" fullname="Jaime Jimenez">
              <organization/>
            </author>
            <date month="September" day="30" year="2019"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), and related extensions are intended to support machine-to-machine communication in systems where one or more nodes are resource constrained, in particular for low power wireless sensor networks.  This document defines a publish- subscribe Broker for CoAP that extends the capabilities of CoAP for supporting nodes with long breaks in connectivity and/or up-time.  There is work in progress to resolve some of the transfer layer issues by using a more RESTful approach.  Please see https://github.com/core-wg/pubsub/blob/master/proposal.txt</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-ace-oscore-profile" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oscore-profile.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-oscore-profile-10.txt">
          <front>
            <title>OSCORE profile of the Authentication and Authorization for Constrained Environments Framework</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oscore-profile-10"/>
            <author initials="F" surname="Palombini" fullname="Francesca Palombini">
              <organization/>
            </author>
            <author initials="L" surname="Seitz" fullname="Ludwig Seitz">
              <organization/>
            </author>
            <author initials="G" surname="Selander" fullname="Goeran Selander">
              <organization/>
            </author>
            <author initials="M" surname="Gunnarsson" fullname="Martin Gunnarsson">
              <organization/>
            </author>
            <date month="March" day="9" year="2020"/>
            <abstract>
              <t>This memo 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, server authentication, and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-ace-dtls-authorize" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-dtls-authorize.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-dtls-authorize-09.txt">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-dtls-authorize-09"/>
            <author initials="S" surname="Gerdes" fullname="Stefanie Gerdes">
              <organization/>
            </author>
            <author initials="O" surname="Bergmann" fullname="Olaf Bergmann">
              <organization/>
            </author>
            <author initials="C" surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <author initials="G" surname="Selander" fullname="Goeran Selander">
              <organization/>
            </author>
            <author initials="L" surname="Seitz" fullname="Ludwig Seitz">
              <organization/>
            </author>
            <date month="December" day="18" year="2019"/>
            <abstract>
              <t>This specification defines a profile of the ACE framework that allows constrained servers to delegate client authentication and authorization.  The protocol relies on DTLS 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>
        </reference>
        <reference anchor="I-D.ietf-ace-mqtt-tls-profile" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-mqtt-tls-profile.xml" target="http://www.ietf.org/internet-drafts/draft-ietf-ace-mqtt-tls-profile-04.txt">
          <front>
            <title>MQTT-TLS profile of ACE</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-ace-mqtt-tls-profile-04"/>
            <author initials="C" surname="Sengul" fullname="Cigdem Sengul">
              <organization/>
            </author>
            <author initials="A" surname="Kirby" fullname="Anthony Kirby">
              <organization/>
            </author>
            <author initials="P" surname="Fremantle" fullname="Paul Fremantle">
              <organization/>
            </author>
            <date month="March" day="9" year="2020"/>
            <abstract>
              <t>This document specifies a profile for the ACE (Authentication and Authorization for Constrained Environments) framework to enable authorization in an MQTT-based publish-subscribe messaging system. Proof-of-possession keys, bound to OAuth2.0 access tokens, are used to authenticate and authorize MQTT Clients.  The protocol relies on TLS for confidentiality and MQTT server (broker) authentication.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="req" numbered="true" toc="default">
      <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>
      <ul spacing="normal">
        <li>REQ1: Specify the encoding and value of the identifier of group or topic, for scope entries of 'scope' (see <xref target="ssec-authorization-request" format="default"/>).</li>
        <li>REQ2: Specify the encoding and value of roles, for scope entries of 'scope' (see <xref target="ssec-authorization-request" format="default"/>).</li>
        <li>REQ3: If used, specify the acceptable values for 'sign_alg' (see <xref target="token-post" format="default"/>).</li>
        <li>REQ4: If used, specify the acceptable values for 'sign_parameters' (see <xref target="token-post" format="default"/>).</li>
        <li>REQ5: If used, specify the acceptable values for 'sign_key_parameters' (see <xref target="token-post" format="default"/>).</li>
        <li>REQ6: If used, specify the acceptable values for 'pub_key_enc' (see <xref target="token-post" format="default"/>).</li>
        <li>REQ7: Specify the exact format of the 'key' value (see <xref target="gid-post" format="default"/>).</li>
        <li>REQ8: Specify the acceptable values of 'gkty' (see <xref target="gid-post" format="default"/>).</li>
        <li>REQ9: Specify the format of the identifiers of group members (see <xref target="gid-post" format="default"/>).</li>
        <li>REQ10: Specify the communication protocol the members of the group must use (e.g., multicast CoAP).</li>
        <li>REQ11: 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>REQ12: Specify and register the application profile identifier (see <xref target="gid-post" format="default"/>).</li>
        <li>REQ13: Specify policies at the KDC to handle ids that are not included in get_pub_keys (see <xref target="pubkey-fetch" format="default"/>).</li>
        <li>REQ14: If used, specify the format and content of 'group_policies' and its entries (see <xref target="gid-post" format="default"/>).</li>
        <li>REQ15: 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" format="default"/>).</li>
        <li>REQ16: Specify how the communication is secured between Client and KDC. Optionally, specify tranport profile of ACE <xref target="I-D.ietf-ace-oauth-authz" format="default"/> to use between Client and KDC (see <xref target="ssec-key-distribution-exchange" format="default"/>.</li>
        <li>REQ17: Specify how the nonce N_S is generated, if the token is not being posted (e.g. if it is used directly to validate TLS instead).</li>
        <li>REQ18: Specify if 'mgt_key_material' used, and if yes specify its format and content (see <xref target="gid-post" format="default"/>). If the usage of 'mgt_key_material' is indicated and its format defined for a specific key management scheme, that format must explicitly indicate the key management scheme itself. If a new rekeying scheme is defined to be used for an existing 'mgt_key_material' in an existing profile, then that profile will have to be updated accordingly, especially with respect to the usage of 'mgt_key_material' related format and content.</li>
        <li>OPT1: Optionally, specify the encoding of public keys, of 'client_cred', and of 'pub_keys' if COSE_Keys are not used (see <xref target="gid-post" format="default"/>).</li>
        <li>OPT2: Optionally, specify the negotiation of parameter values for signature algorithm and signature keys, if 'sign_info' and 'pub_key_enc' are not used (see <xref target="token-post" format="default"/>).</li>
        <li>OPT3: Optionally, specify the encoding of 'pub_keys_repos' if the default is not used (see <xref target="gid-post" format="default"/>).</li>
        <li>OPT4: Optionally, specify policies that instruct clients to retain messages and for how long, if they are unsuccessfully decrypted (see <xref target="update-keys" format="default"/>). This makes it possible to decrypt such messages after getting updated keying material.</li>
        <li>OPT5: Optionally, specify the behavior of the handler in case of failure to retrieve a public key for the specific node (see <xref target="gid-post" format="default"/>).</li>
        <li>OPT6: Optionally, specify possible or required payload formats for specific error cases.</li>
        <li>OPT7: Optionally, specify CBOR values to use for abbreviating identifiers of roles in the group or topic (see <xref target="ssec-authorization-request" format="default"/>).</li>
        <li>OPT8: Optionally, specify policies for the KDC to perform group rekeying after receiving a Key Renewal Request (see <xref target="new-keys" format="default"/>).</li>
        <li>OPT9: Optionally, specify the functionalities implemented at the 'control_path' resource hosted at the Client, including message exchange encoding and other details (see <xref target="gid-post" format="default"/>).</li>
        <li>OPT10: Optionally, specify how the identifier of the sender's public key is included in the group request (see <xref target="update-pub-key" format="default"/>).</li>
      </ul>
    </section>
    <section anchor="sec-document-updates" numbered="true" toc="default">
      <name>Document Updates</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>
      <section anchor="sec-04-05" numbered="true" toc="default">
        <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_path' parameter in the Joining 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 OPT4.</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 OPT8.</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-03-04" numbered="true" toc="default">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>Revised RESTful interface, as to methods and parameters.</li>
          <li>Extended processing of joining 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" numbered="true" toc="default">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>Exchange of information on the countersignature 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 Joining 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" toc="default">
      <name>Acknowledgments</name>
      <t>The following individuals were helpful in shaping this document: Carsten Bormann, Rikard Hoeglund, Ben Kaduk, John Mattsson, Daniel Migault, Jim Schaad, Ludwig Seitz, Goeran Selander and Peter van der Stok.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the EIT-Digital High Impact Initiative ACTIVE.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Nle1AQA=

-->

</rfc>
