Re: [Ace] AD review of draft-ietf-ace-oscore-profile-08

2020-02-24 Thread Benjamin Kaduk
Hi Francesca,

Sorry to cut this so close to the wire...I was on vacation and came back to
a sizeable inbox.

On Mon, Feb 17, 2020 at 03:55:29PM +, Francesca Palombini wrote:
> Hi Ben,
> 
> I am now done with updating the draft following most of your review comments. 
> Out of the 105, I have implemented 88 in the draft, while those left need 
> agreement in the wg as previously mentioned, or require your OK (see inline).
> 
> You can see the result of the update in the PR here: 
> https://github.com/ace-wg/ace-oscore-profile/pull/25  If you give me the 
> go-ahead, I will merge this PR and submit a new version, and then we can 
> continue working on the open issues.

I will have to download the changes locally to view them, as the in-browser
viewer does not do well with the long lines.

> These open issues are:
> 
> * The mechanism of letting the RS pick the identifier of the client is not 
> worth the additional complexity.
>   6, 7, 32, 61, 65,
> * Recommendation about length of nonces N1 and N2 to use.
>   5, 52
> * Define and register 2 new ACE parameters to transport the nonces used in 
> the exchange, instead of using "cnonce".
>   3,  53, 60
> * Check with IANA
>   102
> 
> I hope to discuss these in the mailing list (continuing on the separate 
> thread), and at the interim. 
> 
> I will cut and paste the rest (46 , 47,  58 , 67 , 92 + a couple of more) 
> which I have answered below, whatever is not reported below I found no issue 
> in doing the modifications you suggested, or is covered by the open points I 
> mentioned. Please do bring any of those I do not touch on up again if you 
> feel they were not solved in the PR.
> 
> Thanks again for your extensive review!
> Francesca
> 
> On 03/02/2020, 05:06, "Benjamin Kaduk"  wrote:
> > 29.   The AS MUST also assign an identifier to the RS (serverId), 
> MAY
> >assign an identifier to the client (clientId), and MAY assign an
> >identifier to the context (contextId).  These identifiers are 
> then
> >used as Sender ID, Recipient ID and ID Context in the OSCORE 
> context
> >as described in section 3.1 of [I-D.ietf-core-object-security].  
> The
> >couple (client identifier, context identifier) MUST be unique in 
> the
> >set of all clients on a single RS.  Moreover, when assigned,
> >serverId, clientId and contextId MUST be included in the
> >OSCORE_Security_Context, as defined in Section 3.2.1.
> > 
> > When certain fields are optional, we typically have to ask whether 
> it's
> > possible for the two parties to disagree about whether the field is
> > present.  IIUC, the OSCORE context derivation procedure includes 
> enough
> > information to prevent that possibility, but it would be good if 
> someone
> > would confirm that.
> > 
> > FP: That is correct, a number of fields have default values when non 
> present. Hkdf, alg, salt, contextId, rpl. On the other hand, ms, clientId and 
> serverId need to be set.
> 
> Hmm, so there is not a great mechanism to distinguish "absent" from
> "present with default value", but the practical consequences of such an
> attack seem quite limited.
> 
> FP: That is right. I did not add any text about this, as this is more OSCORE 
> implication.

That's okay.

> > 
> > 34. "access_token" : h'a5037674656d7053656e73 ...'
> >   (remainder of access token omitted for brevity)',
> > 
> > In addition to the invalid-CBOR-diagnostic-notation-syntax comment, 
> we
> > also have unbalanced quotes.
> > 
> > FP: Right, but this is not valid CBOR diagnostic notation syntax 
> anyway, do you have a better idea? I do not think it would be useful to have 
> the full token here. Will remove the unbalanced quote.
> 
> This is probably manageable, though we do often see people put a 
> disclaimer
> before the example that  are truncated for readability;
> some other ADs may have other suggestions, too.
> 
> FP: Thanks for the input text :) Now added.
> 
> ...
> 
> > 43.   hkdf:  This parameter identifies the OSCORE HKDF Algorithm.  
> For more
> >   information about this field, see section 3.1 of
> >   [I-D.ietf-core-object-security].  The values used MUST be
> >   registered in the IANA "COSE Algorithms" registry and MUST be
> >   HMAC-based HKDF algorithms.  The value can either be the 
> integer
> > 
> > It's a little unfortunate that we basically are relying on "I know 
> it
> > when I see it" for determining which algorithms are HKDF algorithms.
> > 
> > FP: Agreed, but we don’t really have another way to say this. If you or 
> COSE experts (Jim) have any idea please let us know.
> 
> I think we inherited this from JOSE :-/
> 
> FP: That would 

