Re: [Ace] remarks on draft-tiloca-ace-oscore-gm-admin-00

Jim Schaad <ietf@augustcellars.com> Sat, 18 January 2020 03:33 UTC

Return-Path: <ietf@augustcellars.com>
X-Original-To: ace@ietfa.amsl.com
Delivered-To: ace@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BE8DA120041; Fri, 17 Jan 2020 19:33:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1R-40z3uGUEj; Fri, 17 Jan 2020 19:33:39 -0800 (PST)
Received: from mail2.augustcellars.com (augustcellars.com [50.45.239.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E1E4812008C; Fri, 17 Jan 2020 19:33:38 -0800 (PST)
Received: from Jude (73.180.8.170) by mail2.augustcellars.com (192.168.0.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 17 Jan 2020 19:33:34 -0800
From: Jim Schaad <ietf@augustcellars.com>
To: 'Marco Tiloca' <marco.tiloca@ri.se>, draft-tiloca-ace-oscore-gm-admin@ietf.org
CC: ace@ietf.org
References: <01b401d59f2e$ff406560$fdc13020$@augustcellars.com> <a5e579e1-a1cf-ab20-4af7-38d54ee6cf3a@ri.se> <000001d5c8f1$6b0c7630$41256290$@augustcellars.com> <ce2e9771-b73a-2fd9-0188-c17a3c3f19cf@ri.se>
In-Reply-To: <ce2e9771-b73a-2fd9-0188-c17a3c3f19cf@ri.se>
Date: Fri, 17 Jan 2020 19:33:31 -0800
Message-ID: <013201d5cdb0$100f3d30$302db790$@augustcellars.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 16.0
Content-Language: en-us
Thread-Index: AQI4jLavukz0j9XyZB28pLOfckduegK6NarEA4bum9gBpSJUdabrE0PQ
X-Originating-IP: [73.180.8.170]
Archived-At: <https://mailarchive.ietf.org/arch/msg/ace/YQzcrGi0Sj7xYfLdbPrYdWhfRCQ>
Subject: Re: [Ace] remarks on draft-tiloca-ace-oscore-gm-admin-00
X-BeenThere: ace@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Authentication and Authorization for Constrained Environments \(ace\)" <ace.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ace>, <mailto:ace-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ace/>
List-Post: <mailto:ace@ietf.org>
List-Help: <mailto:ace-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ace>, <mailto:ace-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Jan 2020 03:33:42 -0000


-----Original Message-----
From: Marco Tiloca <marco.tiloca@ri.se> 
Sent: Wednesday, January 15, 2020 9:21 AM
To: Jim Schaad <ietf@augustcellars.com>; draft-tiloca-ace-oscore-gm-admin@ietf.org
Cc: ace@ietf.org
Subject: Re: [Ace] remarks on draft-tiloca-ace-oscore-gm-admin-00

Hi Jim,

Thanks for your reply, see more comments inline.

Best,
/Marco

On 2020-01-12 03:38, Jim Schaad wrote:
>
> -----Original Message-----
> From: Ace <ace-bounces@ietf.org> On Behalf Of Marco Tiloca
> Sent: Wednesday, January 8, 2020 8:08 AM
> To: Jim Schaad <ietf@augustcellars.com>; 
> draft-tiloca-ace-oscore-gm-admin@ietf.org
> Cc: ace@ietf.org
> Subject: Re: [Ace] remarks on draft-tiloca-ace-oscore-gm-admin-00
>
> Hi Jim,
>
> Thanks a lot for this review!
>
> We have been working on an updated version accessible at [1], which is already taking into account your comments on CoRAL.
>
> Please, find below inline some more replies and open points.
>
> Best,
> /Marco
>
> [1]
> https://gitlab.com/crimson84/draft-tiloca-ace-oscore-gm-admin/blob/v-0
> 1/draft-tiloca-ace-oscore-gm-admin.md
>
> On 2019-11-20 00:13, Jim Schaad wrote:
>> This is just going to be a high level review on how things are done 
>> rather than a detailed review on each line of text.
>>


>> 4.  Are you making it a requirement that the group name be the same 
>> as the group identifier assigned by the "group_name" parameter?  If 
>> so then having some type of title and description would seem to be almost mandatory.
> <MT>
> They are in fact the very same thing. The "group_name" parameter specifies the group name, as intended to identify the OSCORE group both by the administrator and the joining nodes in the other related documents. We can use only "invariant name" rather than "invariant identifier". Are we missing something? If so, what do you suggest we should give a title and description to?
> </MT>
>
> If you are looking at "group_name":"GP00123", then as a configuration agent it is difficult to know just what this group is supposed to be.  In this case some type of title or description helps to figure that out.

<MT>
We can add a new group configuration parameter 'group_title', as a CBOR text string. This specifies a human-readable descriptive name of the group, suggesting what it is about.
</MT>

[JLS] Sounds like a logical thing to do.

>
>> 5.  There needs to be some parameters around pointing to the correct 
>> AS and so forth.  The management API may reject because it does not trust the AS.
>> Don't assume that this is a single value for the AS either.
> <MT>
> This is good and also aligned with other related drafts.
>
> If we interpret your suggestion correctly:
>
> 1) The POST request to /manage may specify also an optional 'as_uri'
> parameter, with the link to a suggested AS. The GM may accept the suggestion or not. If not, it has to think of an alternative AS, as valid issuer of tokens for joining that group.
>
> 2) The GM must have one more parameter in the group configuration with the effective AS URI, i.e. either one provided by the administrator and accepted, or one otherwise decided.
>
> Do you think of any additional related parameters to be included in the POST request, other than 'as_uri'? Perhaps the public key of the suggested AS if applicable?
>
> Do you think the suggestion in the request should actually be a list of AS, out of which the GM may pick up at most one?
> </MT>
>
> I have put something into draft-schaad-core-reef which starts thinking about this.  I think that we need to sit down and do a brainstorming session to figure out what items should/should not be put into such a structure.
>

<MT>
With pleasure, and thanks for the pointer :-)

