ストーリーで学ぶ Verifiable Credentials
このドキュメントでは、具体的なストーリーを通じて VC の仕組みを理解します。登場人物と一緒に、VC がどのように使われるかを見ていきましょう。
ストーリー1: 太郎さんの運転免許証
登場人物
- 太郎さん: 25歳の会社員。スマホで何でも済ませたい
- 公安委員会: 運転免許証を発行する機関
- 居酒屋の店員: 年齢確認が必要
- レンタカー会社: 免許証の確認が必要
第1章: デジタル免許証の取得
太郎さんは運転免許証の更新に来ました。
┌─────────────────────────────────────────────────────────────┐
│ 運転免許センター │
│ │
│ 職員: 「更新完了です。デジタル免許証も発行しますか?」 │
│ │
│ 太郎: 「お願いします!」 │
│ │
│ 職員: 「スマホの Wallet アプリを開いてください」 │
│ │
│ [太郎さんのスマホ] │
│ ┌──── ─────────────────────────────────────┐ │
│ │ 🆔 Wallet │ │
│ │ │ │
│ │ 新しいクレデンシャルを追加しますか? │ │
│ │ │ │
│ │ 発行者: 東京都公安委員会 │ │
│ │ 種類: 運転免許証 │ │
│ │ │ │
│ │ [ 追加する ] [ キャンセル ] │ │
│ └─────────────────────────────────────────┘ │
│ │
└──────────────────────── ─────────────────────────────────────┘
裏側で起きていること:
1. 公安委員会が太郎さんの情報を VC として作成
{
"氏名": "山田太郎",
"生年月日": "1999-03-15",
"住所": "東京都...",
"免許種別": ["普通自動車", "原付"],
"有効期限": "2029-03-15"
}
2. 公安委員会の秘密鍵でデジタル署名
3. 署名付き VC を太郎さんのスマホに転送
4. スマホの安全な領域(Secure Element)に保存
ポイント:
- VC は太郎さんのスマホにだけ保存される
- 公安委員会は「発行した」という記録だけを持つ
- 秘密鍵はスマホから取り出せない
第2章: 居酒屋での年齢確認
太郎さんは友人と居酒屋に来ました。
┌─────────────────────────────────────────────────────────────┐
│ 居酒屋の入口 │
│ │
│ 店員: 「年齢確認をお願いします」 │
│ │
│ 太郎: (スマホを取り出す) │
│ │
│ [店員のタブレット] [太郎さんのスマホ] │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 年齢確認リクエスト │◄────────│ 🆔 Wallet │ │
│ │ │ │ │ │
│ │ 確認項目: │ │ 開示しますか? │ │
│ │ ☑ 20歳以上か │ │ │ │
│ │ │ │ ✓ 20歳以上か │ │
│ │ 発行者: │ │ │ │
│ │ 公安委員会のみ │ │ 以下は開示しません│ │
│ │ │ │ ✗ 氏名 │ │
│ └──────────────────┘ │ ✗ 住所 │ │
│ │ ✗ 生年月日 │ │
│ │ │ │
│ │ [ 許可 ] [拒否] │ │
│ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
太郎さんが「許可」をタップすると...
┌─────────────────────────────────────────────────────────────┐
│ [店員のタブレット] │
│ ┌──────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ 年齢確認完了 │ │
│ │ │ │
│ │ 20歳以上: はい │ │
│ │ │ │
│ │ 発行者: 東京都公安委員会 │ │
│ │ 署名: ✅ 有効 │ │
│ │ 有効期限: ✅ 期限内 │ │
│ │ │ │
│ └──────────────────────────────────────────┘ │
│ │
│ 店員: 「確認できました。どうぞ!」 │
│ │
└─────────────────────────────────────────────────────────────┘
裏側で起きていること:
1. 店 員のタブレットが「20歳以上か」のみを要求
2. 太郎さんのスマホが VC から該当部分だけを抽出
{
"20歳以上": true
}
+ 公安委員会の署名(この部分だけでも検証可能)
3. 店員のタブレットが署名を検証
- 公安委員会の公開鍵で署名をチェック
- 有効期限をチェック
- 失効していないかチェック
4. すべて OK なので「確認完了」
従来との違い:
| 項目 | 従来(物理免許証) | VC |
|---|---|---|
| 店員が見る情報 | 全部 | 「20歳以上か」のみ |
| 氏名 | 見える | 見えない |
| 住所 | 見える | 見えない |
| 生年月日 | 見える | 見えない |
| 確認方法 | 目視 | デジタル署名検証 |
第3章: レンタカーの予約
太郎さんは旅行のためレンタカーを借ります。
┌─────────────────────────────────────────────────────────────┐
│ レンタカー会社のカウンター │
│ │
│ スタッフ: 「運転免許証の確認をお願いします」 │
│ │
│ [太郎さんのスマホ] │
│ ┌─────────────────────────────────────────┐ │
│ │ 🆔 Wallet │ │
│ │ │ │
│ │ レンタカー会社が以下を要求しています: │ │
│ │ │ │
│ │ ✓ 氏名 │ │
│ │ ✓ 生年月日 │ │
│ │ ✓ 運転免許種別 │ │
│ │ ✓ 有効期限 │ │
│ │ │ │
│ │ 以下は開示しません: │ │
│ │ ✗ 住所 │ │
│ │ ✗ 免許証番号 │ │
│ │ │ │
│ │ [ 許可 ] [ 拒否 ] │ │
│ └─────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
ポイント:
- レンタカー会社は住所を必要としない(契約時に別途取得するため)
- 太郎さんは必要な情報だけを開示
- 検証者(レンタカー会社)ごとに開示する情報を変えられる
第4章: もしスマホを失くしたら
太郎さんがスマホを失くしてしまいました。
┌─────────────────────────────────────────────────────────────┐
│ 太郎さんの対応 │
│ │
│ 1. 公安委員会のウェブサイトにアクセス │
│ (別のデバイスから) │
│ │
│ 2. 本人確認後、デジタル免許証の失効を申請 │
│ │
│ [公安委員会のシステム] │
│ ┌─────────────────────────────────────────┐ │
│ │ │ │
│ │ デジタル運転免許証を失効しますか? │ │
│ │ │ │
│ │ 対象: 山田太郎 │ │
│ │ 発行日: 2024-03-15 │ │
│ │ │ │
│ │ ⚠️ 失効後は再発行が必要です │ │
│ │ │ │
│ │ [ 失効する ] [ キャンセル ] │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 3. 失効完了 │
│ → 古い VC は検証時に「無効」と判定される │
│ │
│ 4. 新しいスマホで再発行 │
│ │
└─────────────────────────────────────────────────────────────┘
失効の仕組み:
失効リスト(Status List):
公安委員会が管理するリスト
┌────────────────────────────────────────────┐
│ 免許証ID │ 状態 │
├────────────┼────────────────────────────────┤
│ ... │ 有効 │
│ 太郎のID │ 失効 ← 追加された! │
│ ... │ 有効 │
└────────────────────────────────────────────┘
検証時:
1. VC の署名を検証 → OK
2. 失効リストを確認 → 失効している!
3. 結果: 無効
ストーリー2: 花子さんの大学卒業証明書
登場人物
- 花子さん: 就職活動中の大学4年生
- ○○大学: 花子さんの大学
- △△株式会社: 花子さんが応募した会社
第1章: 卒業証明書の発行
┌─────────────────────────────────────────────────────────────┐
│ 大学の証明書発行システム │
│ │
│ 花子さん: 「卒業証明書を発行してください」 │
│ │
│ システム: 「デジタル証明書(VC)で発行できます」 │
│ │
│ [花子さんのスマホ] │
│ ┌─────────────────────────────────────────┐ │
│ │ 🆔 Wallet │ │
│ │ │ │
│ │ 📜 卒業証明書 │ │
│ │ │ │
│ │ 発行者: ○○大学 │ │
│ │ 氏名: 田中花子 │ │
│ │ 学部: 経済学部 │ │
│ │ 学科: 経済学科 │ │
│ │ 卒業日: 2024-03-25 │ │
│ │ 学位: 学士(経済学) │ │
│ │ │ │
│ │ ✅ 大学のデジタル署名付き │ │
│ └─────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
第2章: 就職活動での提出
┌─────────────────────────────────────────────────────────────┐
│ △△株式会社の採用サイト │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ 最終面接書類の提出 │ │
│ │ │ │
│ │ 以下の書類を提出してください: │ │
│ │ ☑ 履歴書(アップロード済み) │ │
│ │ ☐ 卒業証明書 │ │
│ │ │ │
│ │ 卒業証明書の提出方法: │ │
│ │ ○ PDF をアップロード │ │
│ │ ● デジタル証明書(VC)を提示 ← 選択 │ │
│ │ │ │
│ │ [ QRコードを表示 ] │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 花子さん: スマホで QR コードを読み取り │
│ │
│ [花子さんのスマホ] │
│ ┌─────────────────────────────────────────┐ │
│ │ △△株式会社が以下を要求しています: │ │
│ │ │ │
│ │ ✓ 大学名 │ │
│ │ ✓ 学部・学科 │ │
│ │ ✓ 卒業年月 │ │
│ │ ✓ 学位 │ │
│ │ │ │
│ │ 以下は開示しません: │ │
│ │ ✗ 学籍番号 │ │
│ │ ✗ 成績(GPA) │ │
│ │ │ │
│ │ [ 許可 ] [ 拒否 ] │ │
│ └─────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
従来の方式との比較:
| 項目 | 従来(紙の証明書) | VC |
|---|---|---|
| 発行 | 大学窓口で申請、数日待つ | 即時発行 |
| 費用 | 有料(数百円) | 無料または低コスト |
| 提出 | 郵送または PDF | スマホから即時提出 |
| 検証 | 企業が大学に問い合わせ | デジタル署名で即時検証 |
| 偽造リスク | あり | 数学的に不可能 |
第3章: 企業側の検証
┌─────────────────────────────────────────────────────────────┐
│ △△株式会社の採用システム │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ 田中花子さんの卒業証明書 │ │
│ │ │ │
│ │ ✅ 検証完了 │ │
│ │ │ │
│ │ 発行者: ○○大学 │ │
│ │ 署名: ✅ 有効(○○大学の公開鍵で検証) │ │
│ │ 発行日: 2024-03-25 │ │
│ │ 失効: ✅ されていない │ │
│ │ │ │
│ │ 内容: │ │
│ │ 大学名: ○○大学 │ │
│ │ 学部: 経済学部 │ │
│ │ 学科: 経済学科 │ │
│ │ 卒業日: 2024-03-25 │ │
│ │ 学位: 学士(経済学) │ │
│ │ │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 人事担当: 「大学に問い合わせなくても本物と確認できた!」 │
│ │
└─────────────────────────────────────────────────────────────┘
ストーリー3: 健一さんのオンライン銀行口座開設
本人確認(KYC)での VC 活用
┌─────────────────────────────────────────────────────────────┐
│ オンライン銀行の口座開設 │
│ │
│ 従来の方法: │
│ ┌─────────────────────────────────────────┐ │
│ │ 1. 免許証の写真をアップロード │ │
│ │ 2. 自撮り写真を撮影 │ │
│ │ 3. 銀行が目視で照合(数日かかる) │ │
│ │ 4. 問題があれば再提出依頼 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ VC を使った方法: │
│ ┌─────────────────────────────────────────┐ │
│ │ 1. スマホで VC を提示 │ │
│ │ 2. 即時検証・完了 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 健一さん: 「5分で口座開設できた!」 │
│ │
└─────────────────────────────────────────────────────────────┘
銀行が確認すること:
VC から得られる情報:
✓ 氏名: 本人確認に必要
✓ 住所: 本人確認に必要
✓ 生年月日: 年齢確認に必要
VC の検証:
✓ 発行者の署名が有効
✓ 発行者が信頼できる機関(公安委員会)
✓ 失効していない
✓ 有効期限内
→ 銀行の KYC 要件を満たす!
まとめ: VC がもたらす変化
ユーザー(保持者)のメリット
| 従来 | VC |
|---|---|
| 証明書ごとに物理的な書類が必要 | スマホ1つで全て管理 |
| 全ての情報を見せる必要がある | 必要な情報だけ開示 |
| 発行に時間がかかる | 即時発行 |
| 郵送や窓口提出 | スマホから即時提出 |
| 紛失したら再発行 | 失効+再発行が即時 |
検証者(企業・店舗)のメリット
| 従来 | VC |
|---|---|
| 目視確 認(偽造リスク) | デジタル署名で確実 |
| 発行元に問い合わせ | 問い合わせ不要 |
| 時間がかかる | 即時検証 |
| 紙の保管が必要 | デジタルで管理 |
発行者(政府・大学・企業)のメリット
| 従来 | VC |
|---|---|
| 照会対応の負担 | 照会不要 |
| 偽造される可能性 | 偽造不可能 |
| 紙・印刷コスト | デジタルで低コスト |
次のステップ
| ドキュメント | 内容 |
|---|---|
| VC Data Model | VC の技術的な構造 |
| DID | 分散型識別子の仕組み |
| VC フォーマット比較 | JWT, SD-JWT, mdoc の違い |
| 用語集 | 専門用語の解説 |