<?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-00" 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="March" day="13"/>

    <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="I-D.ietf-cose-msg"/>.
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 “OSCON”, 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="I-D.ietf-cose-msg"/>), 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" : "OSCON",
  "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="I-D.ietf-cose-msg"/>) i.e. an array of COSE Keys, which contains the public keys of all authorized Publishers</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" : "OSCON",
  "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="I-D.ietf-cose-msg"/>).
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="I-D.ietf-cose-msg"/>. 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="I-D.ietf-cose-msg"/>) 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="I-D.ietf-cose-msg"/></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="I-D.ietf-cose-msg"/>.</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, OSCON profile identifier</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='I-D.ietf-cose-msg'>
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>

<author initials='J' surname='Schaad' fullname='Jim Schaad'>
    <organization />
</author>

<date month='November' day='22' year='2016' />

<abstract><t>Concise Binary Object Representation (CBOR) is 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) specification.  This specification describes how to create and process signature, message authentication codes and encryption using CBOR for serialization.  This specification additionally specifies how to represent cryptographic keys using CBOR.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-cose-msg-24' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-cose-msg-24.txt' />
</reference>



<reference  anchor='RFC2119' target='http://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='February' day='6' 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-05' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-authz-05.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='October' day='21' year='2016' />

<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-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-coap-pubsub-00.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 ACE</title>

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

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

<date month='October' day='31' year='2016' />

<abstract><t>This memo specifies a profile for the ACE framework for Authentication and Authorization.  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-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-seitz-ace-oscoap-profile-01.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>

<date month='October' day='31' year='2016' />

<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-09' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-resource-directory-09.txt' />
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
FMZVAAA=

-->

</rfc>

