< draft-palombini-ace-coap-pubsub-profile-03.txt   draft-palombini-ace-coap-pubsub-profile-04.txt >
ACE Working Group F. Palombini ACE Working Group F. Palombini
Internet-Draft Ericsson Internet-Draft Ericsson
Intended status: Standards Track June 27, 2018 Intended status: Standards Track April 03, 2019
Expires: December 29, 2018 Expires: October 5, 2019
CoAP Pub-Sub Profile for Authentication and Authorization for CoAP Pub-Sub Profile for Authentication and Authorization for
Constrained Environments (ACE) Constrained Environments (ACE)
draft-palombini-ace-coap-pubsub-profile-03 draft-palombini-ace-coap-pubsub-profile-04
Abstract Abstract
This specification defines a profile for authentication and This specification defines a profile for authentication and
authorization for publishers and subscribers in a pub-sub setting authorization for publishers and subscribers in a pub-sub setting
scenario in a constrained environment, using the ACE framework. This scenario in a constrained environment, using the ACE framework. This
profile relies on transport layer or application layer security to profile relies on transport layer or application layer security to
authorize the publisher to the broker. Moreover, it relies on authorize the publisher to the broker. Moreover, it relies on
application layer security for publisher-broker and subscriber-broker application layer security for publisher-broker and subscriber-broker
communication. communication.
skipping to change at page 1, line 37 skipping to change at page 1, line 37
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 29, 2018. This Internet-Draft will expire on October 5, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 21 skipping to change at page 2, line 21
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2
2. Profile Overview . . . . . . . . . . . . . . . . . . . . . . 3 2. Profile Overview . . . . . . . . . . . . . . . . . . . . . . 3
3. coap_pubsub Profile . . . . . . . . . . . . . . . . . . . . . 4 3. coap_pubsub Profile . . . . . . . . . . . . . . . . . . . . . 4
3.1. Retrieval of COSE Key for protection of content . . . . . 5 3.1. Retrieval of COSE Key for protection of content . . . . . 5
4. Publisher . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Publisher . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Subscriber . . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Subscriber . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Pub-Sub Protected Communication . . . . . . . . . . . . . . . 11 6. Pub-Sub Protected Communication . . . . . . . . . . . . . . . 11
6.1. Using COSE Objects to protect the resource representation 12 6.1. Using COSE Objects to protect the resource representation 12
7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
8.1. ACE OAuth Profile Registry . . . . . . . . . . . . . . . 14
8.2. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 15
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
9.1. Normative References . . . . . . . . . . . . . . . . . . 15 9.1. Normative References . . . . . . . . . . . . . . . . . . 15
9.2. Informative References . . . . . . . . . . . . . . . . . 15 9.2. Informative References . . . . . . . . . . . . . . . . . 16
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 16 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 16
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction 1. Introduction
The publisher-subscriber setting allows for devices with limited The publisher-subscriber setting allows for devices with limited
reachability to communicate via a broker that enables store-and- reachability to communicate via a broker that enables store-and-
forward messaging between the devices. The pub-sub scenario using forward messaging between the devices. The pub-sub scenario using
the Constrained Application Protocol (CoAP) is specified in the Constrained Application Protocol (CoAP) is specified in
[I-D.ietf-core-coap-pubsub]. This document defines a way to [I-D.ietf-core-coap-pubsub]. This document defines a way to
authorize nodes in a CoAP pub-sub type of setting, using the ACE authorize nodes in a CoAP pub-sub type of setting, using the ACE
framework [I-D.ietf-ace-oauth-authz]. framework [I-D.ietf-ace-oauth-authz].
1.1. Terminology 1.1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
Readers are expected to be familiar with the terms and concepts Readers are expected to be familiar with the terms and concepts
described in [I-D.ietf-ace-oauth-authz], described in [I-D.ietf-ace-oauth-authz], [I-D.ietf-ace-key-groupcomm]
[I-D.palombini-ace-key-groupcomm] and [I-D.ietf-core-coap-pubsub]. and [I-D.ietf-core-coap-pubsub]. In particular, analogously to
In particular, analogously to [I-D.ietf-ace-oauth-authz], terminology [I-D.ietf-ace-oauth-authz], terminology for entities in the
for entities in the architecture such as Client (C), Resource Server architecture such as Client (C), Resource Server (RS), and
(RS), and Authorization Server (AS) is defined in OAuth 2.0 [RFC6749] Authorization Server (AS) is defined in OAuth 2.0 [RFC6749] and
and [I-D.ietf-ace-actors], and terminology for entities such as the [I-D.ietf-ace-actors], and terminology for entities such as the Key
Key Distribution Center (KDC) and Dispatcher in Distribution Center (KDC) and Dispatcher in
[I-D.palombini-ace-key-groupcomm]. [I-D.ietf-ace-key-groupcomm].
2. Profile Overview 2. Profile Overview
The objective of this document is to specify how to protect a CoAP The objective of this document is to specify how to protect a CoAP
pub-sub communication, as described in [I-D.ietf-core-coap-pubsub], pub-sub communication, as described in [I-D.ietf-core-coap-pubsub],
using [I-D.palombini-ace-key-groupcomm], which itself expands the Ace using [I-D.ietf-ace-key-groupcomm], which itself expands the Ace
framework ([I-D.ietf-ace-oauth-authz]), and profiles framework ([I-D.ietf-ace-oauth-authz]), and profiles
([I-D.ietf-ace-dtls-authorize], [I-D.ietf-ace-oscore-profile]). ([I-D.ietf-ace-dtls-authorize], [I-D.ietf-ace-oscore-profile]).
The architecture of the scenario is shown in Figure 1. The architecture of the scenario is shown in Figure 1.
+----------------+ +----------------+ +----------------+ +----------------+
| | | | | | | |
| Authorization | | Authorization | | Authorization | | Authorization |
| Server 1 | | Server 2 | | Server 1 | | Server 2 |
| | | | | | | |
skipping to change at page 3, line 36 skipping to change at page 3, line 38
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
| CoAP | ----(C)---> | CoAP | | CoAP | | CoAP | ----(C)---> | CoAP | | CoAP |
| Client - | ----(E)---> | Server - | | Client - | | Client - | ----(E)---> | Server - | | Client - |
| | | | <----(F)---- | | | | | | <----(F)---- | |
| Publisher | | Broker | -----(G)---> | Subscriber | | Publisher | | Broker | -----(G)---> | Subscriber |
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
Figure 1: Architecture CoAP pubsub with Authorization Servers Figure 1: Architecture CoAP pubsub with Authorization Servers
The RS is the broker, which contains the topic. This node The RS is the broker, which contains the topic. This node
corresponds to the Dispatcher, in [I-D.palombini-ace-key-groupcomm]. corresponds to the Dispatcher, in [I-D.ietf-ace-key-groupcomm]. The
The AS1 hosts the policies about the Broker: what endpoints are AS1 hosts the policies about the Broker: what endpoints are allowed
allowed to Publish on the Broker. The Clients access this node to to Publish on the Broker. The Clients access this node to get write
get write access to the Broker. The AS2 hosts the policies about the access to the Broker. The AS2 hosts the policies about the topic:
topic: what endpoints are allowed to access what topic. This node what endpoints are allowed to access what topic. This node
represents both the AS and Key Distribution Center roles from represents both the AS and Key Distribution Center roles from
[I-D.palombini-ace-key-groupcomm]. [I-D.ietf-ace-key-groupcomm].
There are four phases, the first three can be done in parallel. There are four phases, the first three can be done in parallel.
1. The Publisher requests publishing access to the Broker at the 1. The Publisher requests publishing access to the Broker at the
AS1, and communicates with the Broker to set up security. AS1, and communicates with the Broker to set up security.
2. The Publisher requests access to a specific topic at the AS2 2. The Publisher requests access to a specific topic at the AS2
3. The Subscriber requests access to a specific topic at the AS2. 3. The Subscriber requests access to a specific topic at the AS2.
4. The Publisher and the Subscriber securely post to and get 4. The Publisher and the Subscriber securely post to and get
publications from the Broker. publications from the Broker.
This exchange aims at setting up 2 different security associations: This exchange aims at setting up 2 different security associations:
on the one hand, the Publisher has a security association with the on the one hand, the Publisher has a security association with the
Broker, to protect the communication and securely authorize the Broker, to protect the communication and securely authorize the
Publisher to publish on a topic (Security Association 1). On the Publisher to publish on a topic (Security Association 1). On the
other hand, the Publisher has a security association with the other hand, the Publisher has a security association with the
skipping to change at page 4, line 16 skipping to change at page 4, line 17
publications from the Broker. publications from the Broker.
This exchange aims at setting up 2 different security associations: This exchange aims at setting up 2 different security associations:
on the one hand, the Publisher has a security association with the on the one hand, the Publisher has a security association with the
Broker, to protect the communication and securely authorize the Broker, to protect the communication and securely authorize the
Publisher to publish on a topic (Security Association 1). On the Publisher to publish on a topic (Security Association 1). On the
other hand, the Publisher has a security association with the other hand, the Publisher has a security association with the
Subscriber, to protect the publication content itself (Security Subscriber, to protect the publication content itself (Security
Association 2). The Security Association 1 is set up using AS1 and a Association 2). The Security Association 1 is set up using AS1 and a
profile of [I-D.ietf-ace-oauth-authz], the Security Association 2 is profile of [I-D.ietf-ace-oauth-authz], the Security Association 2 is
set up using AS2 and [I-D.palombini-ace-key-groupcomm]. set up using AS2 and [I-D.ietf-ace-key-groupcomm].
Note that, analogously to the Publisher, the Subscriber can also set Note that, analogously to the Publisher, the Subscriber can also set
up an additional security association with the Broker, using an AS, up an additional security association with the Broker, using an AS,
in the same way the Publisher does with AS1. In this case, only in the same way the Publisher does with AS1. In this case, only
authorized Subscribers would be able to get notifications from the authorized Subscribers would be able to get notifications from the
Broker. The overhead would be that each Subscriber should access the Broker. The overhead would be that each Subscriber should access the
AS and get all the information to start a secure exchange with the AS and get all the information to start a secure exchange with the
Broker. Broker.
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
skipping to change at page 4, line 46 skipping to change at page 4, line 47
Association 2 Association 2
Note that AS1 and AS2 might either be co-resident or be 2 separate Note that AS1 and AS2 might either be co-resident or be 2 separate
physical entities, in which case access control policies must be physical entities, in which case access control policies must be
exchanged between AS1 and AS2, so that they agree on rights for exchanged between AS1 and AS2, so that they agree on rights for
joining nodes about specific topics. How the policies are exchanged joining nodes about specific topics. How the policies are exchanged
is out of scope for this profile. is out of scope for this profile.
3. coap_pubsub Profile 3. coap_pubsub Profile
This profile uses [I-D.palombini-ace-key-groupcomm], which expands This profile uses [I-D.ietf-ace-key-groupcomm], which expands the ACE
the ACE framework. This document specifies which exact parameters framework. This document specifies which exact parameters from
from [I-D.palombini-ace-key-groupcomm] have to be used, and the [I-D.ietf-ace-key-groupcomm] have to be used, and the values for each
values for each parameter. parameter.
The Publisher and the Subscriber map to the Client in The Publisher and the Subscriber map to the Client in
[I-D.palombini-ace-key-groupcomm], the AS2 maps to the AS and to the [I-D.ietf-ace-key-groupcomm], the AS2 maps to the AS and to the KDC,
KDC, the Broker maps to the Dispatcher. the Broker maps to the Dispatcher.
Note that both publishers and subscribers use the same profile, Note that both publishers and subscribers use the same profile,
called "coap_pubsub". called "coap_pubsub".
3.1. Retrieval of COSE Key for protection of content 3.1. Retrieval of COSE Key for protection of content
This phase is common to both Publisher and Subscriber. To maintain This phase is common to both Publisher and Subscriber. To maintain
the generality, the Publisher or Subscriber is referred as Client in the generality, the Publisher or Subscriber is referred as Client in
this section. this section.
skipping to change at page 5, line 38 skipping to change at page 5, line 38
Figure 2: B: Access request - response Figure 2: B: Access request - response
Complementary to what is defined in [I-D.ietf-ace-oauth-authz] Complementary to what is defined in [I-D.ietf-ace-oauth-authz]
(Section 5.1.1), to determine the AS2 in charge of a topic hosted at (Section 5.1.1), 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 the Broker, the Broker MAY send the address of both the AS in charge
of the topic back to the Client in the 'AS' parameter in the AS of the topic back to the Client in the 'AS' parameter in the AS
Information, as a response to an Unauthorized Resource Request Information, as a response to an Unauthorized Resource Request
(Section 5.1.2). An example using CBOR diagnostic notation is given (Section 5.1.2). An example using CBOR diagnostic notation is given
below: below:
4.01 Unauthorized 4.01 Unauthorized
Content-Format: application/ace+cbor Content-Format: application/ace+cbor
{"AS1": "coaps://as1.example.com/token", {"AS": "coaps://as1.example.com/token,
"AS2": "coaps://as2.example.com/pubsubkey"} coaps://as2.example.com/pubsubkey"}
Figure 3: AS1, AS2 Information example Figure 3: AS1, AS2 Information example
After retrieving the AS2 address, the Client sends an Authorization + After retrieving the AS2 address, the Client sends an Authorization +
Key Distribution Request, which is an Authorization Request merged Key Distribution Request, which is an Authorization Request merged
with a Key Distribution Request, as described in with a Key Distribution Request, as described in
[I-D.palombini-ace-key-groupcomm], Sections 3.1 and 4.1. The reason [I-D.ietf-ace-key-groupcomm], Sections 3.1 and 4.1. The reason for
for merging these two messages is that the AS2 is both the AS and the merging these two messages is that the AS2 is both the AS and the
KDC, in this setting, so the Authorization Response and the Post KDC, in this setting, so the Authorization Response and the Post
Token message are not necessary. Token message are not necessary.
More specifically, the Client sends a POST request to the /token More specifically, the Client sends a POST request to the /token
endpoint on AS2, that MUST contain in the payload (formatted as a endpoint on AS2, that MUST contain in the payload (formatted as a
CBOR map): CBOR map):
o the following fields from the Authorization Request (Section 3.1 o the following fields from the Authorization Request (Section 3.1
of [I-D.palombini-ace-key-groupcomm]): of [I-D.ietf-ace-key-groupcomm]):
* the grant type set to "client_credentials", * the grant type set to "client_credentials",
* OPTIONALLY, if needed, other additional parameters such as * OPTIONALLY, if needed, other additional parameters such as
"Client_id" "client_id"
o the following fields from the Key Distribution Request o the following fields from the Key Distribution Request
(Section 4.1 of [I-D.palombini-ace-key-groupcomm]): (Section 4.1 of [I-D.ietf-ace-key-groupcomm]):
* the client_cred parameter containing the Client's public key, * the client_cred parameter containing the Client's public key,
if the Client needs to directly send that to the AS2, if the Client needs to directly send that to the AS2,
* the scope parameter set to a CBOR array containing the broker's * the scope parameter set to a CBOR array containing the broker's
topic as first element and the string "publisher" for topic as first element and the string "publisher" for
publishers and "subscriber" for subscribers as second element publishers and "subscriber" for subscribers as second element
* the get_pub_keys parameter set to the empty array if the Client * the get_pub_keys parameter set to the empty array if the Client
needs to retrieve the public keys of the other pubsub members needs to retrieve the public keys of the other pubsub members
* OPTIONALLY, if needed, the pub_keys_repos parameters * OPTIONALLY, if needed, the pub_keys_repos parameter
Note that the alg parameter in the client_cred COSE_Key MUST be a Note that the alg parameter in the client_cred COSE_Key MUST be a
signing algorithm, as defined in section 8 of [RFC8152]. signing algorithm, as defined in section 8 of [RFC8152].
Examples of the payload of a Authorization + Key Distribution Request Examples of the payload of a Authorization + Key Distribution Request
are specified in Figure 5 and Figure 8. are specified in Figure 5 and Figure 8.
The AS2 verifies that the Client is authorized to access the topic The AS2 verifies that the Client is authorized to access the topic
and, if the 'client_cred' parameter is present, stores the public key and, if the 'client_cred' parameter is present, stores the public key
of the Client. of the Client.
The AS2 response is an Authorization + Key Distribution Response, see The AS2 response is an Authorization + Key Distribution Response, see
Section 4.2 of [I-D.palombini-ace-key-groupcomm]. The payload Section 4.2 of [I-D.ietf-ace-key-groupcomm]. The payload (formatted
(formatted as a CBOR map) MUST contain: as a CBOR map) MUST contain:
o the following fields from the Authorization Response (Section 3.2 o the following fields from the Authorization Response (Section 3.2
of [I-D.palombini-ace-key-groupcomm]): of [I-D.ietf-ace-key-groupcomm]):
* profile set to "coap_pubsub" * profile set to "coap_pubsub"
* scope parameter (optionally), set to a CBOR array containing * scope parameter (optionally), set to a CBOR array containing
the broker's topic as first element and the string "publisher" the broker's topic as first element and the string "publisher"
for publishers and "subscriber" for subscribers as second for publishers and "subscriber" for subscribers as second
element element
o the following fields from the Key Distribution Response o the following fields from the Key Distribution Response
(Section 4.2 of [I-D.palombini-ace-key-groupcomm]): (Section 4.2 of [I-D.ietf-ace-key-groupcomm]):
* "key" parameter including: * kty parameter identifies a key type "COSE_Key", as defined in
Section 8.2.
* key parameter, which contains a "COSE_Key" object (defined in
[RFC8152], containing:
+ kty with value 4 (symmetric) + kty with value 4 (symmetric)
+ alg with value defined by the AS2 (Content Encryption + alg with value defined by the AS2 (Content Encryption
Algorithm) Algorithm)
+ Base IV with value defined by the AS2 + Base IV with value defined by the AS2
+ k with value the symmetric key value + k with value the symmetric key value
+ OPTIONALLY, exp with the expiration time of the key
+ OPTIONALLY, kid with an identifier for the key value + OPTIONALLY, kid with an identifier for the key value
* "pub_keys", containing the public keys of all authorized * "pub_keys", containing the public keys of all authorized
signing members, if the "get_pub_keys" parameter was present signing members, if the "get_pub_keys" parameter was present
and set to the empty array in the Authorization + Key and set to the empty array in the Authorization + Key
Distribution Request Distribution Request
Examples for the response payload are detailed in Figure 6 and Examples for the response payload are detailed in Figure 6 and
Figure 9. Figure 9.
skipping to change at page 8, line 29 skipping to change at page 8, line 29
| | | | | | | |
| Publisher | | Broker | | Publisher | | Broker |
+------------+ +------------+ +------------+ +------------+
Figure 4: Phase 1: Publisher side Figure 4: Phase 1: Publisher side
This is a combination of two independent phases: This is a combination of two independent phases:
o one is the establishment of a secure connection between Publisher o one is the establishment of a secure connection between Publisher
and Broker, using an ACE profile such as DTLS and Broker, using an ACE profile such as DTLS
[I-D.ietf-ace-dtls-authorize] or OSCOAP [I-D.ietf-ace-dtls-authorize] or OSCORE
[I-D.ietf-ace-oscore-profile]. (A)(C) [I-D.ietf-ace-oscore-profile]. (A)(C)
o the other is the Publisher's retrieval of keying material to o the other is the Publisher's retrieval of keying material to
protect the publication. (B) protect the publication. (B)
In detail: In detail:
(A) corresponds to the Access Token Request and Response between (A) corresponds to the Access Token Request and Response between
Publisher and Authorization Server to retrieve the Access Token and Publisher and Authorization Server to retrieve the Access Token and
RS (Broker) Information. As specified, the Publisher has the role of RS (Broker) Information. As specified, the Publisher has the role of
a CoAP client, the Broker has the role of the CoAP server. a CoAP client, the Broker has the role of the CoAP server.
(C) corresponds to the exchange between Publisher and Broker, where (C) corresponds to the exchange between Publisher and Broker, where
the Publisher sends its access token to the Broker and establishes a the Publisher sends its access token to the Broker and establishes a
secure connection with the Broker. Depending on the Information secure connection with the Broker. Depending on the Information
received in (A), this can be for example DTLS handshake, or other received in (A), this can be for example DTLS handshake, or other
protocols. Depending on the application, there may not be the need protocols. Depending on the application, there may not be the need
for this set up phase: for example, if OSCOAP is used directly. for this set up phase: for example, if OSCORE is used directly.
(A) and (C) details are specified in the profile used. (A) and (C) details are specified in the profile used.
(B) corresponds to the retrieval of the keying material to protect (B) corresponds to the retrieval of the keying material to protect
the publication, and uses [I-D.palombini-ace-key-groupcomm]. The the publication, and uses [I-D.ietf-ace-key-groupcomm]. The details
details are defined in Section 3.1. are defined in Section 3.1.
An example of the payload of an Authorization + Key Distribution An example of the payload of an Authorization + Key Distribution
Request and corresponding Response for a Publisher is specified in Request and corresponding Response for a Publisher is specified in
Figure 5 and Figure 6. Figure 5 and Figure 6.
{ {
"grant_type" : "client_credentials", "grant_type" : "client_credentials",
"scope" : ["Broker1/Temp", "publisher"], "scope" : ["Broker1/Temp", "publisher"],
"client_id" : "publisher1", "client_id" : "publisher1",
"client_cred" : "client_cred" :
skipping to change at page 9, line 35 skipping to change at page 9, line 35
/ y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e / y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e
9eecd0084d19c' 9eecd0084d19c'
} }
} }
Figure 5: Authorization + Key Distribution Request payload for a Figure 5: Authorization + Key Distribution Request payload for a
Publisher Publisher
{ {
"profile" : "coap_pubsub", "profile" : "coap_pubsub",
"kty" : "COSE_Key",
"key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7', "key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7',
-1: h'02e2cc3a9b92855220f255fff1c615bc'} -1: h'02e2cc3a9b92855220f255fff1c615bc'}
} }
Figure 6: Authorization + Key Distribution Response payload for a Figure 6: Authorization + Key Distribution Response payload for a
Publisher Publisher
5. Subscriber 5. Subscriber
In this section, it is specified how the Subscriber retrieves the In this section, it is specified how the Subscriber retrieves the
skipping to change at page 11, line 17 skipping to change at page 11, line 17
"scope" : ["Broker1/Temp", "subscriber"], "scope" : ["Broker1/Temp", "subscriber"],
"get_pub_keys" : [ ] "get_pub_keys" : [ ]
} }
Figure 8: Authorization + Key Distribution Request payload for a Figure 8: Authorization + Key Distribution Request payload for a
Subscriber Subscriber
{ {
"profile" : "coap_pubsub", "profile" : "coap_pubsub",
"scope" : ["Broker1/Temp", "subscriber"], "scope" : ["Broker1/Temp", "subscriber"],
"kty" : "COSE_Key"
"key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7', "key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7',
-1: h'02e2cc3a9b92855220f255fff1c615bc'}, -1: h'02e2cc3a9b92855220f255fff1c615bc'},
"pub_keys" : [ "pub_keys" : [
{ {
1 : 2, / type EC2 / 1 : 2, / type EC2 /
2 : h'11', / kid / 2 : h'11', / kid /
3 : -7, / alg ECDSA with SHA-256 / 3 : -7, / alg ECDSA with SHA-256 /
-1 : 1 , / crv P-256 / -1 : 1 , / crv P-256 /
-2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de43 -2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de43
9c08551d', / x / 9c08551d', / x /
skipping to change at page 13, line 13 skipping to change at page 13, line 13
received in (B)) in the protected header received in (B)) in the protected header
* the kid (same value as the kid of the asymmetric COSE Key * the kid (same value as the kid of the asymmetric COSE Key
received in (B)) in the unprotected header received in (B)) in the unprotected header
* the signature computed as specified in Section 4.5 of [RFC8152] * the signature computed as specified in Section 4.5 of [RFC8152]
o The ciphertext, computed over the plaintext that MUST contain the o The ciphertext, computed over the plaintext that MUST contain the
CoAP payload. CoAP payload.
The external_aad, when using AEAD, is an empty string. The external_aad is an empty string.
An example is given in Figure 12 An example is given in Figure 12
16( 16(
[ [
/ protected / h'a2010c04421234' / { / protected / h'a2010c04421234' / {
\ alg \ 1:12, \ AES-CCM-64-64-128 \ \ alg \ 1:12, \ AES-CCM-64-64-128 \
\ kid \ 4: h'1234' \ kid \ 4: h'1234'
} / , } / ,
/ unprotected / { / unprotected / {
skipping to change at page 14, line 28 skipping to change at page 14, line 28
Subscribers can be excluded from future publications through re- Subscribers can be excluded from future publications through re-
keying for a certain topic. This could be set up to happen on a 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 regular basis, for certain applications. How this could be done is
out of scope for this work. out of scope for this work.
The Broker is only trusted with verifying that the Publisher is The Broker is only trusted with verifying that the Publisher is
authorized to publish, but is not trusted with the publications authorized to publish, but is not trusted with the publications
itself, which it cannot read nor modify. In this setting, caching of itself, which it cannot read nor modify. In this setting, caching of
publications on the Broker is still allowed. publications on the Broker is still allowed.
TODO: expand on security and Privacy considerations TODO: expand on security and privacy considerations
8. IANA Considerations 8. IANA Considerations
8.1. ACE OAuth Profile Registry
The following registrations are done for the ACE OAuth Profile The following registrations are done for the ACE OAuth Profile
Registry following the procedure specified in Registry following the procedure specified in
[I-D.ietf-ace-oauth-authz]. [I-D.ietf-ace-oauth-authz].
Note to RFC Editor: Please replace all occurrences of "[[This Note to RFC Editor: Please replace all occurrences of "[[This
document]]" with the RFC number of this specification and delete this document]]" with the RFC number of this specification and delete this
paragraph. paragraph.
Name: coap_pubsub Name: coap_pubsub
Description: Profile for delegating client authentication and Description: Profile for delegating client authentication and
authorization for publishers and subscribers in a pub-sub setting authorization for publishers and subscribers in a pub-sub setting
scenario in a constrained environment. scenario in a constrained environment.
CBOR Key: TBD CBOR Key: TBD
Reference: [[This document]] Reference: [[This document]]
8.2. ACE Groupcomm Key Registry
The following registrations are done for the ACE Groupcomm Key
Registry following the procedure specified in
[I-D.ietf-ace-key-groupcomm].
Note to RFC Editor: Please replace all occurrences of "[[This
document]]" with the RFC number of this specification and delete this
paragraph.
Name: COSE_Key
Key Type Value: TBD
Profile:
Description: COSE_Key object
References: [RFC8152]
9. References 9. References
9.1. Normative References 9.1. Normative References
[I-D.ietf-ace-key-groupcomm]
Palombini, F. and M. Tiloca, "Key Provisioning for Group
Communication using ACE", draft-ietf-ace-key-groupcomm-01
(work in progress), March 2019.
[I-D.ietf-ace-oauth-authz] [I-D.ietf-ace-oauth-authz]
Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and
H. Tschofenig, "Authentication and Authorization for H. Tschofenig, "Authentication and Authorization for
Constrained Environments (ACE) using the OAuth 2.0 Constrained Environments (ACE) using the OAuth 2.0
Framework (ACE-OAuth)", draft-ietf-ace-oauth-authz-12 Framework (ACE-OAuth)", draft-ietf-ace-oauth-authz-24
(work in progress), May 2018. (work in progress), March 2019.
[I-D.ietf-core-coap-pubsub] [I-D.ietf-core-coap-pubsub]
Koster, M., Keranen, A., and J. Jimenez, "Publish- Koster, M., Keranen, A., and J. Jimenez, "Publish-
Subscribe Broker for the Constrained Application Protocol Subscribe Broker for the Constrained Application Protocol
(CoAP)", draft-ietf-core-coap-pubsub-04 (work in (CoAP)", draft-ietf-core-coap-pubsub-08 (work in
progress), March 2018. progress), March 2019.
[I-D.palombini-ace-key-groupcomm]
Palombini, F. and M. Tiloca, "Key Provisioning for Group
Communication using ACE", draft-palombini-ace-key-
groupcomm-00 (work in progress), March 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework",
RFC 6749, DOI 10.17487/RFC6749, October 2012, RFC 6749, DOI 10.17487/RFC6749, October 2012,
<https://www.rfc-editor.org/info/rfc6749>. <https://www.rfc-editor.org/info/rfc6749>.
[RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)",
RFC 8152, DOI 10.17487/RFC8152, July 2017, RFC 8152, DOI 10.17487/RFC8152, July 2017,
<https://www.rfc-editor.org/info/rfc8152>. <https://www.rfc-editor.org/info/rfc8152>.
9.2. Informative References 9.2. Informative References
[I-D.ietf-ace-actors] [I-D.ietf-ace-actors]
Gerdes, S., Seitz, L., Selander, G., and C. Bormann, "An Gerdes, S., Seitz, L., Selander, G., and C. Bormann, "An
architecture for authorization in constrained architecture for authorization in constrained
environments", draft-ietf-ace-actors-06 (work in environments", draft-ietf-ace-actors-07 (work in
progress), November 2017. progress), October 2018.
[I-D.ietf-ace-dtls-authorize] [I-D.ietf-ace-dtls-authorize]
Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and
L. Seitz, "Datagram Transport Layer Security (DTLS) L. Seitz, "Datagram Transport Layer Security (DTLS)
Profile for Authentication and Authorization for Profile for Authentication and Authorization for
Constrained Environments (ACE)", draft-ietf-ace-dtls- Constrained Environments (ACE)", draft-ietf-ace-dtls-
authorize-03 (work in progress), March 2018. authorize-07 (work in progress), March 2019.
[I-D.ietf-ace-oscore-profile] [I-D.ietf-ace-oscore-profile]
Seitz, L., Palombini, F., Gunnarsson, M., and G. Selander, Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson,
"OSCORE profile of the Authentication and Authorization "OSCORE profile of the Authentication and Authorization
for Constrained Environments Framework", draft-ietf-ace- for Constrained Environments Framework", draft-ietf-ace-
oscore-profile-01 (work in progress), March 2018. oscore-profile-07 (work in progress), February 2019.
Acknowledgments Acknowledgments
The author wishes to thank Ari Keraenen, John Mattsson, Ludwig Seitz, The author wishes to thank Ari Keraenen, John Mattsson, Ludwig Seitz,
Goeran Selander, Jim Schaad and Marco Tiloca for the useful Goeran Selander, Jim Schaad and Marco Tiloca for the useful
discussion and reviews that helped shape this document. discussion and reviews that helped shape this document.
Author's Address Author's Address
Francesca Palombini Francesca Palombini
 End of changes. 41 change blocks. 
66 lines changed or deleted 93 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/