Re: [OAUTH-WG] Call for adoption - SD-JWT

Giuseppe De Marco <demarcog83@gmail.com> Wed, 03 August 2022 00:03 UTC

Return-Path: <demarcog83@gmail.com>
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 84632C13CCC3 for <oauth@ietfa.amsl.com>; Tue, 2 Aug 2022 17:03:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.844
X-Spam-Level:
X-Spam-Status: No, score=-1.844 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 8eocV4y-HGWU for <oauth@ietfa.amsl.com>; Tue, 2 Aug 2022 17:03:06 -0700 (PDT)
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 59749C15BEC6 for <oauth@ietf.org>; Tue, 2 Aug 2022 17:03:06 -0700 (PDT)
Received: by mail-ej1-x62c.google.com with SMTP id kb8so14057427ejc.4 for <oauth@ietf.org>; Tue, 02 Aug 2022 17:03:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=gmJXLJrhJlxs/y81fsIueRrDEspNEICsl4O5OZ2RMXc=; b=XLk43PWDXXE6MxnKoItQTQLrtqXi/AfRvRCJNdJWYbxjsyDXgMIxKV86gBCUBqlJ9e FKCnLH0Sv6hyPgV0tWvgM840F1Jxt7xbzy7Tj37v3g388YaH/BAKASydQjGH5b0yAKJm /JlZXZM3PxZCwtARgoT1vZPW5dFwnnLcxkVyDCVL/tnz8kFyIaIzUsJjXfu+ikZ15clp ZMX+Q+boVWJPMiIp9nr2etgefbaTBrifIcUfNm8X6x0lUXNfSwbukKkclx3yqdXGeVEg 5fXAsWEqWp0NxZ0rUA0GK2Z/5bzA+VYyWwVq94jJceJPwOMh1kPoNOYaxeJUum+l8+Wv 7gOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=gmJXLJrhJlxs/y81fsIueRrDEspNEICsl4O5OZ2RMXc=; b=7nUqfF7b2iXF8pOR2llk0qXcwWqu3RWrV9RdaXKpezCnQAKx4+cp9UNFCzDD0x0qCi 79utOje+XmJ89MK8TFKZqlD5obVLQCbYPB7eSC3GzsEwHjISCzJX/gjhKoIk/j0Ym3js ewPr+fTDpAlFd5WUr9CJ0Rw//CJKmjdT61fnzLGNpmjQr9dIQSh9NOrd0raa1+CRGGw0 XeWZymVUSZA+5RA46b4uCp0VtT6YReVD3phj6UIVG+HLbwK8YzNBRPwcLOZF7lKNoPjb 6fTGu0wUvGktCe1ass/u9ud/koO0AP1OsbINp58Y+krGzt6MnIZX36peOU72/ooi6uNN 9TRA==
X-Gm-Message-State: AJIora/lapjuVGudkQmL5PyX4k9uNzwgGzY7ZFp8mIWCrt+k8laQQ20E IeU/HB2lELOIUlx46ljODbvkr6JdDk5wLOIpS10=
X-Google-Smtp-Source: AGRyM1uwJ4sDYPhsqZQXnSJ/SqMs6OIeQHz7ar9q+mkG4V1Lm4hK09fkeKqygBiGjFwo0d0qwqOQM1M/PjOZHBPHj2E=
X-Received: by 2002:a17:907:9803:b0:72e:ec55:b2a5 with SMTP id ji3-20020a170907980300b0072eec55b2a5mr18262239ejc.347.1659484984806; Tue, 02 Aug 2022 17:03:04 -0700 (PDT)
MIME-Version: 1.0
References: <SA2PR00MB10023E6A909909FB190E2C50F59D9@SA2PR00MB1002.namprd00.prod.outlook.com> <471EFFB6-935D-4251-813A-E77A8A70A4BE@forgerock.com>
In-Reply-To: <471EFFB6-935D-4251-813A-E77A8A70A4BE@forgerock.com>
From: Giuseppe De Marco <demarcog83@gmail.com>
Date: Wed, 03 Aug 2022 02:02:54 +0200
Message-ID: <CAP_qYym8=2KrY2Ak5ymCtrEcOv113qz_bQ4pMSeQwk+T4HOrjA@mail.gmail.com>
To: Neil Madden <neil.madden@forgerock.com>
Cc: oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000007923705e54af5ca"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/-3XSI7HZqChBrzmYesLBeVCMpmI>
Subject: Re: [OAUTH-WG] Call for adoption - SD-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: Wed, 03 Aug 2022 00:03:07 -0000