Re: [Ace] Scope question

2020-02-24 Thread Jim Schaad


-Original Message-
From: Marco Tiloca  
Sent: Monday, February 24, 2020 2:14 PM
To: Jim Schaad ; 
draft-ietf-ace-key-groupcomm-osc...@ietf.org
Cc: 'Ace Wg' 
Subject: Re: Scope question

Hi Jim,

On 2020-02-24 19:02, Jim Schaad wrote:
> I was starting to code up the encoding of scope and wanted to clarify 
> what the encoding is.
>
> The text appears to say that the encoding is:
>
> scope = [ groupId: tstr, ?[* role : any ]]
>
> I was expecting this to be more along the lines of
>
> scope = [ + scope_item ]
> scopeItem = [ groupId: tstr, ?[* role : any ]]
>
> This would allow for more than one group to be identified in a single 
> token which I think is important given some of the statements about 
> only having a single token for a client.  This does not solve the 
> resource server having multiple audiences but that is fine.

==>MT
At the January interim, we mentioned a multi group/topic scope as next step. 
The format you suggest above is essentially the one we also had in mind. This 
should be firstly defined in the ace-key-groupcomm document.

This should be just fine for the Token request/response and the Access Token 
itself. Then I am thinking of what happens next. In a general case, in each of 
the specified groups a different signature algorithm
(etc.) is used.

Then, in the 2.01 response from /authz-info , we would have 'sign_info'
also as an array of arrays and 'pub_key_enc' as an array (unless the very same 
configuration applies for each scopeItem above). Same goes for 'rsnonce' 
becoming an array. The order of such arrays' elements is the same as for the 
scopeItems in the 'scope' claim.
<==

[JLS] I am having some problems with thinking that this is a good idea.  The 
only reason to have different signing keys is to keep the different signature 
keys isolated in terms of correlation.   If this is the case then adding a 
situation where we are going to share this information with a specific entity 
seems to be a bad idea.  I would think that if the signing keys are going to be 
separate then that should be true all of the back as far as possible.  This 
would mean that, if possible, that even the AS should not know that the 
different signing keys are associated with the same entity.

Jim


>
> I am unsure if it makes sense to allow for the array to be removed for 
> scope in the second example in the event that only one group is 
> specified.  One byte saved at the expense of more code.

==>MT
I think it makes sense to avoid that byte, and essentially revert to the 
original scope format when only one group is specified.
<==

Best,
/Marco

>
> 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



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


Re: [Ace] [EXTERNAL] RE: Access token question

2020-02-24 Thread Carsten Bormann
On 2020-02-24, at 18:04, Jim Schaad  wrote:
> 
>   • The proposal from Carsten that has not get adopted anywhere yet.

Well, not adopted in the literal sense, but it has been used as a blueprint 
both in research works and in standardization.

The main question that is holding this back from being a more complete solution 
is how to represent authorization that is dependent on request parameters (in 
particular, in bodies, both FETCH and POST/PATCH).
Maybe that is too hard to do in a generic way, and AIF should focus on 
providing a placeholder for profile specific information about request body 
handling.

(I have taken the opportunity to resubmit AIF with updated references: 

https://datatracker.ietf.org/doc/draft-bormann-core-ace-aif/
.)

Grüße, Carsten

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


[Ace] Scope question

2020-02-24 Thread Jim Schaad
I was starting to code up the encoding of scope and wanted to clarify what
the encoding is.

The text appears to say that the encoding is:

scope = [ groupId: tstr, ?[* role : any ]]

I was expecting this to be more along the lines of

scope = [ + scope_item ]
scopeItem = [ groupId: tstr, ?[* role : any ]]  

This would allow for more than one group to be identified in a single token
which I think is important given some of the statements about only having a
single token for a client.  This does not solve the resource server having
multiple audiences but that is fine.

I am unsure if it makes sense to allow for the array to be removed for scope
in the second example in the event that only one group is specified.  One
byte saved at the expense of more code.

Jim


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


Re: [Ace] [EXTERNAL] RE: Access token question

