Panoramica

L'API Digital Credentials Provisioning è organizzata in tre modelli di risorse principali:

Risorsa Descrizione
Dispositivo Un'istanza univoca di un dispositivo fisico e di una chiave di identità.
Prove La procedura di verifica dell'identità di un utente prima dell'emissione di una credenziale.
Credenziali Il DC stesso.

In qualità di emittente, sei responsabile della creazione e della gestione di queste risorse durante il ciclo di vita di un certificato digitale.

Ipotesi

Il presupposto principale di questa API è l'utilizzo dell'API Android Identity Credential da parte del dispositivo per l'archiviazione di documenti di identità digitali definiti da ISO/IEC 18013-5.

Modelli di risorse

Dispositivo

Nel modello dell'API di provisioning delle credenziali digitali, un dispositivo non rappresenta semplicemente un dispositivo Android in cui un utente gestisce le proprie credenziali digitali utilizzando l'app Google Wallet. Al contrario, è rappresentato come una combinazione di quanto segue:

  • Il dispositivo fisico con sistema operativo Android.
  • Una coppia di chiavi pubblica/privata (denominata "chiave di identità").
    • La chiave pubblica viene utilizzata dall'emittente per verificare l'identità di un dispositivo.
    • La chiave privata è memorizzata nello spazio di archiviazione sicuro del dispositivo.

Quando vengono effettuate chiamate API, una combinazione di dispositivo e credenziali viene identificata da un ID riferimento dispositivo (la proprietà deviceReferenceId).

La prima volta che un dispositivo comunica con un emittente, gli viene assegnato un nonce univoco (per impedire attacchi di replay e garantire la freschezza). Il numero nonce è firmato dalla chiave di identità del dispositivo e incorporato nel certificato contenente la chiave di identità. In futuro, il certificato potrà essere utilizzato per verificare il dispositivo con l'emittente.

Per saperne di più sul certificato, consulta la documentazione di Android IdentityCredential.

Se modelli questa risorsa come una tabella di database, avrà un aspetto simile a quello che segue. Tieni presente che la proprietà identityKey sarebbe il valore della chiave pubblica.

Una tabella di database di esempio per una risorsa dispositivo.

Proofing

Una correzione rappresenta la combinazione di quanto segue:

  • La documentazione fornita da un utente per dimostrare la sua identità
  • La decisione presa dall'emittente in base alle prove fornite

La verifica è specifica per il tipo di credenziale richiesta dall'utente. Quando viene eseguito il provisioning di un documento di identità digitale, un utente fornisce fotografie del proprio documento di identità fisico e un video del proprio profilo. Il video viene utilizzato da Google per calcolare la probabilità che il video mostri una persona reale. Il risultato fornito da Google agli emittenti è denominato "punteggio di vivacità". Man mano che verranno supportati nuovi tipi di credenziali, verranno aggiunti ulteriori metodi di verifica.

I possibili stati di una bozza sono elencati nella tabella seguente.

Stato Descrizione Stato finale
In attesa L'emittente non ha ancora preso una decisione. No
Accettato L'emittente ha deciso che le prove sono soddisfacenti. No
Rifiutato L'emittente ha deciso che le prove non erano soddisfacenti. Sì*
In difficoltà L'emittente ha bisogno di maggiori informazioni per prendere una decisione. No
Annullato L'utente ha annullato la correzione.
Revocato L'emittente ha revocato la verifica. Sì*
Scaduto L'utente non ha completato la sfida in tempo.

Gli stati contrassegnati con un asterisco (*) potrebbero non essere definitivi nei casi in cui un revisore umano commette un errore e aggiorna lo stato manualmente.

Il seguente diagramma di stato descrive i possibili flussi di stato:

In alcuni casi, gli emittenti potrebbero non essere in grado di prendere una decisione in base alle prove iniziali. Per facilitare la decisione, agli utenti può essere richiesto di fornire all'emittente ulteriori informazioni o prove. Alcuni esempi di sfide includono rispondere a lettere postali, visitare il sito web di un emittente o inviare ulteriori prove.

Se modelli questa risorsa come una tabella di database, avrà un aspetto simile a quello che segue.

Una tabella di database di esempio per una risorsa di controllo ortografico.

Credenziale

Una credenziale rappresenta la versione virtuale della credenziale fisica per un dispositivo specifico. Ogni volta che una credenziale virtuale viene eseguita il provisioning su un dispositivo fisico, le viene assegnato un ID credenziale. Se la stessa credenziale fisica viene provisioning su dispositivi diversi, avrà un ID credenziale diverso ogni volta. Allo stesso modo, se una credenziale viene eseguita il provisioning su un dispositivo, eliminata e di nuovo eseguita il provisioning sullo stesso dispositivo, avrà un ID credenziale diverso.

Quando i dettagli delle credenziali di un utente cambiano (ad esempio un cambio di indirizzo per un documento di identità), questi dettagli devono essere aggiornati per tutte le credenziali virtuali associate. Una singola credenziale può avere versioni diverse corrispondenti a queste modifiche. La versione attuale viene monitorata utilizzando un ID versione delle credenziali.

Per presentare una credenziale a una relying party, il dispositivo deve prima recuperare gli oggetti di sicurezza mobile (MSO) dall'emittente. Un MSO contiene i digest della credenziale firmati dall'emittente. Un MSO viene creato da una chiave di autenticazione, una chiave pubblica generata e firmata dalla chiave di identità del dispositivo. La chiave di autenticazione associa effettivamente l'MSO al dispositivo. La combinazione di MSO e credenziale dimostra alle parti che fanno affidamento che la credenziale proviene dall'emittente.

Una volta eseguito il provisioning di una credenziale su un dispositivo, quest'ultimo deve inviare un oggetto ProofOfProvisioning all'emittente. In questo modo, l'emittente viene informato che la credenziale è stata fornita correttamente al dispositivo e memorizzata nell'archivio sicuro del dispositivo.

Una credenziale può avere i seguenti stati:

Stato Descrizione
ProvisionPending

La credenziale è stata rilasciata a Google Wallet, ma la prova di provisioning non è stata restituita all'emittente. Le credenziali vengono spostate in questo stato ogni volta che cambia l'ID versione delle credenziali.

Non verranno rilasciati MSO per queste credenziali.

Attivo

La credenziale è stata rilasciata a Google Wallet e la prova del provisioning è stata restituita all'emittente.

Gli MSO sono disponibili per la credenziale.

Revocato

L'emittente ha revocato definitivamente la credenziale.

Non verranno rilasciati MSO per queste credenziali.

In questo stato, Google Wallet non mostrerà una credenziale.

Eliminato

L'utente o Google Wallet ha eliminato definitivamente la credenziale dal dispositivo.

Non verranno rilasciati MSO per queste credenziali.

In questo stato, Google Wallet non mostrerà una credenziale.

Il seguente diagramma di stato descrive i possibili flussi di stato:

Se modelli questa risorsa come una tabella di database, avrà un aspetto simile a quello che segue.

Una tabella di database di esempio per una risorsa delle credenziali.