Thanks Hannes, I really appreciate the feedback and work towards moving
this one foreword in the process.

I've prepared this pull request
https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552 with
updates aimed at addressing the review comments. Please take a look and let
us know if anything is amiss. I hope to review with my co-authors soon and
then integrate the changes and publish a -16 draft that incorporates the
updates.

Inline below are more specific responses to the comments and links to
associated changes in the PR.


On Tue, Feb 11, 2025 at 1:59 AM Hannes Tschofenig <
hannes.tschofe...@h-brs.de> wrote:

> Hi Daniel, Kristina, Brian,
>
> here are a few review comments that are easy to address:
>
> 1. Complete the IANA registry section for the media type registrations.
> Search for TBD in that section. As you make this change you might also
> want to remove the RFC 2119 language from the description fields. I do
> not believe it is the right place to put normative language.
>

Indeed, I "borrowed" that language verbatim from the RFC7515
application/jose+json
<https://www.iana.org/assignments/media-types/application/jose+json>
registration because, well, the encoding considerations are exactly the
same and I figured if it was good enough for the general JWS JSON
Serialization of RFC7515 it was good enough for the JWS JSON Serialization
of SD-JWT. But I agree with you that it is not really the right place to
put normative language. I'll change that and flesh out the TBDs too.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/f8f8a0e6a96ccdceedd30b35900c967c1a8b2a8d


> 2. Normative Reference: I think you need to move RFC 8725, RFC5234, and
> RFC6838 from the informative reference section to the normative section
> since they are needed for the specification. RFC 8725 is probably a
> reference we can argue about but the others seem to be pretty clear cases.
>

The only use of RFC5234 follows the qualification of, "As an alternative
illustration of the SD-JWT format," so I can't see how, as an alternative,
that could be considered normative. I'll switch the other two though.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/f8f8a0e6a96ccdceedd30b35900c967c1a8b2a8d


>
> 3. Minor nits:
>
> In the introduction you write: "instead, a hash digest of the data takes
> its place.". Since the digest is computed using a hash, it would be
> better to just say "digest" instead of "hash digest". This would also be
> consistent with the rest of the document.
>

Yep.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/7a680be357b221af4aa57e5bb5e447a03b4e4074



>
> In Section 4.1, you write: "The payload MUST NOT contain the reserved
> claims _sd or ... except for the purpose of transporting digests as
> described below.". The term "reserved claim" only appears once in the
> document and it is not clear to me whether the "..." refers to the claim
> with the name "..." or whether you are referring to the claims that this
> document defines. The exception also appears misleading since you
> defined the claims for conveying digests. The reference to "below" in
> this sentence is not helping since I do not really know where to look at.
>

Fair point. I've endeavored to improve that sentence with that feedback in
consideration.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/51689807ad0cf73cdc54e92aba82cfc7dbd37219


>
> In Section 4.2.1, you write:  "The claim value, as it would be used in a
> regular JWT payload. The value MAY be of any type that is allowed in
> JSON, including numbers, strings, booleans, arrays, null, and objects.".
> I believe you should write "The value MUST be of a type that is allowed
> in JSON....". The sentence appears more than once in the document.
>

That's an interesting observation. I think avoidance of normative key words
there altogether would be better and more appropriate. We are just saying
that it's JSON and thus can be any JSON thing. No need to say anything more
prescriptive.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/599dc15c188d52bb620ee1f1e166d7deb77512f8



>
> In Section 9.1 you write: "The Issuer-signed JWT MUST be signed by the
> Issuer to protect integrity of the issued claims.". I would remove the
> first "Issuer-signed" qualification to improve the readability of the
> sentence.
>

Readability thusly improved.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/39b2d2ec2b8c3103f3346a39be8466620766468b


>
> In Section 9.4, you write: "In the terminology of cryptographic
> commitment schemes, the hash function MUST be computationally hiding.".
> Since you mention the terminology, I expected a reference to the term,
> especially given the use of RFC 2119 language.
>

This was language suggested by Neil, if I recall correctly, who is more
fluent with the terminology of cryptographic commitment schemes. I wasn't
able to find an easily referenceable definition for the term, even with the
'help' of chatgpt and gemini, and I think the intent of the text is to be
explanatory (it expands on prior text in the paragraph) so I think dropping
the normative RFC 2119 MUST here is appropriate.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/fbd9026fcad7b34614ba5f481cd6d06ab3dc330f


>
> Section 9.8 is called "Issuer Signature Key Distribution and Rotation".
> It should instead be called "Issuer Signature Verification Key
> Distribution" since you are not planning to distribute the signature key
> of the issuer itself since it is the private key.
>