2020-02-24 Thread Jim Schaad
I have found that I had to put a scope encoding format into my database for 
each audience definition.  Just saying that the scope is CBOR is not going to 
be sufficient, just like saying that it is a text string is not enough.

 

For the text string side you have:

*   It is a text string
*   It is a text string with space separated values
*   It is a text string with space separated values and each value has an 
underscore which separates operation and resource (MQTT)

 

On the binary side you have:

*   The proposal from Carsten that has not get adopted anywhere yet.
*   The group communication format (roughly based on the above format)

 

There is a question about how all of the binary values are going to work if you 
do a JSON encoded request rather than a CBOR encoded request.  At the moment, I 
am assuming that the binary value is encoded (in CBOR) and then base64url 
encoded and placed in the JSON.  I am not sure if people are going to want to 
define this as being native JSON instead depending on how the fields of the 
binary format are encoded.

 

Given all of this, I don’t know if adding something to the framework is going 
to be generally useful or not.  So much of what a scope looks like is going to 
be application dependent.  With any luck we are going to be able to get a good 
set of scope definitions at some point in the near future and can produce a 
survey document.  I am not holding my breath on this yet.

 

Jim

 

 

From: Francesca Palombini  
Sent: Sunday, February 23, 2020 11:55 PM
To: Mike Jones ; Jim Schaad 
; 'Seitz Ludwig' 
Cc: 'Ace Wg' 
Subject: Re: [EXTERNAL] RE: Access token question

 

Thanks all! Section 8.13 of the framework is exactly what I was looking for, I 
don’t know how I did not see it. A bit surprised there is no text referencing 
it in the framework itself.

 

Also, about the “scope” claim registration: the claim description and the 
specification document give 2 different pointers. The claim description ref 
points to the description for JWT (JSON string etc), I think this should be 
adapted to using CBOR (writing a section in the ACE framework, which could then 
reference both pointers). Also minor, I would add the precise section of 6749 
we should look at, which I assume is 3.3.

 

Francesca

 

From: Mike Jones mailto:michael.jo...@microsoft.com> >
Date: Friday, 21 February 2020 at 19:45
To: Jim Schaad mailto:i...@augustcellars.com> >, 
Francesca Palombini , 'Seitz Ludwig' 
mailto:ludwig.se...@combitech.se> >
Cc: Ace Wg mailto:ace@ietf.org> >
Subject: RE: [EXTERNAL] RE: Access token question

 

And https://tools.ietf.org/html/rfc8693#section-7.4, which registers “scope” at 
https://www.iana.org/assignments/jwt/jwt.xhtml.

 

-- Mike

 

From: Jim Schaad mailto:i...@augustcellars.com> > 
Sent: Friday, February 21, 2020 9:15 AM
To: 'Francesca Palombini' mailto:francesca.palomb...@ericsson.com> >; 'Seitz Ludwig' 
mailto:ludwig.se...@combitech.se> >; Mike Jones 
mailto:michael.jo...@microsoft.com> >
Cc: 'Ace Wg' mailto:ace@ietf.org> >
Subject: [EXTERNAL] RE: Access token question

 

You are missing something

 

https://tools.ietf.org/html/draft-ietf-ace-oauth-authz-33#section-8.13

 

defined here

 

From: Francesca Palombini mailto:francesca.palomb...@ericsson.com> > 
Sent: Friday, February 21, 2020 4:37 AM
To: Seitz Ludwig mailto:ludwig.se...@combitech.se> 
>; Mike Jones mailto:michael.jo...@microsoft.com> 
>; Jim Schaad mailto:i...@augustcellars.com> >
Cc: Ace Wg mailto:ace@ietf.org> >
Subject: Access token question

 

Hi,

 

Quick question regarding access token and scope. 

I know that “scope” semantics is left to the application to define, but in 
general I would expect to include there some information about resource and 
method/operations allowed on that resource. Please correct me if any of this is 
not exact.

 

It was my understanding that “scope” (or more precisely the “scope” value) 
defined for the Client-AS request and response should be included in the access 
token as well. Checking in CWT, there is no such “scope” claim defined. “aud” 
claim is indeed defined for the CWT, but that should correspond to “aud” 
parameter in the ACE request/response. So where do I put the exact resource and 
operations in the access token?

 

What am I missing?


Francesca

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