draft-ietf-ace-pubsub-profile-03.txt   draft-ietf-ace-pubsub-profile-04.txt 
ACE Working Group F. Palombini ACE Working Group F. Palombini
Internet-Draft Ericsson Internet-Draft Ericsson
Intended status: Standards Track C. Sengul Intended status: Standards Track C. Sengul
Expires: 1 January 2022 Brunel University Expires: 2 July 2022 Brunel University
30 June 2021 29 December 2021
Pub-Sub Profile for Authentication and Authorization for Constrained Pub-Sub Profile for Authentication and Authorization for Constrained
Environments (ACE) Environments (ACE)
draft-ietf-ace-pubsub-profile-03 draft-ietf-ace-pubsub-profile-04
Abstract Abstract
This specification defines an application profile for authentication This specification defines an application profile for authentication
and authorization for publishers and subscribers in a constrained and authorization for Publishers and Subscribers in a constrained
pub-sub scenario, using the ACE framework. This profile relies on pub-sub scenario, using the ACE framework. This profile relies on
transport layer or application layer security to authorize the pub- transport layer or application layer security to authorize the pub-
sub clients to the broker. Moreover, it describes application layer sub clients to the broker. Moreover, it describes the use of
security for publisher-subscriber communication going through the application layer security to protect the content of the pub-sub
broker. client message exchange through the broker. The profile covers pub-
sub scenarios using either the Constrained Application Protocol
(CoAP) [I-D.ietf-core-coap-pubsub] or the Message Queue Telemetry
Transport (MQTT) [MQTT-OASIS-Standard-v5] protocol.
Note to Readers Note to Readers
Source for this draft and an issue tracker can be found at Source for this draft and an issue tracker can be found at
https://github.com/ace-wg/pubsub-profile (https://github.com/ace-wg/ https://github.com/ace-wg/pubsub-profile (https://github.com/ace-wg/
pubsub-profile). pubsub-profile).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 44 skipping to change at page 1, line 47
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 1 January 2022. This Internet-Draft will expire on 2 July 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Revised BSD License text as
as described in Section 4.e of the Trust Legal Provisions and are described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2. Application Profile Overview . . . . . . . . . . . . . . . . 3 2. Application Profile Overview . . . . . . . . . . . . . . . . 3
3. PubSub Authorisation . . . . . . . . . . . . . . . . . . . . 5 3. PubSub Authorisation . . . . . . . . . . . . . . . . . . . . 5
3.1. AS Discovery (Optional) . . . . . . . . . . . . . . . . . 6 3.1. AS Discovery (Optional) . . . . . . . . . . . . . . . . . 6
3.2. Authorising to the Broker . . . . . . . . . . . . . . . . 6 3.2. Authorising to the KDC and the Broker . . . . . . . . . . 6
4. Key Distribution for PubSub Content Protection . . . . . . . 7 4. Key Distribution for PubSub Content Protection . . . . . . . 8
4.1. Token POST . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. Token POST . . . . . . . . . . . . . . . . . . . . . . . 8
4.2. Join Request . . . . . . . . . . . . . . . . . . . . . . 8 4.2. Join Request and Join Response . . . . . . . . . . . . . 8
5. PubSub Protected Communication . . . . . . . . . . . . . . . 11 5. PubSub Protected Communication . . . . . . . . . . . . . . . 12
5.1. Using COSE Objects To Protect The Resource 5.1. Using COSE Objects To Protect The Resource
Representation . . . . . . . . . . . . . . . . . . . . . 12 Representation . . . . . . . . . . . . . . . . . . . . . 13
6. Profile-specific Considerations . . . . . . . . . . . . . . . 13 6. Profile-specific Considerations . . . . . . . . . . . . . . . 15
6.1. CoAP PubSub Application Profile . . . . . . . . . . . . . 13 6.1. CoAP PubSub Application Profile . . . . . . . . . . . . . 15
6.2. MQTT PubSub Application Profile . . . . . . . . . . . . . 14 6.2. MQTT PubSub Application Profile . . . . . . . . . . . . . 15
7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 7. Security Considerations . . . . . . . . . . . . . . . . . . . 16
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
8.1. ACE Groupcomm Profile Registry . . . . . . . . . . . . . 16 8.1. ACE Groupcomm Profile Registry . . . . . . . . . . . . . 17
8.1.1. CoAP Profile Registration . . . . . . . . . . . . . . 16 8.1.1. CoAP Profile Registration . . . . . . . . . . . . . . 17
8.1.2. MQTT Profile Registration . . . . . . . . . . . . . . 17 8.1.2. MQTT Profile Registration . . . . . . . . . . . . . . 17
8.2. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 17 8.2. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 18
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.1. Normative References . . . . . . . . . . . . . . . . . . 17 9.1. Normative References . . . . . . . . . . . . . . . . . . 18
9.2. Informative References . . . . . . . . . . . . . . . . . 18 9.2. Informative References . . . . . . . . . . . . . . . . . 20
Appendix A. Requirements on Application Profiles . . . . . . . . 19 Appendix A. Requirements on Application Profiles . . . . . . . . 21
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 21 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction 1. Introduction
In the publish-subscribe (pub-sub) scenario, devices with limited In the publish-subscribe (pub-sub) scenario, devices with limited
reachability communicate via a broker, which enables store-and- reachability communicate via a broker, which enables store-and-
forward messaging between the devices. This document defines a way forward messaging between the devices. This document defines a way
to authorize pub-sub clients using the ACE framework to authorize pub-sub clients using the ACE framework
[I-D.ietf-ace-oauth-authz], and to provide the keys for protecting [I-D.ietf-ace-oauth-authz] to obtain the keys for protecting the
the communication between them. The pub-sub communication using the content of their pub-sub messages when communicating through the
Constrained Application Protocol (CoAP) is specified in broker. The pub-sub communication using the Constrained Application
Protocol (CoAP) [RFC7252] is specified in
[I-D.ietf-core-coap-pubsub], while the one using MQTT is specified in [I-D.ietf-core-coap-pubsub], while the one using MQTT is specified in
[MQTT-OASIS-Standard-v5]. This document gives detailed [MQTT-OASIS-Standard-v5]. This document gives detailed
specifications for MQTT and CoAP pub-sub, but can easily be adapted specifications for MQTT and CoAP pub-sub, but can easily be adapted
for other transport protocols as well. for other transport protocols as well.
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].
skipping to change at page 3, line 40 skipping to change at page 3, line 50
2. Application Profile Overview 2. Application Profile Overview
The objective of this document is to specify how to authorize nodes, The objective of this document is to specify how to authorize nodes,
provide keys, and protect a pub-sub communication, using provide keys, and protect a pub-sub communication, using
[I-D.ietf-ace-key-groupcomm], which expands from the ACE framework [I-D.ietf-ace-key-groupcomm], which expands from the ACE framework
([I-D.ietf-ace-oauth-authz]), and transport profiles ([I-D.ietf-ace-oauth-authz]), and transport 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],
[I-D.ietf-ace-mqtt-tls-profile]). The pub-sub communication protocol [I-D.ietf-ace-mqtt-tls-profile]). The pub-sub communication protocol
can be based on CoAP, as described in [I-D.ietf-core-coap-pubsub], can be based on CoAP, as described in [I-D.ietf-core-coap-pubsub],
MQTT [MQTT-OASIS-Standard-v5] , or other transport. Note that both MQTT [MQTT-OASIS-Standard-v5] , or other transport. Note that both
publishers and subscribers use the same profiles. Publishers and Subscribers use the same pub-sub communication
protocol and the same transport profile of ACE in their interaction
with the broker. However, all clients need to use CoAP when
communicating to the KDC.
The architecture of the scenario is shown in Figure 1. The architecture of the scenario is shown in Figure 1.
+----------------+ +----------------+ +----------------+ +----------------+
| | | Key | | | | Key |
| Authorization | | Distribution | | Authorization | | Distribution |
| Server | | Center | | Server | | Center |
| (AS) | | (KDC) | | (AS) | | (KDC) |
+----------------+ +----------------+ +----------------+ +----------------+
^ ^ ^ ^
skipping to change at page 4, line 23 skipping to change at page 4, line 26
+---------(A)----+ | +---------(A)----+ |
| +--------------------(B)--------+ | +--------------------(B)--------+
v v v v
+------------+ +------------+ +------------+ +------------+
| | | | | | | |
| Pub-Sub | <-- (C)---> | Broker | | Pub-Sub | <-- (C)---> | Broker |
| Client | | | | Client | | |
| | | | | | | |
+------------+ +------------+ +------------+ +------------+
Figure 1: Architecture for Pub-Sub with Authorization Servers Figure 1: Architecture for Pub-Sub with Authorization Server and Key
Distribution Center
Publisher or Subscriber Clients is referred to as Client in short. A
Client can act both as a publisher and a subscriber, publishing to
some topics, and subscribing to others. However, for the simplicity
of presentation, this profile describes Publisher and Subscriber
clients separately. The Broker acts as the ACE RS, and also
corresponds to the Dispatcher in [I-D.ietf-ace-key-groupcomm]).
Publisher or Subscriber Clients is referred to as Client in short.
This profile specifies: This profile specifies:
1. The establishment of a secure connection between a Client and 1. The establishment of a secure connection between a Client and
Broker, using an ACE transport profile such as DTLS Broker, using an ACE transport profile such as DTLS
[I-D.ietf-ace-dtls-authorize], OSCORE [I-D.ietf-ace-dtls-authorize], OSCORE
[I-D.ietf-ace-oscore-profile], or MQTT-TLS [I-D.ietf-ace-oscore-profile], or MQTT-TLS
[I-D.ietf-ace-mqtt-tls-profile] (A and C). [I-D.ietf-ace-mqtt-tls-profile] (A and C).
2. The Clients retrieval of keying material for the Publisher Client 2. The Clients retrieval of keying material for the Publisher Client
to publish protected publications to the Broker, and for the to publish protected publications to the Broker, and for the
Subscriber Client to read protected publications (B). Subscriber Client to read protected publications (B).
These exchanges aim at setting up two different security These exchanges aim at setting up two different security
associations. On the one hand, the Publisher and the Subscriber associations. On the one hand, the Publisher and the Subscriber
clients have a security association with the Broker (i.e. RS), so clients have a security association with the Broker, so that, as the
that RS can authorize the Clients (Security Association 1). On the ACE RS, it can verify that the Clients are authorized (Security
other hand, the Publisher has a security association with the Association 1). On the other hand, the Publisher has a security
Subscriber, to protect the publication content (Security Association association with the Subscriber, to protect the publication content
2) while sending it through the broker (i.e. here, the broker (Security Association 2) while sending it through the broker. The
corresponds to the Dispatcher in [I-D.ietf-ace-key-groupcomm]). The
Security Association 1 is set up using AS and a transport profile of Security Association 1 is set up using AS and a transport profile of
[I-D.ietf-ace-oauth-authz], the Security Association 2 is set up [I-D.ietf-ace-oauth-authz], the Security Association 2 is set up
using AS, KDC and [I-D.ietf-ace-key-groupcomm]. Note that, given using AS, KDC and [I-D.ietf-ace-key-groupcomm]. Note that, given
that the publication content is protected, the Broker MAY accept that the publication content is protected, the Broker MAY accept
unauthorised Subscribers. In this case, the Subscriber client can unauthorised Subscribers. In this case, the Subscriber client can
skip setting up Security Association 1 with the Broker. skip setting up Security Association 1 with the Broker and connect to
it as an anonymous client to subscribe to topics of interest at the
Broker.
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
| | | | | | | | | | | |
| Publisher | | Broker | | Subscriber | | Publisher | | Broker | | Subscriber |
| | | | | | | | | | | |
| | | | | | | | | | | |
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
: : : : : : : : : : : :
: '------ Security -------' '-----------------------' : : '------ Security -------' '-----------------------' :
: Association 1 : : Association 1 :
skipping to change at page 6, line 13 skipping to change at page 6, line 30
Figure 3: Authorisation Flow Figure 3: Authorisation Flow
3.1. AS Discovery (Optional) 3.1. AS Discovery (Optional)
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) for AS discovery, the Broker MAY send the address of (Section 5.1) for AS discovery, the Broker MAY send the address of
the AS to the Client in the 'AS' parameter in the AS Information as a the AS to the Client in the 'AS' parameter in the AS Information as a
response to an Unauthorized Resource Request (Section 5.2). An response to an Unauthorized Resource Request (Section 5.2). An
example using CBOR diagnostic notation and CoAP is given below: example using CBOR diagnostic notation and CoAP is given below:
4.01 Unauthorized 4.01 Unauthorized
Content-Format: application/ace+cbor Content-Format: application/ace-groupcomm+cbor
{"AS": "coaps://as.example.com/token"} {"AS": "coaps://as.example.com/token"}
Figure 4: AS Information example Figure 4: AS Information example
Authorisation Server (AS) Discovery is also defined in Authorisation Server (AS) Discovery is also defined in
Section 2.2.6.1 of [I-D.ietf-ace-mqtt-tls-profile] for MQTT v5 Section 2.2.6.1 of [I-D.ietf-ace-mqtt-tls-profile] for MQTT v5
clients (and not supported for MQTT v3 clients). clients (and not supported for MQTT v3 clients).
3.2. Authorising to the Broker 3.2. Authorising to the KDC and the Broker
After retrieving the AS address, the Client sends an Authorisation
Request to the AS for the KDC and the Broker. Note that the AS
authorises:
1. What endpoints are allowed to Publish or Subscribe to the Broker. After retrieving the AS address, the Client sends two Authorisation
Requests to the AS for the KDC and the Broker, respectively.
2. What endpoints are allowed to access to which topic(s). Note that the AS authorises what topics a Client is allowed to
Publish or Subscribe to the Broker, which means authorising which
application and security groups a Client can join. This is because
being able to publish or subscribe to a topic at the Broker is
considered as being part of an application group. As this profile
secures the message contents, an application group may be a part of a
security group, or can be associated to multiple security groups.
Therefore, a Client MUST send Authorization Requests for both.
The request includes the following fields from the Authorization Both requests include the following fields from the Authorization
Request (Section 3.1 of [I-D.ietf-ace-key-groupcomm]): Request (Section 3.1 of [I-D.ietf-ace-key-groupcomm]):
* 'scope', containing the topic identifier, that the Client wishes * 'scope', containing the group identifiers, that the Client wishes
to access to access
* 'audience', an array with identifiers of the KDC and the Broker. * 'audience', an identifier, corresponding to either the KDC or the
Broker. Other additional parameters can be included if necessary,
as defined in [I-D.ietf-ace-oauth-authz].
Other additional parameters can be included if necessary, as defined It must be noted that for pub-sub brokers, the scope represents pub-
in [I-D.ietf-ace-oauth-authz]. sub topics i.e., the application group. On the other hand, for the
KDC, the scope represents the security group. If there is a one-to-
one mapping between the application group and the security group, the
client uses the same scope for both requests. If there is not a one-
to-one mapping, the correct policies regarding both sets of scopes
MUST be available to the AS. To be able to join the right security
group associated with requested application groups (i.e., pub-sub
topics), the client The client MUST ask for the correct scopes in its
Authorization Requests. How the client discovers the (application
group, security group) association is out of scope of this document.
ToDo: Check OSCORE Groups with the CoRE Resource Directory to see if
it applies.
The 'scope' parameter is encoded as follows, where 'gname' is treated The 'scope' parameter is encoded as follows, where 'gname' is treated
as topic identifier or filter. as topic identifier or filter.
gname = tstr gname = tstr
role = tstr role = tstr
scope_entry = [ gname , ? ( role / [ 2*role ] ) ] scope_entry = [ gname , ? ( role / [ 2*role ] ) ]
scope = << [ + scope_entry ] >> scope = << [ + scope_entry ] >>
Figure 5: CDLL definition of scope, using as example group name Figure 5: CDLL definition of scope, using as example group name
encoded as tstr and role as tstr. encoded as tstr and role as tstr.
Other scope representations are also possible and are described in Other scope representations are also possible and are described in
(Section 3.1 of [I-D.ietf-ace-key-groupcomm]). Note that in the AIF- (Section 3.1 of [I-D.ietf-ace-key-groupcomm]). Note that in the AIF-
MQTT data model is described in Section 3 of the MQTT data model described in Section 3 of the
[I-D.ietf-ace-mqtt-tls-profile], the role values have been further [I-D.ietf-ace-mqtt-tls-profile], the role values have been further
constrained to "pub" and "sub". constrained to "pub" and "sub".
The AS responds with an Authorization Response as defined in The AS responds with an Authorization Response to each request as
Section 5.8.2 of [I-D.ietf-ace-oauth-authz] and Section 3.2 of defined in Section 5.8.2 of [I-D.ietf-ace-oauth-authz] and
[I-D.ietf-ace-key-groupcomm]. If a token is returned, then the Section 3.2 of [I-D.ietf-ace-key-groupcomm]. The client needs to
audience of this token are the KDC and the Broker, and the client keep track of which response corresponds to which entity to use the
uses the same token for both. In case CoAP PubSub is used as right token for the right audience, i.e., the KDC or the Broker. In
communication protocol, 'profile' is set to "coap_pubsub_app" as case CoAP PubSub is used as communication protocol, 'profile' claim
defined in Section 8.1.1. In case MQTT PubSub is used as is set to "coap_pubsub_app" as defined in Section 8.1.1. In case
communication protocol, 'profile' is set to "mqtt_pubsub_app" as MQTT PubSub is used as communication protocol, 'profile' claim is set
defined in Section 8.1.2. to "mqtt_pubsub_app" as defined in Section 8.1.2.
4. Key Distribution for PubSub Content Protection 4. Key Distribution for PubSub Content Protection
4.1. Token POST 4.1. Token POST
After receiving a token from the AS, the Client posts the token to After receiving a token from the AS, the Client posts the token to
the KDC (Section 3.3 [I-D.ietf-ace-key-groupcomm]). In addition to the KDC (Section 3.3 [I-D.ietf-ace-key-groupcomm]). In addition to
the token post, a Subscriber Client MAY ask for the public keys in the token post, a Subscriber Client MAY ask for the format of the
the group, used for source authentication, as well as any other group public keys in the group, used for source authentication, as well as
parameters. In this case, the message MUST have Content-Format set any other group parameters. In this case, the message MUST have
to "application/ace+cbor" defined in Section 8.16 of Content-Format set to "application/ace+cbor" defined in Section 8.16
[I-D.ietf-ace-oauth-authz]. The message payload MUST be formatted as of [I-D.ietf-ace-oauth-authz]. The message payload MUST be formatted
a CBOR map, which MUST include the access token and the 'sign_info' as a CBOR map, which MUST include the access token and the
parameter. The details for the 'sign_info' parameter can be found in 'sign_info' parameter. The details for the 'sign_info' parameter can
Section 3.3 of [I-D.ietf-ace-key-groupcomm]. Alternatively, the be found in Section 3.3 of [I-D.ietf-ace-key-groupcomm].
joining node may retrieve this information by other means as Alternatively, the joining node may retrieve this information by
described in [I-D.ietf-ace-key-groupcomm]. other means as described in [I-D.ietf-ace-key-groupcomm].
The KDC verifies that the Client is authorized to access the topic The KDC verifies the token to check of the Client is authorized to
with the requested role. After successful verification, the Client access the topic with the requested role. After successful
is authorized to receive the group keying material from the KDC and verification, the Client is authorized to receive the group keying
join the group. The KDC replies to the Client with a 2.01 (Created) material from the KDC and join the group. The KDC replies to the
response, using Content-Format "application/ace+cbor". The payload Client with a 2.01 (Created) response, using Content-Format
of the 2.01 response is a CBOR map. "application/ace+cbor". The payload of the 2.01 response is a CBOR
map.
A Publisher Client MUST send its own public key to the KDC when A Publisher Client MUST send its own public key to the KDC when
joining the group. Since the access token from a Publisher Client joining the group. Since the access token from a Publisher Client
will have "pub" role, the KDC MUST include 'kdcchallenge' in the CBOR will have "pub" role, the KDC MUST include 'kdcchallenge' in the CBOR
map, specifying a dedicated challenge N_S generated by the KDC. The map, specifying a dedicated challenge N_S generated by the KDC. The
Client uses this challenge to prove possession of its own private key Client uses this challenge to prove possession of its own private key
(see [I-D.ietf-ace-key-groupcomm] for details). (see [I-D.ietf-ace-key-groupcomm] for details).
4.2. Join Request 4.2. Join Request and Join Response
In the next step, a joining node MUST have a secure communication In the next step, a joining node MUST have a secure communication
association established with the KDC, before starting to join a group association established with the KDC, before starting to join a group
under that KDC. Possible ways to provide a secure communication under that KDC. Possible ways to provide a secure communication
association are described in the DTLS transport profile association are described in the DTLS transport profile
[I-D.ietf-ace-dtls-authorize] and OSCORE transport profile [I-D.ietf-ace-dtls-authorize] and OSCORE transport profile
[I-D.ietf-ace-oscore-profile] of ACE. [I-D.ietf-ace-oscore-profile] of ACE.
After establishing a secure communication, the Client sends a Joining After establishing a secure communication, the Client sends a Joining
Request to the KDC as described in Section 4.3 of Request to the KDC as described in Section 4.3 of
[I-D.ietf-ace-key-groupcomm]. More specifically, the Client sends a [I-D.ietf-ace-key-groupcomm]. More specifically, the Client sends a
POST request to the /ace-group/GROUPNAME endpoint on KDC, with POST request to the /ace-group/GROUPNAME endpoint on KDC, with
Content-Format = "application/ace+cbor" that MUST contain in the Content-Format "application/ace-groupcomm+cbor" that MUST contain in
payload (formatted as a CBOR map, Section 4.1.2.1 of the payload (formatted as a CBOR map, Section 4.1.2.1 of
[I-D.ietf-ace-key-groupcomm]): [I-D.ietf-ace-key-groupcomm]):
* 'scope' parameter as defined earlier * 'scope' parameter set to the specific group that the Client is
attempting to join, i.e., the group name, and the roles it wishes
to have in the group. This value corresponds to one scope entry,
as defined in Section 3.2.
* 'get_pub_keys' parameter set to the empty array if the Client * '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,
* 'client_cred' parameter containing the Client's public key * 'client_cred' parameter containing the Client's public key
formatted as a COSE_Key (as defined in Section 8.2), if the Client formatted according to the encoding of the public keys used in the
is a Publisher, group, if the Client is a Publisher,
* 'cnonce', encoded as a CBOR byte string, and including a dedicated * 'cnonce', encoded as a CBOR byte string, and including a dedicated
nonce N_C generated by the Client, if 'client_cred' is present, nonce N_C generated by the Client, if 'client_cred' is present,
* 'client_cred_verify', set to a singature computed over the * 'client_cred_verify', set to a signature computed over the
'rsnonce' concatenated with cnonce, if 'client_cred' is present, 'rsnonce' concatenated with cnonce, if 'client_cred' is present,
* OPTIONALLY, if needed, the 'pub_keys_repos' parameter * OPTIONALLY, if needed, the 'pub_keys_repos' parameter
TODO: Check 'cnonce' TODO: Check 'cnonce'
Note that for a Subscriber-only Client, the Joining Request MUST NOT Note that for a Subscriber-only Client, the Joining Request MUST NOT
contain the 'client_cred parameter', the role element in the 'scope' contain the 'client_cred parameter', the role element in the 'scope'
parameter MUST be set to "sub". The Subscriber MUST have access to parameter MUST be set to "sub". The Subscriber MUST have access to
the public keys of all the Publishers; this MAY be achieved in the the public keys of all the Publishers; this MAY be achieved in the
Joining Request by using the parameter 'get_pub_keys' set to receive Joining Request by using the parameter 'get_pub_keys' encoding the
the public key of all Publishers using "pub" as the 'role_filter' (as CBOR simple value 'null' (0xf6) (as described in Section 4.3.1 of
described in Section 4.1.2.1 of [I-D.ietf-ace-key-groupcomm]). [I-D.ietf-ace-key-groupcomm]) to retrieve the public keys of all the
Publishers.
If the 'client_cred' parameter is present, KDC stores the public key If the 'client_cred' parameter is present, KDC stores the public key
of the Client. Note that the alg parameter in the 'client_cred' of the Client. Note that the alg parameter in the 'client_cred'
COSE_Key MUST be a signing algorithm, as defined in section 8 of COSE_Key MUST be a signing algorithm, as defined in
[RFC8152], and that it is the same algorithm used to compute the [I-D.ietf-cose-rfc8152bis-algs] [I-D.ietf-cose-rfc8152bis-struct],
signature sent in 'client_cred_verify'. and that it is the same algorithm used to compute the signature sent
in 'client_cred_verify'.
The KDC response to Joining Response has the Content-Format = The KDC responds with a Joining Response, which has the Content-
"application/ace+cbor". The payload (formatted as a CBOR map) MUST Format "application/ace-groupcomm+cbor". The payload (formatted as a
contain the following fields from the Joining Response (Section 4.2 CBOR map) MUST contain the following fields from the Joining Response
of [I-D.ietf-ace-key-groupcomm]): (Section 4.3.1 of [I-D.ietf-ace-key-groupcomm]):
* 'kty' identifies a key type "COSE_Key". * 'gkty' identifies a key type for the 'key' parameter.
* 'key', which contains a "COSE_Key" object (defined in [RFC8152], * 'key', which contains a "COSE_Key" object (defined in
[I-D.ietf-cose-rfc8152bis-algs][I-D.ietf-cose-rfc8152bis-struct],
containing: 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 AS (Content Encryption
Algorithm) Algorithm)
- 'Base IV' with value defined by the AS2 - 'Base IV' with value defined by the AS
- 'k' with value the symmetric key value - 'k' with value the symmetric key value
- OPTIONALLY, 'kid' with an identifier for the key value - OPTIONALLY, 'kid' with an identifier for the key value
* OPTIONALLY, 'exp' with the expiration time of the key * OPTIONALLY, 'exp' with the expiration time of the key
* 'pub_keys', containing the public keys of all authorized signing * 'pub_keys', containing the public keys of all Publisher Clients,
members formatted as COSE_Keys, if the 'get_pub_keys' parameter formatted according to the public key encoding for the group, if
was present and set to the empty array in the Key Distribution the 'get_pub_keys' parameter was present and set to the empty
Request. For Subscriber Clients, the Joining Response MUST array in the Key Distribution Request. For Subscriber Clients,
contain the 'pub_keys' parameter. the Joining Response MUST contain the 'pub_keys' parameter. The
encoding accepted for this document is UCCS (Unprotectec CWT
Claims Set) [I-D.draft-ietf-rats-uccs-01]. ToDo: Consider
allowing other public key formats with the following text. If
CBOR Web Tokens (CWTs) or CWT Claims Sets (CCSs) [RFC8392] are
used as public key format, the public key algorithm is fully
described by a COSE key type and its "kty" and "crv" parameters.
If X.509 certificates [RFC7925] or C509 certificates
[I-D.ietf-cose-cbor-encoded-cert] are used as public key format,
the public key algorithm is fully described by the "algorithm"
field of the "SubjectPublicKeyInfo" structure, and by the
"subjectPublicKeyAlgorithm" element, respectively.
An example of the Joining Request and corresponding Response for a An example of the Joining Request and corresponding Response for a
CoAP Publisher using CoAP and CBOR is specified in Figure 6 and CoAP Publisher using CoAP and CBOR is specified in Figure 6 and
Figure 7, where SIG is a signature computed using the private key Figure 7, where SIG is a signature computed using the private key
associated to the public key and the algorithm in 'client_cred'. associated to the public key and the algorithm in 'client_cred'.
{ {
"scope" : ["Broker1/Temp", "pub"], "scope" : ["Broker1/Temp", "pub"],
"client_cred" : "client_cred" :
{ / COSE_Key / { / COSE_Key /
skipping to change at page 10, line 30 skipping to change at page 11, line 25
/ y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e / y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e
9eecd0084d19c', 9eecd0084d19c',
"cnonce" : h'd36b581d1eef9c7c, "cnonce" : h'd36b581d1eef9c7c,
"client_cred_verify" : SIG "client_cred_verify" : SIG
} }
} }
Figure 6: Joining Request payload for a Publisher Figure 6: Joining Request payload for a Publisher
{ {
"kty" : "COSE_Key", "gkty" : "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 7: Joining Response payload for a Publisher Figure 7: Joining Response payload for a Publisher
An example of the payload of a Joining Request and corresponding An example of the payload of a Joining Request and corresponding
Response for a Subscriber using CoAP and CBOR is specified in Response for a Subscriber using CoAP and CBOR is specified in
Figure 8 and Figure 9. Figure 8 and Figure 9.
{ {
"scope" : ["Broker1/Temp", "sub"], "scope" : ["Broker1/Temp", "sub"],
"get_pub_keys" : [true, ["pub"], []] "get_pub_keys" : null
} }
Figure 8: Joining Request payload for a Subscriber Figure 8: Joining Request payload for a Subscriber
{ {
"scope" : ["Broker1/Temp", "sub"], "scope" : ["Broker1/Temp", "sub"],
"kty" : "COSE_Key" "gkty" : "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" : [
{ {/UCCS/
1 : 2, / type EC2 / 2: "42-50-31-FF-EF-37-32-39", /sub/
2 : h'11', / kid / 8: {/cnf/
3 : -7, / alg ECDSA with SHA-256 / 1: {/COSE_Key/
-1 : 1 , / crv P-256 / 1 : 1, /alg/
-2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de43 3 : -8 /kty/
9c08551d', / x / -1 : 6 , /crv/
-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd -2 : h'C6EC665E817BD064340E7C24BB93A11E /x/
0084d19c' / y / 8EC0735CE48790F9C458F7FA340B8CA3', / x /
} }
] }
} }
]
}
Figure 9: Joining Response payload for a Subscriber Figure 9: Joining Response payload for a Subscriber
ToDO: Fix Example for COSE_Key for public key
5. PubSub Protected Communication 5. PubSub Protected Communication
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
| | | | | | | | | | | |
| Publisher | ----(D)---> | Broker | | Subscriber | | Publisher | ----(D)---> | Broker | | Subscriber |
| | | | <----(E)---- | | | | | | <----(E)---- | |
| | | | -----(F)---> | | | | | | -----(F)---> | |
+------------+ +------------+ +------------+ +------------+ +------------+ +------------+
Figure 10: Secure communication between Publisher and Subscriber Figure 10: Secure communication between Publisher and Subscriber
(D) corresponds to the publication of a topic on the Broker. The (D) corresponds to the publication of a topic on the Broker. The
publication (the resource representation) is protected with COSE publication (the resource representation) is protected with COSE
([RFC8152]). The (E) message is the subscription of the Subscriber. ([I-D.ietf-cose-rfc8152bis-algs] [I-D.ietf-cose-rfc8152bis-struct])
The subscription MAY be unprotected. The (F) message is the response by the Publisher. The (E) message is the subscription of the
from the Broker, where the publication is protected with COSE. Subscriber. The subscription MAY be unprotected. The (F) message is
the response from the Broker, where the publication is protected with
COSE by the Publisher.
Publisher Broker Subscriber Publisher Broker Subscriber
| --- PUT /topic ----> | | | --- PUT /topic ----> | |
| protected with COSE | | | protected with COSE | |
| | <--- GET /topic ----- | | | <--- GET /topic ----- |
| | | | | |
| | ---- response ------> | | | ---- response ------> |
| | protected with COSE | | | protected with COSE |
Figure 11: (E), (F), (G): Example of protected communication for CoAP Figure 11: (E), (F), (G): Example of protected communication for CoAP
skipping to change at page 12, line 15 skipping to change at page 13, line 26
similar for MQTT, where PUT corresponds to a PUBLISH message, and GET similar for MQTT, where PUT corresponds to a PUBLISH message, and GET
corresponds to a SUBSCRIBE message. Whenever a Client publishes a corresponds to a SUBSCRIBE message. Whenever a Client publishes a
new message, the Broker sends this message to all valid subscribers. new message, the Broker sends this message to all valid subscribers.
5.1. Using COSE Objects To Protect The Resource Representation 5.1. Using COSE Objects To Protect The Resource Representation
The Publisher uses the symmetric COSE Key received from the KDC The Publisher uses the symmetric COSE Key received from the KDC
(Section 4) to protect the payload of the PUBLISH operation (Section 4) to protect the payload of the PUBLISH operation
(Section 4.3 of [I-D.ietf-core-coap-pubsub] and (Section 4.3 of [I-D.ietf-core-coap-pubsub] and
[MQTT-OASIS-Standard-v5]). Specifically, the COSE Key is used to [MQTT-OASIS-Standard-v5]). Specifically, the COSE Key is used to
create a COSE_Encrypt0 with algorithm specified by KDC. The create a COSE_Encrypt0 object with algorithm specified by KDC. The
Publisher uses the private key corresponding to the public key sent Publisher uses the private key corresponding to the public key sent
to the KDC in exchange B (Section 4) to countersign the COSE Object to the KDC in exchange B (Section 4) to countersign the COSE Object
as specified in Section 4.5 of [RFC8152]. The payload is replaced by as specified in [I-D.ietf-cose-rfc8152bis-algs]
the COSE object before the publication is sent to the Broker. [I-D.ietf-cose-rfc8152bis-struct]. The payload is replaced by the
COSE object before the publication is sent to the Broker.
The Subscriber uses the 'kid' in the 'countersignature' field in the The Subscriber uses the 'kid' in the 'countersignature' field in the
COSE object to retrieve the right public key to verify the COSE object to retrieve the right public key to verify the
countersignature. It then uses the symmetric key received from KDC countersignature. It then uses the symmetric key received from KDC
to verify and decrypt the publication received in the payload from to verify and decrypt the publication received in the payload from
the Broker (in the case of CoAP the publication is received by the the Broker (in the case of CoAP the publication is received by the
CoAP Notification and for MQTT, it is received as a PUBLISH message CoAP Notification and for MQTT, it is received as a PUBLISH message
from the Broker to the subscribing client). from the Broker to the subscribing client).
The COSE object is constructed in the following way: The COSE object is constructed in the following way:
* The protected Headers (as described in Section 3 of [RFC8152]) MAY * The protected Headers (as described in
contain the kid parameter, with value the kid of the symmetric [I-D.ietf-cose-rfc8152bis-algs] [I-D.ietf-cose-rfc8152bis-struct])
COSE Key received in Section 4 and MUST contain the content MUST contain the kid parameter if it was provided in the Joining
encryption algorithm. Response, with value the kid of the symmetric COSE Key received in
Section 4 and MUST contain the content encryption algorithm.
* The unprotected Headers MUST contain the Partial IV, with value a * The unprotected Headers MUST contain the Partial IV, with value a
sequence number that is incremented for every message sent, and sequence number that is incremented for every message sent, and
the counter signature that includes: the counter signature that includes:
- the algorithm (same value as in the asymmetric COSE Key - the algorithm (same value as in the asymmetric COSE Key
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 - the signature computed as specified in
[RFC8152]. [I-D.ietf-cose-rfc8152bis-algs]
[I-D.ietf-cose-rfc8152bis-struct].
* The ciphertext, computed over the plaintext that MUST contain the * The ciphertext, computed over the plaintext that MUST contain the
message payload. message payload.
The 'external_aad' 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(
[ [
skipping to change at page 13, line 34 skipping to change at page 14, line 47
/ signature / SIG / 64 bytes signature / / signature / SIG / 64 bytes signature /
] ]
}, },
/ ciphertext / h'8df0a3b62fccff37aa313c8020e971f8aC8d' / ciphertext / h'8df0a3b62fccff37aa313c8020e971f8aC8d'
] ]
) )
Figure 12: Example of COSE Object sent in the payload of a Figure 12: Example of COSE Object sent in the payload of a
PUBLISH operation PUBLISH operation
The encryption and decryption operations are described in sections The encryption and decryption operations are described in
5.3 and 5.4 of [RFC8152]. [I-D.ietf-cose-rfc8152bis-algs] [I-D.ietf-cose-rfc8152bis-struct].
6. Profile-specific Considerations 6. Profile-specific Considerations
This section summarises the CoAP and MQTT specific pub-sub This section summarises the CoAP and MQTT specific pub-sub
communications, and considerations respectively. communications, and considerations respectively.
6.1. CoAP PubSub Application Profile 6.1. CoAP PubSub Application Profile
A CoAP Pub-Sub Client and Broker use an ACE transport profile such as A CoAP Pub-Sub Client and Broker use an ACE transport profile such as
DTLS [I-D.ietf-ace-dtls-authorize], OSCORE DTLS [I-D.ietf-ace-dtls-authorize], OSCORE
skipping to change at page 14, line 18 skipping to change at page 15, line 35
(C) corresponds to the exchange between the Client and the Broker, (C) corresponds to the exchange between the Client and the Broker,
where the Client sends its access token to the Broker and establishes where the Client sends its access token to the Broker and establishes
a secure connection with the Broker. Depending on the Information a 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 OSCORE is used directly. Note for this set up phase: for example, if OSCORE is used directly. Note
that, in line with what defined in the ACE transport profile used, that, in line with what defined in the ACE transport profile used,
the access token includes the scope (i.e. pubsub topics on the the access token includes the scope (i.e. pubsub topics on the
Broker) the Publisher is allowed to publish to. For implementation Broker) the Publisher is allowed to publish to. For implementation
simplicity, it is RECOMMENDED that the ACE transport profile used and simplicity, it is RECOMMENDED that the ACE transport profile used.
this specification use the same format of "scope".
After the previous phases have taken place, the pub-sub communication After the previous phases have taken place, the pub-sub communication
can commence. The operations of publishing and subscribing are can commence. The operations of publishing and subscribing are
defined in [I-D.ietf-core-coap-pubsub]. defined in [I-D.ietf-core-coap-pubsub].
6.2. MQTT PubSub Application Profile 6.2. MQTT PubSub Application Profile
The steps MQTT clients go through are similar to the CoAP clients as The steps MQTT clients go through are similar to the CoAP clients as
described in Section 6.1. The payload that is carried in MQTT described in Section 6.1. The payload that is carried in MQTT
messages will be protected using COSE. messages will be protected using COSE.
skipping to change at page 14, line 43 skipping to change at page 16, line 10
a single topic but a topic filter. Therefore, topic names (i.e., a single topic but a topic filter. Therefore, topic names (i.e.,
group names) may include wildcards spanning several levels of the group names) may include wildcards spanning several levels of the
topic tree. Hence, it is important to distinguish application groups topic tree. Hence, it is important to distinguish application groups
and security groups defined in [I-D.ietf-core-groupcomm-bis]. An and security groups defined in [I-D.ietf-core-groupcomm-bis]. An
application group has relevance at the application level - for application group has relevance at the application level - for
example, in MQTT an application group could denote all topics stored example, in MQTT an application group could denote all topics stored
under ""home/lights/". On the other hand, a security group is a under ""home/lights/". On the other hand, a security group is a
group of endpoints that each store group security material to group of endpoints that each store group security material to
exchange secure communication within the group. The group exchange secure communication within the group. The group
communication in [I-D.ietf-ace-key-groupcomm] refers to security communication in [I-D.ietf-ace-key-groupcomm] refers to security
groups. groups. ToDo: Give a more complete example
To be able join the right security group associated with requested
topics (application groups), the client needs to discover the
(application group, security group) association. In MQTT, $SYS/ has
been widely adopted as a prefix to topics that contain broker-
specific information, and hence, can be used by the broker for this
purpose. In typical implementations, Clients that subscribe to one
or more SYS-Topics receive the current value on the SYS topics as
soon as they subscribe, and then after periodically.
For an MQTT client we envision the following steps to take place: For an MQTT client we envision the following steps to take place:
1. Client learns the (application group, security group) 1. Client sends a token request to AS for the requested topics
associations from the $SYS topic (this topic is RECOMMENDED to be (application groups) using the broker as the audience.
a protected topic). These associations MAY be published under
another topic.
2. Client computes the corresponding security groups for its 2. Client sends a token request to AS for the corresponding security
application groups, and sends token requests for the security groups for its application groups using the KDC as the audience.
groups to AS.
3. Client sends join requests to KDC to gets the keys for these 3. Client sends join requests to KDC to gets the keys for these
security groups. security groups.
4. Client authorises to the Broker with the token (described in 4. Client authorises to the Broker with the token (described in
[I-D.ietf-ace-mqtt-tls-profile]). [I-D.ietf-ace-mqtt-tls-profile]).
5. A Publisher Client sends PUBLISH messages for a given topic and 5. A Publisher Client sends PUBLISH messages for a given topic and
protects the payload with the corresponding key for the protects the payload with the corresponding key for the
associated security group. RS validates the PUBLISH message by associated security group. RS validates the PUBLISH message by
checking the topic's security group association and the stored checking the topic stored token.
token.
6. A Subscriber Client may send SUBSCRIBE messages with one or 6. A Subscriber Client may send SUBSCRIBE messages with one or
multiple topic filters. A topic filter may correspond to multiple topic filters. A topic filter may correspond to
multiple topics but MUST belong to a single security group. If multiple topics. RS validates the SUBSCRIBE message by checking
requested topics are in multiple security groups, then these the stored token for the Client.
topics SHOULD be separated into the corresponding topic filters
in the SUBSCRIBE message.
7. Security Considerations 7. Security Considerations
In the profile described above, the Publisher and Subscriber use In the profile described above, the Publisher and Subscriber use
asymmetric crypto, which would make the message exchange quite heavy asymmetric crypto, which would make the message exchange quite heavy
for small constrained devices. Moreover, all Subscribers must be for small constrained devices. Moreover, all Subscribers must be
able to access the public keys of all the Publishers to a specific 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 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, be set up and managed by the same entity having control of the key
i.e. KDC. material for that topic, i.e. KDC.
An application where it is not critical that only authorized An application where it is not critical that only authorized
Publishers can publish on a topic may decide not to make use of the Publishers can publish on a topic may decide not to make use of the
asymmetric crypto and only use symmetric encryption/MAC to asymmetric crypto and only use symmetric encryption/MAC to
confidentiality and integrity protection of the publication. confidentiality and integrity protection of the publication.
However, this is not recommended since, as a result, any authorized However, this is not recommended since, as a result, any authorized
Subscribers with access to the Broker may forge unauthorized Subscribers with access to the Broker may forge unauthorized
publications without being detected. In this symmetric case the publications without being detected. In this symmetric case the
Subscribers would only need one symmetric key per topic, and would Subscribers would only need one symmetric key per topic, and would
not need to know any information about the Publishers, that can be not need to know any information about the Publishers, that can be
skipping to change at page 17, line 31 skipping to change at page 18, line 23
[I-D.ietf-ace-key-groupcomm]. [I-D.ietf-ace-key-groupcomm].
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: COSE_Key Name: COSE_Key
Key Type Value: TBD Key Type Value: TBD
Profile: coap_pubsub_app Profile: coap_pubsub_app, mqtt_pubsub_app
Description: COSE_Key object Description: COSE_Key object
References: [RFC8152], [[This document]] References: [I-D.ietf-cose-rfc8152bis-algs]
[I-D.ietf-cose-rfc8152bis-struct], [[This document]]
9. References 9. References
9.1. Normative References 9.1. Normative References
[I-D.draft-ietf-rats-uccs-01]
Birkholz, H., O'Donoghue, J., Cam-Winget, N., and C.
Bormann, "A CBOR Tag for Unprotected CWT Claims Sets",
Work in Progress, Internet-Draft, draft-ietf-rats-uccs-01,
12 July 2021, <https://www.ietf.org/archive/id/draft-ietf-
rats-uccs-01.txt>.
[I-D.ietf-ace-key-groupcomm] [I-D.ietf-ace-key-groupcomm]
Palombini, F. and M. Tiloca, "Key Provisioning for Group Palombini, F. and M. Tiloca, "Key Provisioning for Group
Communication using ACE", Work in Progress, Internet- Communication using ACE", Work in Progress, Internet-
Draft, draft-ietf-ace-key-groupcomm-11, 22 February 2021, Draft, draft-ietf-ace-key-groupcomm-15, 23 December 2021,
<https://www.ietf.org/archive/id/draft-ietf-ace-key- <https://www.ietf.org/archive/id/draft-ietf-ace-key-
groupcomm-11.txt>. groupcomm-15.txt>.
[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)", Work in Progress, Internet-Draft, Framework (ACE-OAuth)", Work in Progress, Internet-Draft,
draft-ietf-ace-oauth-authz-40, 26 April 2021, draft-ietf-ace-oauth-authz-46, 8 November 2021,
<https://www.ietf.org/archive/id/draft-ietf-ace-oauth- <https://www.ietf.org/archive/id/draft-ietf-ace-oauth-
authz-40.txt>. authz-46.txt>.
[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)", Work in Progress, Internet-Draft, draft-ietf- (CoAP)", Work in Progress, Internet-Draft, draft-ietf-
core-coap-pubsub-09, 30 September 2019, core-coap-pubsub-09, 30 September 2019,
<https://www.ietf.org/archive/id/draft-ietf-core-coap- <https://www.ietf.org/archive/id/draft-ietf-core-coap-
pubsub-09.txt>. pubsub-09.txt>.
[I-D.ietf-core-groupcomm-bis] [I-D.ietf-core-groupcomm-bis]
Dijk, E., Wang, C., and M. Tiloca, "Group Communication Dijk, E., Wang, C., and M. Tiloca, "Group Communication
for the Constrained Application Protocol (CoAP)", Work in for the Constrained Application Protocol (CoAP)", Work in
Progress, Internet-Draft, draft-ietf-core-groupcomm-bis- Progress, Internet-Draft, draft-ietf-core-groupcomm-bis-
03, 22 February 2021, <https://www.ietf.org/archive/id/ 05, 25 October 2021, <https://www.ietf.org/archive/id/
draft-ietf-core-groupcomm-bis-03.txt>. draft-ietf-core-groupcomm-bis-05.txt>.
[I-D.ietf-cose-cbor-encoded-cert]
Mattsson, J. P., Selander, G., Raza, S., Höglund, J., and
M. Furuhed, "CBOR Encoded X.509 Certificates (C509
Certificates)", Work in Progress, Internet-Draft, draft-
ietf-cose-cbor-encoded-cert-02, 12 July 2021,
<https://www.ietf.org/archive/id/draft-ietf-cose-cbor-
encoded-cert-02.txt>.
[I-D.ietf-cose-rfc8152bis-algs]
Schaad, J., "CBOR Object Signing and Encryption (COSE):
Initial Algorithms", Work in Progress, Internet-Draft,
draft-ietf-cose-rfc8152bis-algs-12, 24 September 2020,
<https://www.ietf.org/archive/id/draft-ietf-cose-
rfc8152bis-algs-12.txt>.
[I-D.ietf-cose-rfc8152bis-struct]
Schaad, J., "CBOR Object Signing and Encryption (COSE):
Structures and Process", Work in Progress, Internet-Draft,
draft-ietf-cose-rfc8152bis-struct-15, 1 February 2021,
<https://www.ietf.org/archive/id/draft-ietf-cose-
rfc8152bis-struct-15.txt>.
[MQTT-OASIS-Standard-v5] [MQTT-OASIS-Standard-v5]
Banks, A., Briggs, E., Borgendale, K., and R. Gupta, Banks, A., Briggs, E., Borgendale, K., and R. Gupta,
"OASIS Standard MQTT Version 5.0", 2017, "OASIS Standard MQTT Version 5.0", 2017,
<http://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt- <http://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-
v5.0-os.html>. v5.0-os.html>.
[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)", [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
RFC 8152, DOI 10.17487/RFC8152, July 2017, Application Protocol (CoAP)", RFC 7252,
<https://www.rfc-editor.org/info/rfc8152>. DOI 10.17487/RFC7252, June 2014,
<https://www.rfc-editor.org/info/rfc7252>.
[RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer
Security (TLS) / Datagram Transport Layer Security (DTLS)
Profiles for the Internet of Things", RFC 7925,
DOI 10.17487/RFC7925, July 2016,
<https://www.rfc-editor.org/info/rfc7925>.
[RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig,
"CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392,
May 2018, <https://www.rfc-editor.org/info/rfc8392>.
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", STD 94, RFC 8949, Representation (CBOR)", STD 94, RFC 8949,
DOI 10.17487/RFC8949, December 2020, DOI 10.17487/RFC8949, December 2020,
<https://www.rfc-editor.org/info/rfc8949>. <https://www.rfc-editor.org/info/rfc8949>.
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
skipping to change at page 19, line 14 skipping to change at page 20, line 49
environments", Work in Progress, Internet-Draft, draft- environments", Work in Progress, Internet-Draft, draft-
ietf-ace-actors-07, 22 October 2018, ietf-ace-actors-07, 22 October 2018,
<https://www.ietf.org/archive/id/draft-ietf-ace-actors- <https://www.ietf.org/archive/id/draft-ietf-ace-actors-
07.txt>. 07.txt>.
[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)", Work in Progress, Constrained Environments (ACE)", Work in Progress,
Internet-Draft, draft-ietf-ace-dtls-authorize-16, 8 March Internet-Draft, draft-ietf-ace-dtls-authorize-18, 4 June
2021, <https://www.ietf.org/archive/id/draft-ietf-ace- 2021, <https://www.ietf.org/archive/id/draft-ietf-ace-
dtls-authorize-16.txt>. dtls-authorize-18.txt>.
[I-D.ietf-ace-mqtt-tls-profile] [I-D.ietf-ace-mqtt-tls-profile]
Sengul, C. and A. Kirby, "Message Queuing Telemetry Sengul, C. and A. Kirby, "Message Queuing Telemetry
Transport (MQTT)-TLS profile of Authentication and Transport (MQTT)-TLS profile of Authentication and
Authorization for Constrained Environments (ACE) Authorization for Constrained Environments (ACE)
Framework", Work in Progress, Internet-Draft, draft-ietf- Framework", Work in Progress, Internet-Draft, draft-ietf-
ace-mqtt-tls-profile-11, 14 April 2021, ace-mqtt-tls-profile-13, 23 October 2021,
<https://www.ietf.org/archive/id/draft-ietf-ace-mqtt-tls- <https://www.ietf.org/archive/id/draft-ietf-ace-mqtt-tls-
profile-11.txt>. profile-13.txt>.
[I-D.ietf-ace-oscore-profile] [I-D.ietf-ace-oscore-profile]
Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, 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", Work in Progress, for Constrained Environments Framework", Work in Progress,
Internet-Draft, draft-ietf-ace-oscore-profile-18, 14 April Internet-Draft, draft-ietf-ace-oscore-profile-19, 6 May
2021, <https://www.ietf.org/archive/id/draft-ietf-ace- 2021, <https://www.ietf.org/archive/id/draft-ietf-ace-
oscore-profile-18.txt>. oscore-profile-19.txt>.
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
Interchange Format", STD 90, RFC 8259, Interchange Format", STD 90, RFC 8259,
DOI 10.17487/RFC8259, December 2017, DOI 10.17487/RFC8259, December 2017,
<https://www.rfc-editor.org/info/rfc8259>. <https://www.rfc-editor.org/info/rfc8259>.
Appendix A. Requirements on Application Profiles Appendix A. Requirements on Application Profiles
This section lists the specifications on this profile based on the This section lists the specifications on this profile based on the
requirements defined in Appendix A of [I-D.ietf-ace-key-groupcomm] requirements defined in Appendix A of [I-D.ietf-ace-key-groupcomm]
skipping to change at page 20, line 23 skipping to change at page 22, line 8
* REQ6: Optionally, specify the acceptable values for 'pub_key_enc': * REQ6: Optionally, specify the acceptable values for 'pub_key_enc':
TODO TODO
* REQ7: Specify the exact format of the 'key' value: COSE_Key, see * REQ7: Specify the exact format of the 'key' value: COSE_Key, see
Section 4. Section 4.
* REQ8: Specify the acceptable values of 'kty' : "COSE_Key", see * REQ8: Specify the acceptable values of 'kty' : "COSE_Key", see
Section 4. Section 4.
* REQ9: Specity the format of the identifiers of group members: TODO * REQ9: Specify the format of the identifiers of group members: TODO
* REQ10: Optionally, specify the format and content of * REQ10: Optionally, specify the format and content of
'group_policies' entries: not defined 'group_policies' entries: not defined
* REQ11: Specify the communication protocol the members of the group * REQ11: Specify the communication protocol the members of the group
must use: CoAP pub/sub. must use: CoAP pub/sub.
* REQ12: Specify the security protocol the group members must use to * REQ12: Specify the security protocol the group members must use to
protect their communication. This must provide encryption, protect their communication. This must provide encryption,
integrity and replay protection: Object Security of Content using integrity and replay protection: Object Security of Content using
skipping to change at page 21, line 6 skipping to change at page 22, line 37
* REQ15: Specify policies at the KDC to handle id that are not * REQ15: Specify policies at the KDC to handle id that are not
included in get_pub_keys: TODO included in get_pub_keys: TODO
* REQ16: Specify the format and content of 'group_policies': TODO * REQ16: Specify the format and content of 'group_policies': TODO
* REQ17: Specify the format of newly-generated individual keying * REQ17: Specify the format of newly-generated individual keying
material for group members, or of the information to derive it, material for group members, or of the information to derive it,
and corresponding CBOR label : not defined and corresponding CBOR label : not defined
* REQ18: Specify how the communication is secured between Client and * REQ18: Specify how the communication is secured between Client and
KDC. Optionally, specify tranport profile of ACE KDC. Optionally, specify transport profile of ACE
[I-D.ietf-ace-oauth-authz] to use between Client and KDC: pre-set, [I-D.ietf-ace-oauth-authz] to use between Client and KDC: pre-set,
as KDC is AS. as KDC is AS.
* OPT1: Optionally, specify the encoding of public keys, of * OPT1: Optionally, specify the encoding of public keys, of
'client_cred', and of 'pub_keys' if COSE_Keys are not used: NA 'client_cred', and of 'pub_keys' if COSE_Keys are not used: NA
* OPT2: Optionally, specify the negotiation of parameter values for * OPT2: Optionally, specify the negotiation of parameter values for
signature algorithm and signature keys, if 'sign_info' and signature algorithm and signature keys, if 'sign_info' and
'pub_key_enc' are not used: NA 'pub_key_enc' are not used: NA
 End of changes. 76 change blocks. 
196 lines changed or deleted 280 lines changed or added

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