Out of my hat, I can think of: the URI of one AS and its /token endpoint; the profile(s) that the Group Manager have to use (if it supports them) for letting joining nodes enter the group; the public key of the AS if applicable; the ACE audience that the Group Manager has to use for this group.
</MT>

[JLS]  One of the things that needs to be remembered is that this does not have to be flat, so there can be a clean separation between an AS and a GM.

>> 6.  You are missing a lot of management detail on the POST to the 
>> group node.  Some of the things that are missing would be:
>> a)  Is the group active or inactive
> <MT>
> We can have one more parameter on the group-configuration resource for this.
>
> We are interpreting active/inactive as follows. Ideally, upon creating the group, the request can specify the initial status as active or inactive. Upon later updating the group by sending a request to the group-configuration resource, the administrator can change the status (or read it through a GET).
>
> Then the active/inactive status has two parallel scopes:
>
> 1) one scope is for the GM alone, i.e the GM would allow the joining of new group members only if the group is set as active.
>
> 2) when the group is set as inactive, the current group members should refrain from sending and should not expect receiving any message protected with that group key material. However, there is no way to actually force them to.
>
> In support to scope (2), when the status changes to inactive, the GM should inform group members about that. To this end, the group-membership resource intended for group members would also include a parameter reflecting the group status and aligned in value with the one in the group-configuration resource. Then, there are two ways to inform the group members of a status change.
>
> a) A way is to have the group members observing the group-membership resource (that they may have been doing already anyway for notification-based rekeying).
>
> b) A second way is for the group members to have a dedicated local resources for this (and other) kind of control communication (e.g.
> rekeying). This is something we are also considering in
> ace-key-groupcomm(-oscore) for receiving individual rekeying messages.
> In either case this would require either: i) each node to provide the GM with the URI to such local resource, in the join request; or ii) the GM to include in the join response to each joining node a same multicast address targeting a local resource that that node has to create to receive control messages.
> </MT>
>
> I don't remember for sure what I was thinking about when I wrote this.  I think that I was more interested in if one can or cannot join a group when it is inactive and what happens.  If you set a group to inactive, are all members of the group removed or does the group just stop issuing new keys?

<MT>
Building on the previous reply, an inactive group would mean that: i) no new members are admitted, thus no new keys to new members; ii) stop issuing new keys for current members; iii) current members are expected to stop communicating (which should rely on informing them) but are not removed. So the group is temporarily inactive but still exists.
</MT>

>
>> b) How does the server react if you change a the content encryption 
>> algorithm, is this a simple re-key operation or is it more 
>> complicated
> <MT>
> An easy answer would be rekeying the group, just as for any other triggering reason. I agree this should be mention in this draft.
>
> However, I think a more elaborated description of what happens if the algorithm is changed (regardless why and how) should be actually better given in oscore-groupcomm (the what) and in ace-key-groupcomm-oscore (the how).
> </MT>
>
> Punting to a different document is fine as long as it really is there.  However, this is the place where it appears to be changed by an external source and thus seems to be a good place to talk about it.

<MT>
Agree, this document is in fact acting as a use case of its own for this.
</MT>

