Panoramica delle credenziali digitali

Le credenziali digitali sono documenti verificabili tramite crittografia che possono essere utilizzati per autenticare, autorizzare o fornire informazioni su un utente. Si tratta in genere di elementi come patenti di guida mobile, passaporti digitali, carte d'imbarco e così via. Si trovano in contenitori virtuali chiamati portafogli digitali e fanno parte di uno standard W3C che specifica come accedervi e recuperarli. Questo standard viene implementato per i casi d'uso web con l'API W3C Credential Management e su Android con l'API DigitalCredential di Gestore delle credenziali.

Informazioni sulle credenziali digitali

Nel mondo fisico, una persona potrebbe tenere la propria identità nel portafoglio e mostrarla a una parte richiedente quando richiesto:

Immagine che mostra il flusso di una normale interazione con il portafoglio
Figura 1. La procedura di evasione di una richiesta di credenziali nel mondo fisico. Il richiedente chiede all'utente una qualifica specifica. Poi, l'utente la seleziona e la recupera dal portafoglio fisico. Infine, l'utente fornisce la credenziale al richiedente.

In questo caso, un utente in genere ha un solo portafoglio e recupera le credenziali richieste dal portafoglio per presentarle al richiedente. I portafogli sono per lo più intercambiabili e possono generalmente memorizzare le stesse cose.

Le credenziali digitali presentano le seguenti differenze rispetto alle credenziali nel mondo fisico:

  1. Gli utenti dovrebbero avere più portafogli, noti anche come titolari, che possono contenere varie credenziali diverse. I wallet determinano quali credenziali possono essere memorizzate al loro interno.
  2. L'app o il servizio che richiede la credenziale per concedere l'accesso o verificare un'identità è chiamato verificatore.
  3. L'entità che crea la credenziale e afferma le attestazioni sul soggetto (ad esempio un'università, un governo o un'azienda tecnologica) è denominata emittente.
  4. La presentazione delle credenziali avviene nel software, il che significa che una superficie API recupera e presenta le credenziali. In Android, questa è Credential Manager.

Di conseguenza, Gestore delle credenziali assume diversi ruoli che in precedenza erano gestiti dall'utente:

  1. Su Android, i wallet devono registrare i metadati delle credenziali in Gestore delle credenziali per essere visualizzati nell'interfaccia utente di Gestore delle credenziali.
  2. Gestore delle credenziali abbina le credenziali nei vari wallet in base alla richiesta e presenta un elenco da cui l'utente può scegliere.
  3. Quando l'utente seleziona una credenziale nell'elenco, Gestore delle credenziali richiama il wallet, che gestirà il resto della transazione (mostrando le UI e così via) e restituirà la credenziale all'applicazione.

Questo flusso è mostrato qui:

Immagine che mostra il flusso di interazione con una credenziale digitale
Figura 2. Modello di interazione per la verifica delle credenziali digitali. Gestore delle credenziali utilizza i metadati delle credenziali preregistrate in tutti i wallet degli utenti per abbinare la richiesta di un verificatore e chiede all'utente di selezionare una credenziale. Gestore delle credenziali indirizza quindi il flusso di attività al portafoglio corrispondente, che gestisce il resto della transazione e restituisce la credenziale al verificatore. Nota: il verificatore deve gestire e verificare la risposta della credenziale una volta restituita.

Credenziali verificabili

Le credenziali verificabili sono un sottoinsieme di credenziali digitali regolate da standard rigorosi (come il modello di dati delle credenziali verificabili del W3C). Queste credenziali contengono attestazioni protette crittograficamente, il che le rende a prova di manomissione e dimostra esattamente chi le ha emesse.

Non tutte le credenziali digitali sono verificabili, ma tutte le credenziali verificabili sono digitali.

Cosa significa che un'affermazione è verificata

Quando una credenziale arriva tramite l'API Android Credential Manager e un'attestazione al suo interno è contrassegnata come "verificata", significa che l'emittente afferma di aver eseguito un controllo su quel dato specifico. Tuttavia, non significa che i dati siano una verità assoluta e universale. "Verificato" è un'affermazione di procedura, non una garanzia automatica di affidabilità.

La filosofia di base di questo ecosistema è che l'attendibilità viene sempre risolta presso il verificatore. Quando il verificatore (la tua app) riceve i dati crittograficamente sicuri e vede che l'emittente li ha contrassegnati come "verificati", deve determinare se si fida dell'emittente per aver verificato l'attestazione in base ai suoi standard.

Esperienza utente

Come mostrato nel flusso Android, l'utente deve interagire una sola volta con l'interfaccia utente di Gestore delle credenziali per selezionare la credenziale appropriata. Ecco un esempio di come appare il selettore:

Immagine che mostra l'interfaccia utente delle credenziali digitali in Gestore delle credenziali
Figura 3. L'interfaccia utente delle credenziali digitali.

Standard

Le richieste di credenziali digitali vengono create utilizzando lo standard OpenID4VP. Puoi visualizzare richieste di esempio nel sito demo delle credenziali digitali.

Le risposte delle credenziali digitali vengono in genere restituite in un formato standardizzato. Questi sono gestiti da diversi organismi di standardizzazione e includono W3C Verifiable Credentials, sd-jwt e mdoc.

Sono possibili anche protocolli personalizzati, anche se ti consigliamo di utilizzare uno dei protocolli standard nella tua applicazione.

Prova

Puoi provare il flusso delle credenziali digitali su più piattaforme con un portafoglio Android e un verificatore basato sul web:

  1. Installa l'esempio pubblico di CMWallet sul tuo smartphone Android. Puoi farlo estraendo i file dal repository e installandoli direttamente da Android Studio o andando su https://github.com/digitalcredentialsdev/CMWallet/actions e selezionando l'ultima build per accedere al file app-debug.apk più recente.
  2. Apri CMWallet per registrare i metadati con Gestore delle credenziali. Assicurati che il Bluetooth sia attivato per consentire ai dispositivi di connettersi tra loro.
  3. Vai alla pagina https://digital-credentials.dev/ e seleziona Request Credentials (OpenID4VP).
  4. Accetta i prompt di avviso e scansiona il codice QR con lo smartphone, poi seleziona "Usa passkey" e tocca la conferma per visualizzare le credenziali disponibili.
  5. Seleziona la credenziale da CMWallet per tornare al browser. Il browser dovrebbe mostrare la credenziale restituita.

Vedi anche