SD-JWT: Selective Disclosure JWT
SD-JWT(Selective Disclosure for JWTs)は、JWT に選択的開示機能を追加する IETF 仕様です(RFC 9901)。このドキュメントでは、SD-JWT の仕組みと実装方法を解説します。
第1部: 概要編
SD-JWT とは何か?
SD-JWT は、クレームを選択的に開示できる JWT です。保持者は、検証者に対して必要なクレームのみを開示し、それ以外のクレームを隠すことができます。
通常の JWT:
発行者 ───────────────────────── ────────► 検証者
│
全てのクレームが見える │
- 名前: 山田太郎 │
- 生年月日: 1990-01-01 │
- 住所: 東京都... │
- 運転免許番号: 12345... │
▼
「年齢確認したいだけなのに
全部見えてしまう...」
SD-JWT:
発行者 ────► 保持者 ────► 検証者
│
│ 必要なクレームのみ開示
│ - 年齢: 21歳以上 ✓
│
▼
「必要な情報だけ開示!」
なぜ SD-JWT が必要なのか?
| 課題 | 従来の JWT | SD-JWT |
|---|---|---|
| プライバシー | 全クレームが開示される | 選択的に開示可能 |
| 最小限の開示 | 不可能 | 可能 |
| データ最小化 | GDPR 等に非準拠の恐れ | 準拠可能 |
| ユーザー制御 | なし | 保持者が制御 |
第2部: 詳細編
SD-JWT の構造
SD-JWT は以下の要素で構成されます。
<Issuer-signed JWT>~<Disclosure 1>~<Disclosure 2>~...~<KB-JWT>
各部分:
┌─────────────────────────────────────────────────────────────┐
│ Issuer-signed JWT │
│ 発行者が署名した JWT(クレームはハッシュ化されている) │
└─────────────────────────────────────────────────────────────┘
~
┌─────────────────────────────────────────────────────────────┐
│ Disclosure 1 │
│ 開示するクレームの元データ │
└─────────────────────────────────────────────────────────────┘
~
┌─────────────────────────────────────────────────────────────┐
│ Disclosure 2 │
│ 開示するクレームの元データ │
└─────────────────────────────────────────────────────────────┘
~
┌─────────────────────────────────────────────────────────────┐
│ Key Binding JWT (KB-JWT) - オプション │
│ 保持者が署名した証明 │
└─────────────────────────────────────────────────────────────┘