<?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.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-group-oscore-profile-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="Group OSCORE Profile of ACE">The Group Object Security for Constrained RESTful Environments (Group OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ace-group-oscore-profile-02"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. The profile uses Group Object Security for Constrained RESTful Environments (Group OSCORE) to provide communication security between a Client and one or multiple Resource Servers that are members of an OSCORE group. The profile securely binds an OAuth 2.0 Access Token to the public key of the Client associated with the private key used by that Client in the OSCORE group. The profile uses Group OSCORE to achieve server authentication, as well as proof-of-possession for the Client's public key. Also, it provides proof of the Client's membership to the OSCORE group by binding the Access Token to information from the Group OSCORE Security Context, thus allowing the Resource Server(s) to verify the Client's membership upon receiving a message protected with Group OSCORE from the Client. Effectively, the profile enables fine-grained access control paired with secure group communication, in accordance with the Zero Trust principles.</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/ace-group-oscore-profile"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>A number of applications rely on a group communication model where a Client can access a resource hosted by multiple Resource Servers at once, e.g., over IP multicast. Typical examples are switching of luminaries, actuators control, and distribution of software updates. Secure communication in the group can be achieved by sharing a set of keying material, which is typically provided upon joining the group.</t>
      <t>For some of such applications, it may be just fine to enforce access control in a straightforward fashion. That is, any Client authorized to join the group, hence to obtain the group keying material, can be also implicitly authorized to perform any action at any resource of any Server in the group. An example of application where such implicit authorization might serve well is a simple lighting scenario, where the lightbulbs are the Servers, while the user account on an app on the user's phone is the Client. In this case, it might be fine to not require additional authorization evidence from any user account, if it is acceptable that any current group member is also authorized to switch on and off any light, or to check their status.</t>
      <t>However, in different instances of such applications, the approach above is not desirable, as different group members are intended for have different access rights to resources of other group members. For instance, enforcing access control in accordance with a more fine-grained approach is required in the two following use cases.</t>
      <t>As a first case, an application provides control of smart locks acting as Servers in the group, where: a first type of Client, e.g., a user account of a child, is allowed to only query the status of the smart locks; while a second type of Client, e.g., a user account of a parent, is allowed to both query and change the status of the smart locks. Further similar applications concern the enforcement of different sets of permissions in groups with sensor/actuator devices, e.g., thermostats acting as Servers. Also, some group members may even be intended as Servers only. Hence, they must be prevented from acting as Clients altogether and from accessing resources at other Servers, especially when attempting to perform non-safe operations.</t>
      <t>As a second case, building automation scenarios often rely on Servers that, under different circumstances, enforce different level of priority for processing received commands. For instance, BACnet deployments consider multiple classes of Clients, e.g., a normal light switch (C1) and an emergency fire panel (C2). Then, a C1 Client is not allowed to override a command from a C2 Client, until the latter relinquishes control at its higher priority. That is: i) only C2 Clients should be able to adjust the minimum required level of priority on the Servers, so rightly locking out C1 Clients if needed; and ii) when a Server is set to accept only high-priority commands, only C2 Clients should be able to perform such commands otherwise allowed also to C1 Clients. Given the different maximum authority of different Clients, fine-grained access control would effectively limit the execution of high- and emergency-priority commands only to devices that are in fact authorized to perform such actions. Besides, it would prevent a misconfigured or compromised device from initiating a high-priority command and lock out normal control.</t>
      <t>In the cases above, being a legitimate group member and storing the group keying material is not supposed to imply any particular access rights. Instead, access control to the secure group communication channel and access control to the resource space provided by Servers in the group should remain logically separated domains.</t>
      <t>This is aligned with the Zero Trust paradigm <xref target="NIST-800-207"/>, which focuses on resource protection and builds on the premise that trust is never granted implicitly, but must be continually evaluated. In particular, Zero Trust protections involve "minimizing access to resources (such as data and compute resources and applications/services) to only those subjects and assets identified as needing access as well as continually authenticating and authorizing the identity and security posture of each access request."</t>
      <t>Furthermore, <xref target="NIST-800-207"/> highlights how the Zero Trust goal is to "prevent unauthorized access to data and services coupled with making the access control enforcement as granular as possible", to "enforce least privileges needed to perform the action in the request."</t>
      <t>As a step in this direction, one can be tempted to introduce a different security group for each different set of access rights. However, this inconveniently results in additional keying material to distribute and manage. In particular, if the access rights pertaining to a node change, this requires to evict the node from the group, after which the node has to join a different group aligned with its new access rights. Moreover, the keying material of both groups would have to be renewed for their current members. Overall, this would have a non negligible impact on operations and performance.</t>
      <t>Instead, a fine-grained yet flexible access control model can be enforced within the same group, by using the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. That is, a Client has to first obtain authorization credentials in the form of an Access Token, and upload it to the Resource Server(s) in the group before accessing the intended resources.</t>
      <t>The ACE framework delegates to separate profile documents how to secure communications between the Client and the Resource Servers. However each of the current profiles of ACE defined in <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/> relies on a security protocol that cannot be used to protect one-to-many group messages, for example sent over IP multicast.</t>
      <t>This document specifies the "coap_group_oscore" profile of the ACE framework, where a Client uses the Constrained Application Protocol (CoAP) <xref target="RFC7252"/><xref target="I-D.ietf-core-groupcomm-bis"/> to communicate with one or multiple Resource Servers that are members of an application group and share a common set of resources. This profile uses Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/> as the security protocol to protect messages exchanged between the Client and the Resource Servers. Hence, it requires that both the Client and the Resource Servers have previously joined the same OSCORE group.</t>
      <t>That is, this profile describes how access control is enforced for a Client after it has joined an OSCORE group, to access resources hosted by other members in that group. The process for joining the OSCORE group through the respective Group Manager as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> takes place before the process described in this document, and is out of the scope of this profile.</t>
      <t>The Client proves its access to be authorized to the Resource Server(s) by using an Access Token bound to a key (the proof-of-possession key). This profile uses Group OSCORE to achieve server authentication and proof-of-possession for the Client's public key used in the OSCORE group in question. Note that proof-of-possession is not achieved through a dedicated protocol element, but instead after the first message exchange protected with Group OSCORE.</t>
      <t>Furthermore, this profile provides proof of the Client's membership to the OSCORE group, by binding the Access Token to information from the pre-established Group OSCORE Security Context, as well as to the Client's authentication credential used in the group and including the Client's public key. This allows the Resource Server(s) to verify the Client's group membership upon reception of a message protected with Group OSCORE from that Client.</t>
      <t>OSCORE <xref target="RFC8613"/> specifies how to use COSE <xref target="RFC9052"/><xref target="RFC9053"/> to secure CoAP messages. Group OSCORE builds on OSCORE to provide secure group communication, and ensures source authentication: by means of digital signatures embedded in the protected message (when using the group mode); or by protecting a message with pairwise keying material derived from the asymmetric keys of the two peers exchanging the message (when using the pairwise mode).</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 the terms and concepts related to CBOR <xref target="RFC8949"/>, COSE <xref target="RFC9052"/><xref target="RFC9053"/>, CoAP <xref target="RFC7252"/>, OSCORE <xref target="RFC8613"/>, and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>. These especially include:</t>
        <ul spacing="normal">
          <li>
            <t>Group Manager, as the entity responsible for a set of groups where communications among members are secured with Group OSCORE.</t>
          </li>
          <li>
            <t>Authentication credential, as the set of information associated with an entity, including that entity's public key and parameters associated with the public key. Examples of authentication credentials are CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC5280"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.  </t>
            <t>
