<?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.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-pubsub-profile-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.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-11"/>
    <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="2025" month="January" day="07"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 88?>

<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 93?>

<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="RFC9594"/>, 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="RFC9594"/>, 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 parameters' keys 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="RFC9594"/> to perform authentication, authorization, and key distribution operations as overviewed in <xref section="2" sectionFormat="of" target="RFC9594"/>, 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="RFC9594"/>. The Key Distribution Center (KDC) also acts as an ACE RS, and builds on what is defined for the KDC in <xref target="RFC9594"/>. 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 authorised 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="RFC9594"/> 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 authorised 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 Publishers 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="RFC9594"/>.</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="576" viewBox="0 0 576 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 16,48 L 16,560" fill="none" stroke="black"/>
              <path d="M 456,48 L 456,152" fill="none" stroke="black"/>
              <path d="M 456,184 L 456,328" fill="none" stroke="black"/>
              <path d="M 456,360 L 456,392" fill="none" stroke="black"/>
              <path d="M 456,424 L 456,448" fill="none" stroke="black"/>
              <path d="M 456,488 L 456,560" fill="none" stroke="black"/>
              <path d="M 520,48 L 520,392" fill="none" stroke="black"/>
              <path d="M 520,424 L 520,456" fill="none" stroke="black"/>
              <path d="M 520,488 L 520,560" fill="none" stroke="black"/>
              <path d="M 560,48 L 560,560" fill="none" stroke="black"/>
              <path d="M 32,64 L 112,64" fill="none" stroke="black"/>
              <path d="M 352,64 L 440,64" fill="none" stroke="black"/>
              <path d="M 32,96 L 160,96" fill="none" stroke="black"/>
              <path d="M 312,96 L 440,96" fill="none" stroke="black"/>
              <path d="M 32,112 L 168,112" fill="none" stroke="black"/>
              <path d="M 304,112 L 440,112" fill="none" stroke="black"/>
              <path d="M 16,160 L 72,160" fill="none" stroke="black"/>
              <path d="M 416,160 L 512,160" fill="none" stroke="black"/>
              <path d="M 24,176 L 72,176" fill="none" stroke="black"/>
              <path d="M 424,176 L 520,176" fill="none" stroke="black"/>
              <path d="M 16,224 L 80,224" fill="none" stroke="black"/>
              <path d="M 384,224 L 448,224" fill="none" stroke="black"/>
              <path d="M 24,240 L 80,240" fill="none" stroke="black"/>
              <path d="M 384,240 L 448,240" fill="none" stroke="black"/>
              <path d="M 32,288 L 48,288" fill="none" stroke="black"/>
              <path d="M 416,288 L 440,288" fill="none" stroke="black"/>
              <path d="M 16,336 L 88,336" fill="none" stroke="black"/>
              <path d="M 408,336 L 512,336" fill="none" stroke="black"/>
              <path d="M 24,352 L 88,352" fill="none" stroke="black"/>
              <path d="M 416,352 L 520,352" fill="none" stroke="black"/>
              <path d="M 16,400 L 104,400" fill="none" stroke="black"/>
              <path d="M 408,400 L 552,400" fill="none" stroke="black"/>
              <path d="M 24,416 L 104,416" fill="none" stroke="black"/>
              <path d="M 408,416 L 552,416" fill="none" stroke="black"/>
              <path d="M 16,464 L 72,464" fill="none" stroke="black"/>
              <path d="M 480,464 L 552,464" fill="none" stroke="black"/>
              <path d="M 24,480 L 104,480" fill="none" stroke="black"/>
              <path d="M 432,480 L 560,480" fill="none" stroke="black"/>
              <path d="M 16,528 L 152,528" fill="none" stroke="black"/>
              <path d="M 304,528 L 448,528" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="560,464 548,458.4 548,469.6" fill="black" transform="rotate(0,552,464)"/>
              <polygon class="arrowhead" points="560,416 548,410.4 548,421.6" fill="black" transform="rotate(0,552,416)"/>
              <polygon class="arrowhead" points="560,400 548,394.4 548,405.6" fill="black" transform="rotate(0,552,400)"/>
              <polygon class="arrowhead" points="520,336 508,330.4 508,341.6" fill="black" transform="rotate(0,512,336)"/>
              <polygon class="arrowhead" points="520,160 508,154.4 508,165.6" fill="black" transform="rotate(0,512,160)"/>
              <polygon class="arrowhead" points="456,528 444,522.4 444,533.6" fill="black" transform="rotate(0,448,528)"/>
              <polygon class="arrowhead" points="456,240 444,234.4 444,245.6" fill="black" transform="rotate(0,448,240)"/>
              <polygon class="arrowhead" points="456,224 444,218.4 444,229.6" fill="black" transform="rotate(0,448,224)"/>
              <polygon class="arrowhead" points="448,288 436,282.4 436,293.6" fill="black" transform="rotate(0,440,288)"/>
              <polygon class="arrowhead" points="448,96 436,90.4 436,101.6" fill="black" transform="rotate(0,440,96)"/>
              <polygon class="arrowhead" points="448,64 436,58.4 436,69.6" fill="black" transform="rotate(0,440,64)"/>
              <polygon class="arrowhead" points="40,288 28,282.4 28,293.6" fill="black" transform="rotate(180,32,288)"/>
              <polygon class="arrowhead" points="40,112 28,106.4 28,117.6" fill="black" transform="rotate(180,32,112)"/>
              <polygon class="arrowhead" points="40,64 28,58.4 28,69.6" fill="black" transform="rotate(180,32,64)"/>
              <polygon class="arrowhead" points="32,480 20,474.4 20,485.6" fill="black" transform="rotate(180,24,480)"/>
              <polygon class="arrowhead" points="32,416 20,410.4 20,421.6" fill="black" transform="rotate(180,24,416)"/>
              <polygon class="arrowhead" points="32,352 20,346.4 20,357.6" fill="black" transform="rotate(180,24,352)"/>
              <polygon class="arrowhead" points="32,240 20,234.4 20,245.6" fill="black" transform="rotate(180,24,240)"/>
              <polygon class="arrowhead" points="32,176 20,170.4 20,181.6" fill="black" transform="rotate(180,24,176)"/>
              <g class="text">
                <text x="28" y="36">Client</text>
                <text x="460" y="36">Broker</text>
                <text x="524" y="36">AS</text>
                <text x="560" y="36">KDC</text>
                <text x="24" y="68">[</text>
                <text x="160" y="68">Discovery</text>
                <text x="212" y="68">of</text>
                <text x="248" y="68">Topic</text>
                <text x="308" y="68">Resource</text>
                <text x="448" y="68">]</text>
                <text x="24" y="100">[</text>
                <text x="204" y="100">Resource</text>
                <text x="272" y="100">Request</text>
                <text x="448" y="100">]</text>
                <text x="24" y="116">[</text>
                <text x="188" y="116">AS</text>
                <text x="248" y="116">Information</text>
                <text x="448" y="116">]</text>
                <text x="136" y="164">Authorisation</text>
                <text x="224" y="164">Request</text>
                <text x="300" y="164">(Audience:</text>
                <text x="376" y="164">Broker)</text>
                <text x="136" y="180">Authorisation</text>
                <text x="228" y="180">Response</text>
                <text x="308" y="180">(Audience:</text>
                <text x="384" y="180">Broker)</text>
                <text x="116" y="228">Upload</text>
                <text x="156" y="228">of</text>
                <text x="224" y="228">authorisation</text>
                <text x="328" y="228">information</text>
                <text x="144" y="244">Establishment</text>
                <text x="212" y="244">of</text>
                <text x="252" y="244">secure</text>
                <text x="328" y="244">association</text>
                <text x="24" y="292">[</text>
                <text x="96" y="292">Discovery</text>
                <text x="148" y="292">of</text>
                <text x="176" y="292">KDC</text>
                <text x="208" y="292">and</text>
                <text x="244" y="292">name</text>
                <text x="276" y="292">of</text>
                <text x="324" y="292">security</text>
                <text x="384" y="292">group</text>
                <text x="448" y="292">]</text>
                <text x="152" y="340">Authorisation</text>
                <text x="240" y="340">Request</text>
                <text x="316" y="340">(Audience:</text>
                <text x="380" y="340">KDC)</text>
                <text x="152" y="356">Authorisation</text>
                <text x="244" y="356">Response</text>
                <text x="324" y="356">(Audience:</text>
                <text x="388" y="356">KDC)</text>
                <text x="140" y="404">Upload</text>
                <text x="180" y="404">of</text>
                <text x="248" y="404">authorisation</text>
                <text x="352" y="404">information</text>
                <text x="168" y="420">Establishment</text>
                <text x="236" y="420">of</text>
                <text x="276" y="420">secure</text>
                <text x="352" y="420">association</text>
                <text x="112" y="468">Request</text>
                <text x="156" y="468">to</text>
                <text x="188" y="468">join</text>
                <text x="224" y="468">the</text>
                <text x="276" y="468">security</text>
                <text x="336" y="468">group</text>
                <text x="376" y="468">for</text>
                <text x="408" y="468">the</text>
                <text x="448" y="468">topic</text>
                <text x="140" y="484">Keying</text>
                <text x="204" y="484">material</text>
                <text x="256" y="484">for</text>
                <text x="288" y="484">the</text>
                <text x="340" y="484">security</text>
                <text x="400" y="484">group</text>
                <text x="196" y="532">Resource</text>
                <text x="264" y="532">Request</text>
                <text x="176" y="548">(Publication/Subscription</text>
                <text x="292" y="548">to</text>
                <text x="320" y="548">the</text>
                <text x="364" 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 security 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>After a Client uploads to the Broker the authorisation information for participating in a Pub-Sub topic with name TOPICNAME (see <xref target="auth-request"/>), the Client can perform the optional discovery of the KDC and security group name at the Broker, by accessing the topic resource corresponding to the topic in question (see <xref target="kdc-discovery"/>).</t>
      <t>In order to ensure that the Client can seamlessly access the right topic resource at the Broker, it is <bcp14>RECOMMENDED</bcp14> that a Broker implementing this application profile uses the path /ps/TOPICNAME to host the topic resource for the topic with name TOPICNAME.</t>
      <t>Alternatively, the Client might not know the right topic resource to target, and thus would attempt to access different ones (e.g., based on the result of an early discovery of topic resources, see <xref target="topic-discovery"/>), until it finds the right one specifying TOPICNAME as value of the 'topic-name' parameter in the resource representation.</t>
      <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 Unauthorised 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 authorised to operate.</t>
        <t>In particular the Client is authorised 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 the 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="RFC9594"/> 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="RFC9594"/>):</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.  </t>
            <t>
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="RFC9594"/>, 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 authorised 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/authorised when "Toid" specifies the name of an application group (topic), while it is signaled as not wished/authorised 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 have authorised only the Delete operation 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 have authorised 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/authorised. 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 authorised), 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>Authorization 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="RFC9594"/>, 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 authorised 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="RFC9594"/> 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 the KDC</name>
        <t>The Client transfers its access token to the KDC using one of the methods defined in the <xref section="3.3" sectionFormat="of" target="RFC9594"/>. 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="RFC9594"/>). 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).  </t>
            <t>
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). POST (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="RFC9594"/>, 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="RFC9594"/>, 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="RFC9594"/>, 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="RFC9594"/>. 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="RFC9594"/>:</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 Subscriber 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 Credential 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 through 'client_cred_verify'</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 further concatenated with N_C, by using the private key corresponding to the public key that is specified 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>Upon receiving the Join Request, the KDC processes it as defined in <xref section="4.3.1" sectionFormat="of" target="RFC9594"/>, 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.</t>
          <t>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 is formatted as a CBOR map and <bcp14>MUST</bcp14> contain the following fields as per <xref section="4.3.1" sectionFormat="of" target="RFC9594"/>:</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, and 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 authorised to be Publisher in the group; and ii) it is irrelevant whether such a Client is also authorised 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="RFC9594"/> 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 (if present). 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="RFC9594"/>. 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 individual keying material").</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="RFC9594"/>. The Key Distribution Response is formatted as defined in <xref section="4.3.2" sectionFormat="of" target="RFC9594"/>, 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 thereafter.</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 authorised to be Publisher in the group; and ii) it is irrelevant whether such a Client is also authorised 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="RFC9594"/>. The Key Distribution Response is formatted as defined in <xref section="4.8.1" sectionFormat="of" target="RFC9594"/>, 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 thereafter.</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="RFC9594"/>. That is, it sends a CoAP POST 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="RFC9594"/>, 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="RFC9594"/>. 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="RFC9594"/>. 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 individual keying material").</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.</t>
          <t>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="RFC9594"/>).</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.</t>
          <t>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="RFC9594"/>).</t>
          <t>The KDC can also remove a group member due to any of the reasons described in <xref section="5" sectionFormat="of" target="RFC9594"/>.</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="RFC9594"/>, 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 thereafter (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="RFC9594"/>), 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 credentials and Sender IDs 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 from the Publisher to the topic-data resource at the Broker and in a 2.05 (Content) response from that resource to a Subscriber.</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="3.2.1" 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 Subscriber <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="RFC9594"/>, the ACE framework for Authentication and Authorization <xref target="RFC9200"/>, and the specific transport profile of ACE used, 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 authorised to publish on a certain topic, and with distributing that data only to the Subscribers authorised 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 happen, 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="RFC9594"/>.</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="RFC9594"/>.</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><br/></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><br/></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><br/></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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="IANA.cose_algorithms" target="https://www.iana.org/assignments/cose">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.cose_key-type" target="https://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="https://www.iana.org/assignments/cose">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </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="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="RFC9594">
          <front>
            <title>Key Provisioning for Group Communication Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <date month="September" 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 that act as Clients and are authorized to join a group can do so by interacting with a Key Distribution Center (KDC) acting as the 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="RFC" value="9594"/>
          <seriesInfo name="DOI" value="10.17487/RFC9594"/>
        </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="21" month="October" 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-15"/>
        </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="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>
      </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="8" month="July" 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-11"/>
        </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="21" month="October" 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-06"/>
        </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="22" month="September" 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-09"/>
        </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 1049?>

