Skip to content

Commit ea4fdb0

Browse files
committed
Refactor: Update credential formats comparison (JSON-LD BBS+, SD-JWT, ISO mDoc)
1 parent a8af708 commit ea4fdb0

1 file changed

Lines changed: 82 additions & 80 deletions

File tree

src/dt/credential_formats.md

Lines changed: 82 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
## 개요
44

5-
본 문서는 디지털 자격증명 시스템에서 사용되는 주요 프라이버시 보존 기술들을 비교 분석한다. BBS+ 서명, CL-Signature, Holder Binding, 그리고 SD-JWT의 특성과 차이점을 다룬다.
5+
본 문서는 디지털 자격증명 시스템에서 사용되는 주요 프라이버시 보존 기술들을 비교 분석한다. JSON-LD (BBS+), SD-JWT, 그리고 ISO mDoc의 특성과 차이점을 다룬다.
66

77
---
88

9-
## 1. BBS+ 서명
9+
## 1. JSON-LD (BBS+)
1010

1111
### 1.1 정의
1212

13-
BBS+는 페어링 기반 암호학을 활용한 디지털 서명 방식으로, 프라이버시 보존 자격증명(Privacy-Preserving Credentials) 분야에서 널리 사용된다.
13+
JSON-LD(JSON for Linking Data)는 연결된 데이터를 표현하기 위한 표준 포맷이다. 여기에 **BBS+ 서명**을 결합하면 강력한 프라이버시 기능을 제공하는 자격증명을 구현할 수 있다. BBS+는 페어링 기반 암호학을 활용한 디지털 서명 방식이다.
1414

1515
### 1.2 핵심 프라이버시 특성
1616

@@ -22,7 +22,7 @@ BBS+는 페어링 기반 암호학을 활용한 디지털 서명 방식으로,
2222

2323
### 1.3 Blind Signature와의 관계
2424

25-
BBS+ 자체는 전통적인 Blind Signature 방식이 아니다. 그러나 Link Secret과 결합하면 유사한 프라이버시 효과를 달성한다.
25+
BBS+ 자체는 전통적인 Blind Signature 방식이 아니다. 그러나 **Link Secret** 결합하면 유사한 프라이버시 효과를 달성한다.
2626

2727
| 구분 | 순수 BBS+ (Link Secret 없음) | BBS+ + Link Secret |
2828
|------|------------------------------|-------------------|
@@ -41,51 +41,17 @@ BBS+ 자체는 전통적인 Blind Signature 방식이 아니다. 그러나 Link
4141

4242
---
4343

44-
## 2. CL-Signature
44+
## 2. Holder Binding
4545

4646
### 2.1 정의
4747

48-
2001년 Jan Camenisch와 Anna Lysyanskaya가 제안한 서명 방식이다. RSA 기반의 특수 서명 알고리즘으로, 익명 자격증명 시스템을 위해 설계되었다.
49-
50-
### 2.2 수학적 기반
51-
52-
Strong RSA 가정에 기반하며, 서명 구조는 다음과 같다:
53-
54-
```
55-
A = (a₀ · a₁^m₁ · a₂^m₂ · ... · aₙ^mₙ · v^vₑ)^(1/e) mod n
56-
```
57-
58-
여기서 m₁, m₂, ..., mₙ은 서명될 속성들이고, e는 소수 지수이다.
59-
60-
### 2.3 핵심 특성
61-
62-
- **다중 메시지 서명**: 여러 속성을 하나의 서명으로 묶을 수 있음
63-
- **선택적 공개**: 서명된 속성 중 일부만 공개하면서 서명 유효성 증명 가능
64-
- **술어 증명 (Predicate Proof)**: 값 자체를 공개하지 않고 조건 증명 (예: "나이 ≥ 19")
65-
- **비연결성**: 동일 자격증명의 반복 사용 추적 불가
66-
67-
---
68-
69-
## 3. Holder Binding
70-
71-
### 3.1 정의
72-
7348
자격증명이 정당한 소유자에게 귀속되어 있음을 증명하는 메커니즘이다. 특정 알고리즘이 아니라 보안 요구사항이자 기능적 개념이다.
7449

75-
### 3.2 CL-Signature/BBS+와의 관계
76-
77-
| 구분 | CL-Signature / BBS+ | Holder Binding |
78-
|------|---------------------|----------------|
79-
| 본질 | 암호학적 서명 스킴 | 보안 메커니즘 |
80-
| 목적 | 선택적 공개, 영지식 증명 | 자격증명 도용 방지 |
81-
| 계층 | 암호 프리미티브 | 프로토콜/응용 계층 |
82-
| 관계 | Holder Binding 구현 기반 제공 | 서명 스킴 위에 구현됨 |
83-
84-
### 3.3 구현 방식
50+
### 2.2 구현 방식
8551

8652
#### Link Secret (Master Secret) 방식
8753

88-
CL-Signature와 BBS+에서 주로 사용하는 방식이다.
54+
JSON-LD (BBS+) 환경에서 주로 사용하는 방식이다.
8955

9056
**발급 과정:**
9157
1. Holder가 비밀값 s(link secret)를 생성
@@ -101,7 +67,7 @@ CL-Signature와 BBS+에서 주로 사용하는 방식이다.
10167

10268
#### Key Binding 방식
10369

104-
Holder의 개인키와 자격증명을 연결하는 방식이다.
70+
SD-JWT 등에서 사용하는 방식으로, Holder의 개인키와 자격증명을 연결한다.
10571

10672
**발급 과정:**
10773
1. Holder가 공개키 PK를 Issuer에게 제공
@@ -115,19 +81,18 @@ Holder의 개인키와 자격증명을 연결하는 방식이다.
11581

11682
---
11783

118-
## 4. Link Secret과 관련 암호 기술
84+
## 3. Link Secret과 관련 암호 기술
11985

120-
### 4.1 사용되는 알고리즘
86+
### 3.1 사용되는 알고리즘
12187

12288
Link Secret 구현에는 여러 암호 기술이 조합된다.
12389

12490
| 기술 | 역할 |
12591
|------|------|
12692
| Pedersen Commitment | Link Secret 값을 숨긴 채 바인딩 |
12793
| Schnorr Protocol | "비밀값을 알고 있음"을 영지식으로 증명 |
128-
| ECDSA / EdDSA | Key Binding 방식에서 소유권 증명 |
12994

130-
### 4.2 Pedersen Commitment
95+
### 3.2 Pedersen Commitment
13196

13297
```
13398
C = g^s · h^r mod p
@@ -137,34 +102,21 @@ C = g^s · h^r mod p
137102
- g, h: 공개된 생성자
138103
```
139104

140-
### 4.3 Blinding vs Blinded Signature
141-
142-
커밋먼트의 "블라인딩"과 Blinded Signature는 별개의 기술이다.
143-
144-
| 구분 | 커밋먼트 블라인딩 | Blinded Signature |
145-
|------|------------------|-------------------|
146-
| 목적 | 값을 숨긴 채 바인딩 | 서명자가 메시지 모른 채 서명 |
147-
| 사용 기술 | Pedersen Commitment | RSA Blind Sig, BLS Blind Sig 등 |
148-
| 결과물 | 커밋먼트 값 | 유효한 서명 |
149-
150-
Link Secret 발급 과정에서 사용되는 것은 Pedersen Commitment의 은닉 속성(hiding property)이며, Blinded Signature 프로토콜이 아니다.
151-
152-
### 4.4 BBS+에서의 Pedersen Commitment
105+
### 3.3 BBS+에서의 Pedersen Commitment
153106

154107
타원곡선 버전의 Pedersen Commitment를 사용한다.
155108

156109
```
157-
정수 그룹 (CL-Signature): C = g^s · h^r mod n
158110
타원곡선 그룹 (BBS+): C = s·G + r·H
159111
```
160112

161113
수학적 구조는 동일하고, 연산만 다르다(지수 연산 → 스칼라 곱 연산).
162114

163115
---
164116

165-
## 5. 프라이버시 설계 시 주의사항
117+
## 4. 프라이버시 설계 시 주의사항
166118

167-
### 5.1 DID와 Link Secret의 관계
119+
### 4.1 DID와 Link Secret의 관계
168120

169121
credentialSubject에 DID가 포함되어 공개되면, Link Secret의 프라이버시 효과가 무력화된다.
170122

@@ -174,7 +126,7 @@ credentialSubject에 DID가 포함되어 공개되면, Link Secret의 프라이
174126
| DID 숨김 + Link Secret | 비연결성 확보 |
175127
| DID 없음 + Link Secret | 완전한 익명성 |
176128

177-
### 5.2 올바른 설계 방식
129+
### 4.2 올바른 설계 방식
178130

179131
**방식 1: DID 없이 발급**
180132
```json
@@ -192,24 +144,24 @@ credentialSubject에 DID가 포함되어 공개되면, Link Secret의 프라이
192144

193145
---
194146

195-
## 6. SD-JWT와의 비교
147+
## 5. SD-JWT와의 비교
196148

197-
### 6.1 구조적 차이
149+
### 5.1 구조적 차이
198150

199-
| 구분 | CL-Signature / BBS+ | SD-JWT |
200-
|------|---------------------|--------|
151+
| 구분 | JSON-LD (BBS+) | SD-JWT |
152+
|------|----------------|--------|
201153
| 서명 방식 | 다중 메시지 서명 | 단일 해시 서명 |
202154
| 선택적 공개 | 암호학적 ZKP | 해시 프리이미지 공개 |
203155
| 영지식 증명 | 지원 | 미지원 |
204156

205-
### 6.2 SD-JWT에서 Link Secret이 불가능한 이유
157+
### 5.2 SD-JWT에서 Link Secret이 불가능한 이유
206158

207159
SD-JWT는 속성을 공개하려면 실제 값을 그대로 전달해야 한다.
208160

209161
- **Link Secret 공개 시**: 더 이상 비밀이 아니므로 의미 없음
210162
- **Link Secret 숨김 시**: Holder Binding 증명 불가
211163

212-
### 6.3 SD-JWT의 대안: Key Binding JWT
164+
### 5.3 SD-JWT의 대안: Key Binding JWT
213165

214166
SD-JWT는 Link Secret 대신 Key Binding JWT를 사용한다.
215167

@@ -220,7 +172,7 @@ SD-JWT 구조:
220172

221173
Key Binding JWT는 Holder의 개인키로 서명되어 소유권을 증명한다.
222174

223-
### 6.4 방식 비교
175+
### 5.4 방식 비교
224176

225177
| 구분 | Link Secret (BBS+) | Key Binding (SD-JWT) |
226178
|------|-------------------|----------------------|
@@ -231,31 +183,62 @@ Key Binding JWT는 Holder의 개인키로 서명되어 소유권을 증명한다
231183

232184
---
233185

234-
## 7. 기술 선택 가이드
186+
## 6. ISO mDoc (ISO/IEC 18013-5)
187+
188+
### 6.1 정의
189+
190+
모바일 운전면허증(mDL)을 위해 ISO/IEC에서 표준화한 규격이다. CBOR(Concise Binary Object Representation) 형식을 사용하며, 주로 하드웨어 기반의 보안을 강조한다.
191+
192+
### 6.2 핵심 특성
193+
194+
- **포맷**: CBOR 및 MSO (Mobile Security Object)
195+
- **서명**: COSE (ECDSA, EdDSA 등)
196+
- **선택적 공개**: Device Retrieval 메커니즘을 통해 요청된 데이터만 전송 가능
197+
- **Holder Binding**: Device Binding (Secure Element/TEE 활용)
198+
199+
### 6.3 프라이버시 메커니즘
200+
201+
- **선택적 공개**: Issuer가 데이터 요소별로 Digest를 생성하고 서명(MSO)에 포함한다. 검증 시에는 선택된 데이터와 MSO만 전달하며, 검증자는 해시 값을 대조하여 무결성을 확인한다.
202+
- **비연결성**: 기본적으로 MSO 서명이 정적이어서 추적 가능성이 존재한다. 이를 완화하기 위해 일회용 키나 단기 자격증명(Batch Issuance)을 사용해야 한다.
203+
204+
---
205+
206+
## 7. 기술 비교 요약
207+
208+
| 구분 | JSON-LD (BBS+) | SD-JWT | ISO mDoc |
209+
|------|----------------|--------|----------|
210+
| **기반 기술** | ZKP (Pairing) | Hash + Salt | Hash + CBOR |
211+
| **선택적 공개** | 암호학적 ZKP | 해시 프리이미지 공개 | 해시 대조 (Digest) |
212+
| **Holder Binding** | Link Secret (ZKP) | Key Binding JWT | Device Binding (Challenge-Response) |
213+
| **비연결성** | 매우 높음 (수학적 보장) | 낮음 (공개키 재사용 시) | 보통 (구현 의존적) |
214+
| **주요 용도** | 고도의 프라이버시 VC | 웹 호환성 중시 VC | 신분증(운전면허), 오프라인 검증 |
215+
216+
---
217+
218+
## 8. 기술 선택 가이드
235219

236220
| 요구사항 | 권장 기술 |
237221
|----------|----------|
238-
| 높은 프라이버시 (비연결성 필수) | BBS+ + Link Secret |
239-
| 술어 증명 필요 (예: 나이 ≥ 19) | CL-Signature 또는 BBS+ |
222+
| 높은 프라이버시 (비연결성 필수) | JSON-LD (BBS+) |
223+
| 술어 증명 필요 (예: 나이 ≥ 19) | JSON-LD (BBS+) |
240224
| JWT 생태계 호환성 중시 | SD-JWT + Key Binding |
241-
| 구현 단순성 우선 | SD-JWT |
225+
| 하드웨어 보안 및 오프라인 검증 | ISO mDoc |
242226

243227
---
244228

245-
## 8. 프레임워크별 구현
229+
## 9. 프레임워크별 구현
246230

247231
| 프레임워크 | 서명 방식 | Holder Binding |
248232
|------------|----------|----------------|
249-
| Hyperledger Indy/Aries | CL-Signature | Link Secret |
250233
| W3C VC Data Integrity | BBS+ | Link Secret |
251234
| ISO mDL (모바일 운전면허) | ECDSA/EdDSA | Device Binding |
252235
| SD-JWT VC | ECDSA/EdDSA | Key Binding JWT |
253236

254237
---
255238

256-
## 9. 구현 절차 다이어그램
239+
## 10. 구현 절차 다이어그램
257240

258-
### 9.1 Link Secret Binding (BBS+/CL-Sig) 흐름도
241+
### 10.1 Link Secret Binding (JSON-LD BBS+) 흐름도
259242

260243
```mermaid
261244
sequenceDiagram
@@ -274,7 +257,7 @@ sequenceDiagram
274257
Note over V: 8. Proof 검증
275258
```
276259

277-
### 9.2 Key Binding (SD-JWT) 흐름도
260+
### 10.2 Key Binding (SD-JWT) 흐름도
278261

279262
```mermaid
280263
sequenceDiagram
@@ -293,11 +276,30 @@ sequenceDiagram
293276
Note over V: 8. 서명 검증<br/>(Issuer 서명 & Holder 서명)
294277
```
295278

279+
### 10.3 Device Binding (ISO mDoc) 흐름도
280+
281+
```mermaid
282+
sequenceDiagram
283+
autonumber
284+
participant H as Holder
285+
participant I as Issuer
286+
participant V as Verifier
287+
288+
Note over H: 1. Device Key Pair(PK, SK) 생성<br/>(Secure Element)
289+
H->>I: 2. Public Key(PK) 전송
290+
Note over I: 3. MSO 생성 (속성 Digest + PK)<br/>4. MSO 서명 (Issuer Key)
291+
I->>H: 5. mDoc 발급 (MSO + 속성값)
292+
V->>H: 6. Device Engagement & Challenge
293+
Note over H: 7. 선택적 속성 추출<br/>8. Challenge 서명 (with SK)
294+
H->>V: 9. MSO + 선택 속성 + Device Auth 제출
295+
Note over V: 10. MSO 검증 & Device Auth 검증
296+
```
297+
296298
---
297299

298300
## 참고
299301

300302
- W3C Verifiable Credentials Data Model
301303
- BBS+ Signatures (IETF Draft)
302-
- Hyperledger Indy Documentation
303304
- SD-JWT (IETF RFC 9449)
305+
- ISO/IEC 18013-5 (mDoc)

0 commit comments

Comments
 (0)