Pub-Sub Profile for Authentication and Authorization for Constrained Environments (ACE)Ericssonfrancesca.palombini@ericsson.comBrunel Universitycsengul@acm.org
Security
ACE Working GroupInternet-DraftThis specification defines an application profile for authentication and authorization for Publishers and Subscribers in a constrained pub-sub scenario, using the ACE framework. This profile relies on transport layer or application layer security to authorize the pub-sub clients to the broker. Moreover, it describes the use of application layer security to protect the content of the pub-sub client message exchange through the broker. The profile covers pub-sub scenarios using
either the Constrained Application Protocol (CoAP) or the
Message Queue Telemetry Transport (MQTT) protocol.Note to ReadersSource for this draft and an issue tracker can be found at
https://github.com/ace-wg/pubsub-profile.IntroductionIn the publish-subscribe (pub-sub) scenario, devices with limited reachability communicate via a broker, which enables store-and-forward messaging between the devices. This document defines a way to authorize pub-sub clients using the ACE framework to obtain the keys for protecting the content
of their pub-sub messages when communicating through the broker. The pub-sub communication using the Constrained Application Protocol (CoAP) is specified in , while the one using MQTT is specified in . This document gives detailed specifications for MQTT and CoAP pub-sub, but can easily be adapted for other transport protocols as well.TerminologyThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 .Readers are expected to be familiar with the terms and concepts
described in , . In particular, analogously to , terminology for entities in the architecture such as Client (C), Resource Server (RS), and Authorization Server (AS) is defined in OAuth 2.0 and , and terminology for entities such as the Key Distribution Center (KDC) and Dispatcher in .Readers are expected to be familiar with terms and concepts of pub-sub group communication, as described in , or MQTT .Application Profile OverviewThe objective of this document is to specify how to authorize nodes, provide keys, and protect a pub-sub communication, using , which expands from the ACE framework (), and transport profiles (, , ). The pub-sub communication protocol can be based on CoAP, as described in , MQTT , or other transport. Note that both 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 .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 ).This profile specifies:
The establishment of a secure connection between a Client and Broker, using an ACE transport profile such as DTLS , OSCORE , or MQTT-TLS (A and C).
The Clients retrieval of keying material for the Publisher Client to publish protected publications to the Broker, and for the Subscriber Client to read protected publications (B).
These exchanges aim at setting up two different security associations.
On the one hand, the Publisher and the Subscriber clients have a security association with the Broker, so that, as the ACE RS, it can verify that the Clients are authorized (Security Association 1). On the other hand, the Publisher has a security association with the Subscriber, to protect the publication content (Security Association 2) while sending it through the broker. The Security Association 1 is set up using AS and a transport profile of , the Security Association 2 is set up using AS, KDC and . Note that, given that the publication content is protected, the Broker MAY accept unauthorised Subscribers. In this case, the Subscriber client can 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.PubSub AuthorisationSince recommends the use of CoAP and CBOR, this document describes the exchanges assuming CoAP and CBOR are used. However, using HTTP instead of CoAP is possible, using the corresponding parameters and methods. Analogously, JSON
can be used instead of CBOR, using the conversion method specified in Sections 6.1 and 6.2 of . In case JSON is used, the Content Format or Media Type of the message has to be changed accordingly. Exact definition of these exchanges are considered out of scope for this document. shows the message flow for authorisation purposes.AS Discovery (Optional)Complementary to what is defined in (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 response to an Unauthorized Resource Request (Section 5.2). An example using CBOR diagnostic notation and CoAP is given below:Authorisation Server (AS) Discovery is also defined in Section 2.2.6.1 of
for MQTT v5 clients (and not supported for MQTT v3 clients).Authorising to the KDC and the BrokerAfter retrieving the AS address, the Client sends two Authorisation Requests to the AS for the KDC and the Broker, respectively.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.Both requests include the following fields from the Authorization Request
(Section 3.1 of ):
'scope', containing the group identifiers, that the Client wishes to access
'audience', an identifier, corresponding to either the KDC or the Broker.
Other additional parameters can be included if necessary, as defined in
.
It must be noted that for pub-sub brokers, the scope represents pub-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 as topic identifier or filter.Other scope representations are also possible and are described in (Section 3.1 of ). Note that in the AIF-MQTT data model described in Section 3 of the , the role values have been further constrained to "pub" and "sub".The AS responds with an Authorization Response to each request as defined in Section 5.8.2 of and Section 3.2 of .
The client needs to keep track of which response corresponds to which entity to
use the right token for the right audience, i.e., the KDC or the Broker.
In case CoAP PubSub is used as communication protocol, 'profile' claim is set to "coap_pubsub_app" as defined in . In case MQTT PubSub is used as communication protocol, 'profile' claim is set to "mqtt_pubsub_app" as defined in .Key Distribution for PubSub Content ProtectionToken POSTAfter receiving a token from the AS, the Client posts the token to the KDC
(Section 3.3 ). In addition to the token post,
a Subscriber Client MAY ask for the format of the public keys in the group, used for source authentication, as well as any other group parameters. In this case, the message MUST have Content-Format set to "application/ace+cbor" defined in Section 8.16 of . The message payload MUST be formatted as a CBOR map, which MUST include the access token and
the 'sign_info' parameter. The details for the 'sign_info' parameter can be found in Section 3.3 of . Alternatively, the joining node may retrieve this information by other means as described in .The KDC verifies the token to check of the Client is authorized to access the topic with the requested role. After successful verification, the Client is authorized to receive the group keying material from the KDC and join the group. The KDC replies to the Client with a 2.01 (Created) response, using Content-Format "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 joining the group.
Since the access token from a Publisher Client will have "pub" role, the KDC MUST include
'kdcchallenge' in the CBOR map, specifying a dedicated challenge N_S generated by the KDC. The Client uses this challenge to prove possession of its own private key (see for details).Join Request and Join ResponseIn the next step, a joining node MUST have a secure communication association
established with the KDC, before starting to join a group under that KDC. Possible ways to provide a secure communication association are described in the DTLS transport profile
and OSCORE transport profile of ACE.After establishing a secure communication, the Client sends a Joining Request to the KDC as described in Section 4.3 of . More specifically, the Client sends a POST request to the /ace-group/GROUPNAME endpoint on KDC, with Content-Format "application/ace-groupcomm+cbor" that MUST contain in the payload (formatted as a CBOR map, Section 4.1.2.1 of ):
'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 .
'get_pub_keys' parameter set to the empty array if the Client needs to retrieve the public keys of the other pubsub members,
'client_cred' parameter containing the Client's public key formatted according
to the encoding of the public keys used in the group, if the Client is a Publisher,
'cnonce', encoded as a CBOR byte string, and including a dedicated nonce N_C generated by the Client, if 'client_cred' is present,
'client_cred_verify', set to a signature computed over the 'rsnonce' concatenated with cnonce, if 'client_cred' is present,
OPTIONALLY, if needed, the 'pub_keys_repos' parameter
TODO: Check 'cnonce'Note that for a Subscriber-only Client, the Joining Request MUST NOT contain the 'client_cred parameter', the role element in the 'scope' 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 Joining Request by using the parameter 'get_pub_keys'
encoding the CBOR simple value 'null' (0xf6) (as described in Section 4.3.1 of ) to retrieve the public keys of all the Publishers.If the 'client_cred' parameter is present, KDC stores the public key of the Client.
Note that the alg parameter in the 'client_cred' COSE_Key MUST be a signing algorithm, as defined in , and that it is the same algorithm used to compute the signature sent in 'client_cred_verify'.The KDC responds with a Joining Response, which has the Content-Format "application/ace-groupcomm+cbor". The payload (formatted as a CBOR map) MUST contain the following fields from the Joining Response (Section 4.3.1 of ):
'gkty' identifies a key type for the 'key' parameter.
'key', which contains a "COSE_Key" object (defined in , containing:
'kty' with value 4 (symmetric)
'alg' with value defined by the AS (Content Encryption Algorithm)
'Base IV' with value defined by the AS
'k' with value the symmetric key value
OPTIONALLY, 'kid' with an identifier for the key value
OPTIONALLY, 'exp' with the expiration time of the key
'pub_keys', containing the public keys of all Publisher Clients, formatted according to the public key encoding for the group, if the 'get_pub_keys' parameter was present and set to the empty array in the Key Distribution Request. For Subscriber Clients, the Joining Response MUST contain the 'pub_keys' parameter. The encoding accepted for this
document is UCCS (Unprotectec CWT Claims Set) .
ToDo: Consider allowing other public key formats with the following text. If CBOR Web Tokens (CWTs) or CWT Claims Sets (CCSs) 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 or C509 certificates
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 CoAP Publisher using CoAP and CBOR is specified in and , where SIG is a signature computed using the private key associated to the public key and the algorithm in 'client_cred'.An example of the payload of a Joining Request and corresponding Response for a Subscriber using CoAP and CBOR is specified in and .ToDO: Fix Example for COSE_Key for public keyPubSub Protected Communication(D) corresponds to the publication of a topic on the Broker.
The publication (the resource representation) is protected with COSE () by the Publisher.
The (E) message is the subscription of the 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.The flow graph is presented below for CoAP. The message flow is similar for MQTT, where PUT corresponds to a PUBLISH message, and GET corresponds to a SUBSCRIBE message.
Whenever a Client publishes a new message, the Broker sends this message to all valid subscribers.Using COSE Objects To Protect The Resource RepresentationThe Publisher uses the symmetric COSE Key received from the KDC () to protect the payload of the PUBLISH operation (Section 4.3 of and ). Specifically, the COSE Key is used to create a COSE_Encrypt0 object with algorithm specified by KDC. The Publisher uses the private key corresponding to the public key sent to the KDC in exchange B () to countersign the COSE Object as specified in . 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 COSE object to retrieve the right public key to verify the countersignature. It then uses the symmetric key received from KDC to verify and decrypt the publication received in the payload from 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 from the Broker to the subscribing client).The COSE object is constructed in the following way:
The protected Headers (as described in ) MUST contain the kid parameter if it was provided in the
Joining Response, with value the kid of the symmetric COSE Key received in and MUST contain the content encryption algorithm.
The unprotected Headers MUST contain the Partial IV, with value a sequence number that is incremented for every message sent, and the counter signature that includes:
the algorithm (same value as in the asymmetric COSE Key received in (B)) in the protected header;
the kid (same value as the kid of the asymmetric COSE Key received in (B)) in the unprotected header;
the signature computed as specified in .
The ciphertext, computed over the plaintext that MUST contain the message payload.
The 'external_aad' is an empty string.An example is given in :The encryption and decryption operations are described in .Profile-specific ConsiderationsThis section summarises the CoAP and MQTT specific pub-sub communications, and considerations respectively.CoAP PubSub Application ProfileA CoAP Pub-Sub Client and Broker use an ACE transport profile such as DTLS , OSCORE .As shown in , (A) is an Access Token Request and Response exchange between Publisher and Authorization Server to retrieve the Access Token and RS (Broker) Information. As specified, the Client has the role of a CoAP client, the Broker has the role of the CoAP server.(B) corresponds to the retrieval of the keying material to protect the publication end-to-end (see ), and uses . The details are defined in .(C) corresponds to the exchange between the Client and the Broker, where the Client sends its access token to the Broker and establishes a secure connection with the Broker. Depending on the Information received in (A), this can be for example DTLS handshake, or other protocols. Depending on the application, there may not be the need 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, the access token includes the scope (i.e. pubsub topics on the Broker) the Publisher is allowed to publish to. For implementation simplicity, it is RECOMMENDED that the ACE transport profile used.After the previous phases have taken place, the pub-sub communication can commence. The operations of publishing and subscribing are defined in .MQTT PubSub Application ProfileThe steps MQTT clients go through are similar to the CoAP clients as described in .
The payload that is carried in MQTT messages will be protected using COSE.In MQTT, topics are organised as a tree, and in the
'scope' captures permissions for not a single topic but a topic filter. Therefore, topic names (i.e., group names) may include wildcards spanning several levels of the topic tree.
Hence, it is important to distinguish application groups and security groups defined in . An application group has relevance at the application level - for example, in MQTT an application group could denote all topics stored under ""home/lights/". On the other hand, a security group is a group of endpoints that each store group security material to exchange secure communication within the group. The group communication in refers to security groups.
ToDo: Give a more complete exampleFor an MQTT client we envision the following steps to take place:
Client sends a token request to AS for the requested topics (application groups) using the broker as the audience.
Client sends a token request to AS for the corresponding security groups for its application groups using the KDC as the audience.
Client sends join requests to KDC to gets the keys for these security groups.
Client authorises to the Broker with the token (described in ).
A Publisher Client sends PUBLISH messages for a given topic and protects the payload with the corresponding key for the associated security group. RS validates the PUBLISH message by checking the topic stored token.
A Subscriber Client may send SUBSCRIBE messages with one or multiple topic filters.
A topic filter may correspond to multiple topics. RS validates the SUBSCRIBE message by checking the stored token for the Client.
Security ConsiderationsIn the profile described above, the Publisher and Subscriber use asymmetric crypto, which would make the message exchange quite heavy for small constrained devices. Moreover, all Subscribers must be able to access the public keys of all the Publishers to a specific topic to be able to verify the publications. Such a database could be set up and managed by the same entity having control of the
key material for that topic, i.e. KDC.An application where it is not critical that only authorized Publishers can publish on a topic may decide not to make use of the asymmetric crypto and only use symmetric encryption/MAC to confidentiality and integrity protection of the publication.
However, this is not recommended since, as a result, any authorized Subscribers with access to the Broker may forge unauthorized publications without being detected. In this symmetric case the Subscribers would only need one symmetric key per topic, and would not need to know any information about the Publishers, that can be anonymous to it and the Broker.Subscribers can be excluded from future publications through re-keying for a certain topic. This could be set up to happen on a regular basis, for certain applications. How this could be done is out of scope for this work.The Broker is only trusted with verifying that the Publisher is authorized to publish, but is not trusted with the publications itself, which it cannot read nor modify. In this setting, caching of publications on the Broker is still allowed.TODO: expand on security and privacy considerationsIANA ConsiderationsACE Groupcomm Profile RegistryThe following registrations are done for the "ACE Groupcomm Profile" Registry following the procedure specified in .Note to RFC Editor: Please replace all occurrences of "[[This document]]"
with the RFC number of this specification and delete this paragraph.CoAP Profile RegistrationName: coap_pubsub_appDescription: Profile for delegating client authentication and authorization for publishers and subscribers in a CoAP pub-sub setting scenario in a constrained environment.CBOR Key: TBDReference: [[This document]]MQTT Profile RegistrationName: mqtt_pubsub_appDescription: Profile for delegating client authentication and authorization for publishers and subscribers in a MQTT pub-sub setting scenario in a constrained environment.CBOR Key: TBDReference: [[This document]]ACE Groupcomm Key RegistryThe following registrations are done for the ACE Groupcomm Key Registry following the procedure specified in .Note to RFC Editor: Please replace all occurrences of "[[This document]]"
with the RFC number of this specification and delete this paragraph.Name: COSE_KeyKey Type Value: TBDProfile: coap_pubsub_app, mqtt_pubsub_appDescription: COSE_Key objectReferences: , [[This document]]ReferencesNormative ReferencesKey words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.The OAuth 2.0 Authorization FrameworkThe OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]The Constrained Application Protocol (CoAP)The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of ThingsA common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.CBOR Web Token (CWT)CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.Concise Binary Object Representation (CBOR)The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.A CBOR Tag for Unprotected CWT Claims SetsFraunhofer SITQualcomm Technologies Inc.Cisco SystemsUniversität Bremen TZI CBOR Web Token (CWT, RFC 8392) Claims Sets sometimes do not need the
protection afforded by wrapping them into COSE, as is required for a
true CWT. This specification defines a CBOR tag for such unprotected
CWT Claims Sets (UCCS) and discusses conditions for its proper use.
CBOR Encoded X.509 Certificates (C509 Certificates)Ericsson ABEricsson ABRISE ABRISE ABNexus Group This document specifies a CBOR encoding of X.509 certificates. The
resulting certificates are called C509 Certificates. The CBOR
encoding supports a large subset of RFC 5280 and all certificates
compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
eUICC, and CA/Browser Forum Baseline Requirements profiles. When
used to re-encode DER encoded X.509 certificates, the CBOR encoding
can in many cases reduce the size of RFC 7925 profiled certificates
with over 50%. The CBOR encoded structure can alternatively be
signed directly ("natively signed"), which does not require re-
encoding for the signature to be verified. The document also
specifies C509 COSE headers, a C509 TLS certificate type, and a C509
file format.
CBOR Object Signing and Encryption (COSE): Initial AlgorithmsAugust Cellars Concise Binary Object Representation (CBOR) is a data format designed
for small code size and small message size. There is a need for the
ability to have basic security services defined for this data format.
THis document defines a set of algorithms that can be used with the
CBOR Object Signing and Encryption (COSE) protocol RFC XXXX.
CBOR Object Signing and Encryption (COSE): Structures and ProcessAugust Cellars Concise Binary Object Representation (CBOR) is a data format designed
for small code size and small message size. There is a need for the
ability to have basic security services defined for this data format.
This document defines the CBOR Object Signing and Encryption (COSE)
protocol. This specification describes how to create and process
signatures, message authentication codes, and encryption using CBOR
for serialization. This specification additionally describes how to
represent cryptographic keys using CBOR.
This document along with [I-D.ietf-cose-rfc8152bis-algs] obsoletes
RFC8152.
Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework (ACE-OAuth)CombitechEricssonSpotify ABArm Ltd. This specification defines a framework for authentication and
authorization in Internet of Things (IoT) environments called ACE-
OAuth. The framework is based on a set of building blocks including
OAuth 2.0 and the Constrained Application Protocol (CoAP), thus
transforming a well-known and widely used authorization solution into
a form suitable for IoT devices. Existing specifications are used
where possible, but extensions are added and profiles are defined to
better serve the IoT use cases.
Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)SmartThingsEricssonEricsson The Constrained Application Protocol (CoAP), and related extensions
are intended to support machine-to-machine communication in systems
where one or more nodes are resource constrained, in particular for
low power wireless sensor networks. This document defines a publish-
subscribe Broker for CoAP that extends the capabilities of CoAP for
supporting nodes with long breaks in connectivity and/or up-time.
There is work in progress to resolve some of the transfer layer
issues by using a more RESTful approach.
Please see https://github.com/core-wg/pubsub/blob/master/proposal.txt
Key Provisioning for Group Communication using ACEEricsson ABRISE AB This document defines how to use the Authentication and Authorization
for Constrained Environments (ACE) framework to distribute keying
material and configuration parameters for secure group communication.
Candidate group members acting as Clients and authorized to join a
group can do so by interacting with a Key Distribution Center (KDC)
acting as Resource Server, from which they obtain the keying material
to communicate with other group members. While defining general
message formats as well as the interface and operations available at
the KDC, this document supports different approaches and protocols
for secure group communication. Therefore, details are delegated to
separate application profiles of this document, as specialized
instances that target a particular group communication approach and
define how communications in the group are protected. Compliance
requirements for such application profiles are also specified.
Group Communication for the Constrained Application Protocol (CoAP)IoTconsultancy.nlInterDigitalRISE AB This document specifies the use of the Constrained Application
Protocol (CoAP) for group communication, including the use of UDP/IP
multicast as the default underlying data transport. Both unsecured
and secured CoAP group communication are specified. Security is
achieved by use of the Group Object Security for Constrained RESTful
Environments (Group OSCORE) protocol. The target application area of
this specification is any group communication use cases that involve
resource-constrained devices or networks that support CoAP. This
document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.
OASIS Standard MQTT Version 5.0Informative ReferencesThe JavaScript Object Notation (JSON) Data Interchange FormatJavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.An architecture for authorization in constrained environmentsUniversitaet Bremen TZIRISE SICSEricsson ABUniversitaet Bremen TZI Constrained-node networks are networks where some nodes have severe
constraints on code size, state memory, processing capabilities, user
interface, power and communication bandwidth (RFC 7228).
This document provides terminology, and identifies the elements that
an architecture needs to address, providing a problem statement, for
authentication and authorization in these networks.
Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)Universität Bremen TZIUniversität Bremen TZIUniversität Bremen TZIEricsson ABCombitech This specification defines a profile of the ACE framework that allows
constrained servers to delegate client authentication and
authorization. The protocol relies on DTLS version 1.2 for
communication security between entities in a constrained network
using either raw public keys or pre-shared keys. A resource-
constrained server can use this protocol to delegate management of
authorization information to a trusted host with less severe
limitations regarding processing power and memory.
OSCORE Profile of the Authentication and Authorization for Constrained Environments FrameworkEricsson ABCombitechEricsson ABRISE This document specifies a profile for the Authentication and
Authorization for Constrained Environments (ACE) framework. It
utilizes Object Security for Constrained RESTful Environments
(OSCORE) to provide communication security and proof-of-possession
for a key owned by the client and bound to an OAuth 2.0 access token.
Message Queuing Telemetry Transport (MQTT)-TLS profile of Authentication and Authorization for Constrained Environments (ACE) FrameworkBrunel UniversityOxbotica This document specifies a profile for the ACE (Authentication and
Authorization for Constrained Environments) framework to enable
authorization in a Message Queuing Telemetry Transport (MQTT)-based
publish-subscribe messaging system. Proof-of-possession keys, bound
to OAuth2.0 access tokens, are used to authenticate and authorize
MQTT Clients. The protocol relies on TLS for confidentiality and
MQTT server (broker) authentication.
Requirements on Application ProfilesThis section lists the specifications on this profile based on the requirements defined in Appendix A of
REQ1: Specify the encoding and value of the identifier of group or topic of 'scope': see ).
REQ2: Specify the encoding and value of roles of 'scope': see ).
REQ3: Optionally, specify the acceptable values for 'sign_alg': TODO
REQ4: Optionally, specify the acceptable values for 'sign_parameters': TODO
REQ5: Optionally, specify the acceptable values for 'sign_key_parameters': TODO
REQ6: Optionally, specify the acceptable values for 'pub_key_enc': TODO
REQ7: Specify the exact format of the 'key' value: COSE_Key, see .
REQ8: Specify the acceptable values of 'kty' : "COSE_Key", see .
REQ9: Specify the format of the identifiers of group members: TODO
REQ10: Optionally, specify the format and content of 'group_policies' entries: not defined
REQ11: Specify the communication protocol the members of the group must use: CoAP pub/sub.
REQ12: Specify the security protocol the group members must use to protect their communication. This must provide encryption, integrity and replay protection: Object Security of Content using COSE, see .
REQ13: Specify and register the application profile identifier : "coap_pubsub_app", see .
REQ14: Optionally, specify the encoding of public keys, of 'client_cred', and of 'pub_keys' if COSE_Keys are not used: NA.
REQ15: Specify policies at the KDC to handle id that are not included in get_pub_keys: TODO
REQ16: Specify the format and content of 'group_policies': TODO
REQ17: Specify the format of newly-generated individual keying material for group members, or of the information to derive it, and corresponding CBOR label : not defined
REQ18: Specify how the communication is secured between Client and KDC. Optionally, specify transport profile of ACE to use between Client and KDC: pre-set, as KDC is AS.
OPT1: Optionally, specify the encoding of public keys, of 'client_cred', and of 'pub_keys' if COSE_Keys are not used: NA
OPT2: Optionally, specify the negotiation of parameter values for signature algorithm and signature keys, if 'sign_info' and 'pub_key_enc' are not used: NA
OPT3: Optionally, specify the format and content of 'mgt_key_material': not defined
OPT4: Optionally, specify policies that instruct clients to retain unsuccessfully decrypted messages and for how long, so that they can be decrypted after getting updated keying material: not defined
AcknowledgmentsThe author wishes to thank Ari Keraenen, John Mattsson, Ludwig Seitz, Goeran Selander, Jim Schaad and Marco Tiloca for the useful discussion and reviews that helped shape this document.