<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-pubsub-profile-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="ACE Pub-Sub Profile">Publish-Subscribe Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ace-pubsub-profile-10"/>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="C." surname="Sengul" fullname="Cigdem Sengul">
      <organization>Brunel University</organization>
      <address>
        <email>csengul@acm.org</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2024" month="July" day="07"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 90?>

<t>This document defines an application profile of the Authentication and Authorization for Constrained Environments (ACE) framework, to enable secure group communication in the Publish-Subscribe (Pub-Sub) architecture for the Constrained Application Protocol (CoAP) [draft-ietf-core-coap-pubsub], where Publishers and Subscribers communicate through a Broker. This profile relies on protocol-specific transport profiles of ACE to achieve communication security, server authentication, and proof-of-possession for a key owned by the Client and bound to an OAuth 2.0 access token. This document specifies the provisioning and enforcement of authorization information for Clients to act as Publishers and/or Subscribers, as well as the provisioning of keying material and security parameters that Clients use for protecting their communications end-to-end through the Broker.</t>
      <t>Note to RFC Editor: Please replace "[draft-ietf-core-coap-pubsub]" with the RFC number of that document and delete this paragraph.</t>
    </abstract>
  </front>
  <middle>
    <?line 95?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In a publish-subscribe (Pub-Sub) scenario, devices acting as Publishers and/or Subscribers <!--with limited reachability--> communicate via a Broker that enforces store-and-forward messaging between those. This effectively enables a form of group communication, where all the Publishers and Subscribers participating in the same Pub-Sub topic are considered members of the same application group associated with that topic.</t>
      <t>With a focus on the Pub-Sub architecture defined in <xref target="I-D.ietf-core-coap-pubsub"/> for the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>, this document defines an application profile of the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>, which enables Pub-Sub communication where a group of Publishers and Subscribers securely communicate through a Broker using CoAP.</t>
      <t>Building on the message formats and processing defined in <xref target="I-D.ietf-ace-key-groupcomm"/>, this document specifies the provisioning and enforcement of authorization information for Clients to act as Publishers and/or Subscribers at the Broker, as well as the provisioning of keying material and security parameters that Clients use for protecting end-to-end their communications via the Broker.</t>
      <t>In order to protect the Pub-Sub operations at the Broker as well as the provisioning of keying material and security parameters, this profile relies on protocol-specific transport profiles of ACE (e.g., <xref target="RFC9202"/>, <xref target="RFC9203"/>, or <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>) to achieve communication security, server authentication, and proof-of-possession for a key owned by the Client and bound to an OAuth 2.0 access token.</t>
      <t>The content of published messages that are circulated by the Broker is protected end-to-end between the corresponding Publisher and the intended Subscribers. To this end, this profile relies on COSE <xref target="RFC9052"/><xref target="RFC9053"/> and on keying material provided to the Publishers and Subscribers participating in the same Pub-Sub topic. In particular, source authentication of published content is achieved by means of the corresponding Publisher signing such content with its own private key.</t>
      <t>While this profile focuses on the Pub-Sub architecture for CoAP, <xref target="mqtt-pubsub"/> of this document describes how this profile can be applicable to MQTT <xref target="MQTT-OASIS-Standard-v5"/>. Similar adaptations can also extend to further transport protocols and Pub-Sub architectures.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>Readers are expected to be familiar with:</t>
        <ul spacing="normal">
          <li>
            <t>The terms and concepts described in the ACE framework for Authentication and Authorization <xref target="RFC9200"/>. The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes Client, Resource Server (RS), and Authorization Server (AS).</t>
          </li>
          <li>
            <t>The Authorization Information Format (AIF) <xref target="RFC9237"/> used to express authorization information.</t>
          </li>
          <li>
            <t>The terms and concept related to the message formats and processing specified in <xref target="I-D.ietf-ace-key-groupcomm"/>, for provisioning and renewing keying material in group communication scenarios. These include the abbreviations REQx and OPTx denoting the numbered mandatory-to-address and optional-to-address requirements, respectively.</t>
          </li>
          <li>
            <t>The terms and concepts described in CDDL <xref target="RFC8610"/>, CBOR <xref target="RFC8949"/>, and COSE <xref target="RFC9052"/><xref target="RFC9053"/><xref target="RFC9338"/>.</t>
          </li>
          <li>
            <t>The terms and concepts described in CoAP <xref target="RFC7252"/>. Note that the term "endpoint" is used here following its OAuth definition, aimed at denoting resources such as <tt>/token</tt> and <tt>/introspect</tt> at the AS, and <tt>/authz-info</tt> at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol".</t>
          </li>
          <li>
            <t>The terms and concepts of Pub-Sub group communication with CoAP, as described in <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
          </li>
        </ul>
        <t>A party interested in participating in group communication as well as already participating as a group member is interchangeably denoted as "Client", "Pub-Sub client", or "node".</t>
        <ul spacing="normal">
          <li>
            <t>Group: a set of nodes that share common keying material and security parameters to protect their communications with one another. That is, the term refers to a "security group".  </t>
            <t>
This is not to be confused with an "application group", which has relevance at the application level and whose members are in this case the Clients acting as Publishers and/or Subscribers for a topic.</t>
          </li>
        </ul>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>. Diagnostic notation comments are often used to provide a textual representation of the numeric parameter names and values.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Application Profile Overview</name>
      <t>This document describes how to use <xref target="RFC9200"/> and <xref target="I-D.ietf-ace-key-groupcomm"/> to perform authentication, authorization, and key distribution operations as overviewed in <xref section="2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, where the considered group is the security group composed of the Pub-Sub clients that exchange end-to-end protected content through the Broker.</t>
      <t>Pub-Sub clients communicate within their application groups, each of which is mapped to a topic. Depending on the application, a topic may consist of one or more sub-topics, which in turn may have their own sub-topics and so on, thus forming a hierarchy. A security group <bcp14>SHOULD</bcp14> be associated with a single application group. However, the same application group <bcp14>MAY</bcp14> be associated with multiple security groups. Further details and considerations on the mapping between the two types of groups are out of the scope of this document.</t>
      <t>This profile considers the architecture shown in <xref target="archi"/>. A Client can act as a Publisher, or a Subscriber, or both, e.g., by publishing to some topics and subscribing to others. However, for the simplicity of presentation, this profile describes Publisher and Subscriber Clients separately.</t>
      <t>Both Publishers and Subscribers act as ACE Clients. The Broker acts as an ACE RS, and corresponds to the Dispatcher in <xref target="I-D.ietf-ace-key-groupcomm"/>. The Key Distribution Center (KDC) also acts as an ACE RS, and builds on what is defined for the KDC in <xref target="I-D.ietf-ace-key-groupcomm"/>. From a high-level point of view, the Clients interact with the KDC in order to join security groups, thereby obtaining the group keying material to protect end-to-end and verify the content published in the associated topics.</t>
      <figure anchor="archi">
        <name>Architecture for Pub-Sub with Authorization Server and Key Distribution Center</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="400" viewBox="0 0 400 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,224 L 8,304" fill="none" stroke="black"/>
              <path d="M 48,160 L 48,216" fill="none" stroke="black"/>
              <path d="M 80,192 L 80,216" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,112" fill="none" stroke="black"/>
              <path d="M 112,224 L 112,304" fill="none" stroke="black"/>
              <path d="M 192,120 L 192,160" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,112" fill="none" stroke="black"/>
              <path d="M 288,224 L 288,304" fill="none" stroke="black"/>
              <path d="M 336,120 L 336,192" fill="none" stroke="black"/>
              <path d="M 392,32 L 392,112" fill="none" stroke="black"/>
              <path d="M 392,224 L 392,304" fill="none" stroke="black"/>
              <path d="M 112,32 L 240,32" fill="none" stroke="black"/>
              <path d="M 272,32 L 392,32" fill="none" stroke="black"/>
              <path d="M 112,112 L 240,112" fill="none" stroke="black"/>
              <path d="M 272,112 L 392,112" fill="none" stroke="black"/>
              <path d="M 48,160 L 96,160" fill="none" stroke="black"/>
              <path d="M 144,160 L 192,160" fill="none" stroke="black"/>
              <path d="M 80,192 L 224,192" fill="none" stroke="black"/>
              <path d="M 272,192 L 336,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 112,224" fill="none" stroke="black"/>
              <path d="M 288,224 L 392,224" fill="none" stroke="black"/>
              <path d="M 120,240 L 176,240" fill="none" stroke="black"/>
              <path d="M 224,240 L 280,240" fill="none" stroke="black"/>
              <path d="M 120,272 L 176,272" fill="none" stroke="black"/>
              <path d="M 224,272 L 280,272" fill="none" stroke="black"/>
              <path d="M 8,304 L 112,304" fill="none" stroke="black"/>
              <path d="M 288,304 L 392,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="344,120 332,114.4 332,125.6" fill="black" transform="rotate(270,336,120)"/>
              <polygon class="arrowhead" points="288,272 276,266.4 276,277.6" fill="black" transform="rotate(0,280,272)"/>
              <polygon class="arrowhead" points="288,240 276,234.4 276,245.6" fill="black" transform="rotate(0,280,240)"/>
              <polygon class="arrowhead" points="200,120 188,114.4 188,125.6" fill="black" transform="rotate(270,192,120)"/>
              <polygon class="arrowhead" points="128,272 116,266.4 116,277.6" fill="black" transform="rotate(180,120,272)"/>
              <polygon class="arrowhead" points="128,240 116,234.4 116,245.6" fill="black" transform="rotate(180,120,240)"/>
              <polygon class="arrowhead" points="88,216 76,210.4 76,221.6" fill="black" transform="rotate(90,80,216)"/>
              <polygon class="arrowhead" points="56,216 44,210.4 44,221.6" fill="black" transform="rotate(90,48,216)"/>
              <g class="text">
                <text x="176" y="52">Authorization</text>
                <text x="328" y="52">Key</text>
                <text x="172" y="68">Server</text>
                <text x="332" y="68">Distribution</text>
                <text x="180" y="84">(AS)</text>
                <text x="332" y="84">Center</text>
                <text x="328" y="100">(KDC)</text>
                <text x="120" y="164">(A)</text>
                <text x="248" y="196">(B)</text>
                <text x="200" y="244">(O)</text>
                <text x="56" y="260">Pub-Sub</text>
                <text x="340" y="260">Broker</text>
                <text x="52" y="276">Client</text>
                <text x="200" y="276">(C)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
             +---------------+   +--------------+
             | Authorization |   |     Key      |
             |    Server     |   | Distribution |
             |      (AS)     |   |    Center    |
             |               |   |    (KDC)     |
             +---------------+   +--------------+
                       ^                 ^
                       |                 |
     +------ (A) ------+                 |
     |                                   |
     |   +------------------ (B) --------+
     v   v
