Skip to content

Conceitos: DIDs, VCs e did:key

Identificador Descentralizado (DID)

Um DID é um identificador que controlas sem um registo central, por exemplo did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK. Cada método de DID (did:key, did:web, did:ion, …) define como o identificador é criado e como um verificador encontra as suas chaves públicas (o "DID Document").

Verifiable Credential (VC)

Uma VC é um conjunto de afirmações assinado criptograficamente e à prova de adulteração, feito por um emissor sobre um sujeito, seguindo o Modelo de Dados VC da W3C. Exemplo: uma universidade (emissor) afirma que um aluno (sujeito) tem um diploma.

Três papéis:

  • Emissor (issuer) — assina a credencial.
  • Titular (holder) — guarda-a (muitas vezes é o sujeito) e apresenta-a.
  • Verificador (verifier) — valida a assinatura contra o DID do emissor.

Porquê did:key aqui

O did:key incorpora a chave pública diretamente no identificador. Isso significa que um verificador consegue reconstruir a chave pública e validar uma assinatura offline — sem ledger, sem chamada de rede, sem registo. É o método mais simples para aprender e testar.

O compromisso: como a chave é o identificador, o did:key não tem rotação de chaves nem revogação. Isso é aceitável para demos e confiança ponto-a-ponto de curta duração; para algo duradouro, ver Ir para produção.

Como o simple-vc assina

  1. generateDidKey() cria um par de chaves Ed25519 e codifica a chave pública como did:key (prefixo multicodec 0xed01 + base58btc, a forma z6Mk…).
  2. issueCredential() constrói o payload da VC e assina-o como um JWT com o algoritmo EdDSA via did-jwt-vc.
  3. verifyCredentialJwt() resolve o did:key do emissor com o key-did-resolver e verifica a assinatura.

JWT vs provas JSON-LD

Há dois formatos de prova comuns para VCs: JWT (compacto, o que esta biblioteca usa) e provas JSON-LD Data Integrity (embebidas no JSON). Ambos são VCs W3C válidas; o JWT é mais simples para começar e interoperável com o ecossistema JOSE.