rfc9594v5.txt   rfc9594.txt 
Internet Engineering Task Force (IETF) F. Palombini Internet Engineering Task Force (IETF) F. Palombini
Request for Comments: 9594 Ericsson AB Request for Comments: 9594 Ericsson AB
Category: Standards Track M. Tiloca Category: Standards Track M. Tiloca
ISSN: 2070-1721 RISE AB ISSN: 2070-1721 RISE AB
August 2024 September 2024
Key Provisioning for Group Communication Using Authentication and Key Provisioning for Group Communication Using Authentication and
Authorization for Constrained Environments (ACE) Authorization for Constrained Environments (ACE)
Abstract Abstract
This document defines how to use the Authentication and Authorization This document defines how to use the Authentication and Authorization
for Constrained Environments (ACE) framework to distribute keying for Constrained Environments (ACE) framework to distribute keying
material and configuration parameters for secure group communication. material and configuration parameters for secure group communication.
Candidate group members that act as Clients and are authorized to Candidate group members that act as Clients and are authorized to
skipping to change at line 100 skipping to change at line 100
4.5.1.1. Retrieve the KDC's Authentication Credential 4.5.1.1. Retrieve the KDC's Authentication Credential
4.6. /ace-group/GROUPNAME/policies 4.6. /ace-group/GROUPNAME/policies
4.6.1. GET Handler 4.6.1. GET Handler
4.6.1.1. Retrieve the Group Policies 4.6.1.1. Retrieve the Group Policies
4.7. /ace-group/GROUPNAME/num 4.7. /ace-group/GROUPNAME/num
4.7.1. GET Handler 4.7.1. GET Handler
4.7.1.1. Retrieve the Keying Material Version 4.7.1.1. Retrieve the Keying Material Version
4.8. /ace-group/GROUPNAME/nodes/NODENAME 4.8. /ace-group/GROUPNAME/nodes/NODENAME
4.8.1. GET Handler 4.8.1. GET Handler
4.8.1.1. Retrieve Group and Individual Keying Material 4.8.1.1. Retrieve Group and Individual Keying Material
4.8.2. PUT Handler 4.8.2. POST Handler
4.8.2.1. Request to Change Individual Keying Material 4.8.2.1. Request to Change Individual Keying Material
4.8.3. DELETE Handler 4.8.3. DELETE Handler
4.8.3.1. Leave the Group 4.8.3.1. Leave the Group
4.9. /ace-group/GROUPNAME/nodes/NODENAME/cred 4.9. /ace-group/GROUPNAME/nodes/NODENAME/cred
4.9.1. POST Handler 4.9.1. POST Handler
4.9.1.1. Uploading an Authentication Credential 4.9.1.1. Uploading an Authentication Credential
5. Removal of a Group Member 5. Removal of a Group Member
6. Group Rekeying Process 6. Group Rekeying Process
6.1. Point-to-Point Group Rekeying 6.1. Point-to-Point Group Rekeying
6.2. One-to-Many Group Rekeying 6.2. One-to-Many Group Rekeying
skipping to change at line 335 skipping to change at line 335
group member in question). The specific nature and format of group member in question). The specific nature and format of
individual keying material used in a group is defined in the individual keying material used in a group is defined in the
application profiles of this specification. The individual keying application profiles of this specification. The individual keying
material of a group member is not related to the secure material of a group member is not related to the secure
association between that group member and the KDC. association between that group member and the KDC.
Throughout this document, examples for CBOR data items are expressed Throughout this document, examples for CBOR data items are expressed
in CBOR extended diagnostic notation as defined in Section 8 of in CBOR extended diagnostic notation as defined in Section 8 of
[RFC8949] and Appendix G of [RFC8610] ("diagnostic notation"), unless [RFC8949] and Appendix G of [RFC8610] ("diagnostic notation"), unless
noted otherwise. We often use diagnostic notation comments to noted otherwise. We often use diagnostic notation comments to
provide a textual representation of the numeric parameter names and provide a textual representation of the parameters' keys and values.
values.
2. Overview 2. Overview
At a high level, the key provisioning process is separated in two At a high level, the key provisioning process is separated in two
phases: the first one follows the ACE framework between the Client, phases: the first one follows the ACE framework between the Client,
AS, and KDC, while the second one is the actual key distribution AS, and KDC, while the second one is the actual key distribution
between the Client and KDC. After the two phases are completed, the between the Client and KDC. After the two phases are completed, the
Client is able to participate in the group communication via a Client is able to participate in the group communication via a
Dispatcher entity. Dispatcher entity.
skipping to change at line 647 skipping to change at line 646
scope_entries = AIF-Generic<gname, permissions> scope_entries = AIF-Generic<gname, permissions>
scope = bstr .cbor scope_entries scope = bstr .cbor scope_entries
Figure 4: Example of scope Using AIF Figure 4: Example of scope Using AIF
gname = tstr gname = tstr
role = tstr role = tstr
scope_entry = [ gname , ? ( role / [ 2*role ] ) ] scope_entry = [gname, ? ( role / [2* role] )]
scope_entries = [ * scope_entry ] scope_entries = [* scope_entry]
scope = bstr .cbor scope_entries scope = bstr .cbor scope_entries
Figure 5: Example of scope Using the Textual Format, with the Figure 5: Example of scope Using the Textual Format, with the
Role Identifiers Encoded as Text Strings Role Identifiers Encoded as Text Strings
3.2. Authorization Response 3.2. Authorization Response
The AS processes the Authorization Request as defined in The AS processes the Authorization Request as defined in
Section 5.8.2 of [RFC9200], especially verifying that the Client is Section 5.8.2 of [RFC9200], especially verifying that the Client is
skipping to change at line 880 skipping to change at line 879
that indicates the signature algorithm used in the groups that indicates the signature algorithm used in the groups
identified by the 'gname' values. It is REQUIRED for application identified by the 'gname' values. It is REQUIRED for application
profiles to define specific values that this parameter can take profiles to define specific values that this parameter can take
(REQ3), which are selected from the set of signing algorithms of (REQ3), which are selected from the set of signing algorithms of
the "COSE Algorithms" registry [COSE.Algorithms]. the "COSE Algorithms" registry [COSE.Algorithms].
* The third element 'sign_parameters' is a CBOR array that indicates * The third element 'sign_parameters' is a CBOR array that indicates
the parameters of the signature algorithm used in the groups the parameters of the signature algorithm used in the groups
identified by the 'gname' values. Its content depends on the identified by the 'gname' values. Its content depends on the
value of 'sign_alg'. It is REQUIRED for application profiles to value of 'sign_alg'. It is REQUIRED for application profiles to
define the possible values and structures for the elements of this define the possible values and structure for the elements of this
parameter (REQ4). parameter (REQ4).
* The fourth element 'sign_key_parameters' is a CBOR array that * The fourth element 'sign_key_parameters' is a CBOR array that
indicates the parameters of the key used with the signature indicates the parameters of the key used with the signature
algorithm in the groups identified by the 'gname' values. Its algorithm in the groups identified by the 'gname' values. Its
content depends on the value of 'sign_alg'. It is REQUIRED for content depends on the value of 'sign_alg'. It is REQUIRED for
application profiles to define the possible values and structures application profiles to define the possible values and structure
for the elements of this parameter (REQ5). for the elements of this parameter (REQ5).
* The fifth element 'cred_fmt' is either a CBOR integer indicating * The fifth element 'cred_fmt' either is a CBOR integer indicating
the format of authentication credentials used in the groups the format of authentication credentials used in the groups
identified by the 'gname' values or has the CBOR simple value null identified by the 'gname' values or is the CBOR simple value null
(0xf6), which indicates that the KDC does not act as a repository (0xf6), which indicates that the KDC does not act as a repository
of authentication credentials for group members. Its acceptable of authentication credentials for group members. Its acceptable
integer values are taken from the "Label" column of the "COSE integer values are taken from the "Label" column of the "COSE
Header Parameters" registry [COSE.Header.Parameters], with some of Header Parameters" registry [COSE.Header.Parameters], with some of
those values also indicating the type of container to use for those values also indicating the type of container to use for
exchanging the authentication credentials with the KDC (e.g., a exchanging the authentication credentials with the KDC (e.g., a
chain or bag of certificates). It is REQUIRED for application chain or bag of certificates). It is REQUIRED for application
profiles to define specific values to use for this parameter, profiles to define specific values to use for this parameter,
consistently with the acceptable formats of authentication consistently with the acceptable formats of authentication
credentials (REQ6). credentials (REQ6).
The CDDL notation [RFC8610] of the 'sign_info' parameter is given The CDDL notation [RFC8610] of the 'sign_info' parameter is given
below. below.
sign_info = sign_info_req / sign_info_resp sign_info = sign_info_req / sign_info_resp
sign_info_req = null ; in the Token Transfer sign_info_req = null ; in the Token Transfer
; Request to the KDC ; Request to the KDC
sign_info_resp = [ + sign_info_entry ] ; in the Token Transfer sign_info_resp = [+ sign_info_entry] ; in the Token Transfer
; Response from the KDC ; Response from the KDC
sign_info_entry = sign_info_entry =
[ [
id : gname / [ + gname ], id: gname / [+ gname],
sign_alg : int / tstr, sign_alg: int / tstr,
sign_parameters : [ any ], sign_parameters: [any],
sign_key_parameters : [ + parameter : any ], sign_key_parameters: [+ parameter: any],
cred_fmt : int / null cred_fmt: int / null
] ]
gname = tstr gname = tstr
This format is consistent with every signature algorithm currently This format is consistent with every signature algorithm currently
defined in [RFC9053], i.e., with algorithms that have only the COSE defined in [RFC9053], i.e., with algorithms that have only the COSE
key type as their COSE capability. Appendix B describes how the key type as their COSE capability. Appendix B describes how the
format of each 'sign_info_entry' can be generalized for possible format of each 'sign_info_entry' can be generalized for possible
future registered algorithms having a different set of COSE future registered algorithms having a different set of COSE
capabilities. capabilities.
skipping to change at line 983 skipping to change at line 982
name; implementations are not required to use this name and can name; implementations are not required to use this name and can
define their own instead. define their own instead.
If request messages sent to the KDC as well as success response If request messages sent to the KDC as well as success response
messages from the KDC include a payload and specify a Content-Format, messages from the KDC include a payload and specify a Content-Format,
those messages MUST have Content-Format "application/ace- those messages MUST have Content-Format "application/ace-
groupcomm+cbor", which is registered in Section 11.2. CBOR map keys groupcomm+cbor", which is registered in Section 11.2. CBOR map keys
used for the message parameters are defined in Section 8. used for the message parameters are defined in Section 8.
* /ace-group : the path of this root resource is invariant once the * /ace-group : the path of this root resource is invariant once the
resource is established and indicates that this specification is resource is established. Its employment indicates that this
used. If other applications run on a KDC implementing this specification is used. If other applications run on a KDC
specification and use this same path, those applications will implementing this specification and use this same path, those
collide, and a mechanism will be needed to differentiate the applications will collide, and a mechanism will be needed to
endpoints. differentiate the endpoints.
A Client can access this resource in order to retrieve a set of A Client can access this resource in order to retrieve a set of
group names, each corresponding to one of the specified group group names, each corresponding to one of the specified group
identifiers. This operation is described in Section 4.2.1.1. identifiers. This operation is described in Section 4.2.1.1.
Clients may be authorized to access this resource even without Clients may be authorized to access this resource even without
being members of any group managed by the KDC and even if they are being members of any group managed by the KDC and even if they are
not authorized to become group members (e.g., when authorized to not authorized to become group members (e.g., when authorized to
be external signature verifiers). be external signature verifiers).
skipping to change at line 1017 skipping to change at line 1016
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "core" Uri-Path: "core"
Uri-Query: "if=ace.groups" Uri-Query: "if=ace.groups"
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/link-format Content-Format: 40 (application/link-format)
Payload: Payload:
<coap://[2001:db8::ab]/ace-group>;if="ace.groups" <coap://[2001:db8::ab]/ace-group>;if="ace.groups"
* /ace-group/GROUPNAME : one such sub-resource to /ace-group is * /ace-group/GROUPNAME : one such sub-resource to /ace-group is
hosted for each group with the name GROUPNAME that the KDC hosted for each group with the name GROUPNAME that the KDC
manages. In particular, it is the group-membership resource manages. In particular, it is the group-membership resource
associated with that group, and it contains the symmetric group associated with that group, and it contains the symmetric group
keying material of that group. keying material of that group.
A Client can access this resource in order to join the group with A Client can access this resource in order to join the group with
skipping to change at line 1052 skipping to change at line 1051
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "core" Uri-Path: "core"
Uri-Query: "if=ace.group" Uri-Query: "if=ace.group"
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/link-format Content-Format: 40 (application/link-format)
Payload: Payload:
<coap://[2001:db8::ab]/ace-group/gp1>;if="ace.group" <coap://[2001:db8::ab]/ace-group/gp1>;if="ace.group"
If it is not required that the value of the GROUPNAME URI path and If it is not required that the value of the GROUPNAME URI path and
the group name in the access token scope ('gname' in Section 3.1) the group name in the access token scope ('gname' in Section 3.1)
coincide, the KDC MUST implement a mechanism to map the GROUPNAME coincide, the KDC MUST implement a mechanism to map the GROUPNAME
value in the URI to the group name in order to refer to the value in the URI to the group name in order to refer to the
correct group (REQ7). correct group (REQ7).
* /ace-group/GROUPNAME/creds : the path of this resource is * /ace-group/GROUPNAME/creds : the path of this resource is
skipping to change at line 1213 skipping to change at line 1212
credential and this is required for the correct group operation. credential and this is required for the correct group operation.
* GET request to /ace-group/GROUPNAME/policies in order to retrieve * GET request to /ace-group/GROUPNAME/policies in order to retrieve
the current group policies as a group member. the current group policies as a group member.
* GET request to /ace-group/GROUPNAME/nodes/NODENAME in order to * GET request to /ace-group/GROUPNAME/nodes/NODENAME in order to
retrieve the current group keying material and individual keying retrieve the current group keying material and individual keying
material. The former can also be retrieved through a GET request material. The former can also be retrieved through a GET request
to /ace-group/GROUPNAME/ (see above). to /ace-group/GROUPNAME/ (see above).
* PUT request to /ace-group/GROUPNAME/nodes/NODENAME in order to ask * POST request to /ace-group/GROUPNAME/nodes/NODENAME in order to
for new individual keying material. Alternatively, the Client ask for new individual keying material. Alternatively, the Client
could obtain new individual keying material by rejoining the group could obtain new individual keying material by rejoining the group
through a POST request to /ace-group/GROUPNAME/ (see above). through a POST request to /ace-group/GROUPNAME/ (see above).
Furthermore, depending on its roles in the group or on the Furthermore, depending on its roles in the group or on the
application profile of this specification, the Client might simply application profile of this specification, the Client might simply
not be associated with any individual keying material. not be associated with any individual keying material.
* POST request to /ace-group/GROUPNAME/nodes/NODENAME/cred in order * POST request to /ace-group/GROUPNAME/nodes/NODENAME/cred in order
to provide the KDC with a new authentication credential. to provide the KDC with a new authentication credential.
Alternatively, the Client could provide a new authentication Alternatively, the Client could provide a new authentication
credential by rejoining the group through a POST request to /ace- credential by rejoining the group through a POST request to /ace-
skipping to change at line 1308 skipping to change at line 1307
occurred at the KDC. The diagnostic text is intended for software occurred at the KDC. The diagnostic text is intended for software
engineers as well as for device and network operators in order to engineers as well as for device and network operators in order to
aid debugging and provide context for possible intervention. The aid debugging and provide context for possible intervention. The
diagnostic message SHOULD be logged by the KDC. The 'detail' diagnostic message SHOULD be logged by the KDC. The 'detail'
entry is unlikely relevant in an unattended setup where human entry is unlikely relevant in an unattended setup where human
intervention is not expected. intervention is not expected.
An example of an error response using the problem-details format is An example of an error response using the problem-details format is
shown in Figure 6. shown in Figure 6.
Response: Response:
Header: Service Unavailable (Code=5.03) Header: Service Unavailable (Code=5.03)
Content-Format: application/concise-problem-details+cbor Content-Format: 257 (application/concise-problem-details+cbor)
Payload: Payload:
{ {
/ title / -1: "No available node identifiers", / title / -1: "No available individual keying material",
/ detail / -2: "Things will change after a / detail / -2: "Things will change after a
group rekeying; try later", group rekeying; try later",
/ ace-groupcomm-error / 0: { / ace-groupcomm-error / 0: {
/ error-id / 0: 4 / "No available node identifiers" / / error-id / 0: 4 / "No available individual keying material" /
} }
} }
Figure 6: Example of an Error Response with Problem Details Figure 6: Example of an Error Response with Problem Details
The problem-details format (in general) and the Custom Problem Detail The problem-details format (in general) and the Custom Problem Detail
entry 'ace-groupcomm-error' (in particular) are OPTIONAL for Clients entry 'ace-groupcomm-error' (in particular) are OPTIONAL for Clients
to support. A Client supporting the entry 'ace-groupcomm-error' and to support. A Client supporting the entry 'ace-groupcomm-error' and
that can understand the specified error may use that information to that can understand the specified error may use that information to
determine what actions to take next. determine what actions to take next.
Section 9 of this specification defines an initial set of error Section 9 of this specification defines an initial set of error
identifiers as possible values for the 'error-id' field. Application identifiers as possible values for the 'error-id' field. Application
profiles of this specification inherit this initial set of error profiles of this specification inherit this initial set of error
skipping to change at line 1414 skipping to change at line 1413
| | | |
Figure 7: Message Flow of Group Name and URI Retrieval Request- Figure 7: Message Flow of Group Name and URI Retrieval Request-
Response Response
Request: Request:
Header: FETCH (Code=0.05) Header: FETCH (Code=0.05)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ gid / 0: [1, 2] / gid / 0: [1, 2]
} }
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ gid / 0: [1, 2], / gid / 0: [1, 2],
/ gname / 1: ["group1", "group2"], / gname / 1: ["group1", "group2"],
/ guri / 2: ["/ace-group/g1", "/ace-group/g2"] / guri / 2: ["/ace-group/g1", "/ace-group/g2"]
} }
Figure 8: Example of Group Name and URI Retrieval Request-Response Figure 8: Example of Group Name and URI Retrieval Request-Response
4.3. /ace-group/GROUPNAME 4.3. /ace-group/GROUPNAME
skipping to change at line 1534 skipping to change at line 1533
Note that, for this handler, 'inclusion_flag' is always set to Note that, for this handler, 'inclusion_flag' is always set to
true and the array of roles 'role_filter' is always non-empty, true and the array of roles 'role_filter' is always non-empty,
while the array of node identifiers 'id_filter' is always empty. while the array of node identifiers 'id_filter' is always empty.
However, this is not necessarily the case for other handlers using However, this is not necessarily the case for other handlers using
the 'get_creds' parameter. the 'get_creds' parameter.
inclusion_flag = bool inclusion_flag = bool
role = tstr role = tstr
comb_role = [ 2*role ] comb_role = [2* role]
role_filter = [ *(role / comb_role) ] role_filter = [* ( role / comb_role )]
id = bstr id = bstr
id_filter = [ *id ] id_filter = [* id]
get_creds = null / [ inclusion_flag, role_filter, id_filter ] get_creds = null / [inclusion_flag, role_filter, id_filter]
Figure 9: CDDL Definition of 'get_creds', Using an Example Figure 9: CDDL Definition of 'get_creds', Using an Example
Node Identifier Encoded as bstr and Role as tstr Node Identifier Encoded as bstr and Role as tstr
* 'client_cred': encoded as a CBOR byte string, whose value is the * 'client_cred': encoded as a CBOR byte string, whose value is the
original binary representation of the Client's authentication original binary representation of the Client's authentication
credential. This parameter MUST be present if the KDC is managing credential. This parameter MUST be present if the KDC is managing
(collecting from and distributing to Clients) the authentication (collecting from and distributing to Clients) the authentication
credentials of the group members and the Client's role in the credentials of the group members and the Client's role in the
group will require the Client to send messages to one or more group will require the Client to send messages to one or more
skipping to change at line 1958 skipping to change at line 1957
* 'group_policies': its value is encoded as a CBOR map, whose * 'group_policies': its value is encoded as a CBOR map, whose
elements specify how the group handles specific management elements specify how the group handles specific management
aspects. These include, for instance, approaches to achieve aspects. These include, for instance, approaches to achieve
synchronization of sequence numbers among group members. The synchronization of sequence numbers among group members. The
possible elements of the CBOR map are registered in the "ACE possible elements of the CBOR map are registered in the "ACE
Groupcomm Policies" registry defined in Section 11.10 of this Groupcomm Policies" registry defined in Section 11.10 of this
specification. This specification defines the three elements specification. This specification defines the three elements
"Sequence Number Synchronization Methods", "Key Update Check "Sequence Number Synchronization Methods", "Key Update Check
Interval", and "Expiration Delta", which are summarized in Interval", and "Expiration Delta", which are summarized in
Table 3. Application profiles of this specification MUST specify Table 3. Application profiles of this specification MUST specify
the format, content, and default values for the entries of the the format and default values for the entries of the CBOR map
CBOR map conveyed in the 'group_policies' parameter (REQ20). conveyed in the 'group_policies' parameter (REQ20).
+=================+=======+======+===================+===========+ +=================+=======+======+===================+===========+
| Name | CBOR | CBOR | Description | Reference | | Name | CBOR | CBOR | Description | Reference |
| | Label | Type | | | | | Label | Type | | |
+=================+=======+======+===================+===========+ +=================+=======+======+===================+===========+
| Sequence Number | 0 | int | Method for | RFC 9594 | | Sequence Number | 0 | int | Method for | RFC 9594 |
| Synchronization | | or | recipient group | | | Synchronization | | or | recipient group | |
| Method | | tstr | members to | | | Method | | tstr | members to | |
| | | | synchronize with | | | | | | synchronize with | |
| | | | sequence numbers | | | | | | sequence numbers | |
skipping to change at line 2194 skipping to change at line 2193
| Location-Path = "/ace-group/GROUPNAME/nodes/NODENAME" | | Location-Path = "/ace-group/GROUPNAME/nodes/NODENAME" |
Figure 12: Message Flow of the Join Request-Response Figure 12: Message Flow of the Join Request-Response
Request: Request:
Header: POST (Code=0.02) Header: POST (Code=0.02)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ scope / 3: <<["group1", ["sender", "receiver"]]>>, / scope / 3: <<["group1", ["sender", "receiver"]]>>,
/ get_creds / 4: [true, ["sender"], []], / get_creds / 4: [true, ["sender"], []],
/ client_cred / 5: h'a2026008a101a5010202410a20012158 / client_cred / 5: h'a2026008a101a5010202410a20012158
20bbc34960526ea4d32e940cad2a2341 20bbc34960526ea4d32e940cad2a2341
48ddc21791a12afbcbac93622046dd44 48ddc21791a12afbcbac93622046dd44
f02258204519e257236b2a0ce2023f09 f02258204519e257236b2a0ce2023f09
31f1f386ca7afda64fcde0108c224c51 31f1f386ca7afda64fcde0108c224c51
eabf6072', eabf6072',
/ cnonce / 6: h'25a8991cd700ac01', / cnonce / 6: h'25a8991cd700ac01',
/ client_cred_verify / 24: h'66e6d9b0db009f3e105a673f88556117 / client_cred_verify / 24: h'66e6d9b0db009f3e105a673f88556117
26caed57f530f8cae9d0b168513ab949 26caed57f530f8cae9d0b168513ab949
fedc3e80a96ebe94ba08d3f8d3bf8348 fedc3e80a96ebe94ba08d3f8d3bf8348
7458e2ab4c2f936ff78b50e33c885e35' 7458e2ab4c2f936ff78b50e33c885e35'
} }
Response: Response:
Header: Created (Code=2.01) Header: Created (Code=2.01)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Location-Path: "ace-group" Location-Path: "ace-group"
Location-Path: "g1" Location-Path: "g1"
Location-Path: "nodes" Location-Path: "nodes"
Location-Path: "c101" Location-Path: "c101"
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ gkty / 7: 65600, / gkty / 7: 65600,
/ key / 8: h'73657373696f6e6b6579', / key / 8: h'73657373696f6e6b6579',
/ num / 9: 12, / num / 9: 12,
/ exp / 11: 1924992000, / exp / 11: 1924992000,
skipping to change at line 2352 skipping to change at line 2351
| | | |
Figure 14: Message Flow of Key Distribution Request-Response Figure 14: Message Flow of Key Distribution Request-Response
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ gkty / 7: 65600, / gkty / 7: 65600,
/ key / 8: h'73657373696f6e6b6579', / key / 8: h'73657373696f6e6b6579',
/ num / 9: 12 / num / 9: 12
} }
Figure 15: Example of Key Distribution Request-Response Figure 15: Example of Key Distribution Request-Response
4.4. /ace-group/GROUPNAME/creds 4.4. /ace-group/GROUPNAME/creds
skipping to change at line 2497 skipping to change at line 2495
on the group messages may be allowed to access this resource if the on the group messages may be allowed to access this resource if the
application needs it. application needs it.
4.4.1.1. Retrieve a Subset of Authentication Credentials in the Group 4.4.1.1. Retrieve a Subset of Authentication Credentials in the Group
In case the KDC maintains the authentication credentials of group In case the KDC maintains the authentication credentials of group
members, a node in the group can contact the KDC to request the members, a node in the group can contact the KDC to request the
authentication credentials, roles, and node identifiers of a authentication credentials, roles, and node identifiers of a
specified subset of group members by sending a CoAP FETCH request to specified subset of group members by sending a CoAP FETCH request to
the /ace-group/GROUPNAME/creds endpoint at the KDC, which is the /ace-group/GROUPNAME/creds endpoint at the KDC, which is
formatted as defined in Section 4.4.1 and with the group identified formatted as defined in Section 4.4.1 and where GROUPNAME identifies
by GROUPNAME. the group.
Figure 16 gives an overview of the exchange mentioned above, while Figure 16 gives an overview of the exchange mentioned above, while
Figure 17 shows an example of such an exchange. Figure 17 shows an example of such an exchange.
Client KDC Client KDC
| | | |
| Authentication Credential Request: | | Authentication Credential Request: |
|-------------------------------------------------------->| |-------------------------------------------------------->|
| FETCH /ace-group/GROUPNAME/creds | | FETCH /ace-group/GROUPNAME/creds |
| | | |
|<-- Authentication Credential Response: 2.05 (Created) --| |<-- Authentication Credential Response: 2.05 (Content) --|
| | | |
Figure 16: Message Flow of Authentication Credential Request- Figure 16: Message Flow of Authentication Credential Request-
Response to Obtain the Authentication Credentials of Specific Response to Obtain the Authentication Credentials of Specific
Group Members Group Members
Request: Request:
Header: FETCH (Code=0.05) Header: FETCH (Code=0.05)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "creds" Uri-Path: "creds"
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ get_creds / 4: [true, [], [h'02', h'03']] / get_creds / 4: [true, [], [h'02', h'03']]
} }
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ creds / 13: [h'a2026008a101a5010202410320012158 / creds / 13: [h'a2026008a101a5010202410320012158
20ac75e9ece3e50bfc8ed60399889522 20ac75e9ece3e50bfc8ed60399889522
405c47bf16df96660a41298cb4307f7e 405c47bf16df96660a41298cb4307f7e
b62258206e5de611388a4b8a8211334a b62258206e5de611388a4b8a8211334a
c7d37ecb52a387d257e6db3c2a93df21 c7d37ecb52a387d257e6db3c2a93df21
ff3affc8', ff3affc8',
h'a2026008a101a5010202410920012158 h'a2026008a101a5010202410920012158
206f9702a66602d78f5e81bac1e0af01 206f9702a66602d78f5e81bac1e0af01
skipping to change at line 2600 skipping to change at line 2598
Response to Obtain the Authentication Credentials of All the Response to Obtain the Authentication Credentials of All the
Group Members Group Members
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "creds" Uri-Path: "creds"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ num / 9: 12, / num / 9: 12,
/ creds / 13: [h'a2026008a101a5010202410220012158 / creds / 13: [h'a2026008a101a5010202410220012158
20cd4177ba62433375ede279b5e18e8b 20cd4177ba62433375ede279b5e18e8b
91bc3ed8f1e174474a26fc0edb44ea53 91bc3ed8f1e174474a26fc0edb44ea53
73225820a0391de29c5c5badda610d4e 73225820a0391de29c5c5badda610d4e
301eaaa18422367722289cd18cbe6624 301eaaa18422367722289cd18cbe6624
e89b9cfd', e89b9cfd',
h'a2026008a101a5010202410320012158 h'a2026008a101a5010202410320012158
skipping to change at line 2750 skipping to change at line 2747
Figure 21: Message Flow of KDC Authentication Credential Request- Figure 21: Message Flow of KDC Authentication Credential Request-
Response to Obtain the Authentication Credential of the KDC Response to Obtain the Authentication Credential of the KDC
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "kdc-cred" Uri-Path: "kdc-cred"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ kdc_cred / 17: h'a2026008a101a5010202419920012158 / kdc_cred / 17: h'a2026008a101a5010202419920012158
2065eda5a12577c2bae829437fe33870 2065eda5a12577c2bae829437fe33870
1a10aaa375e1bb5b5de108de439c0855 1a10aaa375e1bb5b5de108de439c0855
1d2258201e52ed75701163f7f9e40ddf 1d2258201e52ed75701163f7f9e40ddf
9f341b3dc9ba860af7e0ca7ca7e9eecd 9f341b3dc9ba860af7e0ca7ca7e9eecd
0084d19c', 0084d19c',
/ kdc_nonce / 18: h'0b7db12aaff56da3', / kdc_nonce / 18: h'0b7db12aaff56da3',
/ kdc_cred_verify / 19: h'3fc54702aa56e1b2cb20284294c9106a / kdc_cred_verify / 19: h'3fc54702aa56e1b2cb20284294c9106a
skipping to change at line 2807 skipping to change at line 2803
byte string of zero length (0x40). byte string of zero length (0x40).
The specific format and meaning of group policies MUST be specified The specific format and meaning of group policies MUST be specified
in application profiles of this specification (REQ20). in application profiles of this specification (REQ20).
4.6.1.1. Retrieve the Group Policies 4.6.1.1. Retrieve the Group Policies
A node in the group can contact the KDC to retrieve the current group A node in the group can contact the KDC to retrieve the current group
policies by sending a CoAP GET request to the /ace-group/GROUPNAME/ policies by sending a CoAP GET request to the /ace-group/GROUPNAME/
policies endpoint at the KDC, which is formatted as defined in policies endpoint at the KDC, which is formatted as defined in
Section 4.6.1 and with the group identified by GROUPNAME. Section 4.6.1 and where GROUPNAME identifies the group.
Figure 23 gives an overview of the exchange described above, while Figure 23 gives an overview of the exchange described above, while
Figure 24 shows an example. Figure 24 shows an example.
Client KDC Client KDC
| | | |
|-- Policies Request: GET /ace-group/GROUPNAME/policies -->| |-- Policies Request: GET /ace-group/GROUPNAME/policies -->|
| | | |
|<----------- Policies Response: 2.05 (Content) -----------| |<----------- Policies Response: 2.05 (Content) -----------|
| | | |
Figure 23: Message Flow of Policies Request-Response Figure 23: Message Flow of Policies Request-Response
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "policies" Uri-Path: "policies"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload(in CBOR diagnostic notation): Payload(in CBOR diagnostic notation):
{ {
/ group_policies / 16: { / group_policies / 16: {
/ Expiration Delta / 2: 120 / Expiration Delta / 2: 120
} }
} }
Figure 24: Example of Policies Request-Response Figure 24: Example of Policies Request-Response
4.7. /ace-group/GROUPNAME/num 4.7. /ace-group/GROUPNAME/num
skipping to change at line 2874 skipping to change at line 2869
material before the new keying material is distributed. This number material before the new keying material is distributed. This number
is stored in persistent storage. is stored in persistent storage.
The payload of the response is formatted as a CBOR integer. The payload of the response is formatted as a CBOR integer.
4.7.1.1. Retrieve the Keying Material Version 4.7.1.1. Retrieve the Keying Material Version
A node in the group can contact the KDC to request information about A node in the group can contact the KDC to request information about
the version number of the symmetric group keying material by sending the version number of the symmetric group keying material by sending
a CoAP GET request to the /ace-group/GROUPNAME/num endpoint at the a CoAP GET request to the /ace-group/GROUPNAME/num endpoint at the
KDC, which is formatted as defined in Section 4.7.1 and with the KDC, which is formatted as defined in Section 4.7.1 and where
group identified by GROUPNAME. In particular, the version is GROUPNAME identifies the group. In particular, the version is
incremented by the KDC every time the group keying material is incremented by the KDC every time the group keying material is
renewed before it is distributed to the group members. renewed before it is distributed to the group members.
Figure 25 gives an overview of the exchange described above, while Figure 25 gives an overview of the exchange described above, while
Figure 26 shows an example. Figure 26 shows an example.
Client KDC Client KDC
| | | |
|---- Version Request: GET /ace-group/GROUPNAME/num ---->| |---- Version Request: GET /ace-group/GROUPNAME/num ---->|
| | | |
skipping to change at line 2898 skipping to change at line 2893
Figure 25: Message Flow of Version Request-Response Figure 25: Message Flow of Version Request-Response
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "num" Uri-Path: "num"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: 60 (application/cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
13 13
Figure 26: Example of Version Request-Response Figure 26: Example of Version Request-Response
4.8. /ace-group/GROUPNAME/nodes/NODENAME 4.8. /ace-group/GROUPNAME/nodes/NODENAME
This resource implements the GET, PUT, and DELETE handlers. This resource implements the GET, POST, and DELETE handlers.
In addition to what is defined in Section 4.1.2, each of the handlers In addition to what is defined in Section 4.1.2, each of the handlers
performs the following two verifications. performs the following two verifications.
* The handler verifies that the Client is a current member of the * The handler verifies that the Client is a current member of the
group. If the verification fails, the KDC MUST reply with a 4.03 group. If the verification fails, the KDC MUST reply with a 4.03
(Forbidden) error response. The response MUST have Content-Format (Forbidden) error response. The response MUST have Content-Format
"application/concise-problem-details+cbor" and is formatted as "application/concise-problem-details+cbor" and is formatted as
defined in Section 4.1.2. Within the Custom Problem Detail entry defined in Section 4.1.2. Within the Custom Problem Detail entry
'ace-groupcomm-error', the value of the 'error-id' field MUST be 'ace-groupcomm-error', the value of the 'error-id' field MUST be
skipping to change at line 3052 skipping to change at line 3047
Figure 27: Message Flow of Key Distribution Request-Response Figure 27: Message Flow of Key Distribution Request-Response
Request: Request:
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "nodes" Uri-Path: "nodes"
Uri-Path: "c101" Uri-Path: "c101"
Payload: -
Response: Response:
Header: Content (Code=2.05) Header: Content (Code=2.05)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation, with "ind-key" being the Payload (in CBOR diagnostic notation, with "ind-key" being the
profile-specified label for individual keying material): profile-specified label for individual keying material):
{ {
/ gkty / 7: 65600, / gkty / 7: 65600,
/ key / 8: h'73657373696f6e6b6579', / key / 8: h'73657373696f6e6b6579',
/ num / 9: 12, / num / 9: 12,
"ind-key": h'fcae9023' "ind-key": h'fcae9023'
} }
Figure 28: Example of Key Distribution Request-Response Figure 28: Example of Key Distribution Request-Response
4.8.2. PUT Handler 4.8.2. POST Handler
The PUT handler processes requests from a Client that asks for new The POST handler processes requests from a Client that asks for new
individual keying material, as required to process messages exchanged individual keying material, as required to process messages exchanged
in the group. in the group.
The handler expects a PUT request with an empty payload. The handler expects a POST request with an empty payload.
In addition to what is defined in Section 4.1.2 and at the beginning In addition to what is defined in Section 4.1.2 and at the beginning
of Section 4.8, the handler verifies that this operation is of Section 4.8, the handler verifies that this operation is
consistent with the set of roles that the Client has in the group consistent with the set of roles that the Client has in the group
(REQ11). If the verification fails, the KDC MUST reply with a 4.00 (REQ11). If the verification fails, the KDC MUST reply with a 4.00
(Bad Request) error response. The response MUST have Content-Format (Bad Request) error response. The response MUST have Content-Format
"application/concise-problem-details+cbor" and is formatted as "application/concise-problem-details+cbor" and is formatted as
defined in Section 4.1.2. Within the Custom Problem Detail entry defined in Section 4.1.2. Within the Custom Problem Detail entry
'ace-groupcomm-error', the value of the 'error-id' field MUST be set 'ace-groupcomm-error', the value of the 'error-id' field MUST be set
to 1 ("Request inconsistent with the current roles"). to 1 ("Request inconsistent with the current roles").
If the KDC is currently not able to serve this request, i.e., to If the KDC is currently not able to serve this request, i.e., to
generate new individual keying material for the requesting Client, generate new individual keying material for the requesting Client,
the KDC MUST reply with a 5.03 (Service unavailable) error response. the KDC MUST reply with a 5.03 (Service unavailable) error response.
The response MUST have Content-Format "application/concise-problem- The response MUST have Content-Format "application/concise-problem-
details+cbor" and is formatted as defined in Section 4.1.2. Within details+cbor" and is formatted as defined in Section 4.1.2. Within
the Custom Problem Detail entry 'ace-groupcomm-error', the value of the Custom Problem Detail entry 'ace-groupcomm-error', the value of
the 'error-id' field MUST be set to 4 ("No available node the 'error-id' field MUST be set to 4 ("No available individual
identifiers"). keying material").
If all verifications succeed, the handler replies with a 2.04 If all verifications succeed, the handler replies with a 2.04
(Changed) response containing newly generated individual keying (Changed) response containing newly generated individual keying
material for the Client. The payload of the response is formatted as material for the Client. The payload of the response is formatted as
a CBOR map. The specific format of newly generated individual keying a CBOR map. The specific format of newly generated individual keying
material for group members or of the information to derive such material for group members or of the information to derive such
keying material MUST be defined in application profiles of this keying material MUST be defined in application profiles of this
specification (REQ27), together with the corresponding CBOR map key specification (REQ27), together with the corresponding CBOR map key
that has to be registered in the "ACE Groupcomm Parameters" registry that has to be registered in the "ACE Groupcomm Parameters" registry
defined in Section 11.7. defined in Section 11.7.
skipping to change at line 3142 skipping to change at line 3136
A Client may ask the KDC for new individual keying material. For A Client may ask the KDC for new individual keying material. For
instance, this can be due to the expiration of such individual keying instance, this can be due to the expiration of such individual keying
material or to the exhaustion of Authenticated Encryption with material or to the exhaustion of Authenticated Encryption with
Associated Data (AEAD) nonces if an AEAD encryption algorithm is used Associated Data (AEAD) nonces if an AEAD encryption algorithm is used
for protecting communications in the group. An example of individual for protecting communications in the group. An example of individual
keying material can simply be an individual encryption key associated keying material can simply be an individual encryption key associated
with the Client. Hence, the Client may ask for a new individual with the Client. Hence, the Client may ask for a new individual
encryption key or for new input material to derive it. encryption key or for new input material to derive it.
To this end, the Client performs a Key Renewal Request-Response To this end, the Client performs a Key Renewal Request-Response
exchange with the KDC, i.e., it sends a CoAP PUT request to the /ace- exchange with the KDC, i.e., it sends a CoAP POST request to the
group/GROUPNAME/nodes/NODENAME endpoint at the KDC, which is /ace-group/GROUPNAME/nodes/NODENAME endpoint at the KDC, which is
formatted as defined in Section 4.8.1 and with the group identified formatted as defined in Section 4.8.1, where GROUPNAME identifies the
by GROUPNAME. group and NODENAME is the node name of the Client.
Figure 29 gives an overview of the exchange described above, while Figure 29 gives an overview of the exchange described above, while
Figure 30 shows an example. Figure 30 shows an example.
Client KDC Client KDC
| | | |
|---------------- Key Renewal Request: ---------------->| |---------------- Key Renewal Request: ---------------->|
| PUT /ace-group/GROUPNAME/nodes/NODENAME | | POST /ace-group/GROUPNAME/nodes/NODENAME |
| | | |
|<-------- Key Renewal Response: 2.04 (Changed) --------| |<-------- Key Renewal Response: 2.04 (Changed) --------|
| | | |
Figure 29: Message Flow of Key Renewal Request-Response Figure 29: Message Flow of Key Renewal Request-Response
Request: Request:
Header: PUT (Code=0.03) Header: POST (Code=0.02)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "nodes" Uri-Path: "nodes"
Uri-Path: "c101" Uri-Path: "c101"
Payload: -
Response: Response:
Header: Changed (Code=2.04) Header: Changed (Code=2.04)
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation, with "ind-key" being the Payload (in CBOR diagnostic notation, with "ind-key" being the
profile-specified label for individual keying material): profile-specified label for individual keying material):
{ {
"ind-key": h'b71acc28' "ind-key": h'b71acc28'
} }
Figure 30: Example of Key Renewal Request-Response Figure 30: Example of Key Renewal Request-Response
Note that there is a difference between the Key Renewal Request in Note that there is a difference between the Key Renewal Request in
this section and the Key Distribution Request in Section 4.8.1.1. this section and the Key Distribution Request in Section 4.8.1.1.
skipping to change at line 3378 skipping to change at line 3371
Request: Request:
Header: POST (Code=0.02) Header: POST (Code=0.02)
Uri-Host: "kdc.example.com" Uri-Host: "kdc.example.com"
Uri-Path: "ace-group" Uri-Path: "ace-group"
Uri-Path: "g1" Uri-Path: "g1"
Uri-Path: "nodes" Uri-Path: "nodes"
Uri-Path: "c101" Uri-Path: "c101"
Uri-Path: "cred" Uri-Path: "cred"
Content-Format: application/ace-groupcomm+cbor Content-Format: 261 (application/ace-groupcomm+cbor)
Payload (in CBOR diagnostic notation): Payload (in CBOR diagnostic notation):
{ {
/ client_cred / 5: h'a2026008a101a501020241fc20012158 / client_cred / 5: h'a2026008a101a501020241fc20012158
20bac5b11cad8f99f9c72b05cf4b9e26 20bac5b11cad8f99f9c72b05cf4b9e26
d244dc189f745228255a219a86d6a09e d244dc189f745228255a219a86d6a09e
ff22582020138bf82dc1b6d562be0fa5 ff22582020138bf82dc1b6d562be0fa5
4ab7804a3a64b6d72ccfed6b6fb6ed28 4ab7804a3a64b6d72ccfed6b6fb6ed28
bbfc117e', bbfc117e',
/ cnonce / 6: h'0446baefc56111bf', / cnonce / 6: h'0446baefc56111bf',
/ client_cred_verify / 24: h'e2aeafd40d69d19dfe6e52077c5d7ff4 / client_cred_verify / 24: h'e2aeafd40d69d19dfe6e52077c5d7ff4
e408282cbefb5d06cbf414af2e19d982 e408282cbefb5d06cbf414af2e19d982
ac45ac98b8544c908b4507de1e90b717 ac45ac98b8544c908b4507de1e90b717
c3d34816fe926a2b98f53afd2fa0f30a' c3d34816fe926a2b98f53afd2fa0f30a'
} }
Response: Response:
Header: Changed (Code=2.04) Header: Changed (Code=2.04)
Payload: -
Figure 33: Example of Authentication Credential Update Request- Figure 33: Example of Authentication Credential Update Request-
Response Response
Additionally, after updating its own authentication credential, a Additionally, after updating its own authentication credential, a
group member MAY send to the group a number of requests, including an group member MAY send to the group a number of requests, including an
identifier of the updated authentication credential, to notify other identifier of the updated authentication credential, to notify other
group members that they have to retrieve it. How this is done group members that they have to retrieve it. How this is done
depends on the group communication protocol used and therefore is depends on the group communication protocol used and therefore is
application profile specific (OPT13). application profile specific (OPT13).
skipping to change at line 3875 skipping to change at line 3867
* A Base IV is also included with the same size of the AEAD nonce * A Base IV is also included with the same size of the AEAD nonce
considered by the encryption algorithm to use. considered by the encryption algorithm to use.
First, the KDC computes a COSE_Encrypt0 object as follows. First, the KDC computes a COSE_Encrypt0 object as follows.
* The encryption key to use is selected from the administrative * The encryption key to use is selected from the administrative
keying material, as defined by the rekeying scheme used in the keying material, as defined by the rekeying scheme used in the
group. group.
* The plaintext is the actual data content of the present rekeying * The plaintext is the actual data content of the current rekeying
message. message.
* The Additional Authenticated Data (AAD) is empty unless otherwise * The Additional Authenticated Data (AAD) is empty unless otherwise
specified by separate documents profiling the use of the group specified by separate documents profiling the use of the group
rekeying scheme. rekeying scheme.
* Since the KDC is the only sender of rekeying messages, the AEAD * Since the KDC is the only sender of rekeying messages, the AEAD
nonce can be computed as follows, where NONCE_SIZE is the size in nonce can be computed as follows, where NONCE_SIZE is the size in
bytes of the AEAD nonce. Separate documents profiling the use of bytes of the AEAD nonce. Separate documents profiling the use of
the group rekeying scheme may define alternative ways to compute the group rekeying scheme may define alternative ways to compute
skipping to change at line 3916 skipping to change at line 3908
encryption key, AEAD nonce). For example, this includes not using encryption key, AEAD nonce). For example, this includes not using
the same encryption key from the administrative keying material the same encryption key from the administrative keying material
more than 2^16 times during the same rekeying instance. more than 2^16 times during the same rekeying instance.
* The protected header of the COSE_Encrypt0 object MUST include the * The protected header of the COSE_Encrypt0 object MUST include the
following parameters. following parameters.
- 'alg': specifying the used encryption algorithm. - 'alg': specifying the used encryption algorithm.
- 'kid': specifying the identifier of the encryption key from the - 'kid': specifying the identifier of the encryption key from the
administrative keying material used to protect the present administrative keying material used to protect the current
rekeying message. rekeying message.
* The unprotected header of the COSE_Encrypt0 object MUST include * The unprotected header of the COSE_Encrypt0 object MUST include
the 'Partial IV' parameter with the value of the Partial IV the 'Partial IV' parameter with the value of the Partial IV
computed above. computed above.
In order to ensure source authentication, each rekeying message In order to ensure source authentication, each rekeying message
protected with the administrative keying material MUST be signed by protected with the administrative keying material MUST be signed by
the KDC. To this end, the KDC computes a countersignature of the the KDC. To this end, the KDC computes a countersignature of the
COSE_Encrypt0 object, as described in Sections 3.2 and 3.3 of COSE_Encrypt0 object, as described in Sections 3.2 and 3.3 of
skipping to change at line 4314 skipping to change at line 4306
+=======+=============================================+ +=======+=============================================+
| 0 | Operation permitted only to group members | | 0 | Operation permitted only to group members |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 1 | Request inconsistent with the current roles | | 1 | Request inconsistent with the current roles |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 2 | Authentication credential incompatible with | | 2 | Authentication credential incompatible with |
| | the group configuration | | | the group configuration |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 3 | Invalid proof-of-possession evidence | | 3 | Invalid proof-of-possession evidence |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 4 | No available node identifiers | | 4 | No available individual keying material |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 5 | Group membership terminated | | 5 | Group membership terminated |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
| 6 | Group deleted | | 6 | Group deleted |
+-------+---------------------------------------------+ +-------+---------------------------------------------+
Table 6: ACE Groupcomm Error Identifiers Table 6: ACE Groupcomm Error Identifiers
If a Client supports the problem-details format [RFC9290] and the If a Client supports the problem-details format [RFC9290] and the
Custom Problem Detail entry 'ace-groupcomm-error' defined in Custom Problem Detail entry 'ace-groupcomm-error' defined in
skipping to change at line 5210 skipping to change at line 5202
REQ1: Specify the format and encoding of scope. This includes REQ1: Specify the format and encoding of scope. This includes
defining the set of possible roles and their identifiers, as defining the set of possible roles and their identifiers, as
well as the corresponding encoding to use in the scope well as the corresponding encoding to use in the scope
entries according to the used scope format (see Section 3.1). entries according to the used scope format (see Section 3.1).
REQ2: If scope uses AIF, register its specific instance of "Toid" REQ2: If scope uses AIF, register its specific instance of "Toid"
and "Tperm" as media type parameters and a corresponding and "Tperm" as media type parameters and a corresponding
Content-Format, as per the guidelines in [RFC9237]. Content-Format, as per the guidelines in [RFC9237].
REQ3: If used, specify the acceptable values for the 'sign_alg' REQ3: If used, specify the acceptable values for the 'sign_alg'
parameter (see Section 3.3). parameter (see Section 3.3.1).
REQ4: If used, specify the acceptable values and structures for the REQ4: If used, specify the acceptable values and structure for the
'sign_parameters' parameter (see Section 3.3). 'sign_parameters' parameter (see Section 3.3.1).
REQ5: If used, specify the acceptable values and structures for the REQ5: If used, specify the acceptable values and structure for the
'sign_key_parameters' parameter (see Section 3.3). 'sign_key_parameters' parameter (see Section 3.3.1).
REQ6: Specify the acceptable formats for authentication credentials REQ6: Specify the acceptable formats for authentication credentials
and, if applicable, the acceptable values for the 'cred_fmt' and, if applicable, the acceptable values for the 'cred_fmt'
parameter (see Section 3.3). parameter (see Section 3.3.1).
REQ7: If the value of the GROUPNAME URI path and the group name in REQ7: If the value of the GROUPNAME URI path and the group name in
the access token scope ('gname' in Section 3.1) are not the access token scope ('gname' in Section 3.1) are not
required to coincide, specify the mechanism to map the required to coincide, specify the mechanism to map the
GROUPNAME value in the URI to the group name (see GROUPNAME value in the URI to the group name (see
Section 4.1). Section 4.1).
REQ8: Define whether the KDC has an authentication credential as REQ8: Define whether the KDC has an authentication credential as
required for the correct group operation and if this has to required for the correct group operation and if this has to
be provided through the 'kdc_cred' parameter (see be provided through the 'kdc_cred' parameter (see Sections
Section 4.3.1). 4.1 and 4.3.1).
REQ9: Specify if any part of the KDC interface as defined in this REQ9: Specify if any part of the KDC interface as defined in this
document is not supported by the KDC (see Section 4.1). document is not supported by the KDC (see Section 4.1).
REQ10: Register a Resource Type for the group-membership resources, REQ10: Register a Resource Type for the group-membership resources,
which is used to discover the correct URL for sending a Join which is used to discover the correct URL for sending a Join
Request to the KDC (see Section 4.1). Request to the KDC (see Section 4.1).
REQ11: Define what specific actions (e.g., CoAP methods) are allowed REQ11: Define what specific actions (e.g., CoAP methods) are allowed
on each resource that are accessible through the KDC on each resource that are accessible through the KDC
skipping to change at line 5280 skipping to change at line 5272
conveyed in the 'key' parameter (see Section 4.3.1). conveyed in the 'key' parameter (see Section 4.3.1).
REQ18: Specify the acceptable values of the 'gkty' parameter (see REQ18: Specify the acceptable values of the 'gkty' parameter (see
Section 4.3.1). For each of them, register a corresponding Section 4.3.1). For each of them, register a corresponding
entry in the "ACE Groupcomm Key Types" IANA registry if such entry in the "ACE Groupcomm Key Types" IANA registry if such
an entry does not exist already. an entry does not exist already.
REQ19: Specify and register the application profile identifier (see REQ19: Specify and register the application profile identifier (see
Section 4.3.1). Section 4.3.1).
REQ20: If used, specify the format, content, and default values of REQ20: If used, specify the format and default values of the entries
the entries of the CBOR map to include in the of the CBOR map to include in the 'group_policies' parameter
'group_policies' parameter (see Section 4.3.1). (see Section 4.3.1).
REQ21: Specify the approaches used to compute and verify the PoP REQ21: Specify the approaches used to compute and verify the PoP
evidence to include in the 'kdc_cred_verify' parameter and evidence to include in the 'kdc_cred_verify' parameter and
which of those approaches is used in which case (see Sections which of those approaches is used in which case (see Sections
4.3.1 and 4.5.1). If external signature verifiers are 4.3.1 and 4.5.1). If external signature verifiers are
supported, specify how those provide a nonce to the KDC to be supported, specify how those provide a nonce to the KDC to be
used for computing the PoP evidence (see Section 4.5.1). used for computing the PoP evidence (see Section 4.5.1).
REQ22: Specify the communication protocol that members of the group REQ22: Specify the communication protocol that members of the group
use to communicate with each other (e.g., CoAP for group use to communicate with each other (e.g., CoAP for group
skipping to change at line 5439 skipping to change at line 5431
In particular, each 'sign_capab' array has the same format and In particular, each 'sign_capab' array has the same format and
value of the COSE capabilities array for the algorithm capability value of the COSE capabilities array for the algorithm capability
specified in 'sign_parameters'[i]. specified in 'sign_parameters'[i].
Such a COSE capabilities array is currently defined for the Such a COSE capabilities array is currently defined for the
algorithm capability COSE key type in the "Capabilities" column of algorithm capability COSE key type in the "Capabilities" column of
the "COSE Key Types" registry [COSE.Key.Types]. the "COSE Key Types" registry [COSE.Key.Types].
sign_info_entry = sign_info_entry =
[ [
id : gname / [ + gname ], id : gname / [+ gname],
sign_alg : int / tstr, sign_alg : int / tstr,
sign_parameters : [ * alg_capab : any ], sign_parameters : [* alg_capab : any],
* sign_capab : [ * capab : any ], * sign_capab : [* capab : any],
cred_fmt : int / null cred_fmt : int / null
] ]
gname = tstr gname = tstr
Figure 38: 'sign_info_entry' with a General Format Figure 38: 'sign_info_entry' with a General Format
Acknowledgments Acknowledgments
The following individuals were helpful in shaping this document: The following individuals were helpful in shaping this document:
skipping to change at line 5470 skipping to change at line 5462
The work on this document has been partly supported by the Sweden's The work on this document has been partly supported by the Sweden's
Innovation Agency VINNOVA and the Celtic-Next project CRITISEC, by Innovation Agency VINNOVA and the Celtic-Next project CRITISEC, by
the H2020 project SIFIS-Home (Grant agreement 952652), and by the the H2020 project SIFIS-Home (Grant agreement 952652), and by the
EIT-Digital High Impact Initiative ACTIVE. EIT-Digital High Impact Initiative ACTIVE.
Authors' Addresses Authors' Addresses
Francesca Palombini Francesca Palombini
Ericsson AB Ericsson AB
Torshamnsgatan 23 Torshamnsgatan 23
SE-16440 Kista, Stockholm SE-164 40 Kista
Sweden Sweden
Email: francesca.palombini@ericsson.com Email: francesca.palombini@ericsson.com
Marco Tiloca Marco Tiloca
RISE AB RISE AB
Isafjordsgatan 22 Isafjordsgatan 22
SE-164 40 Kista SE-164 40 Kista
Sweden Sweden
Email: marco.tiloca@ri.se Email: marco.tiloca@ri.se
 End of changes. 68 change blocks. 
101 lines changed or deleted 93 lines changed or added

This html diff was produced by rfcdiff 1.48.