<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3748 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3748.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8392 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
<!ENTITY RFC9031 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9031.xml">
<!ENTITY I-D.ietf-lake-reqs SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-reqs.xml">
<!ENTITY I-D.ietf-ace-oauth-authz SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml">
<!ENTITY I-D.mattsson-cose-cbor-cert-compress SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.mattsson-cose-cbor-cert-compress.xml">
<!ENTITY I-D.irtf-cfrg-hpke SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-cfrg-hpke.xml">
<!ENTITY I-D.selander-ace-coap-est-oscore SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.selander-ace-coap-est-oscore.xml">
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
<!ENTITY I-D.palombini-core-oscore-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.palombini-core-oscore-edhoc.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>

<rfc ipr="trust200902" docName="draft-selander-ace-ake-authz-04" category="info">

  <front>
    <title abbrev="Lightweight Authorization for AKE.">Lightweight Authorization for Authenticated Key Exchange.</title>

    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Vučinić" fullname="Mališa Vučinić">
      <organization>INRIA</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>malisa.vucinic@inria.fr</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="A." surname="Schellenbaum" fullname="Aurelio Schellenbaum">
      <organization abbrev="ZHAW">Institute of Embedded Systems, ZHAW</organization>
      <address>
        <postal>
          <country>Switzerland</country>
        </postal>
        <email>aureliorubendario.schellenbaum@zhaw.ch</email>
      </address>
    </author>

    <date year="2021" month="October" day="22"/>

    
    
    

    <abstract>


<t>This document describes a procedure for augmenting the lightweight authenticated Diffie-Hellman key exchange protocol EDHOC with third party assisted authorization, targeting constrained IoT deployments (RFC 7228).</t>



    </abstract>


  </front>

  <middle>


<section anchor="intro" title="Introduction">

<t>For constrained IoT deployments <xref target="RFC7228"/> the overhead and processing contributed by security protocols may be significant which motivates the specification of lightweight protocols that are optimizing, in particular, message overhead (see <xref target="I-D.ietf-lake-reqs"/>).
This document describes a procedure for augmenting the lightweight authenticated Diffie-Hellman key exchange EDHOC <xref target="I-D.ietf-lake-edhoc"/> with third party-assisted authorization.</t>

<t>The procedure involves a device, a domain authenticator and an authorization server.
The device and authenticator perform mutual authentication and authorization, assisted by the authorization server which provides relevant authorization information to the device (a “voucher”) and to the authenticator.</t>

<t>The protocol assumes that authentication between device and authenticator is performed with EDHOC, and defines the integration of a lightweight authorization procedure using the External Authorization Data (EAD) field defined in EDHOC.</t>

<t>In this document we consider the target interaction for which authorization is needed to be “enrollment”, for example joining a network for the first time (e.g. <xref target="RFC9031"/>), or certificate enrollment (such as <xref target="I-D.selander-ace-coap-est-oscore"/>), but it can be applied to authorize other target interactions.</t>

<t>The protocol enables a low message count by performing authorization and enrollment in parallel with authentication, instead of in sequence which is common for network access.
It further reuses protocol elements from EDHOC leading to reduced message sizes on constrained links.</t>

<t>This protocol is applicable to a wide variety of settings, and can be mapped to different authorization architectures.
This document specifies a profile of the ACE framework <xref target="I-D.ietf-ace-oauth-authz"/>.
Other settings such as EAP <xref target="RFC3748"/> are out of scope for this specification.</t>

<section anchor="terminology" title="Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>Readers are expected to have some understanding of CBOR <xref target="RFC8949"/> and EDHOC <xref target="I-D.ietf-lake-edhoc"/>.
Appendix C.1 of <xref target="I-D.ietf-lake-edhoc"/> contains some basic info about CBOR.</t>

</section>
</section>
<section anchor="prob-desc" title="Problem Description">

<t>The (potentially constrained) device wants to enroll into a domain over a constrained link.
The device authenticates and enforces authorization of the (non-constrained) domain authenticator with the help of a voucher, and makes the enrollment request.
The domain authenticator authenticates the device and authorizes its enrollment.
Authentication between device and domain authenticator is made with the lightweight authenticated Diffie-Hellman key exchange protocol EDHOC <xref target="I-D.ietf-lake-edhoc"/>.
The procedure is assisted by a (non-constrained) authorization server located in a non-constrained network behind the domain authenticator providing information to the device and to the domain authenticator as part of the protocol.</t>

<t>The objective of this document is to specify such a protocol which is lightweight over the constrained link and reuses elements of EDHOC.
See illustration in <xref target="fig-overview"/>.</t>

<figure title="Overview of message flow. Link between U anv V is constrained but link between V and W is not. Voucher Info and Voucher are sent in EDHOC External Authorization Data." anchor="fig-overview"><artwork align="center"><![CDATA[
                  Voucher
            EDHOC Info
+----------+  |    |   +---------------+  Voucher  +---------------+
|          |  |    |   |               |  Request  |               |
|  Device  |--|----o-->|    Domain     |---------->| Authorization |
|          |<-|---o----| Authenticator |<----------|     Server    |
|    (U)   |--|---|--->|      (V)      |  Voucher  |       (W)     |
|          |      |    |               |  Response |               |
+----------+      |    +---------------+           +---------------+
                  Voucher

]]></artwork></figure>

</section>
<section anchor="assumptions" title="Assumptions">

<section anchor="device" title="Device">

<t>The device is pre-provisioned with an identity ID_U and asymmetric key credentials: a private key, a public key (PK_U), and optionally a public key certificate (Cert_PK_U), issued by a trusted third party such as e.g. the device manufacturer, used to authenticate to the domain authenticator.
ID_U may be a reference or pointer to the certificate.</t>

<t>The device is also provisioned with information about its authorization server:</t>

<t><list style="symbols">
  <t>At least one static public DH key of the authorization server (G_W) used to ensure secure communication with the device (see <xref target="U-W"/>).</t>
  <t>Location information about the authorization server (LOC_W), e.g. its domain name. This information may be available in the device certificate Cert_PK_U.</t>
</list></t>

</section>
<section anchor="domain-auth" title="Domain Authenticator">

<t>The domain authenticator has a private key and a corresponding public key PK_V used to authenticate to the device.</t>

<t>The domain authenticator needs to be able to locate the authorization server of the device for which LOC_W is expected to be sufficient.
The communication between domain authenticator and authorization server is assumed to be mutually authenticated and protected; authentication credentials and communication security is out of scope, except for as specified below in this section.</t>

<t>The domain authenticator may in principle use differents credentials for authenticating to the authorization server and to the device, for which PK_V is used.
However, the domain authenticator MUST prove possession of private key of PK_V to the authorization server since the authorization server is asserting (by means of the voucher to the device) that this credential belongs to the domain authenticator.</t>

<t>In this version of the draft it is assumed that the domain authenticator authenticates to the authorization server with PK_V using some authentication protocol providing proof of possession of the private key, for example TLS 1.3 <xref target="RFC8446"/>.
A future version of this draft may specify explicit proof of possession of the private key of PK_V in the voucher request, e.g., by including a signature of the voucher request with the private key corresponding to PK_V.</t>

</section>
<section anchor="authorization-server" title="Authorization Server">

<t>The authorization server has the private DH key corresponding to G_W, which is used to secure the communication with the device (see <xref target="U-W"/>).</t>

<t>Authentication credentials and communication security used with the domain authenticator is out of scope, except for the need to verify the possession of the private key of PK_V as specified in <xref target="domain-auth"/>.</t>

<t>The authorization server provides to the device the authorization decision for enrollment with the domain authenticator in the form of a voucher.
The authorization server provides information to the domain authenticator about the device, such as the device’s certificate Cert_PK_U.</t>

<t>The authorization server needs to be available during the execution of the protocol.</t>

</section>
</section>
<section anchor="the-protocol" title="The Protocol">

<section anchor="overview" title="Overview">

<t>Three security sessions are going on in parallel:</t>

<t><list style="numbers">
  <t>EDHOC <xref target="I-D.ietf-lake-edhoc"/> between device (U) and (domain) authenticator (V)</t>
  <t>Voucher Request/Response between authenticator (V) and authorization server (W)</t>
  <t>An exchange of voucher-related information, including the voucher itself, between device (U) and authorization server (W), mediated by the authenticator.</t>
</list></t>

<t><xref target="fig-protocol"/> provides an overview of the message flow detailed in this section. Only selected message fields of EDHOC are shown, for more details see Section 3.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<figure title="W-assisted authorization of AKE between U and V: EDHOC between U and V (only selected message fields shown), and Voucher Request/Response between V and W." anchor="fig-protocol"><artwork align="center"><![CDATA[
U                                    V                              W
|                                    |                              |
|        SUITES_I, G_X, EAD_1        |                              |
+----------------------------------->|                              |
|          EDHOC message_1           |   SS, G_X, ENC_ID, ?PoP_V    |
|                                    +----------------------------->|
|                                    |    Voucher Request (VREQ)    |
|                                    |                              |
|                                    |    G_X, CERT_PK_U, Voucher   |
|                                    |<-----------------------------+
|                                    |    Voucher Response (VRES)   |
|   ID_CRED_R, Sig_or_MAC_2, EAD_2   |                              |
|<-----------------------------------+                              |
|          EDHOC message_2           |                              |
|                                    |                              |
|       ID_CRED_I, Sig_or_MAC_3      |                              |
+----------------------------------->|                              |
|          EDHOC message_3           |                              |

where
EAD_1 = (L, Voucher_Info)
Voucher_Info = [LOC_W, ENC_ID]
EAD_2 = (L, Voucher)
Voucher = MAC(V_TYPE, SS, G_X, ID_U, PK_V)

]]></artwork></figure>

</section>
<section anchor="reuse" title="Reuse of EDHOC">

<t>The protocol illustrated in <xref target="fig-protocol"/> reuses several components of EDHOC:</t>

