SD-JWT VC vs mdoc (ISO/IEC 18013-5) : formats du portefeuille EUDI comparés
SD-JWT VC vs mdoc (ISO/IEC 18013-5) pour développeurs : divulgation sélective, liaison de clé, OpenID4VP et ISO/IEC 18013-7, ce qu'exige le règlement d'exécution (UE) 2026/1731 pour le PID et le format requis côté vérificateur.

En bref
SD-JWT VC et mdoc (ISO/IEC 18013-5) sont les deux formats d'attestation que tout portefeuille européen d'identité numérique (EUDI Wallet) doit prendre en charge. SD-JWT VC repose sur JSON et est conçu pour un usage à distance. mdoc repose sur CBOR, un format binaire, et c'est le seul des deux qui fonctionne aussi en proximité.[1]
- Les deux masquent et révèlent les attributs selon le même principe : des empreintes salées signées par l'émetteur.[1]
- Depuis le règlement d'exécution (UE) 2026/1731, les données d'identification de la personne sont délivrées dans les deux formats.[2]
- Un vérificateur à distance peut lire l'un ou l'autre via OpenID4VP. Un lecteur de proximité a besoin de mdoc.[1]
Un SD-JWT VC est une attestation vérifiable encapsulée dans un JSON Web Token signé dont les revendications peuvent être divulguées une par une. Un mdoc est un document mobile au format ISO/IEC 18013-5, la norme rédigée à l'origine pour les permis de conduire mobiles. L'Architecture and Reference Framework (ARF) du portefeuille EUDI impose les deux formats aux portefeuilles. Il prévoit un troisième format, le W3C Verifiable Credentials Data Model 2.0, à titre optionnel et « destiné uniquement aux EAA non qualifiées ».[1]
Ce guide compare les deux formats pour les développeurs qui construisent un vérificateur. Il s'appuie sur l'ARF v3.0.0, le texte d'OpenID for Verifiable Presentations (OpenID4VP) 1.0 et le Journal officiel. PID signifie person identification data, soit les données d'identification de la personne.
Ce qu'est un SD-JWT VC
L'ARF décrit les « SD-JWT-based Verifiable Credentials » comme un format de données et des règles de traitement servant à exprimer des attestations vérifiables, où SD-JWT « signifie "Selectively Disclosable JSON Web Token" ».[1] Il couvre l'encodage JSON, un mécanisme de preuve avec divulgation sélective et un lien optionnel avec l'appareil.[1]
Dans OpenID4VP, l'identifiant de format est dc+sd-jwt, et une requête désigne le type d'attestation via vct_values.[4] Voici l'exemple de charge utile émise donné par la spécification, réduit à deux de ses huit empreintes :[4]
{ "_sd": [ "jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4", "TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo" ], "vct": "https://credentials.example.com/identity_credential", "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256" } } }
Remarque
SD-JWT VC laisse de nombreuses options ouvertes. L'ARF indique que le High Assurance Interoperability Profile (HAIP) « est nécessaire pour garantir l'interopérabilité entre les unités de portefeuille et les parties utilisatrices ».[1] Développez en suivant HAIP.
Ce qu'est un mdoc (ISO/IEC 18013-5)
ISO/IEC 18013-5 définit les attributs du permis, leur encodage en Concise Binary Object Representation (CBOR), des espaces de noms qui évitent les collisions d'identifiants, un mécanisme de preuve avec divulgation sélective, un lien obligatoire avec l'appareil et l'échange en proximité.[1]
Seul le modèle de données du permis est propre à la conduite. L'ARF note que tous les autres aspects « sont génériques et peuvent être utilisés pour tout autre type d'attestation, y compris les PID ».[1]
OpenID4VP décrit ces attestations comme « encodées en CBOR et sécurisées au moyen de COSE_Sign1 » et leur attribue l'identifiant de format mso_mdoc. Une requête désigne le type de document via doctype_value.[4]
Remarque
Une norme générale pour la présentation des documents mobiles, ISO/IEC 23220-4, est en préparation. L'ARF indique qu'elle « n'est pas encore finalisée » et continue de renvoyer à ISO/IEC 18013-5.[1]
Fonctionnement de la divulgation sélective dans chaque format
La divulgation sélective permet à l'utilisateur de partager certains attributs et de masquer les autres, tandis que le vérificateur contrôle toujours la signature de l'émetteur. eIDAS 2 impose aux portefeuilles de la rendre possible.[6] L'ARF qualifie le mécanisme SD-JWT d'« empreintes salées » et indique qu'il « est conceptuellement identique au mécanisme utilisé dans le même but dans [ISO/IEC 18013-5] ».[1]
JSON
SD-JWT VC
- L'émetteur signe un JWT qui contient des empreintes, pas des valeurs
- Chaque revendication masquée circule sous la forme d'une divulgation distincte
- Le portefeuille envoie uniquement les divulgations approuvées
OpenID4VP 1.0, annexe B.3
CBOR
mdoc (ISO/IEC 18013-5)
- L'émetteur signe des hachages salés des éléments de données
- Les éléments de données sont rangés dans des espaces de noms
- Le portefeuille ne renvoie que les éléments approuvés
ARF v3.0.0, sections 5.4.2 et 5.4.3
Un seul mécanisme, deux encodages.[1][4]
Dans l'exemple ci-dessus, le tableau _sd contient des condensats SHA-256. Chaque divulgation est un tableau composé d'une valeur aléatoire, du nom de la déclaration et de la valeur de la déclaration. Pour le prénom, il s'agit de ["2GLC42sKQveCfGfryNRN9w", "given_name", "John"], et son hachage est le premier condensat de la liste. Le vérificateur hache chaque divulgation qu'il reçoit et recherche le condensat dans la charge utile signée.[4]
Les déclarations sont adressées différemment. Pour un justificatif JSON, un chemin de déclaration est une liste de clés, par exemple ["address", "street_address"]. Pour un mdoc, le chemin « contient deux éléments de type chaîne » : l'espace de noms et l'identifiant de l'élément de données, par exemple ["org.iso.18013.5.1", "first_name"].[4]
Attention
La table des attributs PID ne comporte aucun attribut « plus de 18 ans ». Les attributs obligatoires sont le nom de famille, le prénom, la date de naissance, le lieu de naissance et la nationalité.[3] La divulgation sélective masque des attributs. Elle ne transforme pas une date de naissance en oui ou non.
Liaison de clé et engagement de l'appareil
La liaison à l'appareil rattache un justificatif à des clés détenues dans le portefeuille de l'utilisateur, de sorte qu'il ne peut pas être cloné. Le vérificateur la contrôle en demandant au portefeuille de signer des données aléatoires fraîches avec la clé privée qui correspond à la clé publique contenue dans le justificatif.[1] Les noms diffèrent : « Dans [ISO/IEC 18013-5], on parle de "mdoc authentication". Dans [SD-JWT VC], on parle de "key binding". »[1]
| Question | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|
| Nom de la preuve | Key binding | mdoc authentication |
| Exigée par le format | Facultative dans la spécification | Obligatoire dans la norme |
| Emplacement de la clé du titulaire | La déclaration cnf | Dans le mdoc signé par l'émetteur |
| Ce que le portefeuille renvoie via OpenID4VP | Le SD-JWT accompagné d'un Key Binding JWT | Un DeviceResponse avec une signature ou un MAC sur la transcription de session |
| Ce qui la rattache à votre requête | nonce et aud dans le Key Binding JWT | Le handover OpenID4VP dans la transcription de session |
La liaison à l'appareil est obligatoire pour les PID dans les deux formats.[1][4]
Pour SD-JWT VC, la règle d'OpenID4VP est stricte. Lorsque require_cryptographic_holder_binding vaut true, la valeur par défaut, le portefeuille « DOIT renvoyer un SD-JWT » accompagné d'un Key Binding JWT. La revendication nonce doit être égale au nonce de votre requête, et aud doit être égale à votre identifiant client (Client Identifier), sauf via la Digital Credentials API, où elle doit être égale à votre origine préfixée par origin:.[4]
L'engagement de l'appareil (device engagement) est propre à mdoc. Dans un flux de proximité, l'utilisateur affiche un code QR ou présente une balise NFC. Cet engagement contient ce dont le lecteur a besoin pour ouvrir une connexion NFC, Bluetooth Low Energy ou Wi-Fi Aware et y établir un canal authentifié et chiffré, sans liaison internet entre les deux.[1]
Le portefeuille authentifie le lecteur
Une présentation de proximité avec mdoc (ISO/IEC 18013-5), version simplifiée.[1]
Ce que voit l'utilisateur :
Présentez votre identité
Afficher le code QR
1L'utilisateur ouvre le portefeuille et lance une présentation.
Laissez le lecteur scanner
Ou approchez le lecteur.
2Un code QR ou un contact NFC établit le canal.
Choisissez ce que vous partagez
- Nom de famillePartagé
- Date de naissancePartagée
- Lieu de naissanceNon partagé
Partager
3Le portefeuille identifie le lecteur et l'utilisateur approuve.
Partagé
4Seuls les attributs approuvés quittent le téléphone.[1]
Protocoles de présentation : OpenID4VP, ISO/IEC 18013-7 et proximité
L'ARF liste ce que gère un portefeuille : ISO/IEC 18013-5 en proximité, et OpenID4VP ou ISO/IEC 18013-7 à distance.[1]
| Protocole | Où | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|---|
| ISO/IEC 18013-5 | Proximité : QR ou NFC, puis NFC, Bluetooth Low Energy ou Wi-Fi Aware | Non | Oui |
| OpenID4VP avec HAIP | À distance : redirections et schémas d'URI personnalisés, ou la Digital Credentials API | Oui | Oui |
| ISO/IEC 18013-7 | À distance : annexe C via la Digital Credentials API. Le schéma d'URI personnalisé de l'annexe A est facultatif pour les portefeuilles | Non | Oui |
Quel protocole transporte quel format, selon l'ARF.[1]
Les attestations SD-JWT VC « ne peuvent pas être utilisées dans les présentations de proximité ». ISO/IEC 18013-7 « ne peut être utilisée que pour demander et présenter des attestations au format conforme à [ISO/IEC 18013-5] ». OpenID4VP « ne convient qu'aux flux de transaction de présentation à distance » et transporte les deux formats.[1] OpenID4VP 1.0 est devenue une Final Specification le 10 juillet 2025.[5]
Vidéo en attente : flow-eudi-openid4vp
Une présentation à distance depuis un portefeuille avec OpenID4VP, du début à la fin.
L'ARF ne recommande pas les schémas d'URI personnalisés entre appareils, car ces flux « sont vulnérables aux attaques par hameçonnage et par relais ». Il désigne la Digital Credentials API comme alternative.[1] Cette API est encore un projet du W3C, et Chrome 141 l'active par défaut.[9][10] L'ISO indique que la spécification technique de 2024 de la norme 18013-7 est annulée et remplacée, et qu'une troisième édition est en cours d'élaboration. Vérifiez donc quelle édition votre code cible.[7][8] Les détails des requêtes figurent dans le guide du vérificateur OpenID4VP.
Ce que le règlement d'exécution (UE) 2026/1731 exige pour le PID
La première règle sur les formats du PID, le règlement d'exécution (UE) 2024/2977, disposait que le PID « est délivré dans deux formats » : ISO/IEC 18013-5:2021 et le Verifiable Credentials Data Model 1.1.[2][3] L'acte modificatif de juillet 2026 a remplacé cette phrase. Désormais, le PID « est délivré conformément aux normes énoncées à l'annexe II du règlement d'exécution (UE) 2024/2979, points 5 (format SD-JWT VC) et 6 (format ISO/IEC-mdoc) ».[2]
- 4 décembre 2024Première règle2024/2977 : 18013-5 et VCDM 1.1.
- 22 juillet 2026Modification2026/1731 : SD-JWT VC et mdoc.
- 23 juillet 2026ARF v3.0.0Aligné sur les actes modificatifs.
- 24 décembre 2026Échéance des portefeuillesUn portefeuille par État membre.
- 11 août 2028PortraitL'exigence relative au portrait s'applique, sauf refus explicite de l'utilisateur, le cas échéant.
Comment le droit sur les formats des PID a évolué.[1][2][3][6]
Le même acte fixe deux profils de présentation dans son annexe au règlement d'exécution (UE) 2024/2982 : un « profil ISO/IEC-mdoc » et un « profil OpenID4VC-HAIP ».[2]
- Transmettez votre certificat d'enregistrement : un élément de
verifier_info« inclut le certificat d'enregistrement ».[2] - Utilisez votre certificat d'accès comme certificat feuille avec le préfixe d'identifiant client
x509_hash.[2] - Suivez « l'annexe C de la norme ISO/IEC 18013-7:2025 » pour mdoc via la Digital Credentials API.[2]
L'enregistrement est traité dans le guide de la partie utilisatrice du portefeuille EUDI, et le calendrier dans Échéances du portefeuille EUDI pour 2026 et 2027.
SD-JWT VC ou mdoc (ISO/IEC 18013-5) : tableau comparatif
| Caractéristique | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|
| Encodage | JSON Web Token | CBOR, binaire |
| Divulgation sélective | Hachages salés | Hachages salés |
| Principal cas d'usage dans l'ARF | À distance, par exemple l'identification à distance | Proximité, par exemple un permis de conduire mobile |
| Obligation pour le portefeuille | Obligatoire | Obligatoire |
| PID délivrées dans ce format | Oui | Oui |
| Proximité | Non | Oui, ISO/IEC 18013-5 |
| À distance | OpenID4VP avec HAIP | OpenID4VP avec HAIP, ou ISO/IEC 18013-7 |
| Liaison à l'appareil | Facultative dans le format, obligatoire pour les PID | Obligatoire dans la norme |
| Identifiant de format OpenID4VP | dc+sd-jwt | mso_mdoc |
| Chemin des attributs | Clés JSON | Espace de noms, puis identifiant de l'élément de données |
Source : l'ARF, sauf la ligne PID (règlement d'exécution 2026/1731) et les deux dernières lignes (OpenID4VP 1.0).[1][2][4]
Aux États-Unis, les permis de conduire mobiles reposent sur ISO/IEC 18013-5 pour la proximité.[7][8] La solution européenne de vérification de l'âge désigne la preuve à divulgation nulle de connaissance comme mécanisme de présentation obligatoire, « avec la présentation mDoc simple comme solution de repli ».[13] L'EVO Wallet de la Moldavie documente OpenID4VP 1.0 avec un mdoc ISO/IEC 18013-5, profilé selon HAIP 1.0.[11]
Quel format une partie utilisatrice doit prendre en charge
Les instances de portefeuille gèrent les deux formats, et le PID est délivré dans les deux.[1][2] Les textes consultés pour ce guide ne contiennent aucune ligne qui oblige une partie utilisatrice à demander les deux. La lecture pratique : un vérificateur à distance peut demander l'un ou l'autre, et un lecteur sans connexion internet a besoin de mdoc, le seul format qui fonctionne en proximité.[1]
1Recensez les points de contact avec l'utilisateur
Site web, application, guichet ou portique.
L'un d'eux est-il un parcours de proximité
Développez mdoc (ISO/IEC 18013-5)
Il fonctionne aussi à distance.
Commencez par SD-JWT VC
JSON via OpenID4VP avec HAIP.
2Gardez une couche de requête neutre vis-à-vis du format
Une seule requête DCQL peut nommer les deux formats.
3Vérifiez l'émetteur, la révocation et la liaison à l'appareil
Les mêmes contrôles s'appliquent aux deux.
Le Digital Credentials Query Language (DCQL) d'OpenID4VP permet à une même requête de contenir une requête dc+sd-jwt et une requête mso_mdoc côte à côte. La spécification donne un exemple d'une telle requête.[4] Selon l'ARF, la partie utilisatrice vérifie la signature de l'émetteur à l'aide d'une ancre de confiance issue d'une liste de confiance ou d'une liste des entités de confiance, contrôle la révocation au moyen d'une liste de statuts ou d'une liste de révocation, et vérifie la liaison à l'appareil.[1]
Au titre d'eIDAS 2, règlement (UE) 2024/1183, chaque État membre doit fournir au moins un portefeuille d'ici le 24 décembre 2026. Les parties utilisatrices privées tenues de recourir à l'authentification forte de l'utilisateur doivent l'accepter à la demande de l'utilisateur d'ici le 24 décembre 2027, les micro et petites entreprises étant exemptées.[6] Le statut par pays figure dans le suivi du lancement du portefeuille EUDI.
Bibliothèques et outils de test
Les sources de ce guide ne citent aucune bibliothèque open source, cette section n'en cite donc aucune. Elles indiquent en revanche où tester et quoi vérifier dans la bibliothèque que vous choisissez.
- Exécutez les tests de conformité sur conformance.eudi.dev, cités dans les notes de version de l'ARF v3.0.0.[1]
- Lisez la documentation de l'implémentation de référence sur docs.eudi.dev.[1]
- Étudiez un vérificateur publié : la Banque nationale de Moldavie a mis à disposition des institutions financières un vérificateur de démonstration avec son code source.[12]
- Vérifiez que la bibliothèque suit HAIP, et pas seulement les spécifications de base.[1]
- Vérifiez quelle édition de la norme ISO/IEC 18013-7 elle implémente.[2][8]
Comment Didit vous aide pour la vérification par portefeuille EUDI
L'acceptation du portefeuille EUDI arrive bientôt sur Didit : elle figure dans notre feuille de route, alignée sur le calendrier du portefeuille EUDI, dans le même workflow que celui que vous utilisez aujourd'hui. Vous pouvez dès maintenant vérifier des personnes à distance.
- Cinq eID nationales fonctionnent aujourd'hui dans Didit via les portefeuilles d'identité numérique : MitID, BankID Sweden, Finnish Trust Network, Smart-ID et Mobile-ID. Voir vérification eID.
- Pour tous les autres, c'est la vérification de documents avec lecture de la puce NFC, détection du vivant et comparaison faciale. Un contrôle KYC complet coûte $0.33.
- Le filtrage AML s'exécute dans le même parcours pour $0.20.
La documentation des portefeuilles explique comment les eID sont activées pays par pays.
Ce que Didit fournit
- Les connexions par eID nationale et le parcours documentaire dans un seul workflow
- Les preuves de chaque contrôle
Ce qui reste de votre ressort
- Votre enregistrement en tant que partie utilisatrice de portefeuille
- Le choix des formats et des attributs que vous demandez
- La décision d'entrée en relation et vos politiques
Planifiez vos formats de portefeuille avec nous
Indiquez-nous vos pays et les canaux par lesquels vous rencontrez vos utilisateurs, et commencez dès aujourd'hui avec les eID nationales et les documents.
Points clés
- Les portefeuilles gèrent à la fois SD-JWT VC et mdoc (ISO/IEC 18013-5), et le PID est délivré dans les deux formats.
- Les deux utilisent des hachages salés pour la divulgation sélective. Ils diffèrent par l'encodage : JSON pour l'un, CBOR pour l'autre.
- SD-JWT VC fonctionne uniquement à distance. mdoc fonctionne en proximité et à distance.
- OpenID4VP avec HAIP transporte les deux formats, un même vérificateur peut donc demander l'un ou l'autre.
Questions fréquentes
Qu'est-ce qu'un SD-JWT VC ?
Une attestation vérifiable conditionnée sous forme de Selectively Disclosable JSON Web Token. L'émetteur signe les condensats des attributs, et le portefeuille ne révèle que les attributs que l'utilisateur approuve.[1]
Qu'est-ce qu'un mdoc au sens de la norme ISO/IEC 18013-5 ?
Un document mobile au format CBOR, défini à l'origine pour les permis de conduire mobiles. Le reste de la norme est générique et peut porter d'autres attestations, y compris des PID.[1]
Quelle est la différence entre SD-JWT VC et mdoc ?
L'encodage et la portée. SD-JWT VC est en JSON et fonctionne uniquement à distance. mdoc est en CBOR et fonctionne aussi en proximité. Les deux utilisent des hachages salés pour la divulgation sélective.[1]
Quels formats le PID du portefeuille européen d'identité numérique (EUDI Wallet) utilise-t-il ?
Les deux. Le règlement d'exécution (UE) 2026/1731 prévoit que le PID est délivré selon le format SD-JWT VC et le format ISO/IEC-mdoc.[2]
Une partie utilisatrice doit-elle prendre en charge les deux formats ?
Les textes examinés pour ce guide obligent les portefeuilles à gérer les deux formats. Ils ne disent pas qu'une partie utilisatrice doit demander les deux. Un vérificateur à distance peut demander l'un ou l'autre. Un lecteur de proximité a besoin de mdoc.[1][2]
Comment fonctionne la divulgation sélective dans SD-JWT VC ?
Le jeton signé contient des condensats à la place des valeurs des attributs. Chaque attribut circule sous forme de divulgation composée d'une valeur aléatoire, du nom et de la valeur. Le vérificateur la hache et recherche le condensat.[4]
Qu'est-ce que le key binding, et est-ce la même chose que l'authentification mdoc ?
Ce sont deux noms du lien avec l'appareil (device binding), c'est-à-dire la preuve que l'attestation appartient à des clés du portefeuille de l'utilisateur. Il est obligatoire pour les PID.[1]
OpenID4VP fonctionne-t-il avec mdoc ?
Oui. OpenID4VP transporte les deux formats, avec l'identifiant mso_mdoc pour mdoc et dc+sd-jwt pour SD-JWT VC. ISO/IEC 18013-7 est l'autre option à distance, et elle ne transporte que mdoc.[1][4]
Où tester un vérificateur pour les deux formats ?
Utilisez les tests de conformité sur conformance.eudi.dev et la documentation sur docs.eudi.dev. La Banque nationale de Moldavie a aussi publié un vérificateur de démonstration avec son code source.[1][12]
Sources
- Architecture and Reference Framework v3.0.0, eu-digital-identity-wallet sur GitHub, version publiée le 23 juillet 2026.
- Règlement d'exécution (UE) 2026/1731 de la Commission, EUR-Lex, Journal officiel du 22 juillet 2026.
- Règlement d'exécution (UE) 2024/2977 de la Commission relatif aux données d'identification personnelle, EUR-Lex, Journal officiel du 4 décembre 2024.
- OpenID for Verifiable Presentations 1.0, OpenID Foundation, spécification finale.
- OpenID for Verifiable Presentations 1.0 Final Specification Approved, OpenID Foundation, 10 juillet 2025.
- Règlement (UE) 2024/1183 (eIDAS 2), EUR-Lex, Journal officiel du 30 avril 2024.
- Série ISO/IEC 18013, permis de conduire mobile, page de la norme sur le site de l'ISO.
- ISO/IEC 18013-7, page de la norme sur le site de l'ISO.
- Digital Credentials, projet du W3C.
- Digital Credentials API shipped, Chrome for Developers.
- Guide développeur EVO Wallet, Gouvernement de Moldavie, egov4dev.
- Vérificateur de démonstration de la BNM, Gouvernement de Moldavie, egov4dev.
- Solution européenne de vérification de l'âge, portail technique, ageverification.dev.
SD-JWT VC et mdoc (ISO/IEC 18013-5) sont deux encodages d'une même promesse : des attributs signés que l'utilisateur contrôle. Découvrez l'approche de Didit pour l'acceptation des portefeuilles sur la page de la solution portefeuille EUDI, et l'ensemble des schémas nationaux dans Schémas eID par pays.
Vérifiez l'identité des personnes à distance pendant le déploiement des portefeuilles
Utilisez dès maintenant les eID nationales et le parcours par document d'identité, et parlez-nous du portefeuille EUDI.
Articles associés
- e-Devlet pour les entreprises : vérification d'identité en Turquie
- Intégration Singpass Myinfo : guide pour les entreprises à Singapour
- Intégration de Cl@ve en Espagne : qui peut s'y connecter et quelles alternatives
- Vérification PhilSys : comment les entreprises contrôlent la National ID
- Guide du vérificateur OpenID4VP : accepter le portefeuille EUDI
- Règlement eIDAS expliqué : ce que change eIDAS 2 (2024/1183)