<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="RFC9594"/>.</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 scope uses AIF, 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 the 'sign_alg' parameter: 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 and structure for the 'sign_parameters' parameter: values and structure 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 and structure for the 'sign_key_parameters' parameter: values and structure 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 applicable, the acceptable values for the 'cred_fmt' parameter: 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 as required for the correct group operation 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="RFC9594"/> 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 resources, 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 <xref target="core_rt"/>.</t>
          </li>
          <li>
            <t>REQ11: Define what specific actions (e.g., CoAP methods) are allowed on each resource accessible through the KDC interface, depending on: whether the Client is a current group member; the roles that a Client is authorised to take as per the obtained access token; and the roles that the Client has as a 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 identifiers: 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 the 'client_cred_verify' parameter 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 access token is not provided to the KDC through the Token Transfer Request sent to the /authz-info endpoint (e.g., the access token is instead transferred during the establishment of a secure communication association): see <xref target="pop"/>.</t>
          </li>
          <li>
            <t>REQ16: Define the initial value of the version number for the group keying material: 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 group keying material that is conveyed in the 'key' parameter: see <xref target="join-response"/>.</t>
          </li>
          <li>
            <t>REQ18: Specify the acceptable values of the 'gkty' parameter. For each of them, register a corresponding entry in the "ACE Groupcomm Key Types" IANA registry if such an entry does not exist already: Group_PubSub_Keying_Material, see <xref target="join-response"/> and <xref target="iana-ace-groupcomm-key"/>.</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 default values of the entries of the CBOR map to include in the 'group_policies' parameter: not applicable.</t>
          </li>
          <li>
            <t>REQ21: Specify the approaches used to compute and verify the PoP evidence to include in the 'kdc_cred_verify' parameter 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 members of the group use to communicate with each other (e.g., CoAP for group communication): 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 that members of the group use to protect the group communication (e.g., Group OSCORE). 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 the Client and the KDC. Optionally, specify a transport profile of ACE <xref target="RFC9200"/> to use between the Client and the 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 node 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 node identifiers that are included in the 'get_creds' parameter but are not associated with any current group member: 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 such keying material, as well as the corresponding CBOR map key that has to be registered in the "ACE Groupcomm Parameters" registry: 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="RFC9594"/>: 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="RFC9594"/> 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 the 'sign_info' parameter 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 the 'creds_repo' parameter if the default one is not used: no.</t>
          </li>
          <li>
            <t>OPT7: Optionally, specify the functionalities implemented at the resource hosted by the Client at the URI indicated in the 'control_uri' parameter, including the encoding of exchanged messages and other details: no.</t>
          </li>
          <li>
            <t>OPT8: Optionally, specify the behavior of the POST handler of group-membership resources, for the case when it fails to retrieve an authentication credential for the specific Client: 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.13" sectionFormat="of" target="RFC9594"/>.</t>
          </li>
          <li>
            <t>OPT10: Optionally, specify the functionalities implemented at the resource hosted by the Client at the URI indicated in the 'control_group_uri' parameter, including the encoding of exchanged messages and other details: no.</t>
          </li>
          <li>
            <t>OPT11: Optionally, specify policies that instruct Clients to retain messages and for how long, if those are unsuccessfully decrypted: no.</t>
          </li>
          <li>
            <t>OPT12: Optionally, specify for the KDC to perform a group rekeying when receiving a Key Renewal Request, together with or instead of renewing individual keying material: 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" sectionFormat="of" target="RFC9594"/>): no.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-10-11">
        <name>Version -10 to -11</name>
        <ul spacing="normal">
          <li>
            <t>Recommended /ps/TOPICNAME as path ot topic resources at the Broker.</t>
          </li>
          <li>
            <t>The request for a new Sender ID uses the method POST.</t>
          </li>
          <li>
            <t>Fixed description of ACE Group Error with identifier 4.</t>
          </li>
          <li>
            <t>Aligned requirement formulation with that in RFC 9594.</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <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+2923YbR5Yg+q61/A851KwhWQYgXnWhXZ6mKMpmlySyCKpc
