Hello.

As part of the shepherding process I have performed a review of 
draft-ietf-ace-key-groupcomm-oscore-15. Overall I think the document is in a 
good state, see my feedback below.

Best
Rikard Höglund



[Terminology]

*It could be good to explain the REQX terminology used throughout. Perhaps in 
the following paragraph? (The REQX terminology also comes from 
ietf-ace-key-groupcomm).

"The terms and concept related to the message formats and processing specified 
in [I-D.ietf-ace-key-groupcomm], for provisioning and renewing keying material 
in group communication scenarios."


[Section 3]

*The following CDDL fails to validate using CDDLC 
(https://github.com/cabo/cddlc):

   AIF-OSCORE-GROUPCOMM = AIF-Generic<oscore-gname, oscore-gperm>

   oscore-gname = tstr  ; Group name
   oscore-gperm = uint . bits group-oscore-roles

   group-oscore-roles = &(
      Requester: 1,
      Responder: 2,
      Monitor: 3,
      Verifier: 4
   )

Suggested fix:
. bits group-oscore-roles -> .bits group-oscore-roles


[Section 4]

*"In particular, one of the following four cases can occur when a new node 
joins an OSCORE group."

General comment on the use of "in particular", it is used a lot in the document 
and seems like it can be removed for many of the instances without loss of 
meaning.

*It would be nice to simplify the 4 cases, and sub-cases, that can happen when 
a node joins a group. It seems to me there are 3 cases: 1. The joining node is 
joining as monitor and does not have to provide credentials. 2. The GM already 
has the credentials for the joining node, either from a previous joining or the 
secure communication association establishment. 3. The GM does not have the 
authentication credentials, so they must be sent by the joining node.


[Section 5.3]

*"If the 'sign_info' parameter is present in the response, the following 
applies for each element 'sign_info_entry'."

For some elements in the list following that sentence the CBOR type is 
specified, but for some it is not. Either specify it for all, or let it be 
silently inherited from ace-key-groupcomm for all.


[Section 5.3.1]

s/Acces Token/Access Token


*The following CDDL fails to validate using CDDLC 
(https://github.com/cabo/cddlc):

ecdh_info = ecdh_info_req / ecdh_info_resp

ecdh_info_req = null                  ; in the Token Transfer
                                      ; Request to the
                                      ; Group Manager

ecdh_info_res = [ + ecdh_info_entry ] ; in the Token Transfer
                                      ; Response from the
                                      ; Group Manager

ecdh_info_entry =
[
  id : gname / [ + gname ],
  ecdh_alg : int / tstr,
  ecdh_parameters : [ any ],
  ecdh_key_parameters : [ any ],
  cred_fmt = int
]

gname = tstr

Suggested fix:
cred_fmt = int -> cred_fmt : int


*"Each element contains information about ECDH parameters as well as about 
authentication credentials and public keys, for one or more OSCORE groups that 
use the pairwise mode of Group OSCORE and that the Client has been authorized 
to join. Each element is formatted as follows."

In the list following this section, it can be good to make it clear already in 
bullet 1 that 'id' contains on or several 'gname' items.


[Section 5.3.2]

*The following CDDL fails to validate using CDDLC 
(https://github.com/cabo/cddlc):

kdc_dh_creds = kdc_dh_creds_req / kdc_dh_creds_resp

kdc_dh_creds_req = null                     ; in the Token Transfer
                                            ; Request to the
                                            ; Group Manager

kdc_dh_creds_res = [ + kdc_dh_creds_entry ] ; in the Token Transfer
                                            ; Response from the
                                            ; Group Manager

kdc_dh_creds_entry =
[
  id : gname / [ + gname ],
  cred_fmt = int,
  cred = bstr
]

gname = tstr

Suggested fix:
cred_fmt = int, -> cred_fmt : int,
cred = bstr -> cred : bstr


* "Acceptable values denote a format that MUST explicitly provide the public 
key as well as comprehensive set of information related to the public key 
algorithm, including, e.g., the used elliptic curve (when applicable). "

Can this sentence be split or rephrased? It is a bit hard to parse currently.

*"The Group Manager has specifically a Diffie-Hellman authentication credential 
in an OSCORE group, and thus a Diffie-Hellman public key in that group, if and 
only if the group is a pairwise-only group."

Suggested rephrasing:
"The Group Manager has a Diffie-Hellman authentication credential in an OSCORE 
group only if the group is a pairwise-only group."


[Section 6.1]

s/a 8-byte long/an 8-byte long


[Section 6.2]

*"following list: "requester", "responder", "monitor", ("requester", 
"responder")"

Can it be made clearer here, or earlier, that certain combinations of roles are 
not allowed when joining? Like trying to join with roles ("monitor, 
responder"), or using "validator".


*"possibly replacing the currently stored value."

Could be better to say "replacing the currently stored value (if any)"


[Section 6.3]

s/meterial/material

*"If the joining node has not taken exclusively the role of monitor, the Group 
Manager performs also the following actions."

If the node joined as monitor it cannot be anything more right? I would 
rephrase as:
"If the joining node is not a monitor, the Group Manager also performs the 
following actions."
The first bullet right after also repeats the condition again.

Other parts of the text also uses similar phrasing to "exclusively the role of 
monitor". Better to make it clear that it is an exclusive role earlier in the 
text once and for all.


[Section 6.4]

s/group occurred prior/group that occurred prior


[Section 7]

s/prior its joining/prior to its joining

*"Extension of group lifetime"

Should this not be "Expiration of group lifetime"? That is the occasion when 
the Group Manager MUST rekey.


[Section 7.1]

*Maybe this section could be written in a plainer way, and not as an algorithm. 
From what I understand:

"For every version of the keying material the GM should keep a set containing 
Sender IDs of nodes that left or changed Sender ID. This set is distributed to 
group members upon group rekeying. If the GM has to delete sets due to 
space-constraints it MUST start with the set associated with the oldest version 
of the keying material."


[Section 8.5]

s/These data are provided/This data is provided

s/to support only to signature verifiers/to support only for signature verifiers


[Section 9.2]

*"2. Otherwise, the Group Manager takes one of the following actions."

How does the GM determine which of the actions to take?


[Section 9.4]

s/in the same way taken when/in the same way as when


[Section 9.6]

s/These parameter MUST NOT/These parameters MUST NOT

*"Figure 4 shows an example."

Can this be expanded to say it shows an example of a response and request, or a 
bit more description?


[Section 9.9]

s/the the OSCORE group/the OSCORE group

*Looks like the example message exchange is missing Content-Format: 
"application/ace-groupcomm+cbor"


[Section 9.10]

*Any reason it's not possible to get information for all the groups a client 
has access rights to with a GET? Perhaps due to inheritance from 
draft-ietf-ace-key-groupcomm?

*"join the group as a candidate group member"

Better with simply "join the group as a new group member"?


[Section 11]

s/all of which associated with/all associated with


[Section 11.1]

*"The CBOR array has to be intended as a set, i.e., the order of its elements 
is irrelevant."

Suggested rephrasing:
"The order of elements in the CBOR array is irrelevant."


[Section 11.2]

s/Once received the/After having received the


[Section 11.3]

s/MUST request the Group Manager for the authentication/MUST request from the 
Group Manager the authentication


[Section 11.3.1]

s/These data are provided/This data is provided

s/recent set is the one associate to/recent set is the one associated to

*Looks like the example message exchange is missing Content-Format: 
"application/ace-groupcomm+cbor"


[Section 12]

s/that has an own/that has its own


[Section 13]

s/trying re-sending/trying to re-send


[Section 15.1]

s/one ore more/one or more

*"It is up to the application to decide how to handle such collisions of Group 
Identifiers, e.g., by trying to process the incoming message using one Security 
Context at the time until the right one is found."

Perhaps the application can also take advantage of the KID in the case of 
requests? That ID may not exist in one of the groups.


[Section 15.2]

*"joinings of OSCORE groups"

Should it be be "joinings of OSCORE group members", or "joinings to OSCORE 
groups"?


[Section 16.3]

s/these objective/these objectives

s/point assignment/point assignments


[Appendix B.1]

*State that the example for ecdh_info_entry is in CDDL notation. Also, in this 
example the following fix should be needed:
cred_fmt = int / null -> cred_fmt : int / null


_______________________________________________
Ace mailing list
Ace@ietf.org
https://www.ietf.org/mailman/listinfo/ace

Reply via email to