[OAUTH-WG] Re: Review of draft-ietf-oauth-selective-disclosure-jwt-10
Giuseppe De Marco <demarcog83@gmail.com> Wed, 14 August 2024 20:11 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 70DF5C151553 for <oauth@ietfa.amsl.com>; Wed, 14 Aug 2024 13:11:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.855
X-Spam-Level:
X-Spam-Status: No, score=-1.855 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_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 Y0tfiBCiho_A for <oauth@ietfa.amsl.com>; Wed, 14 Aug 2024 13:11:34 -0700 (PDT)
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) (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 82B78C14F6FA for <oauth@ietf.org>; Wed, 14 Aug 2024 13:11:34 -0700 (PDT)
Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5bba25c1e15so469573a12.2 for <oauth@ietf.org>; Wed, 14 Aug 2024 13:11:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723666293; x=1724271093; 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=Q/QiFtx3XrypnP897shLtzV+gDSGcV4B7q2OSTR+pHc=; b=DFaqsqZpTFGiyjFKKb2vL3HeWIgAisPeAASnUi5naJjD4BOZA7aVWbJHkpxdgcIz79 gCjDVN8rNVmEUuMRn7g/3KJsAhPaY3o94B0hqlfPbLFHzu1MdJcJ60GZnj43rAm2Jbm7 tsRPPdsXOp7OJxDjXGRLEg4MfFDgZnf0E8pxAt+bmSzOkGZQJUarkDxWgJV63xEqKpgY XBIw/tNBZbBnbe23HiBYGT12Bl1vwcQjxTBlzf8cTgV5MXiaF5KX9ES6bDj/uknhAWPX Kp116WAjDGVs43U8G5/XJ9p5trWlgMnrrxe9s0S1gqJHsjI6AEFmM2AR5oGV893nFM3j VQrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723666293; x=1724271093; 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=Q/QiFtx3XrypnP897shLtzV+gDSGcV4B7q2OSTR+pHc=; b=f1EaPNmEtBgjvtKDQ69WVhJ09+XQtRxf1tQnC73rK3uweDp+HtLHRyr5xKfs6n3vjU 1L40IW/s5BPOqm1mJ8eLfqAhCVjdt1oQ+WXJAMLq/1YrCppjBKvUh3I8hHN35tP1/HA3 6WXCPDs+IZ9GGFZKLLJssrrqo4OPE2gPWncaNmx3c0d87E89d3pGyf1QqHcoxIxPMI7r uwD/PN3ASIwctARE0df1Abf5MbBrDQiEB+kkLFCE6AHUNNxwQucwCnZ9smnHvLSKKzyX 7tUlr1qHgEAVXg+HHpxPEkqTzZkOh4oeMYqoysqXtz33Rwaj6PA3BjEq7IXkLfayAra6 VYQQ==
X-Gm-Message-State: AOJu0YyVV+sgrKNyuAFtK2tSTzdnnUN8IHrnexg6s5fGPZb/c/tMPFQD 2KPsrytg6dTTUhwOm5u1RxVunMlgO1r3DjBwzSeszS8q10EWCHGDMz7SIX3GdVFMXs45iFYdOXo A2xtJvcHAxjmNEslAEp8k3svekk8=
X-Google-Smtp-Source: AGHT+IHXKhhlb57y3Fl0DN886GkvY4JmRiopo0n1jCe8rvtAp36FxQmDVBoSDu6mOEzEABYHhj+rLp61p7U6ZN66tYw=
X-Received: by 2002:a05:6402:3548:b0:5a1:eb48:2b9a with SMTP id 4fb4d7f45d1cf-5bea1cad107mr2648165a12.25.1723666292333; Wed, 14 Aug 2024 13:11:32 -0700 (PDT)
MIME-Version: 1.0
References: <SJ0PR02MB7439CC07D6FB13A1DAA664E1B7BE2@SJ0PR02MB7439.namprd02.prod.outlook.com>
In-Reply-To: <SJ0PR02MB7439CC07D6FB13A1DAA664E1B7BE2@SJ0PR02MB7439.namprd02.prod.outlook.com>
From: Giuseppe De Marco <demarcog83@gmail.com>
Date: Wed, 14 Aug 2024 22:11:20 +0200
Message-ID: <CAP_qYymknh=9wpQnPrQTTg4WQbJnu2nML4xkqc7AvUi9ihDKrQ@mail.gmail.com>
To: Michael Jones <michael_b_jones@hotmail.com>
Content-Type: multipart/alternative; boundary="00000000000010e22b061faa5532"
Message-ID-Hash: BZ2OIOG6JIP45NRNXNVOEYMEODNYYZSY
X-Message-ID-Hash: BZ2OIOG6JIP45NRNXNVOEYMEODNYYZSY
X-MailFrom: demarcog83@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" <oauth@ietf.org>
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [OAUTH-WG] Re: Review of draft-ietf-oauth-selective-disclosure-jwt-10
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/rYfssI2FPzNKRf_48phlEuyQ3sk>
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 Mike, Regarding the definition of Holder, here I want to share an open issue that aims to clarify this kind of entity, even if it is opened for the openid4vc specs your revision reminds me it https://github.com/openid/OpenID4VP/issues/225 Il giorno lun 5 ago 2024 alle ore 05:55 Michael Jones < michael_b_jones@hotmail.com> ha scritto: > I read > https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html > in its entirety, resulting in these suggestions. Some are for > readability. Some are for consistency with related specifications, > including JWT. Some are for security and correctness. The most important > comments, including those addressing correctness issues, are in red. > > > > *Abstract > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#abstract>*: > In “It encompasses various applications, including but not limited to the > selective disclosure of JSON Web Token (JWT) claims.”, change “encompasses > various” to “can be used for multiple” or “is applicable to multiple”. The > use of “encompasses” is confusing here, and “various” isn’t a strong word. > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>*: > In “However, that does not preclude the mechanism's applicability to other > or more general applications of JWS with JSON payloads.”, delete “or more > general”, since it doesn’t add anything but length. > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > Change “Web Authorization Protocol (oauth) working group” to “Web > Authorization Protocol (OAuth) working group”.* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > In “While JWTs with claims describing natural persons are a common use > case, the mechanisms defined in this document can be used for other use > cases as well.” change “can be used for other use cases as well” to “are > also applicable other use cases” to tighten the exposition.* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > The usage of “Holder” in “used a number of times by the user (the "Holder" > of the JWT)” inconsistent with its usage in the definitions, which defines > “Holder” as being “an entity”. The usage here in the introduction makes > the holder into a person rather than an entity. Please adjust the language > here to not confuse the user who utilizes the holder with the holder > itself.* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > The use of the undefined terms “verifiable credential” and “credential” in > “One example of a multi-use JWT is a verifiable credential, an > Issuer-signed credential that contains the claims about a subject, and > whose authenticity can be cryptographically verified.” will almost > certainly cause people to ask you to define them, and then people will > argue about the definitions. Get rid of both terms by changing this to > “One example of a multi-use JWT is an Issuer-signed token that contains > claims about a subject, and whose authenticity can be cryptographically > verified.” and save us some grief! (Although I see that “credential” is > used later. At least ditch “verifiable credential” here!)* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > In “"Claims" here refers to both object properties (name-value pairs) as > well as array elements.” and all other locations in the spec, change > “name-value” to “name/value” for consistency with the notation in the > “Claim” definition at https://www.rfc-editor.org/rfc/rfc7519.html#section-2 > <https://www.rfc-editor.org/rfc/rfc7519.html#section-2>.* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > In “"Claims" here refers to both object properties (name-value pairs) as > well as array elements.” change “array elements” to “elements in arrays > that are the values of name/value pairs” (or something like that). Without > saying what the array elements are, readers will be confused about what’s > being referred to. I’d apply this clarification in 4.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-4.1>SD-JWT > and Disclosures > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-sd-jwt-and-disclosures> > *and other applicable locations as well. > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > In “they hold the private key associated to the SD-JWT”, change “associated > to” to “associated with”.* > > > > *1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1>Introduction > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-introduction>: > During IESG and/or RFC Editor review, we’re likely going to be asked to add > a reference for JSON-LD at “SD-JWT can be used with any JSON-based > representation of claims, including JSON-LD.” If we don’t want that, I’d > delete “, including JSON-LD” now.* > > > > *1.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1.1>Feature > Summary > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-feature-summary>*: > Shorten both uses of “The definition in this document comprises the > following:” to “This comprises the following:” to tighten the exposition. > > > > *1.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1.1>Feature > Summary > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-feature-summary>*: > In “A format for enabling selective disclosure in nested JSON data > structures, supporting selectively disclosable object properties > (name-value pairs) and array elements”, consider expanding “array elements” > in the same manner as the preceding comment to make the meaning more > evident. > > > > *1.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1.1>Feature > Summary > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-feature-summary>*: > In “A facility for associating an SD-JWT to a key pair”, change “to a key > pair” to “with a key pair”, as it reads more naturally. > > > > *1.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1.2>Conventions > and Terminology > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-conventions-and-terminology>*: > I suggest moving the “base64url” definition to the Terms and Definitions > section and use a parallel structure to that at > https://www.rfc-editor.org/rfc/rfc7519.html#section-2. Specifically, say > “The “base64url” term denotes the URL-safe base64 encoding without padding > defined in Section 2 of [RFC7515].” Then introduce the rest of the > definitions with the phrase “These terms are defined by this > specification:” as is done in RFC 7519. The current presentation is fairly > jarring. > > > > *1.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-1.2>Conventions > and Terminology > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-conventions-and-terminology>*: > Change “Selective disclosure” to “Selective Disclosure”. > > > > *4.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-4.3>Optional > Key Binding > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-optional-key-binding>*: > Change “use-case” to “use case”. > > > > *4.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-4.3>Optional > Key Binding > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-optional-key-binding>*: > This disclaimer seems too strong: “Note: How the public key is included in > SD-JWT is out of scope of this document. It can be passed by value or by > reference.”. I suggest changing this to “Means of including or referencing > the public key in the SD-JWT are described in *5.1.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.1.2>Key > Binding > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-key-binding>* > .” > > > > *5.2.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.1>Disclosures > for Object Properties > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosures-for-object-prop>*: > In “It is RECOMMENDED to base64url-encode minimum 128 bits of > cryptographically secure random data”, insert “a” before “minimum”. Also, > consider moving “See Section 10.3 > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#salt-entropy> for > security considerations.” to the end of the paragraph. > > > > *5.2.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.1>Disclosures > for Object Properties > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosures-for-object-prop>*: > In “The value MAY be of any type that is allowed in JSON, including > numbers, strings, booleans, arrays, and objects.”, consider adding “null”. > Likewise in *5.2.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.2>Disclosures > for Array Elements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosures-for-array-eleme>* > . > > > > *5.2.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.1>Disclosures > for Object Properties > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosures-for-object-prop>*: > In “US-ASCII [RFC0020 > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#RFC0020>]”, > consider changing “RFC0020” to the more readable and standard “RFC20”, > matching the reference identifier used at > https://www.rfc-editor.org/rfc/rfc7519.html#section-13.1. > > > > *5.2.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.2>Disclosures > for Array Elements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosures-for-array-eleme>*: > Some readers and implementers will be confused at this point because the > array disclosure doesn’t indicate what Claim Name the disclosed array > element corresponds to. Please say here how the Claim Name information is > communicated. At the very least, add a forward reference saying that the > way the array element disclosure is associated with the Claim Name is > described in *5.2.4.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.4.2>Array > Elements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-array-elements>.* > > > > *5.2.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.3>Hashing > Disclosures > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-hashing-disclosures>*: > Consider changing “(often used)” to “(sometimes used)”. > > > > *5.2.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.3>Hashing > Disclosures > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-hashing-disclosures>*: > Change “For example, the SHA-256 digest of the Disclosure” to “For > example, the base64url-encoded SHA-256 digest of the Disclosure” . And add > “base64url-encoded” to the second example as well (for correctness). > > > > *5.2.4.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.4.1>Object > Properties > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-object-properties>*: > Change “family_name” to “given_name” to match the example. > > > > *5.2.4.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.4.2>Array > Elements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-array-elements>*: > I suggest adding an example also enabling disclosing a second array > element, so that the syntax will be clear to readers. In other words, show > what “unless a matching Disclosure for the second element is received” > would look like. Or add a forward reference showing a place that it’s done. > > > > *5.2.6. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.2.6>Recursive > Disclosures > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-recursive-disclosures>*: > Change “conceal presence” to “conceal the presence”. > > > > *5.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.3>Key > Binding JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-key-binding-jwt>*: > Change “MUST NOT be none.” to “It MUST NOT be "none".”. > > > > *5.3.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-5.3.2>Validating > the Key Binding JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-validating-the-key-binding->*: > In “if the SD-JWT contains a cnf value with a jwk member, the Verifier > could parse the provided JWK and use it to verify the Key Binding JWT.”, > change “could” to “MUST”. Make this normative to increase interoperability! > > > > *6.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-6.1>Issuance > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-issuance>*: > In “The Issuer is using the following input claim set:”, consider changing > “claim set” to “JWT Claims Set”, so that you’re using the standard JWT > claims terminology. Or at least, change “claim set” to “Claims Set” > (plural) wherever “claim set” is currently used, such as also in *7. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-7>Considerations > on Nested Data in SD-JWTs > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-considerations-on-nested-da>* > . > > > > *6.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-6.1>Issuance > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-issuance>*: > There are many places from here on where the label “SHA-256 Hash” is used, > for instance “SHA-256 Hash: jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4”. > Change all of these to “Base64url-Encoded SHA-256 Hash” for correctness. > > > > *6.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-6.1>Issuance > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-issuance>*: > Change “The payload is then signed by the Issuer to create a JWT like the > following:” to “The payload is then signed by the Issuer to create the JWT:” > > > > *6.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-6.1>Issuance > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-issuance>*: > Change “The issued SD-JWT might look as follows:” to “The issued SD-JWT > would be as follows:” or “The issued SD-JWT would be:”. > > > > *6.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-6.1>Issuance > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-issuance>*: > Change “The following Key Binding JWT payload was created and signed for > this presentation by the Holder:” to “The following Key Binding JWT Claims > Set was created and signed for this presentation by the Holder:”, again, to > use the standard JWT claims terminology. > > > > *7. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-7>Considerations > on Nested Data in SD-JWTs > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-considerations-on-nested-da>*: > Change “Important: The following examples” to “Note that the following > examples”. It’s more standard exposition and less jarring. > > > > *7.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-7.2>Example: > Structured SD-JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-example-structured-sd-jwt>*: > Change “In this case there would be no Disclosure for country since it is > provided in the clear.” to “In this case, there would be no Disclosure > for country, since it is provided in the clear.” (adding the two missing > commas). > > > > *8.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-8.1>Verification > of the SD-JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-verification-of-the-sd-jwt>*: > Delete “nbf” from “claims such as nbf, iat, and exp” and everywhere else > in the spec, other than in *10.7. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.7>Selectively-Disclosable > Validity Claims > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-selectively-disclosable-val>*, > where both “iat” and “nbf” should be listed, as described in my comment > there. “iat” (Issued At) is a standard validity claim in JWT tokens (for > instance, ID Tokens), whereas “nbf” (Not Before) is rarely used, since it > is only useful when future-dating tokens, which is rare. > > > > *8.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-8.2>Processing > by the Holder > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-processing-by-the-holder>*: > In “If the Holder receives an SD-JWT+KB, it SHOULD be rejected.”, change > “SHOULD” to “MUST”. Make it normative and thereby more secure. > > > > *9.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-9.1>New > Unprotected Header Parameters > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-new-unprotected-header-para>*: > Change “the representation as a regular SD-JWT MUST be created > temporarily” to “the representation as a regular SD-JWT where the JWT uses > the JWS Compact Serialization MUST be created temporarily” or something > similar. The key point is to indicate that the regular SD-JWT being > referenced uses the JWS Compact Serialization for the JWT in the SD-JWT. > You also may want to rework this to also eliminate the somewhat ambiguous > “using a . character as a separator” language in favor of describing the > result as using the JWS Compact Serialization. > > > > *10.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.1>Mandatory > Signing of the Issuer-signed JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-mandatory-signing-of-the-is>*: > Change “Any of the JWS asymmetric digital signature algorithms registered > in [IANA.JWS.Algorithms > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#IANA.JWS.Algorithms>] can > be used, including post-quantum algorithms, when they are ready.” to “Any > of the JWS asymmetric digital signature algorithms registered in [ > IANA.JWS.Algorithms > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#IANA.JWS.Algorithms>] meeting > the security requirements of the application, as described in the last > paragraph of Section 5.2 of [RFC7515], can be used.” It’s NOT, in general, > the case that any registered algorithm can be used. That’s up to the > application. For instance, “ES512” might be acceptable to the application > whereas “RS256” isn’t. Also, the post-quantum language seems superfluous > and non-actionable, so I’d delete it. > > > > *10.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.3>Entropy > of the salt > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-entropy-of-the-salt>*: > Change “salt” to “Salt” in the title. > > > > *10.7. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.7>Selectively-Disclosable > Validity Claims > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-selectively-disclosable-val>*: > Add “iat (Issued At) to the validity claims list before “nbf”, and change > “nbf (Not Before)” to “nbf (Not Before) (if present)”. “iat” (Issued At) > is a standard validity claim in JWT tokens (for instance, ID Tokens), > whereas “nbf” (Not Before) is rarely used, since it is only useful when > future-dating tokens, which is rare. Change all uses of “nbf” to “iat” > elsewhere in the spec. > > > > *10.7. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.7>Selectively-Disclosable > Validity Claims > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-selectively-disclosable-val>*: > Change “application-specific profile” to “application-specific profiles”. > > > > *10.10. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-10.10>Integrity > of SD-JWTs and SD-JWT+KBs > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-integrity-of-sd-jwts-and-sd>*: > In “The specific set of Disclosures, however, is not integrity-protected - > the SD-JWT can be modified by adding or removing Disclosures and still be > valid.”, change the dash to a period or semicolon. > > > > *11.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-11.1>Storage > of Signed User Data > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-storage-of-signed-user-data>*: > Change “OpenID Connect” to “OpenID Connect [OpenID.Core]” and add the > following reference to the specification: > > > > <reference anchor="OpenID.Core" target= > https://openid.net/specs/openid-connect-core-1_0.html> > > <front> > > <title>OpenID Connect Core 1.0</title> > > > > <author fullname="Nat Sakimura" initials="N." surname="Sakimura"> > > <organization abbrev="NAT.Consulting (was at > NRI)">NAT.Consulting</organization> > > </author> > > > > <author fullname="John Bradley" initials="J." surname="Bradley"> > > <organization abbrev="Yubico (was at Ping > Identity)">Yubico</organization> > > </author> > > > > <author fullname="Michael B. Jones" initials="M.B." > surname="Jones"> > > <organization abbrev="Self-Issued Consulting (was at > Microsoft)">Self-Issued Consulting</organization> > > </author> > > > > <author fullname="Breno de Medeiros" initials="B." surname="de > Medeiros"> > > <organization abbrev="Google">Google</organization> > > </author> > > > > <author fullname="Chuck Mortimore" initials="C." > surname="Mortimore"> > > <organization abbrev="Disney (was at > Salesforce)">Disney</organization> > > </author> > > > > <date day="15" month="December" year="2023"/> > > </front> > > </reference> > > > > *12. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-12>Acknowledgements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-acknowledgements>*: > Please change “Mike Jones” to “Michael B. Jones”. (Lots of people share my > name so I include my middle initial for disambiguation in professional > contexts.) > > > > *12. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-12>Acknowledgements > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-acknowledgements>*: > Consider sorting the acknowledgements alphabetically by last name, which is > the usual convention. > > > > *13.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-13.2>Media > Type Registration > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-media-type-registration>* > and *13.3. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-13.3>Structured > Syntax Suffix Registration > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-structured-syntax-suffix-re>*: > In all the Encoding Considerations, change “separated by period ('.') or > tilde ('~') characters” to “separated by period ('.') and tilde ('~') > characters”. > > > > *14.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-14.2>Informative > References > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-informative-references>*: > Add the missing date to the reference “[EUDIW.ARF]”. And if isn’t the most > current public ARF reference, please update to the latest one. > > > > *14.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-14.2>Informative > References > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-informative-references>*: > Update the reference “[I-D.ietf-oauth-sd-jwt-vc]” to > https://datatracker.ietf.org/doc/html/draft-ietf-oauth-sd-jwt-vc-04. > > > > *14.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-14.2>Informative > References > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-informative-references>*: > Update the reference “[OIDC.IDA]” to > https://openid.net/specs/openid-connect-4-identity-assurance-1_0-14.html > and be sure to include the (currently missing) date. > > > > *14.2. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#section-14.2>Informative > References > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-informative-references>*: > Update the reference “[VC_DATA_v2.0]” to use the current editor list and > date. (For instance, Orie resigned.) > > > > *Appendix A. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-A>Additional > Examples > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-additional-examples>*: > Consider changing “Important: The following examples” to “Note that the > following examples”. “Important” is unnecessarily jarring. > > > > *A.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-A.1>Simple > Structured SD-JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-simple-structured-sd-jwt>*: > Change “allowing to separately disclose individual members of the claim” to > “allowing separate disclosure of individual members of the claim”. > > > > *A.1. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-A.1>Simple > Structured SD-JWT > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-simple-structured-sd-jwt>*: > Change “The following is how a presentation of the SD-JWT that discloses > only region and country of the address property could look like:” to “The > following is a presentation of the SD-JWT that discloses > only region and country of the address:”. Similarly, excise other uses of > the extra verbiage “could look like” elsewhere in the specification. > > > > *A.5. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-A.5>Elliptic > Curve Key Used in the Examples > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-elliptic-curve-key-used-in->*: > Change “The public key used to validate a Key Binding JWT can be found in > the examples as the content of the cnf claim.” to “The public key used to > validate a Key Binding JWT can be found in the examples as the value of the > jwk member of the cnf claim.” > > > > *Appendix B. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-B>Disclosure > Format Considerations > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosure-format-considera>*: > Change “particularly useful when the content, like JSON, can have > differences but be semantically equivalent.” to “particularly useful when > the content, like JSON, can have different representations but is > semantically equivalent, thus avoiding canonicalization.” > > > > *Appendix B. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-B>Disclosure > Format Considerations > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosure-format-considera>*: > Change “computation over the data need to be performed and verified” to > “computation over the data needs to be performed and verified”. > > > > *Appendix B. > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#appendix-B>Disclosure > Format Considerations > <https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-10.html#name-disclosure-format-considera>*: > At the end of the paragraph introduced by “1. Canonicalization”, consider > adding the sentence “Canonicalization schemes have a long history of > creating interoperability problems in practice.” > > > > Everywhere: Consider changing the name “…” to something more indicative > of its function, such as “_sd_element” or “_sd_item”. Or alternatively, at > least provide rationale for why that non-obvious name was chosen. > > > > I hope that you find this review helpful in improving the specification. > I look forward to its publication as an RFC and its widespread use! > > > > -- Mike > > > _______________________________________________ > OAuth mailing list -- oauth@ietf.org > To unsubscribe send an email to oauth-leave@ietf.org >
- [OAUTH-WG] Review of draft-ietf-oauth-selective-d… Michael Jones
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Brian Campbell
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Kristina Yasuda
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Denis
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Michael Jones
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Brian Campbell
- [OAUTH-WG] Re: Review of draft-ietf-oauth-selecti… Giuseppe De Marco