ACE Working Group F. Palombini Internet-Draft Ericsson Intended status: Standards Track C. Sengul Expires:7 July 20211 January 2022 Brunel University3 January30 June 2021 Pub-Sub Profile for Authentication and Authorization for Constrained Environments (ACE)draft-ietf-ace-pubsub-profile-02draft-ietf-ace-pubsub-profile-03 Abstract This specification defines an application profile for authentication and authorization for publishers and subscribers in apub-sub setting scenario in aconstrainedenvironment,pub-sub scenario, using the ACE framework. This profile relies on transport layer or application layer security to authorize thepublisherpub- sub clients to the broker. Moreover, itrelies ondescribes application layer security forpublisher-broker and subscriber-broker communication.publisher-subscriber communication going through the broker. Note to Readers Source for this draft and an issue tracker can be found at https://github.com/ace-wg/pubsub-profile (https://github.com/ace-wg/ pubsub-profile). Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on7 July 2021.1 January 2022. Copyright Notice Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2. Application Profile Overview . . . . . . . . . . . . . . . . 3 3. PubSubApplication Profiles . . . . . . .Authorisation . . . . . . . . . .5 3.1. Retrieval of COSE Key for protection of content . . .. .6 3.2. coap_pubsub_app Application Profile. . . . . . . . 5 3.1. AS Discovery (Optional) . . .9 3.3. mqtt_pubsub_app Application Profile. . . . . . . . . . .9 4. Publisher. . . 6 3.2. Authorising to the Broker . . . . . . . . . . . . . . . . 6 4. Key Distribution for PubSub Content Protection . . . . . . .97 4.1.CoAP Publisher . . . . . . .Token POST . . . . . . . . . . . . . .11 4.2. MQTT Publisher. . . . . . . . . 7 4.2. Join Request . . . . . . . . . . . .11 5. Subscriber. . . . . . . . . . 8 5. PubSub Protected Communication . . . . . . . . . . . . . . .1211 5.1.CoAP SubscriberUsing COSE Objects To Protect The Resource Representation . . . . . . . . . . . . . . . . . . . . . 125.2. MQTT Subscriber . . . . . .6. Profile-specific Considerations . . . . . . . . . . . . . . . 136. Pub-Sub Protected Communication . .6.1. CoAP PubSub Application Profile . . . . . . . . . . . . . 136.1. Using COSE Objects To Protect The Resource Representation . . . . . . . .6.2. MQTT PubSub Application Profile . . . . . . . . . . . . . 14 7. Security Considerations . . . . . . . . . . . . . . . . . . .1615 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 8.1. ACE Groupcomm Profile Registry . . . . . . . . . . . . . 16 8.1.1. CoAP Profile Registration . . . . . . . . . . . . . .1716 8.1.2.CoAPMQTT Profile Registration . . . . . . . . . . . . . . 17 8.2. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 17 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 9.1. Normative References . . . . . . . . . . . . . . . . . . 17 9.2. Informative References . . . . . . . . . . . . . . . . . 18 Appendix A. Requirements on Application Profiles . . . . . . . . 19 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 21 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 1. IntroductionThe publisher-subscriber setting allows forIn the publish-subscribe (pub-sub) scenario, devices with limited reachabilitytocommunicate via abroker thatbroker, which enables store-and- forward messaging between the devices.The pub-sub scenario using the Constrained Application Protocol (CoAP) is specified in [I-D.ietf-core-coap-pubsub], while the one using MQTT is specified in REF MQTT.This document defines a way to authorizenodes in a CoAPpub-subtype of setting,clients using the ACE framework [I-D.ietf-ace-oauth-authz], and to provide the keys for protecting the communication betweenthese nodes.them. The pub-sub communication using the Constrained Application Protocol (CoAP) 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 specifications for MQTT and CoAP pub-sub, but can easily be adapted for other transportprotocolprotocols as well. 1.1. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Readers are expected to be familiar with the terms and concepts described in [I-D.ietf-ace-oauth-authz], [I-D.ietf-ace-key-groupcomm]. In particular, analogously to [I-D.ietf-ace-oauth-authz], terminology for entities in the architecture such as Client (C), Resource Server (RS), and Authorization Server (AS) is defined in OAuth 2.0 [RFC6749] and [I-D.ietf-ace-actors], and terminology for entities such as the Key Distribution Center (KDC) and Dispatcher in [I-D.ietf-ace-key-groupcomm]. Readers are expected to be familiar with terms and concepts of pub- sub group communication, as described in [I-D.ietf-core-coap-pubsub], or MQTT(REF MQTT pubsub).[MQTT-OASIS-Standard-v5]. 2. Application Profile Overview The objective of this document is to specify how to authorize nodes, provide keys, and protect a pub-sub communication, using [I-D.ietf-ace-key-groupcomm], whichitselfexpands from theAceACE framework ([I-D.ietf-ace-oauth-authz]), and transport profiles ([I-D.ietf-ace-dtls-authorize], [I-D.ietf-ace-oscore-profile],REF MQTT profile).[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], MQTT(see REF MQTT comm),[MQTT-OASIS-Standard-v5] , or other transport. Note that both publishers and subscribers use the same profiles. The architecture of the scenario is shown in Figure 1. +----------------+ +----------------+ | | | Key | | Authorization | |AuthorizationDistribution | | Server1| |Server 2Center | | (AS) | | (KDC) | +----------------+ +----------------+ ^ ^^ || | +---------(A)----+ |+-----(D)------+| +--------------------(B)--------+| vv v +------------+ +------------++------------+| | | | | Pub-Sub || Publisher | ----(E)---><-- (C)---> | Broker | |Subscriber | | | | | <----(F)---- |Client | | | | |-----(G)--->| | +------------+ +------------++------------+Figure 1: ArchitectureCoAP pubsubfor Pub-Sub with Authorization ServersThe RSPublisher or Subscriber Clients isthe broker, which contains the topic. This node correspondsreferred tothe Dispatcher,as Client in[I-D.ietf-ace-key-groupcomm]. The AS1 hosts the policies about the Broker: what endpoints are allowed to Publish on the Broker. The Clients access this node to get write access to the Broker. The AS2 hosts the policies about the topic: what endpoints are allowed to access what topic.short. Thisnode represents both the AS and Key Distribution Center roles from [I-D.ietf-ace-key-groupcomm]. There are four phases, the first three can be done in parallel.profile specifies: 1. ThePublisher requests publishing access to the Broker at the AS1,establishment of a secure connection between a Client andcommunicates with the Broker to set up security.Broker, using an ACE transport profile such as DTLS [I-D.ietf-ace-dtls-authorize], OSCORE [I-D.ietf-ace-oscore-profile], or MQTT-TLS [I-D.ietf-ace-mqtt-tls-profile] (A and C). 2. The Clients retrieval of keying material for the Publisherrequests accessClient toa specific topic at the AS2 3. The Subscriber requests accesspublish protected publications toa specific topic attheAS2. 4. The PublisherBroker, and for the Subscribersecurely postClient toand getread protected publicationsfrom the Broker. This exchange aims(B). These exchanges aim at setting up2two different securityassociations: onassociations. On the one hand, the Publisherhasand the Subscriber clients have a security association with theBroker, to protect the communication and securelyBroker (i.e. RS), so that RS can authorize thePublisher to publish on a topicClients (Security Association 1). On the other hand, the Publisher has a security association with the Subscriber, to protect the publication contentitself(Security Association2).2) while sending it through the broker (i.e. here, the broker corresponds to the Dispatcher in [I-D.ietf-ace-key-groupcomm]). The Security Association 1 is set up usingAS1AS and a transport profile of [I-D.ietf-ace-oauth-authz], the Security Association 2 is set up usingAS2AS, KDC and [I-D.ietf-ace-key-groupcomm]. Note that,analogously togiven that thePublisher,publication content is protected, the Broker MAY accept unauthorised Subscribers. In this case, the Subscriber client canalso setskip setting upan additional security association with the Broker, using an AS, in the same way the Publisher does with AS1. In this case, only authorized Subscribers would be able to get notifications from the Broker. The overhead would be that each Subscriber should access the AS and get all the information to start a secure exchangeSecurity Association 1 with the Broker. +------------+ +------------+ +------------+ | | | | | | | Publisher | | Broker | | Subscriber | | | | | | | | | | | | | +------------+ +------------+ +------------+ : : : : : : : '------ Security -------' '-----------------------' : : Association 1 : '------------------------------- Security --------------' Association 2Note that AS1 and AS2 might either be co-resident or be 2 separate physical entities, in which case access control policies must be exchangedFigure 2: Security Associations betweenAS1 and AS2, so that they agree on rights for joining nodes about specific topics. How the policies are exchanged is out of scope for this specification.Publisher, Broker, Subscriber pairs. 3. PubSubApplication Profiles Each profile defined in this document uses [I-D.ietf-ace-key-groupcomm], which expands the ACE framework. This section defines which exact parameters from [I-D.ietf-ace-key-groupcomm] have to be used, and the values for each parameter.Authorisation Since [I-D.ietf-ace-oauth-authz] recommends the use of CoAPancand 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 [RFC8259] can be used instead of CBOR, using the conversion method specified in Sections4.16.1 and4.26.2 of[RFC7049].[RFC8949]. In case JSON is used, the Content Format or Media Type of the message has to be changed accordingly.The Publisher and the Subscriber map to the Client in [I-D.ietf-ace-key-groupcomm], the AS2 maps to the AS and to the KDC, the Broker maps to the Dispatcher. Note that both publishers and subscribers use the same profile. 3.1. RetrievalExact definition ofCOSE Key for protectionthese exchanges are considered out ofcontent This phase is common to both Publisher and Subscriber. To maintain the generality, the Publisher or Subscriber is referred as Client inscope for thissection.document. Figure 3 shows the message flow for authorisation purposes. Client BrokerAS2AS KDC |[----- Resource[--Resource Request---->](CoAP/MQTT/other)-->] | | | | | |[<-- AS1, AS2 Information ---]| | [<----AS Information (CoAP/MQTT/other)--] | | |[------ Pub Key Format Negociation Request --->]| | | |[<---- Pub Key Format Negociation Response ----]----- Authorisation Request (CoAP/HTTP/other)---->| | | | |-- Authorization + Key Distribution Request --->| <------Authorisation Response (CoAP/HTTP/other) --| | | |<-- Authorization + Key Distribution Response --|----------------------Token Post (CoAP)------------------->| | | |------------------- Joining Request (CoAP) --------------->| | | |------------------ Joining Response (CoAP) --------------->| Figure2: B: Access request - response3: Authorisation Flow 3.1. AS Discovery (Optional) Complementary to what is defined in [I-D.ietf-ace-oauth-authz] (Section5.1.1), to determine the AS2 in charge of a topic hosted at the Broker,5.1) for AS discovery, the Broker MAY send the address ofboththe ASin charge of the topic backto the Client in the 'AS' parameter in the ASInformation,Information as a response to an Unauthorized Resource Request (Section5.1.2). The uri of AS2 is concatenated to the uri of AS1, and separated by a comma.5.2). An example using CBOR diagnostic notation and CoAP is given below: 4.01 Unauthorized Content-Format: application/ace+cbor {"AS":"coaps://as1.example.com/token, coaps://as2.example.com/pubsubkey"}"coaps://as.example.com/token"} Figure3: AS1, AS24: AS Information exampleAfter retrieving the AS2 address, the Client MAY send a request to the AS, in order to retrieve necessary information concerning the public keys in the group, as well as concerning the algorithm and related parameters for computing signatures in the group. This requestAuthorisation Server (AS) Discovery isa subset of the Token POST requestalso defined in Section3.32.2.6.1 of[I-D.ietf-ace-key-groupcomm], specifically a CoAP POST request to a specific resource at the AS, including only the parameters 'sign_info' and 'pub_key_enc' in the CBOR map in the payload. The default url-path[I-D.ietf-ace-mqtt-tls-profile] forthis resource is /ace-group/gid/cs-info, where "gid" is the topic identifier, but implementations areMQTT v5 clients (and notrequiredsupported for MQTT v3 clients). 3.2. Authorising touse this name, and can use their own instead. The AS MUST respond with the response defined in Section 3.3 of [I-D.ietf-ace-key-groupcomm], specifically including the parameters 'sign_info', 'pub_key_enc', and 'rsnonce' (8 bytes pseudo-random nonce generated bytheAS).Broker Afterthat,retrieving the AS address, the Client sends anAuthorization + Joining Request, which is an AuthorizationAuthorisation Requestmerged with a Joining Request, as described in [I-D.ietf-ace-key-groupcomm], Sections 3.1 and 4.2. The reason for merging these two messages is that the AS2 is bothto the ASand the KDC, in this setting, sofor theAuthorization ResponseKDC and thePost Token message are not necessary. More specifically,Broker. Note that theClient sends a POST requestAS authorises: 1. What endpoints are allowed to Publish or Subscribe to the/ace-group/ gid endpoint on AS2, with Content-Format = "application/ace+cbor" that MUST contain in the payload (formatted as a CBOR map): *Broker. 2. What endpoints are allowed to access to which topic(s). The request includes the following fields from theJoiningAuthorization Request (Section4.23.1 of [I-D.ietf-ace-key-groupcomm]):- 'scope' parameter set* 'scope', containing the topic identifier, that the Client wishes toa CBORaccess * 'audience', an arraycontaining: owith identifiers of thebroker's topic as first element,KDC ando the text string "publisher" iftheclient request toBroker. Other additional parameters can bea publisher, "subscriber" if the client request to be a subscriber, or a CBOR array containing both, if the client request to be both. - 'get_pub_keys' parameter set to the empty arrayincluded ifthe Client needs to retrieve the public keys of the other pubsub members, - 'client_cred' parameter containing the Client's public key formattednecessary, asa COSE_Key, if the Client needs to directly send that to the AS2, - 'cnonce', set to a 8 bytes long pseudo-random nonce, if 'client_cred'defined in [I-D.ietf-ace-oauth-authz]. The 'scope' parameter ispresent, - 'client_cred_verify', set to a singature computed over the rsnonce concatenated with cnonce, if 'client_cred'encoded as follows, where 'gname' ispresent, - OPTIONALLY, if needed, the 'pub_keys_repos' parameter * the following fields from the Authorization Requesttreated as topic identifier or filter. gname = tstr role = tstr scope_entry = [ gname , ? ( role / [ 2*role ] ) ] scope = << [ + scope_entry ] >> Figure 5: CDLL definition of scope, using as example group name encoded as tstr and role as tstr. Other scope representations are also possible and are described in (Section 3.1 of[I-D.ietf-ace-key-groupcomm]): - OPTIONALLY, if needed, additional parameters such as 'client_id' TODO: 'cnonce' might change name. TODO: register media type ace+json for HTTP?[I-D.ietf-ace-key-groupcomm]). Note that in thealg parameterAIF- MQTT data model is described in Section 3 of the'client_cred' COSE_Key MUST be a signing algorithm,[I-D.ietf-ace-mqtt-tls-profile], the role values have been further constrained to "pub" and "sub". The AS responds with an Authorization Response as defined insection 8Section 5.8.2 of[RFC8152],[I-D.ietf-ace-oauth-authz] andthat it is the same algorithm used to compute the signature sent in 'client_cred_verify'. ExamplesSection 3.2 of [I-D.ietf-ace-key-groupcomm]. If a token is returned, then thepayloadaudience ofa Authorization + Joining Requestthis token arespecified in Figure 5 and Figure 8. The AS2 verifies thattheClient is authorized to accessKDC and thetopic and, ifBroker, and the'client_cred' parameter is present, storesclient uses thepublic key of the Client. The AS2 response is an Authorization + Joining Response, with Content-Format = "application/ace+cbor". The payload (formatted as a CBOR map) MUST contain: * the following fields from the Joining Response (Section 4.2 of [I-D.ietf-ace-key-groupcomm]): - 'kty' identifies a key type "COSE_Key", as defined in Section 8.2. - 'key', which contains a "COSE_Key" object (defined in [RFC8152], containing: o 'kty' with value 4 (symmetric) o 'alg' with value defined by the AS2 (Content Encryption Algorithm) o 'Base IV' with value defined by the AS2 o 'k' with value the symmetric key value o OPTIONALLY, 'kid' with an identifiersame token forthe key value - OPTIONALLY, 'exp' with the expiration time of the key - 'pub_keys', containing the public keys of all authorized signing members formatted as COSE_Keys, if the 'get_pub_keys' parameter was present and set to the empty array in the Authorization + Key Distribution Request * the following fields from the Authorization Response (Section 3.2 of [I-D.ietf-ace-key-groupcomm]): - 'profile' set to the corresponding value, see Section 3.2 or Section 3.3 - OPTIONALLY 'scope', set to a CBOR array containing: o the broker's topic as first element, and o the string "publisher" if the client is an authorized publisher, "subscriber" if the client is an authorized subscriber, or a CBOR array containing both, if the client is authorized to beboth.Examples for the response payload are detailed in Figure 6 and Figure 9. 3.2. coap_pubsub_app Application ProfileIn case CoAP PubSub is used as communicationprotocol: *protocol, 'profile' is set to"coap_pubsub_app","coap_pubsub_app" asspecifieddefined in Section 8.1.1.3.3. mqtt_pubsub_app Application ProfileIn casemQTTMQTT PubSub is used as communicationprotocol: *protocol, 'profile' is set to"mqtt_pubsub_app","mqtt_pubsub_app" asspecifieddefined in Section 8.1.2. 4.Publisher In this section, it is specified howKey Distribution for PubSub Content Protection 4.1. Token POST After receiving a token from thePublisher requests, obtains and communicates toAS, theBrokerClient posts theaccess token, as well as the retrieval oftoken to thekeying materialKDC (Section 3.3 [I-D.ietf-ace-key-groupcomm]). In addition toprotectthepublication. +----------------+ +----------------+ | | | | | Authorization | | Authorization | | Server 1 | | Server 2 | | | | | +----------------+ +----------------+ ^ ^ | | +---------(A)----+ | | +--------------------(B)--------+ v v +------------+ +------------+ | | ----(C)---> | | | Publisher | | Broker | | | | | | | | | +------------+ +------------+ Figure 4: Phase 1: Publisher side This istoken post, acombination of two independent phases: * one isSubscriber Client MAY ask for theestablishment of a secure connection between Publisher and Broker, using an ACE transport profile such as DTLS [I-D.ietf-ace-dtls-authorize], OSCORE [I-D.ietf-ace-oscore-profile] or REF MQTT Profile. (A)(C) *public keys in the group, used for source authentication, as well as any otheris the Publisher's retrieval of keying material to protect the publication. (B)group parameters. Indetail: (A) corresponds tothis case, theAccess Token Request and Response between Publisher and Authorization Servermessage MUST have Content-Format set toretrieve"application/ace+cbor" defined in Section 8.16 of [I-D.ietf-ace-oauth-authz]. The message payload MUST be formatted as a CBOR map, which MUST include theAccess Tokenaccess token andRS (Broker) Information. As specified,thePublisher has'sign_info' parameter. The details for therole'sign_info' parameter can be found in Section 3.3 ofa CoAP client, the Broker has[I-D.ietf-ace-key-groupcomm]. Alternatively, therole ofjoining node may retrieve this information by other means as described in [I-D.ietf-ace-key-groupcomm]. The KDC verifies that theCoAP server. (C) correspondsClient is authorized tothe exchange between Publisher and Broker, where the Publisher sends itsaccesstoken totheBroker and establishes a secure connectiontopic with theBroker. Depending onrequested role. After successful verification, theInformation received in (A), this can be for example DTLS handshake, or other protocols. Depending onClient is authorized to receive theapplication, there may not begroup keying material from theneed for this set up phase: for example, if OSCORE is used directly. Note that, in lineKDC and join the group. The KDC replies to the Client withwhat defined ina 2.01 (Created) response, using Content-Format "application/ace+cbor". The payload of theACE transport profile used,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 tokenincludesfrom a Publisher Client will have "pub" role, thescope (i.e. pubsub topics onKDC MUST include 'kdcchallenge' in theBroker)CBOR map, specifying a dedicated challenge N_S generated by thePublisher is allowedKDC. The Client uses this challenge topublish to. For implementation semplicity, it is RECOMMENDEDprove possession of its own private key (see [I-D.ietf-ace-key-groupcomm] for details). 4.2. Join Request In 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 theACEDTLS transport profileused[I-D.ietf-ace-dtls-authorize] andthis specification use the same formatOSCORE transport profile [I-D.ietf-ace-oscore-profile] of"scope". (A) and (C) details are specified inACE. After establishing a secure communication, theprofile used. (B) correspondsClient sends a Joining Request to theretrievalKDC as described in Section 4.3 of [I-D.ietf-ace-key-groupcomm]. More specifically, thekeying materialClient sends a POST request toprotectthepublication end-to-end/ace-group/GROUPNAME endpoint on KDC, withthe subscribers (see Section 6.1), and uses [I-D.ietf-ace-key-groupcomm]. The details are definedContent-Format = "application/ace+cbor" that MUST contain inSection 3.1. 4.1. CoAP Publisher An example ofthe payload (formatted as a CBOR map, Section 4.1.2.1 ofan Authorization + Joining Request and[I-D.ietf-ace-key-groupcomm]): * 'scope' parameter as defined earlier * '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 as a COSE_Key (as defined in Section 8.2), 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 singature 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' set to receive the public key of all Publishers using "pub" as the 'role_filter' (as described in Section 4.1.2.1 of [I-D.ietf-ace-key-groupcomm]). 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 section 8 of [RFC8152], 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 = "application/ace+cbor". The payload (formatted as a CBOR map) MUST contain the following fields from the Joining Response (Section 4.2 of [I-D.ietf-ace-key-groupcomm]): * 'kty' identifies a key type "COSE_Key". * 'key', which contains a "COSE_Key" object (defined in [RFC8152], containing: - 'kty' with value 4 (symmetric) - 'alg' with value defined by the AS2 (Content Encryption Algorithm) - 'Base IV' with value defined by the AS2 - '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 authorized signing members formatted as COSE_Keys, 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. An example of the Joining Request and corresponding Response for a CoAP Publisher using CoAP and CBOR is specified in Figure56 and Figure6,7, where SIG is a signature computed using the private key associated to the public key and the algorithm in"client_cred".'client_cred'. { "scope" : ["Broker1/Temp","publisher"], "client_id" : "publisher1","pub"], "client_cred" : { / COSE_Key / / type / 1 : 2, / EC2 / / kid / 2 : h'11', / alg / 3 : -7, / ECDSA with SHA-256 / / crv / -1 : 1 , / P-256 / / x / -2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de1 08de439c08551d', / y /-3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e 9eecd0084d19c', "cnonce" : h'd36b581d1eef9c7c, "client_cred_verify" : SIG } } Figure5: Authorization +6: Joining Request payload for a Publisher {"profile" : "coap_pubsub_app","kty" : "COSE_Key", "key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7', -1: h'02e2cc3a9b92855220f255fff1c615bc'} } Figure6: Authorization +7: Joining Response payload for a Publisher4.2. MQTT Publisher TODO 5. Subscriber In this section, it is specified how the Subscriber retrieves the keying material to protect the publication. +----------------+ | | | Authorization | | Server 2 | | | +----------------+ ^ | +-----(D)------+ | v +------------+ | | | Subscriber | | | | | +------------+ Figure 7: Phase 2: Subscriber side Step (D) between Subscriber and AS2 corresponds to the retrieval of the keying material to verify the publication end-to-end with the publishers (see Section 6.1). The details are defined in Section 3.1 This step is the same as (B) between Publisher and AS2 (Section 3.1), with the following differences: * The Authorization + Joining Request MUST NOT contain the 'client_cred parameter', the role element in the 'scope' parameter MUST be set to "subscriber". The Subscriber MUST have access to the public keys of all the Publishers; this MAY be achieved in the Authorization + Joining Request by using the parameter 'get_pub_keys' set to empty array. * The Authorization + Key Distribution Response MUST contain the 'pub_keys' parameter. 5.1. CoAP SubscriberAn example of the payloadof an Authorization +of a Joining Request and corresponding Response for aCoAPSubscriber using CoAP and CBOR is specified in Figure 8 and Figure 9. { "scope" : ["Broker1/Temp","subscriber"],"sub"], "get_pub_keys" :[ ][true, ["pub"], []] } Figure 8:Authorization +Joining Request payload for a Subscriber {"profile" : "coap_pubsub_app","scope" : ["Broker1/Temp","subscriber"],"sub"], "kty" : "COSE_Key" "key" : {1: 4, 2: h'1234', 3: 12, 5: h'1f389d14d17dc7', -1: h'02e2cc3a9b92855220f255fff1c615bc'}, "pub_keys" : [ { 1 : 2, / type EC2 / 2 : h'11', / kid / 3 : -7, / alg ECDSA with SHA-256 / -1 : 1 , / crv P-256 / -2 : h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de43 9c08551d', / x / -3 : h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd 0084d19c' / y / } ] } Figure 9:Authorization +Joining Response payload for a Subscriber5.2. MQTT Subscriber TODO 6. Pub-Sub5. PubSub Protected CommunicationThis section specifies the communication Publisher-Broker and Subscriber-Broker, after the previous phases have taken place. The operations of publishing and subscribing are defined in [I-D.ietf-core-coap-pubsub].+------------+ +------------+ +------------+ | | | | | | | Publisher |----(E)--->----(D)---> | Broker | | Subscriber | | | | |<----(F)----<----(E)---- | | | | | |-----(G)--->-----(F)---> | | +------------+ +------------+ +------------+ Figure 10:Phase 3:Secure communication between Publisher and Subscriber (D) corresponds to the publication of a topic on the Broker. The publication (the resource representation) is protected with COSE ([RFC8152]). 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. Publisher Broker Subscriber | --- PUT /topic ----> | | | protected with COSE | | | | <--- GET /topic ----- | | | | | | ---- response ------> | | | protected with COSE | Figure 11: (E), (F), (G): Example of protected communication for CoAP 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. 5.1. Using COSE Objects To Protect The Resource Representation The Publisher uses the symmetric COSE Key received from the KDC (Section 4) to protect the payload of the PUBLISH operation (Section 4.3 of [I-D.ietf-core-coap-pubsub] and [MQTT-OASIS-Standard-v5]). Specifically, the COSE Key is used to create a COSE_Encrypt0 with algorithm specified by KDC. The Publisher uses the private key corresponding to the public key sent 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 the COSE object before the publication is sent to the Broker. The(E) message correspondsSubscriber 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 ofa topic onCoAP theBroker. Thepublication(the resource representation)isprotected with COSE ([RFC8152]). The (F)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 thesubscriptionfollowing way: * The protected Headers (as described in Section 3 of [RFC8152]) MAY contain theSubscriber, which is unprotected, unless a profilekid parameter, with value the kid ofACE [I-D.ietf-ace-oauth-authz] is used between Subscriberthe symmetric COSE Key received in Section 4 andBroker.MUST contain the content encryption algorithm. * The(G) messageunprotected Headers MUST contain the Partial IV, with value a sequence number that is incremented for every message sent, and theresponse fromcounter signature that includes: - theBroker, wherealgorithm (same value as in the asymmetric COSE Key received in (B)) in thepublication isprotectedwith COSE.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 Section 4.5 of [RFC8152]. * Theflow graphciphertext, computed over the plaintext that MUST contain the message payload. The 'external_aad' ispresented below. Publisher Broker Subscriber | --- PUT /topic ----> | | |an empty string. An example is given in Figure 12: 16( [ / protectedwith COSE | | | | <--- GET /topic ----- | | | | | | ---- response ------> | | |/ h'a2010c04421234' / { \ alg \ 1:12, \ AES-CCM-64-64-128 \ \ kid \ 4: h'1234' } / , / unprotected / { / iv / 5:h'89f52f65a1c580', / countersign / 7:[ / protectedwith COSE |/ h'a10126' / { \ alg \ 1:-7 } / , / unprotected / { / kid / 4:h'11' }, / signature / SIG / 64 bytes signature / ] }, / ciphertext / h'8df0a3b62fccff37aa313c8020e971f8aC8d' ] ) Figure11: (E), (F), (G):12: Example ofprotected communication 6.1. Using COSE Objects To Protect The Resource Representation The Publisher uses the symmetricCOSEKey received from AS2Object sent inexchange B (Section 3.1) to protectthe payload ofthea PUBLISH operation(Section 4.3 of [I-D.ietf-core-coap-pubsub]The encryption andREF MQTT). Specifically,decryption operations are described in sections 5.3 and 5.4 of [RFC8152]. 6. Profile-specific Considerations This section summarises theCOSE KeyCoAP and MQTT specific pub-sub communications, and considerations respectively. 6.1. CoAP PubSub Application Profile A CoAP Pub-Sub Client and Broker use an ACE transport profile such as DTLS [I-D.ietf-ace-dtls-authorize], OSCORE [I-D.ietf-ace-oscore-profile]. As shown in Figure 1, (A) isused to create a COSE_Encrypt0 with algorithm specified by AS2. Thean Access Token Request and Response exchange between Publisheruses the private key correspondingand Authorization Server to retrieve thepublic key sent toAccess Token and RS (Broker) Information. As specified, theAS2 in exchange B (Section 3.1) to countersignClient has theCOSE Object as specified in Section 4.5role of[RFC8152]. Thea CoAPpayload is replaced byclient, the Broker has theCOSE object beforerole of thepublication is sentCoAP server. (B) corresponds to theBroker. The Subscriber usesretrieval of thekid inkeying material to protect thecountersignature fieldpublication end-to-end (see Section 5.1), and uses [I-D.ietf-ace-key-groupcomm]. The details are defined inthe COSE objectSection 4. (C) corresponds toretrievetheright public key to verifyexchange between thecountersignature. It then usesClient and thesymmetric key received from AS2Broker, where the Client sends its access token toverifythe Broker anddecryptestablishes a secure connection with thepublicationBroker. Depending on the Information received in (A), this can be for example DTLS handshake, or other protocols. Depending on thepayload of the CoAP Notification fromapplication, there may not be theBroker. The COSE objectneed for this set up phase: for example, if OSCORE isconstructedused directly. Note that, inthe following way: * The protected Headers (as describedline with what defined inSection 3 of [RFC8152]) MAY containthekid parameter, with valueACE transport profile used, thekid ofaccess token includes thesymmetric COSE Key received in Section 3.1 and MUST containscope (i.e. pubsub topics on thecontent encryption algorithm. * The unprotected Headers MUST containBroker) thePartial IV, with value a sequence number thatPublisher isincremented for every message sent,allowed to publish to. For implementation simplicity, it is RECOMMENDED that the ACE transport profile used and this specification use thecounter signature that includes: -same format of "scope". After the previous phases have taken place, the pub-sub communication can commence. The operations of publishing and subscribing are defined in [I-D.ietf-core-coap-pubsub]. 6.2. MQTT PubSub Application Profile The steps MQTT clients go through are similar to thealgorithm (same valueCoAP clients as described inthe asymmetric COSE Key received in (B))Section 6.1. The payload that is carried intheMQTT messages will be protectedheader; - the kid (same valueusing COSE. In MQTT, topics are organised as a tree, and in thekid[I-D.ietf-ace-mqtt-tls-profile] '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 theasymmetric COSE Key received in (B))topic tree. Hence, it is important to distinguish application groups and security groups defined in [I-D.ietf-core-groupcomm-bis]. An application group has relevance at theunprotected header;application level -the signature computed as specifiedfor example, inSection 4.5MQTT an application group could denote all topics stored under ""home/lights/". On the other hand, a security group is a group of[RFC8152]. *endpoints that each store group security material to exchange secure communication within the group. Theciphertext, computed overgroup communication in [I-D.ietf-ace-key-groupcomm] refers to security groups. To be able join theplaintextright 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 thatMUSTcontain broker- specific information, and hence, can be used by theCoAP payload. The external_aad is an empty string. An example is given in Figure 12 16( [ / protected / h'a2010c04421234' / { \ alg \ 1:12, \ AES-CCM-64-64-128 \ \ kid \ 4: h'1234' } / , / unprotected / { / iv / 5:h'89f52f65a1c580', / countersign / 7:[ / protected / h'a10126' / { \ alg \ 1:-7 } / , / unprotected / { / kid / 4:h'11' }, / signature / SIG / 64 bytes signature / ] }, / ciphertext / h'8df0a3b62fccff37aa313c8020e971f8aC8d' ] ) Figure 12: Example of COSE Object sentbroker 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: 1. Client learns the (application group, security group) associations from the $SYS topic (this topic is RECOMMENDED to be a protected topic). These associations MAY be published under another topic. 2. Client computes the corresponding security groups for its application groups, and sends token requests for the security groups to AS. 3. Client sends join requests to KDC to gets the keys for these security groups. 4. Client authorises to the Broker with the token (described in [I-D.ietf-ace-mqtt-tls-profile]). 5. A Publisher Client sends PUBLISH messages for a given topic and protects the payloadof awith the corresponding key for the associated security group. RS validates the PUBLISHoperation The encryptionmessage by checking the topic's security group association anddecryption operationsthe stored token. 6. A Subscriber Client may send SUBSCRIBE messages with one or multiple topic filters. A topic filter may correspond to multiple topics but MUST belong to a single security group. If requested topics aredescribedinsections 5.3 and 5.4 of [RFC8152].multiple security groups, then these topics SHOULD be separated into the corresponding topic filters in the SUBSCRIBE message. 7. Security Considerations In the profile described above, the Publisher and Subscriber use asymmetric crypto, which would make the message exchange quite heavy for small constrained devices. Moreover, all Subscribers must be able to access the public keys of all the Publishers to a specific topic to be able to verify the publications. Such a database could be set up and managed by the same entity having control of the topic, i.e.AS2.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 integrityprotectprotection of thepublication, butpublication. 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 considerations 8. IANA Considerations 8.1. ACE Groupcomm Profile Registry The following registrations are done for the "ACE Groupcomm Profile" Registry following the procedure specified in [I-D.ietf-ace-key-groupcomm]. Note to RFC Editor: Please replace all occurrences of "[[This document]]" with the RFC number of this specification and delete this paragraph. 8.1.1. CoAP Profile Registration Name: coap_pubsub_app Description: Profile for delegating client authentication and authorization for publishers and subscribers in a CoAP pub-sub setting scenario in a constrained environment. CBOR Key: TBD Reference: [[This document]] 8.1.2.CoAPMQTT Profile Registration Name: mqtt_pubsub_app Description: Profile for delegating client authentication and authorization for publishers and subscribers in a MQTT pub-sub setting scenario in a constrained environment. CBOR Key: TBD Reference: [[This document]] 8.2. ACE Groupcomm Key Registry The following registrations are done for the ACE Groupcomm Key Registry following the procedure specified in [I-D.ietf-ace-key-groupcomm]. Note to RFC Editor: Please replace all occurrences of "[[This document]]" with the RFC number of this specification and delete this paragraph. Name: COSE_Key Key Type Value: TBD Profile: coap_pubsub_app Description: COSE_Key object References: [RFC8152], [[This document]] 9. References 9.1. Normative References [I-D.ietf-ace-key-groupcomm] Palombini, F. and M. Tiloca, "Key Provisioning for Group Communication using ACE", Work in Progress, Internet- Draft,draft-ietf-ace-key-groupcomm-10, 2 November 2020, <http://www.ietf.org/internet-drafts/draft-ietf-ace-key- groupcomm-10.txt>.draft-ietf-ace-key-groupcomm-11, 22 February 2021, <https://www.ietf.org/archive/id/draft-ietf-ace-key- groupcomm-11.txt>. [I-D.ietf-ace-oauth-authz] Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and H. Tschofenig, "Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework (ACE-OAuth)", Work in Progress, Internet-Draft,draft-ietf-ace-oauth-authz-36, 16 November 2020, <http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth- authz-36.txt>.draft-ietf-ace-oauth-authz-40, 26 April 2021, <https://www.ietf.org/archive/id/draft-ietf-ace-oauth- authz-40.txt>. [I-D.ietf-core-coap-pubsub] Koster, M., Keranen, A., and J. Jimenez, "Publish- Subscribe Broker for the Constrained Application Protocol (CoAP)", Work in Progress, Internet-Draft, draft-ietf- core-coap-pubsub-09, 30 September 2019,<http://www.ietf.org/internet-drafts/draft-ietf-core-coap-<https://www.ietf.org/archive/id/draft-ietf-core-coap- pubsub-09.txt>. [I-D.ietf-core-groupcomm-bis] Dijk, E., Wang, C., and M. Tiloca, "Group Communication for the Constrained Application Protocol (CoAP)", Work in Progress, Internet-Draft, draft-ietf-core-groupcomm-bis- 03, 22 February 2021, <https://www.ietf.org/archive/id/ draft-ietf-core-groupcomm-bis-03.txt>. [MQTT-OASIS-Standard-v5] Banks, A., Briggs, E., Borgendale, K., and R. Gupta, "OASIS Standard MQTT Version 5.0", 2017, <http://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt- v5.0-os.html>. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <https://www.rfc-editor.org/info/rfc6749>.[RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, October 2013, <https://www.rfc-editor.org/info/rfc7049>.[RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", RFC 8152, DOI 10.17487/RFC8152, July 2017, <https://www.rfc-editor.org/info/rfc8152>. [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", STD 94, RFC 8949, DOI 10.17487/RFC8949, December 2020, <https://www.rfc-editor.org/info/rfc8949>. 9.2. Informative References [I-D.ietf-ace-actors] Gerdes, S., Seitz, L., Selander, G., and C. Bormann, "An architecture for authorization in constrained environments", Work in Progress, Internet-Draft, draft- ietf-ace-actors-07, 22 October 2018,<http://www.ietf.org/ internet-drafts/draft-ietf-ace-actors-07.txt>.<https://www.ietf.org/archive/id/draft-ietf-ace-actors- 07.txt>. [I-D.ietf-ace-dtls-authorize] Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and L. Seitz, "Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)", Work in Progress, Internet-Draft,draft-ietf-ace-dtls-authorize-14, 29 October 2020, <http://www.ietf.org/internet-drafts/draft- ietf-ace-dtls-authorize-14.txt>.draft-ietf-ace-dtls-authorize-16, 8 March 2021, <https://www.ietf.org/archive/id/draft-ietf-ace- dtls-authorize-16.txt>. [I-D.ietf-ace-mqtt-tls-profile] Sengul, C. and A. Kirby, "Message Queuing Telemetry Transport (MQTT)-TLS profile of Authentication and Authorization for Constrained Environments (ACE) Framework", Work in Progress, Internet-Draft, draft-ietf- ace-mqtt-tls-profile-11, 14 April 2021, <https://www.ietf.org/archive/id/draft-ietf-ace-mqtt-tls- profile-11.txt>. [I-D.ietf-ace-oscore-profile] Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, "OSCORE Profile of the Authentication and Authorization for Constrained Environments Framework", Work in Progress, Internet-Draft,draft-ietf-ace-oscore-profile-14,draft-ietf-ace-oscore-profile-18, 14December 2020, <http://www.ietf.org/internet-drafts/draft- ietf-ace-oscore-profile-14.txt>.April 2021, <https://www.ietf.org/archive/id/draft-ietf-ace- oscore-profile-18.txt>. [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017, <https://www.rfc-editor.org/info/rfc8259>. Appendix A. Requirements on Application Profiles This section lists the specifications on this profile based on the requirements defined in Appendix A of [I-D.ietf-ace-key-groupcomm] * REQ1: Specify the encoding and value of the identifier of group or topic of 'scope': see Section3.1).4). * REQ2: Specify the encoding and value of roles of 'scope': see Section3.1).4). * 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 Section3.1.4. * REQ8: Specify the acceptable values of 'kty' : "COSE_Key", see Section3.1.4. * REQ9: Specity 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 Section6.1.5.1. * REQ13: Specify and register the application profile identifier : "coap_pubsub_app", see Section 8.1. * 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 tranport profile of ACE [I-D.ietf-ace-oauth-authz] 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 Acknowledgments The author wishes to thank Ari Keraenen, John Mattsson, Ludwig Seitz, Goeran Selander,Cigdem Sengul,Jim Schaad and Marco Tiloca for the useful discussion and reviews that helped shape this document. Authors' Addresses Francesca Palombini Ericsson Email: francesca.palombini@ericsson.com Cigdem Sengul Brunel University Email: csengul@acm.org