Subject: [Ace] draft-ietf-ace-key-groupcomm-oscore-13

From: Göran Selander <[email-masked]>
Date: Sun, 20 Mar 2022 21:18:53 +0000

All,

I have taken a look at ace-key-groupcomm-oscore-13. The intent was to make a complete review but I think it would be easier to do that if the draft was somewhat restructured first - a concrete proposal is the main content of this mail. A lot of good thinking has been put into this draft and there are traces from re-writes due to changes in the documents it depends on, which may be the reason for the current structure. In any case I would like to come back with more detailed comments once we discussed the structure.

Dependencies:

The main "parent" of this draft is ace-key-groupcomm, of which it is a profile. Another parent is core-oscore-groupcomm, for which it provides key management. Both are pre-requisite reading and therefore this draft uses content from these drafts directly without much introduction. While this is a reasonable assumption, I think the reading would be simplified by a slight rearrangement of the content.

Restructure proposal summary:

* Follow more closely the order of content in ace-key-groupcomm. More below.

* Start with the main cases and what happens first, wait with exceptions and what comes later. Some sections start with listing error codes and come to normal operations later. Of course, this is a matter of style, but I was surprised, for example, to find group *re-keying* in section 2.2 - essentially the first content of the draft - basically before any keying procedures have been described.

* Group some of the later sections into subsections, to allow a reader of the table-of-contents an overview. The draft has 26 sections excluding appendices. For example, sections 8-17 are all about sharing information about groups and nodes, which could be made into subsections of one or more sections.

* There are a large number of parameters discussed in the document. It would be good if they could be grouped into tables for easier overview and to see which belong together and for what purpose. Section 21 provides a list which is a good starting point.

I made a sketch as PR #50 to illustrate the comments above (except tables). It may be difficult to read the diff since I rearranged sections, made some into subsections, and also rearranged some content within sections to make the point about my preferred order of things. Again, this is just a proposal and it may be that we happen to have quite opposite preferences here.

More details:

ace-key-groupcomm has the following content:

Sec. 3.  authorization req/resp & token transfer req/resp
Sec. 4.  RS REST interface / KDC functionality

Then sections about changes in the group.

Sec. 5. removing member
Sec. 6. rekeying

Then formats, parameters, error identifiers in Secs. 7-9.

This is something like a top-down structure, starting with the main cases and what happens first, waiting with exceptions and what comes later.

Now looking at ace-key-groupcomm-oscore, Section 2.1 is essentially a pointer to sections 4 and 6  corresponding to section 3 in ace-key-groupcomm). I propose to delete section 2.1 and let sections 4 and 6 follow suite, rather than point to them.

The next section in  would then be 5 corresponding to section 4 in ace-key-groupcomm.

Section 2.2 is about re-keying and stale IDs corresponding to sections 5-6 in ace-key-groupcomm. I think that makes more sense to speak about after the normal procedure has been described.

Section 3 is about format but is quite independent. This could come before or after the main procedures, I put it before. Section 7 is about the public keys is also quite independent and actually provides high level understanding of the trust model, so I put that before too, but is not critical.

So the order of the first sections would become something like this:

1
3
7
2.0
4
6
5
2.2
...

There are individual paragraphs moved around the PR to make the text flow better. Have a look and let's discuss.

A few nits already now:

Nit 1.

> Group OSCORE is
   used to protect CoAP group communication over IP multicast
[I-D.ietf-core-groupcomm-bis]

Not necessarily IP multicast. This is mentioned in multiple occasions. Use the general formulation “to protect CoAP group communication.” and mention IP multicast as occasional example where needed

Nit 2.

The identification of the HKDF algorithm by using an algorithm value for a direct method in COSE (COSE algorithms -11, -10) is somehow violating the intent, as there is in this case no COSE object for which the direct method is used. The OSCORE profile of ACE (RFC-to-be 9203 https://www.rfc-editor.org/authors/rfc9203.html) identifies HKDF by the HMAC algorithms (see COSE algorithms 5,6,7).

Nit 3.

Consider shorten terminology from "Joining Request/Response" to "Join Request/Response" (would also impact ace-key-groupcomm)

Göran

---

From: Daniel Migault <[email-masked]>
Date: Mon, 21 Mar 2022 00:39:06 +0000

Thanks Goran for the review!
Yours,
Daniel

________________________________________
From: Ace <[email-masked]> on behalf of Göran Selander <goran.selander=[email-masked]>
Sent: Sunday, March 20, 2022 5:18 PM
To: [email-masked]
Subject: [Ace] draft-ietf-ace-key-groupcomm-oscore-13

All,

Dependencies:

More details:

Sec. 5. removing member
Sec. 6. rekeying

1
3
7
2.0
4
6
5
2.2
...

A few nits already now:

Nit 1.

Nit 2.

The identification of the HKDF algorithm by using an algorithm value for a direct method in COSE (COSE algorithms -11, -10) is somehow violating the intent, as there is in this case no COSE object for which the direct method is used. The OSCORE profile of ACE (RFC-to-be 9203 https://www.rfc-editor.org/authors/rfc9203.html<https://protect2.fireeye.com/v1/url?k=31323334-501d5122-313273af-454445555731-eed7c79ac5a0fd2a&q=1&e=cc2e96b8-ce52-4524-a685-4d4290cec74e&u=https%3A%2F%2Fwww.rfc-editor.org%2Fauthors%2Frfc9203.html>) identifies HKDF by the HMAC algorithms (see COSE algorithms 5,6,7).

Nit 3.

Göran