Skip to main content

Verifiable Credentials (VCs)

Verifiable Credentials are tamper-evident digital credentials that can be cryptographically verified without contacting the issuer. They’re the digital equivalent of physical credentials like driver’s licenses, diplomas, or identity cards.

What is a Verifiable Credential?

A Verifiable Credential is a digital statement made by an issuer about a subject (usually the credential holder) that includes:
  • Claims: Information about the subject (name, date of birth, degree, etc.)
  • Metadata: Issuer, issue date, expiration, credential type
  • Proof: Cryptographic signature that proves authenticity
Think of a VC like a digitally-signed diploma: it contains information about you, who issued it, and a cryptographic proof that it hasn’t been tampered with.

VC Structure

A standard Verifiable Credential follows the W3C data model:

VC Components

Defines the meaning of terms used in the credential. Points to JSON-LD context files.
Unique identifier for this specific credential instance.
Specifies what kind of credential this is. Always includes VerifiableCredential.
DID of the organization that issued the credential.
When the credential was issued (ISO 8601 format).
The actual claims about the subject. This is the main content of the credential.
Cryptographic proof that makes the credential verifiable.

VC Lifecycle

Issuance Process

In Sphyre, credential issuance follows these steps:
1

User Requests Credential

User fills out a credential request form in Sphyre ALV
2

Issuer Reviews Request

Request appears in issuer dashboard (Sphyre Issuers)
3

Issuer Approves & Signs

Issuer approves and Fortro Engine creates the VC
4

Store on IPFS

Credential is uploaded to IPFS for decentralized storage
5

Anchor on Blockchain

IPFS hash is anchored on Ethereum for immutability
6

Deliver to Holder

Credential is sent to user’s wallet

Verification Process

Verifiers can check credential authenticity without contacting the issuer:
1

Receive Presentation

Verifier receives a Verifiable Presentation containing the VC
2

Extract Credential

Parse the VC and extract the proof
3

Resolve Issuer DID

Get issuer’s public key from their DID
4

Verify Signature

Check cryptographic signature using issuer’s public key
5

Check Blockchain Anchor

Verify the credential hash exists on blockchain
6

Check Revocation Status

Ensure credential hasn’t been revoked
7

Validate Expiration

Check if credential is still valid

Credential Types in Sphyre

Sphyre supports various credential schemas:

National ID

Government-issued identity credentials with full name, DOB, nationality

Driver's License

Driving credentials with license class, restrictions, expiration

Student ID

Educational institution credentials with student number, program

Employee Badge

Employment credentials with job title, department, access level

Professional License

Professional certifications with license number, specialty, board

Health Insurance

Insurance credentials with policy number, coverage type, provider

Selective Disclosure

VCs support selective disclosure - sharing only specific claims:

Example: Age Verification

Instead of showing full ID:

Verifiable Presentations

To share credentials, holders create Verifiable Presentations (VPs):
Key Points:
  • Holder signs the presentation (not just the credential)
  • Includes challenge from verifier to prevent replay attacks
  • Can contain multiple credentials
  • Proves holder controls the DID

Revocation

Issuers can revoke credentials if needed:

Revocation Methods

Credential contains a reference to a revocation list

Storage & Privacy

IPFS Storage

Content-Addressed

Files identified by cryptographic hash, ensuring data integrity

Decentralized

No single point of failure, distributed across IPFS network

Immutable

Content cannot be modified; changes create new hash

Optional Encryption

Credentials can be encrypted before upload for privacy

Privacy Considerations

VCs stored on IPFS are public by default. For sensitive data, use encryption or store only hashes.
Privacy Strategies:
  1. Encryption: Encrypt credential before IPFS upload
  2. Hashed Claims: Store only hashes of sensitive data
  3. Zero-Knowledge Proofs: Prove claims without revealing data
  4. Pairwise Credentials: Issue different credentials for different relationships

Schema Management

Schemas define the structure of credentials:

Best Practices

Always set appropriate expiration dates. Credentials shouldn’t be valid forever.
Issue specific credentials for specific purposes. Don’t create “super credentials” with all user data.
Include only necessary claims. Less data = better privacy.
Version your schemas and credentials for backward compatibility.
Use JSON-LD contexts for semantic interoperability across systems.

VC vs Traditional Credentials

Advanced Features

Composite Credentials

Combine multiple credentials for complex proofs:

Derived Credentials

Create new credentials based on existing ones:

Delegated Credentials

Issue credentials on behalf of another issuer:

Code Examples

Creating a Credential (Backend)

Verifying a Credential (Frontend)

Resources

W3C VC Data Model

Official specification for Verifiable Credentials

JSON-LD Playground

Test and validate JSON-LD credentials

VC Implementation Guidelines

Best practices for implementing VCs

Credential Schemas

Standard vocabularies for credentials

Next Steps

1

Issue Your First Credential

2

Learn About ZKP

Explore Zero-Knowledge Proofs for privacy
3

API Integration

4

Build an Issuer

Review Sphyre Issuers and the issuer endpoints