<?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.0.40 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY SELF "[RFC-XXXX]">
]>

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

<rfc ipr="trust200902" docName="draft-palombini-ace-coap-pubsub-profile-01" category="std">

  <front>
    <title abbrev="coap-pubsub-profile">CoAP Pub-Sub Profile for Authentication and Authorization for Constrained Environments (ACE)</title>

    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>

    <date year="2017" month="September" day="28"/>

    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This specification defines a profile for authentication and authorization for publishers and subscribers in a pub-sub setting scenario in a constrained environment, using the ACE framework. This profile relies on transport layer or application layer security to authorize the publisher to the broker. Moreover, it relies on application layer security for publisher-broker and subscriber-broker communication.</t>



    </abstract>


  </front>

  <middle>


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

<t>This specification defines a way to authorize nodes in a CoAP pub-sub type of setting, using the ACE framework <xref target="I-D.ietf-ace-oauth-authz"/>. The pub-sub scenario is described in <xref target="I-D.ietf-core-coap-pubsub"/>.</t>

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

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.</t>

<t>Readers are expected to be familiar with the terms and concepts
described in <xref target="I-D.ietf-ace-oauth-authz"/> and <xref target="I-D.ietf-core-coap-pubsub"/>.</t>

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

<t>The objective of this specification is to specify how to protect a CoAP pub-sub communication, as described in <xref target="I-D.ietf-core-coap-pubsub"/>, using Ace framework (<xref target="I-D.ietf-ace-oauth-authz"/>) and profiles (<xref target="I-D.gerdes-ace-dtls-authorize"/>, <xref target="I-D.seitz-ace-oscoap-profile"/>).</t>

<t>The architecture of the scenario is shown in <xref target="archi"/>.</t>

<figure title="Architecture CoAP pubsub with Authorization Servers" anchor="archi"><artwork align="center"><![CDATA[
             +----------------+   +----------------+
             |                |   |                |
             | Authorization  |   | Authorization  |
             |    Server 1    |   |    Server 2    |
             |                |   |                |
             +----------------+   +----------------+
                      ^                  ^  ^
                      |                  |  |
     +---------(A)----+                  |  +-----(E)------+
     |   +--------------------(B)--------+                 |
     v   v                                                 v     
+------------+             +------------+              +------------+  
|   CoAP     | ----(C)---> |   CoAP     |              |    CoAP    | 
|  Client -  | [<--(D)-->] |  Server -  |              |  Client -  |
|            | ----(F)---> |            |              |            |  
| Publisher  |             |   Broker   | <----(G)---- | Subscriber | 
|            |             |            | -----(H)---> |            |
+------------+             +------------+              +------------+
]]></artwork></figure>

<t>The RS is the broker, which contains the topic.
The AS1 hosts the policies about the Broker: what endpoints are allowed to Publish on the Broker.
The AS2 hosts the policies about the topic: what endpoints are allowed to access what topic.
There are four phases, the first three can be done in parallel.</t>

<t><list style="numbers">
  <t>The Publisher requests publishing access to a broker at the AS1, and communicates with the Broker to set up security.</t>
  <t>The Publisher requests access to a specific topic at the AS2</t>
  <t>The Subscriber requests access to a specific topic at the AS2.</t>
  <t>The Publisher and the Subscriber securely post to and get publications from the Broker.</t>
</list></t>

<t>This scenario requires the setup of 2 different security associations: on the one hand, the Publisher has a security association with the Broker, to protect the communication and securely authorize the Publisher to publish on a topic (Security Association 1). On the other hand, the Publisher has a security association with the Subscriber, to protect the publication content itself (Security Association 2).
The Security Association 1 is set up using AS1, the Security Association 2 is set up using AS2.</t>

<figure><artwork><![CDATA[
+------------+             +------------+              +------------+  
|   CoAP     |             |   CoAP     |              |    CoAP    | 
|  Client -  |             |  Server -  |              |  Client -  |
|            |             |            |              |            |  
| Publisher  |             |   Broker   |              | Subscriber | 
+------------+             +------------+              +------------+
      :   :                       :                           :
      :   '------ Security -------'                           :
      :         Association 1                                 :
      '------------------------------- Security --------------'
                                     Association 2
]]></artwork></figure>

</section>
<section anchor="publisher-profile" title="Publisher Profile">

