A API Digital Credentials Provisioning é organizada em três modelos principais de recursos:
| Recurso | Descrição |
|---|---|
| Dispositivo | Uma instância exclusiva de um dispositivo físico e uma chave de identidade. |
| Comprovante | O processo de comprovação da identidade de um usuário antes de emitir uma credencial. |
| Credential | O próprio data center. |
Como emissor, você é responsável por criar e gerenciar esses recursos ao longo do ciclo de vida de um DC.
Suposições
O principal pressuposto desta API é o uso da API Android Identity Credential pelo dispositivo para armazenar DCs definidos pela norma ISO/IEC 18013-5.
Modelos de recursos
Dispositivo
No modelo da API Digital Credentials Provisioning, um dispositivo não representa simplesmente um dispositivo Android em que um usuário gerencia as credenciais digitais usando o app Carteira do Google. Em vez disso, ele é representado por esta combinação:
- O dispositivo físico Android.
- Um par de chaves públicas/privadas (chamado de "chave de identidade").
- A chave pública é usada pelo emissor para verificar a identidade de um dispositivo.
- A chave privada fica no armazenamento seguro do dispositivo.
Ao fazer chamadas de API, uma combinação de dispositivo e credencial é identificada por um
ID de referência do dispositivo (a propriedade deviceReferenceId).
Na primeira vez que um dispositivo se comunica com um emissor, ele recebe um valor de uso único exclusivo para evitar ataques repetidos e garantir atualizações. O valor de uso único é assinado pela chave de identificador do dispositivo e incorporado ao certificado que contém a chave. A partir de agora, o certificado pode ser usado para verificar o dispositivo com o emissor.
Para mais informações sobre o certificado, consulte a
Documentação IdentityCredential do Android.
Se você modelar esse recurso como uma tabela de banco de dados, ele será semelhante a
este. A propriedade identityKey seria o valor da chave pública.
Revisão
Um comprovante representa a combinação destes itens:
- A evidência fornecida por um usuário para comprovar a identidade
- A decisão tomada pelo emissor com base nas evidências fornecidas
A comprovação é específica do tipo de credencial que o usuário está solicitando. Ao provisionar um DC, o usuário fornece fotos do documento de identidade físico e um vídeo do próprio perfil. O vídeo é usado pelo Google para calcular a probabilidade de que seja de uma pessoa real. O resultado fornecido pelo Google aos emissores é chamado de "pontuação de atividade". Outros métodos de comprovação serão incluídos conforme tipos novos de credenciais forem compatíveis.
Confira na tabela a seguir os status possíveis de uma comprovação.
| Status | Descrição | Estado final |
|---|---|---|
| Pendente | O emissor ainda não tomou uma decisão. | Não |
| Aceito | O emissor decidiu que as evidências são satisfatórias. | Não |
| Recusado | O emissor decidiu que as evidências não são satisfatórias. | Sim* |
| Em risco | O emissor precisa de mais informações para tomar uma decisão. | Não |
| Cancelado | O usuário cancelou a comprovação. | Sim |
| Revogado | O emissor revogou a comprovação. | Sim* |
| Expirado | O usuário não concluiu o desafio a tempo. | Sim |
Os status marcados com um asterisco (*) podem não ser finais nos casos em que um revisor
humano comete um erro e atualiza o status manualmente.
O diagrama de estado a seguir descreve os possíveis fluxos de status:
Em alguns casos, os emissores não poderão tomar uma decisão por conta da evidência inicial. Para ajudar nessa decisão, os usuários podem ser desafiados a fornecer outras informações ou evidências para o emissor. Exemplos de desafios incluem responder a e-mails, acessar o site do emissor ou enviar outras evidências.
Se você modelar esse recurso como uma tabela de banco de dados, ele será semelhante a este.
Credencial
A credencial representa a versão virtual da credencial impressa de um dispositivo específico. Sempre que uma credencial virtual é provisionada para um dispositivo físico, um ID de credencial é atribuído a ela. Se a mesma credencial física for provisionada para dispositivos diferentes, ela terá um ID de credencial diferente a cada vez. Da mesma forma, se uma credencial for provisionada para um dispositivo, excluída e provisionada novamente para o mesmo dispositivo, ela terá um ID de credencial diferente.
Quando os detalhes da credencial de um usuário mudam (como uma alteração de endereço para um documento de identidade), eles precisam ser atualizados para todas as credenciais virtuais associadas. Uma única credencial pode ter diferentes versões correspondentes a essas mudanças. A versão atual é acompanhada com o uso de um ID de versão de credencial.
Para apresentar uma credencial a uma parte confiável, o dispositivo precisa primeiro recuperar os objetos de segurança para dispositivos móveis (MSO, na sigla em inglês) do emissor. Um MSO contém resumos da credencial que foram assinados pelo emissor. Um MSO é criado com uma chave de autenticação, que é uma chave pública gerada e assinada pela chave de identificador do dispositivo. A chave de autenticação vincula o MSO ao dispositivo. A combinação do MSO e da credencial prova para as partes confiáveis que a credencial foi originada do emissor.
Depois que uma credencial é provisionada em um dispositivo, ele precisa enviar um objeto
ProofOfProvisioning
de volta ao emissor. Isso notifica o emissor de que a credencial foi
provisionada para o dispositivo e guardada no armazenamento seguro
do dispositivo.
Uma credencial pode ter os seguintes status:
| Status | Descrição |
| ProvisionPending |
A credencial foi liberada para a Carteira do Google, mas o comprovante de provisionamento não foi retornado ao emissor. As credenciais são movidas para esse status sempre que o ID da versão da credencial muda. Nenhum MSO será liberado para esta credencial. |
| Ativo |
A credencial foi liberada para a Carteira do Google, e o comprovante de provisionamento foi retornado ao emissor. Os MSOs estão disponíveis para a credencial.
|
| Revogado |
O emissor revogou a credencial de maneira permanente. Nenhum MSO será liberado para esta credencial. A Carteira do Google não vai apresentar uma credencial nesse estado. |
| Excluído |
O usuário ou a Carteira do Google excluiu de maneira permanente a credencial do dispositivo. Nenhum MSO será liberado para esta credencial. A Carteira do Google não vai apresentar uma credencial nesse estado. |
O diagrama de estado a seguir descreve os possíveis fluxos de status:
Se você modelar esse recurso como uma tabela de banco de dados, ele será semelhante a este.