tco1rCSQJLMFINGZCVK0rP6VmYfzDecDTv/YiX2L2BEZCYCSXK6ZNVrdLgLI
jMuOHft+6Xa7Xz242Uu2v3rw1YM6r0fZXnIyuxjl1XW3P7uoBmV+kSUnZXGZ
j7LksiiT/Vl9nU3qfJDWeTFJ0skQvyrK/Gf6Bh46KCZVXab5JBsmh5ObvCwm
Y/NSlaztHxyuf/UgvbgoMzOt+QTTwVQyyVcPhsVgko7NQoZlell386y+7KaD
rDs16zHPTum57iits6qGdefTci+py1lVb21sPNvYMuOXWbqX9LPBrMzru68e
3F7RXD8W5bt8cpV8Xxaz6VcP3t3uJUeTOisnWd19AbN99cDsay+p6uFXD8xk
47yqzJ7qu6lZztHh2UuYblAMzRh7ycys6yl8keL+9756YGCZmH/5pNpLXvaS
k3RUjC/ySU5f06ZelulkkFWDNPy5KM2Yh2U+qKpiQl9l4zQf7SWX8kpvKq/8
S8YP9gbF2J/4oGc2PrmajfSsB/nVMBt7P+B8z8vZJBslbyf5TVZWCCs18aDC
5/8lHYx75nF/nte95CwfFYNUz/M6LQeF9z1Oc3rUP0z2n3uDj+HRXo2P/kuZ
96oMYDkpyrHBo5tsDx4+2n+zb3ZYZefp6MqgWH09roIf3mV3XTwf/+vrLB1m
ZXealmZd5oTptdOXB7tPNnbl78fbO0/s34+fbdi/n+w8k7+fbO1u2b8f72za
v59t2XGebj+zzzzd2Xms/rbjP328acd/+syN/2zDjW/+3rZ/b7p3nxm8dn9v
q++fqL/d+p9tbz+1f+8+2yHYdF/08C4NijIz/0mnfKP28A5NLj3I04rtap5u
7T5Tq9lSf7sV72xvhjNVZqaLouxmE3NrsmF3kJW1/wzc7Gx4XQy6RYUr4/vd
fMpQjOKdGaM2/510J0WdXzIVaj4LWHEFl9xcjzGPjE+9/uPZWfd4v3/U7/Zr
Q7zScti9oYNMEiaAK/h7Ir/jO8mf4H4Y8rbb21ihp4eGAJmHtzY2n/A3dVpe
ZYZ8XNf1dO/RI0PIql6RVnnVLabZBK7Qo/G/1zX958aM9Kio8EMXPphl9q7r
MV9PS1QS/NeVP/j27feS5+nkXdX2+6H5vcyvrlof+IN5wCwoM1sEoht/6LSX
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
mLaXEBWurcUAuz2ek+pAZvpzNNOvnZwevzx6dXh+9vzFujWaN5tRoZmEpxRv
xzO7eIpFbVsJC3sQtfoTh60qonabVu7JScS6GIr88rCS+I/ChjD3zhVsV7rM
9qZZVv50DrGjapMUc1uMc7SCZdDP02yUQeEZulGwxqLBGBU5J5oFbSDaHR4C
K292rHLZNl418wvt9dfczJX+pbi+3CgKo+wGCmga0RWlBC6cpVsiVUVzfBVF
HMTeeHDgSDOChQfLaGCwB3OV0zoPvdRsuFQ73RK4c+YZCypb3sBBz0ndYghd
MjyJBotEOYTHihrnrr1O74aDnyTktHXPYfqhTTokl9Si5jq+tUTaWMZLxqoE
xdV5YVGwjaf+LiRetv3o3GbVpbn/LqIx0KCaxuroUGdsekDiW+8ZDu026UX9
/Do7DRRtdiMSxbLY5fk7qA+iZdpeqM5SrgwvOlXC0HSQT7QPQitqRJirg0Zw
ETYtChG/EotDG+3NXfqs9fqtnECiC/Qxwj9WAmNGUg2ujUzaYHPij9jc7G2G
ndOkwjjG9zdG8g34xydnz9ap9tXkjqiNikQM9zXHWNZzGUquWJpKzQv8NNZl
NBxq653tl5dXqK2LdYg7J7ZZLhGwUDHP62FuA2O9tPCeEQyrIux5bg1OKWUR
2+RsbMEMBfRtqvBSCeyqcEPSqDTp9c6o3FyuwqGYMr3wFBudakEwL97WZpVI
hEwwuk1sUUDwQurnBpZaXhvrdjqbUvltacAjG+y45OxOaPyjLybZrbU9ZkO3
HG3VdSEfUTAFJOhdlk1JPfWCkadDKgYOXTrBzKKKVaJxLLCFL4T2nDLRHDcK
oaJSLRwwjJ8yfLFpUES5dlBcTbD5kGMH8OdNXtYz8Y1eLxF5TX1RMfYUJFUM
zITx1My8FoBV5Vbo3QGkmqoI8+ziPvdBLl3Doh6gnARAVhwG44ynTT83LHFO
ERnpOajyPTiDo0ou0sG727R0taSDUnnCii2eWIKjO0dPVI6wVtA6up0sbEpq
kjO2e+2ZSe1i3JcodzmXtYgl+yhSLzaaH8NmML4b85y5XlMZ4J1Qk7G2y+jN
D9/RJN1biIRr2Fy1uTKZC+kQUcXjt7ltq8nW/GZgOieu+5KDWJdigcprRhJZ
V+HKVqlslEJuiE+tkSaSUqzkAxsfdYhxSD9A81dYOUdJUeSDRA5bHIRSsXei
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
dDmaXV5+9eD/B8MdsSWHjwEA

-->

</rfc>
