自己主権型アイデンティティとは
**SSI(Self-Sovereign Identity)**は、個人が自身のデジタルアイデンティティを完全にコントロールする新しいパラダイムです。従来の中央集権的なID管理とは異なり、ユーザーが自分のデータの所有者となり、必要な情報を必要な相手にだけ開示できる仕組みを実現します。
2025年、SSIは理論的な概念から実用的なインフラストラクチャへと進化し、世界中で採用が加速しています。
なぜSSIが必要なのか
現在のアイデンティティ管理の問題
従来のID管理
flowchart TB
subgraph traditional["中央集権型モデル"]
User["ユーザー"]
User --> CompanyA["企業A(データ保管)"]
User --> CompanyB["企業B(データ保管)"]
User --> Gov["政府機関(データ保管)"]
end
subgraph problems["問題点"]
P1["データ漏洩リスク(各所にデータが分散)"]
P2["プライバシーの欠如"]
P3["ベンダーロックイン"]
P4["本人確認の重複コスト"]
end
SSIモデル
flowchart TB
subgraph ssi["自己主権型モデル"]
User2["ユーザー(データ所有)"]
User2 --> Wallet
subgraph Wallet["デジタルウォレット"]
DID["DID(分散型識別子)"]
VC["Verifiable Credentials"]
Key["秘密鍵"]
end
Wallet --> Selective["選択的開示"]
Selective --> Verifier["検証者(必要な情報のみ)"]
end
SSIの3つの柱
| 柱 | 説明 | 技術 |
|---|---|---|
| 分散型識別子 | 中央機関に依存しないID | DID |
| 検証可能な資格情報 | 改ざん不可能な証明書 | Verifiable Credentials |
| デジタルウォレット | ユーザー管理のデータ保管 | Edge Wallet |
DID(Decentralized Identifiers)
DIDの構造
DIDは、W3Cによって標準化された分散型識別子です。従来のURLのように見えますが、中央機関に依存せず、ユーザー自身が生成・管理できます。
DID の形式:
did:method:method-specific-identifier
例:
did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w
did:web:example.com
did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a
DIDメソッドの比較
| メソッド | 基盤 | 特徴 | 用途 |
|---|---|---|---|
| did:ion | Bitcoin L2 | 高い永続性 | 企業・政府 |
| did:web | DNS/HTTPS | 導入容易 | Webサービス |
| did:key | なし(自己完結) | 軽量 | 一時的な用途 |
| did:ethr | Ethereum | スマートコントラクト | DeFi連携 |
| did:cheqd | Cosmos | 支払い機能 | 商用SSI |
DID Document
DIDはDID Documentという文書に解決されます。この文書には、そのDIDに関連する公開鍵、認証方法、サービスエンドポイントなどが含まれます。
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/jws-2020/v1"
],
"id": "did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w",
"verificationMethod": [
{
"id": "#key-1",
"type": "JsonWebKey2020",
"controller": "did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w",
"publicKeyJwk": {
"kty": "EC",
"crv": "secp256k1",
"x": "WfY7Px6AgH6x-_dgAoRbg8weYRJA36ON-gQiFnETrqw",
"y": "IzFx3BUGztK0cyDStiunXbrZYRd8SLWtHW8i2JKoCSU"
}
}
],
"authentication": ["#key-1"],
"assertionMethod": ["#key-1"],
"service": [
{
"id": "#linkedin",
"type": "LinkedDomains",
"serviceEndpoint": "https://www.linkedin.com/in/example"
}
]
}
Verifiable Credentials(検証可能な資格情報)
VCの概念
**Verifiable Credentials(VC)**は、発行者がデジタル署名した資格情報です。学歴証明、免許証、健康診断結果など、あらゆる証明書をデジタル化し、改ざん不可能な形で発行・検証できます。
flowchart TB
Issuer["発行者(Issuer)"]
Issuer -->|"1. VC発行(署名付き)"| Holder
subgraph Holder["保有者(Holder)"]
Wallet2["デジタルウォレット"]
end
Holder -->|"2. VP提示(選択的開示)"| Verifier["検証者(Verifier)"]
Verifier -->|"3. 署名検証"| Trust["信頼確立"]
VCの構造
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"id": "https://example.edu/credentials/3732",
"type": ["VerifiableCredential", "UniversityDegreeCredential"],
"issuer": {
"id": "did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w",
"name": "東京大学"
},
"issuanceDate": "2025-01-15T00:00:00Z",
"expirationDate": "2030-01-15T00:00:00Z",
"credentialSubject": {
"id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"degree": {
"type": "BachelorDegree",
"name": "工学部 情報工学科",
"graduationDate": "2025-03-25"
}
},
"proof": {
"type": "JsonWebSignature2020",
"created": "2025-01-15T00:00:00Z",
"verificationMethod": "did:ion:EiClk...#key-1",
"proofPurpose": "assertionMethod",
"jws": "eyJhbGciOiJFUzI1NksiLCJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdfQ..."
}
}
Verifiable Presentations(VP)
VPは、複数のVCをまとめて提示する仕組みです。ユーザーは必要な情報だけを選択的に開示できます。
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"type": "VerifiablePresentation",
"holder": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"verifiableCredential": [
{
// 大学学位証明(選択的に開示)
},
{
// 運転免許証(年齢のみ開示)
}
],
"proof": {
"type": "JsonWebSignature2020",
"created": "2025-06-15T10:00:00Z",
"challenge": "abc123",
"domain": "example.com",
"proofPurpose": "authentication",
"verificationMethod": "did:key:z6Mkh...#key-1",
"jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..."
}
}
選択的開示とゼロ知識証明
選択的開示(Selective Disclosure)
SSIの重要な機能の一つが選択的開示です。例えば、年齢確認が必要な場合、生年月日全体ではなく「20歳以上である」という事実だけを証明できます。
従来の年齢確認: 運転免許証提示 -> 氏名、住所、生年月日、顔写真…全て開示
SSIでの年齢確認: VP提示 -> 「20歳以上」のみ開示(ゼロ知識証明)
技術的実装:
flowchart TB
subgraph SDJWT["SD-JWT(Selective Disclosure)"]
Format["Header.Payload.Signature~Disclosure1~Disc..."]
subgraph Payload["Payload(ハッシュ化)"]
SD["_sd: hash_of_name, hash_of_address, hash_of_birthdate"]
ISS["iss: did:ion:..."]
IAT["iat: 1704067200"]
end
Selection["開示選択: birthdate のみ開示"]
end
BBS+署名とゼロ知識証明
// BBS+署名を使用した選択的開示の例
import { BbsBlsSignature2020 } from '@mattrglobal/bbs-signatures';
// 発行者:全属性に署名
const credential = await signCredential({
issuer: 'did:ion:issuer...',
subject: {
name: '山田太郎',
birthDate: '1990-05-15',
address: '東京都渋谷区...',
licenseNumber: '123456789'
},
signatureSuite: new BbsBlsSignature2020()
});
// 保有者:一部属性のみ開示
const derivedCredential = await deriveProof({
credential,
revealedAttributes: ['birthDate'], // 生年月日のみ開示
nonce: 'verifier-provided-nonce'
});
// 検証者:開示された属性のみ確認可能
const verified = await verifyProof(derivedCredential);
// verified.credentialSubject = { birthDate: '1990-05-15' }
// 他の属性は暗号学的に隠蔽されている
W3C標準化動向
現在の標準
| 仕様 | ステータス | 説明 |
|---|---|---|
| DID Core 1.0 | W3C勧告 | DIDの基本仕様 |
| VC Data Model 2.0 | W3C勧告 | VCの最新データモデル |
| VC JSON Schema | W3C作業草案 | VCのスキーマ定義 |
| DID Resolution | W3C Note | DIDの解決プロトコル |
2025年の標準化進展
timeline
title 2025年 W3C標準化ロードマップ
Q1 : VC Data Model 2.0 正式勧告
: JSON-LD と JSON の両方をサポート
: SD-JWT 形式の標準化
Q2 : DID Resolution 仕様更新
: キャッシュ戦略の標準化
: Universal Resolver 2.0
Q3 : VC Status List 2025
: 効率的な失効確認
: プライバシー保護型ステータス
Q4 : Trust Framework 相互運用性
: eIDAS 2.0 との整合
: グローバル信頼ネットワーク
実装例
Microsoft ION
**ION(Identity Overlay Network)**は、Microsoftが開発したBitcoinのLayer 2上で動作するDIDネットワークです。
flowchart TB
subgraph ION["ION Node"]
IPFS["IPFS(データ保管)"]
MongoDB["MongoDB(インデックス)"]
IPFS --> Bitcoin
MongoDB --> Bitcoin
Bitcoin["Bitcoin Network(アンカリング・永続性)"]
end
特徴:
- 1秒あたり10,000以上のDID操作
- 分散型・検閲耐性
- オープンソース
// ION SDK を使用したDID作成
import { anchor, DID, generateKeyPair } from '@decentralized-identity/ion-tools';
async function createIONDID() {
// キーペア生成
const authKey = await generateKeyPair('secp256k1');
// DID作成リクエスト
const didRequest = {
content: {
publicKeys: [
{
id: 'auth-key',
type: 'EcdsaSecp256k1VerificationKey2019',
publicKeyJwk: authKey.publicJwk,
purposes: ['authentication', 'assertionMethod']
}
],
services: [
{
id: 'profile',
type: 'LinkedDomains',
serviceEndpoint: 'https://example.com/.well-known/did.json'
}
]
}
};
// DIDをBitcoinにアンカリング
const anchorResult = await anchor(didRequest);
console.log('DID created:', anchorResult.did);
console.log('Long-form DID:', anchorResult.longFormDid);
return {
did: anchorResult.did,
privateKey: authKey.privateJwk
};
}
EU eIDAS 2.0とEUDI Wallet
EUでは、eIDAS 2.0規制に基づき、全加盟国で利用可能なデジタルアイデンティティウォレットの導入が進んでいます。
flowchart TB
subgraph EUDI["EU Digital Identity Wallet"]
PID["国民ID(PID)"]
MDL["運転免許証(Mobile Driving License)"]
Health["健康保険証"]
Education["学歴証明(ELM/EDCI)"]
Trust["認定された信頼サービス(Qualified Electronic Signatures, Seals)"]
end
導入スケジュール:
timeline
title EUDI Wallet 導入スケジュール
2024年 : ARF (Architecture Reference Framework) 確定
2025年 : パイロットプログラム(Large Scale Pilots)
2026年 : EU全加盟国での利用開始
2027年 : 民間サービスでの対応義務化
日本のデジタルアイデンティティ動向
日本のSSI関連動向(2025年):
マイナンバーカード x SSI:
- デジタル庁によるDID/VC実証実験
- マイナポータルからのVC発行検討
- 民間認証基盤との連携
金融分野:
- 銀行間本人確認のVC化
- オープンバンキングでのDID活用
- FATF対応のSSIベースKYC
教育分野:
- 大学学位のVC発行開始
- オープンバッジ2.0との統合
- 生涯学習記録のポータビリティ
医療分野:
- 電子処方箋のVC化実験
- ワクチン接種証明の国際相互運用
- PHR(Personal Health Record)連携
実装フレームワーク
Veramo
Veramoは、DIDとVCを扱うためのモジュラーなJavaScriptフレームワークです。
import { createAgent, IResolver, IKeyManager, IDataStore } from '@veramo/core';
import { DIDManager } from '@veramo/did-manager';
import { CredentialPlugin } from '@veramo/credential-w3c';
import { KeyManager } from '@veramo/key-manager';
import { DIDResolverPlugin } from '@veramo/did-resolver';
import { Resolver } from 'did-resolver';
import { getResolver as ionResolver } from '@decentralized-identity/ion-did-resolver';
import { getResolver as webResolver } from 'web-did-resolver';
// エージェント作成
const agent = createAgent<IResolver & IKeyManager & IDataStore>({
plugins: [
new KeyManager({
store: new KeyStore(),
kms: {
local: new KeyManagementSystem()
}
}),
new DIDManager({
store: new DIDStore(),
defaultProvider: 'did:ion',
providers: {
'did:ion': new IonDIDProvider(),
'did:web': new WebDIDProvider()
}
}),
new DIDResolverPlugin({
resolver: new Resolver({
...ionResolver(),
...webResolver()
})
}),
new CredentialPlugin()
]
});
// VC発行
async function issueCredential() {
const issuerDID = await agent.didManagerCreate({ provider: 'did:ion' });
const credential = await agent.createVerifiableCredential({
credential: {
issuer: issuerDID.did,
credentialSubject: {
id: 'did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK',
certification: {
type: 'ProfessionalCertification',
name: '情報処理安全確保支援士',
issueDate: '2025-04-01'
}
}
},
proofFormat: 'jwt'
});
return credential;
}
// VC検証
async function verifyCredential(credential: string) {
const result = await agent.verifyCredential({ credential });
return {
valid: result.verified,
issuer: result.issuer,
subject: result.credentialSubject,
expirationDate: result.expirationDate
};
}
Walt.id SSI Kit
// Walt.id SSI Kit(Kotlin)
import id.walt.credentials.w3c.VerifiableCredential
import id.walt.credentials.w3c.builder.W3CCredentialBuilder
import id.walt.crypto.keys.jwk.JWKKey
import id.walt.did.dids.DidService
suspend fun createAndIssueCredential() {
// DID作成
val issuerKey = JWKKey.generate(KeyType.Ed25519)
val issuerDid = DidService.registerByKey("key", issuerKey)
// VC構築
val credential = W3CCredentialBuilder()
.setIssuerDid(issuerDid.did)
.setSubjectId("did:key:z6Mkh...")
.addType("EmploymentCredential")
.addContext("https://example.org/employment/v1")
.setCredentialSubject(mapOf(
"employeeId" to "EMP-2025-001",
"position" to "Senior Software Engineer",
"department" to "Engineering",
"startDate" to "2025-01-15"
))
.setIssuanceDate(Instant.now())
.setExpirationDate(Instant.now().plus(365, ChronoUnit.DAYS))
.build()
// 署名
val signedCredential = credential.sign(issuerKey)
println("Issued VC: ${signedCredential.toJson()}")
}
2025年の採用状況
グローバル採用統計
| 地域 | SSI導入率 | 主な用途 |
|---|---|---|
| EU | 45% | eIDAS 2.0準拠ID |
| 北米 | 35% | 企業認証・教育 |
| アジア太平洋 | 28% | 金融KYC・政府ID |
| 日本 | 22% | 実証実験段階 |
主要な導入事例
2025年 SSI導入事例:
1. 欧州連合 EUDI Wallet
- 2.7億人のEU市民が対象
- 政府発行IDのデジタル化
- 民間サービスでの認証統一
2. カナダ BC州 OrgBook
- 法人登記のVC化
- B2B取引での即時検証
- 700,000以上の組織がVC発行済み
3. ドイツ ID Wallet
- 運転免許証のデジタル化
- 銀行口座開設での利用
- ヘルスケアサービス連携
4. 韓国 DID Alliance
- 金融機関間の本人確認共有
- 通信キャリアとの連携
- 1,500万ユーザー突破
5. シンガポール SGFinDex
- 金融データのSSI連携
- 政府・民間サービス統合
- Singpass連携
セキュリティとプライバシー
SSIのセキュリティモデル
flowchart TB
subgraph App["アプリケーション層"]
A1["ウォレットセキュリティ"]
A2["生体認証・PIN"]
end
subgraph Protocol["プロトコル層"]
P1["DIDComm(暗号化通信)"]
P2["チャレンジ・レスポンス"]
end
subgraph Crypto["暗号層"]
C1["ECDSA/EdDSA署名"]
C2["BBS+(選択的開示)"]
C3["ゼロ知識証明"]
end
subgraph Foundation["基盤層"]
F1["ブロックチェーン(改ざん耐性)"]
F2["分散型PKI"]
F3["信頼アンカー"]
end
App --> Protocol --> Crypto --> Foundation
失効管理
// VC失効確認の実装例
import { StatusList2021 } from '@digitalbazaar/vc-status-list';
// 発行者:失効リスト管理
async function revokeCredential(credentialIndex: number) {
const statusList = await StatusList2021.load({
url: 'https://issuer.example.com/status/1'
});
// 特定のインデックスを失効
statusList.setStatus(credentialIndex, true);
// 更新された失効リストを公開
await statusList.publish();
}
// 検証者:失効確認
async function checkRevocationStatus(credential: any): Promise<boolean> {
const statusEntry = credential.credentialStatus;
if (statusEntry.type === 'StatusList2021Entry') {
const statusList = await fetch(statusEntry.statusListCredential)
.then(r => r.json());
const isRevoked = await StatusList2021.checkStatus({
statusListCredential: statusList,
index: statusEntry.statusListIndex
});
return !isRevoked; // trueなら有効
}
return true;
}
課題と今後の展望
現在の課題
SSI普及の課題:
1. 相互運用性
- 異なるDIDメソッド間の互換性
- ウォレット間のVC移行
- 国境を越えた信頼確立
2. ユーザー体験
- 秘密鍵管理の複雑さ
- リカバリー手順の標準化
- 一般ユーザーへの教育
3. 規制対応
- GDPR「忘れられる権利」との整合
- 法的効力の確立
- 監査証跡の要件
4. スケーラビリティ
- 大量のDID解決コスト
- オフライン検証
- リアルタイム失効確認
2026年以降の展望
timeline
title SSI ロードマップ
2026年 : EUDI Wallet 全EU展開
: 日本でのVC実運用開始
: グローバル信頼フレームワーク確立
2027年 : パスポートのデジタル化
: クロスボーダー認証の標準化
: AIエージェントのDID認証
2028年以降 : Web3/メタバースでの標準ID
: IoTデバイスのDID認証
: 完全なパスワードレス社会
まとめ
2025年、**SSI(自己主権型アイデンティティ)**は実験段階から実用段階へと移行しました。W3CによるDIDとVerifiable Credentialsの標準化、EUのeIDAS 2.0規制、そしてMicrosoft IONをはじめとする実装の成熟により、ユーザーが自身のデジタルアイデンティティを完全にコントロールする未来が現実のものとなりつつあります。
選択的開示やゼロ知識証明によるプライバシー保護、ブロックチェーンによる改ざん耐性、そして分散型アーキテクチャによるベンダーロックインの解消は、従来の中央集権型ID管理の問題を根本から解決します。
今後、パスキーとの統合、AIエージェント認証、クロスボーダー認証の実現により、SSIはデジタル社会の基盤インフラストラクチャとして不可欠な存在となるでしょう。
← 一覧に戻る