Members of an OSCORE group have an associated authentication credential in the format used within the group. As per <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, an authentication credential provides the public key as well as the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable).</t>
          </li>
        </ul>
        <t>Readers are expected to be familiar with the terms and concepts described in the ACE framework for authentication and authorization <xref target="RFC9200"/>, as well as in the OSCORE profile of ACE <xref target="RFC9203"/>. The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes Client (C), Resource Server (RS), and Authorization Server (AS).</t>
        <t>Note that the term "endpoint" is used here following its OAuth definition <xref target="RFC6749"/>, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol".</t>
        <t>Additionally, this document makes use of the following terminology.</t>
        <ul spacing="normal">
          <li>
            <t>Pairwise-only group: an OSCORE group that uses only the pairwise mode of Group OSCORE (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
        </ul>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>. Diagnostic notation comments are often used to provide a textual representation of the numeric parameter names and values.</t>
        <t>In the CBOR diagnostic notation used in this document, constructs of the form e'SOME_NAME' are replaced by the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. For example, {e'context_id_param': h'abcd0000', e'salt_input_param': h'00} stands for {71: h'abcd0000', 72: h'00}.</t>
        <t>Note to RFC Editor: Please delete the paragraph immediately preceding this note. Also, in the CBOR diagnostic notation used in this document, please replace the constructs of the form e'SOME_NAME' with the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. Finally, please delete this note.</t>
      </section>
    </section>
    <section anchor="sec-protocol-overview">
      <name>Protocol Overview</name>
      <t>This section provides an overview of this profile, i.e., of how to use the ACE framework for authentication and authorization <xref target="RFC9200"/> to secure communications between a Client and one or more Resource Servers using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      <t>Note that this profile of ACE describes how access control can be enforced for a node after it has joined an OSCORE group, to access resources hosted by other members in that group.</t>
      <t>In particular, the process of joining the OSCORE group through the respective Group Manager as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> must take place before the process described in this document, and is out of the scope of this profile.</t>
      <t>An overview of the protocol flow for this profile is shown in <xref target="fig-protocol-overview"/>, where it is assumed that both the Resource Servers RS1 and RS2 are associated with the same Authorization Server AS. It is also assumed that the Client C, as well as RS1 and RS2 have previously joined an OSCORE group with Group Identifier (gid) 0xabcd0000, and that they got assigned Sender ID (sid) 0x00, 0x01, and 0x02 in the group, respectively. The names of messages coincide with those of <xref target="RFC9200"/> when applicable, and messages in square brackets are optional.</t>
      <figure anchor="fig-protocol-overview">
        <name>Protocol Overview.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="960" width="576" viewBox="0 0 576 960" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,672" fill="none" stroke="black"/>
              <path d="M 8,704 L 8,720" fill="none" stroke="black"/>
              <path d="M 8,768 L 8,816" fill="none" stroke="black"/>
              <path d="M 8,848 L 8,864" fill="none" stroke="black"/>
              <path d="M 8,912 L 8,944" fill="none" stroke="black"/>
              <path d="M 256,48 L 256,136" fill="none" stroke="black"/>
              <path d="M 256,152 L 256,200" fill="none" stroke="black"/>
              <path d="M 256,216 L 256,328" fill="none" stroke="black"/>
              <path d="M 256,344 L 256,392" fill="none" stroke="black"/>
              <path d="M 256,408 L 256,440" fill="none" stroke="black"/>
              <path d="M 256,456 L 256,488" fill="none" stroke="black"/>
              <path d="M 256,504 L 256,568" fill="none" stroke="black"/>
              <path d="M 256,624 L 256,776" fill="none" stroke="black"/>
              <path d="M 256,792 L 256,944" fill="none" stroke="black"/>
              <path d="M 352,48 L 352,136" fill="none" stroke="black"/>
              <path d="M 352,152 L 352,200" fill="none" stroke="black"/>
              <path d="M 352,240 L 352,328" fill="none" stroke="black"/>
              <path d="M 352,344 L 352,392" fill="none" stroke="black"/>
              <path d="M 352,432 L 352,592" fill="none" stroke="black"/>
              <path d="M 352,624 L 352,944" fill="none" stroke="black"/>
              <path d="M 568,48 L 568,944" fill="none" stroke="black"/>
              <path d="M 32,64 L 48,64" fill="none" stroke="black"/>
              <path d="M 200,64 L 232,64" fill="none" stroke="black"/>
              <path d="M 32,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 184,96 L 232,96" fill="none" stroke="black"/>
              <path d="M 8,144 L 72,144" fill="none" stroke="black"/>
              <path d="M 184,144 L 560,144" fill="none" stroke="black"/>
              <path d="M 16,208 L 384,208" fill="none" stroke="black"/>
              <path d="M 528,208 L 568,208" fill="none" stroke="black"/>
              <path d="M 8,256 L 48,256" fill="none" stroke="black"/>
              <path d="M 200,256 L 248,256" fill="none" stroke="black"/>
              <path d="M 16,304 L 72,304" fill="none" stroke="black"/>
              <path d="M 192,304 L 256,304" fill="none" stroke="black"/>
              <path d="M 8,336 L 72,336" fill="none" stroke="black"/>
              <path d="M 184,336 L 560,336" fill="none" stroke="black"/>
              <path d="M 16,400 L 384,400" fill="none" stroke="black"/>
              <path d="M 528,400 L 568,400" fill="none" stroke="black"/>
              <path d="M 8,448 L 48,448" fill="none" stroke="black"/>
              <path d="M 200,448 L 344,448" fill="none" stroke="black"/>
              <path d="M 16,496 L 64,496" fill="none" stroke="black"/>
              <path d="M 184,496 L 352,496" fill="none" stroke="black"/>
              <path d="M 8,528 L 24,528" fill="none" stroke="black"/>
              <path d="M 208,528 L 248,528" fill="none" stroke="black"/>
              <path d="M 248,576 L 344,576" fill="none" stroke="black"/>
              <path d="M 16,640 L 40,640" fill="none" stroke="black"/>
              <path d="M 232,640 L 256,640" fill="none" stroke="black"/>
              <path d="M 16,784 L 40,784" fill="none" stroke="black"/>
              <path d="M 232,784 L 352,784" fill="none" stroke="black"/>
              <path d="M 224,528 L 248,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="568,336 556,330.4 556,341.6" fill="black" transform="rotate(0,560,336)"/>
              <polygon class="arrowhead" points="568,144 556,138.4 556,149.6" fill="black" transform="rotate(0,560,144)"/>
              <polygon class="arrowhead" points="352,576 340,570.4 340,581.6" fill="black" transform="rotate(0,344,576)"/>
              <polygon class="arrowhead" points="352,448 340,442.4 340,453.6" fill="black" transform="rotate(0,344,448)"/>
              <polygon class="arrowhead" points="256,528 244,522.4 244,533.6" fill="black" transform="rotate(0,248,528)"/>
              <polygon class="arrowhead" points="256,256 244,250.4 244,261.6" fill="black" transform="rotate(0,248,256)"/>
              <polygon class="arrowhead" points="240,64 228,58.4 228,69.6" fill="black" transform="rotate(0,232,64)"/>
              <polygon class="arrowhead" points="40,96 28,90.4 28,101.6" fill="black" transform="rotate(180,32,96)"/>
              <polygon class="arrowhead" points="24,784 12,778.4 12,789.6" fill="black" transform="rotate(180,16,784)"/>
              <polygon class="arrowhead" points="24,640 12,634.4 12,645.6" fill="black" transform="rotate(180,16,640)"/>
              <polygon class="arrowhead" points="24,496 12,490.4 12,501.6" fill="black" transform="rotate(180,16,496)"/>
              <polygon class="arrowhead" points="24,400 12,394.4 12,405.6" fill="black" transform="rotate(180,16,400)"/>
              <polygon class="arrowhead" points="24,304 12,298.4 12,309.6" fill="black" transform="rotate(180,16,304)"/>
              <polygon class="arrowhead" points="24,208 12,202.4 12,213.6" fill="black" transform="rotate(180,16,208)"/>
              <g class="text">
                <text x="8" y="36">C</text>
                <text x="256" y="36">RS1</text>
                <text x="352" y="36">RS2</text>
                <text x="564" y="36">AS</text>
                <text x="24" y="68">[</text>
                <text x="92" y="68">Resource</text>
                <text x="160" y="68">Request</text>
                <text x="240" y="68">]</text>
                <text x="24" y="100">[</text>
                <text x="100" y="100">AS</text>
                <text x="144" y="100">Request</text>
                <text x="240" y="100">]</text>
                <text x="100" y="116">Creation</text>
                <text x="160" y="116">Hints</text>
                <text x="100" y="148">POST</text>
                <text x="148" y="148">/token</text>
                <text x="56" y="164">(aud:</text>
                <text x="108" y="164">"RS1",</text>
                <text x="156" y="164">sid:</text>
                <text x="200" y="164">0x00,</text>
                <text x="60" y="180">gid:</text>
                <text x="128" y="180">0xabcd0000,</text>
                <text x="196" y="180">...)</text>
                <text x="420" y="212">Access</text>
                <text x="472" y="212">Token</text>
                <text x="508" y="212">T1</text>
                <text x="384" y="228">+</text>
                <text x="420" y="228">Access</text>
                <text x="496" y="228">Information</text>
                <text x="76" y="260">POST</text>
                <text x="144" y="260">/authz-info</text>
                <text x="108" y="276">(access_token:</text>
                <text x="184" y="276">T1)</text>
                <text x="100" y="308">2.01</text>
                <text x="152" y="308">Created</text>
                <text x="100" y="340">POST</text>
                <text x="148" y="340">/token</text>
                <text x="56" y="356">(aud:</text>
                <text x="108" y="356">"RS2",</text>
                <text x="156" y="356">sid:</text>
                <text x="200" y="356">0x00,</text>
                <text x="60" y="372">gid:</text>
                <text x="128" y="372">0xabcd0000,</text>
                <text x="196" y="372">...)</text>
                <text x="420" y="404">Access</text>
                <text x="472" y="404">Token</text>
                <text x="508" y="404">T2</text>
                <text x="376" y="420">+</text>
                <text x="412" y="420">Access</text>
                <text x="488" y="420">Information</text>
                <text x="76" y="452">POST</text>
                <text x="144" y="452">/authz-info</text>
                <text x="108" y="468">(access_token:</text>
                <text x="184" y="468">T2)</text>
                <text x="92" y="500">2.01</text>
                <text x="144" y="500">Created</text>
                <text x="56" y="532">Group</text>
                <text x="108" y="532">OSCORE</text>
                <text x="168" y="532">Request</text>
                <text x="64" y="548">(kid:</text>
                <text x="112" y="548">0x00,</text>
                <text x="68" y="564">gid:</text>
                <text x="136" y="564">0xabcd0000)</text>
                <text x="256" y="596">|</text>
                <text x="312" y="612">/proof-of-possession/</text>
                <text x="72" y="644">Group</text>
                <text x="124" y="644">OSCORE</text>
                <text x="188" y="644">Response</text>
                <text x="96" y="660">(kid:</text>
                <text x="144" y="660">0x01)</text>
                <text x="88" y="692">/proof-of-possession/</text>
                <text x="32" y="740">/Mutual</text>
                <text x="124" y="740">authentication</text>
                <text x="40" y="756">between</text>
                <text x="80" y="756">C</text>
                <text x="104" y="756">and</text>
                <text x="140" y="756">RS1/</text>
                <text x="72" y="788">Group</text>
                <text x="124" y="788">OSCORE</text>
                <text x="188" y="788">Response</text>
                <text x="96" y="804">(kid:</text>
                <text x="144" y="804">0x02)</text>
                <text x="88" y="836">/proof-of-possession/</text>
                <text x="32" y="884">/Mutual</text>
                <text x="124" y="884">authentication</text>
                <text x="40" y="900">between</text>
                <text x="80" y="900">C</text>
                <text x="104" y="900">and</text>
                <text x="140" y="900">RS2/</text>
                <text x="120" y="932">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
C                             RS1         RS2                        AS
|                              |           |                          |
| [--- Resource Request ---->] |           |                          |
|                              |           |                          |
| [<------ AS Request -------] |           |                          |
|       Creation Hints         |           |                          |
|                              |           |                          |
+-------- POST /token ----------------------------------------------->|
|   (aud: "RS1", sid: 0x00,    |           |                          |
|    gid: 0xabcd0000, ...)     |           |                          |
|                              |           |                          |
|<---------------------------------------------- Access Token T1 -----+
|                              |               + Access Information   |
|                              |           |                          |
+----- POST /authz-info ------>|           |                          |
|     (access_token: T1)       |           |                          |
|                              |           |                          |
|<------- 2.01 Created --------+           |                          |
|                              |           |                          |
+-------- POST /token ----------------------------------------------->|
|   (aud: "RS2", sid: 0x00,    |           |                          |
|    gid: 0xabcd0000, ...)     |           |                          |
|                              |           |                          |
|<---------------------------------------------- Access Token T2 -----+
|                              |              + Access Information    |
|                              |           |                          |
+----- POST /authz-info ------------------>|                          |
|     (access_token: T2)       |           |                          |
|                              |           |                          |
|<------ 2.01 Created ---------------------+                          |
|                              |           |                          |
+-- Group OSCORE Request --+-->|           |                          |
|    (kid: 0x00,            \  |           |                          |
|     gid: 0xabcd0000)       \ |           |                          |
|                             `----------->|                          |
|                              |           |                          |
|                           /proof-of-possession/                     |
|                              |           |                          |
|<--- Group OSCORE Response ---+           |                          |
|        (kid: 0x01)           |           |                          |
|                              |           |                          |
/proof-of-possession/          |           |                          |
|                              |           |                          |
|                              |           |                          |
/Mutual authentication         |           |                          |
 between C and RS1/            |           |                          |
|                              |           |                          |
|<--- Group OSCORE Response ---------------+                          |
|        (kid: 0x02)           |           |                          |
|                              |           |                          |
/proof-of-possession/          |           |                          |
|                              |           |                          |
|                              |           |                          |
/Mutual authentication         |           |                          |
 between C and RS2/            |           |                          |
|                              |           |                          |
|            ...               |           |                          |
|                              |           |                          |
]]></artwork>
        </artset>
      </figure>
      <section anchor="sec-protocol-overview-pre-conditions">
        <name>Pre-Conditions</name>
        <t>Using Group OSCORE and this profile requires that both the Client and the Resource Servers have previously joined the same OSCORE group. This especially includes the derivation of the Group OSCORE Security Context and the assignment of unique Sender IDs to use in the group. Nodes can join the OSCORE group through the respective Group Manager by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, which is also based on ACE.</t>
        <t>After the Client and Resource Servers have joined the group, this profile provides access control for accessing resources on those Resource Servers, by securely communicating with Group OSCORE.</t>
        <t>As a pre-requisite for this profile, the Client has to have successfully joined the OSCORE group where also the Resource Servers (RSs) are members. Depending on the limited information initially available, the Client may have to first discover the exact OSCORE group used by the RSs for the resources of interest, e.g., by using the approach defined in <xref target="I-D.tiloca-core-oscore-discovery"/>.</t>
      </section>
      <section anchor="sec-protocol-overview-token-retrieval">
        <name>Access Token Retrieval</name>
        <t>This profile requires that the Client retrieves an Access Token from the AS for the resource(s) that it wants to access at the RS(s), by using the /token endpoint as specified in <xref section="5.8" sectionFormat="of" target="RFC9200"/>.</t>
        <t>In general, different RSs can be associated with different ASs, even if the RSs are members of the same OSCORE group. However, assuming proper configurations and trust relations, it is possible for multiple RSs associated with the same AS to be part of a single audience (i.e., a group-audience, see <xref section="6.9" sectionFormat="of" target="RFC9200"/>). In such a case, the Client can request a single Access Token intended for the group-audience, hence to all the RSs included therein. A particular group-audience might be defined as including all the RSs in the OSCORE group.</t>
        <t>In the Access Token Request to the AS, the Client <bcp14>MUST</bcp14> include the Group Identifier of the OSCORE group and its own Sender ID in that group. The AS <bcp14>MUST</bcp14> specify these pieces of information in the Access Token.</t>
        <t>Furthermore, in the Access Token Request to the AS, the Client <bcp14>MUST</bcp14> also include: its own authentication credential used in the OSCORE group; and a proof-of-possession (PoP) evidence to prove possession of the corresponding private key. The PoP evidence is computed over a PoP input uniquely related to the secure communication association between the Client and the AS. The AS <bcp14>MUST</bcp14> include also the authentication credential specified by the Client in the Access Token.</t>
        <t>The Access Token Request and Response <bcp14>MUST</bcp14> be confidentiality-protected and ensure authenticity. In this profile, it is <bcp14>RECOMMENDED</bcp14> to use OSCORE <xref target="RFC8613"/> between the Client and the AS, to reduce the number of libraries the client has to support. Other protocols fulfilling the security requirements defined in Sections <xref target="RFC9200" section="5" sectionFormat="bare"/> and <xref target="RFC9200" section="6" sectionFormat="bare"/> of <xref target="RFC9200"/> <bcp14>MAY</bcp14> alternatively be used, such as TLS <xref target="RFC8446"/> or DTLS <xref target="RFC9147"/>.</t>
      </section>
      <section anchor="sec-protocol-overview-token-posting">
        <name>Access Token Uploading</name>
        <t>After having retrieved the Access Token from the AS, the Client uploads the Access Token to the RS, by sending a POST request to the /authz-info endpoint and using the mechanisms specified in <xref section="5.10" sectionFormat="of" target="RFC9200"/>. When using this profile, the communication that C has with the /authz-info endpoint is not protected.</t>
        <t>If the Access Token is valid, the RS replies to the POST request with a 2.01 (Created) response. Also, the RS associates the received Access Token with the Group OSCORE Security Context identified by the Group Identifier specified in the Access Token, following <xref section="3.2" sectionFormat="of" target="RFC8613"/>. In practice, the RS maintains a collection of Security Contexts with associated authorization information, for all the clients that it is currently communicating with. The authorization information is a policy that is used as input when processing requests from those clients.</t>
        <t>Finally, the RS stores the association between i) the authorization information from the Access Token; and ii) the Group Identifier of the OSCORE group together with the Sender ID and the authentication credential of the Client in that group. This binds the Access Token to the Group OSCORE Security Context of the OSCORE group.</t>
        <t>Finally, when the Client communicates with the RS using the Group OSCORE Security Context, the RS verifies that the Client is a legitimate member of the OSCORE group and especially the exact group member with the same Sender ID associated with the Access Token. This occurs when verifying a request protected with Group OSCORE, since the request includes the Client's Sender ID and either it embeds a signature computed also over that Sender ID (if protected with the group mode), or it is protected by means of pairwise symmetric keying material derived from the asymmetric keys of the two peers (if protected with the pairwise mode).</t>
        <t>The above has considered an Access Token intended for a single RS. However, as discussed in <xref target="sec-protocol-overview-token-retrieval"/>, an Access Token can be intended for a group-audience including multiple RSs in the OSCORE group. In such a case, the Client could efficiently upload the Access Token to many or all of those RSs at once (e.g., over IP multicast), after which each RS individually performs the same steps described above.</t>
      </section>
      <section anchor="sec-protocol-overview-communication">
        <name>Secure Communication</name>
        <t>The Client can send a request protected with Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> to the RS. This can be a unicast request targeting the RS, or a one-to-many group request (e.g., over IP multicast) targeting the OSCORE group where the RS is also a member. To this end, the Client uses the Group OSCORE Security Context already established upon joining the OSCORE group, e.g., by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. The RS may send a response back to the Client, protecting it by means of the same Group OSCORE Security Context.</t>
      </section>
    </section>
    <section anchor="sec-c-as-comm">
      <name>Client-AS Communication</name>
      <t>This section details the Access Token POST Request that the Client sends to the /token endpoint of the AS, as well as the related Access Token Response.</t>
      <t>The Access Token <bcp14>MUST</bcp14> be bound to the public key of the Client as proof-of-possession key (pop-key), which is included in the Client's authentication credential specified in the 'cnf' claim of the Access Token.</t>
      <section anchor="sec-c-as-token-endpoint">
        <name>C-to-AS: POST to Token Endpoint</name>
        <t>The Client-to-AS request is specified in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. The Client <bcp14>MUST</bcp14> send this POST request to the /token endpoint over a secure channel that guarantees authentication, message integrity, and confidentiality.</t>
        <t>The POST request is formatted as the analogous Client-to-AS request in the OSCORE profile of ACE (see <xref section="3.1" sectionFormat="of" target="RFC9203"/>), with the following additional parameters that <bcp14>MUST</bcp14> be included in the payload.</t>
        <ul spacing="normal">
          <li>
            <t>'context_id', defined in <xref target="context_id"/> of this document. This parameter specifies the Group Identifier (GID), i.e., the ID Context of an OSCORE group that includes as members both the Client and the RS(s) in the audience for which the Access Token is asked to be issued. In particular, the Client wishes to communicate with the RS(s) in that audience using the Group OSCORE Security Context associated with that OSCORE group.</t>
          </li>
          <li>
            <t>'salt_input', defined in <xref target="salt_input"/> of this document. This parameter includes the Sender ID that the Client has in the OSCORE group whose GID is specified in the 'context_id' parameter above.</t>
          </li>
          <li>
            <t>'req_cnf', defined in <xref section="3.1" sectionFormat="of" target="RFC9201"/>. This parameter follows the syntax from <xref section="3.1" sectionFormat="of" target="RFC8747"/>, and its inner confirmation value specifies the authentication credential that the Client uses in the OSCORE group. The public key included in the authentication credential will be used as the pop-key bound to the Access Token.  </t>
            <t>
At the time of writing this specification, acceptable formats of authentication credentials in Group OSCORE are CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>, X.509 certificates <xref target="RFC5280"/>, and C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.  </t>
            <t>
Further formats may be available in the future, and would be acceptable to use as long as they comply with the criteria compiled in <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>. In particular, an authentication credential has to explicitly include the public key as well as the comprehensive set of information related to the public key algorithm, including, e.g., the used elliptic curve (when applicable).  </t>
            <t>
[ As to CWTs and CCSs, the CWT Confirmation Methods 'kcwt' and 'kccs' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]  </t>
            <t>
[ As to X.509 certificates, the CWT Confirmation Methods 'x5bag' and '5chain' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]  </t>
            <t>
[ As to C509 certificates, the CWT Confirmation Methods 'c5b'and 'c5c' are under pending registration requested by draft-ietf-ace-edhoc-oscore-profile. ]</t>
          </li>
        </ul>
        <t>In addition, the Client computes its proof-of-possession (PoP) evidence, in order to prove to the AS the possession of its own private key used in the OSCORE group. This allows the AS to verify that the Client indeed owns the private key associated with the public key of the authentication credential that the Client allegedly uses in the OSCORE group.</t>
        <t>To this end, the Client <bcp14>MUST</bcp14> use as PoP input the byte representation of an information that uniquely represents the secure communication association between the Client and the AS. It is <bcp14>RECOMMENDED</bcp14> that the Client uses the following as PoP input.</t>
        <ul spacing="normal">
          <li>
            <t>If the Client and the AS communicate over TLS 1.2 <xref target="RFC5246"/> or DTLS 1.2 <xref target="RFC6347"/>, the PoP input is an exporter value computed as defined in <xref section="4" sectionFormat="of" target="RFC5705"/>, using the following inputs:  </t>
            <ul spacing="normal">
              <li>
                <t>The exporter label "EXPORTER-ACE-PoP-Input-Client-AS", defined in <xref target="iana-tls-exporter-label"/> of this document.</t>
              </li>
              <li>
                <t>The empty 'context value', i.e., a 'context value' of zero-length.</t>
              </li>
              <li>
                <t>32 as length value in bytes.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the Client and the AS communicate over TLS 1.3 <xref target="RFC8446"/> or DTLS 1.3 <xref target="RFC9147"/>, the PoP input is an exporter value computed as defined in <xref section="7.5" sectionFormat="of" target="RFC8446"/>, using the following inputs:  </t>
            <ul spacing="normal">
              <li>
                <t>The exporter label "EXPORTER-ACE-PoP-Input-Client-AS", defined in <xref target="iana-tls-exporter-label"/> of this document.</t>
              </li>
              <li>
                <t>The empty 'context_value', i.e., a 'context_value' of zero-length.</t>
              </li>
              <li>
                <t>32 as 'key_length' in bytes.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the Client and the AS communicate over OSCORE <xref target="RFC8613"/>, the PoP input is the output PRK of an HKDF-Extract step <xref target="RFC5869"/>, i.e., PRK = HMAC-Hash(salt, IKM).  </t>
            <t>
In particular, given the OSCORE Security Context CTX shared between the Client and the AS, then the following applies.  </t>
            <ul spacing="normal">
              <li>
                <t>'salt' takes (x1 | x2), where | denotes byte string concatenation, while x1 and x2 are defined as follows.      </t>
                <ul spacing="normal">
                  <li>
                    <t>x1 is the binary serialization of a CBOR data item. If CTX does not specify an OSCORE ID Context, the CBOR data item is the CBOR simple value <tt>null</tt> (0xf6). Otherwise, the CBOR data item is a CBOR byte string, with value the OSCORE ID Context specified in CTX.</t>
                  </li>
                  <li>
                    <t>x2 is the binary serialization of a CBOR byte string. The value of the CBOR byte string is the OSCORE Sender ID of the Client, which the Client stores in its Sender Context of CTX and the AS stores in its Recipient Context of CTX.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>'IKM' is the OSCORE Master Secret specified in CTX.</t>
              </li>
              <li>
                <t>The used HKDF is the HKDF Algorithm specified in CTX.</t>
              </li>
            </ul>
            <t>
The following shows an example of input to the HMAC-Hash() function.  </t>
            <t>
On the Client side, the OSCORE Security Context shared with the AS includes:  </t>
            <artwork><![CDATA[
ID Context: 0x37cbf3210017a2d3 (8 bytes)

Sender ID: 0x01 (1 byte)

Master Secret: 0x0102030405060708090a0b0c0d0e0f10 (16 bytes)
]]></artwork>
            <t>
Then, the following holds.  </t>
            <artwork><![CDATA[
x1 (Raw value) (8 bytes)
0x37cbf3210017a2d3

x1 (CBOR Data Item) (9 bytes)
0x4837cbf3210017a2d3

x2 (Raw value) (1 bytes)
0x01

x2 (CBOR Data Item) (2 bytes)
0x4101

salt (11 bytes)
0x4837cbf3210017a2d34101

IKM (16 bytes)
0x0102030405060708090a0b0c0d0e0f10
]]></artwork>
          </li>
        </ul>
        <t>After that, the Client computes the PoP evidence as follows.</t>
        <ul spacing="normal">
          <li>
            <t>If the OSCORE group is not a pairwise-only group, the PoP evidence <bcp14>MUST</bcp14> be a signature. The Client computes the signature by using the same private key and signature algorithm it uses for signing messages in the OSCORE group. The Client's private key is the one associated with the Client's authentication credential used in the OSCORE group and specified in the 'req_cnf' parameter above.</t>
          </li>
          <li>
            <t>If the OSCORE group is a pairwise-only group, the PoP evidence <bcp14>MUST</bcp14> be a MAC computed as follows, by using the HKDF Algorithm HKDF SHA-256, which consists of composing the HKDF-Extract and HKDF-Expand steps <xref target="RFC5869"/>.  </t>
            <t>
MAC = HKDF(salt, IKM, info, L)  </t>
            <t>
The input parameters of HKDF are as follows.  </t>
            <ul spacing="normal">
              <li>
                <t>salt takes as value the empty byte string.</t>
              </li>
              <li>
                <t>IKM is computed as a cofactor Diffie-Hellman shared secret (see Section 5.7.1.2 of <xref target="NIST-800-56A"/>), using the ECDH algorithm that is used as Pairwise Key Agreement Algorithm in the OSCORE group. The Client uses its own Diffie-Hellman private key and the Diffie-Hellman public key of the AS. For X25519 and X448, the procedure is described in <xref section="5" sectionFormat="of" target="RFC7748"/>.      </t>
                <t>
The Client's private key is the one associated with the Client's authentication credential used in the OSCORE group and specified in the 'req_cnf' parameter above. The Client may obtain the Diffie-Hellman public key of the AS during its registration process at the AS.</t>
              </li>
              <li>
                <t>info takes as value the PoP input.</t>
              </li>
              <li>
                <t>L is equal to 8, i.e., the size of the MAC, in bytes.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Finally, the Client <bcp14>MUST</bcp14> include one of the two following parameters in the payload of the POST request to the AS.</t>
        <ul spacing="normal">
          <li>
            <t>'client_cred_verify', defined in <xref target="client_cred_verify"/> of this document, specifying the Client's PoP evidence as a signature, which is computed as defined above. This parameter <bcp14>MUST</bcp14> be included if and only if the OSCORE group is not a pairwise-only group.</t>
          </li>
          <li>
            <t>'client_cred_verify_mac', defined in <xref target="client_cred_verify_mac"/> of this document, specifying the Client's PoP evidence as a MAC, which is computed as defined above. This parameter <bcp14>MUST</bcp14> be included if and only if the OSCORE group is a pairwise-only group.</t>
          </li>
        </ul>
        <t>An example of such a request is shown in <xref target="fig-example-C-to-AS-symm"/>.</t>
        <figure anchor="fig-example-C-to-AS-symm">
          <name>Example C-to-AS POST /token Request for an Access Token Bound to an Asymmetric Key.</name>
          <artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "as.example.com"
Uri-Path: "token"
Content-Format: application/ace+cbor
Payload:
{
  / audience /        5 : "tempSensor4711",
  / scope /           9 : "read",
    e'context_id_param' : h'abcd0000',
    e'salt_input_param' : h'00',
  e'client_cred_verify' : h'c5a6...f100' / elided for brevity /,
  / req_cnf /         4 : {
    e'kccs' : {
      / sub / 2 : "42-50-31-FF-EF-37-32-39",
      / cnf / 8 : {
        / COSE_Key / 1 : {
          / kty /  1 : 2 / EC2 /,
          / crv / -1 : 1 / P-256 /,
          / x /   -2 : h'd7cc072de2205bdc1537a543d53c60a6
                         acb62eccd890c7fa27c9e354089bbe13',
          / y /   -3 : h'f95e1d4b851a2cc80fff87d8e23f22af
                         b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  }
}
]]></artwork>
        </figure>
        <t>In the example above, the Client specifies that its authentication credential in the OSCORE group is the CCS shown in <xref target="fig-client-auth-cred"/>.</t>
        <figure anchor="fig-client-auth-cred">
          <name>Example of Client Authentication Credential as CWT Claims Set (CCS).</name>
          <artwork><![CDATA[
{
  / sub / 2 : "42-50-31-FF-EF-37-32-39",
  / cnf / 8 : {
    / COSE_Key / 1 : {
      / kty /  1 : 2 / EC2 /,
      / crv / -1 : 1 / P-256 /,
      / x /   -2 : h'd7cc072de2205bdc1537a543d53c60a6
                     acb62eccd890c7fa27c9e354089bbe13',
      / y /   -3 : h'f95e1d4b851a2cc80fff87d8e23f22af
                     b725d535e515d020731e79a3b4e47120'
    }
  }
}
]]></artwork>
        </figure>
        <t>[</t>
        <t>TODO: Specify how C requests a new Access Token that dynamically updates its access rights. (See <xref target="sec-as-update-access-rights"/> for pre-requirements and a high-level direction)</t>
        <t>]</t>
        <section anchor="context_id">
          <name>'context_id' Parameter</name>
          <t>The 'context_id' parameter is an <bcp14>OPTIONAL</bcp14> parameter of the Access Token Request message defined in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. This parameter provides a value that the Client wishes to use with the RS as a hint for a security context. Its exact content is profile specific.</t>
        </section>
        <section anchor="salt_input">
          <name>'salt_input' Parameter</name>
          <t>The 'salt_input' parameter is an <bcp14>OPTIONAL</bcp14> parameter of the Access Token Request message defined in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>. This parameter provides a value that the Client wishes to use as part of a salt with the RS, for deriving cryptographic keying material. Its exact content is profile specific.</t>
        </section>
        <section anchor="client_cred_verify">
          <name>'client_cred_verify' Parameter</name>
          <t>The 'client_cred_verify' parameter is an <bcp14>OPTIONAL</bcp14> parameter of the Access Token Request message defined in <xref section="5.8.1." sectionFormat="of" target="RFC9200"/>. This parameter provides a signature computed by the Client to prove the possession of its own private key.</t>
        </section>
        <section anchor="client_cred_verify_mac">
          <name>'client_cred_verify_mac' Parameter</name>
          <t>The 'client_cred_verify_mac' parameter is an <bcp14>OPTIONAL</bcp14> parameter of the Access Token Request message defined in <xref section="5.8.1." sectionFormat="of" target="RFC9200"/>. This parameter provides a Message Authentication Code (MAC) computed by the Client to prove the possession of its own private key.</t>
        </section>
      </section>
      <section anchor="sec-as-c-token">
        <name>AS-to-C: Response</name>
        <t>After having verified the POST request to the /token endpoint and that the Client is authorized to obtain an Access Token corresponding to its Access Token Request, the AS <bcp14>MUST</bcp14> verify the proof-of-possession (PoP) evidence. In particular, the AS proceeds as follows.</t>
        <ul spacing="normal">
          <li>
            <t>As PoP input, the AS uses the same value used by the Client in <xref target="sec-c-as-token-endpoint"/>.</t>
          </li>
          <li>
            <t>As public key of the Client, the AS uses the one included in the authentication credential specified in the 'req_cnf' parameter of the Access Token Request.  </t>
            <t>
This requires the AS to support the format of the authentication credential specified in the 'req_cnf' parameter, i.e., the format of authentication credential that is used in the OSCORE group where the Client uses that authentication credential. Practically, this is not an issue, since an RS supporting this profile is expected to be registered only at an AS that supports the formats of authentication credential that the RS supports.</t>
          </li>
          <li>
            <t>If the Access Token Request includes the 'client_cred_verify' parameter, this specifies the PoP evidence as a signature. Then, the AS verifies the signature by using the public key of the Client.  </t>
            <t>
This requires the AS to support the signature algorithm and curve (when applicable) that are used in the OSCORE group where the Client uses the authentication credential specified in the 'req_cnf' parameter of the Access Token Request. Practically, this is not an issue, since an RS supporting this profile is expected to be registered only at an AS that supports the signature algorithms and curves (when applicable) that the RS supports.</t>
          </li>
          <li>
            <t>If the Access Token Request includes the 'client_cred_verify_mac' parameter, this specifies the PoP evidence as a Message Authentication Code (MAC).  </t>
            <t>
Then, the AS recomputes the MAC through the same process taken by the Client when preparing the value of the 'client_cred_verify_mac' parameter for the Access Token (see <xref target="sec-c-as-token-endpoint"/>), with the difference that the AS uses its own Diffie-Hellman private key and the Diffie-Hellman public key of the Client. The verification succeeds if and only if the recomputed MAC is equal to the MAC conveyed as PoP evidence in the Access Token Request.  </t>
            <t>
This requires the AS to support the ECDH algorithm that is used as Pairwise Key Agreement Algorithm in the OSCORE group where the Client uses the authentication credential specified in the 'req_cnf' parameter of the Access Token Request. Practically, this is not an issue, since an RS supporting this profile is expected to be registered only at an AS that supports the ECDH algorithms that the RS supports.</t>
          </li>
        </ul>
        <t>If both the 'client_cred_verify' and 'client_cred_verify_mac' parameters are present, or if the verification of the PoP evidence fails, the AS considers the Client request invalid.</t>
        <t>If the Client request was invalid or not authorized, the AS returns an error response as described in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
        <t>If all verifications are successful, the AS responds as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The AS can signal that the use of Group OSCORE is <bcp14>REQUIRED</bcp14> for a specific Access Token by including the 'ace_profile' parameter with the value "coap_group_oscore" in the Access Token Response. The Client <bcp14>MUST</bcp14> use Group OSCORE towards all the Resource Servers for which this Access Token is valid. Usually, it is assumed that constrained devices will be pre-configured with the necessary profile, so that this kind of profile signaling can be omitted.</t>
          </li>
          <li>
            <t>The AS <bcp14>MUST NOT</bcp14> include the 'rs_cnf' parameter defined in <xref target="RFC9201"/>. In general, the AS may not be aware of the authentication credentials (and public keys included thereof) that the RSs use in the OSCORE group. Also, the Client is able to retrieve the authentication credentials of other group members from the responsible Group Manager, both upon joining the group or later on as a group member, as defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
          </li>
        </ul>
        <t>The AS <bcp14>MUST</bcp14> include the following information as metadata of the issued Access Token. The use of CBOR web tokens (CWT) as specified in <xref target="RFC8392"/> is <bcp14>RECOMMENDED</bcp14>.</t>
        <ul spacing="normal">
          <li>
            <t>The profile "coap_group_oscore". If the Access Token is a CWT, this is specified in the 'ace_profile' claim of the Access Token, as per <xref section="5.10" sectionFormat="of" target="RFC9200"/>.</t>
          </li>
          <li>
            <t>The salt input specified in the 'salt_input' parameter of the Access Token Request. If the Access Token is a CWT, the content of the 'salt_input' parameter <bcp14>MUST</bcp14> be specified in the 'salt_input' claim of the Access Token, defined in <xref target="salt_input_claim"/> of this document.</t>
          </li>
          <li>
            <t>The Context ID input specified in the 'context_id' parameter of the Access Token Request. If the Access Token is a CWT, the content of the 'context_id' parameter <bcp14>MUST</bcp14> be specified in the 'context_id' claim of the Access Token, defined in <xref target="context_id_claim"/> of this document.</t>
          </li>
          <li>
            <t>The authentication credential that the client uses in the OSCORE group and specified in the 'req_cnf' parameter of the Access Token Request.  </t>
            <t>
If the Access Token is a CWT, the Client's authentication credential <bcp14>MUST</bcp14> be specified in the 'cnf' claim, which follows the syntax from <xref section="3.1" sectionFormat="of" target="RFC8747"/>. In particular, the 'cnf' claim includes the same authentication credential specified in the 'req_cnf' parameter of the Access Token Request (see <xref target="sec-c-as-token-endpoint"/>).</t>
          </li>
        </ul>
        <t><xref target="fig-example-AS-to-C"/> shows an example of such an AS response. The Access Token has been truncated for readability.</t>
        <figure anchor="fig-example-AS-to-C">
          <name>Example AS-to-C Access Token Response with the Group OSCORE Profile.</name>
          <artwork><![CDATA[
Header: Created (Code=2.01)
Content-Format: application/ace+cbor
Payload:
{
  / access_token / 1 : h'8343a1010aa2044c...00', / elided for brevity /
  / ace_profile / 38 : e'coap_group_oscore',
  / expires_in /   2 : 3600
}
]]></artwork>
        </figure>
        <t><xref target="fig-example-AS-to-C-CWT"/> shows an example CWT Claims Set, containing the Client's public key in the group (as pop-key), as specified by the inner confirmation value in the 'cnf' claim.</t>
        <figure anchor="fig-example-AS-to-C-CWT">
          <name>Example CWT Claims Set.</name>
          <artwork><![CDATA[
{
  / aud /           3 : "tempSensorInLivingRoom",
  / iat /           6 : 1719820800,
  / exp /           4 : 2035353600,
  / scope /         9 : "temperature_g firmware_p",
  e'context_id_claim' : h'abcd0000',
  e'salt_input_claim' : h'00',
  / cnf /           8 : {
    e'kccs' : {
      / sub / 2 : "42-50-31-FF-EF-37-32-39",
      / cnf / 8 : {
        / COSE_Key / 1 : {
          / kty /  1 : 2 / EC2 /,
          / crv / -1 : 1 / P-256 /,
          / x /   -2 : h'd7cc072de2205bdc1537a543d53c60a6
                         acb62eccd890c7fa27c9e354089bbe13',
          / y /   -3 : h'f95e1d4b851a2cc80fff87d8e23f22af
                         b725d535e515d020731e79a3b4e47120'
        }
      }
    }
  }
}
]]></artwork>
        </figure>
        <t>The same CWT Claims Set as in <xref target="fig-example-AS-to-C-CWT"/> and encoded in CBOR is shown in <xref target="fig-example-AS-to-C-CWT-encoding"/>, using the value abbreviations defined in <xref target="RFC9200"/> and <xref target="RFC8747"/>. The bytes in hexadecimal are reported in the first column, while their corresponding CBOR meaning is reported after the "#" sign on the second column, for easiness of readability.</t>
        <t>Editor's note: it should be checked (and in case fixed) that the values used below (which are not yet registered) are the final values registered by IANA.</t>
        <figure anchor="fig-example-AS-to-C-CWT-encoding">
          <name>Example CWT Claims Set Using CBOR Encoding.</name>
          <artwork><![CDATA[
A7                                      # map(7)
   03                                   # unsigned(3)
   76                                   # text(22)
      74656D7053656E736F72496E4C6976696E67526F6F6D
      # "tempSensorInLivingRoom"
   06                                   # unsigned(6)
   1A 66826200                          # unsigned(1719820800)
   04                                   # unsigned(4)
   1A 79510800                          # unsigned(2035353600)
   09                                   # unsigned(9)
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70
      # "temperature_g firmware_p"
   18 33                                # unsigned(51)
   44                                   # bytes(4)
      ABCD0000
   18 34                                # unsigned(52)
   41                                   # bytes(1)
      00
   08                                   # unsigned(8)
   A1                                   # map(1)
      0E                                # unsigned(14)
      A2                                # map(2)
         02                             # unsigned(2)
         77                             # text(23)
            34322D35302D33312D46462D45462D33372D33322D3339
            # "42-50-31-FF-EF-37-32-39"
         08                             # unsigned(8)
         A1                             # map(1)
            01                          # unsigned(1)
            A4                          # map(4)
               01                       # unsigned(1)
               02                       # unsigned(2)
               20                       # negative(0)
               01                       # unsigned(1)
               21                       # negative(1)
               58 20                    # bytes(32)
                  D7CC072DE2205BDC1537A543D53C60A6
                  ACB62ECCD890C7FA27C9E354089BBE13
               22                       # negative(2)
               58 20                    # bytes(32)
                  F95E1D4B851A2CC80FFF87D8E23F22AF
                  B725D535E515D020731E79A3B4E47120
]]></artwork>
        </figure>
        <section anchor="sec-as-update-access-rights">
          <name>Update of Access Rights</name>
          <t>[</t>
          <t>TODO: Specify how the AS issues an Access Token that dynamically updates the access rights of C. (See below for pre-requirements and a high-level direction)</t>
          <t>(This should be specified with content in the present section, as well as in <xref target="sec-c-as-token-endpoint"/> and <xref target="sec-rs-update-access-rights"/>).</t>
          <t>At the moment, this profile does not support the dynamic update of access rights for the Client like other transport profiles of ACE do.</t>
          <t>This can be enabled by building on concepts defined in <xref target="I-D.ietf-ace-workflow-and-params"/>:</t>
          <ul spacing="normal">
            <li>
              <t>"Token series" - In this profile, it would be specialized as a set of consecutive Access Tokens issued by the AS for the pair (C, AUD), where C is the Client whose public authentication credential is bound to those Access Tokens, while AUD is the audience for which C requests those Access Tokens.</t>
            </li>
            <li>
              <t>"token_series_id" - At the time of writing, <xref target="I-D.ietf-ace-workflow-and-params"/> describes the intended direction for defining this new prospective parameter, to be used in the Access Token Request/Response exchange between C and the AS.  </t>
              <t>
This parameter is meant to specify the unique identifier of a token series. In parallel, it is planned to define a new, corresponding claim to include into Access Tokens.</t>
            </li>
          </ul>
          <t>At a high-level, the above can enable the dynamic update of access rights as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Each Access Token in a token series includes the claim "token_series_id", with value the identifier of the token series that the Access Token belongs to.</t>
            </li>
            <li>
              <t>When issuing the first Access Token in a token series, the AS includes the parameter "token_series_id" in the Access Token Response to the Client, with value the identifier of the token series that the Access Token belongs to.</t>
            </li>
            <li>
              <t>When C requests from the AS an Access Token that dynamically updates its current access rights to access protected resources at the same audience, C sends to the AS an Access Token Request such that:  </t>
              <ul spacing="normal">
                <li>
                  <t>It includes the parameter "token_series_id", with value the identifier of the token series for which the new Access Token is requested.</t>
                </li>
                <li>
                  <t>It does <em>not</em> include the parameters "context_id", "salt_input", and "client_cred_verify" or "client_cred_verify_mac".</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the AS issues the new Access Token that dynamically updated the access rights of C, then the Access Token includes the claim "token_series_id", with value the identifier of the same token series for which the Access Token has been issued.</t>
            </li>
          </ul>
          <t>When receiving the new Access Token, the RS uses the value of the claim "token_series_id", and identifies the stored old Access Token that has to be superseded by the new one, as both belonging to the same token series.</t>
          <t>]</t>
        </section>
        <section anchor="context_id_claim">
          <name>'context_id' Claim</name>
          <t>The 'context_id' claim provides a value that the Client requesting the Access Token wishes to use with the RS, as a hint for a security context.</t>
          <t>This parameter specifies the value of the Context ID input, encoded as a CBOR byte string.</t>
        </section>
        <section anchor="salt_input_claim">
          <name>'salt_input' Claim</name>
          <t>The 'salt_input' claim provides a value that the Client requesting the Access Token wishes to use as a part of a salt with the RS, e.g., for deriving cryptographic material.</t>
          <t>This parameter specifies the value of the salt input, encoded as a CBOR byte string.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-c-rs-comm">
      <name>Client-RS Communication</name>
      <t>This section details the POST request and response to the /authz-info endpoint between the Client and the RS.</t>
      <t>The proof-of-possession required to bind the Access Token to the Client is explicitly performed when the RS receives and verifies a request from the Client protected with Group OSCORE, either with the group mode (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) or with the pairwise mode (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>In particular, the RS uses the Client's public key bound to the Access Token, either when verifying the signature of the request (if protected with the group mode), or when verifying the request as integrity-protected with pairwise keying material derived from the two peers' authentication credentials and asymmetric keys (if protected with the pairwise mode). In either case, the RS also authenticates the Client.</t>
      <t>Similarly, when receiving a protected response from the RS, the Client uses the RS's public key either when verifying the signature of the response (if protected with the group mode), or when verifying the response as integrity-protected with pairwise keying material derived from the two peers' authentication credentials and asymmetric keys (if protected with the pairwise mode). In either case, the Client also authenticates the RS. Mutual authentication is only achieved after the client has successfully verified the protected response from the RS.</t>
      <t>Therefore, an attacker using a stolen Access Token cannot generate a valid Group OSCORE message as protected through the Client's private key, and thus cannot prove possession of the pop-key bound to the Access Token. Also, if a Client legitimately owns an Access Token but has not joined the OSCORE group, it cannot generate a valid Group OSCORE message, as it does not store the necessary keying material shared among the group members.</t>
      <t>Furthermore, a Client C1 is supposed to obtain a valid Access Token from the AS, as specifying its own authentication credential (and the public key included thereof) associated with the its own private key used in the OSCORE group, together with its own Sender ID in that OSCORE group (see <xref target="sec-c-as-token-endpoint"/>). This allows the RS receiving the Access Token to verify with the Group Manager of that OSCORE group whether such a Client indeed has that Sender ID and uses that authentication credential in the OSCORE group.</t>
      <t>As a consequence, a different Client C2, also member of the same OSCORE group, is not able to impersonate C1, by: i) getting a valid Access Token, specifying the Sender ID of C1 and a different (made-up) authentication credential; ii) successfully posting the Access Token to the RS; and then iii) attempting to communicate using Group OSCORE impersonating C1, while blaming C1 for the consequences.</t>
      <section anchor="sec-c-rs-authz">
        <name>C-to-RS POST to authz-info Endpoint</name>
        <t>The Client uploads the Access Token to the /authz-info endpoint of the RS, as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>.</t>
      </section>
      <section anchor="sec-rs-c-created">
        <name>RS-to-C: 2.01 (Created)</name>
        <t>The RS <bcp14>MUST</bcp14> verify the validity of the Access Token as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>, with the following additions.</t>
        <ul spacing="normal">
          <li>
            <t>The RS <bcp14>MUST</bcp14> check that the claims 'salt_input', 'context_id', and 'cnf' are included in the Access Token.</t>
          </li>
          <li>
            <t>The RS considers: the content of the 'context_id' claim as the GID of the OSCORE group; the content of the 'salt_input' claim as the Sender ID that the Client has in the group; and the inner confirmation value of the 'cnf' claim as the authentication credential that the Client uses in the group.  </t>
            <t>
The RS <bcp14>MUST</bcp14> check whether it already stores the authentication credential specified in the inner confirmation value of the 'cnf' claim as associated with the pair (GID, Sender ID) above.  </t>
            <t>
If this is not the case, the RS <bcp14>MUST</bcp14> request the Client's authentication credential to the Group Manager of the OSCORE group as described in <xref section="9.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, specifying the Client's Sender ID in the OSCORE group, i.e., the value of the 'salt_input' claim. Then, the RS performs the following actions.  </t>
            <ul spacing="normal">
              <li>
                <t>The RS <bcp14>MUST</bcp14> check whether the Client's authentication credential retrieved from the Group Manager matches the one retrieved from the inner confirmation value of the 'cnf' claim of the Access Token.</t>
              </li>
              <li>
                <t>The RS <bcp14>MUST</bcp14> check whether the Client's Sender ID provided by the Group Manager together with the Client's authentication credential matches the one retrieved from the 'salt_input' claim of the Access Token.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>If any of the checks above fails, the RS <bcp14>MUST</bcp14> consider the Access Token invalid, and <bcp14>MUST</bcp14> reply to the Client with an error response code equivalent to the CoAP code 4.00 (Bad Request).</t>
        <t>If the Access Token is valid and further checks on its content are successful, the RS associates the authorization information from the Access Token with the Group OSCORE Security Context.</t>
        <t>In particular, the RS associates the authorization information from the Access Token with the triple (GID, SaltInput, AuthCred), where GID is the Group Identifier of the OSCORE group, while SaltInput and AuthCred are the Sender ID and the authentication credential that the Client uses in that OSCORE group, respectively.</t>
        <t>The RS <bcp14>MUST</bcp14> keep this association up-to-date over time, as the triple (GID, SaltInput, AuthCred) associated with the Access Token might change. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>If the OSCORE group is rekeyed (see <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and <xref section="11" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the Group Identifier also changes in the group, and the new one replaces the current 'GID' value in the triple (GID, SaltInput, AuthCred).</t>
          </li>
          <li>
            <t>If the Client requests and obtains a new OSCORE Sender ID from the Group Manager (see <xref section="2.6.3.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/> and <xref section="9.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the new Sender ID replaces the current 'SaltInput' value in the triple (GID, SaltInput, AuthCred).</t>
          </li>
        </ul>
        <t>As defined in <xref target="sec-client-public-key-change"/>, a possible change of the Client's authentication credential requires the Client to upload to the RS a new Access Token bound to the new authentication credential.</t>
        <t>Finally, the RS <bcp14>MUST</bcp14> send a 2.01 (Created) response to the Client, as defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>.</t>
      </section>
      <section anchor="sec-client-rs-secure-communication">
        <name>Client-RS Secure Communication</name>
        <t>When previously joining the OSCORE group, both the Client and the RS have already established the related Group OSCORE Security Context to communicate as group members. Therefore, they can simply start to securely communicate using Group OSCORE, without deriving any additional keying material or security association.</t>
        <t>If the Client or the RS delete an Access Token (e.g., when the Access Token has expired or has been revoked), it <bcp14>MUST NOT</bcp14> delete the related Group OSCORE Security Context.</t>
        <section anchor="client-side">
          <name>Client Side</name>
          <t>After having received the 2.01 (Created) response from the RS, following the POST request to the /authz-info endpoint, the Client starts the communication with the RS, by sending a request protected with Group OSCORE using the Group OSCORE Security Context <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
          <t>When communicating with the RS to access the resources as specified by the authorization information, the Client <bcp14>MUST</bcp14> use the Group OSCORE Security Context of the pertinent OSCORE group, whose GID was specified in the 'context_id' parameter of the Access Token Request.</t>
        </section>
        <section anchor="resource-server-side">
          <name>Resource Server Side</name>
          <t>After successful validation of the Access Token as defined in <xref target="sec-rs-c-created"/> and after having sent the 2.01 (Created) response, the RS can start to communicate with the Client using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
          <t>When processing an incoming request protected with Group OSCORE, the RS <bcp14>MUST</bcp14> consider as valid Client's authentication credential only the one associated with the stored Access Token. As defined in <xref target="sec-client-public-key-change"/>, a possible change of the Client's authentication credential requires the Client to upload to the RS a new Access Token bound to the new authentication credential.</t>
          <t>For every incoming request, if Group OSCORE verification succeeds, the verification of access rights is performed as described in <xref target="sec-c-rs-access-rights"/>.</t>
          <t>If the RS receives a request protected with a Group OSCORE Security Context CTX, the target resource requires authorization, and the RS does not store a valid Access Token related to CTX, then the RS <bcp14>MUST</bcp14> reply with a 4.01 (Unauthorized) error response protected with CTX.</t>
        </section>
      </section>
      <section anchor="sec-rs-update-access-rights">
        <name>Update of Access Rights</name>
        <t>[</t>
        <t>TODO: Specify the processing on the RS when receiving an Access Token that dynamically updates the access rights of C. (See <xref target="sec-as-update-access-rights"/> for pre-requirements and a high-level direction)</t>
        <t>]</t>
      </section>
      <section anchor="sec-c-rs-access-rights">
        <name>Access Rights Verification</name>
        <t>The RS <bcp14>MUST</bcp14> follow the procedures defined in <xref section="5.10.2" sectionFormat="of" target="RFC9200"/>. If an RS receives a request protected with Group OSCORE from a Client, the RS processes the request according to <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>If the Group OSCORE verification succeeds and the target resource requires authorization, the RS retrieves the authorization information from the Access Token associated with the Group OSCORE Security Context. Then, the RS <bcp14>MUST</bcp14> verify that the action requested on the resource is authorized.</t>
        <t>If the RS has no valid Access Token for the Client, the RS <bcp14>MUST</bcp14> reject the request and <bcp14>MUST</bcp14> reply to the Client with a 4.01 (Unauthorized) error response.</t>
        <t>If the RS has an Access Token for the Client but no actions are authorized on the target resource, the RS <bcp14>MUST</bcp14> reject the request and <bcp14>MUST</bcp14> reply to the Client with a 4.03 (Forbidden) error response.</t>
        <t>If the RS has an Access Token for the Client but the requested action is not authorized, the RS <bcp14>MUST</bcp14> reject the request and <bcp14>MUST</bcp14> reply to the Client with a 4.05 (Method Not Allowed) error response.</t>
      </section>
      <section anchor="storing-multiple-access-tokens-per-pop-key">
        <name>Storing Multiple Access Tokens per PoP-Key</name>
        <t>According to <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>, an RS is recommended to store only one Access Token per proof-of-possession key (pop-key), and to supersede such an Access Token when receiving and successfully validating a new one bound to the same pop-key.</t>
        <t>However, when using the profile specified in this document, an RS might practically have to deviate from that recommendation and store multiple Access Tokens bound to the same pop-key, i.e., to the same public authentication credential of a Client.</t>
        <t>For example, this can occur in the following cases.</t>
        <ul spacing="normal">
          <li>
            <t>The RS is the single RS associated with an audience AUD1, and also belongs to a group-audience AUD2 (see <xref section="6.9" sectionFormat="of" target="RFC9200"/>).  </t>
            <t>
A Client C with public authentication credential AUTH_CRED_C can request two Access Tokens T1 and T2 from the AS, such that:  </t>
            <ul spacing="normal">
              <li>
                <t>T1 targets AUD1 and has scope SCOPE1;</t>
              </li>
              <li>
                <t>T2 targets AUD2 and has scope SCOPE2 different from SCOPE1.</t>
              </li>
            </ul>
            <t>
Both T1 and T2 are going to be bound to the same pop-key specified by AUTH_CRED_C.  </t>
            <t>
In fact, if the AS issues Access Tokens targeting a group-audience, then the above can possibly be the case when using any transport profile of ACE that supports asymmetric pop-keys. If so, the RS should be ready to store at minimum one Access Token per pop-key per audience it belongs to.</t>
          </li>
          <li>
            <t>The RS is a member of two OSCORE groups G1 and G2. In particular, both the same format of public authentication credentials is used in both OSCORE groups.  </t>
            <t>
A Client C with public authentication credential AUTH_CRED_C of such format, also member of the two OSCORE group G1 and G2, can conveniently use AUTH_CRED_C as its public authentication credential in both those groups. Therefore, C can request two Access Tokens T1 and T2 from the AS, such that:  </t>
            <ul spacing="normal">
              <li>
                <t>T1 targets RS and reflects the membership of C in G1, as per its claims "context_id" and "salt_input";</t>
              </li>
              <li>
                <t>T2 targets RS and reflects the membership of C in G2, as per its claims "context_id" and "salt_input".</t>
              </li>
            </ul>
            <t>
Both T1 and T2 are going to be bound to the same pop-key specified by AUTH_CRED_C.  </t>
            <t>
When using the profile specified in this document, the RS should be ready to store at minimum one Access Token per pop-key per OSCORE group it is a member of (although, per the previous point, even this can be limiting).</t>
          </li>
          <li>
            <t>The RS uses both the profile specified in this document and a different transport profile of ACE that also relies on asymmetric pop-keys, e.g., the EDHOC and OSCORE profile defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.  </t>
            <t>
In such a case, a Client C with public authentication credential AUTH_CRED_C can request two Access Tokens T1 and T2 from the AS, such that:  </t>
            <ul spacing="normal">
              <li>
                <t>T1 targets RS and is meant to be used according to the Group OSCORE profile defined in this document;</t>
              </li>
              <li>
                <t>T2 targets RS and is meant to be used according to the EDHOC and OSCORE profile defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.</t>
              </li>
            </ul>
            <t>
Both T1 and T2 are going to be bound to the same pop-key specified by AUTH_CRED_C.  </t>
            <t>
When using multiple transport profiles of ACE that rely on asymmetric pop-keys, it is reasonable that the RS is capable to store at minimum one Access Token per pop-key per used profile (although, per the previous points, even this can be limiting).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-client-public-key-change">
      <name>Change of Client's Authentication Credential in the Group</name>
      <t>During its membership in the OSCORE group, the Client might change the authentication credential that it uses in the group. When this happens, the Client uploads the new authentication credential to the Group Manager, as defined in <xref section="9.4" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
      <t>After that, and in order to continue communicating with the RS, the Client <bcp14>MUST</bcp14> perform the following actions.</t>
      <ol spacing="normal" type="1"><li>
          <t>The Client requests a new Access Token to the AS, as defined in <xref target="sec-c-as-comm"/>. In particular, when sending the Access Token Request as defined in <xref target="sec-c-as-token-endpoint"/>, the Client specifies:  </t>
          <ul spacing="normal">
            <li>
              <t>The current Group Identifier of the OSCORE group, as value of the 'context_id' parameter.</t>
            </li>
            <li>
              <t>The current Sender ID that it has in the OSCORE group, as value of the 'salt_input' parameter.</t>
            </li>
            <li>
              <t>The new authentication credential that it uses in the OSCORE group, as inner confirmation value of the 'req_cnf' parameter.</t>
            </li>
            <li>
              <t>The proof-of-possession (PoP) evidence corresponding to the public key of the new authentication credential, as value of the 'client_cred_verify' or 'client_cred_verify_mac' parameter.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>After receiving the Access Token Response from the AS (see <xref target="sec-as-c-token"/>), the Client performs the same exchanges with the RS as defined in <xref target="sec-c-rs-comm"/>.</t>
        </li>
      </ol>
      <t>When receiving the new Access Token, the RS performs the same steps defined in <xref target="sec-rs-c-created"/>, with the following addition in case the new Access Token is successfully verified and stored:</t>
      <ul spacing="normal">
        <li>
          <t>The RS also deletes the old Access Token, i.e., the one whose associated triple (GID, SaltInput, AuthCred) has the same GID and SaltInput values as in the triple that is associated with the new Access Token and that includes the new authentication credential of the Client.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-comm-as">
      <name>Secure Communication with the AS</name>
      <t>As specified in the ACE framework (see Sections <xref target="RFC9200" section="5.8" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9" sectionFormat="bare"/> of <xref target="RFC9200"/>), the requesting entity (Client and/or RS) and the AS communicate via the /token or /introspection endpoint. The use of CoAP and OSCORE <xref target="RFC8613"/> for this communication is <bcp14>RECOMMENDED</bcp14> in this profile. Other protocols fulfilling the security requirements defined in Sections <xref target="RFC9200" section="5" sectionFormat="bare"/> and <xref target="RFC9200" section="6" sectionFormat="bare"/> of <xref target="RFC9200"/> (such as HTTP and DTLS or TLS) <bcp14>MAY</bcp14> be used instead.</t>
      <t>If OSCORE <xref target="RFC8613"/> is used, the requesting entity and the AS are expected to have a pre-established Security Context in place. How this Security Context is established is out of the scope of this profile. Furthermore, the requesting entity and the AS communicate using OSCORE through the /token endpoint as specified in <xref section="5.8" sectionFormat="of" target="RFC9200"/>, and through the /introspection endpoint as specified in <xref section="5.9" sectionFormat="of" target="RFC9200"/>.</t>
    </section>
    <section anchor="sec-discard-context">
      <name>Discarding the Security Context</name>
      <t>As members of an OSCORE group, the Client and the RS may independently leave the group or be forced to, e.g., if compromised or suspected so. Upon leaving the OSCORE group, the Client or RS also discards the Group OSCORE Security Context, which may anyway be renewed by the Group Manager through a group rekeying process (see <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>The Client or RS can acquire a new Group OSCORE Security Context, by re-joining the OSCORE group, e.g., by using the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>. In such a case, the Client <bcp14>SHOULD</bcp14> request a new Access Token to be uploaded to the RS.</t>
    </section>
    <section anchor="sec-cbor-mappings">
      <name>CBOR Mappings</name>
      <t>The new parameters defined in this document <bcp14>MUST</bcp14> be mapped to CBOR types as specified in <xref target="_table-cbor-mappings-parameters"/>, using the given integer abbreviation for the map key.</t>
      <table align="center" anchor="_table-cbor-mappings-parameters">
        <name>CBOR Mappings for New Parameters.</name>
        <thead>
          <tr>
            <th align="left">Parameter name</th>
            <th align="left">CBOR Key</th>
            <th align="left">Value Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">context_id</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
          <tr>
            <td align="left">salt_input</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
          <tr>
            <td align="left">client_cred_verify</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
          <tr>
            <td align="left">client_cred_verify_mac</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
        </tbody>
      </table>
      <t>The new claims defined in this document <bcp14>MUST</bcp14> be mapped to CBOR types as specified in <xref target="_table-cbor-mappings-claims"/>, using the given integer abbreviation for the map key.</t>
      <table align="center" anchor="_table-cbor-mappings-claims">
        <name>CBOR Mappings for New Claims.</name>
        <thead>
          <tr>
            <th align="left">Claim name</th>
            <th align="left">CBOR Key</th>
            <th align="left">Value Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">context_id</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
          <tr>
            <td align="left">salt_input</td>
            <td align="left">TBD</td>
            <td align="left">bstr</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus, the general security considerations from the ACE framework also apply to this profile.</t>
      <t>The proof-of-possession (PoP) key bound to an Access Token is always an asymmetric key, i.e., the public key included in the authentication credential that the Client uses in the OSCORE group. This means that there is never a same shared secret used as PoP key with possible multiple RSs. Therefore, it is possible and safe for the AS to issue an Access Token for an audience that includes multiple RSs (i.e., a group-audience, see <xref section="6.9" sectionFormat="of" target="RFC9200"/>).</t>
      <t>In such a case, as per <xref section="6.1" sectionFormat="of" target="RFC9200"/>, the AS has to ensure the integrity protection of the Access Token by protecting it through an asymmetric signature. In addition, the used group-audience has to correctly identify all the RSs that are intended recipients of the Access Token, and for which the single scope specified in the Access Token applies. As a particular case, the audience can be the name of the OSCORE group, if the Access Token is intended for all the RSs in that group.</t>
      <t>Furthermore, this document inherits the general security considerations about Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>, as to the specific use of Group OSCORE according to this profile.</t>
      <t>Group OSCORE is designed to secure point-to-point as well as point-to-multipoint communications, providing a secure binding between a single request and multiple corresponding responses. In particular, Group OSCORE fulfills the same security requirements of OSCORE.</t>
      <t>Group OSCORE ensures source authentication of messages both in group mode (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) and in pairwise mode (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
      <t>When protecting an outgoing message in group mode, the sender uses its private key to compute a digital signature, which is embedded in the protected message. The group mode can be used to protect messages sent to multiple recipients (e.g., over IP multicast) or to a single recipient.</t>
      <t>When protecting an outgoing message in pairwise mode, the sender uses a pairwise symmetric key, as derived from the asymmetric keys of the two peers exchanging the message. The pairwise mode can be used to protect only messages intended for a single recipient.</t>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus the general privacy considerations from the ACE framework also apply to this profile.</t>
      <t>As this profile uses Group OSCORE, the privacy considerations from <xref target="I-D.ietf-core-oscore-groupcomm"/> apply to this document as well.</t>
      <t>An unprotected response to an unauthorized request may disclose information about the RS and/or its existing relationship with the Client. It is advisable to include as little information as possible in an unencrypted response. However, since both the Client and the RS share a Group OSCORE Security Context, unauthorized, yet protected requests are followed by protected responses, which can thus include more detailed information.</t>
      <t>Although it may be encrypted, the Access Token is sent in the clear to the /authz-info endpoint at the RS. Thus, if the Client uses the same single Access Token from multiple locations with multiple Resource Servers, it can risk being tracked through the Access Token's value.</t>
      <t>Note that, even though communications are protected with Group OSCORE, some information might still leak, due to the observable size, source address, and destination address of exchanged messages.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace "[RFC-XXXX]" with the RFC number of this document and delete this paragraph.</t>
      <section anchor="iana-ace-oauth-profile">
        <name>ACE Profiles Registry</name>
        <t>IANA is asked to add the following entry to the "ACE Profiles" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group, following the procedure specified in <xref section="8.8" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: coap_group_oscore</t>
          </li>
          <li>
            <t>Description: Profile to secure communications between constrained nodes using the Authentication and Authorization for Constrained Environments framework, by enabling authentication and fine-grained authorization of members of an OSCORE group that use a pre-established Group OSCORE Security Context to communicate with Group OSCORE.</t>
          </li>
          <li>
            <t>CBOR Value: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters" registry, following the procedure specified in <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: "context_id"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="context_id"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "salt_input"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="salt_input"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "client_cred_verify"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="client_cred_verify"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "client_cred_verify_mac"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="client_cred_verify_mac"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-cbor-mappings">
        <name>OAuth Parameters CBOR Mappings Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters CBOR Mappings" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group, following the procedure specified in <xref section="8.10" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: "context_id"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: bstr</t>
          </li>
          <li>
            <t>Reference: <xref target="context_id"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "salt_input"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: bstr</t>
          </li>
          <li>
            <t>Reference: <xref target="salt_input"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "client_cred_verify"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: bstr</t>
          </li>
          <li>
            <t>Reference: <xref target="client_cred_verify"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: "client_cred_verify_mac"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: bstr</t>
          </li>
          <li>
            <t>Reference: <xref target="client_cred_verify_mac"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-cwt-claims">
        <name>CBOR Web Token (CWT) Claims Registry</name>
        <t>IANA is asked to add the following entries to the "CBOR Web Token (CWT) Claims" registry, following the procedure specified in <xref section="9.1" sectionFormat="of" target="RFC8392"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: "context_id"</t>
          </li>
          <li>
            <t>Claim Description: Client provided Context ID</t>
          </li>
          <li>
            <t>JWT Claim Name: "N/A"</t>
          </li>
          <li>
            <t>Claim Key: TBD</t>
          </li>
          <li>
            <t>Claim Value Type: bstr</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="context_id_claim"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: "salt_input"</t>
          </li>
          <li>
            <t>Claim Description: Client provided salt input</t>
          </li>
          <li>
            <t>JWT Claim Name: "N/A"</t>
          </li>
          <li>
            <t>Claim Key: TBD</t>
          </li>
          <li>
            <t>Claim Value Type: bstr</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="salt_input_claim"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-tls-exporter-label">
        <name>TLS Exporter Label Registry</name>
        <t>IANA is asked to add the following entry to the "TLS Exporter Label" registry within the "Transport Layer Security (TLS) Parameters" registry group, following the procedure specified in <xref section="6" sectionFormat="of" target="RFC5705"/> and updated in <xref section="12" sectionFormat="of" target="RFC8447"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Value: EXPORTER-ACE-PoP-Input-Client-AS</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Recommended: N</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-c-as-token-endpoint"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang" initials="C." surname="Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="24" month="April" year="2024"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces and obsoletes RFC 7390, while it updates RFC 7252
   and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of CoAP messages exchanged between members of a group, e.g.,
   sent over IP multicast.  In particular, the described protocol
   defines how OSCORE is used in a group communication setting to
   provide source authentication for CoAP group requests, sent by a
   client to multiple servers, and for protection of the corresponding
   CoAP responses.  Group OSCORE also defines a pairwise mode where each
   member of the group can efficiently derive a symmetric pairwise key
   with any other member of the group for pairwise OSCORE communication.
   Group OSCORE can be used between endpoints communicating with CoAP or
   CoAP-mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-21"/>
        </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="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </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="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </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="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="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </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="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="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="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="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9201">
          <front>
            <title>Additional OAuth Parameters for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for Authentication and Authorization for Constrained Environments (ACE). These are used to express the proof-of-possession (PoP) key the client wishes to use, the PoP key that the authorization server has selected, and the PoP key the resource server uses to authenticate to the client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9201"/>
          <seriesInfo name="DOI" value="10.17487/RFC9201"/>
        </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="NIST-800-56A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography - NIST Special Publication 800-56A, Revision 3</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.tiloca-core-oscore-discovery">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices may
   not know the exact security groups to join, the respective Group
   Manager, or other information required to perform the joining
   process.  This document describes how a CoAP endpoint can use
   descriptions and links of resources registered at the CoRE Resource
   Directory to discover security groups and to acquire information for
   joining them through the respective Group Manager.  A given security
   group may protect multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the ACE framework for
   Authentication and Authorization in constrained environments.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-edhoc-oscore-profile-04"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Alternative Workflow and OAuth Parameters for 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="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document updates the Authentication and Authorization for
   Constrained Environments Framework (ACE, RFC 9200) as follows.
   First, it defines a new, alternative workflow that the Authorization
   Server can use for uploading an access token to a Resource Server on
   behalf of the Client.  Second, it defines new parameters and
   encodings for the OAuth 2.0 token endpoint at the Authorization
   Server.  Third, it defines a method for the ACE framework to enforce
   bidirectional access control by means of a single access token.
   Fourth, it amends two of the requirements on profiles of the
   framework.  Finally, it deprecates the original payload format of
   error responses that convey an error code, when CBOR is used to
   encode message payloads.  For such error responses, it defines a new
   payload format aligned with RFC 9290, thus updating in this respect
   also the profiles of ACE defined in RFC 9202, RFC 9203, and RFC 9431.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-02"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="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="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="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="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="NIST-800-207" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-207.pdf">
          <front>
            <title>Zero Trust Architecture - NIST Special Publication 800-207</title>
            <author initials="S." surname="Rose" fullname="Scott Rose">
              <organization/>
            </author>
            <author initials="O." surname="Borchert" fullname="Oliver Borchert">
              <organization/>
            </author>
            <author initials="S." surname="Mitchell" fullname="Stu Mitchell">
              <organization/>
            </author>
            <author initials="S." surname="Connelly" fullname="Sean Connelly">
              <organization/>
            </author>
            <date year="2020" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="profile-requirements">
      <name>Profile Requirements</name>
      <t>This appendix lists the specifications of this profile based on the requirements of the ACE framework, as requested in <xref section="C" sectionFormat="of" target="RFC9200"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Optionally, define new methods for the Client to discover the necessary permissions and AS for accessing a resource, different from the one proposed in <xref target="RFC9200"/>: Not specified.</t>
        </li>
        <li>
          <t>Optionally, specify new grant types: Not specified.</t>
        </li>
        <li>
          <t>Optionally, define the use of client certificates as client credential type: Not specified.</t>
        </li>
        <li>
          <t>Specify the communication protocol the Client and RS must use: CoAP.</t>
        </li>
        <li>
          <t>Specify the security protocol the Client and RS must use to protect their communication: Group OSCORE, by using a pre-established Group OSCORE Security Context.</t>
        </li>
        <li>
          <t>Specify how the Client and the RS mutually authenticate: Explicitly, by possession of a common Group OSCORE Security Context, and by either: usage of digital signatures embedded in messages, if protected with the group mode of Group OSCORE; or protection of messages with the pairwise mode of Group OSCORE, by using pairwise symmetric keys derived from the asymmetric keys of the two peers exchanging the message. Note that mutual authentication is not completed before the Client has verified a Group OSCORE response using the corresponding Group OSCORE Security Context.</t>
        </li>
        <li>
          <t>Specify the proof-of-possession protocol(s) and how to select one, if several are available. Also specify which key types (e.g., symmetric/asymmetric) are supported by a specific proof-of- possession protocol: Group OSCORE algorithms; asymmetric keys verified and distributed by a Group Manager.</t>
        </li>
        <li>
          <t>Specify a unique ace_profile identifier: coap_group_oscore.</t>
        </li>
        <li>
          <t>If introspection is supported, specify the communication and security protocol for introspection: HTTP/CoAP (+ TLS/DTLS/OSCORE).</t>
        </li>
        <li>
          <t>Specify the communication and security protocol for interactions between the client and AS: HTTP/CoAP (+ TLS/DTLS/OSCORE).</t>
        </li>
        <li>
          <t>Specify if/how the authz-info endpoint is protected, including how error responses are protected: Not protected.</t>
        </li>
        <li>
          <t>Optionally, define other methods of token transport than the authz-info endpoint: Not defined.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-cddl-model" removeInRFC="true">
      <name>CDDL Model</name>
      <figure anchor="fig-cddl-model">
        <name>CDDL model</name>
        <artwork type="CDDL" align="left"><![CDATA[
; ACE Profiles
coap_group_oscore = 5

; OAuth Parameters CBOR Mappings
context_id_param = 71
salt_input_param = 72
client_cred_verify = 73
client_cred_verify_mac = 74

; CBOR Web Token (CWT) Claims
context_id_claim = 51
salt_input_claim = 52

; CWT Confirmation Methods
kccs = 14
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>CBOR diagnostic notation uses placeholders from a CDDL model.</t>
          </li>
          <li>
            <t>Renamed the claim 'contextId_input' to 'context_id'.</t>
          </li>
          <li>
            <t>Revised examples.</t>
          </li>
          <li>
            <t>Placeholders and early direction for dynamic update of access rights.</t>
          </li>
          <li>
            <t>Added text on storing multiple Access Tokens per PoP-Key on the RS.</t>
          </li>
          <li>
            <t>Fixes in the IANA considerations.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Deleting an Access Token does not delete the Group OSCORE Security Context.</t>
          </li>
          <li>
            <t>Distinct computation of the PoP input when C and the AS use (D)TLS 1.2 or 1.3.</t>
          </li>
          <li>
            <t>Revised computation of the PoP input when C and the AS use OSCORE.</t>
          </li>
          <li>
            <t>Revised computation of the PoP evidence when the OSCORE group is a pairwise-only group.</t>
          </li>
          <li>
            <t>Clarified requirements on the AS for verifying the PoP evidence.</t>
          </li>
          <li>
            <t>Renamed the TLS Exporter Label for computing the PoP input.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t><contact fullname="Ludwig Seitz"/> contributed as a co-author of initial versions of this document.</t>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Benjamin Kaduk"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Dave Robin"/>, <contact fullname="Jim Schaad"/>, and <contact fullname="Göran Selander"/> for their comments and feedback.</t>
      <t>The work on this document has been partly supported by the Sweden's Innovation Agency VINNOVA and the Celtic-Next projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
uiv4OTsaDkFAPTtHAfXl2RAF1AEIqGcHe8PD7qBOQB0MXx72z4fDM5BMh0ev
Bv2j4ck5S6YvX5739ir7aYa43k91bd+4n1cnB+e9s/2XIPoO+sPhcffVq1fH
R2fH5/29V/3+4FXNKy9B5oXtHpyDzHvGMu/50clg7+X+Ocm8mwq1WnxcLd0G
3EOKhLhzeYOjczHI7QPFzFLVP1aKryhsNrAit2rDaptie8WQT7bhav+Yxthe
sqvbsb1kQJYAXxbpHh/Gu8OVO7UsaRRoUvV1cKVkWLELUFX6dIpxrg60EjEc
v8+bopDRJiTl0ObZXKKvLI+pKYZg+ZUFUgIlitNxYKTc+uKwmCWfYvE/lHmY
FjSOTFCowo6TrCMlTcW5E6fo5SCZd7xMZqqxEpaFiBd+fwXHtYANz6ZwNG3Y
f5tMZ7DRU7RxbvNxY/2DuNgO2rUtJ+6dc8E6CSolVAqAoa8rjpbUvstGo0K5
HsQOYjUjwnSoYGfYCgYfznThi6FOV1ABFVgxUOwuK/IeCru+Hb7iLEJpTDCT
Gr+m1qMV614zBhmEOTXqIwPrYzJBeNVXzmttdALaFVyIlUiqUOurIcHIU2WM
Qhd/fI9no7ul2XExma7+tyJY4oU2o8WfsdrpTey1HOSDkkoObv3HgpRLivi0
uuGofnC6UULOsdWlhVrKLoyFqWa6t9IMi63SsTHucpZBy9Nq2XBc6vY3CKis
cjyD0qEvbHnmkuN4f/jybHRZTdwnXZFzLJbs1Sj3dudatXm9FWSpFCxx4UVY
ZI9pwnccJ3qMtQQxmJ1Qkrp34CXTZYfIVLB6udqL6yzbnHMVz1e52/2yz99r
l9YFtbubbcy5MPpJOlt4B27an5ly5KZZnKxPfBWqU9bQLRVdsxDlhCCnAa7q
lOuqXJQbw/2xwHQr11YSdiQ+iorxdfRiiKF9BI720a0BaeJuto1FF5a0bUy3
21z7crsau7ONrvCazzGmZ9sJCdQiSO2SG05z0iCHWLWXvCvwJPeTcGAFxOvd
QFIleGuL0Jh70ajr6m9Y99LQQWROBGHj0snoptYrzjWsEjQJstmkBqRS/xN5
+nIBZxxPDJfGNWVpTHIVBTvwbZRI/Fo4dBpSsUi4raRhidu1JhmL97c2oUew
WAHR6+rTkC/VWp8wpfouNtSndos/eR7zljYth3XlquqyrGzoVJz1NXlWTw6d
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
/uFBH8SR/x9sXM2urDwBAA==

-->

</rfc>
