Re: [OAUTH-WG] draft-ietf-oauth-selective-disclosure-jwt
Denis <denis.ietf@free.fr> Thu, 01 December 2022 14:18 UTC
Return-Path: <denis.ietf@free.fr>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 18F2BC14CF13 for <oauth@ietfa.amsl.com>; Thu, 1 Dec 2022 06:18:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.117
X-Spam-Level:
X-Spam-Status: No, score=-1.117 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NEUTRAL=0.779, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r95drWxcaoRG for <oauth@ietfa.amsl.com>; Thu, 1 Dec 2022 06:18:54 -0800 (PST)
Received: from smtp.smtpout.orange.fr (smtp-13.smtpout.orange.fr [80.12.242.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ADD41C14CEE1 for <oauth@ietf.org>; Thu, 1 Dec 2022 06:18:54 -0800 (PST)
Received: from [192.168.1.11] ([86.245.200.40]) by smtp.orange.fr with ESMTPA id 0kOopNWUDY4XV0kOppUZND; Thu, 01 Dec 2022 15:18:52 +0100
X-ME-Helo: [192.168.1.11]
X-ME-Auth: ZGVuaXMucGlua2FzQG9yYW5nZS5mcg==
X-ME-Date: Thu, 01 Dec 2022 15:18:52 +0100
X-ME-IP: 86.245.200.40
Content-Type: multipart/alternative; boundary="------------3kxAdQA1NVf8n440veWeNqiz"
Message-ID: <bb01ca46-c82b-fd4e-e04d-ddddcbc31db5@free.fr>
Date: Thu, 01 Dec 2022 15:18:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0
Content-Language: fr, en-GB
To: oauth@ietf.org
References: <DBBPR08MB591589A0C3D916B0A609B2F7FA139@DBBPR08MB5915.eurprd08.prod.outlook.com> <CA+k3eCSwOKcoDW2r77JLsA2GkEbRS6233hQ_g_sFw+mUawkL6Q@mail.gmail.com>
From: Denis <denis.ietf@free.fr>
In-Reply-To: <CA+k3eCSwOKcoDW2r77JLsA2GkEbRS6233hQ_g_sFw+mUawkL6Q@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/rd2OSJbeXEp7Um33yNKPS8vjPSY>
Subject: Re: [OAUTH-WG] draft-ietf-oauth-selective-disclosure-jwt
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 01 Dec 2022 14:18:59 -0000
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": "johndoe@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.Tschofenig@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-WG] draft-ietf-oauth-selective-disclosure-… Hannes Tschofenig
- Re: [OAUTH-WG] draft-ietf-oauth-selective-disclos… Brian Campbell
- Re: [OAUTH-WG] draft-ietf-oauth-selective-disclos… Brian Campbell
- Re: [OAUTH-WG] draft-ietf-oauth-selective-disclos… Denis
- Re: [OAUTH-WG] draft-ietf-oauth-selective-disclos… Hannes Tschofenig