+------------+                     +------------+
|            |<------- (O) ------->|            |
|  Pub-Sub   |                     |   Broker   |
|  Client    |<------- (C) ------->|            |
|            |                     |            |
+------------+                     +------------+
]]></artwork>
        </artset>
      </figure>
      <t>Both Publishers and Subscribers <bcp14>MUST</bcp14> use the same protocol for interacting with the Broker and  participating in Pub-Sub communications. When using the profile defined in this document, such a protocol <bcp14>MUST</bcp14> be CoAP <xref target="RFC7252"/>, which is used as described in <xref target="I-D.ietf-core-coap-pubsub"/>. What is specified in this document can apply to other protocols for Pub-Sub communications such as MQTT <xref target="MQTT-OASIS-Standard-v5"/>, or to further transport protocols.</t>
      <t>All Publishers and Subscribers <bcp14>MUST</bcp14> use CoAP when communicating with the KDC.</t>
      <t>Furthermore, both Publishers and Subscribers <bcp14>MUST</bcp14> use the same transport profile of ACE (e.g., <xref target="RFC9202"/> for DTLS; or <xref target="RFC9203"/> or <xref target="I-D.ietf-ace-edhoc-oscore-profile"/> for OSCORE) in their interaction with the Broker. In order to reduce the number of libraries that Clients have to support, it is <bcp14>RECOMMENDED</bcp14> that the same transport profile of ACE is used also for the interaction between the Clients and the KDC.</t>
      <t>All communications between the involved entities <bcp14>MUST</bcp14> be secured.</t>
      <t>For each Client, the Client and the Broker <bcp14>MUST</bcp14> have a secure communication association, which they establish with the help of the AS and using a transport profile of ACE. This is shown by the interactions A and C in <xref target="archi"/>. During this process, the Client obtains an access token from the AS and uploads it to the Broker, thus providing an evidence of the topics that it is authorized to participate in, and with which permissions.</t>
      <t>For each Client, the Client and the KDC <bcp14>MUST</bcp14> have a secure communication association, which they also establish with the help of the AS and using a transport profile of ACE. This is shown by the interactions A and B in <xref target="archi"/>. During this process, the Client obtains an access token from the AS and uploads it to the KDC, thus providing an evidence of the security groups that it can join, as associated with the topics of interest at the Broker. Based on the permissions specified in the access token, the Client can request the KDC to join a security group, after which the Client obtains from the KDC the keying material to use for communicating with the other group members. This builds on the process for joining security groups with ACE, as defined in <xref target="I-D.ietf-ace-key-groupcomm"/> and further specified in this document.</t>
      <t>In addition, this profile allows an anonymous Client to perform some of the discovery operations defined in <xref section="2.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/> through the Broker, as shown by the interaction O in <xref target="archi"/>. That is, an anonymous Client can discover:</t>
      <ul spacing="normal">
        <li>
          <t>the Broker itself, by relying on the resource type "core.ps" (see <xref section="2.3.1" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>); and</t>
        </li>
        <li>
          <t>topics of interest at the Broker (i.e., the corresponding topic resources hosted at the Broker), by relying on the resource type "core.ps.conf" (see <xref section="2.3.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>).</t>
        </li>
      </ul>
      <t>However, an anonymous Client is not allowed to access topic resources at the Broker and obtain from those any additional information or metadata about the corresponding topic (e.g., the topic status, the URI of the topic-data resource where to publish or subscribe for that topic, or the URI to the KDC).</t>
      <t>As highlighted in <xref target="associations"/>, each Client maintains two different security associations pertaining to the Pub-Sub group communication. On the one hand, the Client has a pairwise security association with the Broker, which, as an ACE RS, verifies that the Client is authorized to perform data operations (i.e., publish, subscribe, read, delete) on a certain set of topics (Security Association 1). As discussed above, this security association is set up with the help of the AS and using a transport profile of ACE, when the Client obtains the access token to upload to the Broker.</t>
      <t>On the other hand, separately for each topic, all the Publisher and Subscribers for that topic have a common, group security association, through which the published content sent through the Broker is protected end-to-end (Security Association 2). As discussed above, this security association is set up and maintained as the different Clients request the KDC to join the security group, upon which they obtain from the KDC the corresponding group keying material to use for protecting end-to-end and verifying the content of their Pub-Sub group communication.</t>
      <figure anchor="associations">
        <name>Security Associations between Publisher, Broker, and Subscriber</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="544" viewBox="0 0 544 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 40,120 L 40,208" fill="none" stroke="black"/>
              <path d="M 72,120 L 72,160" fill="none" stroke="black"/>
              <path d="M 104,32 L 104,112" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,112" fill="none" stroke="black"/>
              <path d="M 248,120 L 248,160" fill="none" stroke="black"/>
              <path d="M 288,120 L 288,160" fill="none" stroke="black"/>
              <path d="M 320,32 L 320,112" fill="none" stroke="black"/>
              <path d="M 432,32 L 432,112" fill="none" stroke="black"/>
              <path d="M 464,120 L 464,160" fill="none" stroke="black"/>
              <path d="M 504,120 L 504,208" fill="none" stroke="black"/>
              <path d="M 536,32 L 536,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 104,32" fill="none" stroke="black"/>
              <path d="M 216,32 L 320,32" fill="none" stroke="black"/>
              <path d="M 432,32 L 536,32" fill="none" stroke="black"/>
              <path d="M 8,112 L 104,112" fill="none" stroke="black"/>
              <path d="M 216,112 L 320,112" fill="none" stroke="black"/>
              <path d="M 432,112 L 536,112" fill="none" stroke="black"/>
              <path d="M 72,160 L 112,160" fill="none" stroke="black"/>
              <path d="M 200,160 L 248,160" fill="none" stroke="black"/>
              <path d="M 288,160 L 336,160" fill="none" stroke="black"/>
              <path d="M 424,160 L 464,160" fill="none" stroke="black"/>
              <path d="M 40,208 L 224,208" fill="none" stroke="black"/>
              <path d="M 312,208 L 504,208" fill="none" stroke="black"/>
              <g class="text">
                <text x="56" y="68">Publisher</text>
                <text x="268" y="68">Broker</text>
                <text x="484" y="68">Subscriber</text>
                <text x="156" y="164">Security</text>
                <text x="380" y="164">Security</text>
                <text x="152" y="180">Association</text>
                <text x="208" y="180">1</text>
                <text x="376" y="180">Association</text>
                <text x="432" y="180">1</text>
                <text x="268" y="212">Security</text>
                <text x="264" y="228">Association</text>
                <text x="320" y="228">2</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+-----------+             +------------+             +------------+
|           |             |            |             |            |
| Publisher |             |   Broker   |             | Subscriber |
|           |             |            |             |            |
|           |             |            |             |            |
+-----------+             +------------+             +------------+
    |   |                     |    |                     |    |
    |   |                     |    |                     |    |
    |   '----- Security ------'    '------ Security -----'    |
    |        Association 1               Association 1        |
    |                                                         |
    '----------------------- Security ------------------------'
                           Association 2
]]></artwork>
        </artset>
      </figure>
      <t>In summary, this profile specifies the following functionalities.</t>
      <ol spacing="normal" type="1"><li>
          <t>A Client obtains the authorization to participate in a Pub-Sub topic at the Broker with certain permissions. This pertains operations defined in <xref target="I-D.ietf-core-coap-pubsub"/> for taking part in Pub-Sub communication with CoAP.</t>
        </li>
        <li>
          <t>A Client obtains the authorization to join a security group with certain permissions. This allows the Client to obtain from the KDC the group keying material for communicating with other group members, i.e., to protect end-to-end and verify the content published at the Broker on topics associated with the security group.</t>
        </li>
        <li>
          <t>A Client obtains from the KDC the authentication credentials of other group members, and provides or updates the KDC with its own authentication credential.</t>
        </li>
        <li>
          <t>A Client leaves the group or is removed from the group by the KDC.</t>
        </li>
        <li>
          <t>The KDC renews and redistributes the group keying material (rekeying), e.g., due to a membership change in the group.</t>
        </li>
      </ol>
      <t><xref target="groupcomm_requirements"/> lists the specifications on this application profile of ACE, based on the requirements defined in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
    </section>
    <section anchor="authorisation">
      <name>Getting Authorisation to Join a Pub-Sub security group (A)</name>
      <t><xref target="message-flow"/> provides a high level overview of the message flow for a Client getting authorisation to join a group. Square brackets denote optional steps. The message flow is expanded in the subsequent sections.</t>
      <figure anchor="message-flow">
        <name>Authorisation Flow</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="552" viewBox="0 0 552 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,48 L 24,560" fill="none" stroke="black"/>
              <path d="M 432,48 L 432,152" fill="none" stroke="black"/>
              <path d="M 432,184 L 432,328" fill="none" stroke="black"/>
              <path d="M 432,360 L 432,392" fill="none" stroke="black"/>
              <path d="M 432,424 L 432,448" fill="none" stroke="black"/>
              <path d="M 432,488 L 432,560" fill="none" stroke="black"/>
              <path d="M 496,48 L 496,392" fill="none" stroke="black"/>
              <path d="M 496,424 L 496,456" fill="none" stroke="black"/>
              <path d="M 496,488 L 496,560" fill="none" stroke="black"/>
              <path d="M 536,48 L 536,560" fill="none" stroke="black"/>
              <path d="M 40,64 L 104,64" fill="none" stroke="black"/>
              <path d="M 344,64 L 416,64" fill="none" stroke="black"/>
              <path d="M 40,96 L 152,96" fill="none" stroke="black"/>
              <path d="M 304,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 40,112 L 160,112" fill="none" stroke="black"/>
              <path d="M 296,112 L 416,112" fill="none" stroke="black"/>
              <path d="M 24,160 L 64,160" fill="none" stroke="black"/>
              <path d="M 408,160 L 488,160" fill="none" stroke="black"/>
              <path d="M 32,176 L 64,176" fill="none" stroke="black"/>
              <path d="M 416,176 L 496,176" fill="none" stroke="black"/>
              <path d="M 24,224 L 72,224" fill="none" stroke="black"/>
              <path d="M 376,224 L 424,224" fill="none" stroke="black"/>
              <path d="M 32,240 L 72,240" fill="none" stroke="black"/>
              <path d="M 376,240 L 424,240" fill="none" stroke="black"/>
              <path d="M 40,288 L 56,288" fill="none" stroke="black"/>
              <path d="M 392,288 L 416,288" fill="none" stroke="black"/>
              <path d="M 24,336 L 80,336" fill="none" stroke="black"/>
              <path d="M 400,336 L 488,336" fill="none" stroke="black"/>
              <path d="M 32,352 L 80,352" fill="none" stroke="black"/>
              <path d="M 408,352 L 496,352" fill="none" stroke="black"/>
              <path d="M 24,400 L 96,400" fill="none" stroke="black"/>
              <path d="M 400,400 L 528,400" fill="none" stroke="black"/>
              <path d="M 32,416 L 96,416" fill="none" stroke="black"/>
              <path d="M 400,416 L 528,416" fill="none" stroke="black"/>
              <path d="M 24,464 L 64,464" fill="none" stroke="black"/>
              <path d="M 472,464 L 528,464" fill="none" stroke="black"/>
              <path d="M 32,480 L 88,480" fill="none" stroke="black"/>
              <path d="M 416,480 L 536,480" fill="none" stroke="black"/>
              <path d="M 24,528 L 144,528" fill="none" stroke="black"/>
              <path d="M 296,528 L 424,528" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="536,464 524,458.4 524,469.6" fill="black" transform="rotate(0,528,464)"/>
              <polygon class="arrowhead" points="536,416 524,410.4 524,421.6" fill="black" transform="rotate(0,528,416)"/>
              <polygon class="arrowhead" points="536,400 524,394.4 524,405.6" fill="black" transform="rotate(0,528,400)"/>
              <polygon class="arrowhead" points="496,336 484,330.4 484,341.6" fill="black" transform="rotate(0,488,336)"/>
              <polygon class="arrowhead" points="496,160 484,154.4 484,165.6" fill="black" transform="rotate(0,488,160)"/>
              <polygon class="arrowhead" points="432,528 420,522.4 420,533.6" fill="black" transform="rotate(0,424,528)"/>
              <polygon class="arrowhead" points="432,240 420,234.4 420,245.6" fill="black" transform="rotate(0,424,240)"/>
              <polygon class="arrowhead" points="432,224 420,218.4 420,229.6" fill="black" transform="rotate(0,424,224)"/>
              <polygon class="arrowhead" points="424,288 412,282.4 412,293.6" fill="black" transform="rotate(0,416,288)"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6" fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="424,64 412,58.4 412,69.6" fill="black" transform="rotate(0,416,64)"/>
              <polygon class="arrowhead" points="48,288 36,282.4 36,293.6" fill="black" transform="rotate(180,40,288)"/>
              <polygon class="arrowhead" points="48,112 36,106.4 36,117.6" fill="black" transform="rotate(180,40,112)"/>
              <polygon class="arrowhead" points="48,64 36,58.4 36,69.6" fill="black" transform="rotate(180,40,64)"/>
              <polygon class="arrowhead" points="40,480 28,474.4 28,485.6" fill="black" transform="rotate(180,32,480)"/>
              <polygon class="arrowhead" points="40,416 28,410.4 28,421.6" fill="black" transform="rotate(180,32,416)"/>
              <polygon class="arrowhead" points="40,352 28,346.4 28,357.6" fill="black" transform="rotate(180,32,352)"/>
              <polygon class="arrowhead" points="40,240 28,234.4 28,245.6" fill="black" transform="rotate(180,32,240)"/>
              <polygon class="arrowhead" points="40,176 28,170.4 28,181.6" fill="black" transform="rotate(180,32,176)"/>
              <g class="text">
                <text x="28" y="36">Client</text>
                <text x="428" y="36">Broker</text>
                <text x="492" y="36">AS</text>
                <text x="536" y="36">KDC</text>
                <text x="32" y="68">[</text>
                <text x="152" y="68">Discovery</text>
                <text x="204" y="68">of</text>
                <text x="240" y="68">Topic</text>
                <text x="300" y="68">Resource</text>
                <text x="424" y="68">]</text>
                <text x="32" y="100">[</text>
                <text x="196" y="100">Resource</text>
                <text x="264" y="100">Request</text>
                <text x="424" y="100">]</text>
                <text x="32" y="116">[</text>
                <text x="180" y="116">AS</text>
                <text x="240" y="116">Information</text>
                <text x="424" y="116">]</text>
                <text x="128" y="164">Authorisation</text>
                <text x="216" y="164">Request</text>
                <text x="292" y="164">(Audience:</text>
                <text x="368" y="164">Broker)</text>
                <text x="128" y="180">Authorisation</text>
                <text x="220" y="180">Response</text>
                <text x="300" y="180">(Audience:</text>
                <text x="376" y="180">Broker)</text>
                <text x="108" y="228">Upload</text>
                <text x="148" y="228">of</text>
                <text x="216" y="228">authorisation</text>
                <text x="320" y="228">information</text>
                <text x="136" y="244">Establishment</text>
                <text x="204" y="244">of</text>
                <text x="244" y="244">secure</text>
                <text x="320" y="244">association</text>
                <text x="32" y="292">[</text>
                <text x="104" y="292">Discovery</text>
                <text x="156" y="292">of</text>
                <text x="184" y="292">KDC</text>
                <text x="216" y="292">and</text>
                <text x="252" y="292">name</text>
                <text x="284" y="292">of</text>
                <text x="316" y="292">sec.</text>
                <text x="360" y="292">group</text>
                <text x="424" y="292">]</text>
                <text x="144" y="340">Authorisation</text>
                <text x="232" y="340">Request</text>
                <text x="308" y="340">(Audience:</text>
                <text x="372" y="340">KDC)</text>
                <text x="144" y="356">Authorisation</text>
                <text x="236" y="356">Response</text>
                <text x="316" y="356">(Audience:</text>
                <text x="380" y="356">KDC)</text>
                <text x="132" y="404">Upload</text>
                <text x="172" y="404">of</text>
                <text x="240" y="404">authorisation</text>
                <text x="344" y="404">information</text>
                <text x="160" y="420">Establishment</text>
                <text x="228" y="420">of</text>
                <text x="268" y="420">secure</text>
                <text x="344" y="420">association</text>
                <text x="104" y="468">Request</text>
                <text x="148" y="468">to</text>
                <text x="180" y="468">join</text>
                <text x="216" y="468">the</text>
                <text x="268" y="468">security</text>
                <text x="328" y="468">group</text>
                <text x="368" y="468">for</text>
                <text x="400" y="468">the</text>
                <text x="440" y="468">topic</text>
                <text x="124" y="484">Keying</text>
                <text x="188" y="484">material</text>
                <text x="240" y="484">for</text>
                <text x="272" y="484">the</text>
                <text x="324" y="484">security</text>
                <text x="384" y="484">group</text>
                <text x="188" y="532">Resource</text>
                <text x="256" y="532">Request</text>
                <text x="168" y="548">(Publication/Subscription</text>
                <text x="284" y="548">to</text>
                <text x="312" y="548">the</text>
                <text x="356" y="548">topic)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
