SD-JWT VC vs mdoc(ISO/IEC 18013-5):EUDIウォレットのフォーマット比較
開発者向けにSD-JWT VCとmdoc(ISO/IEC 18013-5)を比較します。選択的開示、鍵バインディング、OpenID4VPとISO/IEC 18013-7、実施規則(EU)2026/1731がPIDに求める要件、検証者に必要なフォーマットを取り上げます。

要点
SD-JWT VCとmdoc(ISO/IEC 18013-5)は、すべてのEUデジタルアイデンティティ(EUDI)ウォレットが扱わなければならない2つのクレデンシャルフォーマットです。SD-JWT VCはJSONで、リモートでの利用を前提に設計されています。mdocはバイナリのCBORで、近接でも使えるのはこちらだけです。[1]
- どちらも同じ考え方で属性を秘匿・開示します。発行者が署名したソルト付きハッシュです。[1]
- 実施規則(EU) 2026/1731以降、個人識別データは両方の形式で発行されます。[2]
- リモートの検証者はOpenID4VPでどちらも読み取れます。近接リーダーにはmdocが必要です。[1]
SD-JWT VCは、署名付きJSON Web Tokenとしてまとめられた検証可能なクレデンシャルで、クレームを1つずつ開示できます。mdocはISO/IEC 18013-5フォーマットのモバイル文書です。この規格は当初、モバイル運転免許証のために作成されました。EUDIウォレットのアーキテクチャ・リファレンスフレームワーク(ARF)は、この2つをウォレットの必須フォーマットとしています。3つ目のフォーマットであるW3C Verifiable Credentials Data Model 2.0は任意とされ、「非適格EAAのみを対象とする」とされています。[1]
本ガイドは、検証者を構築する開発者向けに両者を比較します。根拠はARF v3.0.0、OpenID for Verifiable Presentations(OpenID4VP)1.0の本文、およびEU官報です。PIDは個人識別データ(person identification data)を指します。
SD-JWT VCとは
ARFは「SD-JWT-based Verifiable Credentials」を、検証可能なクレデンシャルを表現するためのデータフォーマットと処理ルールと説明しています。SD-JWTは「『Selectively Disclosable JSON Web Token』の略」です。[1] JSONエンコーディング、選択的開示を備えた証明メカニズム、任意のデバイスバインディングを含みます。[1]
OpenID4VPではフォーマット識別子はdc+sd-jwtで、クエリはvct_valuesでクレデンシャルの種類を指定します。[4] 以下は仕様書にある発行済みペイロードの例で、8つのダイジェストのうち2つに短縮しています。[4]
{ "_sd": [ "jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4", "TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo" ], "vct": "https://credentials.example.com/identity_credential", "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256" } } }
注記
SD-JWT VCには未確定の選択肢が多く残っています。ARFは、High Assurance Interoperability Profile(HAIP)は「ウォレットユニットと依拠当事者の間の相互運用性を確保するために必要」としています。[1] HAIPに準拠して構築してください。
mdoc(ISO/IEC 18013-5)とは
ISO/IEC 18013-5は、免許証の属性、そのConcise Binary Object Representation(CBOR)によるエンコーディング、識別子の衝突を防ぐ名前空間、選択的開示を備えた証明メカニズム、必須のデバイスバインディング、近接でのやり取りを定めています。[1]
運転に特有なのは免許証のデータモデルだけです。ARFは、それ以外の要素はすべて「汎用的であり、PIDを含む他のあらゆる種類の証明に使用できる」としています。[1]
OpenID4VPは、これらのクレデンシャルを「CBORでエンコードされ、COSE_Sign1で保護される」ものと説明し、フォーマット識別子mso_mdocを割り当てています。クエリはdoctype_valueで文書の種類を指定します。[4]
注記
モバイル文書を提示するための汎用規格ISO/IEC 23220-4が準備中です。ARFはこれが「まだ完成していない」とし、引き続きISO/IEC 18013-5を参照しています。[1]
各フォーマットでの選択的開示の仕組み
選択的開示により、利用者は一部の属性を共有して残りを秘匿でき、検証者は引き続き発行者の署名を確認できます。eIDAS 2はウォレットにこれを可能にすることを求めています。[6] ARFはSD-JWTの仕組みを「ソルト付きハッシュ」と呼び、「[ISO/IEC 18013-5]で同じ目的に使われる仕組みと概念的に同一である」としています。[1]
JSON
SD-JWT VC
- 発行者は値ではなくダイジェストを格納したJWTに署名する
- 秘匿された各クレームは個別の開示情報として送られる
- ウォレットは承認された開示情報だけを送信する
OpenID4VP 1.0、付録B.3
CBOR
mdoc(ISO/IEC 18013-5)
- 発行者は、データ要素のソルト付きハッシュに署名します
- データ要素は名前空間に属します
- ウォレットは承認された要素のみを返します
ARF v3.0.0、セクション5.4.2および5.4.3
1つの仕組みに、2つのエンコーディングがあります。[1][4]
上記の例では、_sd配列にSHA-256ダイジェストが格納されています。各ディスクロージャーは、ランダム値、クレーム名、クレーム値からなる配列です。名の場合は["2GLC42sKQveCfGfryNRN9w", "given_name", "John"]となり、そのハッシュがリストの最初のダイジェストです。検証者は、受け取った各ディスクロージャーをハッシュ化し、署名済みペイロード内でそのダイジェストを探します。[4]
クレームの指定方法は異なります。JSONクレデンシャルの場合、クレームパスは["address", "street_address"]のようなキーのリストです。mdocの場合、パスは「文字列型の2つの要素を含む」ものです。名前空間とデータ要素識別子で、たとえば["org.iso.18013.5.1", "first_name"]となります。[4]
注意
PID属性表に「18歳以上」の属性はありません。必須属性は、姓、名、生年月日、出生地、国籍です。[3] 選択的開示は属性を隠す仕組みです。生年月日を「はい」か「いいえ」に変換するものではありません。
鍵バインディングとデバイスエンゲージメント
デバイスバインディングは、クレデンシャルをユーザーのウォレット内に保持された鍵に結び付けます。そのため、クレデンシャルは複製できません。検証者は、クレデンシャル内の公開鍵に対応する秘密鍵で新しいランダムデータに署名するようウォレットに求め、これを確認します。[1] 名称は異なります。「[ISO/IEC 18013-5]では『mdoc認証』と呼ばれる。[SD-JWT VC]では『鍵バインディング』と呼ばれる。」[1]
| 確認事項 | SD-JWT VC | mdoc(ISO/IEC 18013-5) |
|---|---|---|
| 証明の名称 | 鍵バインディング(Key Binding) | mdoc認証(mdoc authentication) |
| フォーマット上の必須性 | 仕様上は任意 | 標準では必須 |
| 保有者鍵の格納場所 | cnfクレーム | 発行者が署名したmdoc内 |
| ウォレットがOpenID4VPで返すもの | Key Binding JWT付きのSD-JWT | セッショントランスクリプトに対する署名またはMACを含むDeviceResponse |
| リクエストとの紐付け | Key Binding JWT内のnonceとaud | セッショントランスクリプト内のOpenID4VPハンドオーバー |
PIDでは、どちらのフォーマットでもデバイスバインディングが必須です。[1][4]
SD-JWT VCについて、OpenID4VPのルールは厳格です。require_cryptographic_holder_bindingがtrue(デフォルト)の場合、ウォレットはKey Binding JWT付きで「SD-JWTを返さなければならない(MUST)」とされています。nonceクレームはリクエストのnonceと一致し、audは貴社のClient Identifierと一致しなければなりません。ただしDigital Credentials API経由の場合は、origin:を先頭に付けた貴社のオリジンと一致する必要があります。[4]
デバイスエンゲージメントはmdocだけのものです。近接フローでは、ユーザーがQRコードを表示するか、NFCタグを提示します。そこには、リーダーがNFC、Bluetooth Low EnergyまたはWi-Fi Awareの接続を開き、その上に認証・暗号化されたチャネルを構築するために必要な情報が含まれています。両者の間にインターネット接続はありません。[1]
ウォレットがリーダーを認証
mdoc(ISO/IEC 18013-5)による近接提示(簡略版)。[1]
ユーザーに表示される画面:
身分証明書を提示
QRコードを表示
1ユーザーがウォレットを開き、提示を開始します。
リーダーにスキャンさせてください
またはリーダーにタッチしてください。
2QRコードまたはNFCタッチでチャネルを確立します。
共有する項目を選択
- 姓共有
- 生年月日共有
- 出生地非共有
共有
3ウォレットがリーダー名を表示し、ユーザーが承認します。
共有済み
4承認された属性だけがスマートフォンの外に出ます。[1]
提示プロトコル: OpenID4VP、ISO/IEC 18013-7、近接提示
ARFは、ウォレットが扱うものを挙げています。近接ではISO/IEC 18013-5、リモートではOpenID4VPまたはISO/IEC 18013-7です。[1]
| プロトコル | 利用場面 | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|---|
| ISO/IEC 18013-5 | 近接: QRまたはNFCで開始し、その後NFC、Bluetooth Low EnergyまたはWi-Fi Aware | いいえ | はい |
| HAIPを伴うOpenID4VP | リモート: リダイレクトとカスタムURIスキーム、またはDigital Credentials API | はい | はい |
| ISO/IEC 18013-7 | リモート: Digital Credentials API上の附属書C。附属書AのカスタムURIスキームはウォレットにとって任意 | いいえ | はい |
ARFに基づく、各プロトコルが扱うフォーマットの対応。[1]
SD-JWT VCのアテステーションは「近接提示では使用できない」とされています。ISO/IEC 18013-7は「[ISO/IEC 18013-5]準拠フォーマットのアテステーションの要求と提示にのみ使用できる」とされています。OpenID4VPは「リモート提示のトランザクションフローにのみ適している」とされ、両方のフォーマットを扱います。[1] OpenID4VP 1.0は2025年7月10日にFinal Specificationになりました。[5]
動画準備中: flow-eudi-openid4vp
OpenID4VPによるウォレットからのリモート提示の流れ(開始から完了まで)。
ARFは、デバイスをまたぐカスタムURIスキームを推奨していません。こうしたフローは「フィッシングやリレー攻撃に対して脆弱である」ためです。ARFは代替としてDigital Credentials APIを挙げています。[1] このAPIはまだW3Cのドラフトで、Chrome 141ではデフォルトで有効になります。[9][10] ISOは18013-7の2024年版技術仕様を廃止・置換済みとしており、第3版が策定中です。コードがどの版を対象にしているか確認してください。[7][8] リクエストの詳細はOpenID4VP検証者ガイドにあります。
実施規則(EU) 2026/1731がPIDに求めること
PIDフォーマットに関する最初の規則である実施規則(EU) 2024/2977は、PIDは「2つのフォーマットで発行されなければならない」と定めていました。ISO/IEC 18013-5:2021とVerifiable Credentials Data Model 1.1です。[2][3] 2026年7月の改正法がこの一文を置き換えました。現在、PIDは「実施規則(EU) 2024/2979の附属書IIの第5項(SD-JWT VCフォーマット)および第6項(ISO/IEC-mdocフォーマット)に定める標準に従って発行されなければならない」とされています。[2]
- 2024年12月4日最初の規則2024/2977: 18013-5とVCDM 1.1。
- 2026年7月22日改正2026/1731: SD-JWT VCとmdoc。
- 2026年7月23日ARF v3.0.0改正法に整合。
- 2026年12月24日ウォレット提供期限加盟国ごとに1つのウォレット。
- 2028年8月11日顔写真該当する場合、利用者が明示的にオプトアウトしない限り、顔写真の要件が適用されます。
PIDフォーマットに関する法令の変遷。[1][2][3][6]
同じ法令は、実施規則(EU)2024/2982に対する附属書で、2つの提示プロファイルを定めています。「ISO/IEC-mdocプロファイル」と「OpenID4VC-HAIPプロファイル」です。[2]
- 登録証明書を送信します。
verifier_infoの要素の1つは「登録証明書を含まなければならない」とされています。[2] - アクセス証明書を、
x509_hashClient Identifier Prefixのリーフ証明書として使用します。[2] - Digital Credentials APIを介したmdocについては、「ISO/IEC 18013-7:2025の附属書C」に従います。[2]
登録についてはEUDIウォレットの依拠当事者向けガイドで、スケジュールについては2026年と2027年のEUDIウォレットの期限で解説しています。
SD-JWT VCとmdoc(ISO/IEC 18013-5)の比較表
| 項目 | SD-JWT VC | mdoc(ISO/IEC 18013-5) |
|---|---|---|
| エンコーディング | JSON Web Token | CBOR、バイナリ |
| 選択的開示 | ソルト付きハッシュ | ソルト付きハッシュ |
| ARFにおける主なユースケース | リモート(例:リモート本人確認) | 近接(例:モバイル運転免許証) |
| ウォレットの対応義務 | 必須 | 必須 |
| この形式でのPID発行 | あり | あり |
| 近接 | なし | あり、ISO/IEC 18013-5 |
| リモート | HAIPを用いたOpenID4VP | HAIPを用いたOpenID4VP、またはISO/IEC 18013-7 |
| デバイスバインディング | フォーマット上は任意、PIDでは必須 | 規格上必須 |
| OpenID4VPのフォーマット識別子 | dc+sd-jwt | mso_mdoc |
| クレームパス | JSONキー | 名前空間、次にデータ要素識別子 |
ARFに基づく。ただし、PIDの行(実施規則2026/1731)と最後の2行(OpenID4VP 1.0)を除く。[1][2][4]
米国のモバイル運転免許証は、近接での提示にISO/IEC 18013-5を基盤としている。[7][8] EUの年齢確認ソリューションは、必須の提示方式としてゼロ知識証明を挙げ、「フォールバックとして通常のmDoc提示」を用いるとしている。[13] モルドバのEVO Walletは、HAIP 1.0に従ってプロファイルされたOpenID4VP 1.0とISO/IEC 18013-5 mdocの組み合わせを文書化している。[11]
依拠当事者がサポートすべきフォーマット
ウォレットユニットは両方のフォーマットを扱い、PIDは両方のフォーマットで発行される。[1][2] 本ガイドのために確認した文書には、依拠当事者に両方の要求を義務付ける規定はない。実務上の解釈は次のとおり。リモートの検証者はどちらでも要求できる。インターネット接続のないリーダーにはmdocが必要となる。mdocは近接で機能する唯一のフォーマットである。[1]
1ユーザーとの接点を洗い出す
ウェブサイト、アプリ、窓口、ゲート。
その中に近接フローはあるか
mdoc(ISO/IEC 18013-5)を構築する
リモートでも機能する。
SD-JWT VCから始める
HAIPを用いたOpenID4VP上のJSON。
2クエリ層をフォーマット非依存にする
1つのDCQLクエリで両方のフォーマットを指定できる。
3発行者、失効、バインディングを検証する
両方に同じチェックが適用される。
OpenID4VPのDigital Credentials Query Language(DCQL)では、1つのリクエストにdc+sd-jwtクエリとmso_mdocクエリを並べて含めることができる。仕様書にはそのようなリクエストの例が示されている。[4] ARFによれば、依拠当事者は、トラステッドリストまたはトラステッドエンティティリストのトラストアンカーに照らして発行者の署名を検証し、ステータスリストまたは失効リストで失効を確認し、デバイスバインディングを検証する。[1]
eIDAS 2(Regulation (EU) 2024/1183)の下で、各加盟国は2026年12月24日までに少なくとも1つのウォレットを提供しなければならない。また、強力なユーザー認証の使用を義務付けられている民間の依拠当事者は、2027年12月24日までに、ユーザーの要求に応じてウォレットを受け入れなければならない。零細企業と小企業は適用除外となる。[6] 各国の状況はEUDIウォレット導入状況トラッカーで確認できる。
ライブラリとテストツール
本ガイドが依拠する情報源は、オープンソースのライブラリを挙げていません。そのため、本セクションでも挙げません。ただし、テストの実施場所と、選んだライブラリで確認すべき点は示されています。
- conformance.eudi.dev で適合性テストを実行してください。これは ARF v3.0.0 のリリースノートに記載されています。[1]
- docs.eudi.dev のリファレンス実装のドキュメントを読んでください。[1]
- 公開されている検証者の実装を確認してください。モルドバ国立銀行は、金融機関向けにソースコード付きのデモ検証者を公開しています。[12]
- ライブラリが基本仕様だけでなく HAIP にも準拠しているか確認してください。[1]
- ライブラリが ISO/IEC 18013-7 のどの版を実装しているか確認してください。[2][8]
Didit によるEUDIウォレット検証の支援
Didit での EUDIウォレットの受け入れは近日対応予定です。EUDIウォレットのスケジュールに合わせてロードマップに組み込まれており、現在お使いのワークフローと同じ流れで利用できるようになります。リモートでの本人確認は現在すでに可能です。
- 現在、Didit ではデジタルIDウォレットを通じて 5 つの国のeIDが稼働しています。MitID、BankID Sweden、Finnish Trust Network、Smart-ID、Mobile-ID です。eID検証をご覧ください。
- それ以外の利用者には、本人確認書類の検証を、NFCチップの読み取り、ライブネス検知、顔照合と組み合わせて使います。KYC チェック一式の費用は $0.33 です。
- AMLスクリーニングは同じフロー内で $0.20 で実行されます。
ウォレットのドキュメントでは、eIDを国ごとに有効化する方法を説明しています。
Didit が提供するもの
- 国のeIDによるサインインと書類ルートを 1 つのワークフローで
- すべてのチェックの証跡
貴社が担うもの
- ウォレット依拠当事者としての登録
- 要求するフォーマットと属性の選択
- オンボーディングの判断と貴社のポリシー
要点
- ウォレットは SD-JWT VC と mdoc (ISO/IEC 18013-5) の両方を扱い、PID は両方の形式で発行されます。
- どちらも選択的開示にソルト付きハッシュを使います。違いはエンコーディングで、JSON か CBOR かです。
- SD-JWT VC はリモート専用です。mdoc は近接でもリモートでも使えます。
- HAIP に準拠した OpenID4VP は両方のフォーマットを扱えるため、1 つの検証者でどちらも要求できます。
よくある質問
SD-JWT VC とは何ですか。
選択的開示が可能なJSON Web Tokenとして格納された検証可能なクレデンシャルです。発行者はクレームのダイジェストに署名し、ウォレットは利用者が承認したクレームだけを開示します。[1]
ISO/IEC 18013-5のmdocとは何ですか。
モバイル運転免許証のために最初に定義されたCBORフォーマットのモバイル文書です。規格のそれ以外の部分は汎用的で、PIDを含む他のアテステーションも格納できます。[1]
SD-JWT VCとmdocの違いは何ですか。
違いはエンコーディングと利用範囲です。SD-JWT VCはJSONでリモート専用です。mdocはCBORで、近接でも使えます。どちらも選択的開示にソルト付きハッシュを使います。[1]
EUDIウォレットのPIDはどのフォーマットを使いますか。
両方です。実施規則 (EU) 2026/1731は、PIDをSD-JWT VCフォーマットとISO/IEC-mdocフォーマットで発行すると定めています。[2]
依拠当事者は両方のフォーマットに対応しなければなりませんか。
本ガイドのために確認した文書は、ウォレットに両方のフォーマットの処理を義務づけていますが、依拠当事者が両方を要求しなければならないとは定めていません。リモートの検証者はどちらか一方を要求できます。近接の読取装置にはmdocが必要です。[1][2]
SD-JWT VCの選択的開示はどのように機能しますか。
署名されたトークンには、クレームの値の代わりにダイジェストが含まれます。各クレームは、ランダム値、名前、値からなるディスクロージャーとして送られます。検証者はそれをハッシュ化し、該当するダイジェストを探します。[4]
キーバインディングとは何ですか。mdoc認証と同じものですか。
どちらもデバイスバインディングの呼び名です。デバイスバインディングは、クレデンシャルが利用者のウォレット内の鍵に紐づいていることの証明です。PIDでは必須です。[1]
OpenID4VPはmdocで使えますか。
使えます。OpenID4VPは両方のフォーマットを扱い、識別子はmdocがmso_mdoc、SD-JWT VCがdc+sd-jwtです。もう一つのリモートの選択肢はISO/IEC 18013-7で、こちらはmdocだけを扱います。[1][4]
両方のフォーマットについて検証者をテストできる場所はどこですか。
conformance.eudi.devの適合性テストと、docs.eudi.devのドキュメントを使ってください。モルドバ国立銀行も、ソースコード付きのデモ検証者を公開しています。[1][12]
出典
- Architecture and Reference Framework v3.0.0、GitHubのeu-digital-identity-wallet、2026年7月23日リリース。
- 欧州委員会実施規則 (EU) 2026/1731、EUR-Lex、2026年7月22日付官報。
- 個人識別データに関する欧州委員会実施規則 (EU) 2024/2977、EUR-Lex、2024年12月4日付官報。
- OpenID for Verifiable Presentations 1.0、OpenID Foundation、最終仕様。
- OpenID for Verifiable Presentations 1.0 Final Specification Approved、OpenID Foundation、2025年7月10日。
- 規則 (EU) 2024/1183(eIDAS 2)、EUR-Lex、2024年4月30日付官報。
- ISO/IEC 18013シリーズ、モバイル運転免許証、ISO規格ページ。
- ISO/IEC 18013-7、ISO規格ページ。
- Digital Credentials、W3Cドラフト。
- Digital Credentials API shipped、Chrome for Developers。
- EVO Wallet開発者ガイド、モルドバ政府、egov4dev。
- BNMデモ検証者、モルドバ政府、egov4dev。
- EU年齢確認ソリューション、技術ポータル、ageverification.dev。
SD-JWT VCとmdoc(ISO/IEC 18013-5)は、同じ約束を実現する2つのエンコーディングです。その約束とは、ユーザーが管理する署名付き属性です。Diditのウォレット受け入れへの取り組みはEUDIウォレットのソリューションページで、各国のスキームはすべて国別eIDスキームでご確認ください。