<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-pubsub-profile-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <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-09"/>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="C." surname="Sengul" fullname="Cigdem Sengul">
      <organization>Brunel University</organization>
      <address>
        <email>csengul@acm.org</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Authentication and Authorization for Constrained Environments Working Group mailing list (ace@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ace-wg/pubsub-profile"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>In a publish-subscribe (pub/sub) scenario, devices <!--with limited reachability--> communicate via a Broker, which enables store-and-forward messaging between these devices. 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 group associated with that topic.</t>
      <t>With a focus on the pub/sub architecture defined in <xref target="I-D.ietf-core-coap-pubsub"/> for the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>, this document defines an application profile of the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>, which enables pub/sub communication where a group of Publishers and Subscribers securely communicate through a Broker using CoAP.</t>
      <t>Building on the message formats and processing defined in <xref target="I-D.ietf-ace-key-groupcomm"/>, this document specifies the provisioning and enforcement of authorization information for Clients to act as Publishers and/or Subscribers at the Broker, as well as the provisioning of keying material and security parameters that Clients use for protecting end-to-end their communications via the Broker.</t>
      <t>In order to protect the pub/sub operations at the Broker as well as the provisioning of keying material and security parameters, this profile relies on protocol-specific transport profiles of ACE (e.g., <xref target="RFC9202"/>, <xref target="RFC9203"/>, or <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>) to achieve communication security, server authentication, and proof-of-possession for a key owned by the Client and bound to an OAuth 2.0 Access Token.</t>
      <t>The content of published messages that are circulated by the Broker is protected end-to-end between the corresponding Publisher and the intended Subscribers. To this end, this profile relies on COSE <xref target="RFC9052"/><xref target="RFC9053"/> and on keying material provided to the Publishers and Subscribers participating in the same pub/sub topic. In particular, source authentication of published content is achieved by means of the corresponding Publisher signing such content with its own private key.</t>
      <t>While this profile focuses on the pub/sub architecture for CoAP, this document also describes how it 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>
        <t>Readers are expected to be familiar with:</t>
        <ul spacing="normal">
          <li>The terms and concepts described in <xref target="RFC9200"/>, and the Authorization Information Format (AIF) <xref target="RFC9237"/> to express authorization information. In particular, analogously to <xref target="RFC9200"/>, terminology for entities in the architecture such as Client (C), Resource Server (RS), and Authorization Server (AS) is defined in OAuth 2.0 <xref target="RFC6749"/>.</li>
          <li>The terms and concept related to the message formats and processing, specified in <xref target="I-D.ietf-ace-key-groupcomm"/>, for provisioning and renewing keying material in group communication scenarios. These include the abbreviations REQx and OPTx denoting the numbered mandatory-to-address and optional-to-address requirements, respectively.</li>
          <li>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"/>.</li>
          <li>The terms and concepts described in CoAP <xref target="RFC7252"/>. Unless otherwise indicated, the term "endpoint" is used here following its OAuth definition, aimed at denoting resources such as <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".</li>
          <li>The terms and concepts of pub/sub group communication with CoAP, as described in <xref target="I-D.ietf-core-coap-pubsub"/>.</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>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". 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.</li>
        </ul>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation without the tag and value abbreviations.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Application Profile Overview</name>
      <t>This document describes how to use <xref target="RFC9200"/> and <xref target="I-D.ietf-ace-key-groupcomm"/> to perform authentication, authorization, and key distribution operations as overviewed in <xref section="2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, where the considered group is the security group composed of the pub/sub clients that exchange end-to-end protected content through the Broker.</t>
      <t>Pub/sub clients communicate within their application groups, each of which is mapped to a topic. Depending on the application, a topic may consist of one or more sub-topics, which may have their own sub-topics and so on, thus forming a hierarchy. A security group <bcp14>SHOULD</bcp14> be associated with a single application group. However, the same application group <bcp14>MAY</bcp14> be associated with multiple security groups. Further details and considerations on the mapping between the two types of groups are out of the scope of this document.</t>
      <t>This profile considers the architecture shown in <xref target="archi"/>. A Client can act as a Publisher, or a Subscriber, or both, e.g., by publishing to some topics and subscribing to others. However, for the simplicity of presentation, this profile describes Publisher and Subscriber Clients separately.</t>
      <t>Both Publishers and Subscribers act as ACE Clients. The Broker acts as an ACE RS, and corresponds to the Dispatcher in <xref target="I-D.ietf-ace-key-groupcomm"/>. The Key Distribution Center (KDC) also acts as an ACE RS, and builds on what is defined for the KDC in <xref target="I-D.ietf-ace-key-groupcomm"/>. From a high-level point of view, the Clients interact with the KDC in order to join security groups and obtain 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">
              <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 184,120 L 184,160" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
              <path d="M 240,224 L 240,304" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,112" fill="none" stroke="black"/>
              <path d="M 336,120 L 336,192" fill="none" stroke="black"/>
              <path d="M 344,224 L 344,304" fill="none" stroke="black"/>
              <path d="M 392,32 L 392,112" 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 128,160" fill="none" stroke="black"/>
              <path d="M 144,160 L 184,160" fill="none" stroke="black"/>
              <path d="M 80,192 L 248,192" fill="none" stroke="black"/>
              <path d="M 264,192 L 336,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 112,224" fill="none" stroke="black"/>
              <path d="M 240,224 L 344,224" fill="none" stroke="black"/>
              <path d="M 128,240 L 152,240" fill="none" stroke="black"/>
              <path d="M 200,240 L 224,240" fill="none" stroke="black"/>
              <path d="M 128,272 L 152,272" fill="none" stroke="black"/>
              <path d="M 200,272 L 224,272" fill="none" stroke="black"/>
              <path d="M 8,304 L 112,304" fill="none" stroke="black"/>
              <path d="M 240,304 L 344,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="232,272 220,266.4 220,277.6" fill="black" transform="rotate(0,224,272)"/>
              <polygon class="arrowhead" points="232,240 220,234.4 220,245.6" fill="black" transform="rotate(0,224,240)"/>
              <polygon class="arrowhead" points="192,120 180,114.4 180,125.6" fill="black" transform="rotate(270,184,120)"/>
              <polygon class="arrowhead" points="136,272 124,266.4 124,277.6" fill="black" transform="rotate(180,128,272)"/>
              <polygon class="arrowhead" points="136,240 124,234.4 124,245.6" fill="black" transform="rotate(180,128,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="136" y="164">A</text>
                <text x="256" y="196">B</text>
                <text x="176" y="244">(O)</text>
                <text x="56" y="260">Pub/sub</text>
                <text x="292" y="260">Broker</text>
                <text x="52" y="276">Client</text>
                <text x="176" 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 pub/sub communication protocol for their interaction with the Broker. When using the profile defined in this document, this protocol <bcp14>MUST</bcp14> be CoAP, which is used as described in <xref target="I-D.ietf-core-coap-pubsub"/>. What is specified in this document can apply to other pub/sub protocols 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>The Client and the Broker <bcp14>MUST</bcp14> have a secure communication association, which they establish with the help of the AS and using a transport profile of ACE. This is shown by the interactions A and C in <xref target="archi"/>. During this process, the Client obtains an Access Token from the AS and uploads it to the Broker, thus providing an evidence of the topics that it is authorized to participate in, and with which permissions.</t>
      <t>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 defined in <xref target="I-D.ietf-ace-key-groupcomm"/> and further specified in this document.</t>
      <t>In addition, this profile allows an anonymous Client to perform some of the discovery operations defined in <xref section="2.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/> through the Broker, as shown by the interaction O in <xref target="archi"/>. That is, an anonymous Client can discover:</t>
      <ul spacing="normal">
        <li>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</li>
        <li>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.2" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>).</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 the ACE RS, verifies that the Client is authorized to perform data operations (i.e., publish, subscribe, read, delete) on a certain set of topics (Security Association 1). As discussed above, this security association is set up with the help of the AS and using a transport profile of ACE, when the Client obtains the Access Token to upload to the Broker.</t>
      <t>On the other hand, separately for each topic, all the Publisher and Subscribers for that topic have a common, group security association, through which the published content sent through the Broker is protected end-to-end (Security Association 2). As discussed above, this security association is set up and maintained as the different Clients request the KDC to join the security group, upon which they obtain from the KDC the corresponding group keying material to use for protecting end-to-end and verifying the content of their pub/sub group communication.</t>
      <figure anchor="associations">
        <name>Security Associations between Publisher, Broker, and Subscriber.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="560" viewBox="0 0 560 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,112" fill="none" stroke="black"/>
              <path d="M 224,32 L 224,112" fill="none" stroke="black"/>
              <path d="M 328,32 L 328,112" fill="none" stroke="black"/>
              <path d="M 448,32 L 448,112" fill="none" stroke="black"/>
              <path d="M 552,32 L 552,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
              <path d="M 224,32 L 328,32" fill="none" stroke="black"/>
              <path d="M 448,32 L 552,32" fill="none" stroke="black"/>
              <path d="M 8,112 L 112,112" fill="none" stroke="black"/>
              <path d="M 224,112 L 328,112" fill="none" stroke="black"/>
              <path d="M 448,112 L 552,112" fill="none" stroke="black"/>
              <path d="M 88,160 L 128,160" fill="none" stroke="black"/>
              <path d="M 216,160 L 264,160" fill="none" stroke="black"/>
              <path d="M 296,160 L 344,160" fill="none" stroke="black"/>
              <path d="M 432,160 L 480,160" fill="none" stroke="black"/>
              <path d="M 56,208 L 232,208" fill="none" stroke="black"/>
              <path d="M 320,208 L 512,208" fill="none" stroke="black"/>
              <g class="text">
                <text x="56" y="68">Publisher</text>
                <text x="276" y="68">Broker</text>
                <text x="500" y="68">Subscriber</text>
                <text x="56" y="132">:</text>
                <text x="88" y="132">:</text>
                <text x="264" y="132">:</text>
                <text x="296" y="132">:</text>
                <text x="480" y="132">:</text>
                <text x="512" y="132">:</text>
                <text x="56" y="148">:</text>
                <text x="88" y="148">:</text>
                <text x="264" y="148">:</text>
                <text x="296" y="148">:</text>
                <text x="480" y="148">:</text>
                <text x="512" y="148">:</text>
                <text x="56" y="164">:</text>
                <text x="172" y="164">Security</text>
                <text x="388" y="164">Security</text>
                <text x="512" y="164">:</text>
                <text x="56" y="180">:</text>
                <text x="168" y="180">Association</text>
                <text x="224" y="180">1</text>
                <text x="384" y="180">Association</text>
                <text x="440" y="180">1</text>
                <text x="512" y="180">:</text>
                <text x="56" y="196">:</text>
                <text x="512" y="196">:</text>
                <text x="276" y="212">Security</text>
                <text x="272" y="228">Association</text>
                <text x="328" 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>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.</li>
        <li>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.</li>
        <li>A Client obtains from the KDC the authentication credentials of other group members, and provides or updates the KDC with its authentication credential.</li>
        <li>A Client leaves the group or is removed from the group by the KDC.</li>
        <li>The KDC renews and redistributes the group keying material (rekeying), e.g., due to a membership change in the group.</li>
      </ol>
      <t><xref target="groupcomm_requirements"/> lists the specifications on this application profile of ACE, based on the requirements defined in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
    </section>
    <section anchor="authorisation">
      <name>Getting Authorisation to Join a Pub/sub security group (A)</name>
      <t><xref target="message-flow"/> provides a high level overview of the message flow for a Client getting authorisation to join a group. Square brackets denote optional steps. The message flow is expanded in the subsequent sections.</t>
      <figure anchor="message-flow">
        <name>Authorisation Flow</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="528" viewBox="0 0 528 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 32,48 L 32,560" fill="none" stroke="black"/>
              <path d="M 432,48 L 432,152" fill="none" stroke="black"/>
              <path d="M 432,184 L 432,328" fill="none" stroke="black"/>
              <path d="M 432,360 L 432,392" fill="none" stroke="black"/>
              <path d="M 432,424 L 432,448" fill="none" stroke="black"/>
              <path d="M 432,488 L 432,560" fill="none" stroke="black"/>
              <path d="M 472,48 L 472,392" fill="none" stroke="black"/>
              <path d="M 472,424 L 472,448" fill="none" stroke="black"/>
              <path d="M 472,488 L 472,560" fill="none" stroke="black"/>
              <path d="M 520,48 L 520,560" fill="none" stroke="black"/>
              <path d="M 48,64 L 112,64" fill="none" stroke="black"/>
              <path d="M 352,64 L 416,64" fill="none" stroke="black"/>
              <path d="M 48,96 L 160,96" fill="none" stroke="black"/>
              <path d="M 312,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 48,112 L 168,112" fill="none" stroke="black"/>
              <path d="M 304,112 L 416,112" fill="none" stroke="black"/>
              <path d="M 40,160 L 72,160" fill="none" stroke="black"/>
              <path d="M 416,160 L 464,160" fill="none" stroke="black"/>
              <path d="M 40,176 L 72,176" fill="none" stroke="black"/>
              <path d="M 424,176 L 464,176" fill="none" stroke="black"/>
              <path d="M 40,224 L 80,224" fill="none" stroke="black"/>
              <path d="M 384,224 L 424,224" fill="none" stroke="black"/>
              <path d="M 40,240 L 80,240" fill="none" stroke="black"/>
              <path d="M 384,240 L 424,240" fill="none" stroke="black"/>
              <path d="M 48,288 L 64,288" fill="none" stroke="black"/>
              <path d="M 400,288 L 416,288" fill="none" stroke="black"/>
              <path d="M 40,336 L 88,336" fill="none" stroke="black"/>
              <path d="M 408,336 L 464,336" fill="none" stroke="black"/>
              <path d="M 40,352 L 88,352" fill="none" stroke="black"/>
              <path d="M 416,352 L 464,352" fill="none" stroke="black"/>
              <path d="M 40,400 L 104,400" fill="none" stroke="black"/>
              <path d="M 408,400 L 512,400" fill="none" stroke="black"/>
              <path d="M 40,416 L 104,416" fill="none" stroke="black"/>
              <path d="M 408,416 L 512,416" fill="none" stroke="black"/>
              <path d="M 40,464 L 72,464" fill="none" stroke="black"/>
              <path d="M 480,464 L 512,464" fill="none" stroke="black"/>
              <path d="M 40,480 L 104,480" fill="none" stroke="black"/>
              <path d="M 432,480 L 512,480" fill="none" stroke="black"/>
              <path d="M 40,528 L 152,528" fill="none" stroke="black"/>
              <path d="M 304,528 L 424,528" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="520,464 508,458.4 508,469.6" fill="black" transform="rotate(0,512,464)"/>
              <polygon class="arrowhead" points="520,416 508,410.4 508,421.6" fill="black" transform="rotate(0,512,416)"/>
              <polygon class="arrowhead" points="520,400 508,394.4 508,405.6" fill="black" transform="rotate(0,512,400)"/>
              <polygon class="arrowhead" points="472,336 460,330.4 460,341.6" fill="black" transform="rotate(0,464,336)"/>
              <polygon class="arrowhead" points="472,160 460,154.4 460,165.6" fill="black" transform="rotate(0,464,160)"/>
              <polygon class="arrowhead" points="432,528 420,522.4 420,533.6" fill="black" transform="rotate(0,424,528)"/>
              <polygon class="arrowhead" points="432,240 420,234.4 420,245.6" fill="black" transform="rotate(0,424,240)"/>
              <polygon class="arrowhead" points="432,224 420,218.4 420,229.6" fill="black" transform="rotate(0,424,224)"/>
              <polygon class="arrowhead" points="424,288 412,282.4 412,293.6" fill="black" transform="rotate(0,416,288)"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6" fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="424,64 412,58.4 412,69.6" fill="black" transform="rotate(0,416,64)"/>
              <polygon class="arrowhead" points="56,288 44,282.4 44,293.6" fill="black" transform="rotate(180,48,288)"/>
              <polygon class="arrowhead" points="56,112 44,106.4 44,117.6" fill="black" transform="rotate(180,48,112)"/>
              <polygon class="arrowhead" points="56,64 44,58.4 44,69.6" fill="black" transform="rotate(180,48,64)"/>
              <polygon class="arrowhead" points="48,480 36,474.4 36,485.6" fill="black" transform="rotate(180,40,480)"/>
              <polygon class="arrowhead" points="48,416 36,410.4 36,421.6" fill="black" transform="rotate(180,40,416)"/>
              <polygon class="arrowhead" points="48,352 36,346.4 36,357.6" fill="black" transform="rotate(180,40,352)"/>
              <polygon class="arrowhead" points="48,240 36,234.4 36,245.6" fill="black" transform="rotate(180,40,240)"/>
              <polygon class="arrowhead" points="48,176 36,170.4 36,181.6" fill="black" transform="rotate(180,40,176)"/>
              <g class="text">
                <text x="28" y="36">Client</text>
                <text x="412" y="36">Broker</text>
                <text x="468" y="36">AS</text>
                <text x="512" y="36">KDC</text>
                <text x="40" 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="424" y="68">]</text>
                <text x="40" y="100">[</text>
                <text x="204" y="100">Resource</text>
                <text x="272" y="100">Request</text>
                <text x="424" y="100">]</text>
                <text x="40" y="116">[</text>
                <text x="188" y="116">AS</text>
                <text x="248" y="116">Information</text>
                <text x="424" 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="40" y="292">[</text>
                <text x="112" y="292">Discovery</text>
                <text x="164" y="292">of</text>
                <text x="192" y="292">KDC</text>
                <text x="224" y="292">and</text>
                <text x="260" y="292">name</text>
                <text x="292" y="292">of</text>
                <text x="324" y="292">sec.</text>
                <text x="368" y="292">group</text>
                <text x="424" 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 sec. group -->]|    |     |
   |                                                 |    |     |
   |                                                 |    |     |
   |------- Authorisation Request (Audience: KDC) ------->|     |
   |<------ Authorisation Response (Audience: KDC) -------|     |
   |                                                 |    |     |
   |                                                 |    |     |
   |--------- Upload of authorisation information ------------->|
   |<-------- Establishment of secure association ------------->|
   |                                                 |    |     |
   |                                                 |    |     |
   |----- Request to join the security group for the topic ---->|
   |<-------- Keying material for the security group -----------|
   |                                                 |    |     |
   |                                                 |    |     |
   |--------------- Resource Request --------------->|    |     |
   |     (Publication/Subscription to the topic)     |    |     |
   |                                                 |    |     |
]]></artwork>
        </artset>
      </figure>
      <t>Since <xref target="RFC9200"/> recommends the use of CoAP and CBOR, this document describes the exchanges assuming that CoAP and CBOR are used.</t>
      <t>However, using HTTP instead of CoAP is possible, by leveraging the corresponding parameters and methods. Analogously, JSON <xref target="RFC8259"/> can be used instead of CBOR, using 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 changed 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 resources 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.2" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>).</t>
        <t>Although the links to the topic resources are also specified in the representation of the collection resource at the Broker (see <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>), the Client is not supposed to access such a resource, as intended for administrative operations that are out of the scope of this document.</t>
      </section>
      <section anchor="AS-discovery">
        <name>AS Discovery at the Broker (Optional)</name>
        <t>Complementary to what is defined in <xref section="5.1" sectionFormat="of" target="RFC9200"/> for AS discovery, the Broker <bcp14>MAY</bcp14> send the address of the AS to the Client in the 'AS' parameter of the AS Request Creation Hints, as a response to an Unauthorized Resource Request (see <xref section="5.2" sectionFormat="of" target="RFC9200"/>). An example using 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": "coaps://as.example.com/token"
    }
]]></artwork>
        </figure>
      </section>
      <section anchor="kdc-discovery">
        <name>KDC Discovery at the Broker (Optional)</name>
        <t>Once a Client has obtained an Access Token from the AS and accordingly established a secure association with the Broker, the Client has the permission to access the topic resources at the Broker that pertain to the topics on which the Client is authorized to operate.</t>
        <t>In particular the Client is authorized to retrieve the representation of a topic resource, from which the Client can retrieve information related to the topic in question, as specified in <xref section="2.5" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>.</t>
        <t>This profile extends the set of CoAP Pub/sub Parameters that is possible to specify within the representation of a topic resource, as originally defined in <xref section="3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>. In particular, this profile defines the following two parameters that the Broker can specify in a response from a topic resource (see <xref section="2.5" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>). Note that, when these parameters are transported in their respective fields of the message payload, the Content-Format application/core-pubsub+cbor defined in <xref target="I-D.ietf-core-coap-pubsub"/> <bcp14>MUST</bcp14> be used.</t>
        <ul spacing="normal">
          <li>'kdc_uri', with value the URI of the group membership resource at 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.</li>
          <li>'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.</li>
        </ul>
        <t>Furthermore, the Resource Type (rt=) Link Target Attribute value "core.ps.gm" is registered in <xref target="core_rt"/> (REQ10), and can be used to describe group-membership resources at KDC, e.g., by using a link-format document <xref target="RFC6690"/>. As an alternative to the discovery approach defined above and provided by the Broker, applications can use this common resource type to discover links to group-membership resources at the KDC for joining security groups associated with pub/sub topics.</t>
      </section>
      <section anchor="auth-request">
        <name>Authorisation Request/Response for the KDC and the Broker</name>
        <t>A Client sends two Authorisation Requests to the AS, targeting two different audiences, i.e., the Broker and the KDC.</t>
        <t>As to the former, the AS handles Authorisation Requests related to a topic for which the Client is allowed to perform topic data operations at the Broker, as corresponding to an application group.</t>
        <t>As to the latter, the AS handles Authorization Requests for security groups that the Client is allowed to join, in order to obtain the group keying material for protecting end-to-end and verifying the content of exchanged messages on the associated pub/sub topics.</t>
        <t>This section builds on <xref section="3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> and defines only additions or modifications to that specification.</t>
        <t>Both Authorisation Requests include the following fields (see <xref section="3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>):</t>
        <ul spacing="normal">
          <li>
            <t>'scope': Optional. If present, it specifies the following information, depending on the specifically targeted audience.  </t>
            <t>
If the audience is the Broker, the scope specifies the name of the topics that the Client wishes to access, together with the corresponding permissions. If the audience is the KDC, the scope specifies the name of the security groups that the Client wishes to join, together with the corresponding permissions.  </t>
            <t>
This parameter is encoded as a CBOR byte string, whose value is the binary encoding of a CBOR array. The format <bcp14>MUST</bcp14> follow the data model AIF-PUBSUB-GROUPCOMM defined in <xref target="scope"/>.</t>
          </li>
          <li>'audience': Required identifier corresponding to either the Broker or the KDC.</li>
        </ul>
        <t>Other additional parameters can be included if necessary, as defined in <xref target="RFC9200"/>.</t>
        <t>When using this profile, it is expected that a one-to-one mapping is enforced between the application group and the security group (see <xref target="overview"/>). If this is not the case, the correct access policies for both sets of scopes have to be available to the AS.</t>
        <section anchor="scope">
          <name>Format of Scope</name>
          <t>Building on <xref section="3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, this section defines the exact format and encoding of scope used in this profile.</t>
          <t>To this end, this profile uses the Authorization Information Format (AIF) <xref target="RFC9237"/> (REQ1). With reference to the generic AIF model</t>
          <artwork><![CDATA[
      AIF-Generic<Toid, Tperm> = [* [Toid, Tperm]]
]]></artwork>
          <t>the value of the CBOR byte string used as scope encodes the CBOR array [* [Toid, Tperm]], where each [Toid, Tperm] element corresponds to one scope entry.</t>
          <t>Furthermore, this document defines the new AIF data model AIF-PUBSUB-GROUPCOMM that this profile <bcp14>MUST</bcp14> use to format and encode scope entries.</t>
          <t>In particular, the following holds for each scope entry.</t>
          <t>The object identifier ("Toid") is specialized as a CBOR item specifying the name of the groups 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 groups indicated by "Toid".</t>
          <t>More specifically, the following applies when, as defined in this document, a scope entry includes as set of permissions for user-related operations performed by a pubsub Client.</t>
          <ul spacing="normal">
            <li>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.</li>
            <li>
              <t>The permission set ("Tperm") is a CBOR unsigned integer, whose value R specifies the operations that the Client wishes to or has been authorized to perform on the resources at the Broker associated with the application group (topic) indicated by "Toid", or on the resources at the KDC associated with the security group indicated by "Toid" (REQ1). The value R is computed as follows.  </t>
              <ul spacing="normal">
                <li>
                  <t>Each operation (i.e., permission detail) in the permission set is converted into the corresponding numeric identifier X taken from the following set.      </t>
                  <ul spacing="normal">
                    <li>Admin (0): This operation is reserved for scope entries that express permissions for Administrators of pub/sub groups.</li>
                    <li>AppGroup (1): This operation is signaled as wished/authorized when "Toid" specifies the name of an application group (topic), while it is signaled as not wished/authorized when Toid specifies the name of a security group.</li>
                    <li>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.</li>
                    <li>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.</li>
                    <li>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.</li>
                  </ul>
                </li>
                <li>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.</li>
              </ul>
              <t>
Since this application profile considers user-related operations, the "Admin" operation is signaled as not wished/authorized. That is, the scope entries <bcp14>MUST</bcp14> have the least significant bit of "Tperm" set to 0.</t>
            </li>
          </ul>
          <t>If the "Toid" of a scope entry in an access token specifies the name of an application group (i.e., the "AppGroup" operation is signaled as authorized), the Client has also the permission to retrieve the configuration of the application group (topic) whose name is indicated by "Toid", by sending a GET or FETCH request to the corresponding topic resource at the Broker.</t>
          <t>The specific interactions between the Client and the Broker are defined in <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
          <t>The following CDDL <xref target="RFC8610"/> notation defines a scope entry that uses the AIF-PUBSUB-GROUPCOMM data model and expresses a set of permissions.</t>
          <figure anchor="scope-aif">
            <name>Pub/sub scope using the AIF format</name>
            <artwork align="center"><![CDATA[
  AIF-PUBSUB-GROUPCOMM = AIF-Generic<pubsub-group, pubsub-perm>
   pubsub-group = tstr ; name of pub/sub topic or of
                       ; the associated security group

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

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

   scope_entry = [pubsub-group, pubsub-perm]
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="as-response">
        <name>Authorisation response</name>
        <t>The AS responds with an Authorization Response to each request, containing claims, as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/> and <xref section="3.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> with the following additions:</t>
        <ul spacing="normal">
          <li>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.</li>
          <li>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 interactions that the Client is authorized for that scope entry, encoded as specified in <xref target="auth-request"/>.</li>
        </ul>
        <t>Furthermore, the AS <bcp14>MAY</bcp14> use the extended format of scope defined in <xref section="7" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> for the 'scope' claim of the Access Token.  In such a case, the AS <bcp14>MUST</bcp14> use the CBOR tag with tag number TAG_NUMBER, associated with the CoAP Content-Format CF_ID for the media type application/aif+cbor registered in <xref target="content_format"/> 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_format"/> of this document.  Then, please replace "CF_ID" with the ID assigned to that CoAP Content-Format.  Finally, please delete this paragraph.</t>
        <t>This indicates that the binary encoded scope follows the scope semantics defined for this application profile in <xref target="scope"/> of this document.</t>
      </section>
      <section anchor="token-post">
        <name>Token Transfer to KDC</name>
        <t>The Client transfers its access token to the KDC using one of the methods defined in the Section 3.3 of <xref target="I-D.ietf-ace-key-groupcomm"/>. This typically includes sending a POST request to the authz-info endpoint. However, if the DTLS transport profile of ACE <xref target="RFC9202"/> is used and the Client uses a symmetric proof-of-possession key in the DTLS handshake, the Client <bcp14>MAY</bcp14> provide the access token to the KDC in the "psk_identity" field of the DTLS ClientKeyExchange message when using DTLS 1.2 <xref target="RFC6347"/>, or in the "identity" field of a PskIdentity within the PreSharedKeyExtension of the ClientHello message when using DTLS 1.3 <xref target="RFC9147"/>. In addition to that, the following applies.</t>
        <t>In the Token Transfer Response to the Publishers, i.e., the Clients whose scope of the access token includes the "Publish" permission for at least one scope entry, the KDC <bcp14>MUST</bcp14> include the parameter 'kdcchallenge' in the CBOR map. 'kdcchallange' is a challenge N_S generated by the KDC, and is <bcp14>RECOMMENDED</bcp14> to be an 8-byte long random nonce. Later when joining the group, the Publisher can use the 'kdcchallenge' as part of proving possession of its private key (see <xref target="I-D.ietf-ace-key-groupcomm"/>). If a Publisher provides the access token to the KDC through an authz-info endpoint, the Client <bcp14>MUST</bcp14> support the parameter 'kdcchallenge'.</t>
        <t>If 'sign_info' is included in the Token Transfer Request, the KDC <bcp14>SHOULD</bcp14> include the 'sign_info' parameter in the Token Transfer Response. Note that the joining node may have obtained such information by alternative means e.g., the 'sign_info'  may have been pre-configured (OPT3).</t>
        <t>The following applies for each element 'sign_info_entry'.</t>
        <ul spacing="normal">
          <li>'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).</li>
          <li>'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).</li>
          <li>'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).</li>
          <li>'cred_fmt' takes value from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/> (REQ6). Acceptable values denote a format of authentication credential that <bcp14>MUST</bcp14> explicitly provide the public key as well as the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable). Acceptable formats of authentication credentials include CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC7925"/> and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. Future formats would be acceptable to use as long as they comply with the criteria defined above.</li>
        </ul>
      </section>
    </section>
    <section anchor="kdc-interface">
      <name>Client Group Communication Interface at the KDC</name>
      <t>In order to enable secure group communication for the pub/sub clients, the KDC provides the resources listed in <xref target="tab-kdc-resources"/>. Each resource is marked as <bcp14>REQUIRED</bcp14> or <bcp14>OPTIONAL</bcp14> to be hosted at the KDC.</t>
      <table align="center" anchor="tab-kdc-resources">
        <name>Resources at the KDC</name>
        <thead>
          <tr>
            <th align="left">KDC resource</th>
            <th align="left">Description</th>
            <th align="left">Operations</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">/ace-group</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains a set of group names, each corresponding to one of the specified group identifiers.</td>
            <td align="left">FETCH (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains symmetric group keying material associated with GROUPNAME.</td>
            <td align="left">GET, POST (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/creds</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the authentication credentials of all the Publishers of the group with name GROUPNAME.</td>
            <td align="left">GET, FETCH (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/num</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the current version number for the symmetric group keying material of the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/nodes/NODENAME</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Contains the group keying material for that group member NODENAME in GROUPNAME.</td>
            <td align="left">GET, DELETE (All Clients). PUT (Publishers).</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/nodes/NODENAME/cred</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>. Authentication credential for NODENAME in the group GROUPNAME.</td>
            <td align="left">POST (Publishers)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/kdc-cred</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14> if a group re-keying mechanism is used. Contains the authentication credential of the KDC for the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
          <tr>
            <td align="left">/ace-group/GROUPNAME/policies</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14>. Contains the group policies of the group with name GROUPNAME.</td>
            <td align="left">GET (All Clients)</td>
          </tr>
        </tbody>
      </table>
      <t>The use of these resources follows what is defined in <xref target="I-D.ietf-ace-key-groupcomm"/>, and only additions or modifications to that specification are defined in this document.</t>
      <t>Consistent with what is defined in <xref target="I-D.ietf-ace-key-groupcomm"/>, some error responses from the KDC can convey error-specific information according to the problem-details format specified in <xref target="RFC9290"/>.</t>
      <section anchor="join">
        <name>Joining a Security Group</name>
        <t>This section describes the interactions between a Client and the KDC to join a security group. Source authentication of a message sent within the group is ensured by means of a digital signature embedded in the message. Subscribers must be able to retrieve Publishers' authentication credentials from a trusted repository, to verify source authentication of received messages. Hence, on joining a security group, a Publisher is expected to provide its own authentication credential to the KDC.</t>
        <t>On a successful join, the Clients receive from the KDC the symmetric COSE Key used as shared group key to protect the payload of a published topic data.</t>
        <t>The message exchange between the joining node and the KDC follows what is defined in <xref section="4.3.1.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> and only additions or modifications to that specification are defined in this document.</t>
        <figure anchor="join-flow">
          <name>Join Flow</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="328" viewBox="0 0 328 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,80" fill="none" stroke="black"/>
                <path d="M 304,48 L 304,80" fill="none" stroke="black"/>
                <path d="M 40,48 L 72,48" fill="none" stroke="black"/>
                <path d="M 248,48 L 296,48" fill="none" stroke="black"/>
                <path d="M 40,80 L 80,80" fill="none" stroke="black"/>
                <path d="M 256,80 L 296,80" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="304,48 292,42.4 292,53.6" fill="black" transform="rotate(0,296,48)"/>
                <polygon class="arrowhead" points="48,80 36,74.4 36,85.6" fill="black" transform="rotate(180,40,80)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="312" y="36">KDC</text>
                  <text x="100" y="52">Join</text>
                  <text x="152" y="52">Request</text>
                  <text x="212" y="52">(CoAP)</text>
                  <text x="100" y="84">Join</text>
                  <text x="156" y="84">Response</text>
                  <text x="220" y="84">(CoAP)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
   Client                               KDC
      |----- Join Request (CoAP) ------>|
      |                                 |
      |<-----Join Response (CoAP) ------|

]]></artwork>
          </artset>
        </figure>
        <section anchor="join-request">
          <name>Join Request</name>
          <t>After establishing a secure communication association with the KDC, the Client sends a Join Request to the KDC as described in <xref section="4.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>. More specifically, the Client sends a POST request to the /ace-group/GROUPNAME endpoint, with Content-Format "application/ace-groupcomm+cbor". The payload contains the following information formatted as a CBOR map, which <bcp14>MUST</bcp14> be encoded as defined in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>:</t>
          <ul spacing="normal">
            <li>'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 it wishes to have in the group. This value corresponds to one scope entry, as defined in <xref target="scope"/>.</li>
            <li>'get_creds': It <bcp14>MAY</bcp14> be present if the Client wishes to join as a Subcriber and wants to retrieve the public keys of all the Publishers upon joining. Otherwise, this parameter <bcp14>MUST NOT</bcp14> be present. If the parameter is present, the parameter <bcp14>MUST</bcp14> encode the CBOR simple value <tt>null</tt> (0xf6). Note that the parameter 'role_filter' is not necessary, as the KDC returns the authentication credentials of Publishers by default.</li>
            <li>'client_cred': The use of this parameter is detailed in <xref target="client_cred"/>.</li>
            <li>'cnonce': It specifies a dedicated nonce N_C generated by the Client. It is <bcp14>RECOMMENDED</bcp14> to use use an 8-byte long random nonce. Join Requests <bcp14>MUST</bcp14> include a new 'cnonce' at each join attempt.</li>
            <li>'client_cred_verify': The use of this parameter is detailed in <xref target="pop"/>.</li>
          </ul>
          <t>As a Publisher Client has its own authentication credential to use in a group, it <bcp14>MUST</bcp14> support the client_cred', 'cnonce', and 'client_cred_verify' parameters.</t>
          <section anchor="client_cred">
            <name>Client Credentials in 'client_cred'</name>
            <t>One of the following cases can occur when a new Client attempts to join a security group.</t>
            <ul spacing="normal">
              <li>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'.</li>
              <li>
                <t>The joining node wishes to join as a Publisher, and:  </t>
                <ul spacing="normal">
                  <li>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. 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.</li>
                  <li>The KDC has not acquired an authentication credential. 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"/>).</li>
                </ul>
              </li>
            </ul>
            <t>Finally, the joining node <bcp14>MUST</bcp14> provide its authentication credential again if it has provided the KDC with multiple authentication credentials during past joining processes intended for different security groups. If the joining node provides its authentication credential, the KDC performs the consistency checks above and, in case of success, considers it as the authentication credential associated with the joining node in the group.</t>
          </section>
          <section anchor="pop">
            <name>Proof-of-Possession</name>
            <t>The 'client_cred_verify' parameter contains the proof-of-possession evidence, and is computed as defined below (REQ14).</t>
            <t>The Publisher signs the scope, concatenated with N_S and concatenated with N_C, using the private key corresponding to the public key in the 'client_cred' parameter.</t>
            <t>The N_S may be either:</t>
            <ul spacing="normal">
              <li>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"/>).</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-coap-group-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-coap-group-pubsub-app" defined in <xref target="tls_exporter"/> of this document.</t>
              </li>
              <li>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.</li>
            </ul>
            <t>It is up to applications to define how N_S is computed in further alternative settings.</t>
          </section>
        </section>
        <section anchor="join-response">
          <name>Join Response</name>
          <t>On receiving the Join Request, the KDC processes the request as defined in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, and returns a success or error response.</t>
          <t>If the 'client_cred' parameter is present, the KDC verifies the signature in the 'client_cred_verify' parameter. As PoP input, the KDC uses the value of the 'scope' parameter from the Join Request as a CBOR byte string, concatenated with N_S encoded as a CBOR byte string, concatenated with N_C encoded as a CBOR byte string. As public key of the joining node, the KDC uses either the one included in the authentication credential retrieved from the 'client_cred' parameter of the Join Request or the one from the already stored authentication credential from previous interactions with the joining node. The KDC verifies the PoP evidence, which is a signature, by using the public key of the joining node, as well as the signature algorithm used in the group and possible corresponding parameters.</t>
          <t>In the case of any join request error, the KDC and the Client attempting to join follow the procedure defined in <xref target="join-error"/>.</t>
          <t>In case of success, the KDC responds with a Join Response, whose payload formatted as a CBOR map <bcp14>MUST</bcp14> contain the following fields as per <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>:</t>
          <ul spacing="normal">
            <li>'gkty': the key type "Group_PubSub_Keying_Material" (REQ18) registered in <xref target="iana-ace-groupcomm-key"/> for the 'key' parameter.</li>
            <li>
              <t>'key': The keying material for group communication includes the following parameters (REQ17):  </t>
              <ul spacing="normal">
                <li>'cred_fmt', specifying the format of authentication credentials used in the group. This parameter takes its value from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/>. 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).</li>
                <li>'sign_alg', specifying the Signature Algorithm used to sign messages in the group. This parameter takes values from the "Value" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</li>
                <li>
                  <t>'sign_params', specifying the parameters of the Signature Algorithm. This parameter is a CBOR array, which includes the following two elements:      </t>
                  <ul spacing="normal">
                    <li>'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"/>.</li>
                    <li>'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"/>.</li>
                  </ul>
                </li>
                <li>
                  <t>'group_key', specifying a COSE_Key object as defined in <xref target="RFC9052"/> and conveying the group key to use in the security group. The COSE_Key object <bcp14>MUST</bcp14> contain the following parameters:      </t>
                  <ul spacing="normal">
                    <li>'kty', with value 4 (Symmetric).</li>
                    <li>'alg', with value the identifier of the AEAD algorithm used in the security group.</li>
                    <li>'Base IV', with value the Base Initialization Vector (Base IV) to use in the security group with this group key.</li>
                    <li>'k', with value the symmetric encryption key to use as group key.</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', specifying the Client's Sender ID encoded as a CBOR byte string. This field <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>
              </ul>
            </li>
            <li>'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).</li>
            <li>'exi', which <bcp14>MUST</bcp14> be present.</li>
            <li>'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).</li>
            <li>'creds', which <bcp14>MUST</bcp14> be present if the 'get_creds' parameter was present. Otherwise, it <bcp14>MUST NOT</bcp14> be present. The KDC provides the authentication credentials of all the Publishers in the security group.</li>
            <li>'peer_roles', which <bcp14>MAY</bcp14> be omitted even if 'creds' is present, since each authentication credential conveyed in the 'creds' parameter: i) is associated with a Client authorized to be Publisher in the group; and ii) plays no role if such Client was also authorized to be Subscriber in the group. If 'creds' is not present, 'peer_roles' <bcp14>MUST NOT</bcp14> be present.</li>
            <li>'peer_identifiers', which <bcp14>MUST</bcp14> be present if 'creds' is also present. Otherwise, it <bcp14>MUST NOT</bcp14> be present. The identifiers are the Publisher Sender IDs whose authentication credential is specified in the 'creds' parameter (REQ25).</li>
            <li>'kdc_cred', which <bcp14>MUST</bcp14> be present if group re-keying is used, and is encoded as a CBOR byte string, with value the original binary representation of the KDC's authentication credential (REQ8).</li>
            <li>'kdc_nonce', which <bcp14>MUST</bcp14> be present if 'kdc_cred' is present, and is encoded as a CBOR byte string, and including 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.</li>
            <li>'kdc_cred_verify', which <bcp14>MUST</bcp14> be present if 'kdc_cred' is present, and 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).</li>
            <li>'group_rekeying', which <bcp14>MAY</bcp14> be omitted if the KDC uses the "Point-to-Point" group rekeying scheme registered in <xref section="11.13" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> as the default rekeying scheme in the group (OPT9). In any other case, the 'group_rekeying' parameter <bcp14>MUST</bcp14> be included.</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. Furthermore, the KDC associates NODENAME with the Client's access token and with the secure communication association that the KDC has with the Client. If the Client is a Publisher, its authentication credential is also associated with the tuple containing NODENAME, GROUPNAME, the current Gid, the newly assigned Publisher's Sender ID, and the Client's access token. The KDC <bcp14>MUST</bcp14> keep this association updated over time.</t>
          <t>Note that, as long as the secure communication association between the Client and the KDC persists, the same Client re-joining the group is recognized by the KDC by virtue of such a secure communication association. As a consequence, the re-joining Client keeps the same NODENAME and the associated subresource /ace-group/GROUPNAME/nodes/NODENAME. Also, if the Client is a Publisher, it receives a new Sender ID according to the same criteria defined above.</t>
          <t>If the application requires backward security, the KDC <bcp14>MUST</bcp14> generate updated security parameters and group keying material, and provide it to the current group members upon the new node's joining (see <xref target="rekeying"/>). In such a case, the joining node is not able to access secure communication in the pub/sub group prior its joining.</t>
          <t>Upon receiving the Join Response, the joining node retrieves the KDC's authentication credential from the 'kdc_cred' parameter. The joining node <bcp14>MUST</bcp14> verify the proof-of-possession (PoP) evidence, which is a signature, specified in 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>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).</li>
            <li>The 'client_cred' parameter is present but does not include the 'cnonce' and 'client_cred_verify' parameters.</li>
            <li>
              <t>The 'client_cred' parameter is not present while the joining node is not going to join the group exclusively as a Subscriber, and any of the following conditions holds:  </t>
              <ul spacing="normal">
                <li>The KDC does not store an eligible authentication credential (e.g., of the format accepted in the group) for the joining node.</li>
                <li>The KDC stores multiple eligible authentication credentials (e.g., of the format accepted in the group) for the joining node.</li>
              </ul>
            </li>
            <li>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"/>.</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, which encodes 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.</t>
        </section>
      </section>
      <section anchor="other-group-operations-through-the-kdc">
        <name>Other Group Operations through the KDC</name>
        <section anchor="query">
          <name>Querying for Group Information</name>
          <ul spacing="normal">
            <li>'/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.</li>
            <li>'/ace-group/GROUPNAME':  All Clients can use GET requests 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.</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 each authentication credential conveyed in the 'creds' parameter: i) is associated with a Client authorized to be Publisher in the group; and ii) plays no role if such Client was also authorized to be Subscriber in the group. If 'creds' is not present, 'peer_roles' <bcp14>MUST NOT</bcp14> be present.</t>
            </li>
            <li>'/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.</li>
            <li>'/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.</li>
          </ul>
        </section>
        <section anchor="updating-authentication-credentials">
          <name>Updating Authentication Credentials</name>
          <t>A Publisher with node name NODENAME can contact the KDC to upload a new authentication credential to use in the security group with name GROUPNAME, and replace the currently stored one. To this end, it sends a CoAP POST request to its associated sub-resource /ace-group/GROUPNAME/nodes/NODENAME/cred. 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="removal-from-a-group">
          <name>Removal from a Group</name>
          <t>A Client with node name NODENAME can actively request to leave the security group with name GROUPNAME. In this case, the Client sends a CoAP DELETE request to the associated sub-resource /ace-group/GROUPNAME/nodes/NODENAME at the KDC. The KDC can also remove a group member due to any of the reasons described in <xref section="5" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        </section>
        <section anchor="rekeying">
          <name>Rekeying a Group</name>
          <t>The KDC <bcp14>MUST</bcp14> trigger a group rekeying as described in <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/> due to a change in the group membership or the current group keying material approaching its expiration time. The KDC <bcp14>MAY</bcp14> trigger regularly scheduled update of the group keying material.</t>
          <t>Upon generating the new group keying material and before starting its distribution, the KDC <bcp14>MUST</bcp14> increment the version number of the group keying material. The KDC <bcp14>MUST</bcp14> preserve the current value of the Sender ID of each member in that group. The KDC <bcp14>MUST</bcp14> also generate a new Group Identifier (Gid) for the group, and use it as identifier of the new group key provided through the group rekeying and hereafter to Clients (re-)joining the security group (see <xref target="join-response"/>).</t>
          <t>The default rekeying scheme is Point-to-Point (see <xref section="6.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>), where the KDC individually targets each node to rekey, using the pairwise secure communication association with that node.</t>
          <t>If the group rekeying is performed due to one or multiple Clients joining the group as Publishers, then a rekeying message includes the Sender IDs and authentication credentials that those clients are going to use in the group. This information is specified by means of the parameters 'creds' and 'peer_identifiers', like done in the Join Response message. In the same spirit, the 'peer_roles' parameter <bcp14>MAY</bcp14> be omitted.</t>
        </section>
      </section>
    </section>
    <section anchor="protected_communication">
      <name>PubSub Protected Communication (C)</name>
      <figure anchor="pubsub-3">
        <name>Secure communication between Publisher and Subscriber</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="560" viewBox="0 0 560 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,112" fill="none" stroke="black"/>
              <path d="M 224,32 L 224,112" fill="none" stroke="black"/>
              <path d="M 328,32 L 328,112" fill="none" stroke="black"/>
              <path d="M 448,32 L 448,112" fill="none" stroke="black"/>
              <path d="M 552,32 L 552,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
              <path d="M 224,32 L 328,32" fill="none" stroke="black"/>
              <path d="M 448,32 L 552,32" fill="none" stroke="black"/>
              <path d="M 128,64 L 160,64" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 344,80 L 384,80" fill="none" stroke="black"/>
              <path d="M 400,80 L 432,80" fill="none" stroke="black"/>
              <path d="M 344,96 L 384,96" fill="none" stroke="black"/>
              <path d="M 400,96 L 432,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 112,112" fill="none" stroke="black"/>
              <path d="M 224,112 L 328,112" fill="none" stroke="black"/>
              <path d="M 448,112 L 552,112" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,96 428,90.4 428,101.6" fill="black" transform="rotate(0,432,96)"/>
              <polygon class="arrowhead" points="352,80 340,74.4 340,85.6" fill="black" transform="rotate(180,344,80)"/>
              <polygon class="arrowhead" points="216,64 204,58.4 204,69.6" fill="black" transform="rotate(0,208,64)"/>
              <g class="text">
                <text x="56" y="68">Publisher</text>
                <text x="168" y="68">D</text>
                <text x="276" y="68">Broker</text>
                <text x="500" y="68">Subscriber</text>
                <text x="392" y="84">E</text>
                <text x="392" y="100">F</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+------------+             +------------+              +------------+
|            |             |            |              |            |
| Publisher  | ----(D)---> |   Broker   |              | Subscriber |
|            |             |            | <----(E)---- |            |
|            |             |            | -----(F)---> |            |
+------------+             +------------+              +------------+
]]></artwork>
        </artset>
      </figure>
      <t>(D) corresponds to the publication of a topic on the Broker, using a CoAP PUT. The publication (the resource representation) is protected with COSE (<xref target="RFC9052"/><xref target="RFC9053"/>) by the Publisher. The (E) message is the subscription of the Subscriber, and uses a CoAP GET with the Observe option set to 0 (zero) <xref target="RFC7641"/>, as per <xref target="I-D.ietf-core-coap-pubsub"/>. The (F) message is the response from the Broker, where the publication is protected with COSE by the Publisher.
