Hi Paul,

Just a couple notes in addition to what Jim already mentioned.

On Sun, Jul 19, 2020 at 04:23:46PM -0400, Paul Kyzivat wrote:
> I am the assigned Gen-ART reviewer for this draft. The General Area
> Review Team (Gen-ART) reviews all IETF documents being processed
> by the IESG for the IETF Chair.  Please treat these comments just
> like any other last call comments.
> 
> For more information, please see the FAQ at
> 
> <https://trac.ietf.org/trac/gen/wiki/GenArtfaq>.
> 
> Document: draft-ietf-ace-dtls-authorize-12
> Reviewer: Paul Kyzivat
> Review Date: 2020-07-19
> IETF LC End Date: 2020-07-20
> IESG Telechat date: ?
> 
> Summary:
> 
> This draft is on the right track but has open issues, described in the 
> review.
> 
> General:
> 
> TBD
> 
> Issues:
> 
> Major: 2
> Minor: 1
> Nits:  1
> 
> 1) MAJOR: Management of token storage in RS
> 
> There seems to be an expectation that when the client uploads an access 
> token that the RS will retain it until the client attempts to establish 
> a DTLS association. This seems to require some sort of management of 
> token lifetime in the RS. The only discussion I can find of this issue 
> is the following in section 7:
> 
>     ... A similar issue exists with the
>     unprotected authorization information endpoint where the resource
>     server needs to keep valid access tokens until their expiry.
>     Adversaries can fill up the constrained resource server's internal
>     storage for a very long time with interjected or otherwise retrieved
>     valid access tokens.
> 
> This seems to imply a normative requirement to keep tokens until their 
> expiry. But I find no supporting normative requirements about this. And, 
> this section only presents it as a DoS attack, rather than a potential 
> problem with valid usage.
> 
> ISTM that there is an implied requirement that the RS have the capacity 
> to store one access token for every PoP key of every authorized client. 
> If so, that ought to be stated. If not, then some other way of bounding 
> storage ought to be discussed.
> 
> 2) MAJOR: Missing normative language
> 
> I found several places where the text seems to suggest required behavior 
> but fails to do so using normative language:
> 
> * In section 3.3:
> 
>     ... Instead of
>     providing the keying material in the access token, the authorization
>     server includes the key identifier in the "kid" parameter, see
>     Figure 7.  This key identifier enables the resource server to
>     calculate the symmetric key used for the communication with the
>     client using the key derivation key and a KDF to be defined by the
>     application, for example HKDF-SHA-256.  The key identifier picked by
>     the authorization server needs to be unique for each access token
>     where a unique symmetric key is required.
>     ...
>     Use of a unique (per resource server) "kid" and the use of a key
>     derivation IKM that is unique per authorization server/resource
>     server pair as specified above will ensure that the derived key is
>     not shared across multiple clients.
> 
> The uniqueness seems to be a requirement. Perhaps "needs to be unique" 
> should be "MUST be unique". (And something similar for the IKM.)
> 
> * Also in section 3.3:
> 
>     All CBOR data types are encoded in CBOR using preferred serialization
>     and deterministic encoding as specified in Section 4 of
>     [I-D.ietf-cbor-7049bis].  This implies in particular that the "type"
>     and "L" components use the minimum length encoding.  The content of
>     the "access_token" field is treated as opaque data for the purpose of
>     key derivation.
> 
> IIUC the type of serialization and encoding is a requirement. Will need 
> some rewording to make it so.

Both this and the previous item are scoped by the following text:

   The method for how the resource server determines the symmetric key
   from an access token containing only a key identifier is application-
   specific; the remainder of this section provides one example.

So it's not entirely clear that normative language is appropriate in the
discussion of the example behavior.

> * In section 3.3.1:
> 
>     ... To
>     be consistent with the recommendations in [RFC7252] a client is
>     expected to offer at least the ciphersuite TLS_PSK_WITH_AES_128_CCM_8
>     [RFC6655] to the resource server.
> 
> I think "is expected" should be "MUST".
> 
> * Also in section 3.3.1:
> 
>     ... This
>     specification assumes that the access token is a PoP token as
>     described in [I-D.ietf-ace-oauth-authz] unless specifically stated
>     otherwise.
> 
> I think "assumes ... unless" should be "MUST ... unless".

My understanding is that this is just talking about the text in the
document itself.  But as far as I remember we always require PoP tokens, so
this could just be removed.

> * Also in section 3.3.1:
> 
>     ... New access tokens issued by the
>     authorization server are supposed to replace previously issued access
>     tokens for the respective client.
> 
> Is this normative? Should "are supposed to" be "MUST"?

I don't think this is a "MUST"; it refers to some behavior in the core
framework that is merely suggested and not mandatory.

Thanks for the review; it brought up some good points!

-Ben

> 3) MINOR: Insufficient specification
> 
> (I'm waffling whether this is minor or major.)
> 
> There are a couple of places where what seem to be requirements are 
> stated too vaguely to be implemented consistently:
> 
> * In the previously mentioned paragraph in 3.3.1:
> 
>     ... This
>     specification assumes that the access token is a PoP token as
>     described in [I-D.ietf-ace-oauth-authz] unless specifically stated
>     otherwise.
> 
> The "unless specifically stated otherwise" is too vague to be normative. 
> How would the alternative be indicated? Is this an escape hatch for 
> future extensions? If so, it needs more work to make that clear and to 
> open a path for that future work.
> 
> * Also in section 3.3.1:
> 
>     ... The resource server therefore must
>     have a common understanding with the authorization server how access
>     tokens are ordered.
> 
> The last statement ("must have a common understanding") is mysterious. 
> IIUC section 4 is covering the same topic in a less mysterious way.
> 
> 4) NIT: Subsection organization
> 
> Both 3.2 and 3.3 share a common structure:
> 
> * The section begins with discussion of the interaction between the 
> client and the AS.
> 
> * it is followed by a subsection discussing the interaction between the 
> client and the RS.
> 
> It is odd to have a section with a single subsection. And the structure 
> isn't easily discerned from the TOC.
> 
> I suggest it would be clearer if each of these sections had *two* 
> subsections, one covering the AS interactions and the other the RS 
> interactions. IOW, put the material covering the AS interactions into a 
> new subsection.

_______________________________________________
Gen-art mailing list
Gen-art@ietf.org
https://www.ietf.org/mailman/listinfo/gen-art

Reply via email to