Client                                            Broker    AS   KDC
  |                                                  |       |    |
  |[<-------- Discovery of Topic Resource --------->]|       |    |
  |                                                  |       |    |
  |[--------------- Resource Request -------------->]|       |    |
  |[<--------------- AS Information ----------------]|       |    |
  |                                                  |       |    |
  |                                                  |       |    |
  +----- Authorisation Request (Audience: Broker) ---------->|    |
  |<---- Authorisation Response (Audience: Broker) ----------+    |
  |                                                  |       |    |
  |                                                  |       |    |
  +------ Upload of authorisation information ------>|       |    |
  |<----- Establishment of secure association ------>|       |    |
  |                                                  |       |    |
  |                                                  |       |    |
  |[<-- Discovery of KDC and name of sec. group --->]|       |    |
  |                                                  |       |    |
  |                                                  |       |    |
  +------- Authorisation Request (Audience: KDC) ----------->|    |
  |<------ Authorisation Response (Audience: KDC) -----------+    |
  |                                                  |       |    |
  |                                                  |       |    |
  +--------- Upload of authorisation information ---------------->|
  |<-------- Establishment of secure association ---------------->|
  |                                                  |       |    |
  |                                                  |       |    |
  +----- Request to join the security group for the topic ------->|
  |<------- Keying material for the security group ---------------+
  |                                                  |       |    |
  |                                                  |       |    |
  +--------------- Resource Request ---------------->|       |    |
  |     (Publication/Subscription to the topic)      |       |    |
  |                                                  |       |    |
]]></artwork>
        </artset>
      </figure>
      <t>Since <xref target="RFC9200"/> recommends the use of CoAP and CBOR, this document describes the exchanges assuming that CoAP and CBOR are used.</t>
      <t>However, using HTTP instead of CoAP is possible, by leveraging the corresponding parameters and methods. Analogously, JSON <xref target="RFC8259"/> can be used instead of CBOR, by relying on the conversion method specified in Sections <xref target="RFC8949" section="6.1" sectionFormat="bare"/> and <xref target="RFC8949" section="6.2" sectionFormat="bare"/> of <xref target="RFC8949"/>. In case JSON is used, the Content-Format of the message has to be specified accordingly. Exact definitions of these exchanges are out of scope for this document.</t>
      <section anchor="topic-discovery">
        <name>Topic Discovery at the Broker (Optional)</name>
        <t>The discovery of a topic at the Broker can be performed by discovering the corresponding topic resource hosted at the Broker. For example, the Client can send a lookup request to /.well-known/core at the Broker, specifying as lookup criterion the resource type "core.ps.conf" (see <xref section="2.3.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>).</t>
        <t>Although the links to the topic resources are also specified in the representation of the collection resource at the Broker (see <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>), the Client is not supposed to access such a resource, as intended for administrative operations that are out of the scope of this document.</t>
      </section>
      <section anchor="AS-discovery">
        <name>AS Discovery at the Broker (Optional)</name>
        <t>Complementary to what is defined in <xref section="5.1" sectionFormat="of" target="RFC9200"/> for AS discovery, the Broker <bcp14>MAY</bcp14> send the address of the AS to the Client in the 'AS' parameter of the AS Request Creation Hints, as a response to an Unauthorized Resource Request (see <xref section="5.2" sectionFormat="of" target="RFC9200"/>). An example using the CBOR diagnostic notation and CoAP is given below.</t>
        <figure anchor="AS-info-ex">
          <name>AS Request Creation Hints Example</name>
          <artwork align="left"><![CDATA[
    4.01 Unauthorized
    Content-Format: application/ace+cbor
    Payload:
    {
     / AS / 1 : "coaps://as.example.com/token"
    }
]]></artwork>
        </figure>
      </section>
      <section anchor="kdc-discovery">
        <name>KDC Discovery at the Broker (Optional)</name>
        <t>Once a Client has obtained an access token from the AS and accordingly established a secure association with the Broker, the Client has the permission to access the topic resources at the Broker that pertain to the topics on which the Client is authorized to operate.</t>
        <t>In particular the Client is authorized to retrieve the representation of a topic resource, from which the Client can retrieve information related to the topic in question, as specified in <xref section="2.5" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>.</t>
        <t>This profile extends the set of CoAP Pub-Sub Parameters that is possible to specify within the representation of a topic resource, as originally defined in <xref section="3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>. In particular, this profile defines the following two parameters that the Broker can specify in a response from a topic resource (see <xref section="2.5" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>). Note that, when these parameters are transported in their respective fields of the message payload, the Content-Format application/core-pubsub+cbor defined in <xref target="I-D.ietf-core-coap-pubsub"/> <bcp14>MUST</bcp14> be used.</t>
        <ul spacing="normal">
          <li>
            <t>'kdc_uri', with value the URI of the group membership resource at the KDC, where Clients can send a request to join the security group associated with the topic in question. The URI is encoded as a CBOR text string. Clients will have to obtain an access token from the AS to upload to the KDC, before starting the process to join the security group at the KDC.</t>
          </li>
          <li>
            <t>'sec_gp', specifying the name of the security group associated with the topic in question, as a stable and invariant identifier. The name of the security group is encoded as a CBOR text string.</t>
          </li>
        </ul>
        <t>Furthermore, the Resource Type (rt=) Link Target Attribute value "core.ps.gm" is registered in <xref target="core_rt"/> (REQ10), and can be used to describe group-membership resources at KDC, e.g., by using a link-format document <xref target="RFC6690"/>. As an alternative to the discovery approach defined above and provided by the Broker, applications can use this common resource type to discover links to group-membership resources at the KDC for joining security groups associated with Pub-Sub topics.</t>
      </section>
      <section anchor="auth-request">
        <name>Authorisation Request/Response for the KDC and the Broker</name>
        <t>A Client sends two Authorisation Requests to the AS, targeting two different audiences, i.e., the Broker and the KDC.</t>
        <t>As to the former, the AS handles Authorisation Requests related to a topic for which the Client is allowed to perform topic data operations at the Broker, as corresponding to an application group.</t>
        <t>As to the latter, the AS handles Authorization Requests for security groups that the Client is allowed to join, in order to obtain the group keying material for protecting end-to-end and verifying the content of exchanged messages on the associated Pub-Sub topics.</t>
        <t>This section builds on <xref section="3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> and defines only additions or modifications to that specification.</t>
        <t>Both Authorisation Requests include the following fields (see <xref section="3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>):</t>
        <ul spacing="normal">
          <li>
            <t>'scope': Optional. If present, it specifies the following information, depending on the specifically targeted audience.  </t>
            <t>
If the audience is the Broker, the scope specifies the name of the topics that the Client wishes to access, together with the corresponding requested permissions. If the audience is the KDC, the scope specifies the name of the security groups that the Client wishes to join, together with the corresponding requested permissions.  </t>
            <t>
This parameter is encoded as a CBOR byte string, whose value is the binary encoding of a CBOR array. The format of the encoded scope <bcp14>MUST</bcp14> follow the data model AIF-PUBSUB-GROUPCOMM defined in <xref target="scope"/>.</t>
          </li>
          <li>
            <t>'audience': Required identifier corresponding to either the Broker or the KDC.</t>
          </li>
        </ul>
        <t>Other additional parameters can be included if necessary, as defined in <xref target="RFC9200"/>.</t>
        <t>When using this profile, it is expected that a one-to-one mapping is enforced between the application group and the security group (see <xref target="overview"/>). If this is not the case, the correct access policies for both sets of scopes have to be available to the AS.</t>
        <section anchor="scope">
          <name>Format of Scope</name>
          <t>Building on <xref section="3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, this section defines the exact format and encoding of scope used in this profile.</t>
          <t>To this end, this profile uses the Authorization Information Format (AIF) <xref target="RFC9237"/> (REQ1). With reference to the generic AIF model</t>
          <artwork><![CDATA[
      AIF-Generic<Toid, Tperm> = [* [Toid, Tperm]]
]]></artwork>
          <t>the value of the CBOR byte string used as scope encodes the CBOR array [* [Toid, Tperm]], where each [Toid, Tperm] element corresponds to one scope entry.</t>
          <t>Furthermore, this document defines the new AIF data model AIF-PUBSUB-GROUPCOMM that this profile <bcp14>MUST</bcp14> use to format and encode scope entries.</t>
          <t>In particular, the following holds for each scope entry.</t>
          <t>The object identifier ("Toid") is specialized as a CBOR item specifying the name of the group pertaining to the scope entry.</t>
          <t>The permission set ("Tperm") is specialized as a CBOR unsigned integer with value R, specifying the permissions that the Client wishes to have in the group indicated by "Toid".</t>
          <t>More specifically, the following applies when, as defined in this document, a scope entry includes a set of permissions for user-related operations performed by a pubsub Client.</t>
          <ul spacing="normal">
            <li>
              <t>The object identifier ("Toid") is a CBOR text string, specifying the name of one application group (topic) or of the corresponding security group to which the scope entry pertains.</t>
            </li>
            <li>
              <t>The permission set ("Tperm") is a CBOR unsigned integer, whose value R specifies the operations that the Client wishes to or has been authorized to perform on the resources at the Broker associated with the application group (topic) indicated by "Toid", or on the resources at the KDC associated with the security group indicated by "Toid" (REQ1). The value R is computed as follows.  </t>
              <ul spacing="normal">
                <li>
                  <t>Each operation (i.e., permission detail) in the permission set is converted into the corresponding numeric identifier X taken from the following set.      </t>
                  <ul spacing="normal">
                    <li>
                      <t>Admin (0): This operation is reserved for scope entries that express permissions for Administrators of Pub-Sub groups, which are not specified in this document.</t>
                    </li>
                    <li>
                      <t>AppGroup (1): This operation is signaled as wished/authorized when "Toid" specifies the name of an application group (topic), while it is signaled as not wished/authorized when Toid specifies the name of a security group.</t>
                    </li>
                    <li>
                      <t>Publish (2): This operation concerns the publication of data to the topic in question, performed by means of a PUT request sent by a Publisher Client to the corresponding topic-data resource at the Broker.</t>
                    </li>
                    <li>
                      <t>Read (3): This operation concerns both: i) the subscription at the topic-data resource for the topic in question at the Broker, performed by means of a GET request with the CoAP Observe Option set to 0 and sent by a Subscriber Client; and ii) the simple reading of the latest data published to the topic in question, performed by means of a simple GET request sent to the same topic-data resource.</t>
                    </li>
                    <li>
                      <t>Delete (4): This operation concerns the deletion of the topic-data resource for the topic in question at the Broker, performed by means of a DELETE request sent to that resource.          </t>
                      <t>
If a Client wishes to obtain only the Delete permission on an application group, then the Client does not need to join the corresponding security group, hence it does not need to request an access token for interacting with the KDC.          </t>
                      <t>
If a Client wishes to obtain the Delete operation on a security group, then the AS and the KDC ignore the wish for that operation when processing the scope entry in question.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The set of N numeric identifiers is converted into the single value R, by taking two to the power of each numeric identifier X_1, X_2, ..., X_N, and then computing the inclusive OR of the binary representations of all the power values.</t>
                </li>
              </ul>
              <t>
