Identidade Soberana (DID/SSI)

Prova de Conceito — PGCOMP/UFBA • Desenvolvido por: Tarson Marcelo Florêncio

Código no GitHub

O Projeto

Este lab demonstra uma arquitetura de identidade digital centrada em privacidade, soberania do usuário e inclusão, alinhada à LGPD e às pesquisas da RNP. Em contraste com modelos centralizados (Okta/OAuth), a Identidade Descentralizada (DID)devolve o controle criptográfico ao cidadão.

A prova é ancorada por Smart Contracts — atuando como um “cartório” público na blockchain Sepolia — e por armazenamento off-chain cifrado gerenciado pelo backend. O sistema permite a verificação Zero-Knowledge: provar um fato (ex.: “Matrícula Ativa”) sem revelar os dados subjacentes (ex.: CPF, nº de matrícula).

PGCOMP/UFBA — Linha: Sistemas Computacionais • Área: RCSD. Tópicos: Blockchain, Web Descentralizada, Cibersegurança, Internet do Futuro, Tolerância a Falhas.

Como funciona: a credencial é um JSON. Calculamos um hash canônico desse JSON e registramos apenas o hash na blockchain (cartório). O JSON (seu dado pessoal) fica cifrado no cliente e armazenado off-chain. Na verificação, você envia só o hash — e recebe true/false.

  • Privacidade: seus dados nunca são gravados na blockchain.
  • Soberania: você pode revogar qualquer credencial com sua carteira.
  • Portabilidade: faça backup de tudo em um arquivo (cifrado).

1. Verificação Pública

  1. 1) Cole o endereço do titular da credencial.
  2. 2) Cole a string JSON exata (precisa bater 100%).
  3. 3) Clique Verificar. A UI calcula o hash e a blockchain responde true/false.
  4. Dica: use os exemplos abaixo ou gere sua própria credencial na seção 2.
Endereço:0xSEU_ENDERECO_DE_TESTE_AQUI
JSON:{"status":"ATIVO", "curso":"PGCOMP"}
O endereço do titular da credencial.
Hash canônico:0xcb376e051ccede50b9f7da4bc5f720c3211988d4bfc0381c67653bceabad3885

2. Emissão de Credencial

  1. 1) Cole o endereço do destinatário.
  2. 2) Informe o JSON da credencial (será usado para o hash canônico).
  3. 3) (Recomendado) Defina uma senha — os dados serão cifrados no navegador (AES-GCM + PBKDF2) e o servidor recebe apenas o ciphertext.
  4. 4) Clique em Emitir. O backend registra o hash na blockchain (Sepolia) e salva o ciphertext + metadados.
  5. Dica: sem senha, o JSON vai em claro para o backend (modo LEGADO, apenas para PoC).
Hash canônico:0xcb376e051ccede50b9f7da4bc5f720c3211988d4bfc0381c67653bceabad3885

Com senha: armazenamos apenas o ciphertext. Sem senha: PoC/legado.

3. Revogar Minha Credencial

  1. 1) Conecte a carteira que recebeu a credencial.
  2. 2) Cole a string JSON exata da credencial.
  3. 3) Clique em Revogar. Uma transação será enviada — é preciso pagar gás (Sepolia).
  4. 4) Após 1 bloco, você verá o link da transação no Etherscan.
Hash canônico:0xcb376e051ccede50b9f7da4bc5f720c3211988d4bfc0381c67653bceabad3885

Conecte sua carteira para habilitar a revogação.

4. Backup Seguro (Exportação)

  1. 1) Conecte a carteira do titular.
  2. 2) Clique em Exportar. Baixaremos um arquivo com todos os seus ciphertexts e metadados.
  3. 3) Guarde esse arquivo em local seguro. Ele só é útil junto da senha usada na emissão.
  4. Dica: futuramente, a mesma UI terá “Importar backup”.

Conecte sua carteira para habilitar a exportação.

Logs de Atividade

Dica: emita uma credencial (Seção 2) e verifique (Seção 1) para ver os logs aqui.