メインコンテンツまでスキップ

Verifiable Credential スキーマ

*(注:レガシーなHyperledger Indyのスキーマ定義や重いJSON-LD構造は非推奨となり、純粋な**OID4VCI (OpenID for Verifiable Credential Issuance)*仕様が採用されました。)

OID4VCI スキーマ設定 (発行者メタデータ)

Sentra IDは、最新のOID4VCIアーキテクチャで動作します。厳格なオンチェーンのJSON-LDコンテキストのみに依存するのではなく、スキーマは発行者のOIDCメタデータ(credentials_supported)内で定義されます。これにより、動的なレンダリングと柔軟なクレーム(属性)構造が可能になります。

以下は、発行者アプリケーション内で定義されたSentra VCスキーマの設定構造の例です:

{
"id": "schema_emp_001",
"name": "Employee Credential",
"description": "Standard enterprise employee identity credential.",
"type": "id",
"vc_type": "EmployeeCredential",
"version": "1.0.0",
"tenantId": "sentra-corp",
"active": true,
"revocable": true,
"scope": "employee_auth",
"display": {
"logo": "https://cdn.bitgrit.net/sentra/logo.svg",
"color": "#6B3FA0"
},
"claims": [
{ "name": "name", "type": "string", "required": true },
{ "name": "email", "type": "string", "required": true },
{ "name": "department", "type": "string", "required": true },
{ "name": "wallet-id", "type": "string", "required": false }
]
}

JWTベースのVerifiable Credential (jwt_vc_json)

OID4VCIの発行フロー中、Sentra Walletは署名されたJWT (jwt_vc_json) としてクレデンシャルを要求および受信します。JWT内のペイロードはコアとなるW3C構造に密接に従っていますが、モバイルウォレットとの最大限の互換性を確保するために、純粋なOIDC標準クレームを活用しています。

{
"iss": "did:ethr:avalanche:0x123abc456def7890",
"sub": "did:ethr:avalanche:0x098fed765cba3210",
"jti": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"nbf": 1704137004,
"exp": 1735759404,
"vc": {
"type": ["VerifiableCredential", "EmployeeCredential"],
"credentialSubject": {
"name": "John Doe",
"email": "[email protected]",
"department": "Engineering"
}
}
}

主要な技術コンポーネント

  1. DID 解決 (did:ethr:avalanche): すべての識別子(isssub)は、Avalanche C-ChainにデプロイされたEthereum DIDメソッドを介して解決されます。
  2. 失効チェック: 検証アプリケーションは、クレデンシャルのjti (JWT ID) を読み取り、Avalancheの失効レジストリスマートコントラクトをクエリして、クレデンシャルが発行者によって失効としてフラグ付けされていないことを確認します。
  3. 証明の検証: Sentra Walletと検証者は、発行者のDIDドキュメントを介して公開鍵を取得し、標準のOIDC暗号化アルゴリズム(例:ES256KEdDSA)を利用して、JWTヘッダーに添付された暗号署名を検証します。