w3c / vc-jose-cose

Verifiable Credentials Working Group — VC JSON Web Tokens specification
https://w3c.github.io/vc-jose-cose/
Other
30 stars 9 forks source link

Text about obtaining the right verification key #194

Closed David-Chadwick closed 7 months ago

David-Chadwick commented 8 months ago

The proposed verification algorithm text will say " This specification might be used with many different key discovery protocols. As such, discovery of verification keys is described in a different section of this document, and is assumed to have succeeded prior to beginning the verification process. "

First there should be a reference to the "different section of this document".

Second, this different section needs to have text about obtaining the right/current key and not an old e.g. revoked key. This section should also contain text about using/not using the credentialStatus property since this is critical to ensuring you have the right key.

selfissued commented 8 months ago

@David-Chadwick, is there corresponding text about obtaining a valid key in the Data Integrity spec that you'd like us to mirror here? Whatever we say in this regard should be actionable and not vague, should we say anything at all.

With respect to credentialStatus, we already say "Status extension mechanisms such as credentialStatus SHOULD be checked. If the extension mechanism type is not understood, this property MUST be ignored."

David-Chadwick commented 8 months ago

"Status extension mechanisms such as credentialStatus SHOULD be checked. If the extension mechanism type is not understood, this property MUST be ignored."

This is the opposite of good security practice. If a relying party cannot interpret status information it MUST assume that the credential has been revoked.

selfissued commented 8 months ago

Actually, thinking about it, describing how to use credentialStatus is the job of VCDM - not securing specifications. Talking about it here is a layering violation. Unless there's a reason that I'm wrong about that, I plan to remove the offending sentence from this securing specification.

David-Chadwick commented 8 months ago

It depends. If a specific VC has been revoked, then it is the job of the validation function to determine if the VC is still valid, as you say. But if the issuer's key has been compromised, meaning that a whole bunch of VCs have to be revoked, then its a function of the key management system to check that the issuer's key has not been revoked. This is part of the verification function. Remember that the VC that is being verified could be many months old, during which time the issuer could have had a mishap with its signing key. So the VC that is being verified might be a fake one, created with the compromised key, and backdated to several months ago. So the securing mechanism needs a way to check that the signing key is still good.