(ToDo: Add Delete to the flow?)</t>
      <figure anchor="flow">
        <name>Example of protected communication for CoAP</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="464" viewBox="0 0 464 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 40,48 L 40,144" fill="none" stroke="black"/>
              <path d="M 232,48 L 232,144" fill="none" stroke="black"/>
              <path d="M 424,48 L 424,144" fill="none" stroke="black"/>
              <path d="M 56,48 L 72,48" fill="none" stroke="black"/>
              <path d="M 176,48 L 216,48" fill="none" stroke="black"/>
              <path d="M 248,80 L 272,80" fill="none" stroke="black"/>
              <path d="M 376,80 L 408,80" fill="none" stroke="black"/>
              <path d="M 248,128 L 272,128" fill="none" stroke="black"/>
              <path d="M 360,128 L 408,128" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="416,128 404,122.4 404,133.6" fill="black" transform="rotate(0,408,128)"/>
              <polygon class="arrowhead" points="256,80 244,74.4 244,85.6" fill="black" transform="rotate(180,248,80)"/>
              <polygon class="arrowhead" points="224,48 212,42.4 212,53.6" fill="black" transform="rotate(0,216,48)"/>
              <g class="text">
                <text x="40" y="36">Publisher</text>
                <text x="236" y="36">Broker</text>
                <text x="420" y="36">Subscriber</text>
                <text x="96" y="52">PUT</text>
                <text x="140" y="52">/topic</text>
                <text x="96" y="68">protected</text>
                <text x="156" y="68">with</text>
                <text x="196" y="68">COSE</text>
                <text x="296" y="84">GET</text>
                <text x="340" y="84">/topic</text>
                <text x="320" y="100">Observe:0</text>
                <text x="316" y="132">Response</text>
                <text x="288" y="148">protected</text>
                <text x="348" y="148">with</text>
                <text x="388" y="148">COSE</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
  Publisher                 Broker               Subscriber
      | --- PUT /topic -----> |                       |
      |  protected with COSE  |                       |
      |                       | <--- GET /topic ----- |
      |                       |      Observe:0        |
      |                       |                       |
      |                       | ---- Response ------> |
      |                       |  protected with COSE  |
]]></artwork>
        </artset>
      </figure>
      <section anchor="oscon">
        <name>Using COSE Objects To Protect The Resource Representation</name>
        <t>The Publisher uses the symmetric COSE Key received from the KDC to protect the payload of the Publish operation (see <xref section="4.3" sectionFormat="of" target="I-D.ietf-core-coap-pubsub"/>). Specifically, the Publisher creates a COSE_Encrypt0 object <xref target="RFC9052"/><xref target="RFC9053"/> by means of the COSE Key currently used as group key. The encryption algorithm and Base IV to use are specified by the 'alg' and 'Base IV' parameters of the COSE Key, together with its key identifier in the 'kid' parameter.</t>
        <t>Also, the Publisher uses its private key corresponding to the public key sent to the KDC for countersigning 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>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.</li>
        </ul>
        <t>The 'unprotected' field <bcp14>MUST</bcp14> include:</t>
        <ul spacing="normal">
          <li>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).</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>
          </li>
          <li>
            <t>The 'Countersignature version 2' parameter, specifying the countersignature of the COSE_Encrypt0 object. In particular:  </t>
            <ul spacing="normal">
              <li>The 'protected' field includes the 'alg' parameter, with value the identifier of the Signature Algorithm used in the security group.</li>
              <li>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"/>).</li>
              <li>The 'signature' field, with value the countersignature.</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>'context' takes "CounterSignature".</li>
              <li>'body_protected' takes the serialized parameters from the 'protected' field of the COSE_Encrypt0 object, i.e., the 'alg' parameter.</li>
              <li>'sign_protected' takes the serialized parameters from the 'protected' field of the 'Countersignature version 2' parameter, i.e., the 'alg' parameter.</li>
              <li>'external_aad is not supplied.</li>
              <li>'payload' is the ciphertext of the COSE_Encrypt0 object (see below).</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>'context' takes "Encrypt0".</li>
          <li>'protected' takes the serialization of the protected parameter 'alg' from the 'protected' field of the COSE_Encrypt0 object.</li>
          <li>'external_aad is not supplied.</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>Left-pad the Partial IV (PIV) with zeroes to exactly 5 bytes.</li>
          <li>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.</li>
          <li>Concatenate the size of the ID_PIV (a single byte S) with the padded ID_PIV and the padded PIV.</li>
          <li>XOR the result from the previous step with the Base IV.</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 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>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.</li>
          <li>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.</li>
          <li>Therefore neither the same Publisher nor any two Publishers use the same AEAD nonce with the same group key.</li>
        </ul>
      </section>
      <section anchor="ssec-replay-checks">
        <name>Replay Checks</name>
        <t>This section defines how a Subscriber Client checks whether the topic data conveyed in a received message from the Broker is a replay.</t>
        <t>TBD</t>
      </section>
    </section>
    <section anchor="mqtt-pubsub">
      <name>Applicability to MQTT PubSub Profile</name>
      <t>The steps MQTT clients go through would be similar to the CoAP clients, and the payload of the MQTT PUBLISH messages will be protected using COSE. The MQTT clients needs to use CoAP to communicate to the KDC, to join security groups, and be part of the pairwise rekeying initiated by the KDC.</t>
      <t>Authorisation Server (AS) Discovery is defined in <xref section="2.4.1" sectionFormat="of" target="RFC9431"/> for MQTT v5 clients (and 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 topic and KDC discovery.</t>
      <t>When the Client sends an authorisation request to the AS using the AIF-PUBSUB-GROUPCOMM data model in the authorisation response, the 'profile' claim is set to "mqtt_pubsub_app" as defined 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>All the security considerations in <xref target="I-D.ietf-ace-key-groupcomm"/> apply.</t>
      <t>In the profile described above, the Publishers and Subscribers use asymmetric cryptography, which would make the message exchange quite heavy for small constrained devices. Moreover, all Subscribers must be able to access the public keys of all the Publishers to a specific topic to verify the publications.</t>
      <t>Even though access tokens have expiration times, an access token may need to be revoked before its expiration time (see <xref target="I-D.draft-ietf-ace-revoked-token-notification"/> for a list of possible circumstances). Clients can be excluded from future publications through re-keying for a certain topic. This could be set up to happen on a regular basis, for certain applications. How this could be done is out of scope for this work. The method described in <xref target="I-D.draft-ietf-ace-revoked-token-notification"/> <bcp14>MAY</bcp14> be used to allow an Authorization Server to notify the KDC about revoked access tokens.</t>
      <t>The Broker is only trusted with verifying that the Publisher is authorized to publish, but is not trusted with the publications itself, which it cannot read nor modify.</t>
      <t>With respect to the reusage of nonces for Proof-of-Possession input, the same considerations apply as in the
<xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
      <t>TODO: expand on security and privacy considerations</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 Registry</name>
        <t>IANA is asked to register the following entry in the "ACE Groupcomm Key Types" registry defined in <xref section="11.8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        <ul spacing="normal">
          <li>Name: Group_PubSub_Keying_Material</li>
          <li>Key Type Value: GROUPCOMM_KEY_TBD</li>
          <li>Profile: coap_group_pubsub_app, defined in <xref target="iana-profile"/> of this document.</li>
          <li>Description: Encoded as described in the <xref target="join-response"/> of this document.</li>
          <li>References: <xref target="RFC9052"/>, <xref target="RFC9053"/>, [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="iana-profile">
        <name>ACE Groupcomm Profiles Registry</name>
        <t>IANA is asked to register the following entries in the "ACE Groupcomm Profiles" registry defined in <xref section="11.9" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
        <ul spacing="normal">
          <li>Name: coap_group_pubsub_app</li>
          <li>Description: Profile for delegating client authentication and authorization for publishers and subscribers in a CoAP pub/sub setting scenario in a constrained environment.</li>
          <li>CBOR Value: TBD</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Name: mqtt_pubsub_app</li>
          <li>Description: Profile for delegating client authentication and authorization for publishers and subscribers in a MQTT pub/sub setting scenario in a constrained environment.</li>
          <li>CBOR Value: TBD</li>
          <li>Reference: [RFC-XXXX]</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>Value: "core.ps.gm"</li>
          <li>Description: Group-membership resource for pub/sub communication.</li>
          <li>Reference: [RFC-XXXX]</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>Parameter: Toid</li>
          <li>Name: pubsub-topic</li>
          <li>Description/Specification: Pub/sub topic name, corresponding to the security group</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Parameter: Tperm</li>
          <li>Name: pubsub-perm</li>
          <li>Description/Specification: Permissions corresponding to the topic data interactions in the pub/sub group</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
      <section anchor="content_format">
        <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>Content Type: application/aif+cbor;Toid="pubsub-topic",Tperm="pubsub-perm"</li>
          <li>Content Coding: -</li>
          <li>ID: 294 (suggested)</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
        <t> </t>
        <ul spacing="normal">
          <li>Content Type: application/aif+json;Toid="pubsub-topic",Tperm="pubsub-perm"</li>
          <li>Content Coding: -</li>
          <li>ID: 295 (suggested)</li>
          <li>Reference: [RFC-XXXX]</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>Value: EXPORTER-ACE-Sign-Challenge-coap-group-pubsub-app</li>
          <li>DTLS-OK: Y</li>
          <li>Recommended: N</li>
          <li>Reference: [RFC-XXXX]</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9237">
          <front>
            <title>An Authorization Information Format (AIF) for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Information about which entities are authorized to perform what operations on which constituents of other entities is a crucial component of producing an overall system that is secure. Conveying precise authorization information is especially critical in highly automated systems with large numbers of entities, such as the Internet of Things.</t>
              <t>This specification provides a generic information model and format for representing such authorization information, as well as two variants of a specific instantiation of that format for use with Representational State Transfer (REST) resources identified by URI path.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9237"/>
          <seriesInfo name="DOI" value="10.17487/RFC9237"/>
        </reference>
        <reference anchor="RFC9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC9338">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9338"/>
          <seriesInfo name="DOI" value="10.17487/RFC9338"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="20" month="October" year="2023"/>
            <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-13"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm">
          <front>
            <title>Key Provisioning for Group Communication using ACE</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="16" month="January" year="2024"/>
            <abstract>
              <t>   This document defines how to use the Authentication and Authorization
   for Constrained Environments (ACE) framework to distribute keying
   material and configuration parameters for secure group communication.
   Candidate group members acting as Clients and authorized to join a
   group can do so by interacting with a Key Distribution Center (KDC)
   acting as Resource Server, from which they obtain the keying material
   to communicate with other group members.  While defining general
   message formats as well as the interface and operations available at
   the KDC, this document supports different approaches and protocols
   for secure group communication.  Therefore, details are delegated to
   separate application profiles of this document, as specialized
   instances that target a particular group communication approach and
   define how communications in the group are protected.  Compliance
   requirements for such application profiles are also specified.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-09"/>
        </reference>
        <reference anchor="I-D.ietf-ace-edhoc-oscore-profile">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <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 OAuth 2.0 Client and Resource
   Server, and it binds an authentication credential of the Client to an
   OAuth 2.0 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-03"/>
        </reference>
        <reference anchor="I-D.draft-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="2" month="June" year="2023"/>
            <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-06"/>
        </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>
    <section anchor="groupcomm_requirements">
      <name>Requirements on Application Profiles</name>
      <t>This section lists the specifications on this profile based on the requirements defined in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</t>
      <ul spacing="normal">
        <li>REQ1: Specify the format and encoding of 'scope': see <xref target="scope"/>.</li>
        <li>REQ2: If the AIF format of 'scope' is used, register its specific instance of "Toid" and "Tperm" as Media Type parameters and a corresponding Content-Format, as per the guidelines in <xref target="RFC9237"/>: see <xref target="aif"/>.</li>
        <li>REQ3: If used, specify the acceptable values for 'sign_alg': values from the "Value" column of the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</li>
        <li>REQ4: If used, specify the acceptable values for 'sign_parameters': format and values from the COSE algorithm
capabilities as specified in the "COSE Algorithms" registry <xref target="IANA.cose_algorithms"/>.</li>
        <li>REQ5: If used, specify the acceptable values for 'sign_key_parameters': 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"/>.</li>
        <li>REQ6: Specify the acceptable formats for authentication credentials and, if used, the acceptable values for 'cred_fmt': acceptable formats explicitly provide the public key as well as the comprehensive set of information related to the public key algorithm. Takes value from the "Label" column of the "COSE Header Parameters" registry <xref target="IANA.cose_header-parameters"/>.</li>
        <li>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.</li>
        <li>REQ8: Define whether the KDC has an authentication credential and if this has to be provided through the 'kdc_cred' parameter: optional, see <xref target="join-response"/> of this document.</li>
        <li>REQ9: Specify if any part of the KDC interface as defined in <xref target="I-D.ietf-ace-key-groupcomm"/> is not supported by the KDC: some are left optional, see <xref target="kdc-interface"/> of this document.</li>
        <li>REQ10: Register a Resource Type for the group-membership resource, which is used to discover the correct URL for sending a Join Request to the KDC: the Resource Type (rt=) Link Target Attribute value "core.ps.gm" is registered in Section <xref target="core_rt"/>.</li>
        <li>REQ11: Define what specific actions (e.g., CoAP methods) are allowed on each resource provided by the KDC interface, depending on whether the Client is a current group member; the roles that a Client is authorized to take as per the obtained access token; and the roles that the Client has as current group member: see <xref target="kdc-interface"/> of this document.</li>
        <li>REQ12: Categorize possible newly defined operations for Clients into primary operations expected to be minimally supported and secondary operations, and provide accompanying considerations: none added.</li>
        <li>REQ13: Specify the encoding of group identifier: CBOR byte string, with value used also to identify the current group key used in the security group (see <xref target="join-response"/>).</li>
        <li>REQ14: Specify the approaches used to compute and verify the PoP evidence to include in 'client_cred_verify', and which of those approaches is used in which case: see <xref target="pop"/>.</li>
        <li>REQ15: Specify how the nonce N_S is generated, if the token is not provided to the KDC through the Token Transfer Request to the authz-info endpoint (e.g., if it is used directly to validate TLS instead): see <xref target="pop"/>.</li>
        <li>REQ16: Define the initial value of the 'num' parameter: the initial value <bcp14>MUST</bcp14> be set to 0 (see <xref target="join-response"/>).</li>
        <li>REQ17: Specify the format of the 'key' parameter and register a corresponding entry in the "ACE Groupcomm Key Types" IANA registry: see <xref target="join-response"/> and <xref target="iana-ace-groupcomm-key"/>.</li>
        <li>REQ18: Specify the acceptable values of the 'gkty' parameter: Group_PubSub_Keying_Material, see <xref target="join-response"/>.</li>
        <li>REQ19: Specify and register the application profile identifier: coap_group_pubsub_app, see <xref target="join-response"/> and <xref target="iana-profile"/>.</li>
        <li>REQ20: If used, specify the format and content of 'group_policies' and its entries. Specify the policies default values: ToDo.</li>
        <li>REQ21: Specify the approaches used to compute and verify the PoP evidence to include in 'kdc_cred_verify', and which of those approaches is used in which case. 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"/>.</li>
        <li>REQ22: Specify the communication protocol that the members of the group must use: CoAP <xref target="RFC7252"/>, and for pub/sub communication <xref target="I-D.ietf-core-coap-pubsub"/>.</li>
        <li>REQ23: Specify the security protocol the group members must use to protect their communication. This must provide encryption, integrity and replay protection: a symmetric COSE Key is used to create a COSE_Encrypt0 object with an AEAD algorithm specified by the KDC.</li>
        <li>REQ24: Specify how the communication is secured between Client and KDC.  Optionally, specify transport profile of ACE <xref target="RFC9200"/> to use between Client and KDC: ACE transport profile such as for DTLS <xref target="RFC9202"/> or OSCORE <xref target="RFC9203"/>.</li>
        <li>REQ25: Specify the format of the identifiers of group members: the Sender ID defined in <xref target="join-response"/>.</li>
        <li>REQ26: Specify policies at the KDC to handle ids that are not included in 'get_creds': see <xref target="query"/>.</li>
        <li>REQ27: Specify the format of newly-generated individual keying material for group members, or of the information to derive it, and corresponding CBOR label: not applicable.</li>
        <li>REQ28: Specify which CBOR tag is used for identifying the semantics of binary scopes, or register a new CBOR tag if a suitable one does not exist already: see <xref target="as-response"/> and <xref target="content_format"/> of this document.</li>
        <li>REQ29: Categorize newly defined parameters according to the same criteria of <xref section="8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>: a Publisher Client <bcp14>MUST</bcp14> support 'group_SenderId' in 'key'; see <xref target="join-response"/>.</li>
        <li>REQ30: Define whether Clients must, should or may support the conditional parameters defined in <xref section="8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>, and under which circumstances: a Publisher Client <bcp14>MUST</bcp14> support the client_cred', 'cnonce', and 'client_cred_verify' parameters; see <xref target="join-request"/>. A Publisher Client that provides the token to the KDC, through the authz-info endpoint, <bcp14>MUST</bcp14> support the parameter 'kdcchallenge'; see <xref target="token-post"/>.</li>
        <li>OPT1: Optionally, if the textual format of 'scope' is used, specify CBOR values to use for abbreviating the role identifiers in the group: no.</li>
        <li>OPT2: Optionally, specify the additional parameters used in the exchange of Token Transfer Request and Response: no.</li>
        <li>OPT3: Optionally, specify the negotiation of parameter values for signature algorithm and signature keys, if 'sign_info' is not used: see <xref target="token-post"/>.</li>
        <li>OPT4: Optionally, specify possible or required payload formats for specific error cases: see <xref target="join-error"/>.</li>
        <li>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.</li>
        <li>OPT6: Optionally, specify the encoding of 'creds_repo' if the default is not used: no.</li>
        <li>OPT7: Optionally, specify the functionalities implemented at the 'control_uri' resource hosted at the Client, including message exchange encoding and other details: no.</li>
        <li>OPT8: Optionally, specify the behavior of the handler in case of failure to retrieve an authentication credential for the specific node: The KDC <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response to the Join Request; see <xref target="join-error"/>.</li>
        <li>OPT9: Optionally, define a default group rekeying scheme, to refer to in case the 'rekeying_scheme' parameter is not included in the Join Response: the "Point-to-Point" rekeying scheme registered in <xref section="11.12" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm"/>.</li>
        <li>OPT10: Optionally, specify the functionalities implemented at the 'control_group_uri' resource hosted at the Client, including message exchange encoding and other details: no.</li>
        <li>OPT11: Optionally, specify policies that instruct Clients to retain messages and for how long, if they are unsuccessfully decrypted: no.</li>
        <li>OPT12: Optionally, specify for the KDC to perform group rekeying (together or instead of renewing individual keying material) when receiving a Key Renewal Request: ToDo.</li>
        <li>OPT13: Optionally, specify how the identifier of a group member's authentication credential is included in requests sent to other group members: no.</li>
        <li>OPT14: Optionally, specify additional information to include in rekeying messages for the "Point-to-Point" group rekeying scheme: ToDo.</li>
        <li>OPT15: Optionally, specify if Clients must or should support any of the parameters defined as optional in <xref target="I-D.ietf-ace-key-groupcomm"/>: no.</li>
      </ul>
    </section>
    <section anchor="sec-document-updates">
      <name>Document Updates</name>
      <section anchor="sec-08-09" removeInRFC="true">
        <name>Version -08 to -09</name>
        <ul spacing="normal">
          <li>Improved terminology section.</li>
          <li>Generalized scope format for future, admin-related extensions.</li>
          <li>Improved definition of permissions in the format of scope.</li>
          <li>Clarified alternative computing of N_S Challenge when DTLS is used.</li>
          <li>Use of the parameter 'exi' in the Join Response.</li>
          <li>Use of RFC 9290 instead of the custom format of error responses.</li>
          <li>Fixed construction of the COSE_Encrypt0 object.</li>
          <li>Fixed use of the resource type "core.ps.gm".</li>
          <li>Updated formulation of profile requirements.</li>
          <li>Clarification and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-07-08">
        <name>Version -07 to -08</name>
        <ul spacing="normal">
          <li>Revised presentation of the scope format.</li>
          <li>Revised presentation of the Join Request-Response exchange.</li>
          <li>The 'cnonce' parameter must be present in the Join Request.</li>
          <li>The 'kid' of the group key is used as Group Identifier.</li>
          <li>Relaxed inclusion of the 'peer_roles' parameter.</li>
          <li>More detailed description of the encryption and signing operations.</li>
          <li>Defined construction of the AEAD nonce.</li>
          <li>Clarifications and editorial improvements.</li>
        </ul>
      </section>
      <section anchor="sec-06-07">
        <name>Version -06 to -07</name>
        <ul spacing="normal">
          <li>Revised abstract and introduction.</li>
          <li>Clarified use of "application groups".</li>
          <li>Revised use of protocols and transport profiles with Broker and KDC.</li>
          <li>Revised overview of the profile and its security associations.</li>
          <li>Revised presentation of authorization flow.</li>
          <li>Subscribers cannot be anonymous anymore.</li>
          <li>Revised scope definition.</li>
          <li>Revised Join Response.</li>
          <li>Revised COSE countersignature, COSE encrypt objects.</li>
          <li>Further clarifications, fixes and editorial improvements.</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>The work on this document has been partly supported by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
KsOhmKO07g3iS94UJrMByxuwUDqrsNRCwaSbEiubgqsf0aH4FEMsgnGVl2Ot
WMgMQdj33cxbj48J+T/e5UONy87eigz52GJ6w+poBRmeBfm4qKzHUr5/YlYP
joYpemfFTCr1SDu7fek5Eh8B+lQHmaoSEW0QUF0UU2zDgZeBr0XSFpXRZfmW
n/31SVXCAk/wdv82+032l6+zv5iP/vrXaICv7uBEfIOF0MTX3OUYM4SYJDT+
UbrX2Q8w0w92qh/+6ivJU1x79G1WsLEyroCBmK4zzevrlECfKtJM5LJ4T7Ba
RUeEdJoz9Nm/VQs/7HI0qLJlFbBs7LJCBuri+ePNIAGszv4T75MhUBtrCJ21
TZeYnY/JGuQpbzkvJsu0MuEL7bSS1AKMOQwNMjA7frJs+sUUa6PS7ZgXF8pX
GHPetNRFmyzYzamITli5rfGF6FAxYZjQor8n9daIADHUifrBsFKUs1mSWZ9b
kCgVp+ooYpyyq8dzBMyo+ypvG3E58AZRwCzKgbxNUylu+Wm3ldhO5ZvKmrWo
/IY4dava+0ost4uoP3kGVEewgNCgXbPyZWjSgRehVPAmkmhi10gSLaqazLZn
yNjSOUeRD6td7bptkeiGWwLlKC2saxLSJ1eG0qaGdfT+5NIDiFXr2UJq6zFG
O5ns6+yASm4p3Fx6lT8ZrhqlZQPiM6Ph0RfMdj6hCSGGTOFiIKMxGPonDMG2
pid/02BUXR389LM99H5lG1ubuyxB+rWS6YQqcLOfLCCkmZQy48qr8ZXb8y61
qm5XVmzCFcxm3/KRbicXgRiajxm+hGajewavyEQqB5SWv1M6r6IPJdIBC2Hx
zc6EclTHbDhZ11ypkGzdqGQVZBs77X1SFcpagt5nPg4EByWO2G3tD+iYq5Od
Z6/fnjjbKOWDEZnzCT8+Er6NU6nMzND3bTeG5YGzjftLdoVy5m5WbvJVs6Et
MmpqwjB0yOw5tnR0QeDbAw8Bd9HJd3F0RogtWi5dNYDDltStVFi1yop9w7ZP
3UdJrknMixQxVOwnOB9txUf13/74ZHS7h8acFxf3aEMtOJjn3Fll48EKhKOk
TuOu/1lO4/nBy4OTg8Rm8nlr9czAhKG/SpC4poM0Su0/J9mggZSzUajQnqTq
Vu/Zp00iXop+nm734J+dXjYYDPC3V65G9VTovXJ3EkAaNOACOxXwiRodurkY
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
lqPNdN3oXsS/XJiJ+M50TI+JSw/P3YRjdE7Uh6M2/WcJeh1ZP6W9HT5fpYfR
LtmKpSYDW2nZiOXwnE18bfWlaDlMg+gVNyh1K8dgF+ws3go/aIUQ8JZ/8Hs2
fItKOzy1Vwfvqt+6a24yLUHvsEa51B132cgceUgFEMjb5mQXPzKRP3XNUcLn
Ev9mI4XCsNYcBpuhUOiKpmiaA2CRIBuaHOP6D0H9LDse1a7TAHoW0uEBsuTr
35QfHGwQj0T3ZzdVta13ggI24qCV/RydfedxiDe2ucSzBVCx4W5AOZGT/EM5
WUzU/qy2PC2JEX9s6R/H7bhyOAFJ7GWTcrrAtouM6BzGbJr1sMq8d3Dc39//
vr/9qP/oQX975wluKSKuybNllTJaPJbY1k3TDh7zqlWrmi4m7Zsbpbl4vh2o
XS1TNCtudH/5kEum3qHMEA2u98KVUaRwtCE1LQsOlnQ1EaT7WJaImgIFgYga
lSaPhEqmmNu7XiIigbfINYLJZ6dM4tgGe0o22I3Xb45eHL48OD159nzTmD+S
Wq5MqVbtp27xHPTXtRLBcwwP/EHiAw2heZ83PvzOROtpzFMcoae3LUzDv23W
VTczgO3MiqL+4RSj8symOJixmpRkriiwrx5sTLYe2CaZhlCc2ZLwCZKXDLLF
gKESoWW7g4zPUQgKCp9ZV61Vp3ydztk4v0Yyk+HOcPGUk6/xmFr4rzWsqfwZ
xXkE20fy5UAQgDB5jgGoTVLgMiwys9FSb4s2tmSm5oV7oBm6wkaqJeEbCcdV
6wCZhT50l+TdaPiDhut1bjHO1yq1Wa047lf1sQjFNe0al67CaVK61pdFhuA+
noTb0GDD7qPyuw3uxs22wV21JPU6HUiKJCBVgoQb0fIDGh+YiCldFk/qNxpE
t/1Mu43kB/H/MHVyOGaN1NJ/zKmYgXH6RtbmwEatAY02ICNZdrwTPxKM04Mj
ug7bDo+YF6kg1UVnS5916Jwya68xZwCbidAva5GMljXDy2JStFiYGoq3twfb
N+hapNWAKXC6NXhgvMcKJE83uZTQ9JqlcBP9Fm81jiE3EvzAp4T40lMmnyky
pjsj/0h6UoZ1rDE9HTeqcrA0MutSqAjWWI4saCPs4jCD/FpQMIACx22HnWid
cz6mS3OlTqhY7NolXd4kq9aZPH01v6BkfeMn8CXjVEsLQg1cGKTb97KYThej
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
xrl15VABAA==

-->

</rfc>