Since this application profile considers user-related operations, the "Admin" operation is signaled as not wished/authorized. That is, the scope entries <bcp14>MUST</bcp14> have the least significant bit of "Tperm" set to 0.</t>
            </li>
          </ul>
          <t>If the "Toid" of a scope entry in an access token specifies the name of an application group (i.e., the "AppGroup" operation is signaled as authorized), the Client has also the permission to retrieve the configuration of the application group (topic) whose name is indicated by "Toid", by sending a GET or FETCH request to the corresponding topic resource at the Broker.</t>
          <t>The specific interactions between the Client and the Broker are defined in <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
          <t>The following CDDL <xref target="RFC8610"/> notation defines a scope entry that uses the AIF-PUBSUB-GROUPCOMM data model and expresses a set of permissions.</t>
          <figure anchor="scope-aif">
            <name>Pub-Sub scope using the AIF format</name>
            <artwork align="center"><![CDATA[
  AIF-PUBSUB-GROUPCOMM = AIF-Generic<pubsub-group, pubsub-perm>
   pubsub-group = tstr ; name of Pub-Sub topic or of
                       ; the associated security group

   pubsub-perm = uint .bits pubsub-perm-details

   pubsub-perm-details = &(
    Admin: 0,
    AppGroup: 1
    Publish: 2,
    Read: 3,
    Delete: 4
   )

   scope_entry = [pubsub-group, pubsub-perm]
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="as-response">
        <name>Authorisation response</name>
        <t>The AS responds with an Authorization Response as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/> and <xref section="3.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, with the following additions:</t>
        <ul spacing="normal">
          <li>
            <t>In the Authorization Response, the AS <bcp14>MUST</bcp14> include the 'expires_in' parameter.  Other means for the AS to specify the lifetime of access tokens are out of the scope of this document.</t>
          </li>
          <li>
            <t>In the Authorization Response, the AS <bcp14>MUST</bcp14> include the 'scope' parameter, when the value included in the access token differs from the one specified by the Client in the Authorization Request.  In such a case, the second element of each scope entry specifies the set of operations that the Client is authorized for that scope entry, encoded as specified in <xref target="auth-request"/>.</t>
          </li>
        </ul>
        <t>Furthermore, the AS <bcp14>MAY</bcp14> use the extended format of scope defined in <xref section="7" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> for the 'scope' claim of the access token. In such a case, the AS <bcp14>MUST</bcp14> use the CBOR tag with tag number TAG_NUMBER, associated with the CoAP Content-Format CF_ID for the media type application/aif+cbor registered in <xref target="content_formats"/> of this document (REQ28).</t>
        <t>Note to RFC Editor: In the previous paragraph, please replace "TAG_NUMBER" with the CBOR tag number computed as TN(ct) in <xref section="4.3" sectionFormat="of" target="RFC9277"/>, where ct is the ID assigned to the CoAP Content-Format registered in <xref target="content_formats"/> of this document.  Then, please replace "CF_ID" with the ID assigned to that CoAP Content-Format.  Finally, please delete this paragraph.</t>
        <t>This indicates that the binary encoded scope follows the scope semantics defined for this application profile in <xref target="scope"/> of this document.</t>
      </section>
      <section anchor="token-post">
        <name>Token Transfer to KDC</name>
        <t>The Client transfers its access token to the KDC using one of the methods defined in the Section 3.3 of <xref target="I-D.ietf-ace-key-groupcomm"/>. This typically includes sending a POST request to the authz-info endpoint. However, if the DTLS transport profile of ACE <xref target="RFC9202"/> is used and the Client uses a symmetric proof-of-possession key in the DTLS handshake, the Client <bcp14>MAY</bcp14> provide the access token to the KDC in the "psk_identity" field of the DTLS ClientKeyExchange message when using DTLS 1.2 <xref target="RFC6347"/>, or in the "identity" field of a PskIdentity within the PreSharedKeyExtension of the ClientHello message when using DTLS 1.3 <xref target="RFC9147"/>. In addition to that, the following applies.</t>
        <t>In the Token Transfer Response to the Publishers, i.e., the Clients whose scope of the access token includes the "Publish" permission for at least one scope entry, the KDC <bcp14>MUST</bcp14> include the parameter 'kdcchallenge' in the CBOR map. 'kdcchallenge' is a challenge N_S generated by the KDC, and is <bcp14>RECOMMENDED</bcp14> to be an 8-byte long random nonce. Later when joining the group, the Publisher can use the 'kdcchallenge' as part of proving possession of its private key (see <xref target="I-D.ietf-ace-key-groupcomm"/>). If a Publisher provides the access token to the KDC through an authz-info endpoint, the Client <bcp14>MUST</bcp14> support the parameter 'kdcchallenge'.</t>
        <t>If 'sign_info' is included in the Token Transfer Request, the KDC <bcp14>SHOULD</bcp14> include the 'sign_info' parameter in the Token Transfer Response. Note that the joining node may have obtained such information by alternative means, e.g., the 'sign_info' may have been pre-configured (OPT3).</t>
        <t>The following applies for each element 'sign_info_entry'.</t>
        <ul spacing="normal">
          <li>
            <t>'sign_alg' <bcp14>MUST</bcp14> take its value from the "Value" column of one of the recommended algorithms in the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/> (REQ3).</t>
          </li>
          <li>
            <t>'sign_parameters' is a CBOR array.  Its format and value are the same of the COSE capabilities array for the algorithm indicated in 'sign_alg' under the "Capabilities" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/> (REQ4).</t>
          </li>
          <li>
            <t>'sign_key_parameters' is a CBOR array.  Its format and value are the same of the COSE capabilities array for the COSE key type of the keys used with the algorithm indicated in 'sign_alg', as specified for that key type in the "Capabilities" column of the "COSE Key Types" registry <xref target="IANA.cose_key-type"/> (REQ5).</t>
          </li>
          <li>
            <t>'cred_fmt' takes value from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/> (REQ6). Acceptable values denote a format of authentication credential that <bcp14>MUST</bcp14> explicitly provide the public key as well as the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable). Acceptable formats of authentication credentials include CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC7925"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. Future formats would be acceptable to use as long as they comply with the criteria defined above.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="kdc-interface">
      <name>Client Group Communication Interface at the KDC</name>
      <t>In order to enable secure group communication for the Pub-Sub Clients, the KDC provides the resources listed in <xref target="tab-kdc-resources"/>. Each resource is marked as <bcp14>REQUIRED</bcp14> or <bcp14>OPTIONAL</bcp14> to be hosted at the KDC.</t>
      <table align="center" anchor="tab-kdc-resources">
        <name>Resources at the KDC</name>
        <thead>
          <tr>
            <th align="left">KDC resource</th>
            <th align="left">Description</th>
            <th align="left">Operations</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">/ace-group</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains a set of group names, each corresponding to one of the specified group identifiers.</td>
            <td align="left">FETCH (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains symmetric group keying material associated with GROUPNAME.</td>
            <td align="left">GET, POST (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/creds</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the authentication credentials of all the Publishers of the group with name GROUPNAME.</td>
            <td align="left">GET, FETCH (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/num</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the current version number for the symmetric group keying material of the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/nodes/NODENAME</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the group keying material for that group member NODENAME in GROUPNAME.</td>
            <td align="left">GET, DELETE (All Clients). PUT (Publishers).</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/nodes/NODENAME/cred</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Authentication credential for NODENAME in the group GROUPNAME.</td>
            <td align="left">POST (Publishers)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/kdc-cred</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14> if a group re-keying mechanism is used. Contains the authentication credential of the KDC for the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/policies</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14>. Contains the group policies of the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
        </tbody>
      </table>
      <t>The use of these resources follows what is defined in <xref target="I-D.ietf-ace-key-groupcomm"/>, and only additions or modifications to that specification are defined in this document.</t>
      <t>Consistent with what is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, some error responses from the KDC can convey error-specific information according to the problem-details format specified in <xref target="RFC9290"/>.</t>
      <section anchor="join">
        <name>Joining a Security Group</name>
        <t>This section describes the interactions between a Client and the KDC to join a security group. Source authentication of a message sent within the group is ensured by means of a digital signature embedded in the message. Subscribers must be able to retrieve Publishers' authentication credentials from a trusted repository, to verify source authentication of received messages. Hence, on joining a security group, a Publisher is expected to provide its own authentication credential to the KDC.</t>
        <t>On a successful join, the Clients receive from the KDC the symmetric COSE Key used as shared group key to protect the payload of a published topic data.</t>
        <t>The message exchange between the joining node and the KDC follows what is defined in <xref section="4.3.1.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, and only additions or modifications to that specification are defined in this document.</t>
        <figure anchor="join-flow">
          <name>Join Flow</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="320" viewBox="0 0 320 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,112" fill="none" stroke="black"/>
                <path d="M 304,48 L 304,112" fill="none" stroke="black"/>
                <path d="M 32,64 L 72,64" fill="none" stroke="black"/>
                <path d="M 248,64 L 296,64" fill="none" stroke="black"/>
                <path d="M 40,96 L 72,96" fill="none" stroke="black"/>
                <path d="M 256,96 L 304,96" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="304,64 292,58.4 292,69.6" fill="black" transform="rotate(0,296,64)"/>
                <polygon class="arrowhead" points="48,96 36,90.4 36,101.6" fill="black" transform="rotate(180,40,96)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="304" y="36">KDC</text>
                  <text x="100" y="68">Join</text>
                  <text x="152" y="68">Request</text>
                  <text x="212" y="68">(CoAP)</text>
                  <text x="100" y="100">Join</text>
                  <text x="156" y="100">Response</text>
                  <text x="220" y="100">(CoAP)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
   Client                              KDC
      |                                 |
      +----- Join Request (CoAP) ------>|
      |                                 |
      |<---- Join Response (CoAP) ------+
      |                                 |
]]></artwork>
          </artset>
        </figure>
        <section anchor="join-request">
          <name>Join Request</name>
          <t>After establishing a secure communication association with the KDC, the Client sends a Join Request to the KDC as described in <xref section="4.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. More specifically, the Client sends a POST request to the /ace-group/GROUPNAME endpoint, with Content-Format "application/ace-groupcomm+cbor". The payload contains the following information formatted as a CBOR map, which <bcp14>MUST</bcp14> be encoded as defined in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>:</t>
          <ul spacing="normal">
            <li>
              <t>'scope': It <bcp14>MUST</bcp14> be present and specify the group that the Client is attempting to join, i.e., the group name, and the permissions that the Client wishes to have in the group. This value corresponds to one scope entry, as defined in <xref target="scope"/>.</t>
            </li>
            <li>
              <t>'get_creds': It <bcp14>MAY</bcp14> be present if the Client wishes to join as a Subcriber and wants to retrieve the public keys of all the Publishers upon joining. Otherwise, this parameter <bcp14>MUST NOT</bcp14> be present. If the parameter is present, the parameter <bcp14>MUST</bcp14> encode the CBOR simple value <tt>null</tt> (0xf6). Note that the parameter 'role_filter' is not necessary, as the KDC returns the authentication credentials of Publishers by default.</t>
            </li>
            <li>
              <t>'client_cred': The use of this parameter is detailed in <xref target="client_cred"/>.</t>
            </li>
            <li>
              <t>'cnonce': It specifies a dedicated nonce N_C generated by the Client. It is <bcp14>RECOMMENDED</bcp14> to use an 8-byte long random nonce. Join Requests <bcp14>MUST</bcp14> include a new 'cnonce' at each join attempt.</t>
            </li>
            <li>
              <t>'client_cred_verify': The use of this parameter is detailed in <xref target="pop"/>.</t>
            </li>
          </ul>
          <t>As a Publisher Client has its own authentication credential to use in a group, it <bcp14>MUST</bcp14> support the client_cred', 'cnonce', and 'client_cred_verify' parameters.</t>
          <section anchor="client_cred">
            <name>Client Credentials in 'client_cred'</name>
            <t>One of the following cases can occur when a new Client attempts to join a security group.</t>
            <ul spacing="normal">
              <li>
                <t>The joining node is not a Publisher, i.e., it is not going to send data to the application group.  In this case, the joining node is not required to provide its own authentication credential to the KDC. In case the joining node still provides an authentication credential in the 'client_cred' parameter of the Join Request (see <xref target="join-request"/>), the KDC silently ignores that parameter, as well as the related parameter 'client_cred_verify'.</t>
              </li>
              <li>
                <t>The joining node wishes to join as a Publisher, and the KDC has not previously acquired an authentication credential of the joining node. Then, the joining node <bcp14>MUST</bcp14> provide a compatible authentication credential in the 'client_cred' parameter of the Join Request (see <xref target="join-request"/>).</t>
              </li>
              <li>
                <t>The joining node wishes to join as a Publisher, and the KDC already acquired the authentication credential of the joining node either during a past group joining process, or when establishing a secure communication association using asymmetric proof-of-possession keys.  </t>
                <t>
If the joining node's proof-of-possession key is compatible with the signature algorithm used in the security group and with possible associated parameters, then the corresponding authentication credential can be used in the group. In this case, the joining node <bcp14>MAY</bcp14> choose not to provide again its authentication credential to the KDC in order to limit the size of the Join Request.</t>
              </li>
            </ul>
            <t>The joining node <bcp14>MUST</bcp14> provide the KDC with its own authentication credential again, if it has previously provided the KDC with multiple authentication credentials intended for different security groups.</t>
            <t>If the joining node provides its authentication credential, the KDC performs the consistency checks above and, in case of success, considers it as the authentication credential associated with the joining node in the group.</t>
          </section>
          <section anchor="pop">
            <name>Proof-of-Possession</name>
            <t>The 'client_cred_verify' parameter contains the proof-of-possession evidence, and is computed as defined below (REQ14).</t>
            <t>The Publisher signs the scope, concatenated with N_S and concatenated with N_C, using the private key corresponding to the public key in the 'client_cred' parameter.</t>
            <t>The N_S may be either of the following:</t>
            <ul spacing="normal">
              <li>
                <t>The challenge received from the KDC in the 'kdcchallenge' parameter of the 2.01 (Created) response to the Token Transfer Request (see <xref target="token-post"/>).</t>
              </li>
              <li>
                <t>If the provisioning of the access token to the KDC has relied on the DTLS profile of ACE <xref target="RFC9202"/>, and the access token was specified in the "psk_identity" field of the ClientKeyExchange message when using DTLS 1.2 <xref target="RFC6347"/>, then N_S is an exporter value computed as defined in <xref section="4" sectionFormat="of" target="RFC5705"/> (REQ15).  </t>
                <t>
Specifically, N_S is exported from the DTLS session between the joining node and the KDC, using an empty context value (i.e., a context value of zero-length), 32 as length value in bytes, and the exporter label "EXPORTER-ACE-Sign-Challenge-pubsub-app" defined in <xref target="tls_exporter"/> of this document.</t>
              </li>
              <li>
                <t>If the provisioning of the access token to the KDC has relied on the DTLS profile of ACE <xref target="RFC9202"/>, and the access token was specified in the "identity" field of a PskIdentity within the PreSharedKeyExtension of the ClientHello message when using DTLS 1.3 <xref target="RFC9147"/>, then N_S is an exporter value computed as defined in <xref section="7.5" sectionFormat="of" target="RFC8446"/> (REQ15).  </t>
                <t>
Specifically, N_S is exported from the DTLS session between the joining node and the KDC, using an empty 'context_value' (i.e., a 'context_value' of zero length), 32 as 'key_length' in bytes, and the exporter label "EXPORTER-ACE-Sign-Challenge-pubsub-app" defined in <xref target="tls_exporter"/> of this document.</t>
              </li>
              <li>
                <t>If the Join Request is a retry in response to an error response from the KDC, which included a new 'kdcchallenge' parameter, then N_S <bcp14>MUST</bcp14> be the new value from this parameter.</t>
              </li>
            </ul>
            <t>It is up to applications to define how N_S is computed in further alternative settings.</t>
          </section>
        </section>
        <section anchor="join-response">
          <name>Join Response</name>
          <t>On receiving the Join Request, the KDC processes it as defined in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, and returns a success or error response.</t>
          <t>If the 'client_cred' parameter is present, the KDC verifies the signature in the 'client_cred_verify' parameter. As PoP input, the KDC uses the value of the 'scope' parameter from the Join Request as a CBOR byte string, concatenated with N_S encoded as a CBOR byte string, concatenated with N_C encoded as a CBOR byte string. As public key of the joining node, the KDC uses either the one included in the authentication credential retrieved from the 'client_cred' parameter of the Join Request, or the one from the already stored authentication credential from previous interactions with the joining node. The KDC verifies the signature used as PoP evidence by means of the public key of the joining node, according to the signature algorithm used in the group and possible corresponding parameters.</t>
          <t>In case of any Join Request error, the KDC and the joining node follow the procedure defined in <xref target="join-error"/>.</t>
          <t>In case of success, the KDC responds with a Join Response, whose payload formatted as a CBOR map <bcp14>MUST</bcp14> contain the following fields as per <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>:</t>
          <ul spacing="normal">
            <li>
              <t>'gkty': this field specifies the key type "Group_PubSub_Keying_Material" (REQ18) registered in <xref target="iana-ace-groupcomm-key"/> for the 'key' parameter.</t>
            </li>
            <li>
              <t>'key': this field specifies the keying material to use for secure communication in the group (REQ17). This field has as value a CBOR map that includes the following parameters.  </t>
              <ul spacing="normal">
                <li>
                  <t>'group_key': this parameter is identified by the CBOR unsigned integer 0 used as map key. Its value is a COSE_Key object as defined in <xref target="RFC9052"/> and conveying the group key to use in the security group.      </t>
                  <t>
The COSE_Key object <bcp14>MUST</bcp14> contain the following parameters:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>'kty', with value 4 (Symmetric).</t>
                    </li>
                    <li>
                      <t>'alg', with value the identifier of the AEAD algorithm used in the security group. The value is taken from the "Value" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</t>
                    </li>
                    <li>
                      <t>'Base IV', with value the Base Initialization Vector (Base IV) to use in the security group with this group key.</t>
                    </li>
                    <li>
                      <t>'k', with value the symmetric encryption key to use as group key.</t>
                    </li>
                    <li>
                      <t>'kid', with value the identifier of the COSE_Key object, hence of the group key.          </t>
                      <t>
This value is used as Group Identifier (Gid) of the security group, as long as the present key is used as group key in the security group.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>'group_SenderId': this parameter is identified by the CBOR unsigned integer 1 used as map key. Its value is the Client's Sender ID encoded as a CBOR byte string. This parameter <bcp14>MUST</bcp14> be included if the Client is joining the security group as a Publisher, and <bcp14>MUST NOT</bcp14> be included otherwise. A Publisher Client <bcp14>MUST</bcp14> support the 'group_SenderId' parameter (REQ29).      </t>
                  <t>
The Sender ID <bcp14>MUST</bcp14> be unique within the security group. The KDC <bcp14>MUST</bcp14> only assign an available Sender ID that has not been used in the security group since the last time when the current Gid value was assigned to the group (i.e., since the latest group rekeying, see <xref target="rekeying"/>). The KDC <bcp14>MUST NOT</bcp14> assign a Sender ID to the joining node if the node is not joining the group as a Publisher.      </t>
                  <t>
The Sender ID can be short in length. Its maximum length in bytes is the length in bytes of the AEAD nonce for the AEAD algorithm, minus 6. This means that, when using AES-CCM-16-64-128 as AEAD algorithm in the security group, the maximum length of Sender IDs is 7 bytes.</t>
                </li>
                <li>
                  <t>'cred_fmt': this parameter is identified by the CBOR unsigned integer 2 used as map key. Its value specifies the format of authentication credentials used in the group, and is taken from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/>.      </t>
                  <t>
At the time of writing this specification, acceptable formats of authentication credentials are CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC7925"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. Further formats may be available in the future, and would be acceptable to use as long as they comply with the criteria defined above (REQ6).</t>
                </li>
                <li>
                  <t>'sign_alg': this parameter is identified by the CBOR unsigned integer 3 used as map key. Its value specifies the Signature Algorithm used to sign messages in the group, and is taken from the "Value" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</t>
                </li>
                <li>
                  <t>'sign_params': this parameter is identified by the CBOR unsigned integer 4 used as map key. Its value specifies the parameters of the Signature Algorithm, as is encoded as a CBOR array including the following two elements:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>'sign_alg_capab' is a CBOR array, with the same format and value of the COSE capabilities array for the Signature Algorithm indicated in 'sign_alg', as specified for that algorithm in the "Capabilities" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</t>
                    </li>
                    <li>
                      <t>'sign_key_type_capab' is a CBOR array, with the same format and value of the COSE capabilities array for the COSE key type of the keys used with the Signature Algorithm indicated in 'sign_alg', as specified for that key type in the "Capabilities" column of the "COSE Key Types" registry <xref target="IANA.cose_key-type"/>.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>'num', specifying the version number of the keying material specified in the 'key' field. The initial value of the version number <bcp14>MUST</bcp14> be set to 0 upon creating the group (REQ16).</t>
            </li>
            <li>
              <t>'exi', which <bcp14>MUST</bcp14> be present.</t>
            </li>
            <li>
              <t>'ace-groupcomm-profile', which <bcp14>MUST</bcp14> be present and has value "coap_group_pubsub_app" (PROFILE_TBD), which is registered in <xref target="iana-profile"/> (REQ19).</t>
            </li>
            <li>
              <t>'creds', which <bcp14>MUST</bcp14> be present if the 'get_creds' parameter was present in the Join Request, and <bcp14>MUST NOT</bcp14> be present otherwise. It specifies the authentication credentials of all the Publishers in the security group.</t>
            </li>
            <li>
              <t>'peer_roles', which <bcp14>MAY</bcp14> be omitted even if 'creds' is present, since: i) each authentication credential conveyed in the 'creds' parameter is associated with a Client authorized to be Publisher in the group; and ii) it is irrelevant whether such a Client was also authorized to be Subscriber in the group. If 'creds' is not present, 'peer_roles' <bcp14>MUST NOT</bcp14> be present.</t>
            </li>
            <li>
              <t>'peer_identifiers', which <bcp14>MUST</bcp14> be present if 'creds' is also present, and <bcp14>MUST NOT</bcp14> be present otherwise. The identifiers are the Publisher Sender IDs, whose corresponding authentication credentials are specified in the 'creds' parameter (REQ25).</t>
            </li>
            <li>
              <t>'kdc_cred', which <bcp14>MUST</bcp14> be present if group re-keying is used. It is encoded as a CBOR byte string, with value the original binary representation of the KDC's authentication credential (REQ8).</t>
            </li>
            <li>
              <t>'kdc_nonce', which <bcp14>MUST</bcp14> be present if 'kdc_cred' is present. It is encoded as a CBOR byte string, with value a dedicated nonce N_KDC generated by the KDC. For N_KDC, it is <bcp14>RECOMMENDED</bcp14> to use an 8-byte long random nonce.</t>
            </li>
            <li>
              <t>'kdc_cred_verify', which <bcp14>MUST</bcp14> be present if 'kdc_cred' is present. It is encoded as a CBOR byte string. The KDC <bcp14>MUST</bcp14> compute the specified PoP evidence as a signature by using the signature algorithm used in the group, as well as its own private key associated with the authentication credential specified in the 'kdc_cred' parameter (REQ21).</t>
            </li>
            <li>
              <t>'group_rekeying', which <bcp14>MAY</bcp14> be omitted if the KDC uses the "Point-to-Point" group rekeying scheme registered in <xref section="11.13" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> as the default rekeying scheme in the group (OPT9). In any other case, the 'group_rekeying' parameter <bcp14>MUST</bcp14> be included.</t>
            </li>
          </ul>
          <t>After sending a successful Join Response, the KDC adds the Client to the list of current members of the security group, if that Client is not already a group member. Also, the Client is assigned a name NODENAME and a sub-resource /ace-group/GROUPNAME/nodes/NODENAME at the KDC. Furthermore, the KDC associates NODENAME with the Client's access token and with the secure communication association that the KDC has with the Client. If the Client is a Publisher, its authentication credential is also associated with the tuple containing NODENAME, GROUPNAME, the current Gid, the newly assigned Publisher's Sender ID, and the Client's access token. The KDC <bcp14>MUST</bcp14> keep this association updated over time.</t>
          <t>Note that, as long as the secure communication association between the Client and the KDC persists, the same Client re-joining the group is recognized by the KDC by virtue of such a secure communication association. As a consequence, the re-joining Client keeps the same NODENAME and the associated subresource /ace-group/GROUPNAME/nodes/NODENAME. Also, if the Client is a Publisher, it receives a new Sender ID according to the same criteria defined above.</t>
          <t>If the application requires backward security, the KDC <bcp14>MUST</bcp14> generate updated security parameters and group keying material, and provide it to the current group members upon the new node's joining (see <xref target="rekeying"/>). In such a case, the joining node is not able to access secure communication in the Pub-Sub group prior its joining.</t>
          <t>Upon receiving the Join Response, the joining node retrieves the KDC's authentication credential from the 'kdc_cred' parameter. The joining node <bcp14>MUST</bcp14> verify the signature used as proof-of-possession (PoP) evidence, which is specified by the 'kdc_cred_verify' parameter of the Join Response (REQ21).</t>
        </section>
        <section anchor="join-error">
          <name>Join Error Handling</name>
          <t>The KDC <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response (OPT4) to the Join Request in the following cases:</t>
          <ul spacing="normal">
            <li>
              <t>The 'client_cred' parameter is present in the Join Request and its value is not an eligible authentication credential (e.g., it is not of the format accepted in the group) (OPT8).</t>
            </li>
            <li>
              <t>The 'client_cred' parameter is present, but the 'cnonce' and 'client_cred_verify' parameters are not present.</t>
            </li>
            <li>
              <t>The 'client_cred' parameter is not present while the joining node is not requesting to join the group exclusively as a Subscriber, and any of the following conditions holds:  </t>
              <ul spacing="normal">
                <li>
                  <t>The KDC does not store an eligible authentication credential for the joining node (e.g., of the format accepted in the group).</t>
                </li>
                <li>
                  <t>The KDC stores multiple eligible authentication credentials for the joining node (e.g., of the format accepted in the group).</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The 'scope' parameter is not present in the Join Request, or it is present and specifies any set of permissions not included in the list defined in <xref target="scope"/>.</t>
            </li>
          </ul>
          <t>A 4.00 (Bad Request) error response from the KDC to the joining node <bcp14>MAY</bcp14> have content format application/ace-groupcomm+cbor and contain a CBOR map as payload.</t>
          <t>The CBOR map <bcp14>MAY</bcp14> include the 'kdcchallenge' parameter. If present, this parameter is a CBOR byte string, with value a newly generated 'kdcchallenge' value that the Client can use when preparing a new Join Request. In such a case, the KDC <bcp14>MUST</bcp14> store the newly generated value as the 'kdcchallenge' value associated with the joining node, which replaces the currently stored value (if any).</t>
          <t>Upon receiving the Join Response, if 'kdc_cred' is present but the Client cannot verify the PoP evidence, the Client <bcp14>MUST</bcp14> stop processing the Join Response and <bcp14>MAY</bcp14> send a new Join Request to the KDC.</t>
          <t>The KDC <bcp14>MUST</bcp14> return a 5.03 (Service Unavailable) response to a Client that sends a Join Request to join the security group as Publisher, in case there are currently no Sender IDs available to assign. The response <bcp14>MUST</bcp14> have Content-Format set to application/concise-problem-details+cbor and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 4 ("No available node identifiers").</t>
        </section>
      </section>
      <section anchor="other-group-operations-through-the-kdc">
        <name>Other Group Operations through the KDC</name>
        <section anchor="query">
          <name>Obtaining Latest Information on the Group, Group Keying Material, and Sender ID</name>
          <t>A Client can access the following resources at the KDC, in order to retrieve latest information about the group or the group keying material.</t>
          <ul spacing="normal">
            <li>
              <t>'/ace-group': All Clients can send a FETCH request to retrieve a set of group names associated with their group identifiers specified in the request payload. Each element of the CBOR array 'gid' is a CBOR byte string (REQ13), which encodes the Gid of the group (see <xref target="join-response"/>) for which the group name and the URI to the group-membership resource are provided in the returned response.</t>
            </li>
            <li>
              <t>'/ace-group/GROUPNAME':  All group member Clients can send a GET request to retrieve the symmetric group keying material of the group with the name GROUPNAME. The value of the GROUPNAME URI path and the group name in the access token scope ('gname') <bcp14>MUST</bcp14> coincide.  </t>
              <t>