<t><list style="symbols">
  <t>G_X, the ‘x’ parameter of the ephemeral public Diffie-Hellman key of party U, is also used in the protocol between U and W, as ephemeral key and nonce.</t>
  <t>SUITES_I, the cipher suites relevant to U, which includes the selected cipher suite - here denoted SS, also defines the algorithms used between U and W. In particular SS contains information about (see Section 3.6 of <xref target="I-D.ietf-lake-edhoc"/>):  <list style="symbols">
      <t>EDHOC AEAD algorithm: used to encrypt the identity of U</t>
      <t>EDHOC hash algorithm: used for key derivation and to calculate the voucher</t>
      <t>EDHOC MAC length in bytes: length of the voucher</t>
      <t>EDHOC key exchange algorithm: used to calculate the shared secret between U and W</t>
    </list></t>
  <t>EAD_1, EAD_2 are the External Authorization Data of message_1 and message_2, respectively, for which dedicated content is defined in this document.</t>
  <t>ID_CRED_I and ID_CRED_R are used to identify the public authentication keys of U and V. In this protocol ID_CRED_I can be empty since V obtains the certificate of U from W, whereas ID_CRED_R contains the public authentication key of V.</t>
  <t>Signature_or_MAC_2 and Signature_or_MAC_3 (abbreviated in <xref target="fig-protocol"/>), containing data generated using the private key of V and U, respectively, are shown here just to be able to reason about the use of credentials.</t>
</list></t>

<t>The protocol also reuses the Extract and Expand key derivation from EDHOC (Section 4 of <xref target="I-D.ietf-lake-edhoc"/>).</t>

<t><list style="symbols">
  <t>The intermediate pseudo-random key PRK is derived using Extract():
  <list style="symbols">
      <t>PRK = Extract(salt, IKM)
      <list style="symbols">
          <t>where salt = 0x (the zero-length byte string)</t>
          <t>IKM is the ECDH shared secret G_XW (calculated from G_X and W or G_W and X) as defined in Section 6.3.1 of [I-D.ietf-cose-rfc8152bis-algs].</t>
        </list></t>
    </list></t>
</list></t>

<t>The shared secret is derived using Expand() which is defined in terms of the EDHOC hash algorithm of the selected cipher suite, see Section 4.2. of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<t><list style="symbols">
  <t>shared secret = Expand(PRK, info, length)  <vspace blankLines='1'/>
where</t>
</list></t>

<figure><artwork><![CDATA[
info = (
   transcript_hash : bstr,
   label : tstr,
   context : bstr,
   length : uint,
)
]]></artwork></figure>

</section>
<section anchor="U-W" title="Device &lt;-&gt; Authorization Server">

<t>The protocol between device and authorization server (U and W in <xref target="fig-protocol"/>) is carried out via the authenticator (V) with certain data protected between the endpoints using the equivalent of a hybrid encryption scheme (see, e.g., <xref target="I-D.irtf-cfrg-hpke"/>).
The device uses the public DH key of the authorization server G_W together with the private DH key corresponding to ephemeral key G_X in EDHOC message_1, and vice versa for the authorization server.
The endpoints calculate a shared secret G_XW (see <xref target="reuse"/>), which is used to derive secret keys to protect data between U and W, as detailed in this section.</t>

<t>The data exchanged betweeen U and W is carried between U and V in EAD_1 and EAD_2 (<xref target="U-V"/>), and between V and W in Voucher Request/Response (<xref target="V-W"/>).</t>

<section anchor="voucher-info" title="Voucher Info">

<t>The external authorization data EAD_1 of EDHOC message_1 includes Voucher Info, which is the following CBOR sequence:</t>

<figure><artwork><![CDATA[
Voucher_Info = (
    LOC_W:      tstr,
    ENC_ID:     bstr
)
]]></artwork></figure>

<t>where</t>

<t><list style="symbols">
  <t>LOC_W is location information about the authorization server, used by the authenticator</t>
  <t>ENC_ID is the encrypted blob carrying the identity of the device and an optional identity of the authenticator, passed on from the authenticator to the authorization server, calculated as follows:</t>
</list></t>

<t>ENC_ID is ‘ciphertext’ of COSE_Encrypt0 (Section 5.2-5.3 of <xref target="RFC8152"/>) computed from the following:</t>

<t><list style="symbols">
  <t>The encryption key K_1 and nonce IV_1 are derived as specified below.</t>
  <t>‘protected’ is a byte string of size 0</t>
  <t>‘plaintext and ‘external_aad’ as below:</t>
</list></t>

<figure><artwork><![CDATA[
plaintext = (
    ID_U:            bstr,
  ? ID_V:            bstr,
 )
]]></artwork></figure>
<figure><artwork><![CDATA[
external_aad = (
    SS:              int,
 )
]]></artwork></figure>

<t>where</t>

