Présentation des identifiants numériques

Les identifiants numériques sont des documents cryptographiquement vérifiables qui peuvent être utilisés pour authentifier un utilisateur, l'autoriser ou fournir des informations à son sujet. Il s'agit généralement de documents tels que les permis de conduire mobiles, les passeports numériques, les cartes d'embarquement, etc. Ils résident dans des conteneurs virtuels appelés portefeuilles numériques et font partie d'une norme W3C qui spécifie comment y accéder et les récupérer. Cette norme est implémentée pour les cas d'utilisation Web avec l'API W3C Credential Management et sur Android, avec l'API DigitalCredential de Credential Manager.

Comprendre les identifiants numériques

Dans le monde physique, une personne peut conserver sa pièce d'identité dans son portefeuille et la présenter à la partie requérante sur demande :

Image montrant le déroulement d'une interaction normale avec le portefeuille
Figure 1. Processus de traitement d'une demande de pièce d'identité physique. Le demandeur demande à l'utilisateur un justificatif spécifique. L'utilisateur sélectionne ensuite la carte et la récupère dans son portefeuille physique. Enfin, l'utilisateur fournit l'identifiant au demandeur.

Dans ce cas, un utilisateur dispose généralement d'un seul portefeuille et récupère les identifiants demandés dans le portefeuille pour les présenter au demandeur. Les portefeuilles sont généralement interchangeables et peuvent stocker les mêmes éléments.

Les identifiants numériques présentent les différences suivantes par rapport aux identifiants physiques :

  1. Les utilisateurs sont censés posséder plusieurs portefeuilles, également appelés titulaires, qui peuvent contenir différents types d'identifiants. Les portefeuilles déterminent les identifiants pouvant y être stockés.
  2. L'application ou le service qui demande les identifiants pour accorder l'accès ou valider une identité est appelé vérificateur.
  3. L'entité qui crée l'identifiant et affirme des revendications sur le sujet (par exemple, une université, un gouvernement ou une entreprise technologique) est appelée émetteur.
  4. La présentation des identifiants se fait dans le logiciel, ce qui signifie qu'une surface d'API récupère et présente les identifiants (Credential Manager dans Android).

Par conséquent, le Gestionnaire d'identifiants assume plusieurs rôles qui étaient auparavant gérés par l'utilisateur :

  1. Sur Android, les portefeuilles doivent enregistrer les métadonnées de leurs identifiants auprès de Credential Manager pour être listés dans l'UI Credential Manager.
  2. Le Gestionnaire d'identifiants fait correspondre les identifiants entre les portefeuilles en fonction de la requête et présente une liste que l'utilisateur peut sélectionner.
  3. Lorsque l'utilisateur sélectionne un identifiant dans la liste, le Gestionnaire d'identifiants appelle le portefeuille, qui gère le reste de la transaction (affichage des UI, etc.) et renvoie l'identifiant à l'application.

Ce flux est illustré ci-dessous :

Image montrant le flux d'une interaction avec un identifiant numérique
Figure 2. Modèle d'interaction pour la validation des identifiants numériques. Le Credential Manager utilise les métadonnées des identifiants préenregistrés dans le ou les portefeuilles de l'utilisateur pour faire correspondre la demande d'un vérificateur et invite l'utilisateur à sélectionner un identifiant. Le Credential Manager redirige ensuite le flux d'activité vers le portefeuille correspondant, qui gère le reste de la transaction et renvoie l'identifiant au vérificateur. Remarque : Le vérificateur doit gérer et valider la réponse d'identifiant une fois qu'elle est renvoyée.

Identifiants vérifiables

Les identifiants vérifiables sont un sous-ensemble d'identifiants numériques régis par des normes strictes (comme le modèle de données d'identifiants vérifiables du W3C). Ces identifiants contiennent des revendications sécurisées par chiffrement, ce qui les rend inviolables et permet de prouver exactement qui les a émis.

Toutes les identifiants numériques ne sont pas des identifiants vérifiables, mais tous les identifiants vérifiables sont des identifiants numériques.

Qu'est-ce qu'une demande validée ?

Lorsqu'un identifiant arrive via l'API Android Credential Manager et qu'une revendication qu'il contient est marquée comme "validée", cela signifie que l'émetteur affirme avoir effectué une vérification sur cette donnée spécifique. Toutefois, cela ne signifie pas que les données sont une vérité absolue et universelle. "Validé" est une affirmation de processus, et non une garantie automatique de confiance.

La philosophie de base de cet écosystème est que la confiance est toujours résolue au niveau du vérificateur. Lorsque le vérificateur (votre application) reçoit les données cryptographiquement sécurisées et constate que l'émetteur les a marquées comme "validées", il doit déterminer s'il fait confiance à l'émetteur pour avoir validé la revendication selon ses normes.

Expérience utilisateur

Comme le montre le flux Android, l'utilisateur n'a besoin d'interagir qu'une seule fois avec l'UI Credential Manager pour sélectionner les identifiants appropriés. Voici un exemple de sélecteur :

Image montrant l'UI des identifiants numériques dans Credential Manager
Figure 3. Interface utilisateur des identifiants numériques.

Normes

Les demandes d'identifiants numériques sont créées à l'aide de la norme OpenID4VP. Vous trouverez des exemples de requêtes sur le site de démonstration des identifiants numériques.

Les réponses aux identifiants numériques sont généralement renvoyées dans un format d'identifiant standardisé. Elles sont gérées par différents organismes de normalisation et incluent W3C Verifiable Credentials, sd-jwt et mdoc.

Les protocoles personnalisés sont également possibles, mais nous vous recommandons d'utiliser l'un des protocoles standards dans votre application.

Essayer

Vous pouvez tester le flux d'identifiants numériques sur différentes plates-formes à l'aide d'un portefeuille Android et d'un vérificateur Web :

  1. Installez l'exemple public CMWallet sur votre téléphone Android. Pour ce faire, vous pouvez extraire le fichier du dépôt et l'installer directement depuis Android Studio, ou accéder à https://github.com/digitalcredentialsdev/CMWallet/actions et sélectionner la dernière compilation pour accéder au dernier fichier app-debug.apk.
  2. Ouvrez CMWallet pour enregistrer les métadonnées avec Credential Manager. Assurez-vous que le Bluetooth est activé pour permettre à vos appareils de se connecter les uns aux autres.
  3. Accédez à https://digital-credentials.dev/, puis sélectionnez Request Credentials (OpenID4VP).
  4. Acceptez les messages d'avertissement et scannez le code QR avec votre téléphone, puis sélectionnez "Utiliser une clé d'accès" et appuyez sur la confirmation pour afficher les identifiants disponibles.
  5. Sélectionnez l'identifiant dans CMWallet pour revenir au navigateur. Le navigateur doit afficher l'identifiant renvoyé.

Voir aussi