Hi Brian,

My two cents.

1) This draft is about selective-disclosure. The draft should be balanced between enclosure and disclosure.
The topic of selective-enclosure should also be addressed.

In particular in OAuth, the claims to be incorporated are usually only selected with a coarse granularity and the end-user (as well as the holder) has no clue about which claims will or will not be incorporated.

2) The draft states:

             However, anyone receiving an unencrypted JWT can read all of the claims.

In OAuth, the claims are considered to be opaque and SHALL not be read by the holder. Their semantics or content of a JWT can change at any time.
This should be mentioned in the draft.

In the privacy considerations section, another sub-section should be included about OAuth, i.e. a section "8.3  OAuth".

OAuth considers that the claims included into the JWT are opaque to the holder (i.e. the Client) when a JWT is used in the context of OAuth. This means that the holder is unable to verify that the claims that have been incorporated in the JWT correspond to those that have been requested.

The Issuer is a position to include more claims or different claims from those that should have been incorporated. This may be a concern for some end users.

3) About section 8.2 Unlinkability

The text states:

           More advanced cryptographic schemes, outside the scope of this specification, can be used to prevent this type of linkability.

The draft by itself creates the problem since a single JWT is intended for multiple verifiers. The linkability problem arises because in particular when the same "sub" claim is used for two different Verifiers.

The use of the following claims should be avoided (I reuse one of the examples):

     "given_name": "John",
"family_name": "Doe",
"email": "john...@example.com",
"phone_number": "+1-202-555-0101",
"address": {
"street_address": "123 Main St",
"locality": "Anytown",
"region": "Anystate",
"country": "US"
},
"birthdate": "1940-01-01

In order to solve the problem, the use of previous claims should be avoided and a specific "sub" claim should be used for each verifier.

Hence, the concern could be solved using no " advanced cryptographic schemes " but by defining a new structure in the JWT that would allow to associate a "sub" claim (as well as other claims) with a specific Verifier. A change of the SD-JWT Releases structure should be considered.

The use of this draft for end users concerned with some forms of linkages between verifiers should be deprecated and this should be mentioned in the Introduction: a single JWT targeted to a single Verifier solves this concern.

Denis


Hi Hannes,

Though I am yet to officially have my name on the document as a co-author, you did mention me directly :) And so I'll attempt to answer or respond to your questions/statements below.

On Mon, Nov 28, 2022 at 7:24 AM Hannes Tschofenig <hannes.tschofe...@arm.com> wrote:

    Hi Daniel, Hi Kristina, Hi Brian,

    Hi all,

    Reading through draft-ietf-oauth-selective-disclosure-jwt I was
    wondering why the document defines new terminology for roles that
    already exist in OAuth.

    For example:

      * Issuer  =  AS
      * Holder = Client
      * Verifier = RS

    I assume that was done intentionally. What was the rational was.


JWT itself <https://datatracker.ietf.org/doc/rfc7519/> is a product of this WG (as I'm sure you remember).. While JWT had important applications in OAuth, it was developed as a more general purpose token format and has seen widespread usage both in OAuth and beyond. Similarly, SD-JWT is meant to be a general purpose selective disclosure mechanism for JWT, which can have applications in OAuth but is certainly not constrained to OAuth. As such, the terminology in the draft aims to be generally applicable/meaningful. This is similar/consistent with JWT/RFC7519, which also does not use terms like AS, RS, or client.

     You write:

     “One of the common use cases of a signed JWT is representing a
    user's identity“

     In classical OAuth this use case should not be common. We bragged
    about the fact that you could to delegated authorization without
    having to rely on identity information. I think it would help to
    expand this statement a bit and explain what the use case is.

A signed JWT representing a user's identity is, in fact, exceedingly common. Even in classical OAuth the access tokens almost always convey something about an identity - the resource owner in OAuth parlance. The sub in introspection https://www.rfc-editor.org/rfc/rfc7662#section-2.2 and the JWT AT profile https://datatracker.ietf.org/doc/html/rfc9068#section-2.2 show this in specs, for example. Of course the AT format and content aren't defined by OAuth itself and are left up to the implementation/deployment so those optional specs don't tell the whole story. But every single deployment I've seen has some identity info in the AT for delegation.

    You write:

    “ As long as the signed JWT is one-time use, it typically only
    contains those claims the user has consented to disclose to a
    specific Verifier. However, there is an increasing number of use
    cases where a signed JWT is created once and then used a number of
    times by the user (the "Holder" of the JWT). In such cases, the
    signed JWT needs to contain the superset of all claims the user of
    the signed JWT might want to disclose to Verifiers at some point.
    The ability to selectively disclose a subset of these claims
    depending on the Verifier becomes crucial to ensure minimum
    disclosure and prevent Verifiers from obtaining claims irrelevant
    for the transaction at hand.“

     Using the same access token with multiple resource servers is not
    good security practice not only from a privacy point of view but
    also from a security point of view.

     From reading the introduction I get the impression that you
    create your own problem that is subsequently solved in the
    document. Since I believe you are too clever to do this, I believe
    the document needs to provide more text to explain how this use
    case emerged. You mention “verifiable credential” as the “use
    case” but it is a technology rather than a use case.


I've reread the introduction (which, in full disclosure, I did not write) and honestly feel like it does a pretty decent job of describing the emerging problem space and what the draft aims to provide. We certainly don't want to leave you or any reader with the impression that the document invents a not-real problem only to subsequently solve it. But I'm not getting that impression from reading it. And I am honestly not sure how to better avoid giving that impression (other than writing this email, I guess).


/CONFIDENTIALITY NOTICE: This email may contain confidential and privileged material for the sole use of the intended recipient(s). Any review, use, distribution or disclosure by others is strictly prohibited.  If you have received this communication in error, please notify the sender immediately by e-mail and delete the message and any file attachments from your computer. Thank you./

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to