<t><list style="symbols">
  <t>ID_U is the identity of the device, for example a reference or pointer to the device certificate</t>
  <t>ID_V is the identity of the authenticator as presented to the authorization server. This may be a name in a name space agreed out-of-band and managed by a party trusted by the authorization server, for example a common name of an X.509 certificate signed by a CA trusted by the authorization server. The value may be obtained by the device through out-of-band means, possibly through secure network discovery.</t>
  <t>SS is the selected cipher suite in SUITES_I.</t>
</list></t>

<t>The derivation of K_1 = Expand(PRK, info, length) uses the following input to the info struct (<xref target="reuse"/>):</t>

<t><list style="symbols">
  <t>transcript_hash = h’’</t>
  <t>label is “EDHOC_ACE_AKE_AUTHZ_K_1”</t>
  <t>context  = h’’</t>
  <t>length is length of key of the EDHOC AEAD algorithm</t>
</list></t>

<t>The derivation of IV_1 = Expand(PRK, info, length) uses the following input to the info struct (<xref target="reuse"/>):</t>

<t><list style="symbols">
  <t>transcript_hash = h’’</t>
  <t>label is “EDHOC_ACE_AKE_AUTHZ_IV_1”</t>
  <t>context = h’’</t>
  <t>length is length of nonce of the EDHOC AEAD algorithm</t>
</list></t>

</section>
<section anchor="voucher" title="Voucher">

<t>The voucher is an assertion by the authorization server to the device that the authorization server has performed the relevant verifications and that the device is authorized to continue the protocol with the authenticator. The Voucher is essentially a message authentication code which binds the identity of the authenticator to message_1 of EDHOC, integrity protected with the shared secret context between U and W.</t>

<t>The calculation of Voucher = Expand(PRK, info, length) uses the following input to the info struct (<xref target="reuse"/>):</t>

<t><list style="symbols">
  <t>transcript_hash = h’’</t>
  <t>label is “EDHOC_ACE_AKE_AUTHZ_MAC”</t>
  <t>context  = bstr .cbor voucher_input</t>
  <t>length is EDHOC MAC length in bytes</t>
</list></t>

<t>where context is a CBOR bstr wrapping of voucher_input:</t>

<figure><artwork><![CDATA[
voucher_input = (
    V_TYPE:        int,
    SS:            int,
    G_X:           bstr,
    ID_U:          bstr,
    PK_V:          bstr,
)
]]></artwork></figure>

<t>where</t>

<t><list style="symbols">
  <t>V_TYPE indicates the type of voucher used (TBD)</t>
  <t>SS is the selected cipher suite of the EDHOC protocol, see <xref target="reuse"/></t>
  <t>PK_V is a CWT Claims Set (CCS, <xref target="RFC8392"/>) containing the public authentication key of the authenticator encoded as a COSE_Key in the ‘cnf’ claim, see Section 3.5.3 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
  <t>G_X is encoded as in EDHOC message_1, see Section 3.7 of <xref target="I-D.ietf-lake-edhoc"/></t>
  <t>ID_U is defined in <xref target="U-W"/></t>
</list></t>

<t>Editor’s note: With the current definition of EAD as (ead_label, ead_value), do we need to redefine the voucher to be a CBOR map? Do we even need the V_TYPE?</t>

</section>
</section>
<section anchor="U-V" title="Device &lt;-&gt; Authenticator">

<t>The device and authenticator run the EDHOC protocol authenticated with their public keys (PK_U and PK_V), see <xref target="fig-protocol"/>. Normal EDHOC processing is omitted here.</t>

<section anchor="message-1" title="Message 1">

<section anchor="device-processing" title="Device processing">

<t>The device composes EDHOC message_1 using authentication method, identifiers, etc. according to the applicability statement, see Section 3.9 of <xref target="I-D.ietf-lake-edhoc"/>. The selected cipher suite SS applies also to the interaction with the authorization server as detailed in <xref target="reuse"/>, in particular, the key agreement algorithm which is used with the static public DH key G_W of the authorization server. As part of the normal EDHOC processing, the device generates the ephemeral public key G_X which is reused in the interaction with the authorization server, see <xref target="U-W"/>.</t>

<t>The device sends EDHOC message_1 with EAD_1 = (L, Voucher_Info) where L is the External Auxiliary Data Label for this protocol (IANA registry created in Section 9.5 of <xref target="I-D.ietf-lake-edhoc"/>), and Voucher_Info is specified in <xref target="U-W"/>.</t>

</section>
<section anchor="authenticator-processing" title="Authenticator processing">

<t>The authenticator receives EDHOC message_1 from the device and processes as specified in Section 5.2.3 of <xref target="I-D.ietf-lake-edhoc"/>, with the additional step that the presence of EAD with label L triggers the voucher request to the authorization server as described in <xref target="V-W"/>. The exchange with V needs to be completed successfully for the EDHOC exchange to be continued.</t>

</section>
</section>
<section anchor="message-2" title="Message 2">

<section anchor="authenticator-processing-1" title="Authenticator processing">

<t>The authenticator receives the voucher response from the authorization server as described in <xref target="V-W"/>.</t>