<t>In this section, it is specified how the Publisher requests, obtains and communicates to the Broker the access token, as well as the retrieval of the keying material to protect the publication.</t>

<figure title="Phase 1: Publisher side" anchor="pubsub-1"><artwork align="center"><![CDATA[
             +----------------+   +----------------+
             |                |   |                |
             | Authorization  |   | Authorization  |
             |    Server 1    |   |    Server 2    |
             |                |   |                |
             +----------------+   +----------------+
                      ^                  ^
                      |                  |
     +---------(A)----+                  | 
     |   +--------------------(B)--------+ 
     v   v                                                       
+------------+             +------------+ 
|   CoAP     | ----(C)---> |   CoAP     | 
|  Client -  | [<--(D)-->] |  Server -  |
|            |             |            |
| Publisher  |             |   Broker   |
|            |             |            |
+------------+             +------------+
]]></artwork></figure>

<t>This is a combination of two independent phases:</t>

<t><list style="symbols">
  <t>one is the establishment of a secure connection between Publisher and Broker, using an ACE profile such as DTLS <xref target="I-D.gerdes-ace-dtls-authorize"/> or OSCOAP <xref target="I-D.seitz-ace-oscoap-profile"/>. (A)(C)(D)</t>
  <t>the other is the Publisher’s retrieval of keying material to protect the publication. (B)</t>
</list></t>

<t>In detail:</t>

<t>(A) corresponds to the Access Token Request and Response between Publisher and Authorization Server to retrieve the Access Token and RS (Broker) Information.
As specified, the Publisher has the role of a CoAP client, the Broker has the role of the CoAP server.</t>

<t>(C) corresponds to the exchange between Publisher and Broker, where the Publisher sends its access token to the Broker.</t>

<t>(D) corresponds to the exchange where the Publisher establishes a secure connection with the Broker. Depending on the Information received in (A), this can be for example DTLS handshake, or other protocols such as EDHOC. Depending on the application, there may not be the need for this set up phase: for example, if OSCOAP is used directly and not without EDHOC first.</t>

<t>(A), (C) and (D) details are specified in the profile used.</t>

<t>(B) corresponds to the retrieval of the keying material to protect the publication. The detailed message flow is defined below.</t>

<section anchor="retr-cosekey" title="Retrieval of COSE Key for protection of content">

<t>This phase is common to both Publisher and Subscriber. To maintain the generality, the Publisher or Subscriber is referred as Client in this section.</t>

<figure title="B: Access request - response" anchor="B"><artwork align="center"><![CDATA[
   Client                            Broker             AS2
      | [----- Resource Request ---->] |                 |
      |                                |                 |
      | [<-- AS1, AS2 Information ---] |                 |
      |                                                  |
      | ------- Topic Keying Material Request ---------> |
      |                                                  |
      | <------------ Keying Material ------------------ |
      |                                                  |
]]></artwork></figure>

<t>Complementary to what is defined in the DTLS profile (section 2.), to determine the AS2 in charge of a topic hosted at the broker, the Broker MAY send the address of both the AS in charge of the topic back to the Client, as a response to a Resource Request (Section 2.1).
Analogously to the DTLS profile, instead of the initial Unauthorized Resource Request message, the Client MAY look up the desired topic in a resource directory (see <xref target="I-D.ietf-core-resource-directory"/>).</t>

<t>After retrieving the AS2 address, the Client sends a Topic Keying Material Request, which is a token-less authorization as described in <xref target="I-D.seitz-ace-oauth-authz"/>, section 6.5. More specifically, the Client sends a POST request to the /token endpoint on AS2, that MUST contain in the payload:</t>

<t><list style="symbols">
  <t>the grant type set to “client_credentials”,</t>
  <t>the audience parameter set to the Broker,</t>
  <t>the scope parameter set to the topic,</t>
  <t>the cnf parameter containing the Client’s COSE key, if the Client is a publisher, and</t>
  <t>OPTIONALLY, other additional parameters such as the client id or the algorithm.</t>
</list></t>

<t>Note that, if present, the algorithm MUST be a Content Encryption Algorithm, as defined in Section 10 of <xref target="RFC8152"/>.
An example of the payload of a Topic Keying Material Request for a Publisher is specified in <xref target="fig-post-as2"/>.</t>

