Hi Daniel,

 

I just want to reverse your arguments and I will stop spamming. I will focus on 
your “sub” example.

 

When a VC is encoded as a JWT, and according to specs 
(https://www.w3.org/TR/vc-data-model/#proof-formats) “sub MUST represent the id 
property contained in the credentialSubject” and the VC must be 

signed. Similarly,  RFC 7253 JWT requires the “sub” claim to exist and the 
token to be signed. By moving “sub” to “sd_digests” you don’t have a valid VC 
or JWT. Similarly, by merging “the released claims into the plain-text claims 
and produce a plain-text JSON”  also results in non-valid VCs/JWTs since 
signature verification will fail.

 

Finally, I would like to bring to everybody’s attention this draft 
https://w3c-ccg.github.io/Merkle-Disclosure-2021/jwp/ It has the same goals as 
SD-JWT but it makes no modification to the actual JSON object, instead all 
information required to validate a proof is in the signature. I believe this is 
a cleaner approach since you can re-use existing infrastructure simply by 
adding support for a new signature type. 

 

Best,

Nikos

 

From: Daniel Fett <f...@danielfett.de> 
Sent: Tuesday, June 28, 2022 1:17 PM
To: Nikos Fotiou <fot...@aueb.gr>; oauth@ietf.org
Subject: Re: [OAUTH-WG] Presenting Selective Disclosure JWT (SD-JWT)

 

Hi Nikos,

the requirement for putting the claims into a separate structure becomes more 
obvious from your example.

On the surface, you can see that the data types don't match the specifications 
- the email address is not an email address, the phone number is not a phone 
number, the address even has a completely different data type.

Digging a bit deeper, the JWT in your example suggests that the issuer attests 
that the user has the sub 'LbnhkOr5oS7KjeUrxezAu8TG0CpWz0jSixy6tffuo04' and the 
given_name 'fUMdn88aaoyKTHrvZd6AuLmPraGhPJ0zF5r_JhxCVZs'. This is absolutely 
not what the issuer wants to attest, but not clearly communicated in the JWT. 
This is ambgiuous to anyone interpreting the JWT, especially if they are 
unaware of the SD-JWT format, and various security problems can arise from 
that. Putting the claims into a separate container makes the distinction 
explicit.

Conversely, there is not really much to gain here by adhering - on the surface! 
- to an existing structure. We are messing up types, as described above, and 
contents. Anybody interpreting an SD-JWT needs to implement verification logic 
anyway, so why bother hiding the differences behind a familiar looking 
structure? I don't think that this impedes integration, but rather fosters 
clean implementations.

A verification algorithm can merge the released claims into the plain-text 
claims and produce a plain-text JSON that can then be fed into whatever 
algorithm uses the contents. This is a trivial programming exercise.

Regarding your proposal with the array below: This format does not work well 
with structured claims (see Examples 2 and 3).

-Daniel

 

Am 28.06.22 um 10:30 schrieb Nikos Fotiou:

  

> If the SD-JWT-R does not contain all claim names, the verifier might not be 
> able to tell whether a particular claim is an SD claim or a plain-text claim.

 

It is not obvious (at least to me) why the verifier needs to know that. 
Moreover, I agree that this approach is unambiguous but, IMHO, it is not clean 
and it impedes integration (e.g., as I wrote in the previous email example 4 is 
(probably) wrong). If a verifier really needs to know which claim is an SD 
claim, I believe a cleaner approach is to indicate this using out-of-band 
mechanisms, e.g., provide this information in a schema, in a VC “context”,  
documentation.  Alternatively,  `sd_digests` can be  just as an array that 
indicates the SD claims, e.g., example 1 in section 5.2 could be:

 

{

    "iss":  <https://example.com/issuer> https://example.com/issuer,

    "sub_jwk": {

        "kty": "RSA",

        "n": 
"pm4bOHBg-oYhAyPWzR56AWX3rUIXp11_ICDkGgS6W3ZWLts-hzwI3x65659kg4hVo9dbGoCJE3ZGF_eaetE30UhBUEgpGwrDrQiJ9zqprmcFfr3qvvkGjtth8Zgl1eM2bJcOwE7PCBHWTKWYs152R7g6Jg2OVph-a8rq-q79MhKG5QoW_mTz10QT_6H4c7PjWG1fjh8hpWNnbP_pv6d1zSwZfc5fl6yVRL0DV0V3lGHKe2Wqf_eNGjBrBLVklDTk8-stX_MWLcR-EGmXAOv0UBWitS_dXJKJu-vXJyw14nHSGuxTIK2hx1pttMft9CsvqimXKeDTU14qQL1eE7ihcw",

        "e": "AQAB"

    },

    "hash_alg": "sha-256",

    "iat": 1516239022,

    "exp": 1516247022,

    "sub": "LbnhkOr5oS7KjeUrxezAu8TG0CpWz0jSixy6tffuo04",

    "given_name": "fUMdn88aaoyKTHrvZd6AuLmPraGhPJ0zF5r_JhxCVZs",

    "family_name": "9h5vgv6TpFV6GmnPtugiMLl5tHetHeb5X_2cKHjN7cw",

    "email": "fPZ92dtYMCN2Nb-2ac_zSH19p4yakUXrZl_-wSgaazA",

    "phone_number": "QdSffzNzzd0n60MsSmuiKj6Y6Enk2b-BS-KtEePde5M",

    "address": "JFu99NUXPq55f6DFBZ22rMkxMNHayCrfPG0FDsqbyDs",

    "birthdate": "Ia1Tc6_Xnt5CJc2LtKcu6Wvqr42glBGGcjGOye8Zf3U",

    "sd_digests":["sub", "given_name", "family_name", "email", "phone_number", 
"address", "birthdate"]

}

 

Best,

Nikos

 

From: OAuth  <mailto:oauth-boun...@ietf.org> <oauth-boun...@ietf.org> On Behalf 
Of Daniel Fett
Sent: Tuesday, June 28, 2022 10:30 AM
To:  <mailto:oauth@ietf.org> oauth@ietf.org
Subject: Re: [OAUTH-WG] Presenting Selective Disclosure JWT (SD-JWT)

 

Hi Nikos,

Am 24.06.22 um 16:16 schrieb Nikos Fotiou:

Hi,
I was wondering what is the reason for introducing the sd_digests claim. I 
think it complicates integration with existing systems. For example, I am 
pretty sure that the VC included in Example 4 is wrong. Since the verifier can 
learn from the SD-JWT-RELEASE which claims are hashed, why is it necessary to 
nest them under the sd_digests claim?

The idea is to have a clean, unambiguous seperation between the two. If the 
SD-JWT-R does not contain all claim names, the verifier might not be able to 
tell whether a particular claim is an SD claim or a plain-text claim. 




Also a small detail: if you decode the token at the end of section 5.2, instead 
of "sd_digests" it uses "_sd"

Good catch, we'll update the examples. We have opened an issue for that:  
<https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues/79> 
https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues/79

Thanks,
Daniel

 
 
Best,
Nikos
--
Nikos Fotiou -  <http://pages.cs.aueb.gr/~fotiou> 
http://pages.cs.aueb.gr/~fotiou
Researcher - Mobile Multimedia Laboratory
Athens University of Economics and Business
 <https://mm.aueb.gr> https://mm.aueb.gr
 

On 23 Jun 2022, at 7:32 PM, Daniel Fett  
<mailto:mail=40danielfett...@dmarc.ietf.org> 
<mail=40danielfett...@dmarc.ietf.org> wrote:
 
All,
 
Kristina and I would like to bring to your attention a new draft that we have 
been working on with many others over the past weeks. "Selective Disclosure JWT 
(SD-JWT)" describes a format for signed JWTs that support selective disclosure 
(SD-JWT), enabling sharing only a subset of the claims included in the original 
signed JWT instead of releasing all the claims to every verifier. 
 
 
<https://www.ietf.org/archive/id/draft-fett-oauth-selective-disclosure-jwt-01.html>
 
https://www.ietf.org/archive/id/draft-fett-oauth-selective-disclosure-jwt-01.html
 
Initial feedback we got was positive and we now would like to hear from the 
working group with the eventual goal of asking for working group adoption.
 
Issues are tracked in our GitHub repository:  
<https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues> 
https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues
 
The approach to selective disclosure described in the document is based on 
salted hashes. We have discussed and explored other approaches based on 
encryption as well. If you are interested in following this discussion, we 
would like to invite you to read this issue:  
<https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues/30> 
https://github.com/oauthstuff/draft-selective-disclosure-jwt/issues/30
 
One main goal with this work is that the format should be easy to implement, 
requiring little more than a regular JWT library. Three working implementations 
show that this goal has been achieved:  
<https://github.com/oauthstuff/draft-selective-disclosure-jwt#implementations> 
https://github.com/oauthstuff/draft-selective-disclosure-jwt#implementations 
 
We are looking forward to your feedback!
 
-Daniel
 
 
_______________________________________________
OAuth mailing list
 <mailto:OAuth@ietf.org> OAuth@ietf.org
 <https://www.ietf.org/mailman/listinfo/oauth> 
https://www.ietf.org/mailman/listinfo/oauth

 






_______________________________________________
OAuth mailing list
 <mailto:OAuth@ietf.org> OAuth@ietf.org
 <https://www.ietf.org/mailman/listinfo/oauth> 
https://www.ietf.org/mailman/listinfo/oauth

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to