<t>The authenticator sends EDHOC message_2 to the device with EAD_2 = (L, Voucher) where L is the External Auxiliary Data Label for this protocol (IANA registry created in Section 9.5 of <xref target="I-D.ietf-lake-edhoc"/>) and the Voucher is specified in <xref target="U-W"/>.</t>

<t>CRED_R is a CWT Claims Set (CCS, <xref target="RFC8392"/>) containing the public authentication key of the authenticator PK_V encoded as a COSE_Key in the ‘cnf’ claim, see Section 3.5.3 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>ID_CRED_R contains the CCS with ‘kccs’ as COSE header_map, see Section 9.6 of <xref target="I-D.ietf-lake-edhoc"/>. The Sig_or_MAC_2 field calculated using the private key corresponding to PK_V is either signature or MAC depending on EDHOC method.</t>

</section>
<section anchor="device-processing-1" title="Device processing">

<t>In addition to normal EDHOC verifications, the device MUST verify the Voucher by performing the same calculation as in <xref target="voucher"/> using the SS, G_X and ID_U carried in message_1 and PK_V received in message_2. If the voucher calculated in this way is not identical to what was received in message_2, then the device MUST discontinue the protocol.</t>

<t>Editor’s note: Consider replace SS, G_X, ID_U in Voucher with H(message_1), since that is already required by EDHOC to be cached by the initiator. H(message_1) needs to be added to VREQ message in that case.</t>

</section>
</section>
<section anchor="message-3" title="Message 3">

<section anchor="device-processing-2" title="Device processing">

<t>If all verifications are passed, then the device sends EDHOC message_3.</t>

<t>The message field ID_CRED_I contains data enabling the authenticator to retrieve the public key of the device, PK_U. Since the authenticator before sending message_2 received a certificate of PK_U from the authorization server (see <xref target="V-W"/>), ID_CRED_I SHALL be a COSE header_map of type ‘kid’ with the empty byte string as value:</t>

<figure><artwork><![CDATA[
ID_CRED_I =
{
  4 : h''
}
]]></artwork></figure>

<t>The Sig_or_MAC_3 field calculated using the private key corresponding to PK_U is either signature or MAC depending on EDHOC method.</t>

<t>EAD_3 MAY contain an enrolment request, see e.g. CSR specified in <xref target="I-D.mattsson-cose-cbor-cert-compress"/>, or other request which the device is now authorized to make.</t>

<t>EDHOC message_3 may be combined with an OSCORE request, see <xref target="I-D.palombini-core-oscore-edhoc"/>.</t>

</section>
<section anchor="authenticator-processing-2" title="Authenticator processing">

<t>The authenticator performs the normal EDHOC verifications of message_3, with the exception that the Sig_or_MAC_3 field MUST be verified using the public key included in Cert_PK_U (see <xref target="voucher_response"/>) received from the authorization server. The authenticator MUST ignore any key related information obtained in ID_CRED_I.</t>

<t>This enables the authenticator to verify that message_3 was generated by the device authorized by the authorization server as part of the associated Voucher Request/Response procedure (see <xref target="V-W"/>).</t>

</section>
</section>
</section>
<section anchor="V-W" title="Authenticator &lt;-&gt; Authorization Server">

<t>The authenticator and authorization server are assumed to have, or to be able to, set up a secure connection, for example TLS 1.3 authenticated with certificates. The authenticator is assumed to authenticate with the public key PK_V, see <xref target="domain-auth"/>.</t>

<t>This secure connection protects the Voucher Request/Response Protocol (see protocol between V and W in <xref target="fig-protocol"/>).</t>

<t>The ephemeral public key G_X sent in EDHOC message_1 from device to authenticator serves as challenge/response nonce for the Voucher Request/Response Protocol, and binds together instances of the two protocols.</t>

<section anchor="voucher-request" title="Voucher Request">

<section anchor="authenticator-processing-3" title="Authenticator processing">

<t>Unless already in place, the authenticator and the authorization server establish a secure connection. The autenticator uses G_X received from the device as a nonce associated to this connection with the authorization server. If the same value of the nonce G_X is already used for a connection with this or other authorization server, the protocol SHALL be discontinued.</t>

<t>The authenticator sends the voucher request to the authorization server. The Voucher Request SHALL be a CBOR array as defined below:</t>

<figure><artwork><![CDATA[
Voucher_Request = [
    SS:              int,
    G_X:             bstr,
    ENC_ID:          bstr,
  ? PoP_V:           bstr,
]
]]></artwork></figure>

<t>where all parameters are defined in <xref target="U-W"/>, except</t>

<t><list style="symbols">
  <t>PoP_V is a proof-of-possession of public key PK_V using the corresponding private key</t>
</list></t>

<t>Editor’s note: Define PoP_V (include G_X, ENC_ID in the calculation for binding to this EDHOC session). One case to study is when V authenticates to U with static DH and to W with signature.</t>

</section>
<section anchor="authorization-server-processing" title="Authorization Server processing">

