This document is a privacy analysis of the Verifiable Credentials Data Model.
Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to public-vc-comments@w3.org (subscribe, archives).
Yes. The properties inside Verifiable Credentials include Personally Identifiable Information (PII).
Recommendation: None, as the specification makes this clear.
Potentially yes. The specification places no restrictions on what data can be placed in a Verifiable Credential, so it could include highly sensitive personal data.
Recommendation: Protocols that carry Verifiable Credentials should always encrypt the Verifiable Credential payload. In addition, Verifiable Credentials that contain highly sensitive personal data should have that data encrypted inside the Verifiable Credential, so that any entity that captures the Verifiable Credential is not able to see the sensitive information.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may introduce new state.
Recommendation: None
Yes. Verifiable Credentials contain a random though potentially persistent identifier of the subject. This is passed between the issuer and the verifier. Consequently, collusion between them could identify the subject to the verifier, even though the Verifiable Credential itself does not. This is because in many cases the issuer will know the complete identity of the subject, even if the Verifiable Credential only contains a small proportion of it (such as age).
Recommendation: The holder should limit the distribution of Verifiable Credentials containing the same PId to a minimal number of origins. The holder should obtain Verifiable Credentials with different PId to send to different origins wherever possible.
Yes. It is the purpose of Verifiable Credentials to present identity attributes of the subject to the verifier. Note, however, that this is always with the full consent of the subject, except in cases where the holder is not the subject. In this latter case, the holder must be authorized to present this information to the verifier; otherwise, the verifier should reject it.
Recommendation: Verifier should only accept Verifiable Credentials from subjects or holders who are authorized to present them to the verifier.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may enable script loading.
Recommendation: None
Yes. Verifiable Credentials may contain location information such as a subject’s home address, phone number, or current postal address.
Recommendation: None.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may enable access to sensors on a user’s device.
Recommendation: None.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may enable an origin to access aspects of a user’s local computing environment.
Recommendation: None.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may enable an origin to access other devices, e.g., to move a Verifiable Credential from one device to another.
Recommendation: None.
Not in itself, no, as the specification only specifies a data structure. However, protocols that use this specification may enable an origin some measure of control over a user agent’s native UI.
Recommendation: None.
Potentially, yes. The subject’s ID in a Verifiable Credential could be a temporary identifier that is not stored permanently anywhere.
Recommendation: Verifiable Credentials should be encrypted during transfer to avoid their contents being snooped.
???
This specification only presents a data model. However protocols that use this specification should be able to work in incognito mode.
Recommendation: None.
The overall life cycle of Verifiable Credentials envisages that they may be stored persistently on the user’s local device or on a remote device under the user’s control. However, Verifiable Credentials on their own, if captured by a hostile entity, should not be of any value to it, except in so far as the Verifiable Credential may potentially reveal a small amount of Personally Identifiable Information (PII) about the subject.
Recommendation: Verifiable Credentials should be encrypted during storage to prevent them being stolen by an attacker
Yes.
Recommendation: Ensure they are good enough.
No. The specification simply defines a data structure and a signature field.
Recommendation: None