Visão geral das credenciais digitais

As credenciais digitais são documentos criptograficamente verificáveis que podem ser usados para autenticar, autorizar ou fornecer informações sobre um usuário. Normalmente, são itens como carteiras de motorista digitais, passaportes digitais, cartões de embarque etc. Eles ficam em contêineres virtuais chamados carteiras digitais e fazem parte de um padrão do W3C que especifica como acessá-los e recuperá-los. Esse padrão é implementado para casos de uso na Web com a API W3C Credential Management e no Android, com a API DigitalCredential do Gerenciador de credenciais.

Entender as credenciais digitais

No mundo físico, uma pessoa pode guardar a identidade na carteira e apresentá-la a um solicitante quando necessário:

Imagem mostrando o fluxo de uma interação normal com a carteira
Figura 1. O processo de atender a uma solicitação de credencial do mundo físico. O solicitante pede ao usuário uma credencial específica. Em seguida, o usuário seleciona e retira da carteira física. Por fim, o usuário fornece a credencial ao solicitante.

Nesse caso, um usuário geralmente tem uma única carteira e recupera as credenciais solicitadas dela para apresentar ao solicitante. As carteiras são basicamente intercambiáveis e geralmente podem armazenar as mesmas coisas.

As credenciais digitais têm as seguintes diferenças em relação às credenciais do mundo físico:

  1. Espera-se que os usuários tenham várias carteiras, também conhecidas como titulares, que podem conter várias credenciais diferentes. As carteiras digitais determinam quais credenciais podem ser armazenadas nelas.
  2. O app ou serviço que pede a credencial para conceder acesso ou verificar uma identidade é chamado de verificador.
  3. A entidade que cria a credencial e faz declarações sobre o assunto (como uma universidade, um governo ou uma empresa de tecnologia) é chamada de emissor.
  4. A apresentação de credenciais acontece no software, o que significa que uma superfície de API recupera e apresenta as credenciais. No Android, isso é o Credential Manager.

Assim, o Gerenciador de credenciais assume várias funções que antes eram tratadas pelo usuário:

  1. No Android, as carteiras precisam registrar os metadados de credenciais com o Credential Manager para serem listadas na interface do Credential Manager.
  2. O Gerenciador de credenciais corresponde às credenciais em várias carteiras com base na solicitação e apresenta uma lista para o usuário selecionar.
  3. Quando o usuário seleciona uma credencial na lista, o Credential Manager invoca a carteira, que processa o restante da transação (mostrando interfaces, etc.) e retorna a credencial ao aplicativo.

Esse fluxo é mostrado aqui:

Imagem mostrando o fluxo de uma interação de credencial digital
Figura 2. Modelo de interação para verificação de credencial digital. O Credential Manager usa metadados de credenciais pré-registradas em carteiras de usuários para corresponder a uma solicitação de um verificador e pede que o usuário selecione uma credencial. Em seguida, o Credential Manager direciona o fluxo de atividades para a carteira correspondente, que processa o restante da transação e retorna a credencial ao verificador. Observação: o verificador precisa processar e verificar a resposta da credencial assim que ela for retornada.

Credenciais verificáveis

As credenciais verificáveis são um subconjunto de credenciais digitais regidas por padrões estritos, como o modelo de dados de credenciais verificáveis do W3C. Essas credenciais contêm declarações criptograficamente protegidas, o que as torna invioláveis e prova exatamente quem as emitiu.

Nem todas as credenciais digitais são verificáveis, mas todas as credenciais verificáveis são digitais.

O que significa uma declaração ser verificada

Quando uma credencial chega pela API Android Credential Manager e uma declaração nela é marcada como "verificada", isso implica que o emissor está afirmando que realizou uma verificação nesse dado específico. No entanto, isso não significa que os dados sejam uma verdade absoluta e universal. "Verificado" é uma declaração de processo, não uma garantia automática de confiança.

A filosofia principal desse ecossistema é que a confiança é sempre resolvida no verificador. Quando o verificador (seu app) recebe os dados criptograficamente seguros e vê que o emissor os marcou como "verificados", ele precisa determinar se confia que o emissor verificou a declaração de acordo com os padrões dele.

Experiência do usuário

Como mostrado no fluxo do Android, o usuário só precisa interagir uma vez com a interface do Credential Manager para selecionar a credencial adequada. Confira um exemplo de como o seletor aparece:

Imagem mostrando a interface de credenciais digitais no Credential Manager
Figura 3. A interface das credenciais digitais.

Padrões

As solicitações de credenciais digitais são criadas usando o padrão OpenID4VP. Confira exemplos de solicitações no site de demonstração de credenciais digitais.

As respostas de credenciais digitais geralmente são retornadas em um formato de credencial padronizado. Eles são mantidos por diferentes órgãos de padrões e incluem Credenciais verificáveis do W3C, sd-jwt e mdoc.

Protocolos personalizados também são viáveis, mas recomendamos usar um dos protocolos padrão no aplicativo.

Faça um teste

Você pode testar o fluxo de credenciais digitais em várias plataformas com uma carteira do Android e um verificador baseado na Web:

  1. Instale a amostra pública do CMWallet no smartphone Android. Para fazer isso, extraia do repositório e instale diretamente do Android Studio ou acesse https://github.com/digitalcredentialsdev/CMWallet/actions e selecione o build mais recente para acessar o arquivo app-debug.apk mais recente.
  2. Abra a CMWallet para registrar os metadados com a API Credential Manager. Verifique se o Bluetooth está ativado para permitir que os dispositivos se conectem entre si.
  3. Acesse https://digital-credentials.dev/ e selecione Request Credentials (OpenID4VP).
  4. Aceite os avisos e leia o QR code com o smartphone. Em seguida, selecione "Usar chave de acesso" e toque na confirmação para mostrar as credenciais disponíveis.
  5. Selecione a credencial na CMWallet para voltar ao navegador. O navegador vai mostrar a credencial retornada.

Veja também