<t>The authorization server receives the voucher request, verifies and decrypts the identity ID_U of the device, and associates the nonce G_X to ID_U.
If G_X is not unique among nonces associated to this identity, the protocol SHALL be discontinued.
If ENC_ID also included the identity of V, ID_V, then the authorization server performs an additional check to verify that the identity of the authenticator who sent the voucher request over a secure session between V-W matches the identity of the authenticator as observed by U.
If the identities of V as observed by U, and as observed by W, do not match, the protocol SHALL be discontinued.</t>

</section>
</section>
<section anchor="voucher_response" title="Voucher Response">

<section anchor="authorization-server-processing-1" title="Authorization Server processing">

<t>The authorization server uses the identity of the device, ID_U, to look up the device certificate, Cert_PK_U.</t>

<t>The authorization server retrieves the public key of V used to authenticate the secure connection with the authenticator, and constructs the CWT Claims Set and the Voucher as defined in <xref target="voucher"/>.</t>

<t>The authorization server generates the voucher response and sends it to the authenticator over the secure connection. The Voucher_Response SHALL be a CBOR array as defined below:</t>

<figure><artwork><![CDATA[
Voucher_Response = [
    G_X:            bstr,
    CERT_PK_U:      bstr,
    Voucher:        bstr
]
]]></artwork></figure>

<t>where</t>

<t><list style="symbols">
  <t>G_X is copied from the associated voucher request.</t>
  <t>CERT_PK_U is the device certificate of the public key PK_U, issued by a trusted third party. The format of this certificate is out of scope.</t>
  <t>The Voucher is defined in <xref target="voucher"/>.</t>
</list></t>

</section>
<section anchor="authenticator-processing-4" title="Authenticator processing">

<t>The authenticator receives the voucher response from the authorization server over the secure connection. If the received G_X does not match the value of the nonce associated to the secure connection, the protocol SHALL be discontinued.</t>

<t>The authenticator verifies the certificate CERT_PK_U and that U is an admissible device, or else discontinues the protocol.</t>

</section>
</section>
</section>
</section>
<section anchor="ace-profile" title="ACE Profile">

<t>The messages specified in this document may be carried between the endpoints in various protocols. This section defines an embedding as a profile of the ACE framework (see Appendix C of <xref target="I-D.ietf-ace-oauth-authz"/>).</t>

<t><list style="symbols">
  <t>U plays the role of the ACE Resource Server (RS).</t>
  <t>V plays the role of the ACE Client (C).</t>
  <t>W plays the role of the ACE Authorization Server (AS).</t>
</list></t>

<t>Many readers who are used to the diagram having the Client on the left may be surprised at the cast of characters.
The “resource” which C (V) is trying to access is the “ownership” of U.
The AS (W) is the manufacturer (or previous owner) of RS (U), and is therefore in a position to grant C (V) ownership of RS (U).</t>

<t>C and RS use EDHOC’s EAD to communicate.
C and RS use the EDHOC protocol to protect their communication.
EDHOC also provides mutual authentication of C and RS, assisted by the AS.</t>

<section anchor="protocol-overview" title="Protocol Overview">

<figure title="Overview of the protocol mapping to ACE" anchor="fig-mapping-ace"><artwork align="center"><![CDATA[
  RS (U)                             C (V)                 AS (W)
   |          EDHOC message_1        |                     |
   |  AD1=AS Request Creation Hints  |                     |
   |-------------------------------->|     POST /token     |
   |                                 |-------------------->|
   |                                 |                     |
   |                                 | Access Token +      |
   |          EDHOC message_2        |  Access Information |
   |          AD2=Access Token       |<--------------------|
   |<--------------------------------|                     |
   |          EDHOC message_3        |                     |
   |-------------------------------->|                     |

]]></artwork></figure>

<t><list style="numbers">
  <t>RS proactively sends the AS Request Creation Hints message to C to signal the information on
where C can reach the AS.</t>
  <t>RS piggybacks the AS Request Creation Hints message using Auxiliary Data of EDHOC message_1.</t>
  <t>Before continuing the EDHOC exchange, based on the AS Request Creation Hints information, C sends a POST request to the token endpoint at the AS requesting the access token.</t>
  <t>The AS issues an assertion to C that is cryptographically protected based on the secret shared between the AS and RS. In this profile, the assertion is encoded as a Bearer Token.</t>
  <t>C presents this token to RS in EAD_2.</t>
  <t>RS verifies the token based on the possession of the shared secret with the AS and authenticates C.</t>
</list></t>

</section>
<section anchor="as-request-creation-hints" title="AS Request Creation Hints">

<t>Parameters that can appear in the AS Request Creation Hints message are specified in Section 5.3 of <xref target="I-D.ietf-ace-oauth-authz"/>.
RS MUST use the “AS” parameter to transport LOC_W, i.e. an absolute URI where C can reach the AS.
RS MUST use the “audience” parameter to transport the CBOR sequence consisting of two elements: SS, the selected cipher suite; ENC_ID, the AEAD encrypted blob containing identities.
The “cnonce” parameter MUST be implied to G_X, i.e. the ephemeral public key of the RS in the underlying EDHOC exchange.
The “cnonce” parameter is not carried in the AS Request Creation Hints message for byte saving reasons.
AS Request Creation Hints MUST be carried within EAD_1.</t>

