<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-group-oscore-profile-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-06"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40 Kista</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>164 40 Kista</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>164 40 Kista</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 123?>

<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 and proof of possession of the client's private 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>
    <?line 127?>

<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 at multiple resource servers at once, e.g., over IP multicast. Typical examples include switching of luminaires, control of actuators, 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 could be acceptable 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 also be implicitly authorized to perform any action at any resource hosted at any server in the group. An example of an application where such implicit authorization might serve well is a simple lighting scenario, where the lightbulbs are the servers and 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 the status of any light.</t>
      <t>However, in different instances of such applications, the approach above is not desirable, as different group members are intended to have different access rights to resources hosted at 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 in the group, 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 levels 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 that are 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 meant 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", in order 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 evicting 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 then upload it to the intended resource server(s) in the group, before accessing the target resources hosted at such resource server(s).</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, according to which 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 of 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 authorization and access rights 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 of the client's private 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>Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> specifies how to use CBOR Object Signing and Encryption (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>
        <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts related to Concise Binary Object Representation (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 a comprehensive set of information related to the public key algorithm, including, e.g., the elliptic curve used (when applicable).</t>
          </li>
        </ul>
        <t>Readers are also 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. The CoAP definition, which is "[a]n entity participating in the CoAP protocol" <xref target="RFC7252"/>, is not used in this document.</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="8" 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 parameters' keys 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"/> when communications between a client and one or more resource servers are secured 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. 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="384" y="420">+</text>
                <text x="420" y="420">Access</text>
                <text x="496" 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="252" y="612">/proof</text>
                <text x="292" y="612">of</text>
                <text x="352" y="612">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="28" y="692">/proof</text>
                <text x="68" y="692">of</text>
                <text x="128" y="692">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="28" y="836">/proof</text>
                <text x="68" y="836">of</text>
                <text x="128" y="836">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>Requesting an Access Token</name>
        <t>This profile requires that the client requests 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 authorization servers, even if the RSs are members of the same OSCORE group. However, assuming proper configurations and trust relationships, 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, as well as its own Sender ID and authentication credential used in that group. The AS <bcp14>MUST</bcp14> include these pieces of information in the access token issued for the client.</t>
        <t>In the access token request, the client can also include a proof-of-possession (PoP) evidence to prove possession of the private key corresponding to its own authentication credential to the AS. The PoP evidence is computed over a PoP input uniquely related to the secure communication association between the client and the AS. Including the PoP evidence is <bcp14>OPTIONAL</bcp14> under particular circumstances and is <bcp14>REQUIRED</bcp14> otherwise (see <xref target="sec-c-as-token-endpoint"/>).</t>
        <t>If the request from the client is granted, then the AS can include the issued access token in the access token response to the client, or instead upload the access token directly to the RS as per the Short Distribution Chain (SDC) workflow defined in <xref target="I-D.ietf-ace-workflow-and-params"/>. This document focuses on the former option (also shown in the example in <xref target="fig-protocol-overview"/>), while the latter option is not detailed further here.</t>
        <t>The access token request and response exchanged between the client and the AS <bcp14>MUST</bcp14> be confidentiality-protected and <bcp14>MUST</bcp14> 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 that 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 obtained 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>Editor's note: the above will have to be updated, once defined the dynamic update of access rights (<xref target="sec-as-update-access-rights"/> and <xref target="sec-rs-update-access-rights"/>), in which case the access token is intended to be uploaded by means of a protected request to the authz-info endpoint.</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 that is specified in the access token (see <xref section="2.1.3" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). 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>After that, 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 (see <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). 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 CoAP 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 <xref target="RFC7252"/>, or a one-to-many group request (e.g., over IP multicast) <xref target="I-D.ietf-core-groupcomm-bis"/> targeting the OSCORE group where the RS is also a member.</t>
        <t>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"/>), unless it has a more recent Security Context that has been established in the group as a result of a group rekeying (see <xref section="12.2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
        <t>The RS may send a response back to the client, also protecting it with Group OSCORE.</t>
      </section>
    </section>
    <section anchor="sec-c-as-comm">
      <name>Client-AS Communication</name>
      <t>This section details the access token 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 (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-comm-preliminary-ops">
        <name>Preliminary Operations</name>
        <t>The following considers a client that is a member of an OSCORE group G with GID* as current Group Identifier (Gid), within which the client currently has SID* as Sender ID and uses a public authentication credential AUTH_CRED_C that specifies the PoP key K.</t>
        <t>The client <bcp14>MUST</bcp14> perform the following steps, before requesting an access token to be bound to AUTH_CRED_C (hence to the PoP key K) and to be associated with the client's membership in group G through the values GID* and SID*.</t>
        <ol spacing="normal" type="1"><li>
            <t>The client checks whether it is a member of any two OSCORE groups G1 and G2 such that all the following conditions hold.  </t>
            <ul spacing="normal">
              <li>
                <t>Both groups have GID* as current Gid.</t>
              </li>
              <li>
                <t>The client uses SID* as Sender ID in both groups.</t>
              </li>
              <li>
                <t>The client uses the same AUTH_CRED_C in both groups.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If such two groups G1 and G2 are found at Step 1, then the client moves to Step 3. Otherwise, the client terminates this algorithm and proceeds with requesting the access token as defined in <xref target="sec-c-as-token-endpoint"/>.</t>
          </li>
          <li>
            <t>The client can choose to terminate this algorithm and perform it again later on.  </t>
            <t>
Alternatively, the client can alter its current group memberships, in order to ensure that two groups like G1 and G2 cannot be determined. To this end, the client has two available options.  </t>
            <ul spacing="normal">
              <li>
                <t>The client leaves some of the OSCORE groups that could be determined as groups like G1 and G2 (see <xref section="9.11" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).</t>
              </li>
              <li>
                <t>The client obtains a new Sender ID in some of the OSCORE groups that could be determined as groups like G1 and G2. To this end, the client can request a new Sender ID in a group to the Group Manager responsible for that group (see <xref section="9.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), or re-join a group thereby obtaining a new Sender ID in that group (see <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).</t>
              </li>
            </ul>
            <t>
Finally, the client moves to Step 1.</t>
          </li>
        </ol>
      </section>
      <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 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 AUTH_CRED_C 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 a comprehensive set of information related to the public key algorithm, including, e.g., the elliptic curve used (when applicable).  </t>
            <t>
Note that C might have previously uploaded AUTH_CRED_C to the Group Manager as provided within a chain or a bag (e.g., as the end-entity certificate in a chain of certificates), by specifying it in the 'client_cred' parameter of a Join Request or of an Authentication Credential Update Request sent to the Group Manager (see Sections <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="6.1" sectionFormat="bare"/> and <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="9.4" sectionFormat="bare"/> of <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>). In such a case, the inner confirmation value of the 'req_cnf' parameter <bcp14>MUST</bcp14> specify AUTH_CRED_C as provided within the same chain or bag.  </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>Furthermore, the payload of the request can include exactly one of the two following parameters, specifying a proof-of-possession (PoP) evidence computed by the client.</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 later in this section. This parameter <bcp14>MUST NOT</bcp14> be included if the OSCORE group is 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 later in this section. This parameter <bcp14>MUST NOT</bcp14> be included if the OSCORE group is not a pairwise-only group.</t>
          </li>
        </ul>
        <t>The PoP evidence can be used by the AS to achieve proof of possession of the client's private key, i.e., to verify that the client indeed owns the private key associated with the public key within AUTH_CRED_C.</t>
        <t>When preparing the POST request, the client might know that the AS has previously achieved proof of possession of the private key in question. In such a case, it is <bcp14>OPTIONAL</bcp14> for the client to compute the PoP evidence and to specify it in the 'client_cred_verify' or 'client_cred_verify_mac' parameter of the POST request.</t>
        <t>If the client believes that the AS has not previously achieved proof of possession of the private key in question or that such proof was achieved but does not hold anymore, then the client <bcp14>MUST</bcp14> compute the PoP evidence as defined below and <bcp14>MUST</bcp14> specify it in the 'client_cred_verify' or 'client_cred_verify_mac' parameter of the POST request.</t>
        <t>In order to compute the PoP evidence, 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" registered 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" registered 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 representation 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 representation 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>It is up to applications or future specifications to define what is used as PoP input in further alternative settings.</t>
        <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 that 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>An example of the POST 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: 19 (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 access token request to the token endpoint and that the client is authorized to obtain an access token aligned with the request, the AS proceeds as defined below.</t>
        <t>In the following, an authentication credential is denoted as "confirmed" if and only if the AS has achieved proof of possession of the private key associated with the public key of that authentication credential and such proof still holds. Otherwise, an authentication credential is denoted as "non confirmed".</t>
        <t>If the access token request specifies neither the 'client_cred_verify' parameter nor the 'client_cred_verify_mac' parameter, then the AS performs the following steps.</t>
        <ul spacing="normal">
          <li>
            <t>The AS considers the authentication credential AUTH_CRED_C specified in the 'req_cnf' parameter of the access token request.</t>
          </li>
          <li>
            <t>If the AS currently knows AUTH_CRED_C as "confirmed", then the AS considers proof of possession of the client's private key to be achieved and it takes no further actions in this respect.  </t>
            <t>
The AS might already have achieved proof of possession when establishing a secure communication association with the client, or when processing a previous access token request conveying the same AUTH_CRED_C.  </t>
            <t>
Alternatively, a further entity in a trust relationship with the AS might have already achieved proof of possession of the private key and informed the AS about that. Building on that trust relationship, the AS considered AUTH_CRED_C to be "confirmed" from then on.</t>
          </li>
          <li>
            <t>If the AS does not currently know AUTH_CRED_C as "confirmed", then the AS <bcp14>MUST</bcp14> consider the access token request to be invalid.</t>
          </li>
        </ul>
        <t>If both the 'client_cred_verify' and 'client_cred_verify_mac' parameters are present, then the AS <bcp14>MUST</bcp14> consider the access token request to be invalid.</t>
        <t>If the access token request specifies either the 'client_cred_verify' parameter or the 'client_cred_verify_mac' parameter, then the AS <bcp14>MUST</bcp14> verify the proof-of-possession (PoP) evidence specified therein. In particular, the AS proceeds as follows.</t>
        <ul spacing="normal">
          <li>
            <t>As PoP input, the AS uses the same value that the client used (see <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 AUTH_CRED_C that is specified in the 'req_cnf' parameter of the access token request.  </t>
            <t>
This requires the AS to support the format of AUTH_CRED_C, i.e., the format of authentication credential that is used in the OSCORE group where the client uses that authentication credential.  </t>
            <t>
Practically, this is not an issue, since the same format is used by RSs in that group and 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 AUTH_CRED_C that is specified in the 'req_cnf' parameter of the access token request.  </t>
            <t>
Practically, this is not an issue, since the same algorithm and curve (when applicable) are used by RSs in that group and 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 request (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 AUTH_CRED_C that is specified in the 'req_cnf' parameter of the access token request.  </t>
            <t>
Practically, this is not an issue, since the same ECDH algorithm is used by RSs in that group and 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 the verification of the PoP evidence succeeds, then the AS considers AUTH_CRED_C to be "confirmed" from then on.</t>
        <t>Instead, if the verification of the PoP evidence fails, then the AS <bcp14>MUST</bcp14> consider the access token request to be invalid. Also, the AS <bcp14>MUST</bcp14> consider AUTH_CRED_C to be "non confirmed" from then on, until the AS again achieves proof of possession of the client's private key.</t>
        <t>If the access token request was invalid or not authorized, then the AS <bcp14>MUST</bcp14> reply to the client with an error response as described in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
        <t>Instead, if all verifications are successful, the AS replies to the client 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>
          <li>
            <t>According to this document, the AS includes the 'access_token' parameter specifying the issued access token in the access token response. The alternative Short Distribution Chain (SDC) workflow where the access token is uploaded by the AS directly to the RS is described in <xref target="I-D.ietf-ace-workflow-and-params"/>.</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, as specified in the 'req_cnf' parameter of the access token request (see <xref target="sec-c-as-token-endpoint"/>).  </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"/>.</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: 19 (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. The following text outlines 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" - This new parameter is defined in <xref target="I-D.ietf-ace-workflow-and-params"/>, as intended 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. A new, corresponding claim to include in access tokens is also defined in <xref target="I-D.ietf-ace-workflow-and-params"/>.</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 updates 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 claim 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 claim 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="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) or with the pairwise mode (see <xref section="8" 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 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 uploading the access token to the RS; and then iii) attempting to communicate using Group OSCORE and impersonating C1, while also blaming C1 for the consequences of the interaction with the RS.</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 checks that the claims 'context_id', 'salt_input', and 'cnf' are included in the access token.  </t>
            <t>
If any of these claims are missing or malformed, the RS <bcp14>MUST</bcp14> consider the access token invalid and <bcp14>MUST</bcp14> reply to the client with a 4.00 (Bad Request) error response.  </t>
            <t>
Otherwise, the RS retrieves from the access token:  </t>
            <ul spacing="normal">
              <li>
                <t>GID* as the Gid of the OSCORE group, which is specified in the 'context_id' claim.</t>
              </li>
              <li>
                <t>SID* as the Sender ID that the client has in the OSCORE group, which is specified in the 'salt_input' claim.</t>
              </li>
              <li>
                <t>AUTH_CRED_C* as the authentication credential that the client uses in the OSCORE group, which is specified in the inner confirmation value of the 'cnf' claim.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The RS builds GROUPS as the set of OSCORE groups such that all the following conditions hold, for each group G in the set.  </t>
            <ul spacing="normal">
              <li>
                <t>The RS is a member of the group G.</t>
              </li>
              <li>
                <t>The group G has GID* as current Gid.</t>
              </li>
              <li>
                <t>The audience targeted by the access token is consistent with using the group G for accessing protected resources hosted by the RS.</t>
              </li>
            </ul>
            <t>
If no such group is found, the RS <bcp14>MUST</bcp14> consider the access token invalid and <bcp14>MUST</bcp14> reply to the client with a 4.00 (Bad Request) error response.  </t>
            <t>
Otherwise, for each of the N &gt;= 1 groups G in the set GROUPS, the RS <bcp14>MUST</bcp14> request to the corresponding Group Manager the authentication credential that the client uses in G, specifying SID* in the request sent to the Group Manager (see <xref section="9.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).  </t>
            <t>
When receiving a successful response from each of the Group Managers, the RS <bcp14>MUST</bcp14> check whether the client's authentication credential AUTH_CRED_C retrieved from the Group Manager is equal to AUTH_CRED_C* retrieved from the access token. In case AUTH_CRED_C* is provided within a chain or a bag, but AUTH_CRED_C is not provided within the same chain or bag, then the RS <bcp14>MUST NOT</bcp14> determine AUTH_CRED_C* and AUTH_CRED_C to be equal.  </t>
            <t>
If any of the following conditions hold, the RS <bcp14>MUST</bcp14> consider the access token invalid and <bcp14>MUST</bcp14> reply to the client with a 5.03 (Service Unavailable) error response.  </t>
            <ul spacing="normal">
              <li>
                <t>None or more than one of the Group Managers provide the RS with a successful response where the conveyed AUTH_CRED_C is equal to AUTH_CRED_C*.</t>
              </li>
              <li>
                <t>After having performed a maximum, pre-configured number of attempts or after a maximum, pre-configured amount of time has elapsed, less than N Group Managers have sent a successful response to the RS.</t>
              </li>
            </ul>
            <t>
The process above is successful if and only if the RS receives a successful response from all the N Group Managers, and exactly one of such responses conveys AUTH_CRED_C equal to AUTH_CRED_C*. This ensures that there is only one OSCORE group G* such that: the client and the RS are both its members; it has GID* as current Gid; and the client uses SID* as Sender ID in the group. In turn, this will ensure that the RS can bound the access token to such single OSCORE group G*.</t>
          </li>
        </ul>
        <t>If the operations above are successful, the access token is valid, and further checks on its content are successful, then the RS associates the authorization information from the access token with the Group OSCORE Security Context of the OSCORE group G*.</t>
        <t>In particular, the RS associates the authorization information from the access token with the quartet (GID, SaltInput, AuthCred, AuthCredGM), where:</t>
        <ul spacing="normal">
          <li>
            <t>Gid is the Group Identifier of G* (i.e.,  GID*).</t>
          </li>
          <li>
            <t>SaltInput is the Sender ID that the client uses in G* (i.e., SID*).</t>
          </li>
          <li>
            <t>AuthCred is the authentication credential that the client uses in G* (i.e., AUTH_CRED_C*).</t>
          </li>
          <li>
            <t>AuthCredGM is the authentication credential of the Group Manager responsible for G* (see <xref section="2.1.6" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
        </ul>
        <t>The RS <bcp14>MUST</bcp14> keep this association up-to-date over time, as the quartet (GID, SaltInput, AuthCred, AuthCredGM) associated with the access token might change. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>If the OSCORE group is rekeyed (see <xref section="12.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 quartet (Gid, SaltInput, AuthCred, AuthCredGM).</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 quartet (GID, SaltInput, AuthCred, AuthCredGM).  </t>
            <t>
Among the quartets corresponding to access tokens that are associated with a given Group OSCORE Security Context, the RS can always identify the correct quartet to update. For example, the RS can leverage the triple (GID, AuthCred, AuthCredGM) that played a role in the successful decryption and verification of a request protected with Group OSCORE and sent by the client with the newly obtained Sender ID.</t>
          </li>
          <li>
            <t>If the Group Manager of the OSCORE group changes its authentication credential, the new authentication credential of the Group Manager replaces the current 'AuthCredGM' value in the quartet (Gid, SaltInput, AuthCred, AuthCredGM).  </t>
            <t>
In order to obtain the latest authentication credential of the Group Manager, the RS can re-join the group (see <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>) or send a dedicated request to the Group Manager (see <xref section="9.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).</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 securely 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 either of the client or the RS deletes 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. The client <bcp14>MAY</bcp14> request a new access token from the AS, to be uploaded to the RS for re-enabling access to protected resources for the client.</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 can start communicating with the RS, by sending a request protected with Group OSCORE <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 the client's valid 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.</t>
        <t>In particular, the RS retrieves the access token associated with the quartet (Gid, SaltInput, AuthCred, AuthCredGM), where:</t>
        <ul spacing="normal">
          <li>
            <t>Gid is the Group Identifier of the OSCORE group, which is specified in the 'kid context' parameter of the CoAP OSCORE option in the received request. The RS maintains Gid in its Common Context within the Group OSCORE Security Context associated with the OSCORE group (see <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
          <li>
            <t>SaltInput is the Sender ID that the client has in the OSCORE group, which is specified in the 'kid' parameter of the CoAP OSCORE option in the received request. The RS maintains SaltInput in its Recipient Context associated with the client, within the Group OSCORE Security Context associated with the OSCORE group (see <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
          <li>
            <t>AuthCred is the authentication credential that the client uses in the OSCORE group. The RS maintains AuthCred in its Recipient Context associated with the client, within the Group OSCORE Security Context associated with the OSCORE group (see <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
          <li>
            <t>AuthCredGM is the authentication credential of the Group Manager responsible for the OSCORE group. The RS maintains AuthCredGM in its Common Context within the Group OSCORE Security Context associated with the OSCORE group (see <xref section="2" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
          </li>
        </ul>
        <t>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="sec-multiple-pop-keys">
        <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 (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; and</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, 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 groups 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"; and</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 still 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; and</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 still be limiting).</t>
          </li>
        </ul>
        <t>In order to keep the same spirit of the recommendation in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/> without impeding cases such as those outlined in the examples above, the following defines more fine-grained recommendations for the storage of access tokens at an RS when this profile is used.</t>
        <ul spacing="normal">
          <li>
            <t>As to access tokens issued in accordance with this profile (i.e., specifying the profile "coap_group_oscore"), it is <bcp14>RECOMMENDED</bcp14> that an RS stores only one access token that:  </t>
            <ul spacing="normal">
              <li>
                <t>is bound to a specific PoP key;</t>
              </li>
              <li>
                <t>targets a specific audience; and</t>
              </li>
              <li>
                <t>is related to a specific OSCORE group.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>As to access tokens issued in accordance with a different profile P that an RS may use in parallel with the profile defined in this document, it is <bcp14>RECOMMENDED</bcp14> that an RS stores only one access token that:  </t>
            <ul spacing="normal">
              <li>
                <t>is issued in accordance with the profile P;</t>
              </li>
              <li>
                <t>is bound to a specific PoP key;</t>
              </li>
              <li>
                <t>targets a specific audience; and</t>
              </li>
              <li>
                <t>is related to a specific secure association used by the client to protect communications with the RS.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>In accordance with these recommendations, if an access token T_NEW does not differ in any of the respects above from an existing access token T_OLD stored at the RS, then T_NEW ought to supersede T_OLD by replacing the corresponding authorization information.</t>
        <t>Not complying with these recommendations can additionally complicate (constrained) implementations of RSs, with respect to required storage and the validation of a protected request against the applicable, stored access tokens associated with the same client. That is, it increases the strain on an RS in determining the actual permissions of a client, e.g., if access tokens contradict each other and thus might lead the RS to enforce wrong permissions. Moreover, if one of the access tokens expires earlier than others, the resulting permissions may offer insufficient protection.</t>
      </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, 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 T_NEW 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 the value of the 'context_id' parameter.</t>
            </li>
            <li>
              <t>The current Sender ID that it has in the OSCORE group, as the value of the 'salt_input' parameter.</t>
            </li>
            <li>
              <t>The new authentication credential that it uses in the OSCORE group, as the inner confirmation value of the 'req_cnf' parameter.</t>
            </li>
            <li>
              <t>Optionally, the proof-of-possession (PoP) evidence corresponding to the public key of the new authentication credential, as the value of the 'client_cred_verify' or 'client_cred_verify_mac' parameter.      </t>
              <t>
The possible omission of the PoP evidence is based on the same criteria that are defined in <xref target="sec-c-as-token-endpoint"/>.</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 with the RS the same exchanges that are defined in <xref target="sec-c-rs-comm"/>.</t>
        </li>
      </ol>
      <t>When receiving the new access token T_NEW, 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 deletes any stored access token T_OLD such that the associated quartet (Gid, SaltInput, AuthCred, AuthCredGM) differs from the same quartet associated with T_NEW only as to the value of AuthCred.</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 introspect 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 introspect 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 to be 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="12.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-multiple-profiles">
      <name>Guidelines on Using Multiple Profiles</name>
      <t>When using the profile defined in this document, access tokens are to be bound to a Group OSCORE Security Context, which is used to protect communications between the client and the RS(s) in the targeted audience by using the security protocol Group OSCORE.</t>
      <t>After having obtained an access token T1 for this profile and uploaded it to the RS (RSs) pertaining to the targeted audience, the client might want to establish a separate, pairwise OSCORE association with that RS (with one RS among those RSs). In order to do that, the client can ask the AS for a different access token T2 intended for that RS (for one RS among those RSs), as per the OSCORE profile defined in <xref target="RFC9203"/>.</t>
      <t>Since the ACE framework does not allow the client to negotiate with the AS the profile to use, the client has instead to choose the use of the OSCORE profile, and to explicitly indicate it to the AS when requesting T2.</t>
      <t>To this end, the client could indicate its wish for an access token aligned with the Group OSCORE profile or with the OSCORE profile, by specifying one of two different audiences in the 'audience' parameter of the access token request to the AS. Assuming a proper configuration of the access policies at the AS, this is still conducive to a consistent evaluation of what is specified in the 'scope' parameter of the access token request against the access policies at the AS.</t>
      <t>For example, an RS registered as "rs1" at the AS can be associated with two audiences:</t>
      <ul spacing="normal">
        <li>
          <t>"rs1_gp_osc", which the client can use to request an access token for the Group OSCORE profile and targeting (also) that RS. That is, the client specifies this audience when requesting the access token T1.</t>
        </li>
        <li>
          <t>"rs1_osc", which the client can use to request an access token for the OSCORE profile and targeting only that RS. That is, the client specifies this audience when requesting the access token T2.</t>
        </li>
      </ul>
      <t>Alternatively, the client could provide the AS with an explicit indication of the profile to use, according to which the AS is requested to issue an access token. For example, the client can rely on the 'ace_profile' parameter of the access token request, aligned with its revised semantics as specified in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
      <t>Note that an RS has to be able to store at least one access token per PoP key. When specifically considering the Group OSCORE profile and the OSCORE profile, the RS can always store both corresponding access tokens T1 and T2, since they are always bound to different PoP keys. That is:</t>
      <ul spacing="normal">
        <li>
          <t>In the Group OSCORE profile, the PoP key is the client's public key, which is included in the client's authentication credential specified in the 'cnf' claim of the access token.</t>
        </li>
        <li>
          <t>In the OSCORE profile, the PoP key is fundamentally an OSCORE Master Secret, which is specified within the OSCORE_Input_Material object of the 'cnf' claim of the access token.</t>
        </li>
      </ul>
      <t>The same approaches discussed above can be used in case the profile used for the access token T2 is instead the EDHOC and OSCORE profile defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>. In such a case, the same PoP key might be bound to both T1 and T2, i.e., if the client's public key is included both in the authentication credential that the client uses in the OSCORE group and in the authentication credential that the client uses as CRED_I (CRED_R) when running the EDHOC protocol in the forward (reverse) message flow (see <xref section="A.2" sectionFormat="of" target="RFC9528"/>).</t>
      <t><xref target="sec-multiple-pop-keys"/> provides considerations and recommendations on storing multiple access tokens per PoP key when using the Group OSCORE profile, also in parallel with alternative profiles.</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">byte string</td>
          </tr>
          <tr>
            <td align="left">salt_input</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
          </tr>
          <tr>
            <td align="left">client_cred_verify</td>
            <td align="left">TBD</td>
            <td align="left">byte string</td>
          </tr>
          <tr>
            <td align="left">client_cred_verify_mac</td>
            <td align="left">TBD</td>
            <td align="left">byte string</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">byte string</td>
          </tr>
          <tr>
            <td align="left">salt_input</td>
            <td align="left">TBD</td>
            <td align="left">byte string</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 the same shared secret is never 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 refer to the OSCORE group as a whole, 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="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>) and in pairwise mode (see <xref section="8" 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 that 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 that is 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 23)</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 within the "OAuth Parameters" registry group, 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: [RFC-XXXX, <xref target="context_id"/>]</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: [RFC-XXXX, <xref target="salt_input"/>]</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: [RFC-XXXX, <xref target="client_cred_verify"/>]</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: [RFC-XXXX, <xref target="client_cred_verify_mac"/>]</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 (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="context_id"/>]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: salt_input</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="salt_input"/>]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: client_cred_verify</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="client_cred_verify"/>]</t>
          </li>
          <li>
            <t>Original Specification: [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 (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="client_cred_verify_mac"/>]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-json-claims">
        <name>JSON Web Token Claims Registry</name>
        <t>IANA is asked to add the following entries to the "JSON Web Token Claims" registry within the "JSON Web Token (JWT)" registry group, following the procedure specified in <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: context_id</t>
          </li>
          <li>
            <t>Claim Description: Client provided Context ID</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [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>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [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 within the "CBOR Web Token (CWT) Claims" registry group, 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 (value between 1 and 255)</t>
          </li>
          <li>
            <t>Claim Value Type: byte string</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="context_id_claim"/>]</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 (value between 1 and 255)</t>
          </li>
          <li>
            <t>Claim Value Type: byte string</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX, <xref target="salt_input_claim"/>]</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: [RFC-XXXX, <xref target="sec-c-as-token-endpoint"/>]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="February" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) is a web transfer
   protocol for constrained devices and constrained networks.  In a
   number of use cases, constrained devices often naturally operate in
   groups (e.g., in a building automation scenario, all lights in a
   given room may need to be switched on/off as a group).  This document
   specifies the use of 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-18"/>
        </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="23" month="December" year="2025"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of messages exchanged with the Constrained Application
   Protocol (CoAP) 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 each 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-28"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for Group Object Security for Constrained RESTful Environments (Group OSCORE) Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="February" year="2026"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   request and provision keying material in group communication
   scenarios that are based on the Constrained Application Protocol
   (CoAP) and are secured with Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  This application profile
   delegates the authentication and authorization of Clients, which 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 of 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-20"/>
        </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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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 anchor="sec-informative-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="3" month="September" year="2025"/>
            <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-18"/>
        </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>University of Glasgow</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>IN Groupe</organization>
            </author>
            <date day="25" month="January" year="2026"/>
            <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, common certificate
   profiles and is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is over the CBOR encoding instead
   of the DER encoding, avoiding the use of ASN.1.  Both types of
   certificates have the same semantics as X.509 and the same reduced
   size compared to X.509.

   The document also specifies CBOR encoded data structures for
   certificate (signing) requests and certificate request templates, new
   COSE headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698; the TLSA selectors registry is
   extended to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-16"/>
        </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="1" month="March" year="2026"/>
            <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 between the client and resource
   server 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-10"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Short Distribution Chain (SDC) Workflow and New 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="20" month="October" year="2025"/>
            <abstract>
              <t>   This document updates the Authentication and Authorization for
   Constrained Environments Framework (ACE, RFC 9200) as follows. (1) It
   defines the Short Distribution Chain (SDC) workflow that the
   authorization server (AS) can use for uploading an access token to a
   resource server on behalf of the client. (2) For the OAuth 2.0 token
   endpoint, it defines new parameters and encodings and it extends the
   semantics of the "ace_profile" parameter. (3) For the OAuth 2.0
   authz-info endpoint, it defines a new parameter and its encoding. (4)
   It defines how the client and the AS can coordinate on the exchange
   of the client's and resource server's public authentication
   credentials, when those can be transported by value or identified by
   reference; this extends the semantics of the "rs_cnf" parameter for
   the OAuth 2.0 token endpoint, thus updating RFC 9201. (5) It extends
   the error handling at the AS, for which it defines a new error code.
   (6) It deprecates the original payload format of error responses
   conveying an error code, when CBOR is used to encode message
   payloads.  For those responses, it defines a new payload format
   aligned with RFC 9290, thus updating in this respect also the
   profiles defined in RFC 9202, RFC 9203, and RFC 9431. (7) It amends
   two of the requirements on profiles of the framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-06"/>
        </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="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </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>
    <?line 1204?>

<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 = 11
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-05-06">
        <name>Version -05 to -06</name>
        <ul spacing="normal">
          <li>
            <t>Replaced "GID" with "Gid".</t>
          </li>
          <li>
            <t>Mentioned revised semantics of the 'ace_profile' parameter.</t>
          </li>
          <li>
            <t>Added registrations to the "JSON Web Token Claims" IANA registry.</t>
          </li>
          <li>
            <t>Minor clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>
            <t>Consistent mentioning of the optional presence of the PoP evidence in the access token request.</t>
          </li>
          <li>
            <t>Guidelines on updating the quartet (GID, SaltInput, AuthCred, AuthCredGM) at the RS when a client obtains a new Sender ID.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Required that 'cnf' in the access token includes exactly what C uploaded to the Group Manager.</t>
          </li>
          <li>
            <t>Made the PoP evidence in the access token request optional.</t>
          </li>
          <li>
            <t>Better example value for audience, when indicating the profile to use.</t>
          </li>
          <li>
            <t>Placeholder: possible use of the 'ace_profile' parameter with extended semantics, for C to select the right profile.</t>
          </li>
          <li>
            <t>Suggested value ranges for codepoints to register.</t>
          </li>
          <li>
            <t>Aligned CBOR abbreviations to those used in other documents.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Lowercase "client", "resource server", "authorization server", and "access token".</t>
          </li>
          <li>
            <t>Consistent update of section numbers for external references.</t>
          </li>
          <li>
            <t>Mentioned that this profile can also use the ACE alternative workflow.</t>
          </li>
          <li>
            <t>Clarified that the client may ask for a new access token after the old one becomes invalid.</t>
          </li>
          <li>
            <t>Enforced uniqueness pre-requirements on the client's group membership before requesting an access token.</t>
          </li>
          <li>
            <t>Added checks on uniqueness of clients' group membership at the RS.</t>
          </li>
          <li>
            <t>Clarified the process of access right verification.</t>
          </li>
          <li>
            <t>Added fine-grained recommendations on storing multiple access tokens bound to the same PoP key.</t>
          </li>
          <li>
            <t>Added guidelines on using multiple profiles.</t>
          </li>
          <li>
            <t>Fixes in the IANA considerations.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
      <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="Tim Hollebeek"/>, <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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
jBrJjYkBAA==

-->

</rfc>
