[OAUTH-WG] Re: SD-JWT architecture feedback
Rohan Mahy <rohan.mahy@gmail.com> Sun, 22 September 2024 17:22 UTC
Return-Path: <rohan.mahy@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 6E2BBC14F605 for <oauth@ietfa.amsl.com>; Sun, 22 Sep 2024 10:22:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.105
X-Spam-Level:
X-Spam-Status: No, score=-7.105 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_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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 8KFZtktbtGuY for <oauth@ietfa.amsl.com>; Sun, 22 Sep 2024 10:22:28 -0700 (PDT)
Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (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 6549AC14F604 for <oauth@ietf.org>; Sun, 22 Sep 2024 10:22:28 -0700 (PDT)
Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-5c43003a667so5180222a12.3 for <oauth@ietf.org>; Sun, 22 Sep 2024 10:22:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727025746; x=1727630546; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yBo5iASiRzoqlkZYHIZNQKtX6lZ818qsTQU9CpYE1lU=; b=HJrIWxySkAikV98j2ao2aunLEiRqb6YcWWAZ4SgECCKv4zyhWXlRr6gdxovK9N7bSY lTAeMUffQulnb1YZLj1ApEfD41aWMhkAjADHbBj/OeJ1JuK384P4XsHif09Qqx1BnVI3 LhJQGpb0tgbxxdWxUcpnRCe1Ss/41gMqprM1+ACzefRqwzUUoaB4xIVsUWB0eRmru7LQ u3TBQ6XqGqr9XSYuzkQ03TEN4MC+szN9eWDeg2Oi5YZ7eMEjwCYTn34dG+QfzrC6NlUE A2oWDBpoc1YJxLDPuJJKKUCNiMf5KngcZiu1ehqJW5PZ/eB0hCYnkOLj18sgwzYvHNL/ 4UBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727025746; x=1727630546; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yBo5iASiRzoqlkZYHIZNQKtX6lZ818qsTQU9CpYE1lU=; b=pYHeGFXS4P8PNmqafKW5/HUozOPQHiUZ4BkV+5dyy0OldYNM16T+jobvBSfUvAXZ3S 6GeWA9TW3jMmoPA3g99sWG+0GW9UoZKgmOPoFsr6vQSUUOSJS35+2iJB9DQitXywzBrT j1BiEgEtW70zQdvI+QUtvpI+2v2KlpGEULUzYQp0WnEvoz/QObJl+/A90255ucI4/6Y7 GN4UKIwugAGC6hardcTKMgRpS+Z63LK1tg+F4sMcQ38nx0mVg8YvoIoFNf54VEny/ms0 mdczX42J65I/H2ckOUdUWLqzgp3ORe+WmCXy2TAlR6POFmb9qAi+YYQjy+yhbJZowVFu qowg==
X-Forwarded-Encrypted: i=1; AJvYcCXiPULOQqTTlfAzlk2JBtwmpYXXlXkLD57ePJL4w+wmtHLZopx4FTox85vB8JJcIgjd7kAqzw==@ietf.org
X-Gm-Message-State: AOJu0YzeW/uRuMAG9v1QiWIrUJWkNkshU+7elaqC4KDoC7By8gibFNkY 1DVf2qPSb4lUVHJun3A+qv1JgdFiYG2Id7P3HJ/r93HpGcuKwv1f59u2v1bv/xD1BZWx2PLjUgA SvzC3ezAkYgGIiFmvDDcDpxMynu8=
X-Google-Smtp-Source: AGHT+IHUdn8fEx5fs0L7HcT9bdWi0unMchIf0aJ72cj6Z2MzgHDSVnAeNIzwDuNCvgtiMt9Sa9HqDM7Rxnwd1OwwSVo=
X-Received: by 2002:a05:6402:158f:b0:5bf:1bd:adb3 with SMTP id 4fb4d7f45d1cf-5c464a3eb82mr8176387a12.14.1727025745974; Sun, 22 Sep 2024 10:22:25 -0700 (PDT)
MIME-Version: 1.0
References: <CAD9ie-s9kricU8_VBBucQMob-n1jWN5xHd5Ymck=biUWqpH9yQ@mail.gmail.com> <e64eb21d-1ef4-4352-9c74-ffbb853ce3da@danielfett.de> <CAD9ie-t9jLMG5aROCR-EOuCYh19F2r67-C0Puw2OF4GEcvBc2g@mail.gmail.com>
In-Reply-To: <CAD9ie-t9jLMG5aROCR-EOuCYh19F2r67-C0Puw2OF4GEcvBc2g@mail.gmail.com>
From: Rohan Mahy <rohan.mahy@gmail.com>
Date: Sun, 22 Sep 2024 10:22:14 -0700
Message-ID: <CAKoiRuapFvBVBPosSXwB9Ts7RCOWHEHuHaUMhJTd-tCfSTn7gQ@mail.gmail.com>
To: Dick.Hardt@gmail.com
Content-Type: multipart/alternative; boundary="0000000000001b5fc50622b88413"
Message-ID-Hash: T7COGCR6E76B5V42AVU2IYVI7LE6ENH3
X-Message-ID-Hash: T7COGCR6E76B5V42AVU2IYVI7LE6ENH3
X-MailFrom: rohan.mahy@gmail.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
CC: oauth@ietf.org, kristina@sfc.keio.ac.jp
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [OAUTH-WG] Re: SD-JWT architecture feedback
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/N2tA8duWzpdoxw4stN7qL57z5X4>
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>
Hi Dick, I am going to comment only about your array item disclosure points among your topics from this post. I also originally questioned why disclosing individual items in an array was necessary and proposed an alternate syntax. While I didn't have a use case as an implementer back then, I have since stumbled on one that turns out to be reasonably elegant. It is not merely necessary to be able to express the disclosures, but also to place the digests where they belong in the "redacted" version of the JWT. To do that in an array you need to be able to distinguish an unredacted item from a digest. Lots of systems use SHA256 hashes as identifiers. If I had an array of IM groups that the Holder was authorized to administer, where each group is represented by 44 base64url characters, it would be indistinguishable from a selective disclosure digest using the default algorithm. Using a map with a single "..." key makes it easy to distinguish that using a key name that is unlikely to accidentally appear in the wild. ``` "admin_of_groups: [ "cDFj1yd1dcAnhXmgD4N8A5ndOaoz9OVJVyqFfSJn9_U", "HpdMwEDlFCpvNvo9CxflnHRAFr1sLY0SEpK68FM2eJ0" ] ``` vs. ``` "admin_of_groups: [ "cDFj1yd1dcAnhXmgD4N8A5ndOaoz9OVJVyqFfSJn9_U", {"...": "HpdMwEDlFCpvNvo9CxflnHRAFr1sLY0SEpK68FM2eJ0"} ] ``` Finally, it was certainly more work to implement array items in SD-JWT and SD-CWT, but it was much less than twice the work. Thanks, -rohan On Sat, Sep 21, 2024 at 9:16 AM Dick Hardt <dick.hardt@gmail.com> wrote: > > > On Sat, Sep 21, 2024 at 4:28 PM Daniel Fett <mail@danielfett.de> wrote: > >> Hi Dick, >> Am 21.09.24 um 06:41 schrieb Dick Hardt: >> >> *Array Disclosure* >> Is this really needed? The only example I saw was for multiple >> citizenships. Would the issuer of an SD-JWT that contains a subject's >> citizenship not be the country who they are a citizen of? Why would another >> country be authoritative that the subject is a citizen of another country? >> In the example, it is hard to imagine a verifier trusting the US to say >> someone is a DE citizen, or vice versa. The array of age claims in example >> A.3 does not need the non intuitive '...' array mechanism. >> > Yes, it is needed. First of all, SD-JWT can be used universally, not just >> for credentials. >> > I don't know what that sentence means. It is alluded to in the current > introduction, and makes no sense to me. Are you saying that an SD-JWT could > be used to selectively disclose claims that are not user identity claims? > Sure. > >> Second, even if used for credentials, there are many types of credentials >> where there is a use case for disclosing only some array values. Take an >> education credential as an example, where the holder may want to disclose >> only relevant courses and grades. You'll find more use cases in the >> examples in the appendix. >> >> A bit besides the point, but in the EU context we do in fact plan for >> credentials attesting other nationalities (and have good reasons to do so, >> here PID credentials derived from the eID card for EU citizens, see >> https://bmi.usercontent.opencode.de/eudi-wallet/eidas-2.0-architekturkonzept/functions/00-pid-issuance-and-presentation/#pid-contents >> for details). >> > I'm going to dig in on this point. SD-JWT is NOT taking a JSON array as > input. You have an array of digests and an array of disclosures. You can > have as many of the same property as you want like you are doing with the > age claims in the example. > > IE you can have a digests for "nationality"="DE" and for > "nationality"="US" and then have a disclosure for each one. No '...' magic > needed. > > > >> Taking this out would simplify implementations. >> >> Fluff -- are there features that, when removed, would not simplify >> implementations? >> > > I'll restate it more strongly, I think the array support will double the > effort for no real benefit since as noted above, you can already include > multiples of the same property in an SD-JWT >
- [OAUTH-WG] SD-JWT architecture feedback Dick Hardt
- [OAUTH-WG] Re: SD-JWT architecture feedback Warren Parad
- [OAUTH-WG] Re: SD-JWT architecture feedback Daniel Fett
- [OAUTH-WG] Re: SD-JWT architecture feedback Dick Hardt
- [OAUTH-WG] Leading underscores in SD-JWT Claim Na… Michael Jones
- [OAUTH-WG] Explicit typing of SD-JWTs (was SD-JWT… Michael Jones
- [OAUTH-WG] Re: Leading underscores in SD-JWT Clai… Dick Hardt
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Dick Hardt
- [OAUTH-WG] Re: Leading underscores in SD-JWT Clai… Rohan Mahy
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… David Waite
- [OAUTH-WG] Re: SD-JWT architecture feedback Rohan Mahy
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Rohan Mahy
- [OAUTH-WG] Re: SD-JWT architecture feedback Dick Hardt
- [OAUTH-WG] Re: Leading underscores in SD-JWT Clai… Brian Campbell
- [OAUTH-WG] Array Disclosure (was SD-JWT architect… Denis
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Kristina Yasuda
- [OAUTH-WG] Re: SD-JWT architecture feedback Brian Campbell
- [OAUTH-WG] Re: SD-JWT architecture feedback Dick Hardt
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Brian Campbell
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Dick Hardt
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Brian Campbell
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Dick Hardt
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Rohan Mahy
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Brian Campbell
- [OAUTH-WG] Re: Explicit typing of SD-JWTs (was SD… Dick Hardt