The KDC processes the Key Distribution Request according to <xref section="4.3.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. The Key Distribution Response is formatted as defined in <xref section="4.3.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, with the following additions.  </t>
              <ul spacing="normal">
                <li>
                  <t>The 'key' field is formatted as defined in <xref target="join-response"/> of this document, with the difference that it does not include the 'group_SenderId' parameter.</t>
                </li>
                <li>
                  <t>The 'exi' field <bcp14>MUST</bcp14> be present.</t>
                </li>
                <li>
                  <t>The 'ace_groupcomm_profile' field <bcp14>MUST</bcp14> be present and has value "coap_group_pubsub_app".</t>
                </li>
              </ul>
              <t>
Upon receiving the Key Distribution Response, the requesting group member retrieves the updated security parameters and group keying material. If they differ from the currently stored ones, then the group member uses the received one as group keying material to protect/unprotect published topic data hereafter.</t>
            </li>
            <li>
              <t>'/ace-group/GROUPNAME/creds': The KDC acts as a repository of authentication credentials for the Publishers that are member of the security group with name GROUPNAME. The members of the group that are Subscribers can send GET/FETCH requests to this resource in order to retrieve the authentication credentials of all or a subset of the group members that are Publishers. The KDC silently ignores the Sender IDs included in the 'get_creds' parameter of the request that are not associated with any current Publisher group member (REQ26).  </t>
              <t>
The response from the KDC <bcp14>MAY</bcp14> omit the parameter 'peer_roles', since: i) each authentication credential conveyed in the 'creds' parameter is associated with a Client authorized to be Publisher in the group; and ii) it is irrelevant whether such a Client was also authorized to be Subscriber in the group. If 'creds' is not present, 'peer_roles' <bcp14>MUST NOT</bcp14> be present.</t>
            </li>
            <li>
              <t>'/ace-group/GROUPNAME/num': All group member Clients can send a GET request to this resource in order to retrieve the current version number for the symmetric group keying material of the group with name GROUPNAME.</t>
            </li>
            <li>
              <t>'/ace-group/GROUPNAME/kdc-cred': All group member Clients can send a GET request to this resource in order to retrieve the current authentication credential of the KDC.</t>
            </li>
            <li>
              <t>'/ace-group/GROUPNAME/nodes/NODENAME': A group member can send a Key Distribution to the KDC by sending a GET request to this resource to retrieve the latest group keying material as well as its Sender ID that it has in the group (if Publisher).  </t>
              <t>
The KDC processes the Key Distribution Request according to <xref section="4.8.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. The Key Distribution Response is formatted as defined in <xref section="4.8.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, with the following additions.  </t>
              <ul spacing="normal">
                <li>
                  <t>The 'key' field is formatted as defined in <xref target="join-response"/> of this document. If the requesting group member is not a Publisher Client, then the 'key' field does not include the 'group_SenderId' parameter.</t>
                </li>
                <li>
                  <t>The 'exi' field <bcp14>MUST</bcp14> be present.</t>
                </li>
              </ul>
              <t>
Upon receiving the Key Distribution Response, the group member retrieves the updated security parameters, group keying material, and Sender ID (if the 'key' field includes the 'group_SenderId' parameter). If they differ from the currently stored ones, then the group member uses the received one as group keying material to protect/unprotect published topic data hereafter.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-key-renewal-request">
          <name>Requesting a New Sender ID</name>
          <t>A Publisher group member with node name NODENAME may at some point exhaust its Sender Sequence Numbers used for protecting its published topic data (see <xref target="oscon"/>).</t>
          <t>When this happens, the Publisher <bcp14>MUST</bcp14> send a Key Renewal Request message to the KDC, as per <xref section="4.8.2.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. That is, it sends a CoAP PUT request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME at the KDC.</t>
          <t>Upon receiving the Key Renewal Request, the KDC processes it as defined in <xref section="4.8.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, with the addition that the KDC takes one of the following actions.</t>
          <ul spacing="normal">
            <li>
              <t>The KDC rekeys the group. That is, the KDC generates new group keying material for that group (see <xref target="rekeying"/>), and replies to the Publisher with a group rekeying message as defined in <xref target="rekeying"/>, providing the new group keying material. Then, the KDC rekeys the rest of the group, as discussed in <xref target="rekeying"/>.  </t>
              <t>
The KDC <bcp14>SHOULD</bcp14> perform a group rekeying only if already scheduled to occur shortly, e.g., according to an application-specific rekeying period or scheduling, or as a reaction to a recent change in the group membership. In any other case, the KDC <bcp14>SHOULD NOT</bcp14> rekey the OSCORE group when receiving a Key Renewal Request (OPT12).</t>
            </li>
            <li>
              <t>The KDC determines and assigns a new Sender ID for the Publisher, and replies with a Key Renewal Response formatted as defined in <xref section="4.8.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. The CBOR Map in the response payload includes only the parameter 'group_SenderId' registered in <xref section="16.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, and specifies the new Sender ID of the Publisher encoded as a CBOR byte string.  </t>
              <t>
The KDC <bcp14>MUST</bcp14> assign a new Sender ID that has not been used in the group since the latest time when the current Gid value was assigned to the group (i.e., since the latest group rekeying, see <xref target="rekeying"/>).  </t>
              <t>