<figure title="Example of Topic Keying Material Request payload for a Publisher" anchor="fig-post-as2"><artwork align="center"><![CDATA[
{
  "grant_type" : "client_credentials",
  "aud" : "Broker1",
  "scope" : "Temp",
  "client_id" : "publisher1",
  "cnf" : 
    { / COSE_Key /
      / type / 1 : 2, / EC2 /
      / kid / 2 : h'11',
      / alg / 3 : -7, / ECDSA with SHA-256 /
      / crv / -1 : 1 , / P-256 /
      / x / -2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de1
      08de439c08551d', 
      / y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e
      9eecd0084d19c' 
    }
}
]]></artwork></figure>

<t>The AS2 verifies that the Client is authorized to access the topic and, if the “cnf” parameter is present, stores the public key of the Client.</t>

<t>The AS2 response contains an empty token and the keying material to protect the publication (“key” field in the payload). Moreover, the payload MUST contain the “profile” parameter, set to value “publisher”, and the “token_type” set to “none”.</t>

<t>TODO: define “key” parameter following ACE framework</t>

<t>The “key” parameter value MUST be a serialized COSE Key (see Section 7 of <xref target="RFC8152"/>), with the following values:</t>

<t><list style="symbols">
  <t>kty with value 4 (symmetric)</t>
  <t>alg with value defined by the AS2 (Content Encryption Algorithm)</t>
  <t>k with value the symmetric key value</t>
  <t>OPTIONALLY, kid with an identifier for the key value</t>
</list></t>

<t>An example for the response is detailed in <xref target="fig-resp-as2"/>.</t>

<figure title="Example of Topic Keying Material response payload for a Publisher" anchor="fig-resp-as2"><artwork align="center"><![CDATA[
{
  "access_token" : NULL,
  "token_type" : "none",
  "profile" : "publisher",
  "key" : h'a4010402421234030c205002e2cc3a9b92855220f255fff1c615bc'
 /{1: 4, 2: h'1234', 3: 12, -1: h'02e2cc3a9b92855220f255fff1c615bc'}/
}
]]></artwork></figure>

</section>
<section anchor="as1-as2-information" title="AS1, AS2 Information">

<t>The Client MUST be able to process the following response message from the Broker, in order to retrieve the correct AS1 and AS2 addresses.</t>

<t>This CoAP message MUST have the following characteristics: the CoAP Code MUST be 4.01 “Unauthorized”, the payload MUST be present and MUST include the full URI of both AS. An example using CBOR diagnostic notation is given below:</t>

<figure title="AS1, AS2 Information example" anchor="AS-info-ex"><artwork align="center"><![CDATA[
    4.01 Unauthorized
    Content-Format: application/ace+cbor
    {"AS1": "coaps://as1.example.com/token",
     "AS2": "coaps://as2.example.com/pubsubkey"}
]]></artwork></figure>

</section>
</section>
<section anchor="subscriber-profile" title="Subscriber Profile">

<t>In this section, it is specified how the Subscriber retrieves the keying material to protect the publication.</t>

<figure title="Phase 2: Subscriber side" anchor="pubsub-2"><artwork align="center"><![CDATA[
                                  +----------------+
                                  |                |
                                  | Authorization  |
                                  |    Server 2    |
                                  |                |
                                  +----------------+
                                            ^
                                            |
                                            +-----(E)------+
                                                           |
                                                           v     
                                                       +------------+  
                                                       |    CoAP    | 
                                                       |  Client -  |
                                                       |            |  
                                                       | Subscriber | 
                                                       |            |
                                                       +------------+
]]></artwork></figure>

<t>Step (E) between Subscriber and AS2 corresponds to the retrieval of the keying material to verify the publication, and is the same as (B) between Publisher and AS2 (<xref target="retr-cosekey"/>), with the following differences:</t>

<t><list style="symbols">
  <t>The POST request to the /token endpoint on AS2, does not contain the cnf parameter containing the Client’s COSE key.</t>
  <t>The AS2 response contains a “cnf” parameter whose value is set to a COSE Key Set, (Section 7 of <xref target="RFC8152"/>) i.e. an array of COSE Keys, which contains the public keys of all authorized Publishers, and the “profile” parameter is set to value “subscriber”</t>
</list></t>

<t>An example of the payload of a Topic Keying Material Request and corresponding response for a Subscriber is specified in <xref target="fig-post2-as2"/> and <xref target="fig-resp2-as2"/>.</t>