Makes sense.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/cba9307d416b14be726396145e8f8c4aef75bece


>
> In Section 10.1, you write "The following types of unlinkability are
> considered here:". I would change this to "The following types of
> unlinkability are discussed below:"
>

Okay.

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/552/commits/b7f34b62c126a6976e455d2818ec0e9ca6bc8b39


>
> I noticed the absence of a mention regarding the use of digital
> signatures in Verifier/Verifier unlinkability. If a holder uses SD-JWTs
> with different Verifiers, these SD-JWTs are linkable based on the
> signature value, unless each SD-JWT is signed by the Issuer
> individually.



The signature value itself as a correlateable value is kind of implied in
the section - especially
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt-15#section-10.1-6
with "Issuer's signature is directly presented" and the disscusion around
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt-15#section-10.1-9
on batch issuence that say new key binding keys and salts must be used for
each directly implies that a distinct signature would be on each. Do you
think signatures themselves need to be more explicitly mentioned? If so, do
you have any suggestions for text?



> Batch issuance is suggested as a solution when the Holder
> does not request SD-JWTs individually- either proactively or in
> real-time. Proactively requesting SD-JWTs works in cases where the
> holder knows in advance what disclosures the Verifier will ask for.
> However, if there are many possible combinations, this approach may
> become practically challenging. If the holder switches to a real-time
> request pattern with the Issuer, the SD-JWT solution may become less
> useful since the Holder can just ask the Issuer for a regular JWT that
> only contains the claims it wants to disclose to the Verifier. Do the
> existing media types support returning multiple SD-JWTs and multiple
> SD-JWT+KBs in a batch?
>


The media types in the draft do not account for batches. While the concept
is mentioned in the privacy considerations, the actual details of batch
issuance are beyond the scope of this draft, which is defining the format
of the single thing. Higher level protocols or applications for credential
issuance, such as OpenID for Verifiable Credential Issuance (OpenID4VCI),
would be where such things would be defined. And the "application/json"
media type will likely be used to return multiple SD-JWTs in one batch (see
for example
https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0-15.html#section-8.3-13).
So in a way, yes, existing media types do support it. But regardless it's
to be defined elsewhere. And presenting multiple SD-JWT+KBs in a batch
would similarly be defined in part of a presentation protocol, such as
OpenID for Verifiable Presentations (OpenID4VP).




>
> In Section 11, you acknowledge Richard Barnes and Martin Thomson. I
> suggest removing the "fnord" from Richard "fnord" Barnes and the
> paragraph related to Martin Thomson:
>
> "
>     Special appreciation is extended to Martin Thomson, who wielded his
>     considerable intellect and influence to change a single occurrence of
>     the word "to" to "with" in the midst of a significant proposal that
>     would be integrated into this document six months later.
> "
>

It has always been my understanding, from
https://www.rfc-editor.org/rfc/rfc7322.html#section-4.10 and over 15 years
of experience writing and being listed in acknowledgements sections, that
the acknowledgements section is an area for the document authors to thank
people and things which they felt were helpful in producing the document.
And that whom to thank and how to thank them were largely at the discretion
of the authors.

The unique treatment for Richard Barnes and Martin Thomson (both of whom I
highly respect) in the Acknowledgements section of this draft is absolutely
intentional and factually grounded in the actual contributions they made.



>
> I would also acknowledge Denis, even though his feedback was not
> incorporated into the document. He certainly reviewed the document.
>

He certainly did. Based on my prior comment above about the content of the
acknowledgements section being largely at the discretion of the authors, I
trust you understand why Denis is not listed.



> In the body of the document, you mention "credential" several times. It
> might be helpful to clarify in the terminology section that this term is
> a synonym for SD-JWT and SD-JWT+KB.


I went looking to add something along those lines but noticed that the word
"credential" doesn't appear in the document until section 9 and its use
thereafter seems sufficiently understandable without any qualification or
introduction of terminology.



> In the appendix the term Verifiable
> Credential is used a few times but in the body of the document you just
> use the term "credential". I believe that "credential" and "Verifiable
> Credential" are used interchangeably.
>

The places where the capital V and C are used are more specific and about
the W3C Verifiable Credentials Data Model v2.0 and IETF's SD-JWT-based
Verifiable Credentials. They are accompanied by references to the
respective work.



> Ciao
> Hannes
>
>
> _______________________________________________
> OAuth mailing list -- oauth@ietf.org
> To unsubscribe send an email to oauth-le...@ietf.org
>

-- 
_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
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to