Passer au contenu principal

Flux same-device vs cross-device

Same-device et cross-device sont les deux formes que prend un même échange dans OpenID4VCI et OpenID4VP : le wallet et le site sur un seul téléphone, reliés par un lien profond ou une redirection, ou le site sur un ordinateur et le wallet sur un téléphone, connectés par un QR code.

Dans un flux same-device, le wallet et le site web ou l'application sont sur le même téléphone. Le site passe la main au visiteur par un lien profond ou une redirection, le wallet s'ouvre, la personne approuve ce qui est demandé, et le wallet la renvoie vers le site par le chemin d'où elle venait. OpenID4VP renvoie la présentation dans le fragment de cette redirection, de sorte que la session de navigateur qui a lancé l'échange est aussi celle qui le termine.

Dans un flux cross-device, le visiteur commence dans le navigateur d'un ordinateur alors que le wallet se trouve sur son téléphone. Le site affiche la demande sous forme de QR code, le wallet le scanne et envoie le résultat directement au backend du site plutôt qu'au navigateur sur le bureau. La page de l'ordinateur doit ensuite être informée que l'échange est terminé, généralement par polling ou via un websocket. C'est pourquoi un flux cross-device implique toujours le backend.

Les deux protocoles partent du principe que vous prenez en charge les deux formes. OpenID4VP les nomme comme ses deux flux, et OpenID4VCI décrit la même distinction pour un Credential Offer, qui peut atteindre le détenteur sur l'appareil où se trouve le wallet ou par tout autre canal. Le flux qu'obtient un visiteur dépend de l'endroit où il se trouve, pas d'un paramètre choisi une fois pour toutes. Un service ouvert au public a donc besoin que les deux parcours fonctionnent.

L'expérience utilisateur diffère par l'effort demandé et par les modes d'échec. Le same-device est le chemin le plus court : pas de second écran, pas de caméra, pas de passage d'un appareil à l'autre. Le cross-device coûte un scan, mais il garde le visiteur sur le grand écran où il travaillait déjà, et c'est la seule option quand le wallet n'est pas sur l'appareil utilisé. Un flux same-device échoue quand aucun wallet n'est installé ou que le lien profond ouvre la mauvaise application, un flux cross-device échoue quand le code expire ou que le téléphone n'a pas de connexion.

La différence de sécurité est réelle et elle favorise le same-device. Comme le wallet renvoie la réponse par une redirection sur son propre appareil, un attaquant qui copie la demande n'a aucun moyen de récupérer la réponse. Une réponse cross-device transite hors bande vers le backend du site, donc le site doit lui-même lier le code à la session de navigateur qui l'a affiché. Sans cette liaison, quelqu'un peut prendre un code issu d'une session qu'il contrôle, le présenter à une victime et laisser les credentials de la victime finaliser la connexion de l'attaquant.

Un QR code est aussi une surface d'attaque pour le phishing, car le code lui-même ne montre rien au lecteur sur qui demande. C'est le wallet, et non le code, qui doit afficher l'identité du vérificateur et la demande exacte avant tout partage. L'IETF a publié une best current practice dédiée à cette catégorie d'attaques dans les flux cross-device, et OpenID4VCI ajoute pour la même raison un code de transaction à une offre : ce code arrive par le canal qui a déjà authentifié le détenteur, si bien qu'une offre interceptée en chemin ne peut être utilisée par personne d'autre.

Lire l'explication complète

Cette page donne la définition courte. Notre explication montre ce que cela signifie en pratique : qui est concerné, comment cela fonctionne et ce qui change pour votre organisation.

Les flux same-device et cross-device expliqués

Dois-je prendre en charge les deux flux ?

Si votre service est ouvert au public, oui. Le choix dépend de l'endroit où se trouve le visiteur et de l'appareil qui contient son wallet, pas d'une préférence que vous configurez. Un outil de back-office utilisé uniquement depuis un poste géré peut démarrer en cross-device seul, et une application uniquement mobile en same-device seul, mais tout service qu'un citoyen ou un client atteint par ses propres moyens rencontrera les deux.

Un flux cross-device est-il moins sûr qu'un flux same-device ?

Pas intrinsèquement, mais il a besoin d'une protection que le same-device obtient gratuitement. Dans un flux same-device, la réponse revient par une redirection sur l'appareil où tourne le wallet, elle ne peut donc pas être détournée vers la session de quelqu'un d'autre. Dans un flux cross-device, la réponse est envoyée hors bande à votre backend, vous devez donc lier le QR code à la session de navigateur qui l'a affiché et refuser un résultat qui arrive pour toute autre session.

Bien mis en œuvre, les deux se valent. Si cette protection est omise, c'est le flux cross-device qui peut être relayé vers une victime.

Retour au glossaire