<figure title="Example of Topic Keying Material Request payload for a Subscriber" anchor="fig-post2-as2"><artwork align="center"><![CDATA[
{
  "grant_type" : "client_credentials",
  "aud" : "Broker1",
  "scope" : "Temp",
  "client_id" : "subscriber1"
}
]]></artwork></figure>

<figure title="Example of Topic Keying Material response payload for a Subscriber" anchor="fig-resp2-as2"><artwork align="center"><![CDATA[
{
  "access_token" : NULL,
  "token_type" : "none",
  "profile" : "subscriber",
  "key" : h'a4010402421234030c205002e2cc3a9b92855220f255fff1c615bc',
 /{1: 4, 2: h'1234', 3: 12, -1: h'02e2cc3a9b92855220f255fff1c615bc'}/
  "cnf" : [
   {
      1 : 2, / type EC2 /
      2 : h'11', / kid /
      3 : -7, / alg ECDSA with SHA-256 /
      -1 : 1 , / crv P-256 /
      -2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de43
      9c08551d', / x /
      -3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd
      0084d19c' / y /
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="pub-sub-protected-communication" title="Pub-Sub Protected Communication">

<t>This section specifies the communication Publisher-Broker and Subscriber-Broker, after the previous phases have taken place.</t>

<figure title="Phase 3: Secure communication between Publisher and Subscriber" anchor="pubsub-3"><artwork align="center"><![CDATA[
+------------+             +------------+              +------------+  
|   CoAP     |             |   CoAP     |              |    CoAP    | 
|  Client -  |             |  Server -  |              |  Client -  |
|            | ----(F)---> |            |              |            |  
| Publisher  |             |   Broker   | <----(G)---- | Subscriber | 
|            |             |            | -----(H)---> |            |
+------------+             +------------+              +------------+
]]></artwork></figure>

<t>The (F) message corresponds to the publication of a topic on the Broker.
The publication (the resource representation) is protected with COSE (<xref target="RFC8152"/>).
The (G) message is the subscription of the Subscriber, which is unprotected.
The (H) message is the response from the Broker, where the publication is protected with COSE.</t>

<t>The flow graph is presented below.</t>

<figure title="(F), (G), (H): Example of protected communication" anchor="E-F-G-ex"><artwork align="center"><![CDATA[
  Publisher                Broker               Subscriber
      | --- PUT /topic ----> |                       |
      |  protected with COSE |                       |
      |                      | <--- GET /topic ----- |
      |                      |                       |
      |                      | ---- response ------> |
      |                      |  protected with COSE  |
]]></artwork></figure>

<section anchor="using-cose-objects-to-protect-the-resource-representation" title="Using COSE Objects to protect the resource representation">

<t>The Publisher uses the symmetric COSE Key received from AS2 in exchange B (<xref target="retr-cosekey"/>) to protect the payload of the PUBLISH operation (Section 4.3 of <xref target="I-D.ietf-core-coap-pubsub"/>). Specifically, the COSE Key is used to create a COSE_Encrypt0 with algorithm specified by AS2. The Publisher uses the private key corresponding to the public key sent to the AS2 in exchange B (<xref target="retr-cosekey"/>) to countersign the COSE Object as specified in Section 4.5 of <xref target="RFC8152"/>. The CoAP payload is replaced by the COSE object before the publication is sent to the Broker.</t>

<t>The Subscriber uses the kid in the countersignature field in the COSE object to retrieve the right public key to verify the countersignature. It then uses the symmetric key received from AS2 to verify and decrypt the publication received in the payload of the CoAP Notification from the Broker.</t>

<t>The COSE object is constructed in the following way:</t>

<t><list style="symbols">
  <t>The protected Headers (as described in Section 3 of <xref target="RFC8152"/>) MAY contain the kid parameter, with value the kid of the symmetric COSE Key received in <xref target="retr-cosekey"/> and MUST contain the content encryption algorithm</t>
  <t>The unprotected Headers MUST contain the IV and the counter signature that includes:
  <list style="symbols">
      <t>the algorithm (same value as in the asymmetric COSE Key received in (B)) in the protected header</t>
      <t>the kid (same value as the kid of the asymmetric COSE Key received in (B)) in the unprotected header</t>
      <t>the signature computed as specified in Section 4.5 of <xref target="RFC8152"/></t>
    </list></t>
  <t>The ciphertext, computed over the plaintext that MUST contain the CoAP payload.</t>
</list></t>

<t>The external_aad, when using AEAD, is an empty string.</t>

<t>An example is given in <xref target="fig-cose-ex"/></t>

<figure title="Example of COSE Object sent in the payload of a PUBLISH operation" anchor="fig-cose-ex"><artwork align="center"><![CDATA[
16(
  [
    / protected / h'a2010c04421234' / {
        \ alg \ 1:12, \ AES-CCM-64-64-128 \
        \ kid \ 4: h'1234'
      } / , 
    / unprotected / {
      / iv / 5:h'89f52f65a1c580',
      / countersign / 7:[
        / protected / h'a10126' / {
          \ alg \ 1:-7
        } / , 
        / unprotected / {
          / kid / 4:h'11'
        }, 
        / signature / SIG / 64 bytes signature /
      ]
    }, 
    / ciphertext / h'8df0a3b62fccff37aa313c8020e971f8aC8d'
  ]
)
]]></artwork></figure>

<t>The encryption and decryption operations are described in sections 5.3 and 5.4 of <xref target="RFC8152"/>.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>In the profile described above, the Publisher and Subscriber use asymmetric crypto, which would make the message exchange quite heavy for small constrained devices. Moreover, all Subscribers must be able to access the public keys of all the Publishers to a specific topic to be able to verify the publications. Such a database could be set up and managed by the same entity having control of the topic, i.e. AS2.</t>

<t>An application where it is not critical that only authorized Publishers can publish on a topic may decide not to make use of the asymmetric crypto and only use symmetric encryption/MAC to confidentiality and integrity protect the publication, but this is not recommended since, as a result, any authorized Subscribers with access to the Broker may forge unauthorized publications without being detected. In this symmetric case the Subscribers would only need one symmetric key per topic, and would not need to know any information about the Publishers, that can be anonymous to it and the Broker.</t>

<t>Subscribers can be excluded from future publications through re-keying for a certain topic. This could be set up to happen on a regular basis, for certain applications. How this could be done is out of scope for this work.</t>

<t>The Broker is only trusted with verifying that the Publisher is authorized to publish, but is not trusted with the publications itself, which it cannot read nor modify. In this setting, caching of publications on the Broker is still allowed.</t>

<t>TODO: expand on security and Privacy considerations</t>

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

<t>TODO: “key” parameter, “publisher” and “subscriber” profile identifiers</t>

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>The author wishes to thank John Mattsson, Ludwig Seitz and Göran Selander for the useful discussion that helped shape this document.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC8152' target='https://www.rfc-editor.org/info/rfc8152'>
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>
<author initials='J.' surname='Schaad' fullname='J. Schaad'><organization /></author>
<date year='2017' month='July' />
<abstract><t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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></abstract>
</front>
<seriesInfo name='RFC' value='8152'/>
<seriesInfo name='DOI' value='10.17487/RFC8152'/>
</reference>



<reference  anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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='I-D.ietf-ace-oauth-authz'>
<front>
<title>Authentication and Authorization for Constrained Environments (ACE)</title>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<author initials='G' surname='Selander' fullname='Goeran Selander'>
    <organization />
</author>

<author initials='E' surname='Wahlstroem' fullname='Erik Wahlstroem'>
    <organization />
</author>

<author initials='S' surname='Erdtman' fullname='Samuel Erdtman'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<date month='August' day='8' year='2017' />

<abstract><t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments.  The framework is based on a set of building blocks including OAuth 2.0 and CoAP, thus making a well-known and widely used authorization solution suitable for IoT devices.  Existing specifications are used where possible, but where the constraints of IoT devices require it, extensions are added and profiles are defined.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-ace-oauth-authz-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-authz-07.txt' />
</reference>



<reference anchor='I-D.ietf-core-coap-pubsub'>
<front>
<title>Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)</title>

<author initials='M' surname='Koster' fullname='Michael Koster'>
    <organization />
</author>

<author initials='A' surname='Keranen' fullname='Ari Keranen'>
    <organization />
</author>

<author initials='J' surname='Jimenez' fullname='Jaime Jimenez'>
    <organization />
</author>

<date month='July' day='3' year='2017' />

<abstract><t>The Constrained Application Protocol (CoAP), and related extensions are intended to support machine-to-machine communication in systems where one or more nodes are resource constrained, in particular for low power wireless sensor networks.  This document defines a publish- subscribe broker for CoAP that extends the capabilities of CoAP for supporting nodes with long breaks in connectivity and/or up-time.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-coap-pubsub-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-coap-pubsub-02.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='I-D.seitz-ace-oauth-authz'>
<front>
<title>Authorization for the Internet of Things using OAuth 2.0</title>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<author initials='G' surname='Selander' fullname='Goran Selander'>
    <organization />
</author>

<author initials='E' surname='Wahlstroem' fullname='Erik Wahlstroem'>
    <organization />
</author>

<author initials='S' surname='Erdtman' fullname='Samuel Erdtman'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<date month='October' day='19' year='2015' />

<abstract><t>This memo defines how to use OAuth 2.0 as an authorization framework with Internet of Things (IoT) deployments, thus bringing a well-known and widely used security solution to IoT devices.  Where possible vanilla OAuth 2.0 is used, but where the limitations of IoT devices require it, profiles and extensions are provided.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-seitz-ace-oauth-authz-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-seitz-ace-oauth-authz-00.txt' />
</reference>



<reference anchor='I-D.gerdes-ace-dtls-authorize'>
<front>
<title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>

<author initials='S' surname='Gerdes' fullname='Stefanie Gerdes'>
    <organization />
</author>

<author initials='O' surname='Bergmann' fullname='Olaf Bergmann'>
    <organization />
</author>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<author initials='G' surname='Selander' fullname='Goeran Selander'>
    <organization />
</author>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<date month='March' day='13' year='2017' />

<abstract><t>This specification defines a profile for delegating client authentication and authorization in a constrained environment by establishing a Datagram Transport Layer Security (DTLS) channel between resource-constrained nodes.  The protocol relies on DTLS for communication security between entities in a constrained network.  A resource-constrained node 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='Internet-Draft' value='draft-gerdes-ace-dtls-authorize-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-gerdes-ace-dtls-authorize-01.txt' />
</reference>



<reference anchor='I-D.seitz-ace-oscoap-profile'>
<front>
<title>OSCOAP profile of the Authentication and Authorization for Constrained Environments Framework</title>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<author initials='F' surname='Palombini' fullname='Francesca Palombini'>
    <organization />
</author>

<author initials='M' surname='Gunnarsson' fullname='Martin Gunnarsson'>
    <organization />
</author>

<date month='July' day='24' year='2017' />

<abstract><t>This memo specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework.  It utilizes Object Security of CoAP (OSCOAP) and Ephemeral Diffie- Hellman over COSE (EDHOC) to provide communication security, server authentication, and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-seitz-ace-oscoap-profile-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-seitz-ace-oscoap-profile-04.txt' />
</reference>



<reference anchor='I-D.ietf-core-resource-directory'>
<front>
<title>CoRE Resource Directory</title>

<author initials='Z' surname='Shelby' fullname='Zach Shelby'>
    <organization />
</author>

<author initials='M' surname='Koster' fullname='Michael Koster'>
    <organization />
</author>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<author initials='P' surname='Stok' fullname='Peter Van der Stok'>
    <organization />
</author>

<author initials='C' surname='Amsuess' fullname='Christian Amsuess'>
    <organization />
</author>

<date month='July' day='3' year='2017' />

<abstract><t>In many M2M applications, direct discovery of resources is not practical due to sleeping nodes, disperse networks, or networks where multicast traffic is inefficient.  These problems can be solved by employing an entity called a Resource Directory (RD), which hosts descriptions of resources held on other servers, allowing lookups to be performed for those resources.  This document specifies the web interfaces that a Resource Directory supports in order for web servers to discover the RD and to register, maintain, lookup and remove resource descriptions.  Furthermore, new link attributes useful in conjunction with an RD are defined.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-resource-directory-11' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-resource-directory-11.txt' />
</reference>




    </references>


<!-- Local Words: -->
<!-- Local Variables: -->
<!-- coding: utf-8 -->
<!-- ispell-local-dictionary: "american" -->
<!-- End: -->



  </back>

<!-- ##markdown-source:
H4sIAF7HzFkAA+082XLbSJLv+Ipa+kHSNkGRoKiD0dOx1GFbO7KlNe2Z7bB7
HEWgSGIEAhwAlMyWNZ81PzA/tplZBwogSB3Wxj7sIPoQgaqsrMysvAHXdR0/
CcJ40meLfOweOk4e5pHos5NkcMWuFiN3uBixqzQZh5Fg4yRlg0U+FXEe+jwP
k5jxOKBbSRr+Lu/goJMkzvKUh7EI2Fl8E6ZJPINJGdsenJztOHw0SsVNn/kJ
n7vzxSiDdeZyDSdI/JjPAIMg5ePcnfMomY3COHS5L9yaCW7Ec5HlzqsA/t9n
Xrtz4La7bqfrAIZikqTLPsvywHHCedpnebrIcq/dPmp7Dk8F77Oh8BdpmC+d
2yS9nqTJYt5ngCT7M/wEurA3eMu5Fkt4HvTZeZyLNBa5e4roOU6WAwW+ApIx
LL4UmTMP++xznvhNliVpnopxBn8tZ/jHb47DiVR9h7kOgyuMsz573WJXepd0
V+7/dcpjX2Q+rzxNUmDWWRr6WZbEdEfMeBj12VhPaBmi/YdQ41p+MnMcJ07S
GXDpRvQdmPnh9clhp+f15Z9ep3OEf567p61QgDAgwRNE2MX//F565idpiRsA
L4zHJeg4NhNh/vs6QBORBiKjp0EeZS5XYiT6q7MzuZZk+SomqciSRYqAwlT4
OTLdcVBK82WfSITX8OzidZ81PsNe3f+G67eG47iuy/gIZdUHZn6chhnL5sIP
x1q+AzEGKc4YZ3PrEPDVQ8BXDgFQJgqzqUgzGgBUyvw0HOHvMEaAIMRwk2Ui
z1HSMl/EPA0T+dS3jpAojlCTLTIcDOuTmALTZwJFt8UIe41lKqIQ0AZUAEic
zUEWWcSXImWI/nweadzlzUydApYnZieCFjG7wEd4Y5Qm1yJtsXdA+ORGpE0W
5tZyG2CXiOJKOBXS6LsgrrNFrOC0JJ9mYRCAgnBe4SFMk2Dh48MHuHbLK3uK
ExA6SWLScZoL+XIuWDLW3FhLZ3Z3t+6E3N8jE0TBWMPQDDCSOwxwaQtE9SAh
DNjiK/ZRpLMwTqJkssQtCgYqiKEOyljj3afhx0ZT/p+9v6S/P5z916fzD2en
+Pfw7eDiwvwhRzjw4/LThXqOfxUzTy7fvTt7fyonvxv8Cv9DtjQurz6eX74f
XDQQ6RzIjNp5gWLIQHkiXUcCHoFGnKcih73xykbhqDHUK7BjpWFgf47zQfCA
jgUAEd+AczhXQhvzWRiFPGW3YT4l6gP0mTxBcCR8Mc8BizXEXOEHTdtMbZSn
SxDjm1DcsrtXifrzXhI9Gf0VsAOVhqKRrwoa3AC85b0lmya3+BPOYA6zqhJW
kunmCq02oqnFceALSxS3N+19hzav9EGmx65VuriGHLJO7QLIlqQKT/1piFtc
pIowoiTsGRAilnuioUTmv1uX0shGNdP1k1u5fqq9WZ70nVWu77U3q5PKLoua
VL1Zs9IQpAPUU6e0krrp1a70DPSeRQhz/aX21l/WjF7BhW4phIo1twc7GpHV
0XLY9tlOCbHvdUjTwOMde2O1pLhR/z7tkjOc0qrlJTY8Wnnm4A7oBMvtEO4n
iPsvrPKoSpHi4XcCcwLWEZSmi78//wxgTgHML7/hUCU8bh0Ya5rzvfyMkHld
IFNefc3P77SpK2PRK4Px17G0v/jjZ1rjDTELfg6NkVabWrdmDabu9ts6VF+G
UyXN8nfnrs9ekdZhFMr8oTGwtZXWyKiQycSUD73kRta4RzA8zVHNujwKJ/Ef
GqDgwBY1lGX4MCTlbxyiJrudhv4UjVQOXpt8lCfz0G/R+MGwA/Yhy+WDeQJO
EnpMfJQscrolKd8HMDwHjy+YJyFGTGgjeRQlt9JEKuaRY2cm6RW8zSsQNg8t
wH2IITI5qEAfx6To+y7AhZvyTEBUgyDHYZoh8FQI5vMYLXgAoRDq/jlPAayI
QPV3pF9UCF4q/rYQiKlyB9G0qYURBaZ9Q4k3kK6pHABtQWFfxkFQIot2WORs
MTcOZ8vx1i5sr6ZNutxvsarndOV8S/SfBqDl7FUxwH3kZZiEr4iWwDMkZkJj
JrAXoo70FzIw+8msxHPl+Gq7i5hB9CO5D5QAQoBp9lgQjsfAP9AjxhHnEBL6
oYTb16KEbJvCypKxBcLAbdxizdwqC5q284O3Sx6P9PT1VstBxpUdZMwLEeeK
ots6SmcDa/nOTotdKuRzierz0C94sbIFiwV0tJGOYZ6JaLwGKW9HnsZ6jMk7
klKqHDqU7XzdeK9mvFfvS/3v2b2qbn+m3asMfabdW/vr5exe5VnZ7r2MxZI3
++rfumvdfXpmzd+SIAvxUWtsPXK+vMoy+tCl52+5m68VpDRua3zRylU6CBUj
D0FbwU6VnnSc81jFaMKXMVaYsyJkA/tGAVqtQWhCqCft9oqhUXkPbWYw/tG6
/1rIQO5WRBH+Hx9CJJyG4oZHOjKCwB1P7gyApSHcXq9hyif7X9FRLXovHx09
ITR6Slz0lDDoR6IeeT1BMz0hsHl88PJ4Rf14VfwEmI/efemEYaygygkdHS5c
oXvLOn0LySwMxIMhASiaMKPELabe5SlBDXCLCd1AzMHjRjJK77nvOP9OHpeK
IUAFcVqNkmswTbks6EPFsVRn4Fznt0LEFWdS+17SPwAfHNOVOg2cLSAkAcV0
+vFiyB7MAGFu+HJ4cgnsfygV1GIg+iA0IAywk8IFU/sxKG5lZYX4BGXI4ISQ
Tg9EjgUOx4ElgR4pOLnzJA6MZh5IdfwR1TH7IBU6keYDDQRu1lOuLvRDmAph
sQqcgA4BMaL5DjvXNQ/U3QPL0tR5oWQckkhI9tIh8+loNW37Uh2Jf9PYjPAD
EwFUr6OC+OaD/ztZt9ljE6ViMFfGLhMIJ7SjGtxtyfDhwqebF64DbQRbZLUy
XQkhWuyUTgrKiIpLLBoDZ3wR3sh8KQhDU5p7FXhieUF847M5EI7kHcOBbMqv
RRMFW8onClviJ1FmjsbZ6dvLk5p1rUIGMQjwnvEli5McF8MRsQBMcFXldJCb
Tue7byMDbshYHysYt8hglqxTYRwErEGQSAeM0wkbGVa3SOCbDPmNw5D88ijI
oL1wa0KJsT70uAJOPq5l14/4JxTLShxg2RmICge+jyNwq6jGMaZy1UjAjRZV
MT7Yi51cDs/YH4UqBMkllJbUodXdK0TP9ZNMAFparxJNcQX0yxISzBGwsyLh
haMOeCawn5AyMbSJiYhFCko7X1ZPJqBiefghqisIl1NZzFCmLyz7latumhq3
4TJGrbgwwaBt2WcyTqiwqI5ptBjelaa2cn03Ux+4Nk1Fay4jUMwd2QcNlv2h
VWvwMFOVJQYeYWj/Ryl977T02Tun65eXWfVn2wtYWXXVPfuxVatOxrH2Lo77
2qKkeqMsVWbqARfjJEFtgg4CT6moSTk669wpWSfdp3XBtpJZ5rV2KLkBp5cq
i0LnqHAaKPB0ogyTzLhgIhHPQF5KcVp26t3gV7IbUlcGQYp7AgB0MCXoMmST
gWQj7l9rbXSiLCBlaTQhZFZt5TBgwkXtpbMD9jbmUTJJFlm01NDsrTexuyIX
PNCLh3GYI68/xcblCVYXUUqtaWFHe42S5Br1e04aMAtTSpfidqiWrDsQmOlA
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
sswcv4rZABrCqedxoxh8FgcS4v8AH/CncxpUAAA=

-->

</rfc>