>> c) How does the server react if you change the signature algorithm?  
>> This would seem to be a much harder thing to do if the group is not 
>> empty or not active as everybody is going to need to re-join.
> <MT>
> Right. If the signature algorithm changes, the current public keys may be not compatible with it any longer. We see the following possible ways, assuming the current group members have learnt of the new algorithm in use.
>
> 1) The hard way, i.e. everyone leaving and re-joining.
>
> 2) A more lightweight way, i.e. relying on yet another operation for current group members on the GM, to upload a new public key consistent with the new algorithm. This would require to proof possession of the corresponding private key, as it is done upon joining. Probably, in this case, this can happen like we do in the Group OSCORE profile of ACE between the Client and the AS, see the bullet point on 'client_cred_verify' at [2].
>
> And again it looks like details on the way this is done fits better in other documents.
>
> [2]
> https://tools.ietf.org/html/draft-tiloca-ace-group-oscore-profile-01#s
> ection-3.1
>
> </MT>
>
> See comment above.

<MT>
As above, yes, something should be said here. Formally, the extended keying material is distributed as in a rekeying, but the only difference would be the signature algorithm. This is enough for the group members to understand what happens and what to do.

If they leave and fully join again, it's just about following the same procedure of ietf-ace-key-groupcomm oscore. The alternative (2) above would require one more functionality exported by the Group Manager for current group members to upload a new and compatible public key (and this has to be followed by proof-of-possession). This may be achieved with a new PUT handler to the group-membership resource group-oscore/GROUPNAME/pub-key (see
https://tools.ietf.org/html/draft-ietf-ace-key-groupcomm-oscore-04#section-8
)
</MT>

>
>> d) Other parameter that are changed may be just as bad as changing 
>> the signature algorithm - how the re-key is done jumps immediately to mind.
> <MT>
> Yes, changing HKDF/Alg results in what discussed two replies above; changing anything else (thus related to signatures) results in what discussed in the reply above.
> </MT>
>
> Much of this may go to say that changing this parameters kicks everybody off the group and restarts from scratch.

<MT>
It seems better to leave the burden of a clear decision to the Administrator. That is, if the Administrator has good reasons to update those parameters, even though a rekeying will follow, so be it. Or, the Administrator can delete the group altogether and create it again, if believed to be better.

On the other hand, it sounds better to avoid that the Group Manager itself decides to delete a group.
</MT>

>
>> 7.  Is there currently any way for a KDC to signal to all of the 
>> members that have joined that the key group no longer exists?  A 
>> DELETE would seem to indicate the need to be able to do this.
> <MT>
> Right, the DELETE of a group-configuration resource would trigger 
> something like this. The current resource maintaining on the GM 
> consists
> in: destroying both group-configuration and group-membership resource, then reply to the Administrator.
>
> That said, a possible extension to also inform current group members is akin to what we describe above about signaling that the group has moved to inactive state. That is:
>
> i) if group members observe the group-membership resource, a 4.04 notification is sent to them, upon deleting that resource.
>
> ii) if group members have their own local resource to receive control messages from the GM, a control message can inform about the deletion of such group-membership resource. This would be particularly convenient to be sent over multicast. This method (ii) would actually require the GM to send these messages to the group members first, and only afterwards actually delete the group-membership resource, in case information such as the destination addresses and URIs to consider are stored as part of the group-membership resource itself.
>
> A group member can of course discover what happened at any time, just by sending any type of request to the deleted group-membership resource and getting a 4.04 response back.
>
> The actual difference between an existing inactive group and a deleted group is that the latter has no way back, and would need to be re-created from scratch on the GM by the Administrator.
> </MT>
>
> Also could say that you can only delete a successfully inactivated group.

<MT>
Ok, this has two consequences:

1) We can add one more group-configuration boolean parameter 'active', that the Administrator also controls.

2) Before issuing a DELETE to delete a group, the Administrator has to change 'active' to FALSE, and get a confirmation response from the Group Manager.

However, I wonder what you mean with "successfully". What can make the Group Manager fail/hold from changing 'active' from TRUE to FALSE when requested to do so by the Administrator?
</MT>

[JLS] I think that I got the successfully on the wrong item - should be on the delete not the group.

Jim


>
> Jim
>
>
>> Jim
>>
>>
>>
> --
> Marco Tiloca
> Ph.D., Senior Researcher
>
> RISE Research Institutes of Sweden
> Division ICT
> Isafjordsgatan 22 / Kistagången 16
> SE-164 40 Kista (Sweden)
>
> Phone: +46 (0)70 60 46 501
> https://www.ri.se
>
>
>

--
Marco Tiloca
Ph.D., Senior Researcher

RISE Research Institutes of Sweden
Division ICT
Isafjordsgatan 22 / Kistagången 16
SE-164 40 Kista (Sweden)

Phone: +46 (0)70 60 46 501
https://www.ri.se