<t>An example EAD_1 value in CBOR diagnostic notation is shown below:</t>

<figure><artwork><![CDATA[
EAD_1:
{
    "AS" : "coaps://as.example.com/token",
    "audience": << h'73',h'737570657273...' >>
}
]]></artwork></figure>

</section>
<section anchor="client-to-as-request" title="Client-to-AS Request">

<t>The protocol that provides the secure connection between C and the AS is out-of-scope.
This can, for example, be TLS 1.3.
What is important is that the two peers are mutually authenticated, and that the secure connection provides message integrity, confidentiality and freshness.
It is also necessary for the AS to be able to extract the public key of C used in the underlying security handshake.</t>

<t>C sends the POST request to the token endpoint at the AS following Section 5.8.1. of <xref target="I-D.ietf-ace-oauth-authz"/>.
C MUST set the “audience” parameter to the value received in AS Request Creation Hints.
C MUST set the “cnonce” parameter to G_X, the ephemeral public key of RS in the EDHOC exchange.</t>

<t>An example exchange using CoAP and CBOR diagnostic notation is shown below:</t>

<figure><artwork><![CDATA[
    Header: POST (Code=0.02)
    Uri-Host: "as.example.com"
    Uri-Path: "token"
    Content-Format: "application/ace+cbor"
    Payload:
    {
        "audience" : << h'73',h'737570657273...' >>
        "cnonce" : h'756E73686172...'
    }
]]></artwork></figure>

</section>
<section anchor="as-to-client-response" title="AS-to-Client Response">

<t>Given successful authorization of C at the AS, the AS responds by issuing a Bearer token and retrieves the certificate of RS on behalf of C.
The access token and the certificate are passed back to C, who uses it to complete the EDHOC exchange.
This document extends the ACE framework by registering a new Access Information parameter:</t>

<t>rsp_ad:
     OPTIONAL. Carries additional information from the AS to C associated with the access token.</t>

<t>The AS-to-Client responsE MUST contain:</t>

<t><list style="symbols">
  <t>ace_profileparameter set to “edhoc-authz”</t>
  <t>token_type parameter set to “Bearer”</t>
  <t>access_token as specified in <xref target="voucher"/></t>
  <t>rsp_ad = bstr .cbor cert_gx</t>
</list></t>

<figure><artwork><![CDATA[
cert_gx = (
    CERT_PK_U:        bstr,
    G_X:              bstr
)
]]></artwork></figure>
<t>where:</t>

<t><list style="symbols">
  <t>CERT_PK_U is the RS’s certificate, as discussed in <xref target="voucher_response"/>. To be able to retrieve this certificate, the AS first needs to decrypt the audience value and obtain the RS’s identity.</t>
  <t>G_X is the ephemeral key generated by RS in EDHOC message_1.</t>
</list></t>

<t>An example AS response to C is shown below:</t>

<figure><artwork><![CDATA[
    2.01 Created
    Content-Format: application/ace+cbor
    Max-Age: 3600
    Payload:
    {
        "ace_profile" : "edhoc-authz",
        "token_type" : "Bearer",
        "access_token" : h'666F726571756172746572...',
        "rsp_ad" : h'61726973746F64656D6F637261746963616C...'
    }
]]></artwork></figure>

</section>
</section>
<section anchor="sec-cons" title="Security Considerations">

<t>This specification builds on and reuses many of the security constructions of EDHOC, e.g. shared secret calculation and key derivation. The security considerations of EDHOC <xref target="I-D.ietf-lake-edhoc"/> apply with modifications discussed here.</t>

<t>EDHOC provides identity protection of the Initiator, disclosed to the Responder in message_3. The sending of the certificate of U in the Voucher Response provides information about the identity of the device already before message_2, which changes the identity protection properties and thus needs to be validated against a given use case. The authorization server authenticates the authenticator, receives the Voucher Request, and can perform potential other verifications before sending the Voucher Response. This allows the authorization server to restrict information about the identity of the device to parties which are authorized to have that. However, if there are multiple authorized authenticators, the authorization server may not be able to distinguish between  authenticator V which the device is connecting to and a misbehaving but authorized authenticator V’ constructing a Voucher Request built from an eavesdropped message_1.
A mitigation for this kind of misbehaving authenticator is that the device discovers the identity of the authenticator through out-of-bands means before attempting to enroll, and include the optional ID_V in the ENC_ID encrypted blob. For example, the network’s discovery mechanism can carry asserted information on the associated identity of the authenticator. The use of ID_V also changes the identity protection assumptions since it requires U to know the identity of V before the protocol starts. The identity of V is still protected against passive adversaries, unless disclosed by the out-of-band mechanism by which U acquires information about the identity of V. The privacy considerations whether the identity of the device or of the authenticator is more sensitive need to be studied depending on a specific use case.</t>

