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** 발급 과정:**
91571 . Holder가 비밀값 s(link secret)를 생성
@@ -101,7 +67,7 @@ CL-Signature와 BBS+에서 주로 사용하는 방식이다.
10167
10268#### Key Binding 방식
10369
104- Holder의 개인키와 자격증명을 연결하는 방식이다 .
70+ SD-JWT 등에서 사용하는 방식으로, Holder의 개인키와 자격증명을 연결한다 .
10571
10672** 발급 과정:**
107731 . 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
12288Link 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```
13398C = 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
169121credentialSubject에 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
207159SD-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
214166SD-JWT는 Link Secret 대신 Key Binding JWT를 사용한다.
215167
@@ -220,7 +172,7 @@ SD-JWT 구조:
220172
221173Key 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
261244sequenceDiagram
@@ -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
280263sequenceDiagram
@@ -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