Hi Neil,

The problem of the linkability affects both sd-jwt (opaque values) and
traditional jwt (readable values).

Even if I present an mDL or an sd-jwt without disclosing any user attribute
in It, the linkability Is possible exploting the VC itself and its public
key, adopted as proof of possession of the vc. The public key won't change
in different vcs if the wallet has only a single  private Key to sign it's
issuance requests.

A salted/hashed value doesnt tell you anything about its content but Is
still linkable, because It won't change, It Will be presented and presented
again and due to this It is traceable and a user linkable over many
different RPs.

As we have the pairwised subject id in oidc, that changes in relations of
the audience, well, even with VCs we May enable the concept of ephemeral VC
(and ephemeral bounded public Key). A Citizen that doesnt want to be
tracked may ask for the issuance of a VC for each RP.

Without enabling the advanced crypto in our implementations, the
salted/hashed strategy seems like the only usable for selective disclosure
in several contexts, thus a good issuance strategy covers the privacy
requirements as well, so let's give a place for sd-jwt because we really
need It, otherwise we'll have a future painted in mDoc/CBOR and jwt would
not be considered as an usable data format. Dont let this happen!

Best



Il mer 3 ago 2022, 00:10 Neil Madden <neil.madden@forgerock.com> ha scritto:

>
> On 2 Aug 2022, at 21:04, Mike Jones <Michael.Jones@microsoft.com> wrote:
>
> 
>
> Neil, you wrote:
>
> "SD-JWT is not simpler. Anyway, I think I have learnt enough from this
> thread, we don’t have to keep arguing the same points. I think the claims
> of combinatorial explosion are somewhat exaggerated and I don’t see
> compelling evidence of a real world need for selective disclosure in OAuth,
> so I don’t support this draft."
>
>
>
> Speculatively issuing JWTs with combinations of claims because they might
> be used in the future might be a fine strawman proposal to score debating
> points but is hardly a practical engineering solution.
>
>
> Why would it be speculative?
>
>   Whereas SD-JWT meets the needs of JSON-based use cases for selective
> disclosure using the issuer/holder/verifier pattern, including those for
> ISO Mobile Driver's Licenses.
>
>
> As far as I can see mobile driving licenses are the *only* concrete use
> case that has been mentioned so far. Did I miss one?
>
> Given that the goal is to reproduce “the user experience of presenting
> credentials in-person”, let’s look at one. My driving license lists the
> following information:
>
> * a unique driver id (which itself encodes part of my name, dob, and a
> male/female bit)
> * full name
> * address
> * date and country of birth
> * license issuer, issued-at and expiry dates
> * the categories of vehicle I’m entitled to drive
>
> ISO mobile drivers’ licenses are supposed to be unlinkable so the driver
> ID is out. The expiry and issued-at probably shouldn’t be able to be
> selectively non-disclosed. So that only leaves 5 fields: full name,
> address, date of birth, country of birth, and categories of vehicle.
>
> So even if you issued a separate JWT for each field, that’s only 5 JWTs.
> Why is that not practical?
>
> — Neil
>
>
>
> That's why I support adoption.
>
>
>
>                                                        -- Mike
>
>
>
> *From:* OAuth <oauth-bounces@ietf.org> *On Behalf Of * Neil Madden
> *Sent:* Tuesday, August 2, 2022 2:16 AM
> *To:* Kristina Yasuda <Kristina.Yasuda=40microsoft.com@dmarc.ietf.org>
> *Cc:* oauth <oauth@ietf.org>
> *Subject:* Re: [OAUTH-WG] Call for adoption - SD-JWT
>
>
>
>
>
> On 2 Aug 2022, at 03:20, Kristina Yasuda <
> Kristina.Yasuda=40microsoft.com@dmarc.ietf.org> wrote:
>
>
>
> I support adoption.
>
>
>
> To add some color.
>
>
>
> One of the use-cases is a flow where issuance of a user credential
> (collection of user claims) is decoupled from presentation (where both
> issuance and presentation of a user credential are done using extensions of
> OAuth flows). The goal of this decoupling is to avoid “issuer call home”,
> where the user can send a user credential directly to the RP, without RP
> needing to contact the Issuer directly.
>
>
>
> So what’s the plan for revocation in this scenario? Something like OCSP
> Stapling? Short-lived tokens? Either way, the client will need to go back
> to the issuer regularly.
>
>
>
> So the motivations are not limited to offline scenarios, but are
> applicable to the scenarios that want to recreate in the online
> environment, the user experience of presenting credentials in-person.
>
>
>
> I’m not sure why this would be a goal. Presenting credentials in person is
> subject to many constraints that just don’t apply in the digital world.
>
>
>
>
>
> Driver’s Licence just happens to be an example familiar to many, and there
> is no reason it cannot be a diploma, or an employee card, or a training
> certificate, etc. But it is worth highlighting that SD-JWT work becomes
> critical if we are to enable ISO-compliant mobile Driver Licences expressed
> in JSON to enable online scenarios and make life of the Web developers
> easier (as opposed processing data encoded as CBOR and signed as a COSE
> message). Selective disclosure is a requirement in many government issued
> credentials, while the usage of advanced cryptography is not always
> encouraged by the national cybersecurity agencies.
>
>
>
> I’m not sure what any of this has to do with OAuth?
>
>
>
>
>
> Regarding an approach where issuer issues multiple JWTs of a same type but
> with different subset of claims, it is not an ideal way to do selective
> disclosure with JWTs (type as a way to differentiate credential with one
> data structure/syntax from another). It complicates implementations that
> try to provide RP-U unlinkability (RPs cannot collude to track the user).
> The simplest way to achieve unlinkability with JWTs without using advanced
> cryptography is to issue multiple credentials of the same type but with
> varying use identifiers and enable pairwise identifiers per RP. Now there
> are multiple copies of each JWT with subset of claims of the same type.
> This greatly complicates presentation of these credentials too – since
> credentials are of the same type, now wallet needs to manage the
> combination of a subset of claims + pairwise identifier…
>
>
>
> The same is needed in SD-JWT - the wallet needs to manage pairwise
> identifiers and which subset of claims to disclose.
>
>
>
>
>
> What if the implementation also wants predicates property, where
> age_over_XX boolean is sent instead of a birthdate string? The simplest way
> to do predicates with JWTs without using advanced cryptography is to have
> issuers to issue multiple age_over_xx booleans so that an appropriate one
> can be selectively disclosed to the RP. How many “JWTs with subset of
> claims” does the issuer needs to issue to account for all possible age
> requirements? Note that it’s not just age_over_21 to start gambling, it’s
> also age_over_65 to get pension benefits.
>
>
>
> Being over 65 also proves that you are over 21.
>
>
>
>
>
> Managing the combinatorial explosion of sets of claims in speculatively
> issued JWTs, many of which will never be used, seems unwieldy, to say the
> least. "A conventional JWT with a subset of claims" approach could be taken
> in some implementations, but it should not prevent a simpler, extensible
> alternative of SD-JWT.
>
>
>
> SD-JWT is not simpler. Anyway, I think I have learnt enough from this
> thread, we don’t have to keep arguing the same points. I think the claims
> of combinatorial explosion are somewhat exaggerated and I don’t see
> compelling evidence of a real world need for selective disclosure in OAuth,
> so I don’t support this draft.
>
>
>
>
>
>
>
> Finally, as Giuseppe pointed out, an option to blind claim names is on the
> table. As discussed on this list previously, we should analyze privacy
> properties of the mechanism and decide if we want to mandate it – which can
> be discussed after the adoption.
>
>
>
> Best,
>
> Kristina
>
>
>
>
>
> — Neil
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>