-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Accept or Dismiss the guidance provided by DIF on kid
/ iss
#30
Comments
I vote for dismiss. There is no requirement for the issuer to be identified with a did, only with a URI. Issuers can be identified by https URLs where the domain name equals their name in an X.509 DV PKC. This allows an issuer to sign a JWT using a validated X.509 PKC |
Agreed. However, in the case the issuer IS a DID... we must provide better guidance, the current guidance is unusable... and its the number 1 question I get asked regarding JOSE and DIDs... I don't get asked this question regarding Data Integrity Proofs... because of documentLoaders and the existing conventions in JSON-LD. |
I think that allowing DIDs (when there are over 100 of them) is the number 1 reason to make interoperability very difficult. If we want to allow DIDs then we could reduce the preferred number to just one or two such as did:jwk (which fits nicely with the JWK model) or possibly did:web (which is an alternative to https://). Whilst JWS allows an infinite number of crypto algorithms it requires only a couple to be implemented to ensure interop. So we could do a similar thing in the vc-jwt spec |
I don't agree, but even if I did, this isn't relevant to the point. If someone wants to use DIDs they need clear guidance, on how the parameters in a JWS are related to the the DID and DID URL. |
The guidance at https://github.com/decentralized-identity/did-jose-extensions/blob/master/options.md is pretty weird - starting with "kid MUST NOT be present in JWKs and MUST be present in JWA/JWE.". The "kid" is how you identify what key it is! By comparison, that conformant OpenID Connect implementations require the use of "kid". What do the green checkmarks and red Xs signify in the guidance? I currently am not sure how to interpret it. Does "kid value in JWA/JWE" actually mean "kid value in JWS/JWE"? (JWA is an algorithms spec - not a data structure.) Clearly we want to allow "iss" values other than DIDs/DID URLs. "JCS vs Stringify" - huh? etc. Maybe we should discuss this on a call, because I'm pretty confused. |
@selfissued this document was created as a stop gap for how unusable the vcdm 1.1 guidance on JWTs with DIDs was. The intention was to eliminate some of the ambiguity, to help with JWT interop with DIDs, but its at DIF, so is has basically no official standing.
Yes, it means "kid value in JWS/JWE".
Clearly, but THIS guidance was specific to DIDs, see the repo name.
https://datatracker.ietf.org/doc/html/rfc8785 Sidetree... which is what Verified ID uses for DID ION, Bitcoin based decentralized identifier method... See https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-verified-id Uses JCS because it requires a commitment to a JWK, which has no canonical form. This guidance was place here, to explain more of why Microsoft chose to use JCS in development of Sidetree. |
Actually, a canonical representation of JWKs is defined by https://www.rfc-editor.org/rfc/rfc7638#section-3 . @Sakurann , any suggestions on next steps for this issue? |
I remember begging to use it.... : ) Its not a "content addressable" canonical representation... and we were already using mulithash elsewhere... Other DID Methods I have seen to use the thumbprint RFC, and I think its wise to try to, as much as possible for identifying specific keys. |
my personal opinion would be that we need to add guidance that when iss is a DID, kid must be present. |
Another argument in favor of dismissing the advice for signatures and retaining it for encryptions: |
I suggest we add information text to vc-jwt regarding the use of Something like: When using JOSE with DIDs, its can be beneficial to leverage both absolute and relative DID URLs for example: Encryption example{
"protected": "eyJlbmMiOiJYQzIwUCJ9",
"recipients": [
{
"header": {
"kid": "did:example:123#key-0",
"alg": "ECDH-ES+A256KW",
"epk": {
"kty": "OKP",
"crv": "X25519",
"x": "17sQFStg7ORPTq20OtU_MOzdzOU9iJAbqMP4cYVmUR0"
},
"apu": "17sQFStg7ORPTq20OtU_MOzdzOU9iJAbqMP4cYVmUR0",
"apv": "ZGlkOmtleT...eFFx"
},
"encrypted_key": "mtKsC05glLghX4s6LGva3Nr9A_l9SYVdQviB81HJRoiAfi0HfhkvnQ"
}
],
"iv": "IpYeFb6utO2J_Ii8R50d-O9ppiEOQZN2",
"ciphertext": "ewKbg3EJ6Pm4dH1tGdXGkJO5rTiMbn-tnfDGSvyvdQHD7HeE9g",
"tag": "QYakakAfhHJ0KRXM47_uRQ"
} Signature example{
"iss": "did:example:123",
"kid": "#key-0",
"alg": "ES256"
} or {
"kid": "did:example:123#key-0",
"alg": "ES256"
} We don't recommend doing this: {
"iss": "did:example:123",
"kid": "did:example:123#key-0",
"alg": "ES256"
} |
Related PR in data integrity: https://github.com/w3c/vc-data-integrity/pull/75/files Notice the language about how to get the public key... thats what we need. |
The issue was discussed in a meeting on 2023-09-05
View the transcript4.2. Add support for DIDs (pr vc-jose-cose#144)See github pull request vc-jose-cose#144. Orie Steele: this PR was so that the document can refer to a did document signed by a controller. Ivan Herman: Orie does this text duplicate what is already in the DID specification? Orie Steele: Its close but not a clean copy. See github issue vc-jose-cose#30. Orie Steele: verification relationships is part of did core. e.g. this key is used for signing, or key agreement etc. Oliver Terbu: are you now requiring these controller documents to always be needed?
Orie Steele: there is currently an issue on this topic. Should there be a well known endpoint for controller docs, but currently there is no specification saying how you get the key material.
|
we could mandate relative |
https://w3c.github.io/vc-jose-cose/#kid currently says:
It's not that I'll suggest that this be corrected in PR #153. |
note to myself https://www.w3.org/TR/did-core/#did-syntax as a place that can be used as a guidance for PR |
This section may be more useful: https://www.w3.org/TR/did-core/#did-url-dereferencing |
The issue was discussed in a meeting on 2023-09-14
View the transcript6.8. Accept or Dismiss the guidance provided by DIF on
|
I took a stab at this, see #163 please help us close this. |
Closing this, since addressed by the PR. |
See https://github.com/decentralized-identity/did-jose-extensions/blob/master/options.md
^ this guidance is ancient, I believe we can do better.
cc @tplooker @selfissued @Sakurann @dwaite
The text was updated successfully, but these errors were encountered: