Digital Credentials API 생태계 및 Issuer 연동 가이드
1. 개요
이 문서는 현재 Digital Credentials API 생태계에서 연동 가능한 Issuer, Wallet, Verifier 플랫폼을 정리하고, ProofPort가 Wallet을 구현할 때 인증서 관리 방법을 설명합니다.
핵심 결론: Wallet(Holder)은 인증서를 "발급"하지 않고, Issuer의 공개된 IACA를 "신뢰"만 하면 됩니다!
2. 현재 연동 가능한 플랫폼
2.1 Google Wallet - 바로 사용 가능! 🎯
지원 지역 (mDL):
- 미국 10개 주: Arizona, California, Colorado, Georgia, Maryland, Arkansas, Iowa, Louisiana, New York, Ohio 등
- 영국: 여권 기반 Digital ID Pass 생성 가능
- EU: 2025년 Q4 파일럿 시작 예정 (독일 Sparkassen-Finanzgruppe)
이미 연동된 파트너:
| 파트너 |
용도 |
| Bumble |
프로필/나이 검증 (ZKP) |
| Amazon |
계정 복구 |
| CVS Health / MyChart by Epic |
온라인 의료 서비스 |
| Uber |
프로필 검증 |
| UK Rail Delivery Group |
Railcard 자격 검증 |
| TSA |
공항 보안 검색 |
Verifier로 연동하는 방법:
┌─────────────────────────────────────────────────────────────────┐
│ Google Wallet Verifier 연동 (인증서 관리 불필요!) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ProofPort App Digital Credentials API Google Wallet │
│ (Verifier) (Holder) │
│ │ │ │
│ │ 1. Request: mso_mdoc │ │
│ │ doctype: org.iso.18013.5.1.mDL │ │
│ │ claims: ["age_over_18"] │ │
│ │ ─────────────────────────────────────────▶ │ │
│ │ │ │
│ │ 2. User Consent (Google Wallet UI) │ │
│ │ │ │
│ │ 3. Response: Signed Credential │ │
│ │ (Google이 서명, IACA 인증서로 검증) │ │
│ │ ◀───────────────────────────────────────── │ │
│ │ │ │
│ ※ 인증서는 Google이 관리, 검증만 하면 됨! │ │
└─────────────────────────────────────────────────────────────────┘
2.2 Apple Wallet - Safari 26부터 지원 (2025.09)
- W3C Digital Credentials API 지원
- org-iso-mdoc 프로토콜만 지원 (OpenID4VP 미지원)
- Apple Digital ID (여권 없이 TSA 통과 가능)
2.3 관리형 Issuer/Verifier 플랫폼
| 플랫폼 |
특징 |
| MATTR |
뉴질랜드 정부 파트너, TrustTech 플랫폼 |
| SpruceID |
캘리포니아 DMV 파트너, NIST mDL 프로젝트 |
| Dock.io |
W3C VC 플랫폼, 인증서 발급/검증 서비스 |
| Idemia |
Iowa, Arkansas mDL 발급, Google Wallet 파트너 |
이들은 Issuer-as-a-Service 또는 Verifier-as-a-Service를 제공하므로, 직접 인증서를 관리하지 않아도 됩니다.
3. Verifiable Credentials로 증명 가능한 것들 (전체 리스트)
3.1 신원 (Identity)
- 운전면허증 (mDL)
- 여권 / 국가 ID
- 나이 검증 (ZKP로 생년월일 없이)
- 주소 증명
- 국적
3.2 교육 (Education)
- 대학 졸업장/학위 - Stanford, MIT 이미 발급 중
- 수료증 / 자격증
- 학점 인정서
- 전문 자격 (의사, 변호사, 엔지니어 등)
- Open Badges 3.0
3.3 고용 (Employment)
- 경력 증명서
- 재직 증명
- 급여 증명
- 배경 조회 결과
- 전문 인증 (AWS, Google Cloud 등)
3.4 의료 (Healthcare)
- NHS Digital Staff Passport - 영국 NHS 사용 중
- 의사 면허
- 예방접종 기록
- 의료보험 증명
- 처방전 자격
3.5 금융 (Finance)
- KYC 인증 완료 증명
- 신용 등급
- 보험 가입 증명
- 계좌 소유 증명
3.6 여행 (Travel)
- Digital Travel Credential (DTC) - Delta Airlines + Aruba 시범 운영
- 항공권 / 탑승권
- 호텔 예약 확인
- 비자 / 입국 허가
3.7 기타
- 회원권
- 이벤트 티켓
- 부동산 소유권
- 차량 등록증
- 배송 추적 증명
4. 인증서 역할별 정리 (매우 중요!)
┌─────────────────────────────────────────────────────────────────────────────────┐
│ 인증서 역할별 정리 │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ 역할 인증서 관리 설명 │
│ ───────────────────────────────────────────────────────────────────────────── │
│ Issuer 생성 & 발급 IACA(Root) + DSC(Signing) 생성/관리 │
│ (발급자) ← 자기 인증서! 예: California DMV, Google 등 │
│ │
│ Wallet 신뢰만! Issuer의 IACA를 Trust Manager에 추가 │
│ (지갑=Holder) ← 남의 인증서 저장! Google이 공개한 IACA 그대로 사용 가능! │
│ │
│ Verifier 신뢰만! Issuer의 IACA로 credential 서명 검증 │
│ (검증자) ← 남의 인증서 저장! VICAL에서 신뢰할 IACA 목록 가져옴 │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
역할별 인증서 필요 여부
| 역할 |
새 인증서 필요? |
설명 |
| Wallet (Holder) |
❌ 불필요 |
Issuer의 IACA를 Trust Manager에 추가만 |
| Verifier (검증) |
⚠️ 선택 |
VICAL 사용 시 불필요, B2B 고객 관리 시 필요 |
| Issuer (발급) |
✅ 필요 |
IACA + DSC 생성 필수 |
5. mDL Trust Chain (신뢰 체인) 구조
5.1 인증서 계층
┌─────────────────────────────────────────────────────────────────────────────────┐
│ mDL Trust Chain 흐름 │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────┐ │
│ │ IACA (Root) │ ← Issuer가 생성 (20년 유효) │
│ │ Self-signed Root CA │ │
│ │ 예: California DMV │ │
│ └───────────┬─────────────┘ │
│ │ 서명 │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ DSC (Leaf) │ ← Issuer가 생성 (457일 유효) │
│ │ Document Signer Cert │ │
│ └───────────┬─────────────┘ │
│ │ 서명 │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ MSO + mDL Data │ ← 실제 credential 데이터 │
│ │ (Mobile Security Obj) │ 이름, 생년월일, 사진 등 │
│ └─────────────────────────┘ │
│ │ │
│ │ 발급 (OpenID4VCI) │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ ProofPort Wallet │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Trust Manager (IACA 저장) │ │ │
│ │ │ ──────────────────────────────────────────────────────────────│ │ │
│ │ │ • California DMV IACA ← Google이 공개한 것 그대로 추가! │ │ │
│ │ │ • Arizona MVD IACA │ │ │
│ │ │ • Maryland MVA IACA 이 인증서들은 Issuer가 만든 것, │ │ │
│ │ │ • Georgia DDS IACA 우리가 만드는 게 아님! │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Document Store (Credential 저장) │ │ │
│ │ │ ──────────────────────────────────────────────────────────────│ │ │
│ │ │ • mDL from California DMV (DSC + MSO + Data) │ │ │
│ │ │ - 이미 Issuer가 서명한 상태로 저장 │ │ │
│ │ │ - Wallet은 저장만! │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
5.2 인증서 설명
| 인증서 |
생성자 |
유효기간 |
용도 |
| IACA |
Issuer (DMV 등) |
최대 20년 |
Root CA, 자체 서명 |
| DSC |
Issuer |
최대 457일 |
mDL 서명용, IACA가 서명 |
| MSO |
Issuer |
credential 유효기간 |
실제 데이터 해시 + 서명 |
5.3 VICAL (Verified Issuer Certificate Authority List)
VICAL은 신뢰할 수 있는 IACA 목록을 중앙에서 관리하는 시스템입니다.
- 미국: **AAMVA (American Association of Motor Vehicle Administrators)**가 관리
- Verifier는 VICAL만 신뢰하면 모든 주의 mDL 검증 가능
- 개별 Issuer와 직접 연동 불필요
Without VICAL:
Verifier ←→ California DMV
Verifier ←→ Arizona MVD
Verifier ←→ Maryland MVA
... (각각 연동 필요)
With VICAL:
Verifier ←→ VICAL (AAMVA) ←→ 모든 주 DMV
(한 번만 연동하면 끝!)
6. Google이 공개하는 IACA 인증서 목록
공식 링크: https://developers.google.com/wallet/identity/verify/supported-issuers-iaca-certs
| 발급 기관 (Issuer) |
IACA 인증서 |
| California DMV |
공개됨 |
| Arizona MVD |
공개됨 |
| Maryland MVA |
공개됨 |
| Colorado DMV |
공개됨 |
| Georgia DDS |
공개됨 |
| Iowa DOT |
공개됨 |
| Arkansas |
공개됨 |
| ... |
... |
이 인증서들을 ProofPort Wallet의 Trust Manager에 추가하면, Google Wallet과 동일한 Issuer를 신뢰할 수 있습니다!
7. 실제 구현 코드
7.1 Trust Manager에 IACA 추가 (Kotlin)
// ProofPort Wallet - Trust Manager 설정
val issuerTrustManager = TrustManagerLocal(
storage = storage,
identifier = "issuer"
)
// Google이 공개한 California DMV IACA 인증서 추가
// ※ 우리가 만드는 게 아니라, Google 사이트에서 다운로드한 것!
val californiaDmvIaca = """
-----BEGIN CERTIFICATE-----
MIICXDCCAeKgAwIBAgIQDnBnKp8... (Google에서 제공)
-----END CERTIFICATE-----
""".trimIndent()
issuerTrustManager.addX509Cert(
certificate = X509Cert.fromPem(californiaDmvIaca),
metadata = TrustMetadata(
displayName = "California DMV",
// 다른 메타데이터
)
)
// 이제 California DMV가 발급한 mDL을 신뢰함!
// Google Wallet과 동일한 신뢰 체인 사용!
7.2 Digital Credentials API 요청 (Web/JS)
// mDL 요청 (age_over_18만 요청)
const request = {
digital: {
requests: [{
protocol: "openid4vp",
data: {
nonce: crypto.randomUUID(),
presentation_definition: {
id: "mDL-request",
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: { mso_mdoc: { alg: ["ES256"] } },
constraints: {
limit_disclosure: "required",
fields: [{
path: ["$['org.iso.18013.5.1']['age_over_18']"],
intent_to_retain: false
}]
}
}]
}
}
}]
}
};
// Digital Credentials API 호출
const credential = await navigator.identity.get(request);
7.3 Zero Knowledge Proof 요청 (Google Wallet)
// ZKP로 나이 검증 (생년월일 노출 없음)
const zkRequest = {
digital: {
requests: [{
protocol: "openid4vp",
data: {
nonce: crypto.randomUUID(),
presentation_definition: {
id: "age-zk-request",
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: {
mso_mdoc_zk: { // ZKP 포맷!
alg: ["ES256"],
zk_system_type: "age_over" // ZKP 시스템 타입
}
},
constraints: {
fields: [{
path: ["$['org.iso.18013.5.1']['age_over_18']"]
}]
}
}]
}
}
}]
}
};
8. ProofPort 입장에서 현실적인 옵션
Option A: Google Wallet Verifier로 시작 (권장) 🚀
장점:
✓ 인증서 관리 불필요 (Google이 IACA 인증서 제공)
✓ ZKP 지원 (나이만 검증, 생년월일 노출 없음)
✓ 이미 수천만 사용자 보유
✓ 문서화 잘 되어있음
단점:
✗ 미국 10개 주 + 영국만 지원
✗ 한국 미지원
Option B: MATTR/SpruceID 플랫폼 사용
장점:
✓ 관리형 서비스 (인증서 관리 대행)
✓ 다양한 Credential 타입 지원
✓ B2B 연동 용이
단점:
✗ 비용 발생
✗ 플랫폼 의존성
Option C: Multipaz SDK로 직접 구현
장점:
✓ 완전한 통제권
✓ B2B 비즈니스 모델 가능 (Trust Manager 활용)
✓ 한국 등 신규 시장 대응 가능
단점:
✗ Verifier 인증서 관리 필요 (B2B 고객용)
✗ Issuer 연동 직접 구현
※ Wallet으로서 Issuer 연동 시에는 Google IACA 그대로 사용 가능!
9. 결론
┌─────────────────────────────────────────────────────────────────────────────────┐
│ │
│ Q: Wallet을 구현하면 새 인증서를 발급/관리해야 하나요? │
│ │
│ A: 아니요! ❌ │
│ │
│ • Wallet(Holder)은 인증서를 "발급"하지 않음 │
│ • Issuer의 공개된 IACA를 Trust Manager에 "추가"만 하면 됨 │
│ • Google이 공개한 IACA 인증서를 그대로 사용 가능! │
│ • Google Wallet과 동일한 Issuer를 신뢰하게 됨 │
│ │
│ 새 인증서가 필요한 경우: │
│ ───────────────────────── │
│ • 우리가 직접 "Issuer"가 될 때 (credential 발급) │
│ • 우리가 "Verifier"로서 B2B 고객을 관리할 때 │
│ (Trust Manager B2B 모델 - 별도 이슈 #27 참조) │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
10. 참고 자료
관련 이슈
Digital Credentials API 생태계 및 Issuer 연동 가이드
1. 개요
이 문서는 현재 Digital Credentials API 생태계에서 연동 가능한 Issuer, Wallet, Verifier 플랫폼을 정리하고, ProofPort가 Wallet을 구현할 때 인증서 관리 방법을 설명합니다.
핵심 결론: Wallet(Holder)은 인증서를 "발급"하지 않고, Issuer의 공개된 IACA를 "신뢰"만 하면 됩니다!
2. 현재 연동 가능한 플랫폼
2.1 Google Wallet - 바로 사용 가능! 🎯
지원 지역 (mDL):
이미 연동된 파트너:
Verifier로 연동하는 방법:
2.2 Apple Wallet - Safari 26부터 지원 (2025.09)
2.3 관리형 Issuer/Verifier 플랫폼
이들은 Issuer-as-a-Service 또는 Verifier-as-a-Service를 제공하므로, 직접 인증서를 관리하지 않아도 됩니다.
3. Verifiable Credentials로 증명 가능한 것들 (전체 리스트)
3.1 신원 (Identity)
3.2 교육 (Education)
3.3 고용 (Employment)
3.4 의료 (Healthcare)
3.5 금융 (Finance)
3.6 여행 (Travel)
3.7 기타
4. 인증서 역할별 정리 (매우 중요!)
역할별 인증서 필요 여부
5. mDL Trust Chain (신뢰 체인) 구조
5.1 인증서 계층
5.2 인증서 설명
5.3 VICAL (Verified Issuer Certificate Authority List)
VICAL은 신뢰할 수 있는 IACA 목록을 중앙에서 관리하는 시스템입니다.
6. Google이 공개하는 IACA 인증서 목록
공식 링크: https://developers.google.com/wallet/identity/verify/supported-issuers-iaca-certs
이 인증서들을 ProofPort Wallet의 Trust Manager에 추가하면, Google Wallet과 동일한 Issuer를 신뢰할 수 있습니다!
7. 실제 구현 코드
7.1 Trust Manager에 IACA 추가 (Kotlin)
7.2 Digital Credentials API 요청 (Web/JS)
7.3 Zero Knowledge Proof 요청 (Google Wallet)
8. ProofPort 입장에서 현실적인 옵션
Option A: Google Wallet Verifier로 시작 (권장) 🚀
Option B: MATTR/SpruceID 플랫폼 사용
Option C: Multipaz SDK로 직접 구현
9. 결론
10. 참고 자료
관련 이슈