Skip to Content
はじめにW3C VC仕様

W3C VC仕様

W3C Verifiable Credentials Data Model仕様の概要と、VeriCerts Zeroでの実装について説明します。

Verifiable Credentials仕様とは

Verifiable Credentials(VC)は、W3Cが策定した検証可能な資格情報の国際標準仕様です。デジタル証明書の発行・保持・検証のための相互運用可能なフォーマットを定義しています。

VCの基本構造

主要なプロパティ

プロパティ必須説明
@contextJSON-LDコンテキスト
type資格情報の種類(VerifiableCredential必須)
issuer発行者(DIDまたはオブジェクト)
credentialSubject資格情報の主体と主張内容
validFrom-有効開始日時
validUntil-有効終了日時
credentialStatus-失効確認用情報

トラストモデル

VCエコシステムには3つの主要な役割があります:

役割説明
Issuer(発行者)VCを発行する組織
Holder(保持者)VCを保持し、必要に応じて提示する主体
Verifier(検証者)提示されたVCを検証する主体
Issuer → VC発行 → Holder → VP提示 → Verifier

VeriCerts Zeroでの実装

対応VC形式

VeriCerts Zeroでは、以下の2つのVC形式に対応しています:

形式標準識別子特徴
W3C SD-JWTW3C VCDM 2.0vc+sd-jwtW3Cがアイデンティティ標準化のために策定。セマンティックWebとの連携を重視
IETF SD-JWTRFC 9396dc+sd-jwtIETFがセキュリティトークン標準化の一環として策定。OAuth/OIDC等との親和性が高い

両形式ともSD-JWT(Selective Disclosure JWT)を採用しており、選択的開示に対応しています。

Note: IETF(Internet Engineering Task Force)は、HTTP、TCP/IP、TLSなどインターネットの基盤技術を標準化している国際団体です。

対応署名アルゴリズム

アルゴリズム説明
EdDSA (Ed25519)推奨。高速で安全な楕円曲線署名
ES256K (secp256k1)Ethereum等のブロックチェーン連携用

VCドキュメントの例

以下はVeriCerts Zeroで生成されるVC(IETF SD-JWT形式)の例です:

{ "iss": "did:web:zero.vericerts.io:org:abc123", "sub": "did:key:z6MkrHKzgsahxBLyNAbLQyB1pcWNYC9GmywiWPgkrvntAZcj", "iat": 1704067200, "exp": 1735689600, "vct": "urn:vericerts:system:certificate:v1", "cnf": { "kid": "did:key:z6MkrHKzgsahxBLyNAbLQyB1pcWNYC9GmywiWPgkrvntAZcj#keys-1" }, "name": "山田 太郎", "certificate_type": "資格証明書", "_sd": ["hash1", "hash2"], "_sd_alg": "sha-256" }
フィールド説明
iss発行者のDID
sub保持者のDID
iat発行日時(Unix timestamp)
exp有効期限(Unix timestamp)
vctVC Type(資格情報の種類)
cnfKey Binding用の公開鍵情報
_sd選択開示フィールドのハッシュ配列
_sd_algハッシュアルゴリズム(sha-256)

選択的開示(Selective Disclosure)

SD-JWTでは、VCの一部のフィールドのみを開示できます。開示されないフィールドはハッシュ化され、検証者には内容が見えません。

メリット:

  • プライバシー保護:必要な情報のみを開示
  • 最小限の情報開示:例えば年齢確認の際、学生証やパスポートでは住所など全ての個人情報を見せる必要があったが、VCなら生年月日のみを提示できる

VP(Verifiable Presentation)

Holderが検証者にVCを提示する際は、VP(Verifiable Presentation)を使用します。

VCとVPの違い

項目VCVP
作成者Issuer(発行者)Holder(保持者)
受取人HolderVerifier(検証者)
有効期間長期(数ヶ月〜数年)短期(数分〜数時間)
内容資格情報の主張VCを包んで提示用にパッケージ化
目的資格・属性の証明特定の検証者への安全な提示

VPはHolder自身が作成し、検証者に対して「このVCを持っているのは確かに自分」であることを証明します。リプレイ攻撃対策として、特定の検証者・特定の時点でのみ有効となるよう設計されています。

Combined Format

VeriCerts ZeroではRFC 9396準拠のCombined Formatを採用しています:

<SD-JWT>~<disclosure1>~<disclosure2>~...~<Key Binding JWT>
要素説明
SD-JWT署名済みのVC本体(ハッシュ化されたクレームを含む)
Disclosures開示するフィールドの値(Base64URLエンコード)
Key Binding JWTHolderの認証・リプレイ攻撃対策(オプション)

失効管理(StatusList2021)

VCは発行後に失効させる必要がある場合があります。例えば、退職した社員の社員証VCや、資格を喪失した場合の資格証明書などです。

VeriCerts Zeroでは、W3Cが策定したStatusList2021を使用してVCの失効状態を管理します。

StatusList2021の仕組み

StatusList2021は、圧縮されたビット配列でVCの状態を効率的に管理します。

StatusList(ビット配列) ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ 0 │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 0 │ ... └───┴───┴───┴───┴───┴───┴───┴───┘ ↑ ↑ ↑ #0 #2(失効) #6(失効) 0 = 有効、1 = 失効または一時停止

各VCにインデックス番号が割り当てられ、そのビット位置の値で状態を判定します。

VCでの記述例

"credentialStatus": { "id": "https://status.vericerts.io/2025/status-list#25", "type": "StatusList2021Entry", "statusPurpose": "revocation", "statusListIndex": 25, "statusListCredential": "https://status.vericerts.io/2025/status-list" }
フィールド説明
statusPurposerevocation(永久失効)または suspension(一時停止・復帰可能)
statusListIndexこのVCに割り当てられたインデックス番号
statusListCredentialステータスリストを取得するURL

StatusList2021のメリット

特徴説明
効率的圧縮ビット配列により、数万件のVCを数KBで管理可能
プライバシー保護ステータスリスト全体を取得するため、どのVCを確認したか特定されにくい
キャッシュ可能ステータスリストをキャッシュして検証を高速化
標準準拠W3C標準仕様に準拠し、相互運用性を確保

VCの検証と確認

VeriCerts Zeroで発行されたSD-JWT VCは、外部ツールで検証・確認できます。

SD-JWT VC Verifier

Paradym SD-JWT VC Tools  は、SD-JWT VCを検証・デコードできるオンラインツールです。

使い方

  1. Paradym SD-JWT VC Tools  にアクセス
  2. SD-JWT VC(Combined Format)を入力欄に貼り付け
  3. デコードされたペイロードとDisclosuresが表示される

確認できる情報

情報説明
HeaderJWTヘッダー(アルゴリズム、タイプ)
PayloadVCの内容(ハッシュ化されたフィールド含む)
Disclosures開示されたフィールドの詳細
Signature署名の検証結果

なぜ重要か

  • 相互運用性の確認: VeriCerts Zeroで発行したVCが国際標準に準拠していることを確認できます
  • デバッグ: VCの内容や選択開示の動作を確認できます
  • 信頼性の証明: 第三者のツールでも検証できることは、標準準拠の証拠となります

関連リンク

Last updated on