draft-ietf-ace-key-groupcomm-oscore-04.txt | draft-ietf-ace-key-groupcomm-oscore-05.txt | |||
---|---|---|---|---|
ACE Working Group M. Tiloca | ACE Working Group M. Tiloca | |||
Internet-Draft RISE AB | Internet-Draft RISE AB | |||
Intended status: Standards Track J. Park | Intended status: Standards Track J. Park | |||
Expires: July 18, 2020 Universitaet Duisburg-Essen | Expires: September 10, 2020 Universitaet Duisburg-Essen | |||
F. Palombini | F. Palombini | |||
Ericsson AB | Ericsson AB | |||
January 15, 2020 | March 09, 2020 | |||
Key Management for OSCORE Groups in ACE | Key Management for OSCORE Groups in ACE | |||
draft-ietf-ace-key-groupcomm-oscore-04 | draft-ietf-ace-key-groupcomm-oscore-05 | |||
Abstract | Abstract | |||
This specification defines an application profile of the ACE | This specification defines an application profile of the ACE | |||
framework for Authentication and Authorization, to request and | framework for Authentication and Authorization, to request and | |||
provision keying material in group communication scenarios that are | provision keying material in group communication scenarios that are | |||
based on CoAP and secured with Group Object Security for Constrained | based on CoAP and secured with Group Object Security for Constrained | |||
RESTful Environments (OSCORE). This application profile delegates | RESTful Environments (OSCORE). This application profile delegates | |||
the authentication and authorization of Clients that join an OSCORE | the authentication and authorization of Clients that join an OSCORE | |||
group through a Resource Server acting as Group Manager for that | group through a Resource Server acting as Group Manager for that | |||
skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on July 18, 2020. | This Internet-Draft will expire on September 10, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. Overview of the Joining Process . . . . . . . . . . . . . 5 | 2.1. Overview of the Joining Process . . . . . . . . . . . . . 5 | |||
2.2. Overview of the Group Rekeying Process . . . . . . . . . 6 | 2.2. Overview of the Group Rekeying Process . . . . . . . . . 6 | |||
3. Joining Node to Authorization Server . . . . . . . . . . . . 6 | 3. Joining Node to Authorization Server . . . . . . . . . . . . 6 | |||
3.1. Authorization Request . . . . . . . . . . . . . . . . . . 6 | 3.1. Authorization Request . . . . . . . . . . . . . . . . . . 6 | |||
3.2. Authorization Response . . . . . . . . . . . . . . . . . 7 | 3.2. Authorization Response . . . . . . . . . . . . . . . . . 7 | |||
4. Joining a Group . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Interface at the Group Manager . . . . . . . . . . . . . . . 7 | |||
4.1. Token Post . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. GET Handler . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2. Sending the Joining Request . . . . . . . . . . . . . . . 8 | 5. Joining a Group . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.1. Value of the N_S Challenge . . . . . . . . . . . . . 9 | 5.1. Token Post . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.3. Processing the Joining Request . . . . . . . . . . . . . 10 | 5.2. Sending the Joining Request . . . . . . . . . . . . . . . 9 | |||
4.4. Joining Response . . . . . . . . . . . . . . . . . . . . 11 | 5.2.1. Value of the N_S Challenge . . . . . . . . . . . . . 10 | |||
5. Public Keys of Joining Nodes . . . . . . . . . . . . . . . . 14 | 5.3. Processing the Joining Request . . . . . . . . . . . . . 11 | |||
6. Retrieval of Updated Keying Material . . . . . . . . . . . . 15 | 5.4. Joining Response . . . . . . . . . . . . . . . . . . . . 12 | |||
6.1. Retrieval of Group Keying Material . . . . . . . . . . . 16 | 6. Public Keys of Joining Nodes . . . . . . . . . . . . . . . . 15 | |||
6.2. Retrieval of Group Keying Material and Sender ID . . . . 16 | 7. Retrieval of Updated Keying Material . . . . . . . . . . . . 17 | |||
7. Retrieval of New Keying Material . . . . . . . . . . . . . . 16 | 7.1. Retrieval of Group Keying Material . . . . . . . . . . . 17 | |||
8. Retrieval of Public Keys of Group Members . . . . . . . . . . 17 | 7.2. Retrieval of Group Keying Material and Sender ID . . . . 17 | |||
9. Retrieval of Group Policies . . . . . . . . . . . . . . . . . 18 | 8. Retrieval of New Keying Material . . . . . . . . . . . . . . 18 | |||
10. Retrieval of Keying Material Version . . . . . . . . . . . . 18 | 9. Retrieval of Public Keys of Group Members . . . . . . . . . . 19 | |||
11. Request to Leave the Group . . . . . . . . . . . . . . . . . 18 | 10. Update of Public Key . . . . . . . . . . . . . . . . . . . . 19 | |||
12. Removal of a Group Member . . . . . . . . . . . . . . . . . . 18 | 11. Retrieval of Group Policies . . . . . . . . . . . . . . . . . 20 | |||
13. Group Rekeying Process . . . . . . . . . . . . . . . . . . . 19 | 12. Retrieval of Keying Material Version . . . . . . . . . . . . 20 | |||
14. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 13. Retrieval of Group Status . . . . . . . . . . . . . . . . . . 21 | |||
15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 14. Request to Leave the Group . . . . . . . . . . . . . . . . . 21 | |||
15.1. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 21 | 15. Removal of a Group Member . . . . . . . . . . . . . . . . . . 21 | |||
15.2. OSCORE Security Context Parameters Registry . . . . . . 22 | 16. Group Rekeying Process . . . . . . . . . . . . . . . . . . . 22 | |||
15.3. ACE Groupcomm Profile Registry . . . . . . . . . . . . . 23 | 17. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
15.4. Sequence Number Synchronization Method Registry . . . . 23 | 17.1. Management of OSCORE Groups . . . . . . . . . . . . . . 24 | |||
15.5. ACE Groupcomm Parameters Registry . . . . . . . . . . . 24 | 17.2. Size of Nonces for Signature Challenge . . . . . . . . . 25 | |||
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
16.1. Normative References . . . . . . . . . . . . . . . . . . 24 | 18.1. ACE Groupcomm Profile Registry . . . . . . . . . . . . . 26 | |||
16.2. Informative References . . . . . . . . . . . . . . . . . 26 | 18.2. ACE Groupcomm Key Registry . . . . . . . . . . . . . . . 27 | |||
Appendix A. Profile Requirements . . . . . . . . . . . . . . . . 27 | 18.3. OSCORE Security Context Parameters Registry . . . . . . 27 | |||
Appendix B. Document Updates . . . . . . . . . . . . . . . . . . 29 | 18.4. Sequence Number Synchronization Method Registry . . . . 28 | |||
B.1. Version -03 to -04 . . . . . . . . . . . . . . . . . . . 29 | 18.5. ACE Groupcomm Parameters Registry . . . . . . . . . . . 29 | |||
B.2. Version -02 to -03 . . . . . . . . . . . . . . . . . . . 29 | 18.6. TLS Exporter Label Registry . . . . . . . . . . . . . . 29 | |||
B.3. Version -01 to -02 . . . . . . . . . . . . . . . . . . . 30 | 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
B.4. Version -00 to -01 . . . . . . . . . . . . . . . . . . . 31 | 19.1. Normative References . . . . . . . . . . . . . . . . . . 29 | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 19.2. Informative References . . . . . . . . . . . . . . . . . 31 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | Appendix A. Profile Requirements . . . . . . . . . . . . . . . . 32 | |||
Appendix B. Document Updates . . . . . . . . . . . . . . . . . . 34 | ||||
B.1. Version -04 to -05 . . . . . . . . . . . . . . . . . . . 34 | ||||
B.2. Version -03 to -04 . . . . . . . . . . . . . . . . . . . 35 | ||||
B.3. Version -02 to -03 . . . . . . . . . . . . . . . . . . . 35 | ||||
B.4. Version -01 to -02 . . . . . . . . . . . . . . . . . . . 36 | ||||
B.5. Version -00 to -01 . . . . . . . . . . . . . . . . . . . 37 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
1. Introduction | 1. Introduction | |||
Object Security for Constrained RESTful Environments (OSCORE) | Object Security for Constrained RESTful Environments (OSCORE) | |||
[RFC8613] is a method for application-layer protection of the | [RFC8613] is a method for application-layer protection of the | |||
Constrained Application Protocol (CoAP) [RFC7252], using CBOR Object | Constrained Application Protocol (CoAP) [RFC7252], using CBOR Object | |||
Signing and Encryption (COSE) [RFC8152] and enabling end-to-end | Signing and Encryption (COSE) [RFC8152] and enabling end-to-end | |||
security of CoAP payload and options. | security of CoAP payload and options. | |||
As described in [I-D.ietf-core-oscore-groupcomm], Group OSCORE is | As described in [I-D.ietf-core-oscore-groupcomm], Group OSCORE is | |||
skipping to change at page 4, line 33 ¶ | skipping to change at page 4, line 41 ¶ | |||
These include the concept of Group Manager, as the entity | These include the concept of Group Manager, as the entity | |||
responsible for a set of groups where communications are secured | responsible for a set of groups where communications are secured | |||
with Group OSCORE. In this specification, the Group Manager acts | with Group OSCORE. In this specification, the Group Manager acts | |||
as Resource Server. | as Resource Server. | |||
Additionally, this document makes use of the following terminology. | Additionally, this document makes use of the following terminology. | |||
o Group name is used as a synonym for group identifier in | o Group name is used as a synonym for group identifier in | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
o GROUPNAME and NODENAME are used to indicate the variant parts of | ||||
the resource endpoint, i.e. "gid" and "node" URI path in | ||||
[I-D.ietf-ace-key-groupcomm]. | ||||
o Requester: member of an OSCORE group that sends request messages | o Requester: member of an OSCORE group that sends request messages | |||
to other members of the group. | to other members of the group. | |||
o Responder: member of an OSCORE group that receives request | o Responder: member of an OSCORE group that receives request | |||
messages from other members of the group. A responder may reply | messages from other members of the group. A responder may reply | |||
back, by sending a response message to the requester which has | back, by sending a response message to the requester which has | |||
sent the request message. | sent the request message. | |||
o Monitor: member of an OSCORE group that is configured as responder | o Monitor: member of an OSCORE group that is configured as responder | |||
and never replies back to requesters after receiving request | and never replies back to requesters after receiving request | |||
skipping to change at page 5, line 47 ¶ | skipping to change at page 5, line 49 ¶ | |||
authentication. Note that it is expected that in the commonly | authentication. Note that it is expected that in the commonly | |||
referred base-case of this specification, the transport profile to | referred base-case of this specification, the transport profile to | |||
use is pre-configured and well-known to nodes participating in | use is pre-configured and well-known to nodes participating in | |||
constrained applications. | constrained applications. | |||
2.1. Overview of the Joining Process | 2.1. Overview of the Joining Process | |||
A node performs the steps described in Section 4.2 of | A node performs the steps described in Section 4.2 of | |||
[I-D.ietf-ace-key-groupcomm] in order to join an OSCORE group. The | [I-D.ietf-ace-key-groupcomm] in order to join an OSCORE group. The | |||
format and processing of messages exchanged among the participants | format and processing of messages exchanged among the participants | |||
are further specified in Section 3 and Section 4 of this document. | are further specified in Section 3 and Section 5 of this document. | |||
2.2. Overview of the Group Rekeying Process | 2.2. Overview of the Group Rekeying Process | |||
If the application requires backward and forward security, the Group | If the application requires backward and forward security, the Group | |||
Manager MUST generate new security parameters and group keying | Manager MUST generate new keying material and distribute it to the | |||
material, and distribute them to the group (rekeying) upon membership | group (rekeying) upon membership changes. | |||
changes. | ||||
That is, the group is rekeyed when a node joins the group as a new | That is, the group is rekeyed when a node joins the group as a new | |||
member, or after a current member leaves the group. By doing so, a | member, or after a current member leaves the group. By doing so, a | |||
joining node cannot access communications in the group prior its | joining node cannot access communications in the group prior its | |||
joining, while a leaving node cannot access communications in the | joining, while a leaving node cannot access communications in the | |||
group after its leaving. | group after its leaving. | |||
Parameters and group keying material include a new Group Identifier | The keying material distributed through a group rekeying MUST include | |||
(Gid) for the group and a new Master Secret for the OSCORE Common | a new Group Identifier (Gid) for the group and a new value for the | |||
Security Context of that group (see Section 2 of | Master Secret parameter of the OSCORE Common Security Context of that | |||
[I-D.ietf-core-oscore-groupcomm]). Once completed a group rekeying, | group (see Section 2 of [I-D.ietf-core-oscore-groupcomm]). Also, it | |||
the GM MUST increment the version number of the group keying | MAY include a new value for the Master Salt parameter of the OSCORE | |||
material. | Common Security Context of that group. | |||
Upon generating the new group keying material and before starting its | ||||
distribution, the Group Manager MUST increment the version number of | ||||
the group keying material. When rekeying a group, the Group Manager | ||||
MUST preserve the current value of the Sender ID of each member in | ||||
that group. | ||||
The Group Manager MUST support the Group Rekeying Process described | The Group Manager MUST support the Group Rekeying Process described | |||
in Section 13. Future application profiles may define alternative | in Section 16. Future application profiles may define alternative | |||
message formats and distribution schemes to perform group rekeying. | message formats and distribution schemes to perform group rekeying. | |||
3. Joining Node to Authorization Server | 3. Joining Node to Authorization Server | |||
This section describes how the joining node interacts with the AS in | This section describes how the joining node interacts with the AS in | |||
order to be authorized to join an OSCORE group under a given Group | order to be authorized to join an OSCORE group under a given Group | |||
Manager. In particular, it considers a joining node that intends to | Manager. In particular, it considers a joining node that intends to | |||
contact that Group Manager for the first time. | contact that Group Manager for the first time. | |||
The message exchange between the joining node and the AS consists of | The message exchange between the joining node and the AS consists of | |||
skipping to change at page 6, line 49 ¶ | skipping to change at page 7, line 5 ¶ | |||
defined in [I-D.ietf-ace-key-groupcomm] applies, and only additions | defined in [I-D.ietf-ace-key-groupcomm] applies, and only additions | |||
or modifications to that specification are defined here. | or modifications to that specification are defined here. | |||
3.1. Authorization Request | 3.1. Authorization Request | |||
The Authorization Request message defined in Section 3.1 of | The Authorization Request message defined in Section 3.1 of | |||
[I-D.ietf-ace-key-groupcomm], with the following additions: | [I-D.ietf-ace-key-groupcomm], with the following additions: | |||
o The 'scope' parameter MUST be present. | o The 'scope' parameter MUST be present. | |||
o The group name of the OSCORE group to join under the Group Manager | * The group name of the OSCORE group to join under the Group | |||
is encoded as a CBOR text string. | Manager is encoded as a CBOR text string (REQ1). | |||
o The role in the OSCORE group to join is encoded as a text string. | * Accepted values for role identifiers in the OSCORE group to | |||
Accepted values of roles are: "requester", "responder", and | join are: "requester", "responder", and "monitor" (REQ2). | |||
"monitor". Possible combinations are: ["requester" , | Possible combinations are: ["requester" , "responder"]; | |||
"responder"]; ["requester" , "monitor"]. | ["requester" , "monitor"]. Each role identifier MUST be | |||
encoded as a CBOR integer (REQ2), by using for abbreviation the | ||||
values specified in Figure 1 (OPT7). | ||||
+-----------+------------+ | ||||
| Name | CBOR Value | | ||||
+-----------+------------+ | ||||
| requester | TBD8 | | ||||
| responder | TBD9 | | ||||
| monitor | TBD10 | | ||||
+-----------+------------+ | ||||
Figure 1: CBOR Abbreviations for Role Identifiers in the Group | ||||
o The 'audience' parameter MUST be present. | o The 'audience' parameter MUST be present. | |||
3.2. Authorization Response | 3.2. Authorization Response | |||
The Authorization Response message defined in Section 3.2 of | The Authorization Response message defined in Section 3.2 of | |||
[I-D.ietf-ace-key-groupcomm], with the following additions: | [I-D.ietf-ace-key-groupcomm], with the following additions: | |||
o The AS MUST include the 'exp' parameter. Other means for the AS | o The AS MUST include the 'expires_in' parameter. Other means for | |||
to specify the lifetime of Access Tokens are out of the scope of | the AS to specify the lifetime of Access Tokens are out of the | |||
this specification. | scope of this specification. | |||
o The AS MUST include the 'scope' parameter, when the value included | o The AS MUST include the 'scope' parameter, when the value included | |||
in the Access Token differs from the one specified by the joining | in the Access Token differs from the one specified by the joining | |||
node in the request. In such a case, the second element of | node in the request. In such a case, the second element of each | |||
'scope' MUST be present and includes the role or CBOR array of | scope entry MUST be present, and includes the role or CBOR array | |||
roles that the joining node is actually authorized to take in the | of roles that the joining node is actually authorized to take in | |||
OSCORE group, encoded as specified in Section 3.1 of this | the OSCORE group for that scope entry, encoded as specified in | |||
document. | Section 3.1 of this document. | |||
4. Joining a Group | 4. Interface at the Group Manager | |||
The Group Manager provides the interface defined in Section 4.1 of | ||||
[I-D.ietf-ace-key-groupcomm], with the following additional resource: | ||||
o /group-manager/GROUPNAME/active: this sub-resource is fixed and | ||||
supports the GET method, whose handler is defined in Section 4.1. | ||||
4.1. GET Handler | ||||
The handler expects a GET request. | ||||
The handler verifies that the group identifier of the /group- | ||||
manager/GROUPNAME/active path is a subset of the 'scope' stored in | ||||
the Access Token associated to the requesting client. If | ||||
verification fails, the Group Manager MUST respond with a 4.01 | ||||
(Unauthorized) error message. | ||||
If verification succeeds, the handler returns a 2.05 (Content) | ||||
message containing the CBOR simple value True if the group is | ||||
currently active, or the CBOR simple value False otherwise. The | ||||
group is considered active if it is set to allow new members to join, | ||||
and if communication within the group is expected. | ||||
The method to set the current group status, i.e. active or inactive, | ||||
is out of the scope of this specification, and is defined for the | ||||
administrator interface of the Group Manager specified in | ||||
[I-D.tiloca-ace-oscore-gm-admin]. | ||||
5. Joining a Group | ||||
The following subsections describe the interactions between the | The following subsections describe the interactions between the | |||
joining node and the Group Manager, i.e. the sending of the Access | joining node and the Group Manager, i.e. the sending of the Access | |||
Token and the Request-Response exchange to join the OSCORE group. | Token and the Request-Response exchange to join the OSCORE group. | |||
The message exchange between the joining node and the KDC consists of | The message exchange between the joining node and the KDC consists of | |||
the messages defined in Section 3.3 and 4.2 of | the messages defined in Section 3.3 and 4.2 of | |||
[I-D.ietf-ace-key-groupcomm]. Note that what is defined in | [I-D.ietf-ace-key-groupcomm]. Note that what is defined in | |||
[I-D.ietf-ace-key-groupcomm] applies, and only additions or | [I-D.ietf-ace-key-groupcomm] applies, and only additions or | |||
modifications to that specification are defined here. | modifications to that specification are defined here. | |||
4.1. Token Post | 5.1. Token Post | |||
The Token post exchange is defined in Section 3.3 of | The Token post exchange is defined in Section 3.3 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
Additionally to what defined in [I-D.ietf-ace-key-groupcomm], the | Additionally to what defined in [I-D.ietf-ace-key-groupcomm], the | |||
following applies. | following applies. | |||
o The 'rsnonce' parameter contains a dedicated 8-byte nonce N_S | o The 'rsnonce' parameter contains a dedicated nonce N_S generated | |||
generated by the Group Manager. The joining node may use this | by the Group Manager. For the N_S value, it is RECOMMENDED to use | |||
nonce in order to prove the possession of its own private key, | a 8-byte long random nonce. The joining node may use this nonce | |||
upon joining the group (see Section 4.2). | in order to prove the possession of its own private key, upon | |||
joining the group (see Section 5.2). | ||||
o If 'sign_info' is present in the response: | o If 'sign_info' is present in the response: | |||
TODO: have 'sign_info' as an array of arrays, if 'scope' in the | ||||
Access Token covers multiple groups/topics. | ||||
* 'sign_alg' takes value from Tables 5 and 6 of [RFC8152]. | * 'sign_alg' takes value from Tables 5 and 6 of [RFC8152]. | |||
* 'sign_parameters' takes values from the "Counter Signature | * 'sign_parameters' takes values from the "Counter Signature | |||
Parameters" Registry (see Section 9.1 of | Parameters" Registry (see Section 11.1 of | |||
[I-D.ietf-core-oscore-groupcomm]). Its structure depends on | [I-D.ietf-core-oscore-groupcomm]). Its structure depends on | |||
the value of 'sign_alg'. If no parameters of the counter | the value of 'sign_alg'. If no parameters of the counter | |||
signature algorithm are specified, 'sign_parameters' MUST be | signature algorithm are specified, 'sign_parameters' MUST be | |||
encoding the CBOR simple value Null. | encoding the CBOR simple value Null. | |||
* 'sign_key_parameters' takes values from the "Counter Signature | * 'sign_key_parameters' takes values from the "Counter Signature | |||
Key Parameters" Registry (see Section 9.2 of | Key Parameters" Registry (see Section 11.2 of | |||
[I-D.ietf-core-oscore-groupcomm]). Its structure depends on | [I-D.ietf-core-oscore-groupcomm]). Its structure depends on | |||
the value of 'sign_alg'. If no parameters of the key used with | the value of 'sign_alg'. If no parameters of the key used with | |||
the counter signature algorithm are specified, | the counter signature algorithm are specified, | |||
'sign_key_parameters' MUST be encoding the CBOR simple value | 'sign_key_parameters' MUST be encoding the CBOR simple value | |||
Null. | Null. | |||
* 'pub_key_enc' takes value 1 ("COSE_Key") from the 'Confirmation | TODO: have 'pub_key_enc' as an array of arrays, if 'scope' in the | |||
Key' column of the "CWT Confirmation Method" Registry defined | Access Token covers multiple groups/topics. | |||
in [I-D.ietf-ace-cwt-proof-of-possession], so indicating that | ||||
public keys in the OSCORE group are encoded as COSE Keys | ||||
[RFC8152]. Future specifications may define additional values | ||||
for this parameter. | ||||
Note that, other than through the above parameters as defined in | o If 'pub_key_enc' is present in the response, it takes value 1 | |||
Section 3.3 of [I-D.ietf-ace-key-groupcomm], the joining node MAY | ("COSE_Key") from the 'Confirmation Key' column of the "CWT | |||
have previously retrieved this information by other means, e.g. by | Confirmation Method" Registry defined in | |||
using the approach described in | [I-D.ietf-ace-cwt-proof-of-possession], so indicating that public | |||
[I-D.tiloca-core-oscore-discovery]. | keys in the OSCORE group are encoded as COSE Keys [RFC8152]. | |||
Future specifications may define additional values for this | ||||
parameter. | ||||
Note that, other than through the above parameters as defined in | ||||
Section 3.3 of [I-D.ietf-ace-key-groupcomm], the joining node MAY | ||||
have previously retrieved this information by other means, e.g. by | ||||
using the approach described in [I-D.tiloca-core-oscore-discovery]. | ||||
Additionally, if allowed by the used transport profile of ACE, the | Additionally, if allowed by the used transport profile of ACE, the | |||
joining node may instead provide the Access Token to the Group | joining node may instead provide the Access Token to the Group | |||
Manager by other means, e.g. during a secure session establishment | Manager by other means, e.g. during a secure session establishment | |||
(see Section 3.3.1 of [I-D.ietf-ace-dtls-authorize]). | (see Section 3.3.1 of [I-D.ietf-ace-dtls-authorize]). | |||
4.2. Sending the Joining Request | 5.2. Sending the Joining Request | |||
The joining node requests to join the OSCORE group, by sending a | The joining node requests to join the OSCORE group, by sending a | |||
Joining Request message to the related group-membership resource at | Joining Request message to the related group-membership resource at | |||
the Group Manager, as per Section 4.2 of | the Group Manager, as per Section 4.2 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
Additionally to what defined in [I-D.ietf-ace-key-groupcomm], the | Additionally to what defined in [I-D.ietf-ace-key-groupcomm], the | |||
following applies. | following applies. | |||
o The string "group-oscore" is used instead of "ace-group" (see | o The string "group-oscore" is used instead of "ace-group" (see | |||
Section 4.1 of [I-D.ietf-ace-key-groupcomm]) as the top level path | Section 4.1 of [I-D.ietf-ace-key-groupcomm]) as the top level path | |||
to the group-membership resource. The url-path /group-oscore/ is | to the group-membership resource. The url-path /group-oscore/ is | |||
a default name of this specifications: implementations are not | a default name of this specifications: implementations are not | |||
required to use this name, and can define their own instead. | required to use this name, and can define their own instead. | |||
o The 'scope' parameter MUST be present. | o The 'scope' parameter MUST be present. | |||
o The 'get_pub_keys' parameter is present only if the joining node | o The 'get_pub_keys' parameter is present only if the joining node | |||
wants to retrieve the public keys of the group members from the | wants to retrieve the public keys of the group members from the | |||
Group Manager during the joining process (see Section 5). | Group Manager during the joining process (see Section 6). | |||
Otherwise, this parameter MUST NOT be present. | Otherwise, this parameter MUST NOT be present. | |||
o 'cnonce' contains a dedicated 8-byte nonce N_C generated by the | o 'cnonce' contains a dedicated nonce N_C generated by the joining | |||
joining node. | node. For the N_C value, it is RECOMMENDED to use a 8-byte long | |||
random nonce. | ||||
o The signature encoded in the 'client_cred_verify' parameter is | o The signature encoded in the 'client_cred_verify' parameter is | |||
computed by the joining node by using the same private key and | computed by the joining node by using the same private key and | |||
countersignature algorithm it intends to use for signing messages | countersignature algorithm it intends to use for signing messages | |||
in the OSCORE group. Moreover, N_S is as defined in | in the OSCORE group. Moreover, N_S is as defined in | |||
Section 4.2.1. | Section 5.2.1. | |||
4.2.1. Value of the N_S Challenge | 5.2.1. Value of the N_S Challenge | |||
The N_S challenge takes one of the following values. | The N_S challenge takes one of the following values. | |||
1. If the joining node has posted the Access Token to the /authz- | 1. If the joining node has posted the Access Token to the /authz- | |||
info endpoint of the Group Manager as in Section 4.1, N_S takes | info endpoint of the Group Manager as in Section 5.1, N_S takes | |||
the same value of the 'rsnonce' parameter in the 2.01 (Created) | the same value of the 'rsnonce' parameter in the 2.01 (Created) | |||
response to the Token POST. | response to the Token POST. | |||
2. If the Token posting has relied on the DTLS profile of ACE | 2. If the Token posting has relied on the DTLS profile of ACE | |||
[I-D.ietf-ace-dtls-authorize] and the joining node included the | [I-D.ietf-ace-dtls-authorize] and the joining node included the | |||
Access Token as content of the "psk_identity" field of the | Access Token as content of the "psk_identity" field of the | |||
ClientKeyExchange message [RFC6347], N_S is an exporter value | ClientKeyExchange message [RFC6347], N_S is an exporter value | |||
computed as defined in Section 7.5 of [RFC8446]. Specifically, | computed as defined in Section 7.5 of [RFC8446]. Specifically, | |||
N_S is exported from the DTLS session between the joining node | N_S is exported from the DTLS session between the joining node | |||
and the Group Manager, using an empty 'context_value', 32 bytes | and the Group Manager, using an empty 'context_value', 32 bytes | |||
as 'key_length', and the exporter label "EXPORTER-ACE-Sign- | as 'key_length', and the exporter label "EXPORTER-ACE-Sign- | |||
Challenge" defined in Section 7 of | Challenge-coap-group-oscore-app" defined in Section 18.6 of this | |||
[I-D.ietf-ace-mqtt-tls-profile]. | specification. | |||
3. If the joining node is in fact re-joining the group, without | 3. If the joining node is in fact re-joining the group, without | |||
posting again the same and still valid Access Token: | posting again the same and still valid Access Token: | |||
* If the joining node and the Group Manager communicates using | * If the joining node and the Group Manager communicates using | |||
DTLS, N_S is an exporter value, computed as described in point | DTLS, N_S is an exporter value, computed as described in point | |||
(2) above. | (2) above. | |||
* If the joining node and the Group Manager communicates using | * If the joining node and the Group Manager communicates using | |||
OSCORE [RFC8613], the N_S is the output PRK of a HKDF-Extract | OSCORE [RFC8613], the N_S is the output PRK of a HKDF-Extract | |||
skipping to change at page 10, line 21 ¶ | skipping to change at page 11, line 25 ¶ | |||
that Context, and | denotes byte string concatenation. Also, | that Context, and | denotes byte string concatenation. Also, | |||
'IKM' is the OSCORE Master Secret of the OSCORE Security | 'IKM' is the OSCORE Master Secret of the OSCORE Security | |||
Context between the joining node and the Group Manager. The | Context between the joining node and the Group Manager. The | |||
HKDF MUST be one of the HMAC-based HKDF [RFC5869] algorithms | HKDF MUST be one of the HMAC-based HKDF [RFC5869] algorithms | |||
defined for COSE [RFC8152]. HKDF SHA-256 is mandatory to | defined for COSE [RFC8152]. HKDF SHA-256 is mandatory to | |||
implement. | implement. | |||
It is up to applications to define how N_S is computed in further | It is up to applications to define how N_S is computed in further | |||
alternative settings. | alternative settings. | |||
4.3. Processing the Joining Request | 5.3. Processing the Joining Request | |||
The Group Manager processes the Joining Request as defined in | The Group Manager processes the Joining Request as defined in | |||
Section 4.1.2.1 of [I-D.ietf-ace-key-groupcomm]. Additionally, the | Section 4.1.2.1 of [I-D.ietf-ace-key-groupcomm]. Additionally, the | |||
following applies. | following applies. | |||
o In case the Joining Request does not include the 'client_cred' | o In case the Joining Request does not include the 'client_cred' | |||
parameter, the joining process fails if the Group Manager either: | parameter, the joining process fails if the Group Manager either: | |||
i) does not store a public key with an accepted format for the | i) does not store a public key with an accepted format for the | |||
joining node; or ii) stores multiple public keys with an accepted | joining node; or ii) stores multiple public keys with an accepted | |||
format for the joining node. | format for the joining node. | |||
o To compute the signature contained in 'client_cred_verify', the GM | o To compute the signature contained in 'client_cred_verify', the GM | |||
considers: i) as signed value, N_S concatenated with N_C, where | considers: i) as signed value, N_S concatenated with N_C, where | |||
N_S is determined as described in Section 4.2.1, while N_C is the | N_S is determined as described in Section 5.2.1, while N_C is the | |||
nonce provided in the 'cnonce' parameter of the Joining Request; | nonce provided in the 'cnonce' parameter of the Joining Request; | |||
ii) the countersignature algorithm used in the OSCORE group, and | ii) the countersignature algorithm used in the OSCORE group, and | |||
possible correponding parameters; and iii) the public key of the | possible correponding parameters; and iii) the public key of the | |||
joining node, either retrieved from the 'client_cred' parameter, | joining node, either retrieved from the 'client_cred' parameter, | |||
or already stored as acquired from previous interactions with the | or already stored as acquired from previous interactions with the | |||
joining node. | joining node. | |||
o A 4.00 Bad Request response from the Group Manager to the joining | o A 4.00 Bad Request response from the Group Manager to the joining | |||
node MUST have content format application/ace-group+cbor. The | node MUST have content format application/ace-group+cbor. The | |||
response payload is a CBOR map which MUST contain the 'sign_info' | response payload is a CBOR map which MUST contain the 'sign_info' | |||
as well as the 'pub_key_enc' parameters. | and 'pub_key_enc' parameters. The CBOR map SHOULD additionally | |||
contain the 'rsnonce' parameter, specifying a new dedicated 8-byte | ||||
nonce generated by the Group Manager (see Section 5.1). | ||||
o The Group Manager MUST return a 4.00 (Bad Request) response in | o The Group Manager MUST return a 4.00 (Bad Request) response in | |||
case the Joining Request includes the 'client_cred' parameter but | case the Joining Request includes the 'client_cred' parameter but | |||
does not include both the 'cnonce' and 'client_cred_verify' | does not include both the 'cnonce' and 'client_cred_verify' | |||
parameters. | parameters. | |||
o The Group Manager MUST return a 4.00 (Bad Request) response in | o The Group Manager MUST return a 4.00 (Bad Request) response in | |||
case it cannot retrieve a public key with an accepted format for | case it cannot retrieve a public key with an accepted format for | |||
the joining node, either from the 'client_cred' parameter or as | the joining node, either from the 'client_cred' parameter or as | |||
already stored. | already stored. | |||
o When receiving a 4.00 Bad Request response, the joining node | o When receiving a 4.00 Bad Request response, the joining node | |||
SHOULD send a new Joining Request to the Group Manager, | SHOULD send a new Joining Request to the Group Manager, where: | |||
containing: | ||||
* The 'client_cred' parameter, including a public key compatible | * The 'cnonce' parameter MUST include a new dedicated nonce N_C | |||
with the encoding, countersignature algorithm and possible | generated by the joining node. | |||
associated parameters indicated by the Group Manager. | ||||
* The 'client_cred_verify' parameter, including a signature | * The 'client_cred' parameter MUST include a public key | |||
computed as described in Section 4.2, by using the public key | compatible with the encoding, countersignature algorithm and | |||
possible associated parameters indicated by the Group Manager. | ||||
* The 'client_cred_verify' parameter MUST include a signature | ||||
computed as described in Section 5.2, by using the public key | ||||
indicated in the current 'client_cred' parameter, with the | indicated in the current 'client_cred' parameter, with the | |||
countersignature algorithm and possible associated parameters | countersignature algorithm and possible associated parameters | |||
indicated by the Group Manager. | indicated by the Group Manager. If the error response from the | |||
Group Manager included the 'rsnonce' parameter, the joining | ||||
node MUST use its content as new N_S challenge to compute the | ||||
signature. | ||||
4.4. Joining Response | 5.4. Joining Response | |||
If the processing of the Joining Request described in Section 4.3 is | If the processing of the Joining Request described in Section 5.3 is | |||
successful, the Group Manager updates the group membership by | successful, the Group Manager updates the group membership by | |||
registering the joining node NODENAME as a new member of the OSCORE | registering the joining node NODENAME as a new member of the OSCORE | |||
group GROUPNAME, as described in Section 4.1.2.1 of | group GROUPNAME, as described in Section 4.1.2.1 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
If the joining node is not exclusively configured as monitor, the | If the joining node is not exclusively configured as monitor, the | |||
Group Manager performs also the following actions. | Group Manager performs also the following actions. | |||
o The Group Manager selects an available OSCORE Sender ID in the | o The Group Manager selects an available OSCORE Sender ID in the | |||
OSCORE group, and exclusively assigns it to the joining node. | OSCORE group, and exclusively assigns it to the joining node. | |||
skipping to change at page 11, line 51 ¶ | skipping to change at page 13, line 12 ¶ | |||
the OSCORE Sender ID assigned to the joining node in the group. | the OSCORE Sender ID assigned to the joining node in the group. | |||
The Group Manager MUST keep this association updated over time. | The Group Manager MUST keep this association updated over time. | |||
Then, the Group Manager replies to the joining node, providing the | Then, the Group Manager replies to the joining node, providing the | |||
updated security parameters and keying meterial necessary to | updated security parameters and keying meterial necessary to | |||
participate in the group communication. This success Joining | participate in the group communication. This success Joining | |||
Response is formatted as defined in Section 4.1.2.1 of | Response is formatted as defined in Section 4.1.2.1 of | |||
[I-D.ietf-ace-key-groupcomm], with the following additions: | [I-D.ietf-ace-key-groupcomm], with the following additions: | |||
o The 'gkty' parameter identifies a key of type | o The 'gkty' parameter identifies a key of type | |||
"Group_OSCORE_Security_Context object", defined in Section 15.1 of | "Group_OSCORE_Security_Context object", defined in Section 18.2 of | |||
this specification. | this specification. | |||
o The 'key' parameter includes what the joining node needs in order | o The 'key' parameter includes what the joining node needs in order | |||
to set up the OSCORE Security Context as per Section 2 of | to set up the OSCORE Security Context as per Section 2 of | |||
[I-D.ietf-core-oscore-groupcomm]. This parameter has as value a | [I-D.ietf-core-oscore-groupcomm]. This parameter has as value a | |||
Group_OSCORE_Security_Context object, which is defined in this | Group_OSCORE_Security_Context object, which is defined in this | |||
specification and extends the OSCORE_Security_Context object | specification and extends the OSCORE_Security_Context object | |||
encoded in CBOR as defined in Section 3.2.1 of | encoded in CBOR as defined in Section 3.2.1 of | |||
[I-D.ietf-ace-oscore-profile]. In particular, it contains the | [I-D.ietf-ace-oscore-profile]. In particular, it contains the | |||
additional parameters 'cs_alg', 'cs_params', 'cs_key_params' and | additional parameters 'cs_alg', 'cs_params', 'cs_key_params' and | |||
'cs_key_enc' defined in Section 15.2 of this specification. More | 'cs_key_enc' defined in Section 18.3 of this specification. More | |||
specifically, the 'key' parameter is composed as follows. | specifically, the 'key' parameter is composed as follows. | |||
* The 'ms' parameter MUST be present and includes the OSCORE | * The 'ms' parameter MUST be present and includes the OSCORE | |||
Master Secret value. | Master Secret value. | |||
* The 'clientId' parameter, if present, has as value the OSCORE | * The 'clientId' parameter, if present, has as value the OSCORE | |||
Sender ID assigned to the joining node by the Group Manager, as | Sender ID assigned to the joining node by the Group Manager, as | |||
described above. This parameter is not present if the node | described above. This parameter is not present if the node | |||
joins the group exclusively as monitor, according to what | joins the group exclusively as monitor, according to what | |||
specified in the Access Token (see Section 3.2). In any other | specified in the Access Token (see Section 3.2). In any other | |||
skipping to change at page 12, line 39 ¶ | skipping to change at page 13, line 49 ¶ | |||
* The 'alg' parameter, if present, has as value the AEAD | * The 'alg' parameter, if present, has as value the AEAD | |||
algorithm used in the group. | algorithm used in the group. | |||
* The 'salt' parameter, if present, has as value the OSCORE | * The 'salt' parameter, if present, has as value the OSCORE | |||
Master Salt. | Master Salt. | |||
* The 'contextId' parameter MUST be present and has as value the | * The 'contextId' parameter MUST be present and has as value the | |||
Group Identifier (Gid), i.e. the OSCORE ID Context of the | Group Identifier (Gid), i.e. the OSCORE ID Context of the | |||
OSCORE group. | OSCORE group. | |||
* The 'rpl' parameter, if present, specifies the OSCORE Replay | ||||
Window Size and Type value. | ||||
* The 'cs_alg' parameter MUST be present and specifies the | * The 'cs_alg' parameter MUST be present and specifies the | |||
algorithm used to countersign messages in the group. This | algorithm used to countersign messages in the group. This | |||
parameter takes values from Tables 5 and 6 of [RFC8152]. | parameter takes values from Tables 5 and 6 of [RFC8152]. | |||
* The 'cs_params' parameter MAY be present and specifies the | * The 'cs_params' parameter MAY be present and specifies the | |||
additional parameters for the counter signature algorithm. | additional parameters for the counter signature algorithm. | |||
This parameter is a CBOR map whose content depends on the | This parameter is a CBOR map whose content depends on the | |||
counter signature algorithm, as specified in Section 2 and | counter signature algorithm, as specified in Section 2 and | |||
Section 9.1 of [I-D.ietf-core-oscore-groupcomm]. | Section 11.1 of [I-D.ietf-core-oscore-groupcomm]. | |||
* The 'cs_key_params' parameter MAY be present and specifies the | * The 'cs_key_params' parameter MAY be present and specifies the | |||
additional parameters for the key used with the counter | additional parameters for the key used with the counter | |||
signature algorithm. This parameter is a CBOR map whose | signature algorithm. This parameter is a CBOR map whose | |||
content depends on the counter signature algorithm, as | content depends on the counter signature algorithm, as | |||
specified in Section 2 and Section 9.2 of | specified in Section 2 and Section 11.2 of | |||
[I-D.ietf-core-oscore-groupcomm]. | [I-D.ietf-core-oscore-groupcomm]. | |||
* The 'cs_key_enc' parameter MAY be present and specifies the | * The 'cs_key_enc' parameter MAY be present and specifies the | |||
encoding of the public keys of the group members. This | encoding of the public keys of the group members. This | |||
parameter is a CBOR integer, whose value is 1 ("COSE_Key") | parameter is a CBOR integer, whose value is 1 ("COSE_Key") | |||
taken from the 'Confirmation Key' column of the "CWT | taken from the 'Confirmation Key' column of the "CWT | |||
Confirmation Method" Registry defined in | Confirmation Method" Registry defined in | |||
[I-D.ietf-ace-cwt-proof-of-possession], so indicating that | [I-D.ietf-ace-cwt-proof-of-possession], so indicating that | |||
public keys in the OSCORE group are encoded as COSE Keys | public keys in the OSCORE group are encoded as COSE Keys | |||
[RFC8152]. Future specifications may define additional values | [RFC8152]. Future specifications may define additional values | |||
for this parameter. If this parameter is not present, 1 | for this parameter. If this parameter is not present, 1 | |||
("COSE_Key") MUST be assumed as default value. | ("COSE_Key") MUST be assumed as default value. | |||
o The 'num' parameter MUST be present. | o The 'num' parameter MUST be present. | |||
o The 'ace-groupcomm-profile' parameter MUST be present and has | o The 'ace-groupcomm-profile' parameter MUST be present and has | |||
value coap_group_oscore_app (TBD), which is defined in | value coap_group_oscore_app (TBD1), which is defined in | |||
Section 15.3 of this specification. | Section 18.1 of this specification. | |||
o The 'exp' parameter MUST be present. | o The 'exp' parameter MUST be present. | |||
o The 'pub_keys' parameter, if present, includes the public keys of | o The 'pub_keys' parameter, if present, includes the public keys of | |||
the group members that are relevant to the joining node. That is, | the group members that are relevant to the joining node. That is, | |||
it includes: i) the public keys of the responders currently in the | it includes: i) the public keys of the responders currently in the | |||
group, in case the joining node is configured (also) as requester; | group, in case the joining node is configured (also) as requester; | |||
and ii) the public keys of the requesters currently in the group, | and ii) the public keys of the requesters currently in the group, | |||
in case the joining node is configured (also) as responder or | in case the joining node is configured (also) as responder or | |||
monitor. If public keys are encoded as COSE_Keys, each of them | monitor. If public keys are encoded as COSE_Keys, each of them | |||
has as 'kid' the Sender ID that the corresponding owner has in the | has as 'kid' the Sender ID that the corresponding owner has in the | |||
group, thus used as group member identifier. | group, thus used as group member identifier. | |||
o The 'group_policies' parameter SHOULD be present, and SHOULD | o The 'group_policies' parameter SHOULD be present, and SHOULD | |||
include the elements "Sequence Number Synchronization Method" and | include the elements "Sequence Number Synchronization Method" and | |||
"Key Update Check Interval" defined in Section 4.1.2. of | "Key Update Check Interval" defined in Section 4.1.2. of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
Finally, the joining node uses the information received in the | Finally, the joining node uses the information received in the | |||
Joining Response to set up the OSCORE Security Context, as described | Joining Response to set up the OSCORE Security Context, as described | |||
in Section 2 of [I-D.ietf-core-oscore-groupcomm]. From then on, the | in Section 2 of [I-D.ietf-core-oscore-groupcomm]. In addition, the | |||
joining node can exchange group messages secured with Group OSCORE as | joining node maintains an association between each public key | |||
described in [I-D.ietf-core-oscore-groupcomm]. | retrieved from the 'pub_keys' parameter and the role(s) that the | |||
corresponding group member has in the group. | ||||
From then on, the joining node can exchange group messages secured | ||||
with Group OSCORE as described in [I-D.ietf-core-oscore-groupcomm]. | ||||
When doing so: | ||||
o The joining node MUST NOT process an incoming request message, if | ||||
signed by a group member whose public key is not associated to the | ||||
role "Requester". | ||||
o The joining node MUST NOT process an incoming response message, if | ||||
signed by a group member whose public key is not associated to the | ||||
role "Responder". | ||||
If the application requires backward security, the Group Manager MUST | If the application requires backward security, the Group Manager MUST | |||
generate updated security parameters and group keying material, and | generate updated security parameters and group keying material, and | |||
provide it to the current group members upon the new node's joining | provide it to the current group members upon the new node's joining | |||
(see Section 13). As a consequence, the joining node is not able to | (see Section 16). As a consequence, the joining node is not able to | |||
access secure communication in the group occurred prior its joining. | access secure communication in the group occurred prior its joining. | |||
5. Public Keys of Joining Nodes | 6. Public Keys of Joining Nodes | |||
Source authentication of OSCORE messages exchanged within the group | Source authentication of OSCORE messages exchanged within the group | |||
is ensured by means of digital counter signatures (see Sections 2 and | is ensured by means of digital counter signatures (see Sections 2 and | |||
3 of [I-D.ietf-core-oscore-groupcomm]). Therefore, group members | 4 of [I-D.ietf-core-oscore-groupcomm]). Therefore, group members | |||
must be able to retrieve each other's public key from a trusted key | must be able to retrieve each other's public key from a trusted key | |||
repository, in order to verify source authenticity of incoming group | repository, in order to verify source authenticity of incoming group | |||
messages. | messages. | |||
As also discussed in [I-D.ietf-core-oscore-groupcomm], the Group | As also discussed in [I-D.ietf-core-oscore-groupcomm], the Group | |||
Manager acts as trusted repository of the public keys of the group | Manager acts as trusted repository of the public keys of the group | |||
members, and provides those public keys to group members if requested | members, and provides those public keys to group members if requested | |||
to. Upon joining an OSCORE group, a joining node is thus expected to | to. Upon joining an OSCORE group, a joining node is thus expected to | |||
provide its own public key to the Group Manager. | provide its own public key to the Group Manager. | |||
skipping to change at page 14, line 46 ¶ | skipping to change at page 16, line 16 ¶ | |||
node. | node. | |||
o The Group Manager already acquired the public key of the joining | o The Group Manager already acquired the public key of the joining | |||
node during a past joining process. In this case, the joining | node during a past joining process. In this case, the joining | |||
node MAY choose not to provide again its own public key to the | node MAY choose not to provide again its own public key to the | |||
Group Manager, in order to limit the size of the Joining Request. | Group Manager, in order to limit the size of the Joining Request. | |||
The joining node MUST provide its own public key again if it has | The joining node MUST provide its own public key again if it has | |||
provided the Group Manager with multiple public keys during past | provided the Group Manager with multiple public keys during past | |||
joining processes, intended for different OSCORE groups. If the | joining processes, intended for different OSCORE groups. If the | |||
joining node provides its own public key, the Group Manager | joining node provides its own public key, the Group Manager | |||
performs consistency checks as per Section 4.3 and, in case of | performs consistency checks as per Section 5.3 and, in case of | |||
success, considers it as the public key associated to the joining | success, considers it as the public key associated to the joining | |||
node in the OSCORE group. | node in the OSCORE group. | |||
o The joining node and the Group Manager use an asymmetric proof-of- | o The joining node and the Group Manager use an asymmetric proof-of- | |||
possession key to establish a secure communication channel. Then, | possession key to establish a secure communication channel. Then, | |||
two cases can occur. | two cases can occur. | |||
1. The proof-of-possession key is compatible with the encoding as | 1. The proof-of-possession key is compatible with the encoding as | |||
well as with the counter signature algorithm and possible | well as with the counter signature algorithm and possible | |||
associated parameters used in the OSCORE group. Then, the | associated parameters used in the OSCORE group. Then, the | |||
Group Manager considers the proof-of-possession key as the | Group Manager considers the proof-of-possession key as the | |||
public key associated to the joining node in the OSCORE group. | public key associated to the joining node in the OSCORE group. | |||
If the joining node is aware that the proof-of-possession key | If the joining node is aware that the proof-of-possession key | |||
is also valid for the OSCORE group, it MAY not provide it | is also valid for the OSCORE group, it MAY not provide it | |||
again as its own public key to the Group Manager. The joining | again as its own public key to the Group Manager. The joining | |||
node MUST provide its own public key again if it has provided | node MUST provide its own public key again if it has provided | |||
the Group Manager with multiple public keys during past | the Group Manager with multiple public keys during past | |||
joining processes, intended for different OSCORE groups. If | joining processes, intended for different OSCORE groups. If | |||
the joining node provides its own public key in the | the joining node provides its own public key in the | |||
'client_cred' parameter of the Joining Request (see | 'client_cred' parameter of the Joining Request (see | |||
Section 4.2), the Group Manager performs consistency checks as | Section 5.2), the Group Manager performs consistency checks as | |||
per Section 4.3 and, in case of success, considers it as the | per Section 5.3 and, in case of success, considers it as the | |||
public key associated to the joining node in the OSCORE group. | public key associated to the joining node in the OSCORE group. | |||
2. The proof-of-possession key is not compatible with the | 2. The proof-of-possession key is not compatible with the | |||
encoding or with the counter signature algorithm and possible | encoding or with the counter signature algorithm and possible | |||
associated parameters used in the OSCORE group. In this case, | associated parameters used in the OSCORE group. In this case, | |||
the joining node MUST provide a different compatible public | the joining node MUST provide a different compatible public | |||
key to the Group Manager in the 'client_cred' parameter of the | key to the Group Manager in the 'client_cred' parameter of the | |||
Joining Request (see Section 4.2). Then, the Group Manager | Joining Request (see Section 5.2). Then, the Group Manager | |||
performs consistency checks on this latest provided public key | performs consistency checks on this latest provided public key | |||
as per Section 4.3 and, in case of success, considers it as | as per Section 5.3 and, in case of success, considers it as | |||
the public key associated to the joining node in the OSCORE | the public key associated to the joining node in the OSCORE | |||
group. | group. | |||
o The joining node and the Group Manager use a symmetric proof-of- | o The joining node and the Group Manager use a symmetric proof-of- | |||
possession key to establish a secure communication channel. In | possession key to establish a secure communication channel. In | |||
this case, upon performing a joining process with that Group | this case, upon performing a joining process with that Group | |||
Manager for the first time, the joining node specifies its own | Manager for the first time, the joining node specifies its own | |||
public key in the 'client_cred' parameter of the Joining Request | public key in the 'client_cred' parameter of the Joining Request | |||
targeting the group-membership endpoint (see Section 4.2). | targeting the group-membership endpoint (see Section 5.2). | |||
6. Retrieval of Updated Keying Material | 7. Retrieval of Updated Keying Material | |||
At some point, a group member considers the OSCORE Security Context | At some point, a group member considers the OSCORE Security Context | |||
invalid and to be renewed. This happens, for instance, after a | invalid and to be renewed. This happens, for instance, after a | |||
number of unsuccessful security processing of incoming messages from | number of unsuccessful security processing of incoming messages from | |||
other group members, or when the Security Context expires as | other group members, or when the Security Context expires as | |||
specified by the 'exp' parameter of the Joining Response. | specified by the 'exp' parameter of the Joining Response. | |||
When this happens, the group member retrieves updated security | When this happens, the group member retrieves updated security | |||
parameters and group keying material. This can occur in the two | parameters and group keying material. This can occur in the two | |||
different ways described below. | different ways described below. | |||
6.1. Retrieval of Group Keying Material | 7.1. Retrieval of Group Keying Material | |||
If the group member wants to retrieve only the latest group keying | If the group member wants to retrieve only the latest group keying | |||
material, it sends a Key Distribution Request to the Group Manager. | material, it sends a Key Distribution Request to the Group Manager. | |||
In particular, it sends a CoAP GET request to the endpoint /group- | In particular, it sends a CoAP GET request to the endpoint /group- | |||
oscore/GROUPNAME at the Group Manager. | oscore/GROUPNAME at the Group Manager. | |||
The Group Manager processes the Key Distribution Request according to | The Group Manager processes the Key Distribution Request according to | |||
Section 4.1.2.2 of [I-D.ietf-ace-key-groupcomm]. The Key | Section 4.1.2.2 of [I-D.ietf-ace-key-groupcomm]. The Key | |||
Distribution Response is formatted as defined in Section 4.1.2.2 of | Distribution Response is formatted as defined in Section 4.1.2.2 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. In particular, the 'key' parameter is | |||
formatted as defined in Section 5.4 of this specification, with the | ||||
difference that it does not include the 'clientId' parameter. | ||||
Upon receiving the Key Distribution Response, the group member | Upon receiving the Key Distribution Response, the group member | |||
retrieves the updated security parameters and group keying material, | retrieves the updated security parameters and group keying material, | |||
and, if they differ from the current ones, use them to set up the new | and, if they differ from the current ones, use them to set up the new | |||
OSCORE Security Context as described in Section 2 of | OSCORE Security Context as described in Section 2 of | |||
[I-D.ietf-core-oscore-groupcomm]. | [I-D.ietf-core-oscore-groupcomm]. | |||
6.2. Retrieval of Group Keying Material and Sender ID | 7.2. Retrieval of Group Keying Material and Sender ID | |||
If the group member wants to retrieve the latest group keying | If the group member wants to retrieve the latest group keying | |||
material as well as the Sender ID that it has in the OSCORE group, it | material as well as the Sender ID that it has in the OSCORE group, it | |||
sends a Key Distribution Request to the Group Manager. | sends a Key Distribution Request to the Group Manager. | |||
In particular, it sends a CoAP GET request to the endpoint /group- | In particular, it sends a CoAP GET request to the endpoint /group- | |||
oscore/GROUPNAME/NODENAME at the Group Manager. | oscore/GROUPNAME/nodes/NODENAME at the Group Manager. | |||
The Group Manager processes the Key Distribution Request according to | The Group Manager processes the Key Distribution Request according to | |||
Section 4.1.6.2 of [I-D.ietf-ace-key-groupcomm]. The Key | Section 4.1.6.2 of [I-D.ietf-ace-key-groupcomm]. The Key | |||
Distribution Response is formatted as defined in Section 4.1.6.2 of | Distribution Response is formatted as defined in Section 4.1.6.2 of | |||
[I-D.ietf-ace-key-groupcomm]. Note that the current Sender ID of the | [I-D.ietf-ace-key-groupcomm]. | |||
group member is not specified as a separate parameter, but rather | ||||
included as 'clientId' in the 'key' parameter. | In particular, the 'key' parameter is formatted as defined in | |||
Section 5.4 of this specification, with the difference that if the | ||||
requesting group member is configured exclusively as monitor, no | ||||
'clientId' is specified within the 'key' parameter. Note that, in | ||||
any other case, the current Sender ID of the group member is not | ||||
specified as a separate parameter, but rather specified as 'clientId' | ||||
within the 'key' parameter. | ||||
Upon receiving the Key Distribution Response, the group member | Upon receiving the Key Distribution Response, the group member | |||
retrieves the updated security parameters, group keying material and | retrieves the updated security parameters, group keying material and | |||
Sender ID, and, if they differ from the current ones, use them to set | Sender ID, and, if they differ from the current ones, use them to set | |||
up the new OSCORE Security Context as described in Section 2 of | up the new OSCORE Security Context as described in Section 2 of | |||
[I-D.ietf-core-oscore-groupcomm]. | [I-D.ietf-core-oscore-groupcomm]. | |||
7. Retrieval of New Keying Material | 8. Retrieval of New Keying Material | |||
As discussed in Section 2.2 of [I-D.ietf-core-oscore-groupcomm], a | As discussed in Section 2.5 of [I-D.ietf-core-oscore-groupcomm], a | |||
group member may at some point experience a wrap-around of its own | group member may at some point experience a wrap-around of its own | |||
Sender Sequence Number in the group. | Sender Sequence Number in the group. | |||
When this happens, the group member MUST send a Key Renewal Request | When this happens, the group member MUST send a Key Renewal Request | |||
message to the Group Manager, as per Section 4.4 of | message to the Group Manager, as per Section 4.4 of | |||
[I-D.ietf-ace-key-groupcomm]. In particular, it sends a CoAP PUT | [I-D.ietf-ace-key-groupcomm]. In particular, it sends a CoAP PUT | |||
request to the endpoint /group-oscore/GROUPNAME/NODENAME at the Group | request to the endpoint /group-oscore/GROUPNAME/nodes/NODENAME at the | |||
Manager. | Group Manager. | |||
Upon receiving the Key Renewal Request, the Group Manager processes | Upon receiving the Key Renewal Request, the Group Manager processes | |||
it as defined in Section 4.1.6.2 of [I-D.ietf-ace-key-groupcomm], and | it as defined in Section 4.1.6.1 of [I-D.ietf-ace-key-groupcomm], and | |||
performs one of the following actions. | performs one of the following actions. | |||
1. The Group Manager replies to the group member with a 4.06 (Not | 1. If the requesting group member is configured exclusively as | |||
Acceptable) error response, and rekeys the whole OSCORE group as | monitor, the Group Manager replies with a 4.00 (Bad Request) | |||
discussed in Section 13. | error response. | |||
2. The Group Manager generates a new Sender ID for that group member | 2. Otherwise, depending on the policies configured (OPT8): | |||
and replies with a Key Renewal Response, formatted as defined in | ||||
Section 4.1.6.2 of [I-D.ietf-ace-key-groupcomm]. In particular, | ||||
the CBOR Map in the response payload includes a single parameter | ||||
'clientId' defined in Section 15.5 of this document, specifying | ||||
the new Sender ID of the group member encoded as a CBOR byte | ||||
string. | ||||
8. Retrieval of Public Keys of Group Members | a. Either the Group Manager replies to the group member with a | |||
4.00 (Bad Request) error response, and rekeys the whole OSCORE | ||||
group as discussed in Section 16; | ||||
b. Or the Group Manager generates a new Sender ID for that group | ||||
member and replies with a Key Renewal Response, formatted as | ||||
defined in Section 4.1.6.1 of [I-D.ietf-ace-key-groupcomm]. In | ||||
particular, the CBOR Map in the response payload includes a | ||||
single parameter 'clientId' defined in Section 18.5 of this | ||||
document, specifying the new Sender ID of the group member | ||||
encoded as a CBOR byte string. | ||||
9. Retrieval of Public Keys of Group Members | ||||
A group member may need to retrieve the public keys of other group | A group member may need to retrieve the public keys of other group | |||
members. To this end, the group member sends a Public Key Request | members. To this end, the group member sends a Public Key Request | |||
message to the Group Manager, as per Section 4.5 of | message to the Group Manager, as per Section 4.5 of | |||
[I-D.ietf-ace-key-groupcomm]. In particular, it sends the request to | [I-D.ietf-ace-key-groupcomm]. In particular, it sends the request to | |||
the endpoint /group-oscore/GROUPNAME/pub-key at the Group Manager. | the endpoint /group-oscore/GROUPNAME/pub-key at the Group Manager. | |||
If the Public Key Request uses the method FETCH, the Public Key | If the Public Key Request uses the method FETCH, the Public Key | |||
Request is formatted as defined in Section 4.1.3.1 of | Request is formatted as defined in Section 4.1.3.1 of | |||
[I-D.ietf-ace-key-groupcomm]. In particular, each element of the | [I-D.ietf-ace-key-groupcomm]. In particular, each element of the | |||
skipping to change at page 18, line 5 ¶ | skipping to change at page 19, line 36 ¶ | |||
depending on the request method being FETCH or GET, respectively. | depending on the request method being FETCH or GET, respectively. | |||
Additionally, if the Public Key Request uses the method FETCH, the | Additionally, if the Public Key Request uses the method FETCH, the | |||
Group Manager silently ignores identifiers included in the | Group Manager silently ignores identifiers included in the | |||
'get_pub_keys' parameter of the request that are not associated to | 'get_pub_keys' parameter of the request that are not associated to | |||
any current group member. | any current group member. | |||
The success Public Key Response is formatted as defined in | The success Public Key Response is formatted as defined in | |||
Section 4.1.3.1 or 4.1.3.2 of [I-D.ietf-ace-key-groupcomm], depending | Section 4.1.3.1 or 4.1.3.2 of [I-D.ietf-ace-key-groupcomm], depending | |||
on the request method being FETCH or GET, respectively. | on the request method being FETCH or GET, respectively. | |||
9. Retrieval of Group Policies | 10. Update of Public Key | |||
A group member may need to provide the Group Manager with its new | ||||
public key to use in the group from then on, hence replacing the | ||||
current one. This can be the case, for instance, if the | ||||
countersignature algorithm and possible associated parameters used in | ||||
the OSCORE group have been changed, and the current public key is not | ||||
compatible with them. | ||||
To this end, the group member sends a Public Key Update Request | ||||
message to the Group Manager, as per Section 4.6 of | ||||
[I-D.ietf-ace-key-groupcomm]. In particular, it sends a CoAP POST | ||||
request to the endpoint /group-oscore/GROUPNAME/nodes/NODENAME/pub- | ||||
key at the Group Manager. | ||||
Upon receiving the Group Leaving Request, the Group Manager processes | ||||
it as per Section 4.1.7.1 of [I-D.ietf-ace-key-groupcomm], with the | ||||
following additions. | ||||
o If the requesting group member is configured exclusively as | ||||
monitor, the Group Manager replies with a 4.00 (Bad request) error | ||||
response. | ||||
o The N_S signature challenge is computed as per point (3) in | ||||
Section 5.2.1 (REQ17). | ||||
o If the request is successfully processed, the Group Manager stores | ||||
the association between i) the new public key of the group member; | ||||
and ii) the Group Identifier (Gid), i.e. the OSCORE ID Context, | ||||
associated to the OSCORE group together with the OSCORE Sender ID | ||||
assigned to the group member in the group. The Group Manager MUST | ||||
keep this association updated over time. | ||||
11. Retrieval of Group Policies | ||||
A group member may request the current policies used in the OSCORE | A group member may request the current policies used in the OSCORE | |||
group. To this end, the group member sends a Policies Request, as | group. To this end, the group member sends a Policies Request, as | |||
per Section 4.6 of [I-D.ietf-ace-key-groupcomm]. In particular, it | per Section 4.7 of [I-D.ietf-ace-key-groupcomm]. In particular, it | |||
sends a CoAP GET request to the endpoint /group-oscore/GROUPNAME/ | sends a CoAP GET request to the endpoint /group-oscore/GROUPNAME/ | |||
policies at the Group Manager, where GROUPNAME is the name of the | policies at the Group Manager, where GROUPNAME is the name of the | |||
OSCORE group. | OSCORE group. | |||
Upon receiving the Policies Request, the Group Manager processes it | Upon receiving the Policies Request, the Group Manager processes it | |||
as per Section 4.1.4.1 of [I-D.ietf-ace-key-groupcomm]. The success | as per Section 4.1.4.1 of [I-D.ietf-ace-key-groupcomm]. The success | |||
Policies Response is formatted as defined in Section 4.1.4.1 of | Policies Response is formatted as defined in Section 4.1.4.1 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
10. Retrieval of Keying Material Version | 12. Retrieval of Keying Material Version | |||
A group member may request the current version of the keying material | A group member may request the current version of the keying material | |||
used in the OSCORE group. To this end, the group member sends a | used in the OSCORE group. To this end, the group member sends a | |||
Version Request, as per Section 4.7 of [I-D.ietf-ace-key-groupcomm]. | Version Request, as per Section 4.8 of [I-D.ietf-ace-key-groupcomm]. | |||
In particular, it sends a CoAP GET request to the endpoint /group- | In particular, it sends a CoAP GET request to the endpoint /group- | |||
oscore/GROUPNAME/ctx-num at the Group Manager, where GROUPNAME is the | oscore/GROUPNAME/ctx-num at the Group Manager, where GROUPNAME is the | |||
name of the OSCORE group. | name of the OSCORE group. | |||
Upon receiving the Version Request, the Group Manager processes it as | Upon receiving the Version Request, the Group Manager processes it as | |||
per Section 4.1.5.1 of [I-D.ietf-ace-key-groupcomm]. The success | per Section 4.1.5.1 of [I-D.ietf-ace-key-groupcomm]. The success | |||
Version Response is formatted as defined in Section 4.1.5.1 of | Version Response is formatted as defined in Section 4.1.5.1 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
11. Request to Leave the Group | 13. Retrieval of Group Status | |||
A group member may request the current status of the the OSCORE | ||||
group, i.e. active or inactive. To this end, the group member sends | ||||
a Group Status Request to the Group Manager. | ||||
In particular, the group member sends a CoAP GET request to the | ||||
endpoint /group-oscore/GROUPNAME/active at the Group Manager defined | ||||
in Section 4 of this specification, where GROUPNAME is the name of | ||||
the OSCORE group. The success Group Version Response is formatted as | ||||
defined in Section 4 of this specification. | ||||
Upon learning from a 2.05 (Content) response that the group is | ||||
currently inactive, the group member SHOULD stop taking part in | ||||
communications within the group, until it becomes active again. | ||||
Upon learning from a 2.05 (Content) response that the group has | ||||
become active again, the group member can resume taking part in | ||||
communications within the group. | ||||
Figure 2 gives an overview of the exchange described above. | ||||
Group Group | ||||
Member Manager | ||||
| | | ||||
|------ Group Status Request: GET ace-group/GID/active ------>| | ||||
| | | ||||
|<---------- Group Status Response: 2.05 (Content) -----------| | ||||
| | | ||||
Figure 2: Message Flow of Group Status Request-Response | ||||
14. Request to Leave the Group | ||||
A group member may request to leave the OSCORE group. To this end, | A group member may request to leave the OSCORE group. To this end, | |||
the group member sends a Group Leaving Request, as per Section 4.8 of | the group member sends a Group Leaving Request, as per Section 4.9 of | |||
[I-D.ietf-ace-key-groupcomm]. In particular, it sends a CoAP DELETE | [I-D.ietf-ace-key-groupcomm]. In particular, it sends a CoAP DELETE | |||
request to the endpoint /group-oscore/GROUPNAME/NODENAME at the Group | request to the endpoint /group-oscore/GROUPNAME/nodes/NODENAME at the | |||
Manager. | Group Manager. | |||
Upon receiving the Group Leaving Request, the Group Manager processes | Upon receiving the Group Leaving Request, the Group Manager processes | |||
it as per Section 4.1.6.3 of [I-D.ietf-ace-key-groupcomm]. | it as per Section 4.1.6.3 of [I-D.ietf-ace-key-groupcomm]. | |||
12. Removal of a Group Member | 15. Removal of a Group Member | |||
Other than after a spontaneous request to the Group Manager as | Other than after a spontaneous request to the Group Manager as | |||
described in Section 11, a node may be forcibly removed from the | described in Section 14, a node may be forcibly removed from the | |||
OSCORE group, e.g. due to expired or revoked authorization. | OSCORE group, e.g. due to expired or revoked authorization. | |||
In either case, if the leaving node is not configured exclusively as | In either case, if the leaving node is not configured exclusively as | |||
monitor, the Group Manager performs the following actions. | monitor, the Group Manager performs the following actions. | |||
o The Group Manager frees the OSCORE Sender ID value of the leaving | o The Group Manager frees the OSCORE Sender ID value of the leaving | |||
node, which becomes available for possible upcoming joining nodes. | node, which becomes available for possible upcoming joining nodes. | |||
o The Group Manager cancels the association between, on one hand, | o The Group Manager cancels the association between, on one hand, | |||
the public key of the leaving node and, on the other hand, the | the public key of the leaving node and, on the other hand, the | |||
Group Identifier (Gid) associated to the OSCORE group together | Group Identifier (Gid) associated to the OSCORE group together | |||
with the freed OSCORE Sender ID value. The Group Manager deletes | with the freed OSCORE Sender ID value. The Group Manager deletes | |||
the public key of the leaving node, if that public key has no | the public key of the leaving node, if that public key has no | |||
remaining association with any pair (Gid, Sender ID). | remaining association with any pair (Gid, Sender ID). | |||
If the application requires forward security, the Group Manager MUST | If the application requires forward security, the Group Manager MUST | |||
generate updated security parameters and group keying material, and | generate updated security parameters and group keying material, and | |||
provide it to the remaining group members (see Section 13). As a | provide it to the remaining group members (see Section 16). As a | |||
consequence, the leaving node is not able to acquire the new security | consequence, the leaving node is not able to acquire the new security | |||
parameters and group keying material distributed after its leaving. | parameters and group keying material distributed after its leaving. | |||
Same considerations in Section 5 of [I-D.ietf-ace-key-groupcomm] | Same considerations in Section 5 of [I-D.ietf-ace-key-groupcomm] | |||
apply here as well, considering the Group Manager acting as KDC. | apply here as well, considering the Group Manager acting as KDC. | |||
13. Group Rekeying Process | 16. Group Rekeying Process | |||
In order to rekey the OSCORE group, the Group Manager distributes a | In order to rekey the OSCORE group, the Group Manager distributes a | |||
new Group Identifier (Gid), i.e. a new OSCORE ID Context, and a new | new Group Identifier (Gid), i.e. a new OSCORE ID Context; a new | |||
OSCORE Master Secret for that group. When doing so, the Group | OSCORE Master Secret; and, optionally, a new OSCORE Master Salt for | |||
Manager MUST increment the version number of the group keying | that group. When doing so, the Group Manager MUST increment the | |||
material. Also, the Group Manager MUST preserve the same unchanged | version number of the group keying material, before starting its | |||
distribution. | ||||
Furthermore, the Group Manager MUST preserve the same unchanged | ||||
Sender IDs for all group members. This avoids affecting the | Sender IDs for all group members. This avoids affecting the | |||
retrieval of public keys from the Group Manager as well as the | retrieval of public keys from the Group Manager as well as the | |||
verification of message countersignatures. | verification of message countersignatures. | |||
The Group Manager MUST support at least the following group rekeying | The Group Manager MUST support at least the following group rekeying | |||
scheme. Future application profiles may define alternative message | scheme. Future application profiles may define alternative message | |||
formats and distribution schemes. | formats and distribution schemes. | |||
The Group Manager uses the same format of the Joining Response | The Group Manager uses the same format of the Joining Response | |||
message in Section 4.4. In particular: | message in Section 5.4. In particular: | |||
o Only the parameters 'gkty', 'key', 'num', 'ace-groupcomm-profile' | o Only the parameters 'gkty', 'key', 'num', 'ace-groupcomm-profile' | |||
and 'exp' are present. | and 'exp' are present. | |||
o The 'ms' parameter of the 'key' parameter specifies the new OSCORE | o The 'ms' parameter of the 'key' parameter specifies the new OSCORE | |||
Master Secret value. | Master Secret value. | |||
o The 'contextId' parameter of the 'key' parameter specifies the new | o The 'contextId' parameter of the 'key' parameter specifies the new | |||
Group ID. | Group ID. | |||
The Group Manager separately sends a group rekeying message to each | The Group Manager separately sends a group rekeying message to each | |||
group member to be rekeyed. Each rekeying message MUST be secured | group member to be rekeyed. | |||
with the pairwise secure communication channel between the Group | ||||
Manager and the group member used during the joining process. | Each rekeying message MUST be secured with the pairwise secure | |||
communication channel between the Group Manager and the group member | ||||
used during the joining process. In particular, each rekeying | ||||
message can target the 'control_path' URI path defined in | ||||
Section 4.1.2.1 of [I-D.ietf-ace-key-groupcomm], if provided by the | ||||
intended recipient upon joining the group (see Section 5.2). | ||||
It is RECOMMENDED that the Group Manager gets confirmation of | ||||
successful distribution from the group members, and admits a maximum | ||||
number of individual retransmissions to non-confirming group members. | ||||
In case the rekeying terminates and some group members have not | ||||
received the new keying material, they will not be able to correctly | ||||
process following secured messages exchanged in the group. These | ||||
group members will eventually contact the Group Manager, in order to | ||||
retrieve the current keying material and its version. | ||||
This approach requires group members to act (also) as servers, in | This approach requires group members to act (also) as servers, in | |||
order to correctly handle unsolicited group rekeying messages from | order to correctly handle unsolicited group rekeying messages from | |||
the Group Manager. In particular, if a group member and the Group | the Group Manager. In particular, if a group member and the Group | |||
Manager use OSCORE [RFC8613] to secure their pairwise communications, | Manager use OSCORE [RFC8613] to secure their pairwise communications, | |||
the group member MUST create a Replay Window in its own Recipient | the group member MUST create a Replay Window in its own Recipient | |||
Context upon establishing the OSCORE Security Context with the Group | Context upon establishing the OSCORE Security Context with the Group | |||
Manager, e.g. by means of the OSCORE profile of ACE | Manager, e.g. by means of the OSCORE profile of ACE | |||
[I-D.ietf-ace-oscore-profile]. | [I-D.ietf-ace-oscore-profile]. | |||
Group members and the Group Manager SHOULD additionally support | Group members and the Group Manager SHOULD additionally support | |||
alternative rekeying approaches that do not require group members to | alternative rekeying approaches that do not require group members to | |||
act (also) as servers. A number of such approaches are defined in | act (also) as servers. A number of such approaches are defined in | |||
Section 4.3 of [I-D.ietf-ace-key-groupcomm]. In particular, a group | Section 4.3 of [I-D.ietf-ace-key-groupcomm]. In particular, a group | |||
member may subscribe for updates to the group-membership resource of | member may subscribe for updates to the group-membership resource of | |||
the group, at the endpoint /group-oscore/GROUPNAME/NODENAME of the | the group, at the endpoint /group-oscore/GROUPNAME/nodes/NODENAME of | |||
Group Manager. This can rely on CoAP Observe [RFC7641] or on a full- | the Group Manager. This can rely on CoAP Observe [RFC7641] or on a | |||
fledged Pub-Sub model [I-D.ietf-core-coap-pubsub] with the Group | full-fledged Pub-Sub model [I-D.ietf-core-coap-pubsub] with the Group | |||
Manager acting as Broker. | Manager acting as Broker. | |||
14. Security Considerations | 17. Security Considerations | |||
The method described in this document leverages the following | Security considerations for this profile are inherited from | |||
management aspects related to OSCORE groups and discussed in the | [I-D.ietf-ace-key-groupcomm], the ACE framework for Authentication | |||
sections of [I-D.ietf-core-oscore-groupcomm] referred below. | and Authorization [I-D.ietf-ace-oauth-authz], and the specific | |||
transport profile of ACE signalled by the AS, such as | ||||
[I-D.ietf-ace-dtls-authorize] and [I-D.ietf-ace-oscore-profile]. | ||||
o Management of group keying material (see Section 2.1 of | The following security considerations also apply for this profile. | |||
17.1. Management of OSCORE Groups | ||||
This profile leverages the following management aspects related to | ||||
OSCORE groups and discussed in the sections of | ||||
[I-D.ietf-core-oscore-groupcomm] referred below. | ||||
o Management of group keying material (see Section 2.4 of | ||||
[I-D.ietf-core-oscore-groupcomm]). The Group Manager is | [I-D.ietf-core-oscore-groupcomm]). The Group Manager is | |||
responsible for the renewal and re-distribution of the keying | responsible for the renewal and re-distribution of the keying | |||
material in the groups of its competence (rekeying). According to | material in the groups of its competence (rekeying). According to | |||
the specific application requirements, this can include rekeying | the specific application requirements, this can include rekeying | |||
the group upon changes in its membership. In particular, renewing | the group upon changes in its membership. In particular, renewing | |||
the group keying material is required upon a new node's joining or | the group keying material is required upon a new node's joining or | |||
a current node's leaving, in case backward security and forward | a current node's leaving, in case backward security and forward | |||
security have to be preserved, respectively. | security have to be preserved, respectively. | |||
o Provisioning and retrieval of public keys (see Section 2 of | o Provisioning and retrieval of public keys (see Section 2 of | |||
[I-D.ietf-core-oscore-groupcomm]). The Group Manager acts as key | [I-D.ietf-core-oscore-groupcomm]). The Group Manager acts as key | |||
repository of public keys of group members, and provides them upon | repository of public keys of group members, and provides them upon | |||
request. | request. | |||
o Synchronization of sequence numbers (see Section 5.1 of | o Synchronization of sequence numbers (see Section 6.1 of | |||
[I-D.ietf-core-oscore-groupcomm]). This concerns how a responder | [I-D.ietf-core-oscore-groupcomm]). This concerns how a responder | |||
node that has just joined an OSCORE group can synchronize with the | node that has just joined an OSCORE group can synchronize with the | |||
sequence number of requesters in the same group. | sequence number of requesters in the same group. | |||
Before sending the Joining Response, the Group Manager MUST verify | Before sending the Joining Response, the Group Manager MUST verify | |||
that the joining node actually owns the associated private key. To | that the joining node actually owns the associated private key. To | |||
this end, the Group Manager can rely on the proof-of-possession | this end, the Group Manager can rely on the proof-of-possession | |||
challenge-response defined in Section 4. Alternatively, the joining | challenge-response defined in Section 5. Alternatively, the joining | |||
node can use its own public key as asymmetric proof-of-possession key | node can use its own public key as asymmetric proof-of-possession key | |||
to establish a secure channel with the Group Manager, e.g. as in | to establish a secure channel with the Group Manager, e.g. as in | |||
Section 3.2 of [I-D.ietf-ace-dtls-authorize]. However, this requires | Section 3.2 of [I-D.ietf-ace-dtls-authorize]. However, this requires | |||
such proof-of-possession key to be compatible with the encoding as | such proof-of-possession key to be compatible with the encoding as | |||
well as with the countersignature algorithm and possible associated | well as with the countersignature algorithm and possible associated | |||
parameters used in the OSCORE group. | parameters used in the OSCORE group. | |||
A node may have joined multiple OSCORE groups under different non- | A node may have joined multiple OSCORE groups under different non- | |||
synchronized Group Managers. Therefore, it can happen that those | synchronized Group Managers. Therefore, it can happen that those | |||
OSCORE groups have the same Group Identifier (Gid). It follows that, | OSCORE groups have the same Group Identifier (Gid). It follows that, | |||
upon receiving a Group OSCORE message addressed to one of those | upon receiving a Group OSCORE message addressed to one of those | |||
groups, the node would have multiple Security Contexts matching with | groups, the node would have multiple Security Contexts matching with | |||
the Gid in the incoming message. It is up to the application to | the Gid in the incoming message. It is up to the application to | |||
decide how to handle such collisions of Group Identifiers, e.g. by | decide how to handle such collisions of Group Identifiers, e.g. by | |||
trying to process the incoming message using one Security Context at | trying to process the incoming message using one Security Context at | |||
the time until the right one is found. | the time until the right one is found. | |||
Further security considerations are inherited from | 17.2. Size of Nonces for Signature Challenge | |||
[I-D.ietf-ace-key-groupcomm], the ACE framework for Authentication | ||||
and Authorization [I-D.ietf-ace-oauth-authz], and the specific | ||||
transport profile of ACE signalled by the AS, such as | ||||
[I-D.ietf-ace-dtls-authorize] and [I-D.ietf-ace-oscore-profile]. | ||||
15. IANA Considerations | With reference to the Joining Request message in Section 5.2, the | |||
proof-of-possession signature included in 'client_cred_verify' is | ||||
computed over the challenge N_C | N_S, where | denotes concatenation. | ||||
For the N_C value, it is RECOMMENDED to use a 8-byte long random | ||||
nonce. Furthermore, N_C is always conveyed in the 'cnonce' parameter | ||||
of the Joining Request, which is always sent over the secure | ||||
communication channel between the joining node and the Group Manager. | ||||
As defined in Section 5.2.1, the way the N_S value is computed | ||||
depends on the particular interaction between the joining node and | ||||
the Group Manager. | ||||
o If the Access Token is not explicitly posted to the /authz-info | ||||
endpoint of the Group Manager, or if the joining node re-joins | ||||
without re-posting the same still valid Access Token, then N_S is | ||||
computed as a 32-byte long nonce (see points (2) and (3) of | ||||
Section 5.2.1). | ||||
o If the Access Token has been explicitly posted to the /authz-info | ||||
endpoint of the Group Manager, N_S takes the value conveyed in the | ||||
'rsnonce' parameter of the 2.01 response to the Token Post (see | ||||
Section 5.1). Similarly, if a Joining Request is not successfully | ||||
processed by the Group Manager, the returned error response should | ||||
also include the 'rsnonce' parameter specifying a new nonce N_S | ||||
(see Section 5.3). In either case, it is RECOMMENDED to use a | ||||
8-byte long random nonce as value for N_S. | ||||
If we consider both N_C and N_S to be 8-byte long nonces, the | ||||
following considerations hold. | ||||
o If both N_C and N_S are random nonces, the average collision for | ||||
each nonce will happen after 2^32 messages, as per the birthday | ||||
paradox and as also discussed in Section 7 of | ||||
[I-D.ietf-ace-oscore-profile]. This amounts to considerably more | ||||
token provisionings than the expected new joinings of OSCORE | ||||
groups under a same Group Manager. | ||||
o If N_C and N_S are not generated randomly, e.g. by using a | ||||
counter, the joining node and the Group Manager need to guarantee | ||||
that reboot and loss of state on either node does not provoke re- | ||||
use. If that is not guaranteed, a joining node may repeatedly | ||||
post a valid Access Token to the /authz-info endpoint of the Group | ||||
Manager, until it gets back an exact, re-used value N_S* to use as | ||||
nonce. Then, the joining node can send a Joining Request, | ||||
conveying a reused N_C* nonce in 'cnonce' and an old stored | ||||
signature in 'client_cred_verify', computed over N_C* | N_S*. By | ||||
verifying the signature, the Group Manager would falsely believe | ||||
that the joining node possesses its own private key at that point | ||||
in time. | ||||
o Since N_C is always conveyed in a secured Joining Request, it is | ||||
practically infeasible for an on-path attacker to replay Joining | ||||
Requests from a joining node to the Group Manager, in order to | ||||
cause that joining node to use an arbitrary nonce N_S. | ||||
o Section 7 of [I-D.ietf-ace-oscore-profile] as well Appendix B.2 of | ||||
[RFC8613] recommend the use of 8-byte random nonces as well. | ||||
Unlike in those cases, the nonces N_C and N_S considered in this | ||||
specification are not used for as sensitive operations as the | ||||
derivation of a Security Context, with possible implications in | ||||
the security of AEAD ciphers. | ||||
18. IANA Considerations | ||||
Note to RFC Editor: Please replace all occurrences of "[[This | Note to RFC Editor: Please replace all occurrences of "[[This | |||
specification]]" with the RFC number of this specification and delete | specification]]" with the RFC number of this specification and delete | |||
this paragraph. | this paragraph. | |||
This document has the following actions for IANA. | This document has the following actions for IANA. | |||
15.1. ACE Groupcomm Key Registry | 18.1. ACE Groupcomm Profile Registry | |||
IANA is asked to register the following entry in the "ACE Groupcomm | IANA is asked to register the following entry in the "ACE Groupcomm | |||
Key" Registry defined in Section 8.4 of [I-D.ietf-ace-key-groupcomm]. | Profile" Registry defined in Section 9.6 of | |||
[I-D.ietf-ace-key-groupcomm]. | ||||
o Name: coap_group_oscore_app | ||||
o Description: Application profile to provision keying material for | ||||
participating in group communication protected with Group OSCORE | ||||
as per [I-D.ietf-core-oscore-groupcomm]. | ||||
o CBOR Value: TBD1 | ||||
o Reference: [[This specification]] (Section 5.4) | ||||
18.2. ACE Groupcomm Key Registry | ||||
IANA is asked to register the following entry in the "ACE Groupcomm | ||||
Key" Registry defined in Section 9.5 of [I-D.ietf-ace-key-groupcomm]. | ||||
o Name: Group_OSCORE_Security_Context object | o Name: Group_OSCORE_Security_Context object | |||
o Key Type Value: TBD | o Key Type Value: TBD2 | |||
o Profile: "coap_group_oscore_app", defined in Section 15.3 of this | o Profile: "coap_group_oscore_app", defined in Section 18.1 of this | |||
specification. | specification. | |||
o Description: A Group_OSCORE_Security_Context object encoded as | o Description: A Group_OSCORE_Security_Context object encoded as | |||
described in Section 4.4 of this specification. | described in Section 5.4 of this specification. | |||
o Reference: [[This specification]] | o Reference: [[This specification]] (Section 5.4) | |||
15.2. OSCORE Security Context Parameters Registry | 18.3. OSCORE Security Context Parameters Registry | |||
IANA is asked to register the following entries in the "OSCORE | IANA is asked to register the following entries in the "OSCORE | |||
Security Context Parameters" Registry defined in Section 9.2 of | Security Context Parameters" Registry defined in Section 9.4 of | |||
[I-D.ietf-ace-oscore-profile]. | [I-D.ietf-ace-oscore-profile]. | |||
o Name: cs_alg | o Name: cs_alg | |||
o CBOR Label: TBD | o CBOR Label: TBD3 | |||
o CBOR Type: tstr / int | o CBOR Type: tstr / int | |||
o Registry: COSE Algorithm Values (ECDSA, EdDSA) | o Registry: COSE Algorithm Values (ECDSA, EdDSA) | |||
o Description: OSCORE Counter Signature Algorithm Value | o Description: OSCORE Counter Signature Algorithm Value | |||
o Reference: [[This specification]] | o Reference: [[This specification]] (Section 5.4) | |||
o Name: cs_params | o Name: cs_params | |||
o CBOR Label: TBD | o CBOR Label: TBD4 | |||
o CBOR Type: map | o CBOR Type: map | |||
o Registry: Counter Signatures Parameters | o Registry: Counter Signatures Parameters | |||
o Description: OSCORE Counter Signature Algorithm Additional | o Description: OSCORE Counter Signature Algorithm Additional | |||
Parameters | Parameters | |||
o Reference: [[This specification]] | o Reference: [[This specification]] (Section 5.4) | |||
o Name: cs_key_params | o Name: cs_key_params | |||
o CBOR Label: TBD | o CBOR Label: TBD5 | |||
o CBOR Type: map | o CBOR Type: map | |||
o Registry: Counter Signatures Key Parameters | o Registry: Counter Signatures Key Parameters | |||
o Description: OSCORE Counter Signature Key Additional Parameters | o Description: OSCORE Counter Signature Key Additional Parameters | |||
o Reference: [[This specification]] | o Reference: [[This specification]] (Section 5.4) | |||
o Name: cs_key_enc | o Name: cs_key_enc | |||
o CBOR Label: TBD | o CBOR Label: TBD6 | |||
o CBOR Type: integer | o CBOR Type: integer | |||
o Registry: ACE Public Key Encoding | o Registry: ACE Public Key Encoding | |||
o Description: Encoding of Public Keys to be used with the OSCORE | o Description: Encoding of Public Keys to be used with the OSCORE | |||
Counter Signature Algorithm | Counter Signature Algorithm | |||
o Reference: [[This specification]] | o Reference: [[This specification]] (Section 5.4) | |||
15.3. ACE Groupcomm Profile Registry | ||||
IANA is asked to register the following entry in the "ACE Groupcomm | ||||
Profile" Registry defined in Section 8.5 of | ||||
[I-D.ietf-ace-key-groupcomm]. | ||||
o Name: coap_group_oscore_app | ||||
o Description: Application profile to provision keying material for | ||||
participating in group communication protected with Group OSCORE | ||||
as per [I-D.ietf-core-oscore-groupcomm]. | ||||
o CBOR Value: TBD | ||||
o Reference: [[This specification]] | ||||
15.4. Sequence Number Synchronization Method Registry | 18.4. Sequence Number Synchronization Method Registry | |||
IANA is asked to register the following entries in the "Sequence | IANA is asked to register the following entries in the "Sequence | |||
Number Synchronization Method" Registry defined in Section 8.7 of | Number Synchronization Method" Registry defined in Section 9.8 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
o Name: Best effort | o Name: Best effort | |||
o Value: 1 | o Value: 1 | |||
o Description: No action is taken. | o Description: No action is taken. | |||
o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.1). | o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.1) | |||
o Name: Baseline | o Name: Baseline | |||
o Value: 2 | o Value: 2 | |||
o Description: The first received request sets the baseline | o Description: The first received request sets the baseline | |||
reference point, and is discarded with no delivery to the | reference point, and is discarded with no delivery to the | |||
application. | application. | |||
o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.2). | o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.2) | |||
o Name: Echo challenge-response | o Name: Echo challenge-response | |||
o Value: 3 | o Value: 3 | |||
o Description: Challenge response using the Echo Option for CoAP | o Description: Challenge response using the Echo Option for CoAP | |||
from [I-D.ietf-core-echo-request-tag]. | from [I-D.ietf-core-echo-request-tag]. | |||
o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.3). | o Reference: [I-D.ietf-core-oscore-groupcomm] (Appendix E.3) | |||
15.5. ACE Groupcomm Parameters Registry | 18.5. ACE Groupcomm Parameters Registry | |||
IANA is asked to register the following entry in the "ACE Groupcomm | IANA is asked to register the following entry in the "ACE Groupcomm | |||
Parameters" Registry defined in Section 8.3 of | Parameters" Registry defined in Section 9.4 of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
o Name: clientId | o Name: clientId | |||
o CBOR Key: TBD | o CBOR Key: TBD7 | |||
o CBOR Type: Byte string | o CBOR Type: Byte string | |||
o Reference: [[This document]] (Section 7). | o Reference: [[This specification]] (Section 8) | |||
16. References | 18.6. TLS Exporter Label Registry | |||
16.1. Normative References | IANA is asked to register the following entry in the "TLS Exporter | |||
Label" Registry defined in Section 6 of [RFC5705] and updated in | ||||
Section 12 of [RFC8447]. | ||||
o Value: EXPORTER-ACE-Sign-Challenge-coap-group-oscore-app | ||||
o DTLS-OK: Y | ||||
o Recommended: N | ||||
o Reference: [[This specification]] (Section 5.2.1) | ||||
19. References | ||||
19.1. Normative References | ||||
[I-D.ietf-ace-cwt-proof-of-possession] | [I-D.ietf-ace-cwt-proof-of-possession] | |||
Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | |||
Tschofenig, "Proof-of-Possession Key Semantics for CBOR | Tschofenig, "Proof-of-Possession Key Semantics for CBOR | |||
Web Tokens (CWTs)", draft-ietf-ace-cwt-proof-of- | Web Tokens (CWTs)", draft-ietf-ace-cwt-proof-of- | |||
possession-11 (work in progress), October 2019. | possession-11 (work in progress), October 2019. | |||
[I-D.ietf-ace-key-groupcomm] | [I-D.ietf-ace-key-groupcomm] | |||
Palombini, F. and M. Tiloca, "Key Provisioning for Group | Palombini, F. and M. Tiloca, "Key Provisioning for Group | |||
Communication using ACE", draft-ietf-ace-key-groupcomm-04 | Communication using ACE", draft-ietf-ace-key-groupcomm-05 | |||
(work in progress), January 2020. | (work in progress), March 2020. | |||
[I-D.ietf-ace-oauth-authz] | [I-D.ietf-ace-oauth-authz] | |||
Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and | Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and | |||
H. Tschofenig, "Authentication and Authorization for | H. Tschofenig, "Authentication and Authorization for | |||
Constrained Environments (ACE) using the OAuth 2.0 | Constrained Environments (ACE) using the OAuth 2.0 | |||
Framework (ACE-OAuth)", draft-ietf-ace-oauth-authz-30 | Framework (ACE-OAuth)", draft-ietf-ace-oauth-authz-33 | |||
(work in progress), January 2020. | (work in progress), February 2020. | |||
[I-D.ietf-ace-oscore-profile] | [I-D.ietf-ace-oscore-profile] | |||
Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, | Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, | |||
"OSCORE profile of the Authentication and Authorization | "OSCORE profile of the Authentication and Authorization | |||
for Constrained Environments Framework", draft-ietf-ace- | for Constrained Environments Framework", draft-ietf-ace- | |||
oscore-profile-08 (work in progress), July 2019. | oscore-profile-10 (work in progress), March 2020. | |||
[I-D.ietf-core-oscore-groupcomm] | [I-D.ietf-core-oscore-groupcomm] | |||
Tiloca, M., Selander, G., Palombini, F., and J. Park, | Tiloca, M., Selander, G., Palombini, F., and J. Park, | |||
"Group OSCORE - Secure Group Communication for CoAP", | "Group OSCORE - Secure Group Communication for CoAP", | |||
draft-ietf-core-oscore-groupcomm-06 (work in progress), | draft-ietf-core-oscore-groupcomm-07 (work in progress), | |||
November 2019. | March 2020. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5705] Rescorla, E., "Keying Material Exporters for Transport | ||||
Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, | ||||
March 2010, <https://www.rfc-editor.org/info/rfc5705>. | ||||
[RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | |||
Key Derivation Function (HKDF)", RFC 5869, | Key Derivation Function (HKDF)", RFC 5869, | |||
DOI 10.17487/RFC5869, May 2010, | DOI 10.17487/RFC5869, May 2010, | |||
<https://www.rfc-editor.org/info/rfc5869>. | <https://www.rfc-editor.org/info/rfc5869>. | |||
[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | |||
Application Protocol (CoAP)", RFC 7252, | Application Protocol (CoAP)", RFC 7252, | |||
DOI 10.17487/RFC7252, June 2014, | DOI 10.17487/RFC7252, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7252>. | <https://www.rfc-editor.org/info/rfc7252>. | |||
skipping to change at page 26, line 5 ¶ | skipping to change at page 31, line 13 ¶ | |||
<https://www.rfc-editor.org/info/rfc8152>. | <https://www.rfc-editor.org/info/rfc8152>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8447] Salowey, J. and S. Turner, "IANA Registry Updates for TLS | ||||
and DTLS", RFC 8447, DOI 10.17487/RFC8447, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8447>. | ||||
[RFC8613] Selander, G., Mattsson, J., Palombini, F., and L. Seitz, | [RFC8613] Selander, G., Mattsson, J., Palombini, F., and L. Seitz, | |||
"Object Security for Constrained RESTful Environments | "Object Security for Constrained RESTful Environments | |||
(OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019, | (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019, | |||
<https://www.rfc-editor.org/info/rfc8613>. | <https://www.rfc-editor.org/info/rfc8613>. | |||
16.2. Informative References | 19.2. Informative References | |||
[I-D.dijk-core-groupcomm-bis] | [I-D.dijk-core-groupcomm-bis] | |||
Dijk, E., Wang, C., and M. Tiloca, "Group Communication | Dijk, E., Wang, C., and M. Tiloca, "Group Communication | |||
for the Constrained Application Protocol (CoAP)", draft- | for the Constrained Application Protocol (CoAP)", draft- | |||
dijk-core-groupcomm-bis-02 (work in progress), November | dijk-core-groupcomm-bis-03 (work in progress), March | |||
2019. | 2020. | |||
[I-D.ietf-ace-dtls-authorize] | [I-D.ietf-ace-dtls-authorize] | |||
Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and | Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and | |||
L. Seitz, "Datagram Transport Layer Security (DTLS) | L. Seitz, "Datagram Transport Layer Security (DTLS) | |||
Profile for Authentication and Authorization for | Profile for Authentication and Authorization for | |||
Constrained Environments (ACE)", draft-ietf-ace-dtls- | Constrained Environments (ACE)", draft-ietf-ace-dtls- | |||
authorize-09 (work in progress), December 2019. | authorize-09 (work in progress), December 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-03 (work in | ||||
progress), December 2019. | ||||
[I-D.ietf-core-coap-pubsub] | [I-D.ietf-core-coap-pubsub] | |||
Koster, M., Keranen, A., and J. Jimenez, "Publish- | Koster, M., Keranen, A., and J. Jimenez, "Publish- | |||
Subscribe Broker for the Constrained Application Protocol | Subscribe Broker for the Constrained Application Protocol | |||
(CoAP)", draft-ietf-core-coap-pubsub-09 (work in | (CoAP)", draft-ietf-core-coap-pubsub-09 (work in | |||
progress), September 2019. | progress), September 2019. | |||
[I-D.ietf-core-echo-request-tag] | [I-D.ietf-core-echo-request-tag] | |||
Amsuess, C., Mattsson, J., and G. Selander, "CoAP: Echo, | Amsuess, C., Mattsson, J., and G. Selander, "CoAP: Echo, | |||
Request-Tag, and Token Processing", draft-ietf-core-echo- | Request-Tag, and Token Processing", draft-ietf-core-echo- | |||
request-tag-08 (work in progress), November 2019. | request-tag-09 (work in progress), March 2020. | |||
[I-D.tiloca-ace-oscore-gm-admin] | ||||
Tiloca, M., Hoeglund, R., Stok, P., and F. Palombini, | ||||
"Admin Interface for the OSCORE Group Manager", draft- | ||||
tiloca-ace-oscore-gm-admin-01 (work in progress), March | ||||
2020. | ||||
[I-D.tiloca-core-oscore-discovery] | [I-D.tiloca-core-oscore-discovery] | |||
Tiloca, M., Amsuess, C., and P. Stok, "Discovery of OSCORE | Tiloca, M., Amsuess, C., and P. Stok, "Discovery of OSCORE | |||
Groups with the CoRE Resource Directory", draft-tiloca- | Groups with the CoRE Resource Directory", draft-tiloca- | |||
core-oscore-discovery-04 (work in progress), November | core-oscore-discovery-05 (work in progress), March | |||
2019. | 2020. | |||
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | |||
January 2012, <https://www.rfc-editor.org/info/rfc6347>. | January 2012, <https://www.rfc-editor.org/info/rfc6347>. | |||
[RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", | [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", | |||
RFC 6749, DOI 10.17487/RFC6749, October 2012, | RFC 6749, DOI 10.17487/RFC6749, October 2012, | |||
<https://www.rfc-editor.org/info/rfc6749>. | <https://www.rfc-editor.org/info/rfc6749>. | |||
[RFC7641] Hartke, K., "Observing Resources in the Constrained | [RFC7641] Hartke, K., "Observing Resources in the Constrained | |||
Application Protocol (CoAP)", RFC 7641, | Application Protocol (CoAP)", RFC 7641, | |||
DOI 10.17487/RFC7641, September 2015, | DOI 10.17487/RFC7641, September 2015, | |||
<https://www.rfc-editor.org/info/rfc7641>. | <https://www.rfc-editor.org/info/rfc7641>. | |||
Appendix A. Profile Requirements | Appendix A. Profile Requirements | |||
This appendix lists the specifications on this application profile of | This appendix lists the specifications on this application profile of | |||
ACE, based on the requiremens defined in Appendix A of | ACE, based on the requiremens defined in Appendix A of | |||
[I-D.ietf-ace-key-groupcomm]. | [I-D.ietf-ace-key-groupcomm]. | |||
o REQ1 - Specify the encoding and value of the identifier of group | o REQ1 - Specify the encoding and value of the identifier of group, | |||
of 'scope': see Section 3.1. | for scope entries of 'scope': see Section 3.1. | |||
o REQ2 - Specify the encoding and value of the identifier of roles | o REQ2 - Specify the encoding and value of roles, for scope entries | |||
of 'scope': see Section 3.1. | of 'scope': see Section 3.1. | |||
o REQ3 - if used, specify the acceptable values for 'sign_alg': | o REQ3 - if used, specify the acceptable values for 'sign_alg': | |||
values from Tables 5 and 6 of [RFC8152]. | values from Tables 5 and 6 of [RFC8152]. | |||
o REQ4 - If used, specify the acceptable values for | o REQ4 - If used, specify the acceptable values for | |||
'sign_parameters': values from the "Counter Signature Parameters" | 'sign_parameters': values from the "Counter Signature Parameters" | |||
Registry (see Section 9.1 of [I-D.ietf-core-oscore-groupcomm]). | Registry (see Section 11.1 of [I-D.ietf-core-oscore-groupcomm]). | |||
o REQ5 - If used, specify the acceptable values for | o REQ5 - If used, specify the acceptable values for | |||
'sign_key_parameters': values from the "Counter Signature Key | 'sign_key_parameters': values from the "Counter Signature Key | |||
Parameters" Registry (see Section 9.2 of | Parameters" Registry (see Section 11.2 of | |||
[I-D.ietf-core-oscore-groupcomm]). | [I-D.ietf-core-oscore-groupcomm]). | |||
o REQ6 - If used, specify the acceptable values for 'pub_key_enc': 1 | o REQ6 - If used, specify the acceptable values for 'pub_key_enc': 1 | |||
("COSE_Key") from the 'Confirmation Key' column of the "CWT | ("COSE_Key") from the 'Confirmation Key' column of the "CWT | |||
Confirmation Method" Registry defined in | Confirmation Method" Registry defined in | |||
[I-D.ietf-ace-cwt-proof-of-possession]. Future specifications may | [I-D.ietf-ace-cwt-proof-of-possession]. Future specifications may | |||
define additional values for this parameter. | define additional values for this parameter. | |||
o REQ7 - Format of the 'key' value: see Section 4.4. | o REQ7 - Format of the 'key' value: see Section 5.4. | |||
o REQ8 - Acceptable values of 'gkty': Group_OSCORE_Security_Context | o REQ8 - Acceptable values of 'gkty': Group_OSCORE_Security_Context | |||
object (see Section 4.4). | object (see Section 5.4). | |||
o REQ9: Specify the format of the identifiers of group members: see | o REQ9: Specify the format of the identifiers of group members: see | |||
Section 4.4 and Section 8. | Section 5.4 and Section 9. | |||
o REQ10 - Specify the communication protocol that the members of the | o REQ10 - Specify the communication protocol that the members of the | |||
group must use: CoAP, possibly over IP multicast. | group must use: CoAP, possibly over IP multicast. | |||
o REQ11 - Specify the security protocols that the group members must | o REQ11 - Specify the security protocols that the group members must | |||
use to protect their communication: Group OSCORE. | use to protect their communication: Group OSCORE. | |||
o REQ12 - Specify and register the application profile identifier: | o REQ12 - Specify and register the application profile identifier: | |||
coap_group_oscore_app (see Section 15.3). | coap_group_oscore_app (see Section 18.1). | |||
o REQ13 - Specify policies at the KDC to handle member ids that are | o REQ13 - Specify policies at the KDC to handle member ids that are | |||
not included in 'get_pub_keys': see Section 8. | not included in 'get_pub_keys': see Section 9. | |||
o REQ14 - If used, specify the format and content of | o REQ14 - If used, specify the format and content of | |||
'group_policies' and its entries: see Section 4.4, and the three | 'group_policies' and its entries: see Section 5.4, and the three | |||
values defined and registered, as content of the entry "Sequence | values defined and registered, as content of the entry "Sequence | |||
Number Synchronization Method" (see Section 15.4). | Number Synchronization Method" (see Section 18.4). | |||
o REQ15 - Specify the format of newly-generated individual keying | o REQ15 - Specify the format of newly-generated individual keying | |||
material for group members, or of the information to derive it, | material for group members, or of the information to derive it, | |||
and corresponding CBOR label: see Section 7. | and corresponding CBOR label: see Section 8. | |||
o REQ16 - Specify how the communication is secured between the | o REQ16 - Specify how the communication is secured between the | |||
Client and KDC: by means of any transport profile of ACE | Client and KDC: by means of any transport profile of ACE | |||
[I-D.ietf-ace-oauth-authz] between Client and Group Manager that | [I-D.ietf-ace-oauth-authz] between Client and Group Manager that | |||
complies with the requirements in Appendix C of | complies with the requirements in Appendix C of | |||
[I-D.ietf-ace-oauth-authz]. | [I-D.ietf-ace-oauth-authz]. | |||
o REQ17: Specify how the nonce N_S is generated, if the token is not | o REQ17: Specify how the nonce N_S is generated, if the token is not | |||
being posted (e.g. if it is used directly to validate TLS | being posted (e.g. if it is used directly to validate TLS | |||
instead): see Section 4.2.1. | instead): see Section 5.2.1. | |||
o REQ18: Specify if 'mgt_key_material' used, and if yes specify its | o REQ18: Specify if 'mgt_key_material' used, and if yes specify its | |||
format and content: not used in this version of the profile. | format and content: not used in this version of the profile. | |||
o OPT1 (Optional) - Specify the encoding of public keys, of | o OPT1 (Optional) - Specify the encoding of public keys, of | |||
'client_cred', and of 'pub_keys' if COSE_Keys are not used: no. | 'client_cred', and of 'pub_keys' if COSE_Keys are not used: no. | |||
o OPT2 (Optional) - Specify the negotiation of parameter values for | o OPT2 (Optional) - Specify the negotiation of parameter values for | |||
signature algorithm and signature keys, if 'sign_info' and | signature algorithm and signature keys, if 'sign_info' and | |||
'pub_key_enc' are not used: possible early discovery by using the | 'pub_key_enc' are not used: possible early discovery by using the | |||
skipping to change at page 29, line 11 ¶ | skipping to change at page 34, line 16 ¶ | |||
o OPT3 (Optional) - Specify the encoding of 'pub_keys_repos' if the | o OPT3 (Optional) - Specify the encoding of 'pub_keys_repos' if the | |||
default is not used: no. | default is not used: no. | |||
o OPT4 (Optional) - Specify policies that instruct clients to retain | o OPT4 (Optional) - Specify policies that instruct clients to retain | |||
unsuccessfully decrypted messages and for how long, so that they | unsuccessfully decrypted messages and for how long, so that they | |||
can be decrypted after getting updated keying material: no. | can be decrypted after getting updated keying material: no. | |||
o OPT5 (Optional) - Specify the behavior of the handler in case of | o OPT5 (Optional) - Specify the behavior of the handler in case of | |||
failure to retrieve a public key for the specific node: send a | failure to retrieve a public key for the specific node: send a | |||
4.00 Bad Request response to a Joining Request (see Section 4.3). | 4.00 Bad Request response to a Joining Request (see Section 5.3). | |||
o OPT6 (Optional) - Specify possible or required payload formats for | o OPT6 (Optional) - Specify possible or required payload formats for | |||
specific error cases: send a 4.00 Bad Request response to a | specific error cases: send a 4.00 Bad Request response to a | |||
Joining Request (see Section 4.3). | Joining Request (see Section 5.3). | |||
o OPT7 (Optional) - Specify CBOR values to use for abbreviating | ||||
identifiers of roles in the group or topic (see Section 3.1). | ||||
o OPT8 (Optional) - Specify policies for the KDC to perform group | ||||
rekeying after receiving a Key Renewal Request: no. | ||||
Appendix B. Document Updates | Appendix B. Document Updates | |||
RFC EDITOR: PLEASE REMOVE THIS SECTION. | RFC EDITOR: PLEASE REMOVE THIS SECTION. | |||
B.1. Version -03 to -04 | B.1. Version -04 to -05 | |||
o Nonce N_S also in error responses to the Joining Requests. | ||||
o Supporting single Access Token for multiple groups/topics. | ||||
o Supporting legal requesters/responders using the 'peer_roles' | ||||
parameter. | ||||
o Registered and used dedicated label for TLS Exporter. | ||||
o Added method for uploading a new public key to the Group Manager. | ||||
o Added resource and method for retrieving the current group status. | ||||
o Fixed inconsistency in retrieving group keying material only. | ||||
o Clarified retrieval of keying material for monitor-only members. | ||||
o Clarification on incrementing version number when rekeying the | ||||
group. | ||||
o Clarification on what is re-distributed with the group rekeying. | ||||
o Security considerations on the size of the nonces used for the | ||||
signature challenge. | ||||
o Added CBOR values to abbreviate role identifiers in the group. | ||||
B.2. Version -03 to -04 | ||||
o New abstract. | o New abstract. | |||
o Moved general content to draft-ietf-ace-key-groupcomm | o Moved general content to draft-ietf-ace-key-groupcomm | |||
o Terminology: node name; node resource. | o Terminology: node name; node resource. | |||
o Creation and pointing at node resource. | o Creation and pointing at node resource. | |||
o Updated Group Manager API (REST methods and offered services). | o Updated Group Manager API (REST methods and offered services). | |||
skipping to change at page 29, line 43 ¶ | skipping to change at page 35, line 37 ¶ | |||
o Size of challenges 'cnonce' and 'rsnonce'. | o Size of challenges 'cnonce' and 'rsnonce'. | |||
o Value of 'rsnonce' for reused or non-traditionally-posted tokens. | o Value of 'rsnonce' for reused or non-traditionally-posted tokens. | |||
o Removed reference to RFC 7390. | o Removed reference to RFC 7390. | |||
o New requirements from draft-ietf-ace-key-groupcomm | o New requirements from draft-ietf-ace-key-groupcomm | |||
o Editorial improvements. | o Editorial improvements. | |||
B.2. Version -02 to -03 | B.3. Version -02 to -03 | |||
o New sections, aligned with the interface of ace-key-groupcomm . | o New sections, aligned with the interface of ace-key-groupcomm . | |||
o Exchange of information on the countersignature algorithm and | o Exchange of information on the countersignature algorithm and | |||
related parameters, during the Token POST (Section 4.1). | related parameters, during the Token POST (Section 4.1). | |||
o Nonce 'rsnonce' from the Group Manager to the Client | o Nonce 'rsnonce' from the Group Manager to the Client | |||
(Section 4.1). | (Section 4.1). | |||
o Client PoP signature in the Key Distribution Request upon joining | o Client PoP signature in the Key Distribution Request upon joining | |||
skipping to change at page 30, line 18 ¶ | skipping to change at page 36, line 12 ¶ | |||
o Local actions on the Group Manager, upon a new node's joining | o Local actions on the Group Manager, upon a new node's joining | |||
(Section 4.2). | (Section 4.2). | |||
o Local actions on the Group Manager, upon a node's leaving | o Local actions on the Group Manager, upon a node's leaving | |||
(Section 12). | (Section 12). | |||
o IANA registration in ACE Groupcomm Parameters Registry. | o IANA registration in ACE Groupcomm Parameters Registry. | |||
o More fulfilled profile requirements (Appendix A). | o More fulfilled profile requirements (Appendix A). | |||
B.3. Version -01 to -02 | B.4. Version -01 to -02 | |||
o Editorial fixes. | o Editorial fixes. | |||
o Changed: "listener" to "responder"; "pure listener" to "monitor". | o Changed: "listener" to "responder"; "pure listener" to "monitor". | |||
o Changed profile name to "coap_group_oscore_app", to reflect it is | o Changed profile name to "coap_group_oscore_app", to reflect it is | |||
an application profile. | an application profile. | |||
o Added the 'type' parameter for all requests to a Join Resource. | o Added the 'type' parameter for all requests to a Join Resource. | |||
skipping to change at page 31, line 8 ¶ | skipping to change at page 37, line 5 ¶ | |||
o Extended security considerations: proof-of-possession of signature | o Extended security considerations: proof-of-possession of signature | |||
keys; collision of OSCORE Group Identifiers (Section 8). | keys; collision of OSCORE Group Identifiers (Section 8). | |||
o Registered three entries in the IANA Registry "Sequence Number | o Registered three entries in the IANA Registry "Sequence Number | |||
Synchronization Method Registry" (Section 9). | Synchronization Method Registry" (Section 9). | |||
o Registered one public key encoding in the "ACE Public Key | o Registered one public key encoding in the "ACE Public Key | |||
Encoding" IANA Registry (Section 9). | Encoding" IANA Registry (Section 9). | |||
B.4. Version -00 to -01 | B.5. Version -00 to -01 | |||
o Changed name of 'req_aud' to 'audience' in the Authorization | o Changed name of 'req_aud' to 'audience' in the Authorization | |||
Request (Section 3.1). | Request (Section 3.1). | |||
o Added negotiation of countersignature algorithm/parameters between | o Added negotiation of countersignature algorithm/parameters between | |||
Client and Group Manager (Section 4). | Client and Group Manager (Section 4). | |||
o Updated format of the Key Distribution Response as a whole | o Updated format of the Key Distribution Response as a whole | |||
(Section 4.3). | (Section 4.3). | |||
End of changes. 146 change blocks. | ||||
273 lines changed or deleted | 572 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |