Subject: Re: [Ace] Review of draft-ietf-ace-key-groupcomm

From: Francesca Palombini <[email-masked]>
Date: Wed, 6 Nov 2019 12:43:10 +0000

Hi Ludwig,

Thank you so much for your detailed review! We have addressed your comments in the -03 update submitted. It might be a bit hard to see from the diff, as we also made a restructuring based on comments at IETF105, but I answer to detailed comments inline.

Thanks again,
Francesca

On 19/07/2019, 13:21, "Ludwig Seitz" <[email-masked]> wrote:

    Hello Francesca, Marco,
    
    I have finally managed to read the whole of draft-ietf-ace-key-groupcomm 
    and have a few comments for you:

    Figure 2: I suggest you move the "Defined in ..." to the left
    they way it is now, it looks as if the Dispatcher was defined in the ACE 
    framework.

FP: Ok, done.
    
    ==
    "3.1.  MUST contain ... 'grant_type'"
    
    This is no longer true. Grant_type was made optional in one of the 
    latest updates of the ACE framework. When it is absent, 
    grant_type=client_credentials is assumed as default.

FP: Ah, we had missed this, thanks for pointing that out! So fixed as you suggest.
    
    ==
    3.3  "... and includes the following parameters: "
    
    How is that supposed to work? The framework defines sending of the token 
    to /authz-info as a CoAP POST, where the payload is the bytes of the 
    token. In order to include additional parameters you would have to 
    redefine this payload to be a CBOR map (as the OSCORE profile does).

FP: We do specify the content-format to be ace+cbor in that case, now we have clarified that the payload is a CBOR Map, containing token plus those parameters.
    
    ==
    The whole section 3 talks about parameters send back and forth between 
    the client and the KDC without defining how these are carried. It seems 
    to be implied that there are CBOR maps in the payload, but that should 
    be made explicit, especially where it differs from what the framework 
    defines.
    
FP: Yes, we have now clarified that.

    ==
    3.1  the text about the parameters in the client's post to the 
    /authz-info endpoint at the KDC talks about parameters "sign_info" and 
    "pub_key_enc" and claims they are specified in 3.3.1 and 3.3.2, but 
    these sections specify the parameters for the "AS request creation 
    hints" messages and not in this context. At least some clarification 
    should be added.
    
FP: Ok, we have now added some text about that at the end of sections 3.3.1 and 3.3.2.

    ==
    Section 4
    
    "If not previously established, the Client and the KDC MUST first
        establish a pairwise secure communication channel using ACE."
    
    This sentence is not strictly correct. Using what part of ACE? The ACE 
    framework just says that you should establish a secure communication 
    channel, it's the specific profiles that define how these channels are 
    established. Please add some clarification.
    
FP: Note that this text is now moved to section 4.2. We have clarified by replacing with the 2 following sentences: 
"   If not previously established, the Client and the KDC MUST first
   establish a pairwise secure communication channel (REQ15).  This can
   be achieved, for instance, by using a transport profile of ACE."

    ==
    
    "The Client and the KDC MAY use that same secure channel to protect 
    further pairwise communications, that MUST be secured."
    
    This is very questionable use of requirements language. How do I claim 
    or test conformance with the second MUST?
    
FP: Right. We have rephrased. The MUST was not supposed to be normative

" The Client and
   the KDC MAY use that same secure channel to protect further pairwise
   communications that must be secured."

    ==
    Section 4:
    "The same set of message ..." should be "messages"

FP: Ok, this text actually disappeared with the restructuring.
    
    ==
    "  Note that proof-of-possession to bind the access token to the Client
        is performed by using the proof-of-possession key bound to the access
        token for establishing secure communication between the Client and
        the KDC."
    
    This may or may not be true for a specific secure communication protocol
    (e.g. think of DTLS with X.509 certificates without client 
    authentication). You need to require this from the underlying secure 
    communication protocol.

FP: Thanks for pointing this out. We replaced the previous text with the following:
"   The secure communication protocol is REQUIRED to establish the secure
   channel by using the proof-of-possession key bound to the access
   token.  As a result, the proof-of-possession to bind the access token
   to the Client is performed by using the proof-of-possession key bound
   to the access token for establishing secure communication between the
   Client and the KDC."
    
    ==
    4.1 "The endpoint in the KDC is associated to the 'scope' value of the 
    Authorization Request/Response."
    
    Associated how? This is too unspecific to lead to interoperable 
    implementations. I would like to see this association specified in detail.
    
FP: This text disappeared with the restructuring. Now we do give "default" names for the endpoints at the KDC, similar to how ACE does it.

    ==
    4.2 "as defined in the "ACE Groupcomm Key" registry, defined in Section 
    11.5."
    
    If possible, rephrase this to avoid the double use of "defined".

FP: Ok, done.
    
    ==
    5.2
    
    "If the leaving node wants to be part of a group with fewer roles, it 
    does not need to communicate that to the KDC, and can simply stop acting 
    according to   such roles."
    
    There are legitimate cases where a node might want to explicitly 
    deactivate roles it is currently using (principle of least priviledge) 
    and not just stop using them.
    
FP: I will answer to this comment in a separate mail, to include Jim's point.

    ==
    6. "Then, if it wants to continue participating in the group
        communication, the node has to request new updated keying material to
        the KDC."
    
    should be "... keying material from the KDC."

FP: Ok, fixed.
    
    ==
    Sections 8. and 9.
    
    Would be nice if there also were back-references to where those 
    parameters are
    defined in the draft.
    
FP: Now added.
    
    /Ludwig

    -- 
    Ludwig Seitz, PhD
    Security Lab, RISE
    Phone +46(0)70-349 92 51

---

From: Francesca Palombini <[email-masked]>
Date: Wed, 6 Nov 2019 12:49:44 +0000

Hi,

Answering the one issue left from Ludwig's review, including Jim's reaction inline.

Thanks,
Francesca

On 23/07/2019, 14:56, "Ace on behalf of Jim Schaad" <[email-masked] on behalf of [email-masked]> wrote:
    
    -----Original Message-----
    From: Ace <[email-masked]> On Behalf Of Ludwig Seitz
    Sent: Friday, July 19, 2019 7:22 AM
    To: [email-masked]
    Cc: [email-masked]
    Subject: [Ace] Review of draft-ietf-ace-key-groupcomm
    
    Hello Francesca, Marco,
    
    I have finally managed to read the whole of draft-ietf-ace-key-groupcomm and have a few comments for you:

    ==
    5.2

    
    [JLS] I trimmed because I only wanted to address this one topic.  I totally agree that there are cases where a node might want to deactivate roles, however in the case of group communication I don't see how this could be done in a reasonable manner.  
    
FP: I agree with Jim that I am not sure this can be done "in a reasonable manner" (where reasonable means "worth the effort").

    If a node says - please stop advertising my public key because I am no longer a publisher, that is reasonable for a KDC to start doing.  However, there are currently no provisions in the protocol for a KDC to advertise that fact to all of the subscribers.   Even if a key roll over were to occur, as the node still is part of the group, it can produce the correct key material and sign a message.  A subscriber with the signature key would successfully validate the signature and accept it the message, only those subscribers which had not yet pulled down a public key would fail to validate the message.
    
    This would require a new mechanism for the purpose of asking if a public key is still associated with a specific key identifier (which is a good reason for the note about keeping the same key ids when rolling keys).  I am not sure that the traffic would be worth the effort for this small gain.

FP: The KDC keeps track of nodes being in the group now, and for each node it has an associated token with authorization information, so the KDC knows what roles each node has within the group. A possible new mechanism to solve this would be: we could add
*  an (observable) resource at the KDC that allows any member of the group to get information about nodes’ roles, say POSTing an array of node identifiers to the KDC and getting back the roles, or observing it and getting any changes it might happen, and 
* another resource where a node can POST updates to its own role
But I am not sure that is very useful/worth the effort vs the amount of traffic generated. The node requesting to “leave a role” could still request to “get the role” again, if it is still authorized to do so (for example, a publisher could decide to suddenly only be a subscriber, but could still get back its publisher role if it wanted to). I am interested in hearing more opinions about this (“no we don’t need this” “yes we need this and why”).

    Note that for a gated transmission system such as a pub-sub server, the node can get lesser privilege for the gate system without getting less privilege for the KDC.
    
    Jim

    /Ludwig

    -- 
    Ludwig Seitz, PhD
    Security Lab, RISE
    Phone +46(0)70-349 92 51

    _______________________________________________
    Ace mailing list
    [email-masked]
    https://www.ietf.org/mailman/listinfo/ace