Emitting and validating presentations with timestamps
A use case of the Verifiable Credential model7
is the presentation of credentials person to person, using QR codes. This article expresses some considerations that are important when implementing verification of this kind of presentations.
- Verifiable Presentations (VP) should always be signed by a DID controller.
- VC presentations (VP) must contain a
presentation_date and, optionally, an
- Verifier should check both dates to make sure it is a Presentation that was signed at the verification time. If no
expiration_date is present the Verifier should have a (configurable) parameter
presentation_grace from the
presentation_date, for example
presentation_grace=1 minute. This prevents replay attacks.
- A recommended verification user experience is:
- Verifier asks credential to Holder
- Holder selects a credential
- Holder taps on show QR button
- Holder shows QR
- Verifier scans QR
- Verifier app verifies VP
- Verifier app displays presented credentials information
- Verifier validates information
- To prove that the person presenting the credential is really the owner of the credential, it is advisable to request that they present a verified photo of themselves, or other kind of physical proof
- The verifier app could stablish a communication channel when scanning the holder’s QR and request a challenge-response authentication to prove control of the DID - a new protocol can be defined for this specific case
- It is important to remark the difference between proving DID control and proving the person is the real owner