[OAUTH-WG] Re: SD-JWT linkability

Joseph Heenan <joseph@authlete.com> Sat, 21 December 2024 16:25 UTC

Return-Path: <joseph@authlete.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 5D4A8C151991 for <oauth@ietfa.amsl.com>; Sat, 21 Dec 2024 08:25:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.904
X-Spam-Level:
X-Spam-Status: No, score=-1.904 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, 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=authlete-com.20230601.gappssmtp.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 zIQzZicq1A4r for <oauth@ietfa.amsl.com>; Sat, 21 Dec 2024 08:25:46 -0800 (PST)
Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7E338C14F6B4 for <oauth@ietf.org>; Sat, 21 Dec 2024 08:25:46 -0800 (PST)
Received: by mail-wr1-x441.google.com with SMTP id ffacd0b85a97d-385e0e224cbso1644481f8f.2 for <oauth@ietf.org>; Sat, 21 Dec 2024 08:25:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=authlete-com.20230601.gappssmtp.com; s=20230601; t=1734798344; x=1735403144; darn=ietf.org; h=message-id:in-reply-to:to:references:date:subject:mime-version:from :from:to:cc:subject:date:message-id:reply-to; bh=VEhz6N8M46L0OLSlCjRsz1uwF1v41TKHjeVFbJc6svM=; b=JkXCzoC/IVG9n8yZW3Swr1IBIehsT2F/OL2HB9vrWg3ZTbTp839rWRBpJ4q3avZl17 Eh0Faa67764iyDPPqxvDidABvHZcPPlOssZVJJZ4PQIWbHlDHYmBrx7NObBSGtGiG2HA OnABQfWYJeRBwjSwBS6S8lxoL2M5AOGPU56q9ksdO6l2jiu0/eMxyAJ2QMPpcGCQbQiC tDFm1RM0mP5VO3x6R+9tC9RyJOO2RaxX6uSonuN4oCaEn717HjDRnnDt4WZauqO9D9EG t6HJQYHyDJ/KKoVA6yWtAmV3gaP6vzt90pqaXlv4Gnui0zyZGq1WmX64Bobc1gGyFhWC vOQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734798344; x=1735403144; h=message-id:in-reply-to:to:references:date:subject:mime-version:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VEhz6N8M46L0OLSlCjRsz1uwF1v41TKHjeVFbJc6svM=; b=vxpTRpq1CD/djPB41cFTRBnmCjY93KlwsAr90AapGyBG85as798j7G6sf7f25nFCru ZEk5iDzGKoc4hygwU9OOY1wB1bvV5frNMw1ho7km4Xwd7fLKISK3CBOKIEXUqfBr3K69 z80nxtXcxyo10SCKQeNvB116+nMCuLynfl31xD4DPaPGI4N5d1ekobt6w92lDd0WVTBN tZ3QYSLL+OnjVlAL7bjMNX7uQJZDNGiGTUW+hqdS1qGwR1PjirMsI0OnhfzV/AEvkarW 4HWprIFSE0HMGWyvMJIN205zg80TTyKBUR/BG8kSBlgnc7PHm2Fuh8C7CyKFgA7g4DFM 4QTg==
X-Gm-Message-State: AOJu0YzMlfYanSs3DGaHlCFzqR7M9UBO9+EVE1aWRDXsJ/J4dCdvoogF IAZmo6pFJtQEitZFWUFCc7I9mh4LHaT0ENylbl/macr+goJodmBJ7bqYODqk0Y/C/dNCU/OUHua lyEpYBQ==
X-Gm-Gg: ASbGncsgEQ4vWfEvtxQWdTy7pzkPRp2pi400bBbP0ipdYF6RthhwOxt6COviJ6jfU+1 vI58Jy8zjifwkXOH2WgrDTC535kzA53rwWyMUwTSTOWBH4E8YnhGzNz3FnT7pMe+8SA4aUkg2jZ XExT/7xNLiag5LOlE+UcVix18vp3PivwVqGWogVuPnw+XFuhA2iOID4F+yZGNvWC31gLL+zrjhj 1t+klhkByJCPxzEfdaupeCm72cKQsaO7ANBAt9YtxPJfJN2gOmdfUjAtxlIVb7eaDiL/L/2Sna6 q5ztzWA8g/TAfCnEmzA+NWOlT7c+lw==
X-Google-Smtp-Source: AGHT+IEdP5B8Relofk355vmrq+QsWv7Fq2QCY87NfRfW8Ihtv/EcXYKBZEaJltwa8fzbjNdNLsbg0A==
X-Received: by 2002:a5d:5e09:0:b0:385:e8b0:df13 with SMTP id ffacd0b85a97d-38a223ff2b7mr8029435f8f.40.1734798343848; Sat, 21 Dec 2024 08:25:43 -0800 (PST)
Received: from smtpclient.apple (cust211-dsl93-89-133.idnet.net. [93.89.133.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4364a379d69sm128870265e9.0.2024.12.21.08.25.42 for <oauth@ietf.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Dec 2024 08:25:43 -0800 (PST)
From: Joseph Heenan <joseph@authlete.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_2907E0CE-BE04-490E-8702-397F72EB088D"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\))
Date: Sat, 21 Dec 2024 16:25:30 +0000
References: <CACsn0ckGp4AocD1fQbMCs45P_Z5vjveggzDJw=-Vk5kxinM28Q@mail.gmail.com> <D8C86F2E-E288-4799-98BD-108F553C8CFE@authlete.com> <CACsn0cnKLr0Z-uJRM0TySCXCBbcO8wkDhRFLbsh8K8LBJepTbA@mail.gmail.com> <50282CFE-6DE4-48B7-9080-E2D4E81F9569@authlete.com> <CACsn0ckGOpLR617mFTjVH94kiV3Xi4U6PZT-w=YW9g1_+tZ9Jg@mail.gmail.com>
To: IETF oauth WG <oauth@ietf.org>
In-Reply-To: <CACsn0ckGOpLR617mFTjVH94kiV3Xi4U6PZT-w=YW9g1_+tZ9Jg@mail.gmail.com>
Message-Id: <7D0A7B17-9C40-4439-900D-81A744F7AD4F@authlete.com>
X-Mailer: Apple Mail (2.3826.300.87.4.3)
Message-ID-Hash: F3OIHBGMWJQPSBHWNSK6JNQ2MTQHPBD4
X-Message-ID-Hash: F3OIHBGMWJQPSBHWNSK6JNQ2MTQHPBD4
X-MailFrom: joseph@authlete.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-oauth.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Re: SD-JWT linkability
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/ocQELEtVumlH4CZBTQ35ameA3JU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>


> On 20 Dec 2024, at 18:07, Watson Ladd <watsonbladd@gmail.com> wrote:
> 
> On Fri, Dec 20, 2024 at 9:47 AM Joseph Heenan <joseph@authlete.com> wrote:
>> 
>> 
>> 
>> On 19 Dec 2024, at 21:54, Watson Ladd <watsonbladd@gmail.com> wrote:
>> 
>> On Tue, Dec 17, 2024, 1:59 PM Joseph Heenan <joseph@authlete.com> wrote:
>> 
>> 
>> Hi Watson
>> 
>> Just to respond to the suggested text:
>> 
>> 
>> "When disclosures include information easily understood to be
>> identifying, users intuitive view of what they are revealing largely
>> matches the underlying technical reality. In cases where the
>> information being disclosed is not identifying, SD-JWT
>> MUST NOT be used as this confusion leads to users making the wrong
>> choices.
>> 
>> 
>> This sentence is really hard to make sense of and I don’t think implementors will understand it. I’m not convinced I understand it even with the extra context from the threads. I think a MUST NOT is far too strong too, and saying ’SD-JWT’ in particular must not be used it too strong as an SD-JWT where everything is disclosed (or no selective disclosures are present in the issued credential in the first place) is no different to other credentials formats that don’t have selective disclosure.
> 
> I think this is subsumed by the first sentence. When users are
> disclosing information that wasn't identifying, but the mechanism
> involves transmitting a unique identifier there is a problem.

Yes, and that problem is not unique to SD-JWT. We mustn’t try to imply that it is specific to SD-JWT or we risk developers getting very confused.

>> Would adding "When users disclose information that is not identifying,
>> e.g. age, the fact that the mechanism in this draft exposes the unique
>> signature of their credential is not obvious. Users could have made
>> different decisions if they understood this. Therefore," in the middle
>> help?
>> 
>> 
>> I think that makes it easier to understand, but I disagree with the premise - I believe there are likely ways to describe this to users and this needs to be properly researched & tested with real people. As I said, the MUST NOT is too strong regardless - there are likely cases where the user recognises that tracking like this is possible/inevitable, and regardless it seems to imply that SD-JWT has worse properties than (for example) JWT based credentials, which is something we definitely shouldn’t do.
> 
> Then when people have demonstrated that they can mitigate the risk, we
> can write a bis.

That would seem like complete overkill process wise. The need is to point out the risk and let people assess it themselves. As soon as we try to make very prescriptive statements about certain cases we run the opposite risk of failing to predict all the bad cases and making the overall situation worse.

> The point is some mitigation needs to be
> demonstrated. I want to put text in that someone can show their boss
> to say "we shouldn't implement this because we don't have a
> demonstrated, working mitigation for the privacy risks that aren't
> apparent". Do you have alternate ways to document this issue that will
> do that?
> 

Yes, the current text in https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-14.html#section-10.1 seems to get across the risk just fine and doesn’t run the risk that your suggested text has of developers selecting other equally bad or worse solutions instead.

>> 
>> Applications cannot assume Verifiers behave properly (RFC
>> 3514) and MUST analyze the consequences for such linkage with each
>> credential that could be used."
>> 
>> 
>> This ‘MUST’ is practically impossible for some implementors - for example, it is impractical for a wallet to make this kind of judgement for each issued credential.
>> 
>> 
>> 
>> Bingo! Wallets that use SD-JWT can't give users the control over their
>> data that we would expect them to have.
>> 
>> 
>> I don’t think you have shown this very generalised statement is true, nor that if it was true that it only applies to wallets using SD-JWT.
>> 
>> The wallet needs to be aware
>> of how the requests impact user privacy.
>> 
>> 
>> The wallet doesn’t need to be aware if it is clear to the user from the context (and perhaps there are other cases too where the wallet doesn’t need to be aware). The MUST NOT is too strong, and I’m not sure even a SHOULD NOT would be appropriate.
> 
> Somebody has to look out for the user here. In the web its why we call
> it a User Agent.

I’m unsure what kind of point you’re trying to make here, but the user agent as defined by w3c isn’t required to ‘look out’ for the user: https://www.w3.org/WAI/UA/work/wiki/Definition_of_User_Agent

The suggested text is again overly prescriptive and that is a bad thing that is likely to have unintended consequences.

> If the Wallet isn't going to be capable of doing
> that, what will? What is "clear to the user from the context"? In the
> case of age verification it really isn't clear what exactly is being
> revealed.

If I’m presenting the age part of my government issued credential to a verifier in some countries in the world, I’m quite clear that the government is already fully tracking what’s going on and knows who am I, what I’m doing and who I’m presenting the credential too - probably particularly in the case I’m doing so in person. That doesn’t mean I should be forced to use non-SDJWT technologies that would also reveal my identity directly to the verifier.

Joseph