¿Qué es una credencial verificable?
Una credencial verificable (en inglés Verifiable Credential o VC) es una representación digital de información que afirma algo sobre una persona, organización o cosa, y que puede ser verificada criptográficamente para confirmar su autenticidad y validez.
Las credenciales verificables están basadas en estándares definidos por el W3C y permiten emitir, presentar y validar datos de forma segura, privada y descentralizada.
¡Con gusto, Tomás! Aquí tienes una definición clara y técnica de una credencial verificable, ideal para incluir en tu documentación:
Ecosistema de una credencial verificable
Las credenciales verificables se basan en un ecosistema compuesto por entidades que desempeñan diferentes "roles". Los roles principales son:
Emisor
Una entidad que crea una Credencial Verificable, compuesta por una serie de afirmaciones relacionadas con su sujeto. Un ejemplo es una universidad que emite credenciales de títulos universitarios o certificados para sus egresados.
Titular
Una entidad que posee una o más Credenciales, y que puede transmitir presentaciones de esas Credenciales Verificables a terceros. Un ejemplo puede ser la persona que "posee" sus propios títulos educativos. Otro ejemplo puede ser una billetera digital que contiene varias credenciales en nombre de alguien.
Verificador
Una entidad que realiza la verificación de una Credencial Verificable para comprobar su validez, consistencia, etc. Un ejemplo puede ser el sistema digital de un empleador que verifica la validez de un título universitario antes de decidir contratar a una persona.
Estructura
Las credenciales verificables siguen un formato estandarizado, normalmente en JSON-LD, que facilita la interoperabilidad entre sistemas.
JSON-LD (JavaScript Object Notation for Linked Data) es una extensión del formato JSON que permite representar datos con significado semántico, utilizando contextos (@context) que definen el significado de cada campo. Esto facilita la interoperabilidad entre sistemas al proporcionar una forma estándar de interpretar la información.
Componentes de una Credencial Verificable
A continuación, se detallan los elementos clave de una credencial verificable, con sus funciones y ejemplos:
@context
Este campo define el significado semántico de los términos utilizados en la credencial. Utiliza vocabularios establecidos y permite que los sistemas que reciben la credencial puedan interpretar correctamente su contenido, incluso si no conocen previamente su estructura exacta.
Ejemplo:
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://gob.do/contexts/driver-license"
]
type
El campo type define el tipo de credencial. Toda credencial verificable debe incluir "VerifiableCredential" como tipo base, y puede agregar tipos adicionales que indiquen su propósito específico, como "DriverLicenseCredential", "UniversityDegreeCredential", etc.
Ejemplo:
"type": ["VerifiableCredential", "DriverLicenseCredential"]
issuer
Es el identificador del emisor, es decir, la entidad que firma digitalmente la credencial. Suele representarse mediante un DID (Decentralized Identifier) o una URL que puede resolverse para obtener la clave pública del emisor. El verificador necesita este valor para buscar la clave pública del emisor y validar la firma de la credencial. También permite a los sistemas confiar en la fuente, ya que sabrán si la credencial proviene de una entidad oficial.
Ejemplo:
"issuer": "https://gob.do/dgeem"
issuanceDate
Es la fecha de emisión de la credencial. Debe expresarse en formato ISO 8601, y permite controlar la vigencia de la credencial en combinación con un campo opcional de expiración (expirationDate dentro del credentialSubject).
Ejemplo:
"issuanceDate": "2025-05-26T00:00:00Z"
credentialSubject
Contiene la información que se afirma sobre la entidad (persona, empresa, objeto, etc.). Es el contenido central de la credencial. Puede incluir campos como nombre, identificación, rol, atributos, permisos, etc. Siempre debe incluir un campo id, que representa al sujeto(normalmente con un DID). Dependiendo del caso de suo, puede contener información personal u organizacional.
✅ Ejemplo:
"credentialSubject": {
"id": "did:example:juanperez",
"name": "Juan Pérez",
"licenseNumber": "A1234567",
"category": "Private vehicle",
"expirationDate": "2030-05-26"
}
proof
El campo proof es lo que convierte un simple documento JSON en una credencial verificable, ya que contiene la firma digital que garantiza que el contenido no ha sido alterado y que fue emitido por una entidad confiable.
Ejemplo:
"proof": {
"type": "Ed25519Signature2018",
"created": "2025-05-26T00:00:00Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "https://gob.do/keys/clave-publica.json",
"jws": "eyJhbGciOiJFZERTQSJ9...firma..."
}
El proof se compone de tales componentes:
-
type: especifica el algoritmo de firma o el método criptográfico que se usó para generar la firma de la credencial. Algoritmos que se usan mucho en estos son"Ed25519Signature2018","RsaSignature2018"o"BbsBlsSignature2020". -
created: Es la fecha y hora exacta en la que se generó la firma digital. Debe estar en formato ISO 8601 (ej."2025-05-26T14:23:12Z"). -
proofPurpose: Define el propósito de la firma, es decir, qué intención tiene el emisor al firmar esta credencial.Los valores típicos para este campo pueden ser:-
"assertionMethod"– el emisor afirma que el contenido es verdadero (el más común en VC). -
"authentication"– usado para firmar pruebas de que alguien es quien dice ser (ej. en autenticación con DIDs). -
"capabilityDelegation"/"capabilityInvocation"– usados en sistemas de control de acceso.
-
-
verificationMethod: Es un identificador (generalmente una URL o DID) que apunta a la clave pública que se debe usar para verificar la firma. -
jws: Contiene la firma digital como una cadena codificada en formato JWS (JSON Web Signature), que es parte del estándar de JOSE (JSON Object Signing and Encryption). Se representa como una cadena Base64 que incluye: un encabezado (con algoritmo y tipo), el contenido firmado (payload), La firma propiamente dicha.