Understanding Credential Status
Credential status is a core mechanism in verifiable credentials that enables dynamic trust management over time. This document explains how credential status works, why it's important, and the approaches for implementing it effectively and securely within the Vidos ecosystem.
The Need for Credential Status
Physical credentials like driver's licenses and passports can be physically confiscated, damaged, or marked invalid. Digital credentials need similar capabilities, but implemented in a way that maintains their digital properties:
- A credential might need to be revoked if it was issued in error
- A credential might need to be temporarily suspended during an investigation
- The validity of a credential might need to be checked without contacting the original issuer
- Status checks should preserve privacy and minimize correlation risks
Credential status solves these challenges by providing mechanisms to check whether a credential remains valid, without requiring direct communication between the verifier and issuer during verification.
Core Concepts
Status Types
The W3C Verifiable Credentials specifications define several status purposes:
- Revocation: Permanently invalidating a credential (not reversible)
- Suspension: Temporarily invalidating a credential (reversible)
- Refresh: Signaling that an updated credential is available
- Message: Conveying arbitrary status information
These status types allow issuers to manage credential validity throughout its lifecycle while maintaining security and privacy.
How Status Works in Verifiable Credentials
Status information is implemented through the credentialStatus
property in a verifiable credential. This property includes:
- A reference to where status information can be found
- Information about how to interpret the status
- An identifier (typically an index) that associates the credential with its status information
Here's a simplified example:
{
"@context": ["https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2"],
"id": "https://example.com/credentials/3732",
"type": ["VerifiableCredential", "ExampleCredential"],
"issuer": "did:example:12345",
"validFrom": "2023-01-01T00:00:00Z",
"credentialStatus": {
"id": "https://example.com/credentials/status/3#94567",
"type": "BitstringStatusListEntry",
"statusPurpose": "revocation",
"statusListIndex": "94567",
"statusListCredential": "https://example.com/credentials/status/3"
},
"credentialSubject": {
"id": "did:example:6789",
"name": "Example Subject"
}
}
Status Lists as Verifiable Credentials
Status information is often managed in lists that are themselves expressed as verifiable credentials. This design:
- Provides cryptographic verification of the status information
- Allows the status list to be delivered directly from holder to verifier (known as "stapling")
- Maintains trust in the status information even when the issuer is offline
Privacy Considerations
Status checking comes with significant privacy considerations:
Correlation Risks
When a verifier checks a credential's status directly with the issuer, this creates a potential correlation point, revealing:
- When the credential is being used
- Which verifiers are accepting the credential
- Patterns of credential usage
This violates a key privacy principle where issuers shouldn't know how or when credentials they've issued are being used.
Group Privacy through Bitstring Status Lists
The W3C Bitstring Status List specification addresses privacy concerns by:
- Bundling status information for many credentials in a single list
- Using compact, compressible bitstrings that can efficiently represent status for thousands of credentials
- Enabling status checks without revealing which specific credential is being checked
A bitstring status list uses a single bit to represent each credential's status, with the position in the list serving as a privacy-preserving lookup mechanism.
Implementation Approaches
Bitstring Status Lists
The W3C Bitstring Status List specification defines a privacy-preserving status mechanism that:
- Uses compressed bitstrings to represent status for many credentials
- Ensures the status checking mechanism is highly space-efficient
- Provides strong group privacy protections
- Supports delivery through content distribution networks
How Bitstring Status Works
- When issuing a credential, the issuer assigns a random position in a status list
- The credential includes a reference to the status list and its position
- The issuer maintains the status list as a bitstring where each bit represents a credential's status
- Verifiers check the bit at the specified position to determine status
Bitstrings can be highly compressed (often to a few hundred bytes) when only a small percentage of credentials are revoked, making them efficient for large-scale deployments.
Integration with Vidos
In the Vidos ecosystem, credential status verification is handled by the verifier service, which:
- Extracts status information from credentials
- Retrieves status lists when needed
- Performs the cryptographic verification of status lists
- Interprets the status according to verification policies
The resolver service may also interact with status information when resolving credential metadata, ensuring that status is checked as part of the credential resolution process.
Conclusion
Credential status is a critical component of the verifiable credentials ecosystem, enabling dynamic trust management while preserving privacy. The Bitstring Status List approach recommended by the W3C offers an optimal balance of privacy, efficiency, and security for most applications.
Within Vidos, understanding credential status mechanisms helps you build more robust and privacy-preserving verification workflows.