The KDC <bcp14>MUST</bcp14> return a 5.03 (Service Unavailable) response in case there are currently no Sender IDs available to assign in the group. The response <bcp14>MUST</bcp14> have Content-Format set to application/concise-problem-details+cbor and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 4 ("No available node identifiers").</t>
            </li>
          </ul>
        </section>
        <section anchor="updating-authentication-credentials">
          <name>Updating Authentication Credentials</name>
          <t>A Publisher group member with node name NODENAME can contact the KDC to upload a new authentication credential to use in the security group with name GROUPNAME, and replace the currently stored one. To this end, the Publisher sends a CoAP POST request to its associated sub-resource /ace-group/GROUPNAME/nodes/NODENAME/cred at the KDC (see <xref section="4.9.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>).</t>
          <t>Following a successful processing of the request, the KDC replaces the stored authentication credential of this Client for the group GROUPNAME with the one specified in the request.</t>
        </section>
        <section anchor="sec-group-leaving">
          <name>Leaving a Group</name>
          <t>A group member with node name NODENAME can actively request to leave the security group with name GROUPNAME. To this end, the Client sends a CoAP DELETE request to the associated sub-resource /ace-group/GROUPNAME/nodes/NODENAME at the KDC (see <xref section="4.8.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>).</t>
          <t>The KDC can also remove a group member due to any of the reasons described in <xref section="5" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="rekeying">
      <name>Group Rekeying Process</name>
      <t>Rekeying a group consists in the KDC generating and distributing a new symmetric key, which is used as group key from then on to protect the publication of topic data with COSE (see <xref target="oscon"/>).</t>
      <t>The KDC <bcp14>MUST</bcp14> trigger a group rekeying as described in <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, upon a change in the group membership or due to the current group keying material approaching its expiration time. In addition, the KDC <bcp14>MAY</bcp14> perform regularly scheduled group rekeying executions.</t>
      <t>Upon generating the new group key and before starting its distribution:</t>
      <ul spacing="normal">
        <li>
          <t>The KDC <bcp14>MUST</bcp14> increment the version number of the group keying material.</t>
        </li>
        <li>
          <t>The KDC <bcp14>MUST</bcp14> generate a new Group Identifier (Gid) for the group. This is used as identifier of the new group key, when providing it to the current group members through the group rekeying, and to Clients (re-)joining the security group hereafter (see <xref target="join-response"/>).  </t>
          <t>
That is, the value of the new Gid is specified by the 'kid' parameter of the COSE_Key Object that is used to encode the new group key.</t>
        </li>
      </ul>
      <t>When rekeying the group, the KDC <bcp14>MUST</bcp14> preserve the current value of the Sender ID of each member in that group.</t>
      <t>The default rekeying scheme is "Point-to-Point" (see <xref section="6.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>), where the KDC individually targets each node to rekey, using the pairwise secure communication association with that node.</t>
      <t>In particular, a group rekeying message <bcp14>MUST</bcp14> have Content-Format set to application/ace-groupcomm+cbor and have the same format used for the Join Response message defined in <xref target="join-response"/>, with the following differences:</t>
      <ul spacing="normal">
        <li>
          <t>Within the 'key' field, only the parameter 'group_key' is present.</t>
        </li>
        <li>
          <t>The fields 'kdc_cred' ,'kdc_nonce', 'kdc_cred_verify', and 'group_rekeying' are not present.</t>
        </li>
        <li>
          <t>The fields 'creds' and 'peer_identifiers' <bcp14>SHOULD</bcp14> be present, if the group rekeying is performed due to one or multiple Clients joining the group as Publishers. Following the same semantics used in the Join Response message, the two parameters specify the authentication credential and Sender ID of such Clients. Like in the Join Response message, the 'peer_roles' parameter <bcp14>MAY</bcp14> be omitted.</t>
        </li>
      </ul>
    </section>
    <section anchor="protected_communication">
      <name>Pub-Sub Protected Communication</name>
      <t>In the diagram shown in <xref target="pubsub-3"/>, (D) corresponds to the publication on a topic at the Broker, by using a CoAP PUT request. The Publisher protects the published topic data end-to-end for the Subscribers by using COSE (<xref target="RFC9052"/><xref target="RFC9053"/><xref target="RFC9338"/>), as detailed in <xref target="oscon"/>.</t>
      <t>In the same diagram, (E) corresponds to the subscription of a Subscriber to the same topic, by means of a CoAP GET request with the Observe option set to 0 (register) <xref target="RFC7641"/>, as per <xref target="I-D.ietf-core-coap-pubsub"/>. Finally, (F) corresponds to the Observe notification response from the Broker to the Subscriber, where the published topic data is conveyed as originally protected end-to-end with COSE by the Publisher.</t>
      <figure anchor="pubsub-3">
        <name>Secure Pub-Sub Communication between Publisher and Subscriber</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="520" viewBox="0 0 520 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,160" fill="none" stroke="black"/>
              <path d="M 104,32 L 104,160" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,160" fill="none" stroke="black"/>
              <path d="M 288,32 L 288,160" fill="none" stroke="black"/>
              <path d="M 408,32 L 408,160" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,160" fill="none" stroke="black"/>
              <path d="M 8,32 L 104,32" fill="none" stroke="black"/>
              <path d="M 216,32 L 288,32" fill="none" stroke="black"/>
              <path d="M 408,32 L 512,32" fill="none" stroke="black"/>
              <path d="M 120,64 L 136,64" fill="none" stroke="black"/>
              <path d="M 184,64 L 200,64" fill="none" stroke="black"/>
              <path d="M 304,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 376,96 L 392,96" fill="none" stroke="black"/>
              <path d="M 304,128 L 328,128" fill="none" stroke="black"/>
              <path d="M 376,128 L 392,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 104,160" fill="none" stroke="black"/>
              <path d="M 216,160 L 288,160" fill="none" stroke="black"/>
              <path d="M 408,160 L 512,160" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="400,128 388,122.4 388,133.6" fill="black" transform="rotate(0,392,128)"/>
              <polygon class="arrowhead" points="312,96 300,90.4 300,101.6" fill="black" transform="rotate(180,304,96)"/>
              <polygon class="arrowhead" points="208,64 196,58.4 196,69.6" fill="black" transform="rotate(0,200,64)"/>
              <g class="text">
                <text x="160" y="68">(D)</text>
                <text x="56" y="100">Publisher</text>
                <text x="252" y="100">Broker</text>
                <text x="352" y="100">(E)</text>
                <text x="460" y="100">Subscriber</text>
                <text x="352" y="132">(F)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+-----------+             +--------+              +------------+
|           |             |        |              |            |
|           | --- (D) --> |        |              |            |
|           |             |        |              |            |
| Publisher |             | Broker | <--- (E) --- | Subscriber |
|           |             |        |              |            |
|           |             |        | ---- (F) --> |            |
|           |             |        |              |            |
+-----------+             +--------+              +------------+
]]></artwork>
        </artset>
      </figure>
      <t><xref target="flow"/> provides a more detailed example of such a secure Pub-Sub communication. All the messages exchanged between a Client and the Broker are protected with the secure communication association between that Client and the Broker. In addition, COSE is used to protect end-to-end the published topic data, which is conveyed in a PUT request to the topic-data resource at the Broker and in a 2.05 (Content) response from that resource.</t>
      <t>The example also shows a delete operation, where the Publisher deletes the topic-data resource by sending a CoAP DELETE request to the URI of that resource. In case of success, the Broker replies with a 2.02 (Deleted) response. Consequently, the Broker also unsubscribes all the Clients subscribed to that topic-data resource, by removing them from the list of observers and sending them a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>.</t>
      <figure anchor="flow">
        <name>Example of Secure Pub-Sub Communication using CoAP</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="568" viewBox="0 0 568 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,304" fill="none" stroke="black"/>
              <path d="M 296,48 L 296,304" fill="none" stroke="black"/>
              <path d="M 560,48 L 560,304" fill="none" stroke="black"/>
              <path d="M 8,64 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,64 L 288,64" fill="none" stroke="black"/>
              <path d="M 16,96 L 64,96" fill="none" stroke="black"/>
              <path d="M 184,96 L 296,96" fill="none" stroke="black"/>
              <path d="M 304,128 L 320,128" fill="none" stroke="black"/>
              <path d="M 544,128 L 560,128" fill="none" stroke="black"/>
              <path d="M 296,176 L 344,176" fill="none" stroke="black"/>
              <path d="M 464,176 L 552,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
              <path d="M 272,224 L 288,224" fill="none" stroke="black"/>
              <path d="M 16,256 L 48,256" fill="none" stroke="black"/>
              <path d="M 168,256 L 296,256" fill="none" stroke="black"/>
              <path d="M 296,288 L 344,288" fill="none" stroke="black"/>
              <path d="M 480,288 L 552,288" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="560,288 548,282.4 548,293.6" fill="black" transform="rotate(0,552,288)"/>
              <polygon class="arrowhead" points="560,176 548,170.4 548,181.6" fill="black" transform="rotate(0,552,176)"/>
              <polygon class="arrowhead" points="312,128 300,122.4 300,133.6" fill="black" transform="rotate(180,304,128)"/>
              <polygon class="arrowhead" points="296,224 284,218.4 284,229.6" fill="black" transform="rotate(0,288,224)"/>
              <polygon class="arrowhead" points="296,64 284,58.4 284,69.6" fill="black" transform="rotate(0,288,64)"/>
              <polygon class="arrowhead" points="24,256 12,250.4 12,261.6" fill="black" transform="rotate(180,16,256)"/>
              <polygon class="arrowhead" points="24,96 12,90.4 12,101.6" fill="black" transform="rotate(180,16,96)"/>
              <g class="text">
                <text x="40" y="36">Publisher</text>
                <text x="300" y="36">Broker</text>
                <text x="524" y="36">Subscriber</text>
                <text x="68" y="68">0.03</text>
                <text x="104" y="68">PUT</text>
                <text x="184" y="68">ps/data/1bd0d6d</text>
                <text x="92" y="100">2.01</text>
                <text x="144" y="100">Created</text>
                <text x="348" y="132">0.01</text>
                <text x="384" y="132">GET</text>
                <text x="468" y="132">/ps/data/1bd0d6d</text>
                <text x="368" y="148">Observe:0</text>
                <text x="372" y="180">2.05</text>
                <text x="424" y="180">Content</text>
                <text x="388" y="196">Observe:</text>
                <text x="448" y="196">10001</text>
                <text x="52" y="228">0.04</text>
                <text x="100" y="228">DELETE</text>
                <text x="196" y="228">/ps/data/1bd0d6d</text>
                <text x="76" y="260">2.02</text>
                <text x="128" y="260">Deleted</text>
                <text x="372" y="292">4.04</text>
                <text x="408" y="292">Not</text>
                <text x="448" y="292">Found</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
Publisher                         Broker                    Subscriber
|                                   |                                |
+---- 0.03 PUT ps/data/1bd0d6d ---->|                                |
|                                   |                                |
|<------ 2.01 Created --------------+                                |
|                                   |                                |
|                                   |<-- 0.01 GET /ps/data/1bd0d6d --+
|                                   |    Observe:0                   |
|                                   |                                |
|                                   +------ 2.05 Content ----------->|
|                                   |       Observe: 10001           |
|                                   |                                |
+-- 0.04 DELETE /ps/data/1bd0d6d -->|                                |
|                                   |                                |
|<---- 2.02 Deleted ----------------+                                |
|                                   |                                |
|                                   +------ 4.04 Not Found --------->|
|                                   |                                |
]]></artwork>
        </artset>
      </figure>
      <section anchor="oscon">
        <name>Using COSE to Protect the Published Topic Data</name>
        <t>The Publisher uses the symmetric COSE Key received from the KDC to protect the payload of the Publish operation (see <xref section="4.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>). Specifically, the Publisher creates a COSE_Encrypt0 object <xref target="RFC9052"/><xref target="RFC9053"/> by means of the COSE Key currently used as group key. The encryption algorithm and Base IV to use are specified by the 'alg' and 'Base IV' parameters of the COSE Key, together with its key identifier in the 'kid' parameter.</t>
        <t>Also, the Publisher uses its private key corresponding to the public key sent to the KDC, in order to countersign the COSE_Encrypt0 object as specified in <xref target="RFC9338"/>. The countersignature is specified in the 'Countersignature version 2' parameter, within the 'unprotected' field of the COSE_Encrypt0 object.</t>
        <t>Finally, the Publisher sends the COSE_Encrypt0 object conveying the countersignature to the Broker, as payload of the PUT request sent to the topic-data of the topic targeted by the Publish operation.</t>
        <t>Upon receiving a response from the topic-data resource at the Broker, the Subscriber uses the 'kid' parameter from the 'Countersignature version 2' parameter within the 'unprotected' field of the COSE_Encrypt0 object, in order to retrieve the Publisher's public key from the Broker or from its local storage. Then, the Subscriber uses that public key to verify the countersignature.</t>
        <t>In case of successful verification, the Subscriber uses the 'kid' parameter from the 'unprotected' field of the COSE_Encrypt0 object, in order to retrieve the COSE Key used as current group key from its local storage. Then, the Subscriber uses that group key to verify and decrypt the COSE_Encrypt0 object. In case of successful verification, the Subscriber delivers the received topic data to the application.</t>
        <t>The COSE_Encrypt0 object is constructed as follows.</t>
        <t>The 'protected' field <bcp14>MUST</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t>The 'alg' parameter, with value the identifier of the AEAD algorithm specified in the 'alg' parameter of the COSE Key used as current group key.</t>
          </li>
        </ul>
        <t>The 'unprotected' field <bcp14>MUST</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t>The 'kid' parameter, with the same value specified in the 'kid' parameter of the COSE Key used as current group key. This value represents the current Group ID (Gid) of the security group associated with the application group (topic).</t>
          </li>
          <li>
            <t>The 'Partial IV' parameter, with value set to the current Sender Sequence Number of the Publisher. All leading bytes of value zero <bcp14>SHALL</bcp14> be removed when encoding the Partial IV, except in the case of Partial IV value 0, which is encoded to the byte string 0x00.  </t>
            <t>
The Publisher <bcp14>MUST</bcp14> initialize the Sender Sequence Number to 0 upon joining the security group, and <bcp14>MUST</bcp14> reset it to 0 upon receiving a new group key as result of a group rekeying (see <xref target="rekeying"/>). The Publisher <bcp14>MUST</bcp14> increment its Sender Sequence Number value by 1, after having completed an encryption operation by means of the current group key.  </t>
            <t>
When the Publisher exhausts its Sender Sequence Numbers, the Publisher <bcp14>MUST NOT</bcp14> protect further topic data by using the current group key while still retaining its current Sender ID, and <bcp14>MUST</bcp14> send a Key Renewal Request message to the KDC (see <xref target="sec-key-renewal-request"/>). This will result in the KDC rekeying the group and distributing a new group key, or in the KDC providing the Publisher with a new Sender ID. The Publisher <bcp14>MUST</bcp14> reset its Sender Sequence Number to 0 upon receiving a new Sender ID from the KDC.</t>
          </li>
          <li>
            <t>The 'Countersignature version 2' parameter, specifying the countersignature of the COSE_Encrypt0 object. In particular:  </t>
            <ul spacing="normal">
              <li>
                <t>The 'protected' field includes the 'alg' parameter, with value the identifier of the Signature Algorithm used in the security group.</t>
              </li>
              <li>
                <t>The 'unprotected' field includes the 'kid' parameter, with value the Publisher's Sender ID that the Publisher obtained from the KDC when joining the security group, as value of the 'group_SenderId' parameter of the Join Response (see <xref target="join-response"/>).</t>
              </li>
              <li>
                <t>The 'signature' field, with value the countersignature.</t>
              </li>
            </ul>
            <t>
The countersignature is computed as defined in <xref target="RFC9338"/>, by using the private key of the Publisher as signing key, and by means of the Signature Algorithm used in the group. The fields of the Countersign_structure are populated as follows:  </t>
            <ul spacing="normal">
              <li>
                <t>'context' takes "CounterSignature".</t>
              </li>
              <li>
                <t>'body_protected' takes the serialized parameters from the 'protected' field of the COSE_Encrypt0 object, i.e., the 'alg' parameter.</t>
              </li>
              <li>
                <t>'sign_protected' takes the serialized parameters from the 'protected' field of the 'Countersignature version 2' parameter, i.e., the 'alg' parameter.</t>
              </li>
              <li>
                <t>'external_aad is not supplied.</t>
              </li>
              <li>
                <t>'payload' is the ciphertext of the COSE_Encrypt0 object (see below).</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The 'ciphertext' field specifies the ciphertext computed over the topic data to publish. The ciphertext is computed as defined in <xref target="RFC9052"/><xref target="RFC9053"/>, by using the current group key as encryption key, the AEAD Nonce computed as defined in <xref target="ssec-aead-nonce"/>, the topic data to publish as plaintext, and the Enc_structure populated as follows:</t>
        <ul spacing="normal">
          <li>
            <t>'context' takes "Encrypt0".</t>
          </li>
          <li>
            <t>'protected' takes the serialization of the protected parameter 'alg' from the 'protected' field of the COSE_Encrypt0 object.</t>
          </li>
          <li>
            <t>'external_aad is not supplied.</t>
          </li>
        </ul>
      </section>
      <section anchor="ssec-aead-nonce">
        <name>AEAD Nonce</name>
        <t>This section defines how to generate the AEAD nonce used for encrypting and decrypting the COSE_Encrypt0 object protecting the published topic data. This construction is analogous to that used to generate the AEAD nonce in the OSCORE security protocol (see <xref section="5.2" sectionFormat="of" target="RFC8613"/>).</t>
        <t>The AEAD nonce for producing or consuming the COSE_Encrypt0 object is constructed as defined below and also shown in <xref target="fig-aead-nonce"/>.</t>
        <ol spacing="normal" type="1"><li>
            <t>Left-pad the Partial IV (PIV) with zeroes to exactly 5 bytes.</t>
          </li>
          <li>
            <t>Left-pad the Sender ID of the Publisher that generated the Partial IV (ID_PIV) with zeroes to exactly the nonce length of the AEAD algorithm minus 6 bytes.</t>
          </li>
          <li>
            <t>Concatenate the size of the ID_PIV (a single byte S) with the padded ID_PIV and the padded PIV.</t>
          </li>
          <li>
            <t>XOR the result from the previous step with the Base IV.</t>
          </li>
        </ol>
        <figure anchor="fig-aead-nonce">
          <name>AEAD Nonce Construction</name>
          <artwork align="center"><![CDATA[
     <- nonce length minus 6 B -> <-- 5 bytes -->
+---+-------------------+--------+---------+-----+
| S |      padding      | ID_PIV | padding | PIV |-----+
+---+-------------------+--------+---------+-----+     |
                                                       |
 <---------------- nonce length ---------------->      |
+------------------------------------------------+     |
|                    Base IV                     |-->(XOR)
+------------------------------------------------+     |
                                                       |
 <---------------- nonce length ---------------->      |
+------------------------------------------------+     |
|                     Nonce                      |<----+
+------------------------------------------------+
]]></artwork>
        </figure>
        <t>The construction above only supports AEAD algorithms that use nonces with length equal or greater than 7 bytes. At the same time, it makes it easy to verify that the nonces will be unique when used with the same group key, even though this is shared and used by all the Publishers in the security group. In fact:</t>
        <ul spacing="normal">
          <li>
            <t>Since Publisher's Sender IDs are unique within the security group and they are not reassigned until a group rekeying occurs (see <xref target="join-response"/> and <xref target="rekeying"/>), two Publisher Clients cannot share the same tuple (S, padded ID_PIV) by construction.</t>
          </li>
          <li>
            <t>Since a Publisher increments by 1 its Sender Sequence Number after each use that it makes of the current group key, the Publisher  never reuses the same tuple (S, padded ID_PIV, padded PIV) together with the same group key.</t>
          </li>
          <li>
            <t>Therefore neither the same Publisher reuses the same AEAD nonce with the same group key, nor any two Publishers use the same AEAD nonce with the same group key.</t>
          </li>
        </ul>
      </section>
      <section anchor="ssec-replay-checks">
        <name>Replay Checks</name>
        <t>In order to protect from replay of published topic data, every Subscriber maintains a Replay Window for each different Publisher in the same group. It is <bcp14>RECOMMENDED</bcp14> that the Replay Window has a default size of 32.</t>
        <t>Upon receiving a topic data published by a given Publisher P, the Subscriber retrieves the Sender ID of P conveyed as 'kid' in the 'Countersignature version 2' parameter of the COSE_Encrypt0 object (see <xref target="oscon"/>), and determines the Replay Window W_P associated with P.</t>
        <t>The Subcriber <bcp14>MUST</bcp14> verify that, according to W_P, the Sender Sequence Number SN_P specified by the 'Partial IV' parameter of the COSE_Encrypt0 object has not been received before from P.</t>
        <t>If the verification above fails, the Subscriber <bcp14>MUST</bcp14> stop processing the COSE_Encrypt0 object conveying the topic data. If the value of SN_P is strictly smaller than the currently smallest value in W_P, then the Subscriber <bcp14>MUST</bcp14> stop processing the COSE_Encrypt0 object.</t>
        <t>If the verification above succeeds, the Subscriber proceeds with processing the COSE_Encrypt0 object, by verifying the countersignature from P using P's public key as well as by decrypting the COSE_Encrypt0 object using the group key. If both operations succeed, the Subscriber updates W_P as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If SN_P is strictly greater than the currently largest value in W_P, then W_P is updated in order to set SN_P as its largest value.</t>
          </li>
          <li>
            <t>SN_P is marked to denote that it has been received.</t>
          </li>
        </ul>
        <t>The operation of validating the 'Partial IV' and updating the Replay Window <bcp14>MUST</bcp14> be atomic.</t>
        <t>Upon installing a new group key (e.g., due to a group rekeying performed by the KDC, see <xref target="rekeying"/>) or upon receiving published topic data from a given Publisher for the first time, the Subscriber initializes the Replay Window corresponding to that Publisher, i.e., the smallest value of the Replay Window is set to 0.</t>
      </section>
    </section>
    <section anchor="mqtt-pubsub">
      <name>Applicability to the MQTT Pub-Sub Profile</name>
      <t>This section describes how this profile can be applicable to the MQTT protocol <xref target="MQTT-OASIS-Standard-v5"/>.</t>
      <t>The MQTT clients would go through steps similar to those performed by the CoAP clients, and the payload of the MQTT PUBLISH messages is protected using COSE. The MQTT clients need to use CoAP for communicating with the KDC, in order to join security groups and be part of the pairwise rekeying initiated by the KDC.</t>
      <t>The discovery of the AS is defined in <xref section="2.4.1" sectionFormat="of" target="RFC9431"/> for MQTT v5 clients, and it is not supported for MQTT v3 clients. $SYS/ has been widely adopted as a prefix to topics that contain server-specific information or control APIs, and may be used for discovering topics and the KDC.</t>
      <t>In the Join Response from the KDC to a Client (see <xref target="join-response"/>), the 'ace-groupcomm-profile' parameter has value "mqtt_pubsub_app", which is registered in <xref target="iana-profile"/>.</t>
      <t>Both Publishers and Subscribers <bcp14>MUST</bcp14> authorise to the Broker with their respective tokens, as described in <xref target="RFC9431"/>. A Publisher sends PUBLISH messages for a given topic and protects the payload with the corresponding key for the associated security group. A Subscriber may send SUBSCRIBE messages with one or multiple topic filters. A topic filter may correspond to multiple topics. The Broker forwards all PUBLISH messages to all authorised Subscribers, including the retained messages.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security considerations for this profile are inherited from <xref target="I-D.ietf-ace-key-groupcomm"/>, the ACE framework for Authentication and Authorization <xref target="RFC9200"/>, and the specific transport profile of ACE signalled by the AS, such as <xref target="RFC9202"/> and <xref target="RFC9203"/>.</t>
      <t>The following security considerations also apply for this profile.</t>
      <t>Consistent with the intended group-confidentiality model, each Client in a security group is able to decrypt the data published in the topic(s) associated with that group, by using the symmetric group key that is shared with all the other group members.</t>
      <t>At the same time, source authentication of the published topic data is achieved by means of a digital signature, which the Publisher of the data in question computes with its private key and embeds in the published data. This ensures integrity of the published topic data as well as its origin, thus preventing a group member from impersonating another one.</t>
      <t>To this end, both Publishers and Subscribers rely on asymmetric cryptography, while Subscribers must be able to access the public keys of all the Publishers to a specific topic in order to verify the signature over the published topic data. This might make the message exchange quite heavy for small constrained devices.</t>
      <t>The Broker is only trusted with verifying that a Publisher is authorized to publish on a certain topic, and with distributing that data only to the Subscribers authorized to obtain it. However, the Broker is not trusted with the published data in itself, which the Broker cannot read or modify as it does not have access to the group key required for decrypting the data.</t>
      <t>With respect to the reusage of nonces for Proof-of-Possession input, the same considerations apply as in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
      <t>Access tokens might have to be revoked before their expiration time. <xref target="I-D.ietf-ace-revoked-token-notification"/> provides a list of possible circumstances where this can heppen, and specifies a method that an Authorization Server can use in order to notify the KDC, the Broker, and the Clients about pertaining access tokens that have been revoked but are not expired yet.</t>
      <t>Clients can be excluded from future communications related to a topic, by appropriately re-keying the group associated with the topic in question.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Note to RFC Editor: Please replace "[RFC-XXXX]" with the RFC number of this document and delete this paragraph.</t>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-ace-groupcomm-key">
        <name>ACE Groupcomm Key Types</name>
        <t>IANA is asked to register the following entry in the "ACE Groupcomm Key Types" registry defined in <xref section="11.8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: Group_PubSub_Keying_Material</t>
          </li>
          <li>
            <t>Key Type Value: GROUPCOMM_KEY_TBD</t>
          </li>
          <li>
            <t>Profile: coap_group_pubsub_app or mqtt_pubsub_app (<xref target="iana-profile"/> of [RFC-XXXX]).</t>
          </li>
          <li>
            <t>Description: Encoded as described in <xref target="join-response"/> of [RFC-XXXX].</t>
          </li>
          <li>
            <t>References: <xref target="RFC9052"/>, <xref target="RFC9053"/>, [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-profile">
        <name>ACE Groupcomm Profiles</name>
        <t>IANA is asked to register the following entries in the "ACE Groupcomm Profiles" registry defined in <xref section="11.9" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: coap_group_pubsub_app</t>
          </li>
          <li>
            <t>Description: Application profile to provision keying material for participating in group communication based on the Pub-Sub architecture <xref target="I-D.ietf-core-coap-pubsub"/> for CoAP <xref target="RFC7252"/> and protected with COSE <xref target="RFC9052"/><xref target="RFC9053"/><xref target="RFC9338"/>.</t>
          </li>
          <li>
            <t>CBOR Value: TBD</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Name: mqtt_pubsub_app</t>
          </li>
          <li>
            <t>Description: Application profile to provision keying material for participating in group communication based on the Pub-Sub MQTT protocol MQTT protocol <xref target="MQTT-OASIS-Standard-v5"/> and protected with COSE <xref target="RFC9052"/><xref target="RFC9053"/><xref target="RFC9338"/>.</t>
          </li>
          <li>
            <t>CBOR Value: TBD</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="core_rt">
        <name>CoRE Resource Type</name>
        <t>IANA is asked to register the following entry in the "Resource Type (rt=) Link Target Attribute Values" registry within the "Constrained Restful Environments (CoRE) Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Value: "core.ps.gm"</t>
          </li>
          <li>
            <t>Description: Group-membership resource for Pub-Sub communication.</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t>Clients can use this resource type to discover a group membership resource at the KDC.</t>
      </section>
      <section anchor="aif">
        <name>AIF Media-Type Sub-Parameters</name>
        <t>For the media-types application/aif+cbor and application/aif+json defined in <xref section="5.1" sectionFormat="of" target="RFC9237"/>, IANA is requested to register the following entries for the two media-type parameters Toid and Tperm, in the respective sub-registry defined in <xref section="5.2" sectionFormat="of" target="RFC9237"/> within the "MIME Media Type Sub-Parameter" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Parameter: Toid</t>
          </li>
          <li>
            <t>Name: pubsub-topic</t>
          </li>
          <li>
            <t>Description/Specification: Name of one application group (topic) or of a corresponding security group.</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Parameter: Tperm</t>
          </li>
          <li>
            <t>Name: pubsub-perm</t>
          </li>
          <li>
            <t>Description/Specification: Permissions pertaining to application groups (topics) or to corresponding security groups.</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="content_formats">
        <name>CoAP Content-Formats</name>
        <t>IANA is asked to register the following entries to the "CoAP Content-Formats" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Content Type: application/aif+cbor;Toid="pubsub-topic",Tperm="pubsub-perm"</t>
          </li>
          <li>
            <t>Content Coding: -</t>
          </li>
          <li>
            <t>ID: 294 (suggested)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>
            <t>Content Type: application/aif+json;Toid="pubsub-topic",Tperm="pubsub-perm"</t>
          </li>
          <li>
            <t>Content Coding: -</t>
          </li>
          <li>
            <t>ID: 295 (suggested)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="tls_exporter">
        <name>TLS Exporter Labels</name>
        <t>IANA is asked to register the following entry to the "TLS Exporter Labels" registry defined in <xref section="6" sectionFormat="of" target="RFC5705"/> and updated in <xref section="12" sectionFormat="of" target="RFC8447"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Value: EXPORTER-ACE-Sign-Challenge-pubsub-app</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Recommended: N</t>
          </li>
          <li>
            <t>Reference: <xref target="pop"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="IANA.cose_algorithms" target="http://www.iana.org/assignments/cose">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.cose_key-type" target="http://www.iana.org/assignments/cose">
          <front>
            <title>COSE Key Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.cose_header-parameters" target="http://www.iana.org/assignments/cose">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9237">
          <front>
            <title>An Authorization Information Format (AIF) for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Information about which entities are authorized to perform what operations on which constituents of other entities is a crucial component of producing an overall system that is secure. Conveying precise authorization information is especially critical in highly automated systems with large numbers of entities, such as the Internet of Things.</t>
              <t>This specification provides a generic information model and format for representing such authorization information, as well as two variants of a specific instantiation of that format for use with Representational State Transfer (REST) resources identified by URI path.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9237"/>
          <seriesInfo name="DOI" value="10.17487/RFC9237"/>
        </reference>
        <reference anchor="RFC9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC9338">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9338"/>
          <seriesInfo name="DOI" value="10.17487/RFC9338"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="18" month="April" year="2024"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-14"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm">
          <front>
            <title>Key Provisioning for Group Communication using ACE</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="30" month="April" year="2024"/>
            <abstract>
              <t>   This document defines how to use the Authentication and Authorization
   for Constrained Environments (ACE) framework to distribute keying
   material and configuration parameters for secure group communication.
   Candidate group members acting as Clients and authorized to join a
   group can do so by interacting with a Key Distribution Center (KDC)
   acting as Resource Server, from which they obtain the keying material
   to communicate with other group members.  While defining general
   message formats as well as the interface and operations available at
   the KDC, this document supports different approaches and protocols
   for secure group communication.  Therefore, details are delegated to
   separate application profiles of this document, as specialized
   instances that target a particular group communication approach and
   define how communications in the group are protected.  Compliance
   requirements for such application profiles are also specified.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-19"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC9202">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="S. Gerdes" initials="S." surname="Gerdes"/>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a profile of the Authentication and Authorization for Constrained Environments (ACE) framework that allows constrained servers to delegate client authentication and authorization. The protocol relies on DTLS version 1.2 or later for communication security between entities in a constrained network using either raw public keys or pre-shared keys. A resource-constrained server can use this protocol to delegate management of authorization information to a trusted host with less-severe limitations regarding processing power and memory.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9202"/>
          <seriesInfo name="DOI" value="10.17487/RFC9202"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="RFC9431">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) and Transport Layer Security (TLS) Profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="C. Sengul" initials="C." surname="Sengul"/>
            <author fullname="A. Kirby" initials="A." surname="Kirby"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework to enable authorization in a publish-subscribe messaging system based on Message Queuing Telemetry Transport (MQTT). Proof-of-Possession keys, bound to OAuth 2.0 access tokens, are used to authenticate and authorize MQTT Clients. The protocol relies on TLS for confidentiality and MQTT server (Broker) authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9431"/>
          <seriesInfo name="DOI" value="10.17487/RFC9431"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50% while also significantly reducing memory and code size
   compared to ASN.1.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 Certificate Signing Requests, C509 COSE headers, a
   C509 TLS certificate type, and a C509 file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-09"/>
        </reference>
        <reference anchor="I-D.ietf-ace-edhoc-oscore-profile">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  It
   utilizes Ephemeral Diffie-Hellman Over COSE (EDHOC) for achieving
   mutual authentication between an ACE-OAuth Client and Resource
   Server, and it binds an authentication credential of the Client to an
   ACE-OAuth access token.  EDHOC also establishes an Object Security
   for Constrained RESTful Environments (OSCORE) Security Context, which
   is used to secure communications when accessing protected resources
   according to the authorization information indicated in the access
   token.  This profile can be used to delegate management of
   authorization information from a resource-constrained server to a
   trusted host with less severe limitations regarding processing power
   and memory.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-edhoc-oscore-profile-04"/>
        </reference>
        <reference anchor="I-D.ietf-ace-revoked-token-notification">
          <front>
            <title>Notification of Revoked Access Tokens in the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Sebastian Echeverria" initials="S." surname="Echeverria">
              <organization>CMU SEI</organization>
            </author>
            <author fullname="Grace Lewis" initials="G." surname="Lewis">
              <organization>CMU SEI</organization>
            </author>
            <date day="24" month="June" year="2024"/>
            <abstract>
              <t>   This document specifies a method of the Authentication and
   Authorization for Constrained Environments (ACE) framework, which
   allows an Authorization Server to notify Clients and Resource Servers
   (i.e., registered devices) about revoked access tokens.  As specified
   in this document, the method allows Clients and Resource Servers to
   access a Token Revocation List on the Authorization Server by using
   the Constrained Application Protocol (CoAP), with the possible
   additional use of resource observation.  Resulting (unsolicited)
   notifications of revoked access tokens complement alternative
   approaches such as token introspection, while not requiring
   additional endpoints on Clients and Resource Servers.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-16"/>
        </reference>
        <reference anchor="MQTT-OASIS-Standard-v5" target="http://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html">
          <front>
            <title>OASIS Standard MQTT Version 5.0</title>
            <author initials="A." surname="Banks">
              <organization/>
            </author>
            <author initials="E." surname="Briggs">
              <organization/>
            </author>
            <author initials="K." surname="Borgendale">
              <organization/>
            </author>
            <author initials="R." surname="Gupta">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1035?>

<section anchor="groupcomm_requirements">
      <name>Requirements on Application Profiles</name>
      <t>This section lists how this application profile of ACE addresses the requirements defined in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
      <section anchor="mandatory-to-address-requirements">
        <name>Mandatory-to-Address Requirements</name>
        <ul spacing="normal">
          <li>
            <t>REQ1: Specify the format and encoding of 'scope'. This includes defining the set of possible roles and their identifiers, as well as the corresponding encoding to use in the scope entries according to the used scope format: see <xref target="scope"/>.</t>
          </li>
          <li>
            <t>REQ2: If the AIF format of 'scope' is used, register its specific instance of "Toid" and "Tperm" as Media Type parameters and a corresponding Content-Format, as per the guidelines in <xref target="RFC9237"/>: see <xref target="aif"/> and <xref target="content_formats"/>.</t>
          </li>
          <li>
            <t>REQ3: If used, specify the acceptable values for 'sign_alg': values from the "Value" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</t>
          </li>
          <li>
            <t>REQ4: If used, specify the acceptable values for 'sign_parameters': format and values from the COSE algorithm capabilities as specified in the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</t>
          </li>
          <li>
            <t>REQ5: If used, specify the acceptable values for 'sign_key_parameters': format and values from the COSE key type capabilities as specified in the "COSE Key Types" registry <xref target="IANA.cose_key-type"/>.</t>
          </li>
          <li>
            <t>REQ6: Specify the acceptable formats for authentication credentials and, if used, the acceptable values for 'cred_fmt': acceptable formats explicitly provide the public key as well as the comprehensive set of information related to the public key algorithm (see <xref target="token-post"/> and <xref target="join-response"/>). Consistent acceptable values for 'cred_fmt' are taken from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/>.</t>
          </li>
          <li>
            <t>REQ7: If the value of the GROUPNAME URI path and the group name in the access token scope (gname) are not required to coincide, specify the mechanism to map the GROUPNAME value in the URI to the group name: not applicable; a perfect matching is required.</t>
          </li>
          <li>
            <t>REQ8: Define whether the KDC has an authentication credential and if this has to be provided through the 'kdc_cred' parameter: optional, see <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ9: Specify if any part of the KDC interface as defined in <xref target="I-D.ietf-ace-key-groupcomm"/> is not supported by the KDC: some are left optional, see <xref target="kdc-interface"/>.</t>
          </li>
          <li>
            <t>REQ10: Register a Resource Type for the group-membership resource, which is used to discover the correct URL for sending a Join Request to the KDC: the Resource Type (rt=) Link Target Attribute value "core.ps.gm" is registered in Section <xref target="core_rt"/>.</t>
          </li>
          <li>
            <t>REQ11: Define what specific actions (e.g., CoAP methods) are allowed on each resource provided by the KDC interface, depending on whether the Client is a current group member; the roles that a Client is authorized to take as per the obtained access token; and the roles that the Client has as current group member: see <xref target="kdc-interface"/> of this document.</t>
          </li>
          <li>
            <t>REQ12: Categorize possible newly defined operations for Clients into primary operations expected to be minimally supported and secondary operations, and provide accompanying considerations: none added.</t>
          </li>
          <li>
            <t>REQ13: Specify the encoding of group identifier: CBOR byte string, with value used also to identify the current group key used in the security group (see <xref target="join-response"/>).</t>
          </li>
          <li>
            <t>REQ14: Specify the approaches used to compute and verify the PoP evidence to include in 'client_cred_verify', and which of those approaches is used in which case: see <xref target="pop"/>.</t>
          </li>
          <li>
            <t>REQ15: Specify how the nonce N_S is generated, if the token is not provided to the KDC through the Token Transfer Request to the authz-info endpoint (e.g., if it is used directly to validate TLS instead): see <xref target="pop"/>.</t>
          </li>
          <li>
            <t>REQ16: Define the initial value of the 'num' parameter: the initial value <bcp14>MUST</bcp14> be set to 0 (see <xref target="join-response"/>).</t>
          </li>
          <li>
            <t>REQ17: Specify the format of the 'key' parameter and register a corresponding entry in the "ACE Groupcomm Key Types" IANA registry: see <xref target="join-response"/> and <xref target="iana-ace-groupcomm-key"/>.</t>
          </li>
          <li>
            <t>REQ18: Specify the acceptable values of the 'gkty' parameter: Group_PubSub_Keying_Material, see <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ19: Specify and register the application profile identifier: coap_group_pubsub_app (see <xref target="join-response"/> and <xref target="iana-profile"/>) and mqtt_pubsub_app (see <xref target="mqtt-pubsub"/> and <xref target="iana-profile"/>).</t>
          </li>
          <li>
            <t>REQ20: If used, specify the format and content of 'group_policies' and its entries. Specify the policies default values: not applicable.</t>
          </li>
          <li>
            <t>REQ21: Specify the approaches used to compute and verify the PoP evidence to include in 'kdc_cred_verify', and which of those approaches is used in which case. If external signature verifiers are supported, specify how those provide a nonce to the KDC to be used for computing the PoP evidence: see <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ22: Specify the communication protocol that the members of the group must use: CoAP <xref target="RFC7252"/>, used for Pub-Sub communications as defined in <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
          </li>
          <li>
            <t>REQ23: Specify the security protocol the group members must use to protect their communication. This must provide encryption, integrity, and replay protection: Publishers in a group use a symmetric group key to protect published topic data as a COSE_Encrypt0 object, per the AEAD algorithm specified by the KDC. A Publisher also produces a COSE countersignature of the COSE_Encrypt0 object by using its private key, per the signature algorithm specified by the KDC.</t>
          </li>
          <li>
            <t>REQ24: Specify how the communication is secured between Client and KDC. Optionally, specify a transport profile of ACE <xref target="RFC9200"/> to use between Client and KDC: ACE transport profile such as for DTLS <xref target="RFC9202"/> or OSCORE <xref target="RFC9203"/>.</t>
          </li>
          <li>
            <t>REQ25: Specify the format of the identifiers of group members: the Sender ID defined in <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ26: Specify policies at the KDC to handle ids that are not included in 'get_creds': see <xref target="query"/>.</t>
          </li>
          <li>
            <t>REQ27: Specify the format of newly-generated individual keying material for group members, or of the information to derive it, and corresponding CBOR label: see <xref target="sec-key-renewal-request"/>.</t>
          </li>
          <li>
            <t>REQ28: Specify which CBOR tag is used for identifying the semantics of binary scopes, or register a new CBOR tag if a suitable one does not exist already: see <xref target="as-response"/> and <xref target="content_formats"/>.</t>
          </li>
          <li>
            <t>REQ29: Categorize newly defined parameters according to the same criteria of <xref section="8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>: a Publisher Client <bcp14>MUST</bcp14> support 'group_SenderId' in 'key'; see <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ30: Define whether Clients must, should, or may support the conditional parameters defined in <xref section="8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, and under which circumstances: a Publisher Client <bcp14>MUST</bcp14> support the client_cred', 'cnonce', and 'client_cred_verify' parameters (see <xref target="join-request"/>). A Publisher Client that provides the access token to the KDC through the authz-info endpoint <bcp14>MUST</bcp14> support the parameter 'kdcchallenge' (see <xref target="token-post"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="optional-to-address-requirements">
        <name>Optional-to-Address Requirements</name>
        <ul spacing="normal">
          <li>
            <t>OPT1: Optionally, if the textual format of 'scope' is used, specify CBOR values to use for abbreviating the role identifiers in the group: not applicable.</t>
          </li>
          <li>
            <t>OPT2: Optionally, specify the additional parameters used in the exchange of Token Transfer Request and Response: none are defined.</t>
          </li>
          <li>
            <t>OPT3: Optionally, specify the negotiation of parameter values for signature algorithm and signature keys, if 'sign_info' is not used: see <xref target="token-post"/>.</t>
          </li>
          <li>
            <t>OPT4: Optionally, specify possible or required payload formats for specific error cases: see <xref target="join-error"/>.</t>
          </li>
          <li>
            <t>OPT5: Optionally, specify additional identifiers of error types, as values of the 'error-id' field within the Custom Problem Detail entry 'ace-groupcomm-error': no.</t>
          </li>
          <li>
            <t>OPT6: Optionally, specify the encoding of 'creds_repo' if the default is not used: no.</t>
          </li>
          <li>
            <t>OPT7: Optionally, specify the functionalities implemented at the 'control_uri' resource hosted at the Client, including message exchange encoding and other details: no.</t>
          </li>
          <li>
            <t>OPT8: Optionally, specify the behavior of the handler in case of failure to retrieve an authentication credential for the specific node: The KDC <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response to the Join Request (see <xref target="join-error"/>).</t>
          </li>
          <li>
            <t>OPT9: Optionally, define a default group rekeying scheme, to refer to in case the 'rekeying_scheme' parameter is not included in the Join Response: the "Point-to-Point" rekeying scheme registered in <xref section="11.12" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
          </li>
          <li>
            <t>OPT10: Optionally, specify the functionalities implemented at the 'control_group_uri' resource hosted at the Client, including message exchange encoding and other details: no.</t>
          </li>
          <li>
            <t>OPT11: Optionally, specify policies that instruct Clients to retain messages and for how long, if they are unsuccessfully decrypted: no.</t>
          </li>
          <li>
            <t>OPT12: Optionally, specify for the KDC to perform group rekeying (together or instead of renewing individual keying material) when receiving a Key Renewal Request: the KDC <bcp14>SHOULD NOT</bcp14> perform a group rekeying, unless already scheduled to occur shortly (see <xref target="sec-key-renewal-request"/>).</t>
          </li>
          <li>
            <t>OPT13: Optionally, specify how the identifier of a group member's authentication credential is included in requests sent to other group members: no.</t>
          </li>
          <li>
            <t>OPT14: Optionally, specify additional information to include in rekeying messages for the "Point-to-Point" group rekeying scheme (see <xref section="6.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>): no.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-09-10">
        <name>Version -09 to -10</name>
        <ul spacing="normal">
          <li>
            <t>More details on the scope format.</t>
          </li>
          <li>
            <t>More details in the encoding of the 'key' parameter in the Join Response.</t>
          </li>
          <li>
            <t>More details on exchanges between group members and KDC.</t>
          </li>
          <li>
            <t>More details on the rekeying process and rekeying messages.</t>
          </li>
          <li>
            <t>Defined replay checks at the Subscriber.</t>
          </li>
          <li>
            <t>Improved examples.</t>
          </li>
          <li>
            <t>Improved security considerations.</t>
          </li>
          <li>
            <t>Revised IANA considerations.</t>
          </li>
          <li>
            <t>Aligned the list of profile requirements with draft-ietf-ace-key-groupcomm.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-08-09">
        <name>Version -08 to -09</name>
        <ul spacing="normal">
          <li>
            <t>Improved terminology section.</t>
          </li>
          <li>
            <t>Generalized scope format for future, admin-related extensions.</t>
          </li>
          <li>
            <t>Improved definition of permissions in the format of scope.</t>
          </li>
          <li>
            <t>Clarified alternative computing of N_S Challenge when DTLS is used.</t>
          </li>
          <li>
            <t>Use of the parameter 'exi' in the Join Response.</t>
          </li>
          <li>
            <t>Use of RFC 9290 instead of the custom format of error responses.</t>
          </li>
          <li>
            <t>Fixed construction of the COSE_Encrypt0 object.</t>
          </li>
          <li>
            <t>Fixed use of the resource type "core.ps.gm".</t>
          </li>
          <li>
            <t>Updated formulation of profile requirements.</t>
          </li>
          <li>
            <t>Clarification and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-07-08">
        <name>Version -07 to -08</name>
        <ul spacing="normal">
          <li>
            <t>Revised presentation of the scope format.</t>
          </li>
          <li>
            <t>Revised presentation of the Join Request-Response exchange.</t>
          </li>
          <li>
            <t>The 'cnonce' parameter must be present in the Join Request.</t>
          </li>
          <li>
            <t>The 'kid' of the group key is used as Group Identifier.</t>
          </li>
          <li>
            <t>Relaxed inclusion of the 'peer_roles' parameter.</t>
          </li>
          <li>
            <t>More detailed description of the encryption and signing operations.</t>
          </li>
          <li>
            <t>Defined construction of the AEAD nonce.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-06-07">
        <name>Version -06 to -07</name>
        <ul spacing="normal">
          <li>
            <t>Revised abstract and introduction.</t>
          </li>
          <li>
            <t>Clarified use of "application groups".</t>
          </li>
          <li>
            <t>Revised use of protocols and transport profiles with Broker and KDC.</t>
          </li>
          <li>
            <t>Revised overview of the profile and its security associations.</t>
          </li>
          <li>
            <t>Revised presentation of authorization flow.</t>
          </li>
          <li>
            <t>Subscribers cannot be anonymous anymore.</t>
          </li>
          <li>
            <t>Revised scope definition.</t>
          </li>
          <li>
            <t>Revised Join Response.</t>
          </li>
          <li>
            <t>Revised COSE countersignature, COSE encrypt objects.</t>
          </li>
          <li>
            <t>Further clarifications, fixes and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors wish to thank <contact fullname="Ari Keränen"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Jim Schaad"/>, <contact fullname="Ludwig Seitz"/>, and <contact fullname="Göran Selander"/> for the useful discussion and reviews that helped shape this document.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+292XYbSZYg+K5z4h+8qT5FMgOAuGphLF0URUWwUhKZBJWR
eTKymU7ASXoJgKPcHaSYCtWvzDzMN8wHdP1Y293MrpmbA6CkyIyZ0zpVkQTg
bsu1a3dfut3uVw9u9pLtrx589aDO61G2l5zMLkZ5dd3tzy6qQZlfZMlJWVzm
oyy5LMpkf1ZfZ5M6H6R1XkySdDLEr4oy/zt9Aw8dFJOqLtN8kg2Tw8lNXhaT
sXmpStb2Dw7Xv3qQXlyUmZnWfILpYCqZ5KsHw2IwScdmIcMyvay7eVZfdtNB
1p2a9Zhnp/Rcd3MD1pxPy72kLmdVvbWx8Wxjy4xdZule0s8GszKv7756cHtF
8/xUlO/yyVXyQ1nMpl89eHe7lxxN6qycZHX3Bcz01QOzp72kqodfPTATjfOq
Mvup76ZmKUeHZy9hukExNGPsJTOzpqfwRYp73/vqgYFjYv7lk2ovedlLTtJR
Mb7IJzl9TRt6WaaTQVYN0vDnojRjHpb5oKqKCX2VjdN8tJdcyiu9qbzyrxk/
2BsUY3/ig57Z+ORqNtKzHuRXw2zs/YDzPS9nk2yUvJ3kN1lZIazUxIMKn//X
dDDumcf9eV73krN8VAxSPc/rtBwU3vc4zelR/zDZf+4NPoZHezU++q9l3qsy
gOWkKMcGh26yPXj4aP/NvtlhlZ2noyuDXvX1uAp+eJfddfF8/K+vs3SYld1p
Wpp1mROm105fHmxtbj6Tv3efbOzK34+3d57Yvx8/27B/P9mxzz/Z2t2yfz/e
2bR/P9uy4zzdfLJj/95+Zp9/urPzWP1t53r6eNPO9fSZm+vZhpvL/L1t/950
7z4z+O7+3lbfP1F/u708295+SnDqvujhnRoUZWb+k075Zvm/wo0D+F7BdTGI
Nt7D6za59A6JNmEX+HRr95la4Jb6221iZ3szXEhlFnJRlN1sYi5YNuwOsrJu
LicbXheDblHhwpkMNJ8yhKV4Z8aozX8n3UlR55dMrBZskEfGp17/4eyse7zf
P+p3+7WhcWk57N7QOScJ08kV/D2R3/Gd5I9wlQwV3O1trNDTw7SGh7c2Np/w
N3VaXmWG0lzX9XTv0SND76pekVZ51S2m2QRu26Pxf9Q1/efGjPSoqPBDFz6Y
Zfau6zHfZEt/EvzXlT/4ou73kufp5F3V9vuh+b3Mr65aH/i9ecAsKDNbBNoc
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
Iiv95S/fWt75wpmBLpMzpPU2hNvyz+//Ghnky6wk5OV28lOW4f3foytx25FR
DMh08HgoD/xq2/kSg3zNW/DQWKCxtj8b5mDu3RN7kdrc92ol30YHAf3FKChz
R/n6NwuTbvKWNGmXWlk1Uys1LPyVEJokh+IikDRN9jJonbN9kN8MTBDt/fsL
jAw4GMSC8sZ6TIZ/1Vv8JQYRtWkx4mO8i6YJjSNeBvHDUX7DaH8/zNeA0TC5
F+Y3BvmNwcTiRbtpxzqpSYOJwwSCURpiemSsAChf/xZh4v4t4qJzKNsaaq4k
Wz5idXUqkpSF5vqvuJ2G9q3lRBt65F2Cl+aXlXm6dD8HD6kOXi8zisIfkqAN
ZjtzHzDcBP3xz49Pm5UWJFYV3pDgb1SsZmOy50HkhR4CA38hbMJ3uJB5+cez
sxMoLVRndLHxTVCfC6N7Xowy9ASBFFxSyY2mFVLliqBpNDNAGRrhdd8IssVV
MatGd53k3/rHbzjPamsXEhY4HXdG+Q9uetxy0/lkNMwbrvdEE4Tpb6xKVMnj
3iau43Fvy0uRwPAVTPHAtXAkCbsrSH/tcn5fIOWDF4NSUtyc6cAAAbY/uusl
h+8hbtXlPknqdOUdkIu+pshruuShdxXygZFUOJ4aOPaOWUkAjYbdTPLoR8kf
HmqGnEbNJ3wA7C6hvG95LX7QvtMt6jjsJRhgQfkvDZ97haaDZFQU7ww1Kx3x
fNSDfKnuu4lRux+BOSYsM0GAv+NsHB7A3AOgl7+qe3J/ZJBNXA2jfPKu8kiQ
dkFiCZmqaMYhxJNnBsVoxMuxSw9OOlz0zqIlexBn5ykGXVWe95QDAWVa9LXZ
4geozg4NKQHzA5af0xY0W4lhuUQCg81GC1oKlff7AR4fFIBEMFRaYqBgGI3u
mRB2yX3uaCvmLvfdTejomSEbo+JqIomkmDrvGx+xAJKOcXW/v6pSndzTwt4O
yoxO+Mcck1TR+VmK1EdlMN5OlLeywSCDE9+1JIz2BE6ridwuFfrZnjwGHIAJ
+pU5SbjxhkuF9gEyTO/0Nja99dHXPm3c02afR+kg+xqqCdKTJ+kdiIdcIe8D
m7sfAYgeJZvJHlzKdFrtPXqUVj3eBRTWpNRUrtj3McJ7DWqAhNnN3lvO2wb1
hHPvGox4lF3WxIYNToKKshRSvhuG1PUYEwy1g5vsk0AJF0RTKZ7hIsTgvZgE
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

-->

</rfc>
