ACE Working Group F. Palombini Internet-Draft Ericsson AB Intended status: Standards Track M. Tiloca Expires:September 9, 2019January 6, 2020 RISE ABMarch 08,July 05, 2019 Key Provisioning for Group Communication using ACEdraft-ietf-ace-key-groupcomm-01draft-ietf-ace-key-groupcomm-02 Abstract This document defines message formats and procedures for requesting and distributing group keying material using the ACE framework, to protect communications between group members. 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 onSeptember 9, 2019.January 6, 2020. Copyright Notice Copyright (c) 2019 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 . . . . . . . . . . . . . . . . . . . . . . . .23 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . .34 3. Authorization to Join a Group . . . . . . . . . . . . . . . .56 3.1. Authorization Request . . . . . . . . . . . . . . . . . .67 3.2. Authorization Response . . . . . . . . . . . . . . . . . 7 3.3. Token Post . . . . . . . . . . . . . . . . . . . . . . . 8 4. Key Distribution . . . . . . . . . . . . . . . . . . . . . .811 4.1. Key Distribution Request . . . . . . . . . . . . . . . .912 4.2. Key Distribution Response . . . . . . . . . . . . . . . .1013 5. Removal of a Node from the Group . . . . . . . . . . . . . .1216 5.1. Expired Authorization . . . . . . . . . . . . . . . . . .1216 5.2. Request to Leave the Group . . . . . . . . . . . . . . .1216 6. Retrieval of New or Updated Keying Material . . . . . . . . .. . . 1317 6.1. Key Re-Distribution Request . . . . . . . . . . . . . . .1418 6.2. Key Re-Distribution Response . . . . . . . . . . . . . .1419 7. Retrieval of Public Keys for Group Members . . . . . . . . .1519 7.1. Public Key Request . . . . . . . . . . . . . . . . . . .1520 7.2. Public Key Response . . . . . . . . . . . . . . . . . . .1620 8. ACE Groupcomm Parameters . . . . . . . . . . . . . . . . . . 21 9. ACE Groupcomm Request Type . . . . . . . . . . . . . . . . . 22 10. Security Considerations . . . . . . . . . . . . . . . . . . .16 9.23 10.1. Update of Keying Material . . . . . . . . . . . . . . . 24 10.2. Block-Wise Considerations . . . . . . . . . . . . . . . 24 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .16 9.1.25 11.1. ACE Authorization Server Request Creation Hints Registry 25 11.2. ACE Public Key Encoding Registry . . . . . . . . . . . . 25 11.3. ACE Groupcomm Parameters Registry . . . . . . . . . . . 26 11.4. Ace Groupcomm Request Type Registry . . . . . . . . . . 26 11.5. ACE Groupcomm Key Registry . . . . . . . . . . . . . . .16 9.2.27 11.6. ACE Groupcomm Profile Registry . . . . . . . . . . . . .17 9.3.28 11.7. ACE Groupcomm Policy Registry . . . . . . . . . . . . . 28 11.8. Sequence Number Synchronization Method Registry . . . . 29 11.9. Expert Review Instructions . . . . . . . . . . . . . . .18 10.29 12. References . . . . . . . . . . . . . . . . . . . . . . . . .18 10.1.30 12.1. Normative References . . . . . . . . . . . . . . . . . .18 10.2.30 12.2. Informative References . . . . . . . . . . . . . . . . .1931 Appendix A. Requirements on Application Profiles . . . . . . . . 33 Appendix B. Document Updates . . . . . . . . . . . . . . . . . .20 A.1.33 B.1. Version -01 to -02 . . . . . . . . . . . . . . . . . . . 34 B.2. Version -00 to -01 . . . . . . . . . . . . . . . . . . .2034 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .2035 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .2135 1. Introduction This document expands the ACE framework [I-D.ietf-ace-oauth-authz] to define the format of messages used to request, distribute and renew the keying material in a group communication scenario, e.g. based on multicast[RFC7390][RFC7390][I-D.dijk-core-groupcomm-bis] or onpublishing-subscribingpublishing- subscribing [I-D.ietf-core-coap-pubsub].Profiles that use group communication can buildThe ACE framework is based onthis documentCBOR [RFC7049], so CBOR is the format used in this specification. However, using JSON [RFC8259] instead of CBOR is possible, using the conversion method specified in Sections 4.1 and 4.2 of [RFC7049]. Profiles that use group communication can build on this document to specify the selection of the message parameters defined in this document to use and their values. Known applications that can benefit from this document would be, for example,profilesthose addressing group communication based on multicast[RFC7390][RFC7390][I-D.dijk-core-groupcomm-bis] orpublishing/ subscribingpublishing/subscribing [I-D.ietf-core-coap-pubsub] in ACE. If the application requires backward and forward security, updated keying material is generated and distributed to the group members (rekeying), when membership changes. A key management scheme performs the actual distribution of the updated keying material to the group. In particular, the key management scheme rekeys the current group members when a new node joins the group, and the remaining group members when a node leaves the group. This document provides a message format for group rekeying that allows to fulfill these requirements. Rekeying mechanisms can be based on [RFC2093], [RFC2094] and [RFC2627]. 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 [RFC2119]. These words may also appear in this document in lowercase, absent their normative meanings. Readers are expected to be familiar with the terms and concepts described in [I-D.ietf-ace-oauth-authz] and [RFC8152], such as Authorization Server (AS) and Resource Server (RS). This document additionally uses the following terminology: o Transport profile, to indicate a profile of ACE as per Section 5.6.4.3 of [I-D.ietf-ace-oauth-authz]. That is, a transport profile specifies the communication protocol and communication security protocol between an ACE Client and Resource Server, as well as proof-of-possession methods, if it supports proof-of-possession access tokens. Tranport profiles of ACE include, for instance, [I-D.ietf-ace-oscore-profile], [I-D.ietf-ace-dtls-authorize] and [I-D.ietf-ace-mqtt-tls-profile]. o Application profile, to indicate a profile of ACE that defines how applications enforce and use supporting security services they require. These services include, for instance, provisioning, revocation and (re-)distribution of keying material. An application profile may define specific procedures and message formats. 2. Overview +------------+ +-----------+ | AS | | KDC | | | .-------->| | +------------+ / +-----------+ ^ / | / v / +-----------+ +------------+ / +------------+ |+-----------+ | Client |<-' | Dispatcher | ||+-----------+ | |<-------->| (RS) |<------->|| Group | +------------+ +------------+ +| members | +-----------+ Figure 1: Key Distribution Participants The following participants (see Figure 1) take part in the authorization and key distribution. o Client (C): node that wants to join the group communication. It can request write and/or read rights. o Authorization Server (AS): same as AS in the ACE Framework; it enforces access policies, and knows if a node is allowed to join the group with write and/or read rights. o Key Distribution Center (KDC): maintains the keying material to protect group communications, and provides it to Clients authorized to join the group. During the first part of the exchange (Section 3), it takes the role of the RS in the ACE Framework. During the second part (Section 4), which is not based on the ACE Framework, it distributes the keying material. In addition, it provides the latest keying material to group members when requested. If required by the application, the KDC renews and re-distributes the keying material in the group when membership changes. o Dispatcher: entity through which the Clients communicate with the group and which distributes messages to the group members. Examples of dispatchers are: the Broker node in a pub-sub setting; a relayer node for group communication that delivers group messages as multiple unicast messages to all group members; an implicit entity as in a multicast communication setting, where messages are transmitted to a multicast IP address and delivered on the transport channel. This document specifies the message flows and formats for: o Authorizing a new node to join the group (Section 3), and providing it with the group keying material to communicate with the other group members (Section 4). o Removing of a current member from the group (Section 5). o Retrieving keying material as a current group member (Section 6 and Section 7). o Renewing and re-distributing the group keying material (rekeying) upon a membership change in the group (Section 4.2 and Section 5). Figure 2 provides a high level overview of the message flow for a node joining a group communication setting. C AS KDC Dispatcher Group | | | | Member | | | | \ | | Authorization Request | | | | Defined | |----------------------------->| | | | in the ACE | | | | | | framework | | Authorization Response | | | | | |<-----------------------------| | | | | | | | | | | |--------- Token Post ---------------->| | / | | | | | |---- Key Distribution Request ------->| | | | | | | |<--- Key Distribution Response ------ | --- Group Rekeying ----->| | | | |<================== Protected communication ===|================>| | | | Figure 2: Message Flow Upon New Node's Joining The exchange of Authorization Request and Authorization Response between Client and AS MUST be secured, as specified by theACEtransport profile of ACE used between Client and KDC. The exchange of Key Distribution Request and Key Distribution Response between Client and KDC MUST be secured, as a result of theACEtransport profile of ACE used between Client and KDC. All further communications between the Client and the KDC MUST be secured, for instance with the same security mechanism used for the Key Distribution exchange. Allfurthercommunications between a Client and the other group members MUST be secured using the keying material provided in Section 4. 3. Authorization to Join a Group This section describes in detail the format of messages exchanged by the participants when a node requests access to a group. The first part of the exchange is based on ACE [I-D.ietf-ace-oauth-authz]. As defined in [I-D.ietf-ace-oauth-authz], the Client requests from the AS an authorization to join the group through the KDC (see Section 3.1). If the request is approved and authorization is granted, the AS provides the Client with a proof-of-possession access token and parameters to securely communicate with the KDC (see Section 3.2). Communications between the Client and the AS MUST be secured,and depends onaccording to the transport profile of ACE used. The Content-Format used in the messages is the one specified by the used transport profile of ACE (e.g. application/ace+cbor for the first two messages and application/cwt for the third message, depending on the format of the access token). Figure 3 gives an overview of the exchange described above. Client AS KDC | | | |---- Authorization Request: POST /token ------>| | | | | |<--- Authorization Response: 2.01 (Created) ---| | | | | |----- POST Token: POST /authz-info --------------->| | | Figure 3: Message Flow of Join Authorization 3.1. Authorization Request The Authorization Request sent from the Client to the AS is as defined in Section 5.6.1 of [I-D.ietf-ace-oauth-authz] and MUST contain the following parameters: o 'grant_type', with value "client_credentials". Additionally, the Authorization Request MAY contain the following parameters, which, if included, MUST have the corresponding values: o 'scope', containing the identifier of the specific group (or topic in the case of pub-sub) that the Client wishes to access, and optionally the role(s) that the Client wishes to take. This value is a CBOR array encoded as a byte string, which contains: * As first element, the identifier of the specific group or topic. * Optionally, as second element, the role (or CBOR array of roles) the Client wishes to take in the group. The encoding of the group or topic identifier and of the role identifiers is application specific. o 'audience', with an identifier of a KDC. o 'req_cnf', as defined in Section 3.1 of [I-D.ietf-ace-oauth-params], optionally containing the public key or a reference to the public key of the Client, if it wishes to communicate that to the AS. o Other additional parameters as defined in [I-D.ietf-ace-oauth-authz], if necessary. 3.2. Authorization Response The Authorization Response sent from the AS to the Client is as defined in Section 5.6.2 of [I-D.ietf-ace-oauth-authz] and MUST contain the following parameters: o 'access_token', containing the proof-of-possession access token. o 'cnf' if symmetric keys are used, not present if asymmetric keys are used. This parameter is defined in Section 3.2 of [I-D.ietf-ace-oauth-params] and contains the symmetric proof-of- possession key that the Client is supposed to use with the KDC. o 'rs_cnf' if asymmetric keys are used, not present if symmetric keys are used. This parameter is as defined in Section 3.2 of [I-D.ietf-ace-oauth-params] and contains information about the public key of the KDC. o 'exp', contains the lifetime in seconds of the access token. This parameter MAY be omitted if the application defines how the expiration time is communicated to the Client via other means, or if it establishes a default value. Additionally, the Authorization Response MAY contain the following parameters, which, if included, MUST have the corresponding values: o 'scope', which mirrors the 'scope' parameter in the Authorization Request (see Section 3.1). Its value is a CBOR array encoded as a byte string, containing: * As first element, the identifier of the specific group or topic the Client is authorized to access. * Optionally, as second element, the role (or CBOR array of roles) the Client is authorized to take in the group. The encoding of the group or topic identifier and of the role identifiers is application specific. o Other additional parameters as defined in [I-D.ietf-ace-oauth-authz], if necessary. The access token MUST contain all the parameters defined above (including the same 'scope' as in this message, if present, or the 'scope' of the Authorization Request otherwise), and additionally other optional parameters that the transport profile of ACE requires. When receiving an Authorization Request from a Client that was previously authorized, and which still owns a valid non expired access token, the AScan simply replyreplies with an Authorization Responseincludingwith a new access token. 3.3. Token Post The Client sends a CoAP POST request including the access token to the KDC, as specified insectionSection 5.8.1 of [I-D.ietf-ace-oauth-authz]. If the specificACEtransport profile of ACE defines it, the Client MAY use a different endpoint than /authz-info at the KDC to post the access token to.After successful verification,Optionally, the Clientis authorizedmight need toreceiverequest necessary information concerning thegroup keying material frompublic keys in theKDCgroup, as well as concerning the algorithm andjoinrelated parameters for computing signatures in the group.NoteIn such a case, the joining node MAY ask for thatthis step could be merged withinformation to thefollowing message fromKDC in this same request. To this end, it sends theClientCoAP POST request to theKDC, namely Key Distribution Request. 4. Key Distribution This section defines how/authz-info endpoint using thekeying material used for group communication is distributed fromContent-Format "application/ace+cbor" defined in Section 8.14 of [I-D.ietf-ace-oauth-authz], and includes also theKDCfollowing parameters: o 'sign_info' defined in Section 3.3.1, encoding the CBOR simple value Null, to require information and parameters on theClient, when joiningsignature algorithm and on thegroup as a new member. If not previously established,public keys used in theClient andgroup. o 'pub_key_enc' defined in Section 3.3.2, encoding theKDC MUST first establish a pairwise secure communication channel using ACE. The exchangeCBOR simple value Null, to require information on the exact encoding ofKey Distribution Request-Response MUST occur over that secure channel.public keys used in the group. TheClientCDDL notation of the 'sign_info' and 'pub_key_enc' parameters formatted as in theKDC MAY use that same secure channel to protect further pairwise communications, that MUST be secured. Duringrequest is given below. sign_info_req = nil pub_key_enc_req = nil Alternatively, the joining node may retrieve thisexchange,information by other means. After successful verification, the Clientsends a requestis authorized tothe AS, specifyingreceive the groupit wishes to join (see Section 4.1). Then,keying material from the KDCverifies the access tokenandthat the Client is authorized tojointhat group; if so, it providestheClient withgroup. In particular, thekeying materialKDC replies tosecurely communicate with the member of the group (see Section 4.2). Figure 4 gives an overview oftheexchange described above.ClientKDC | | |---- Key Distribution Request: POST /group-id --->| | | |<--- Key Distribution Response:with a 2.01 (Created)---| | | Figure 4: Message Flowresponse, using Content-Format "application/ace+cbor" defined in Section 8.14 ofKey Distribution to a New Group Member[I-D.ietf-ace-oauth-authz]. Thesame setpayload ofmessage can also be used for the following cases, whentheClient2.01 response isalreadyagroup member: o The Client wishes to (re-)getCBOR map, which MUST include a nonce N generated by thecurrent keying material, for cases such as expiration, loss or suspected mismatch, due to e.g. reboot or missed group rekeying. This is further discussed in Section 6. oKDC. The Clientwishes to (re-)getmay use this nonce for proving thepublic keys of other group members, e.g. if it is awarepossession ofnew nodes joiningits own private key (see thegroup after itself. This is further discussed'client_cred_verify' parameter in Section7. Additionally,4). Optionally, if they were included in theformat ofrequest, thepayload ofAS MAY include theKey Distribution Response (Section 4.2) can be reused for messages sent by'sign_info' parameter as well as theKDC to distribute updated group keying material,'pub_key_enc' parameter defined incaseSection 3.3.1 and Section 3.3.2 ofa new node joiningthis specification, respectively. The 'sign_info' parameter MUST be present if thegroup or of a current member leavingPOST request included thegroup. The key management scheme used to send such messages could rely on, e.g., multicast in case'sign_info' parameter with value Null. If present, the 'sign_info' parameter of the 2.01 (Created) response is anew node joiningCBOR array formatted as follows. o The first element 'sign_alg' is an integer orunicast in case ofanode leavingtext string, indicating the signature algorithm used in the group.Note that proof-of-possession to bindIt is required of theaccess tokenapplication profiles to define specific values for this parameter. o The second element 'sign_parameters' indicates theClientparameters of the signature algorithm. Its structure depends on the value of 'sign_alg'. It isperformed by usingrequired of theproof-of-possession key boundapplication profiles tothe access tokendefine specific values forestablishing secure communication betweenthis parameter. If no parameters of theClient and the KDC. 4.1. Key Distribution Request The Client sends a Key Distribution Request to the KDC. This corresponds to a CoAP POST request to the endpoint in the KDC associated to the group to join. The endpoint in the KDC is associated tosignature algorithm are specified, 'sign_parameters' MUST be encoding the'scope'CBOR simple valueof the Authorization Request/ Response.Null. o Thepayload of this request is a CBOR Map which MAY containthird element 'sign_key_parameters' indicates thefollowing fields, which, if included, MUST haveparameters of thecorresponding values: o 'scope',key used withvaluethespecific resource thatsignature algorithm. Its structure depends on theClientvalue of 'sign_alg'. It isauthorized to access (i.e. group or topic identifier) and role(s), encoded as in Section 3.1. o 'get_pub_keys', ifrequired of theClient wishesapplication profiles toreceive the public keysdefine specific values for this parameter. If no parameters of theother nodes inkey used with thegroup fromsignature algorithm are specified, 'sign_key_parameters' MUST be encoding theKDC. The value is an emptyCBORArray. Thissimple value Null. The 'pub_key_enc' parametermayMUST be present if theKDC stores the public keys ofPOST request included thenodes in'pub_key_enc' parameter with value Null. If present, thegroup and distributes them to'pub_key_enc' parameter of theClient; it2.01 (Created) response isuseless to have here ifa CBOR integer, indicating thesetencoding of public keysofused in themembersgroup. The values ofthe group is knownthis field are registered inanother way, e.g. it was provided by the AS. o 'client_cred', with valuethepublic key or certificate"ACE Public Key Encoding" Registry, defined in Section 11.2. It is required of theClient. If the KDC is managing (collecting from/distributingapplication profiles tothe Client) the public keysdefine specific values to use for this parameter. The CDDL notation of thegroup members, this field contains the public key of'sign_info' and 'pub_key_enc' parameters formatted as in theClient. o 'pub_keys_repos', can be present if a certificateresponse ispresent ingiven below. sign_info_res = [ sign_alg : int / tstr, sign_parameters : any / nil, sign_key_parameters : any / nil ] pub_key_enc_res = int Note that the'client_cred' field, with value a listCBOR map specified as payload ofpublic key repositories storingthecertificate2.01 (Created) response may include further parameters, e.g. according to the signalled transport profile of ACE. Note that this step could be merged with theClient. 4.2.following message from the Client to the KDC, namely Key DistributionResponseRequest. 3.3.1. 'sign_info' Parameter TheKDC verifies'sign_info' parameter is an OPTIONAL parameter of the'scope' receivedAS Request Creation Hints message defined in Section 5.1.2. of [I-D.ietf-ace-oauth-authz]. This parameter contains information and parameters about theKey Distribution Request, if present, againstsignature algorithm and the'scope' storedpublic keys to be used between the Client and the RS. Its exact content is application specific. 3.3.2. 'pub_key_enc' Parameter The 'pub_key_enc' parameter is an OPTIONAL parameter of the AS Request Creation Hints message defined in Section 5.1.2. of [I-D.ietf-ace-oauth-authz]. This parameter contains information about theaccess token associatedexact encoding of public keys tothis client. If verification fails,be used between theKDC MUST respond with a 4.01 (Unauthorized) error message. IfClient and the RS. Its exact content is application specific. 4. Key DistributionRequestThis section defines how the keying material used for group communication isnot formatted correctly (e.g. no 'scope' field present while expected, or unknown fields present),distributed from the KDCMUST respond with 4.00 (Bad Request) error message.to the Client, when joining the group as a new member. Ifverification succeeds,not previously established, the Client and the KDCsendsMUST first establish a pairwise secure communication channel using ACE. The exchange of Key Distributionsuccess Response to the Client.Request-Response MUST occur over that secure channel. TheKey Distribution success Response correspondsClient and the KDC MAY use that same secure channel toa 2.01 Created message. The payload ofprotect further pairwise communications, that MUST be secured. During thisresponse isexchange, the Client sends aCBOR map, which MUST contain: o 'kty', identifyingrequest to thekey type ofAS, specifying the'key' parameter. The set of values can be found ingroup it wishes to join (see Section 4.1). Then, the"Key Type" column ofKDC verifies the"ACE Groupcomm Key" Registry. Implementations MUST verifyaccess token and that thekey type matches the profile being used,Client is authorized to join that group; ifpresent, as registered inso, it provides the"ACE Groupcomm Key" registry. o 'key', containingClient with the keying materialfor the group communication, or information requiredtoderive it. The exact format ofsecurely communicate with the'key' value MUST be defined in applicationsmember ofthis specification. Additionally, documents specifyingthekey format MUST register itgroup (see Section 4.2). The Content-Format used in the"ACE Groupcomm Key" registry, including its name, type and profilemessages is set tobe used with, as defined inapplication/cbor. Figure 4 gives an overview of the"ACE Groupcomm Key" registry, defined in Section 9.1. +----------+----------------+---------+-------------------------+exchange described above. Client KDC |Name| |---- KeyType Value | Profile | Description | +----------+----------------+---------+-------------------------+ | ReservedDistribution Request: POST /group-id --->| |0| |<--- Key Distribution Response: 2.01 (Created) ---| |This value is reserved|+----------+----------------+---------+-------------------------+Figure5: Key Type Values Optionally, the4: Message Flow of Key DistributionResponse MAY contain the following parameters, which, if included, MUST have the corresponding values: o 'profile', with value an identifier that MUST be usedtouniquely identify itself.a New Group Member Theidentifier MUSTsame set of message can also beregistered inused for the"ACE Groupcomm Profile" Registry. o 'exp', with valuefollowing cases, when theexpiration time ofClient is already a group member: o The Client wishes to (re-)get the current keyingmaterialmaterial, forthe group communication, encodedcases such asa CBOR unsigned integerexpiration, loss orfloating-point number. o 'pub_keys', may only be present if 'get_pub_keys' was present in the Key Distribution Request.suspected mismatch, due to e.g. reboot or missed group rekeying. Thisparameterisa CBOR Byte String, which encodesfurther discussed in Section 6. o The Client wishes to (re-)get the public keys ofall theother groupmembers paired with the respective member identifiers. In case public keys inmembers, e.g. if it is aware of new nodes joining the groupare represented as COSE Keys, the CBOR Byte String encodes a COSE_KeySet (see [RFC8152]), which containsafter itself. This is further discussed in Section 7. Additionally, thepublic keysformat ofallthememberspayload of thegroup. In particular, each COSEKeyin the COSE_KeySet includesDistribution Response (Section 4.2) can be reused for messages sent by theidentifierKDC to distribute updated group keying material, in case of a new node joining thecorrespondinggroupmember as valueor ofits 'kid'a current member leaving the group. The keyparameter. Alternative specific encodingsmanagement scheme used to send such messages could rely on, e.g., multicast in case ofthis parameter MUST be defineda new node joining or unicast inapplicationscase ofthis specification. o 'group_policies', with valuealist of parameters indicating hownode leaving thegroup handles specific management aspects. This includes, for instance, approaches to achieve synchronization of sequence numbers among group members. The exact format of this parameter is specificgroup. Note that proof-of-possession to bind theprofile. o 'mgt_key_material', with value the administrative keying materialaccess token toparticipate inthegroup rekeyingClient is performed by using theKDC. The exact format and content depend on the specific rekeying scheme used in the group, which may be specified in the profile. Specific profiles needproof-of-possession key bound tospecify how exactlythekeying material is used to protectaccess token for establishing secure communication between thegroup communication.Client and the KDC. If the application requires backward security, the KDC SHALL generate new group keying material and securely distribute it to all the current group members, using the message format defined in this section. Application profiles may define alternative message formats.5. Removal of4.1. Key Distribution Request The Client sends aNode fromKey Distribution Request to theGroupKDC. Thissection describes at a high level howcorresponds to anode can be removed from the group. IfCoAP POST request to theapplication requires forward security,endpoint in the KDCSHALL generate new group keying material and securely distribute itassociated toallthecurrentgroupmembers but the leaving node, using the message format definedto join. The endpoint inSection 4.2. Application profiles may define alternative message formats. 5.1. Expired Authorization IfthenodeKDC isnot authorized anymore, the AS can directly communicate thatassociated to theKDC. Alternatively,'scope' value of theaccess token might have expired. If Token introspectionAuthorization Request/ Response. The payload of this request isprovided by the AS,a CBOR map which MUST contain theKDC can use itfollowing fields: o 'type', encoded asper Section 5.7 of [I-D.ietf-ace-oauth-authz], in order to verify thata CBOR int, with value 1 ("key distribution"). Additionally, theaccess token is still valid. Either case, once aware that a node is not authorized anymore, the KDC has to removeCBOR map in theunauthorized node frompayload MAY contain thelist of group members,following fields, which, ifthe KDC keeps track of that. 5.2. Request to Leave the Group A node can actively request to leave the group. In this case, the Client can send a request formatted as follows to the KDC, to abandon the group. The client MUST use the protected channel established with ACE, mentioned in Section 4. To request to leave a group, the clientincluded, MUSTsend a CoAP POST request to the endpoint in the KDC associated tohave thegroup to leave (same endpoint used in Section 4.1 for Key Distribution requests). The payload of this Leave Request is a CBOR Map which MUST contain: o 'leave', with value an empty CBOR array.corresponding values: o 'scope', with value the specific resource that the Client is authorized to access (i.e. group or topic identifier) andwants to leave,role(s), encoded as in Section 3.1.The 'role' field is omitted. Additionally, the Leave request MAY contain the following parameters, which, if included, MUST have the corresponding values:o'client_cred', with value'get_pub_keys', if theidentifier ofClient wishes to receive the publickey or certificatekeys of theClient. This fieldother nodes in the group from the KDC. The value isusedan empty CBOR array. This parameter may be present if the KDCis managing (collecting from/distributing to the Client)stores the public keys of the nodes in the groupmembers. Note thatand distributes them to the'role' fieldClient; it isomitted since such a request should only be useduseless toleave a group altogether. Ifhave here if theleaving node wants to be partset ofapublic keys of the members of the groupwith fewer roles,is known in another way, e.g. itdoes not need to communicate that towas provided by theKDC, and can simply stop acting according to such roles. IfAS. o 'client_cred', with value theLeave Request is not formatted correctly (e.g. no 'scope' field present,public key orunknown fields present),certificate of theKDC MUST respond withClient, encoded as a4.00 (Bad Request) error message. Otherwise,CBOR byte string. If the KDCMUST removeis managing (collecting from/distributing to theleaving node fromClient) thelistpublic keys of the group members,ifthis field contains theKDC keeps trackpublic key ofthat. Note that, after having left the group, a node may wish to join it again. Then, as long asthenodeClient. The default encoding for public keys isstill authorized to join the group, i.e. it hasCOSE Keys. Alternative specific encodings of this parameter MAY be defined in applications of this specification. o 'client_cred_verify', encoded as astill valid access token, it can re-request to joinCBOR byte string. This parameter contains a signature computed by thegroup directly toClient over theKDC without needing to retrieve a new access tokennonce N received from theAS. This means that theKDCneedsin the 2.01 (Created) response tokeep track of nodes with valid access tokens, before deleting all information abouttheleaving node. 6. Retrieval of Updated Keying Material A node stops usingtoken POST request (see Section 3.3). The Client computes thegroup keying material uponsignature by using itsexpiration, according to the 'exp' parameterown private key, whose corresponding public key is either directly specified in theretained COSE Key. Then, if it wants to continue participating'client_cred' parameter or included in thegroup communication, the node has to request new updated keying material to the KDC. The Client may perform the same request tocertificate specified in theKDC also upon receiving messages from other group members without being able to correctly decrypt them.'client_cred' parameter. Thismayparameter MUST bedue to a previous update of the group keying material (rekeying) triggered by the KDC, thatpresent if theClient was not able to receive or decrypt. Note that policies'client_cred' parameter is present. o 'pub_keys_repos', can beset up so that the Client sendspresent if arequest tocertificate is present in theKDC only after'client_cred' field, with value agiven numberlist ofunsuccessfully decrypted incoming messages. Alternatively,public key repositories storing there-distributioncertificate ofkeying material can be initiated by the KDC, which e.g.: o Can maintain an Observable resource to send notifications to Clients whenthekeying materialClient. This parameter isupdated. Such a notification would have the same payloadencoded as a CBOR array of CBOR text strings, each of which specifies the URI of a key repository. 4.2. KeyRe-DistributionDistribution Responsedefined in Section 6.2. o Can sendThe KDC verifies that thepayload of'scope' received in the KeyRe-Distribution Response inDistribution Request, if present, is amulticast request to the memberssubset of thegroup. o Can send unicast requests'scope' stored in the access token associated toeach Client over a secure channel,this client. If verification fails, the KDC MUST respond with a 4.01 (Unauthorized) error message. If the KeyRe-Distribution Response as payload. o Can act as a publisher in a pub-sub scenario, and update the keying material by publishing on a specific topic on a broker, which all the members of the group are subscribed to. Note that these methods of KDC-initiated key re-distribution have different security properties and require different security associations. 6.1. Key Re-Distribution Request To request a re-distribution of keying material, the Client sends a shortened KeyDistribution Requestto the KDC (Section 4.1), formatted as follows. The payload MUST contain only the following field: o 'scope', which contains only the identifier of the specific group or topic, encoded as in Section 3.1. That is, the role field is not present. 6.2. Key Re-Distribution Response The KDC receiving a Key Re-Distribution Request MUST check that it is storing a valid access token from that client for that scope. If that is not the case, i.e. it does not store the token or the token is not valid for that client for the scope requested, the KDC MUST respond with a 4.01 (Unauthorized) error message. Analogously to Section 4.2, if the Key Re-Distribution Requestis not formatted correctly (e.g. no 'scope' fieldpresent,present while expected, or unknown fields present), the KDC MUST respond witha4.00 (Bad Request) error message.Otherwise,If verification succeeds, the KDCreplies to the Client withsends a Key DistributionResponse, which MUST includesuccess Response to the'kty' and 'key' parameters specified in Section 4.2.Client. The Key Distribution success ResponseMAY also include the 'profile', 'exp', 'group_policies' and 'mgt_key_material' parameters specified in Section 4.2. Note thatcorresponds to a 2.01 Created message. The payload of this responsemight simply re-provideis a CBOR map, which MUST contain: o 'kty', identifying thesame keying material currently owned bykey type of theClient, if it has not been renewed. 7. Retrieval'key' parameter. The set ofPublic Keys for Group Members In case the KDC maintainsvalues can be found in thepublic keys"Key Type" column ofgroup members, a nodethe "ACE Groupcomm Key" Registry. Implementations MUST verify that the key type matches the application profile being used, if present, as registered in thegroup can contact"ACE Groupcomm Key" registry. o 'key', containing the keying material for theKDC to request public keys of either allgroupmemberscommunication, ora specified subset, usinginformation required to derive it. The exact format of themessages'key' value MUST be definedbelow. Figure 6 gives an overviewin applications of this specification. Additionally, documents specifying theexchange described above. Client KDCkey format MUST register it in the "ACE Groupcomm Key" registry, including its name, type and application profile to be used with, as defined in the "ACE Groupcomm Key" registry, defined in Section 11.5. +----------+----------------+---------+-------------------------+ | Name ||---- PublicKeyRequest: POST /group-id --->|Type Value | Profile | Description ||<--- Public Key Response: 2.01 (Created) ---|+----------+----------------+---------+-------------------------+ | Reserved | 0 | | This value is reserved | +----------+----------------+---------+-------------------------+ Figure6: Message Flow of Public5: KeyRequest-Response NoteType Values Optionally, the Key Distribution Response MAY contain the following parameters, which, if included, MUST have the corresponding values: o 'profile', with value a CBOR integer thatthese messages canMUST becombined withused to uniquely identify theKey Re-Distribution messagesapplication profile for group communication. The value MUST be registered inSection 6, to request atthesame"ACE Groupcomm Profile" Registry. o 'exp', with value the expiration time of the keying materialandfor thepublic keys. In this case, eithergroup communication, encoded as anew endpoint at the KDC may be used,CBOR unsigned integer oradditional information needs to be sent infloating-point number. This field contains a numeric value representing therequest payload, to distinguish these combined messagesnumber of seconds from 1970-01-01T00:00:00Z UTC until thePublic Key messages described below, since they wouldspecified UTC date/time, ignoring leap seconds, analogous to what specified in Section 2 of [RFC7519]. o 'pub_keys', may only beidentical otherwise. 7.1. Public Key Request To request public keys,present if 'get_pub_keys' was present in theClient sends a shortenedKey DistributionRequest to the KDC (Section 4.1), formatted as follows. The payload of this request MUST contain the following fields: o 'get_pub_keys', which has as valueRequest. This parameter is a CBORarray including either: * no elements, i.e. an empty array, in order to requestbyte string, which encodes the publickeykeys of allcurrent group members; or * N elements, each of which istheidentifier of agroupmember, in order to requestmembers paired with the respective member identifiers. The default encoding for publickey of the specified nodes. o 'scope', which contains only the identifier of the specific group or topic, encoded as in Section 3.1. That is, the role fieldkeys isnot present. 7.2. Public Key Response The KDC replies to the Client with a Key Distribution Response containing onlyCOSE Keys, so the default encoding for 'pub_keys'parameter, as specified in Section 4.2. The payload of this response contains the following field: o 'pub_keys',is a CBOR byte string wrapping a COSE_KeySet (see [RFC8152]), which containseither: *the public keys of all the members of thegroup, ifgroup. In particular, each COSE Key in the'get_pub_keys' parameterCOSE_KeySet includes the identifier of the corresponding group member as value of its 'kid' key parameter. Alternative specific encodings of this parameter MAY be defined in applications of this specification. o 'group_policies', with value a CBOR map, whose entries specify how the group handles specific management aspects. These include, for instance, approaches to achieve synchronization of sequence numbers among group members. The elements of this field are registered in the "ACE Groupcomm Policy" Registry. This specification defines the two elements "Sequence Number Synchronization Method" and "Key Update Check Interval", which are summarized in Figure 6. Application profiles that build on this document MUST specify the exact content format of included map entries. +-----------------+-------+----------|--------------------|------------+ | Name | CBOR | CBOR | Description | Reference | | | label | type | | | |-----------------+-------+----------|--------------------|------------| | Sequence Number | TBD1 | tstr/int | Method for a re- | [[this | | Synchronization | | | cipient node to | document]] | | Method | | | synchronize with | | | | | | sequence numbers | | | | | | of a sender node. | | | | | | Its value is taken | | | | | | from the 'Value' | | | | | | column of the | | | | | | Sequence Number | | | | | | Synchronization | | | | | | Method registry | | | | | | | | | Key Update | TBD2 | int | Polling interval | [[this | | Check Interval | | | in seconds, to | document]] | | | | | check for new | | | | | | keying material at | | | | | | the KDC | | +-----------------+-------+----------|--------------------|------------+ Figure 6: ACE Groupcomm Policies o 'mgt_key_material', encoded as a CBOR byte string and containing the administrative keying material to participate in the group rekeying performed by the KDC. The exact format and content depend on the specific rekeying scheme used in the group, which may be specified in the application profile. Specific application profiles that build on this document need to specify how exactly the keying material is used to protect the group communication. 5. Removal of a Node from the Group This section describes at a high level how a node can be removed from the group. If the application requires forward security, the KDC SHALL generate new group keying material and securely distribute it to all the current group members but the leaving node, using the message format defined in Section 4.2. Application profiles may define alternative message formats. 5.1. Expired Authorization If the AS provides Token introspection (see Section 5.7 of [I-D.ietf-ace-oauth-authz]), the KDC can optionally use and check whether: o the node is not authorized anymore; o the access token is still valid, upon its expiration. Either case, once aware that a node is not authorized anymore, the KDC has to remove the unauthorized node from the list of group members, if the KDC keeps track of that. 5.2. Request to Leave the Group A node can actively request to leave the group. In this case, the Client can send a request formatted as follows to the KDC, to abandon the group. The client MUST use the protected channel established with ACE, mentioned in Section 4. To request to leave a group, the client MUST send a CoAP POST request to the endpoint in the KDC associated to the group to leave (same endpoint used in Section 4.1 for Key Distribution requests). The payload of this Leave Request is a CBOR map which MUST contain: o 'type', encoded as a CBOR int, with value 2 ("leave"). o 'scope', with value the specific resource that the Client is authorized to access (i.e. group or topic identifier) and wants to leave, encoded as in Section 3.1. The 'role' field is omitted. Note that the 'role' field is omitted since such a request should only be used to leave a group altogether. If the leaving node wants to be part of a group with fewer roles, it does not need to communicate that to the KDC, and can simply stop acting according to such roles. If the Leave Request is such that the KDC cannot extract all the necessary information to understand and process it correctly (e.g. no 'scope' field present), the KDC MUST respond with a 4.00 (Bad Request) error message. Otherwise, the KDC MUST remove the leaving node from the list of group members, if the KDC keeps track of that. Note that, after having left the group, a node may wish to join it again. Then, as long as the node is still authorized to join the group, i.e. it has a still valid access token, it can re-request to join the group directly to the KDC without needing to retrieve a new access token from the AS. This means that the KDC needs to keep track of nodes with valid access tokens, before deleting all information about the leaving node. 6. Retrieval of New or Updated Keying Material A node stops using the group keying material upon its expiration, according to the 'exp' parameter specified in the retained COSE Key. Then, if it wants to continue participating in the group communication, the node has to request new updated keying material to the KDC. In this case, and depending on what part of the keying material is expired, the client may need to communicate to the KDC its need for that part to be renewed: for example, if the Client uses an individual key to protect outgoing traffic and has to renew it, the node may request a new one, or new input material to derive it, without renewing the whole group keying material. The Client may perform the same request to the KDC also upon receiving messages from other group members without being able to retrieve the material to correctly decrypt them. This may be due to a previous update of the group keying material (rekeying) triggered by the KDC, that the Client was not able to receive or decrypt. Note that policies can be set up so that the Client sends a request to the KDC only after a given number of unsuccessfully decrypted incoming messages. It is application dependent and pertaining to the particular message exchange (e.g. [I-D.ietf-core-oscore-groupcomm]) to set up policies that instruct clients to retain unsuccessfully decrypted messages and for how long, so that they can be decrypted after getting updated keying material, rather than just considered non valid messages to discard right away. The same request could also be sent by the client without being triggered by a failed decryption of a message, if the client wants to confirm that it has the latest group keying material. If that is the case, the client will receive from the KDC the same group keying material it has in memory. Note that the difference between the keying material renewal request and the keying material update request is that the first one triggers the KDC to produce new keying material for that node, while the second one only triggers distribution (the renewal might have happened independently, because of expiration). Once a node receives new individual keying material, other group members may need to use the update keying material request to retrieve it. Alternatively, the re-distribution of keying material can be initiated by the KDC, which e.g.: o Can maintain an Observable resource to send notifications to Clients when the keying material is updated. Such a notification would have the same payload as the Key Re-Distribution Response defined in Section 6.2. o Can send the payload of the Key Re-Distribution Response as one or multiple multicast requests to the members of the group, using secure rekeying schemes such as [RFC2093][RFC2094][RFC2627]. o Can send unicast requests to each Client over a secure channel, with the Key Re-Distribution Response as payload. o Can act as a publisher in a pub-sub scenario, and update the keying material by publishing on a specific topic on a broker, which all the members of the group are subscribed to. Note that these methods of KDC-initiated key re-distribution have different security properties and require different security associations. 6.1. Key Re-Distribution Request To request a re-distribution of keying material, the Client sends a shortened Key Distribution Request to the KDC (Section 4.1), formatted as follows. The payload MUST contain the following fields: o 'type', encoded as a CBOR int, with value 3 ("update key") if the request is intended to retrieve updated group keying material, and 4 ("new") if the request is intended for the KDC to produce and provide new individual keying material for the Client. o 'scope', which contains only the identifier of the specific group or topic, encoded as in Section 3.1. That is, the role field is not present. 6.2. Key Re-Distribution Response The KDC receiving a Key Re-Distribution Request MUST check that it is storing a valid access token from that client for that scope. If that is not the case, i.e. it does not store the token or the token is not valid for that client for the scope requested, the KDC MUST respond with a 4.01 (Unauthorized) error message. Analogously to Section 4.2, if the Key Re-Distribution Request is not formatted correctly (e.g. no 'scope' field present, or unknown fields present), the KDC MUST respond with a 4.00 (Bad Request) error message. Otherwise, the KDC replies to the Client with a Key Distribution Response, which MUST include the 'kty', 'key' and 'exp' parameters specified in Section 4.2. The Key Distribution Response MAY also include the 'profile', 'group_policies' and 'mgt_key_material' parameters specified in Section 4.2. Note that this response might simply re-provide the same keying material currently owned by the Client, if it has not been renewed. 7. Retrieval of Public Keys for Group Members In case the KDC maintains the public keys of group members, a node in the group can contact the KDC to request public keys of either all group members or a specified subset, using the messages defined below. Figure 7 gives an overview of the exchange described above. Client KDC | | |---- Public Key Request: POST /group-id --->| | | |<--- Public Key Response: 2.01 (Created) ---| | | Figure 7: Message Flow of Public Key Request-Response Note that these messages can be combined with the Key Re-Distribution messages in Section 6, to request at the same time the keying material and the public keys. In this case, either a new endpoint at the KDC may be used, or additional information needs to be sent in the request payload, to distinguish these combined messages from the Public Key messages described below, since they would be identical otherwise. 7.1. Public Key Request To request public keys, the Client sends a shortened Key Distribution Request to the KDC (Section 4.1), formatted as follows. The payload of this request MUST contain the following fields: o 'type', encoded as a CBOR int, with value 5 ("pub keys"). o 'get_pub_keys', which has as value a CBOR array including either: * no elements, i.e. an empty array, in order to request the public key of all current group members; or * N elements, each of which is the identifier of a group member encoded as a CBOR byte string, in order to request the public key of the specified nodes. o 'scope', which contains only the identifier of the specific group or topic, encoded as in Section 3.1. That is, the role field is not present. 7.2. Public Key Response The KDC replies to the Client with a Key Distribution Response containing only the 'pub_keys' parameter, as specified in Section 4.2. The payload of this response contains the following field: o 'pub_keys', which contains either: * the public keys of all the members of the group, if the 'get_pub_keys' parameter of the Public Key request was an empty array; or * the public keys of the group members with the identifiers specified in the 'get_pub_keys' parameter of the Public Key request. The KDC may enforce one of the following policies, in order to handle possible identifiers that are included in the 'get_pub_keys' parameter of the Public Key request but are not associated to any current group member. o The KDC silently ignores those identifiers. o The KDC retains public keys of group members for a given amount of time after their leaving, before discarding them. As long as such public keys are retained, the KDC provides them to a requesting Client. Either case, a node that has left the group should not expect any of its outgoing messages to be successfully processed, if received after its leaving, due to a possible group rekeying occurred before the message reception. 8. ACE Groupcomm Parameters This specification defines a number of fields used during the message exchange. The table below summarizes them, and specifies the CBOR key to use instead of the full descriptive name. +--------------+----------+---------------+ | Name | CBOR Key | CBOR Type | +--------------+----------+---------------+ | scope | TBD | array | +--------------+----------+---------------+ | get_pub_keys | TBD | array | +--------------+----------+---------------+ | client_cred | TBD | byte string | +--------------+----------+---------------+ | client_cred_ | TBD | byte string | | verify | | | +--------------+----------+---------------+ | pub_keys_ | TBD | array | | repos | | | +--------------+----------+---------------+ | kty | TBD | int / byte | | | | string | +--------------+----------+---------------+ | key | TBD | see "ACE | | | | Groupcomm | | | | Key" Registry | +--------------+----------+---------------+ | profile | TBD | int | +--------------+----------+---------------+ | exp | TBD | int / float | +--------------+----------+---------------+ | pub_keys | TBD | byte string | +--------------+----------+---------------+ | group_ | TBD | map | | policies | | | +--------------+----------+---------------+ | mgt_key_ | TBD | byte string | | material | | | +--------------+----------+---------------+ | type | TBD | int | +--------------+----------+---------------+ 9. ACE Groupcomm Request Type This specification defines a number of types of requests. The table below summarizes them. +------------------+----------+ | Name | Value | +------------------+----------+ | key distribution | 1 | +------------------+----------+ | leave | 2 | +------------------+----------+ | update key | 3 | +------------------+----------+ | new | 4 | +------------------+----------+ | pub keys | 5 | +------------------+----------+ 10. Security Considerations When a Client receives a message from a sender for the first time, it needs to have a mechanism in place to avoid replay, e.g. Appendix B.2 of [I-D.ietf-core-object-security]. The KDC must renew the group keying material upon its expiration. The KDC should renew the keying material upon group membership change, and should provide it to the current group members through the rekeying scheme used in the group. The KDC may enforce a rekeying policy that takes into account the overall time required to rekey the group, as well as the expected rate of changes in the group membership. That is, the KDC may not rekey the group at every membership change, for instance if members' joining and leaving occur frequently and performing a group rekeying takes too long. Instead, the KDC may rekey the group after a minum number of group members have joined or left within a given time interval, or during predictable network inactivity periods. However, this would result in the KDC not constantly preserving backward and forward security. In fact, newly joining group members could be able to access the keying material used before their joining, and thus could access past group communications. Also, until the KDC performs a group rekeying, the newly leaving nodes would still be able to access upcoming group communications that are protected with the keying material that has not yet been updated. 10.1. Update of Keying Material A group member can receive a message shortly after the group has been rekeyed, and new keying material has been distributed by the KDC. In the following two cases, this may result in misaligned keying material between the group members. In the first case, the sender protects a message using the old keying material. However, the recipient receives the message after having received the new keying material, hence not being able to correctly process it. A possible way to ameliorate this issue is to preserve the old, recent, keying material for a maximum amount of time defined by the application. By doing so, the recipient can still try to process the received message using the old retained keying material as second attempt. Note that a former (compromised) group member can take advantage of this by sending messages protected with the old retained keying material. Therefore, a conservative application policy should not admit the storage of old keying material. In the second case, the sender protects a message using the new keying material, but the recipient receives that request before having received the new keying material. Therefore, the recipient would not be able to correctly process the request and hence discards it. If the recipient receives the new keying material shortly after that and the sender endpoint uses CoAP retransmissions, the former will still be able to receive and correctly process the message. In any case, the recipient should actively ask the KDC for an updated keying material according to an application-defined policy, for instance after a given number of unsuccessfully decrypted incoming messages. 10.2. Block-Wise Considerations If the block-wise options [RFC7959] are used, and the keying material is updated in the middle of a block-wise transfer, the sender of the blocks just changes the keying material to the updated one and continues the transfer. As long as both sides get the new keying material, updating the keying material in the middle of a transfer will not cause any issue. Otherwise, the sender will have to transmit the message again, when receiving an error message from the recipient. Compared to a scenario where the transfer does not use block-wise, depending on how fast the keying material is changed, the nodes might consume a larger amount of the network resending the blocks again and again, which might be problematic. 11. IANA Considerations This document has the following actions for IANA. 11.1. ACE Authorization Server Request Creation Hints Registry IANA is asked to register the following entries in the "ACE Authorization Server Request Creation Hints" Registry defined in Section 8.1 of [I-D.ietf-ace-oauth-authz]. o Name: sign_info o CBOR Key: TBD (range -256 to 255) o Value Type: any o Reference: [[This specification]] o Name: pub_key_enc o CBOR Key: TBD (range -256 to 255) o Value Type: integer o Reference: [[This specification]] 11.2. ACE Public Key Encoding Registry This specification establishes the "ACE Public Key Encoding" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section 11.9. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, be supplied as well. The columns of this Registry are: o Name: This is a descriptive name that enables easier reference to the item. The name MUST be unique. It is not used in the encoding. o Value: The value to be used to identify this public key encoding. This value MUST be unique. The value can be a positive or a negative integer. Integer values between 0 and 255 are designated as Standards Track Document required. Integer values from 256 to 65535 are designated as Specification Required. Integer values of greater than 65535 are designated as expert review. Integer values less than -65536 are marked as private use. o Description: This field contains a brief description for this public key encoding. o Reference: This field contains a pointer to the public specification providing the public key encoding, if one exists. The value 0 is to be marked as "Reserved". 11.3. ACE Groupcomm Parameters Registry This specification establishes the "ACE Groupcomm Parameters" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section 11.9. The columns of this Registry are: o Name: This is a descriptive name that enables easier reference to the item. The name MUST be unique. It is not used in the encoding. o CBOR Key: This is the value used as CBOR key of the item. These values MUST be unique. The value can be a positive integer, a negative integer, or a string. o CBOR Type: This contains the CBOR type of the item, or a pointer to the registry that defines its type, when that depends on another item. o Reference: This contains a pointer to the public specification for the format of the item, if one exists. This Registry has been initially populated by the values in Section 8. The specification column for all of these entries will be this document. 11.4. Ace Groupcomm Request Type Registry This specification establishes the "ACE Groupcomm Request Type" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section 11.9. The columns of this Registry are: o Name: This is a descriptive name that enables easier reference to the item. The name MUST be unique. It is not used in the encoding. o Value: This is the value used to identify the request. These values MUST be unique. The value must be a positive integer. o Reference: This contains a pointer to the public specification for the format of the item, if one exists. This Registry has been initially populated by the values in Section 9. The reference column for all of these entries will be this document. The value 0 is to be marked as "Reserved". 11.5. ACE Groupcomm Key Registry This specification establishes the "ACE Groupcomm Key" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section 11.9. The columns of this Registry are: o Name: This is a descriptive name that enables easier reference to the item. The name MUST be unique. It is not used in the encoding. o Key Type Value: This is the value used to identify the keying material. These values MUST be unique. The value can be a positive integer, a negative integer, or a string. o Profile: This field may contain one or more descriptive strings of application profiles to be used with this item. The values should be taken from the Name column of thePublic Key request was an empty array; or *"ACE Groupcomm Profile" Registry. o Description: This field contains a brief description of the keying material. o References: This contains a pointer to the publickeysspecification for the format of thegroup members withkeying material, if one exists. This Registry has been initially populated by theidentifiers specifiedvalues inthe 'get_pub_keys' parameterFigure 5. The specification column for all of these entries will be this document. 11.6. ACE Groupcomm Profile Registry This specification establishes thePublic Key request."ACE Groupcomm Profile" IANA Registry. TheKDC ignores possible identifiers includedRegistry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section 11.9. It should be noted that, in addition to the'get_pub_keys' parameterexpert review, some portions of thePublic Key request if they are not associated to any current group member. 8. Security ConsiderationsRegistry require a specification, potentially a Standards Track RFC, be supplied as well. TheKDC must renew the group keying material upon its expiration.columns of this Registry are: o Name: TheKDC should renewname of thekeying material upon group membership change, and should provide itapplication profile, to be used as value of thecurrent group members throughprofile attribute. o Description: Text giving an overview of therekeying scheme used inapplication profile and thegroup. When a Client receives a messagecontext it is developed for. o CBOR Value: CBOR abbreviation for the name of this application profile. Different ranges of values use different registration policies [RFC8126]. Integer values from -256 to 255 are designated as Standards Action. Integer values froma sender for the first time, it needs-65536 tohave-257 and from 256 to 65535 are designated as Specification Required. Integer values greater than 65535 are designated as Expert Review. Integer values less than -65536 are marked as Private Use. o Reference: This contains amechanism in placepointer toavoid replay, e.g. Appendix B.2the public specification of[I-D.ietf-core-object-security]. 9. IANA Considerations This document hasthefollowing actionsabbreviation forIANA. 9.1.this application profile, if one exists. 11.7. ACE GroupcommKeyPolicy Registry This specification establishes theIANA"ACE GroupcommKey"Policy" IANA Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section9.3.11.9. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, be supplied as well. The columns of this Registry are: o Name:This is a descriptive name that enables easier reference to the item.The nameMUST be unique. It is not used inof theencoding.group communication policy. oKey Type Value: This is theCBOR label: The value to be used to identifythe keying material. These valuesthis group communication policy. Key map labels MUST be unique. Thevaluelabel can be a positive integer, a negativeinteger,integer or a string.o Profile: This field may contain a descriptive stringInteger values between 0 and 255 and strings ofa profilelength 1 are designated as Standards Track Document required. Integer values from 256 tobe65535 and strings of length 2 are designated as Specification Required. Integer values of greater than 65535 and strings of length greater than 2 are designated as expert review. Integer values less than -65536 are marked as private use. o CBOR type: the CBOR type usedwith this item. This should be a value that is into encode theName columnvalue ofthe "ACE Groupcomm Profile" Registry.this group communication policy. o Description: This field contains a brief descriptionof the keying material.for this group communication policy. oReferences:Reference: This field contains a pointer to the public specificationforproviding the format of thekeying material,group communication policy, if one exists. ThisRegistry has beenregistry will be initially populated by the values in Figure5. The specification column for all of these entries will be this document. 9.2. ACE Groupcomm Profile6. 11.8. Sequence Number Synchronization Method Registry This specification establishes the "Sequence Number Synchronization Method" IANA"ACE Groupcomm Profile"Registry. The Registry has been created to use the "Expert Review Required" registration procedure [RFC8126]. Expert review guidelines are provided in Section9.3.11.9. It should be noted that, in addition to the expert review, some portions of the Registry require a specification, potentially a Standards Track RFC, be supplied as well. The columns of this Registry are: o Name: The name of theprofile,sequence number synchronization method. o Value: The value to be usedas value of the profile attribute.to identify this sequence number synchronization method. o Description:Text giving an overview of the profile and the context it is developed for. o CBOR Value: CBOR abbreviationThis field contains a brief description for thisprofile name. Different ranges of values use different registration policies [RFC8126]. Integer values from -256 to 255 are designated as Standards Action. Integer values from -65536 to -257 and from 256 to 65535 are designated as Specification Required. Integer values greater than 65535 are designated as Expert Review. Integer values less than -65536 are marked as Private Use.sequence number synchronization method. o Reference: This field contains a pointer to the public specificationofdescribing theprofile abbreviation, if one exists. 9.3.sequence number synchronization method. 11.9. Expert Review Instructions The IANA Registries established in this document are defined as expert review. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason so they should be given substantial latitude. Expert reviewers should take into consideration the following points: o Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments, code points in other ranges should not be assigned for testing. o Specifications are required for the standards track range of point assignment. Specifications should exist for specification required ranges, but early assignment before a specification is available is considered to be permissible. Specifications are needed for the first-come, first-serve range if they are expected to be used outside of closed environments in an interoperable way. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for. o Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for standards track documents does not mean that a standards track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.10.12. References10.1.12.1. Normative References [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)",draft-ietf-ace-oauth-authz-22draft-ietf-ace-oauth-authz-24 (work in progress), March 2019. [I-D.ietf-ace-oauth-params] Seitz, L., "Additional OAuth Parameters for Authorization in Constrained Environments (ACE)", draft-ietf-ace-oauth-params-04params-05 (work in progress),FebruaryMarch 2019. [I-D.ietf-core-oscore-groupcomm] Tiloca, M., Selander, G., Palombini, F., and J. Park, "Group OSCORE - Secure Group Communication for CoAP", draft-ietf-core-oscore-groupcomm-05 (work in progress), July 2019. [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>. [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>. [RFC8126] Cotton, M., Leiba, B., andT. Narten, "GuidelinesT. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>. [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", RFC 8152, DOI 10.17487/RFC8152, July 2017, <https://www.rfc-editor.org/info/rfc8152>. 12.2. Informative References [I-D.dijk-core-groupcomm-bis] Dijk, E., Wang, C., and M. Tiloca, "Group Communication for the Constrained Application Protocol (CoAP)", draft- dijk-core-groupcomm-bis-00 (work in progress), March 2019. [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)", draft-ietf-ace-dtls- authorize-08 (work in progress), April 2019. [I-D.ietf-ace-mqtt-tls-profile] Sengul, C., Kirby, A., and P. Fremantle, "MQTT-TLS profile of ACE", draft-ietf-ace-mqtt-tls-profile-00 (work in progress), May 2019. [I-D.ietf-ace-oscore-profile] Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, "OSCORE profile of the Authentication and Authorization forWriting an IANA Considerations SectionConstrained Environments Framework", draft-ietf-ace- oscore-profile-07 (work inRFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>. [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", RFC 8152, DOI 10.17487/RFC8152, July 2017, <https://www.rfc-editor.org/info/rfc8152>. 10.2. Informative Referencesprogress), February 2019. [I-D.ietf-core-coap-pubsub] Koster, M., Keranen, A., and J. Jimenez, "Publish- Subscribe Broker for the Constrained Application Protocol (CoAP)",draft-ietf-core-coap-pubsub-06draft-ietf-core-coap-pubsub-08 (work in progress),JanuaryMarch 2019. [I-D.ietf-core-object-security] Selander, G., Mattsson, J., Palombini, F., and L. Seitz, "Object Security for Constrained RESTful Environments (OSCORE)", draft-ietf-core-object-security-16 (work in progress), March 2019. [RFC2093] Harney, H. and C. Muckenhirn, "Group Key Management Protocol (GKMP) Specification", RFC 2093, DOI 10.17487/RFC2093, July 1997, <https://www.rfc-editor.org/info/rfc2093>. [RFC2094] Harney, H. and C. Muckenhirn, "Group Key Management Protocol (GKMP) Architecture", RFC 2094, DOI 10.17487/RFC2094, July 1997, <https://www.rfc-editor.org/info/rfc2094>. [RFC2627] Wallner, D., Harder, E., andR. Agee, "Key ManagementR. Agee, "Key Management for Multicast: Issues and Architectures", RFC 2627, DOI 10.17487/RFC2627, June 1999, <https://www.rfc-editor.org/info/rfc2627>. [RFC7390] Rahman, A., Ed. and E. Dijk, Ed., "Group Communication for the Constrained Application Protocol (CoAP)", RFC 7390, DOI 10.17487/RFC7390, October 2014, <https://www.rfc-editor.org/info/rfc7390>. [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <https://www.rfc-editor.org/info/rfc7519>. [RFC7959] Bormann, C. and Z. Shelby, Ed., "Block-Wise Transfers in the Constrained Application Protocol (CoAP)", RFC 7959, DOI 10.17487/RFC7959, August 2016, <https://www.rfc-editor.org/info/rfc7959>. [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 requirements on application profiles of this specification,for the convenience of application profile designers. o Specify the communication protocol the members of the group must use (e.g., multicast CoAP). o Specify the security protocol the group members must use to protect their communication (e.g., group OSCORE). This must provide encryption, integrity and replay protection. o Specify the encoding and value of the identifier of group or topic and role of 'scope' (see Section 3.1). o Specify and register the application profile identifier (see Section 4.1). o Specify the acceptable values of 'kty' (see Section 4.2). o Specify the format and content of 'group_policies' entries (see Section 4.2). o Optionally, specify the format and content of 'mgt_key_material' (see Section 4.2). o Optionally, specify tranport profile of ACE [I-D.ietf-ace-oauth-authz] to use between Client and KDC. o Optionally, specify the encoding of public keys, of 'client_cred', and of 'pub_keys' if COSE_Keys are not used (see Section 4.2). o Optionally, specify the acceptable values for parameters related to signature algorithm and signature keys: 'sign_alg', 'sign_parameters', 'sign_key_parameters', 'pub_key_enc' (see Section 3.3). o Optionally, specify the negotiation of parameter values forMulticast: Issuessignature algorithm andArchitectures", RFC 2627, DOI 10.17487/RFC2627, June 1999, <https://www.rfc-editor.org/info/rfc2627>. [RFC7390] Rahman, A., Ed.signature keys, if 'sign_info' andE. Dijk, Ed., "Group Communication for the Constrained Application Protocol (CoAP)", RFC 7390, DOI 10.17487/RFC7390, October 2014, <https://www.rfc-editor.org/info/rfc7390>.'pub_key_enc' are not used (see Section 3.3). AppendixA.B. Document Updates RFC EDITOR: PLEASE REMOVE THIS SECTION.A.1.B.1. Version -01 to -02 o Editorial fixes. o Distinction between transport profile and application profile (Section 1.1). o New parameters 'sign_info' and 'pub_key_enc' to negotiate parameter values for signature algorithm and signature keys (Section 3.3). o New parameter 'type' to distinguish different Key Distribution Request messages (Section 4.1). o New parameter 'client_cred_verify' in the Key Distribution Request to convey a Client signature (Section 4.1). o Encoding of 'pub_keys_repos' (Section 4.1). o Encoding of 'mgt_key_material' (Section 4.1). o Improved description on retrieval of new or updated keying material (Section 6). o Encoding of 'get_pub_keys' in Public Key Request (Section 7.1). o Extended security considerations (Sections 10.1 and 10.2). o New "ACE Public Key Encoding" IANA Registry (Section 11.2). o New "ACE Groupcomm Parameters" IANA Registry (Section 11.3), populated with the entries in Section 8. o New "Ace Groupcomm Request Type" IANA Registry (Section 11.4), populated with the values in Section 9. o New "ACE Groupcomm Policy" IANA Registry (Section 11.7) populated with two entries "Sequence Number Synchronization Method" and "Key Update Check Interval" (Section 4.2). o Improved list of requirements for application profiles (Appendix A). B.2. Version -00 to -01 o Changed name of 'req_aud' to 'audience' in the Authorization Request (Section 3.1). o Defined error handling on the KDC (Sections 4.2 and 6.2). o Updated format of the Key Distribution Response as a whole (Section 4.2). o Generalized format of 'pub_keys' in the Key Distribution Response (Section 4.2). o Defined format for the message to request leaving the group (Section 5.2). oMentionedRenewal of individual keying material and methods for group rekeying initiated by the KDC (Section 6). o CBOR type for node identifiers in 'get_pub_keys' (Section 7.1). o Addedsecurity considerationsection onreplay protectionparameter identifiers and their CBOR keys (Section 8). o Added request types for requests to a Join Response (Section 9). o Extended security considerations (Section 10). o New IANA registries "ACE Groupcomm KeyRegistry" andRegistry", "ACE Groupcomm Profile Registry", "ACE Groupcomm Policy Registry" and "Sequence Number Synchronization Method Registry" (Section9).11). o Added appendix about requirements for application profiles of ACE on group communication (Appendix A). Acknowledgments The following individuals were helpful in shaping this document: Ben Kaduk, John Mattsson, Jim Schaad, Ludwig Seitz, Goeran Selander and Peter van der Stok. The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the EIT-Digital High Impact Initiative ACTIVE. Authors' Addresses Francesca Palombini Ericsson AB Torshamnsgatan 23 Kista SE-16440 Stockholm Sweden Email: francesca.palombini@ericsson.com Marco Tiloca RISE AB Isafjordsgatan 22 Kista SE-16440 Stockholm Sweden Email: marco.tiloca@ri.se