<t>For use cases where neither the early disclosure of the device nor of the authenticator identities are deemed acceptable, the device certificate must not be sent in the Voucher Response, and the identity of V must be omitted. Instead, the device certificate could be retrieved from the authorization server or other certificate repository after message_3 is received by the authenticator, using the device identifier provided in ID_CRED_I as lookup. This would require the device identity to be transported in both message_1 (in EAD_1) and message_3 but would make the protocol comply with the default identity protection provided by EDHOC.</t>

<t>The encryption of the device identity in the first message should consider potential information leaking from the length of the identifier ID_U, either by making all identifiers having the same length or the use of a padding scheme.</t>

<t>As noted Section 8.2 of <xref target="I-D.ietf-lake-edhoc"/> an ephemeral key may be used to calculate several ECDH shared secrets. In this specification the ephemeral key G_X is also used to calculate G_XW, the shared secret with the authorization server.</t>

<t>The private ephemeral key is thus used in the device for calculations of key material relating to both the authenticator and the authorization server. There are different options for where to implement these calculations, one option is as an addition to EDHOC, i.e., to extend the EDHOC API in the device with input of public key of W (G_W) and identifier of U (ID_U), and produce the encryption of ID_U which is included in the external authorization data EAD_1.</t>

</section>
<section anchor="iana" title="IANA Considerations">

<t>TODO: register rsp_ad ACE parameter</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>

&RFC2119;
&RFC3748;
&RFC7228;
&RFC8152;
&RFC8174;
&RFC8392;
&RFC8446;
&RFC8949;
&RFC9031;
&I-D.ietf-lake-reqs;
&I-D.ietf-ace-oauth-authz;
&I-D.mattsson-cose-cbor-cert-compress;
&I-D.irtf-cfrg-hpke;
&I-D.selander-ace-coap-est-oscore;
&I-D.ietf-lake-edhoc;
&I-D.palombini-core-oscore-edhoc;


    </references>



  </back>

<!-- ##markdown-source:
H4sIACPbcmEAA81923bbSJLgO78ij/wgqopkWZItlznl6mZRqrbGdsmja/f0
6aMDEUkSbRDgAKBkle153af9ht39if2AufzXxC1vAEjJ3TM9o3OqLJHIzMjI
uEdkoN/vd6qkSvVQvU1m8+pO4//VaFXN8yL5NaqSPFPTvKBPdFYlk6jSsXqj
79XRx8k8ymZ60Ilubgp9++AMb44GnTifZNECVouLaFr1S51GWayLfjTR/egD
/AfDfu0/fdbpJMtiqKpiVVZ7T5++fLrXgZWHKsmmeaczyeMkmw3Vqpr2v+8s
k6F6oiZRplalVlFRRPeqm0xVlKbqXpc7ChafR+VczXWhO0pV+WSIX8CvZV5U
hZ6W9u/7hf8nPBnrZTUfqr1OJ6IdDTt9xTv43b/+/wLWPJMt4OhVwV95n+UF
wHlUJJOyBDyMfoKPJvkqq4p7eOxOxzqDT/QiStKhmuUw4cDg5LdaRg0m+cKu
+vf5PFPvC7361/+j3kVVhQ/ADEmWVEmUAuR/7wPSfPBr4PkzrDVYyNh2cN5F
afLv/y9Sl6t/+98Aw7/9L391/0Na9/iX0+ORv+LPsOGJdisuYLoyGtyuJjBu
8tskK5JoMC3ccgnQnE7VKf5bxLwlu17wKS14hphMF3hM+bS6iwqtrvLiQ+nD
MI6yKI48GCbFt4mupr8tzeDBJLIQjFaFTpNcnU3mOk11dhOtFsHRh5/ztrMS
eGxVaZVP1dHiRscx8NDZfVnpRdlT//h6dAWPGi6SP71TSapfdYFE4YCMGIxi
daOzOCqSfFB6C//213l0N5jMO51OlhdwgsmtHgJLAfO4v5Q6/Xm8t7v7csi/
7r949r38+mJvz/z6/e7zPfvri2fm1/2X9tNnzw7Mry+fmclePt3fxV+P+4cD
RGY/Re4u9D+VwafI9jkyFjO++c7QXH+Sl7o/ucmL/kQXFfy5WBa6dHMUMMdk
Wsz68+UHbT4NhMokj5Z9XVb9vJzkhW7CpOM5yAP5eBml+eIGaK+PD8sY80in
3+/DKZVVEU2qTud8npQK5NlqAXJRxbqcFMmNLlWklkU+0TGcEMm9aDXDJ0Bg
KRChKvWEZBQI1cNkOk10/zUcI1LsB5CxWmQsTgnCKE/V0eHrk7ECkpjDbEkR
q2VUVPcqKsukxEkiX+72VBUVM01rT/IMIU8yeOg4PweAl2l+j5CVqgsnpvDQ
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
Z52IAAA=

-->

</rfc>

