Zero Knowledge Proof — 전달 없이 입증하기

비밀번호를 알고 있음을 증명하려면 비밀번호를 입력해야 한다. 하지만 상대방에게 비밀 자체를 건네지 않고도 “나는 이것을 알고 있다”고 증명할 수 있다면? 영지식 증명(Zero Knowledge Proof)은 정보의 전달 없이 지식의 소유를 입증하는 수학적 프로토콜이다.

이 글의 주요 개념
  • 비밀 공유: Shamir의 (k, n) 임계 방식 — k명 이상이 협력하면 비밀 복원, k-1명 이하는 정보 없음
  • 영지식 증명의 3대 성질: 완전성(Completeness), 건전성(Soundness), 영지식성(Zero Knowledge)
  • 그래프 동형 ZKP: 대화형 프로토콜로 매핑 σ의 지식을 증명 — 사칭자 통과 확률 1/2ᵏ
  • No Transfer: 시뮬레이션 논증 — V가 혼자 만든 기록과 실제 기록이 구별 불가능

비밀 공유 (Secret Sharing)

영지식 증명에 앞서, “비밀을 안전하게 분산시키는” 문제를 먼저 살펴보자.

상황: nn명이 비밀 xx를 공유한다. kk명 이상이 협력하면 xx를 복원할 수 있지만, (k1)(k-1)명 이하는 xx에 대한 어떤 정보도 얻을 수 없어야 한다.

Shamir의 (k, n) 임계 방식

Adi Shamir(1979)의 해법은 다항식 보간법(Lagrange Interpolation) 에 기반한다.

구성:

  1. 신뢰 기관(Trusted Party)이 소수 pp 위에서 (k1)(k-1)차 다항식을 만든다
f(y)=ak1yk1++a1y+a0(modp)f(y) = a_{k-1}y^{k-1} + \cdots + a_1 y + a_0 \pmod{p}

여기서 a0=xa_0 = x(비밀), 나머지 계수 a1,,ak1a_1, \ldots, a_{k-1}은 무작위로 선택한다.

  1. ii번째 참여자에게 지분(share) f(i)f(i)를 전달한다.

복원: (k1)(k-1)차 다항식은 kk개의 점으로 유일하게 결정된다. kk명이 자신의 지분을 모으면 라그랑주 보간법으로 ff를 복원하고, f(0)=a0=xf(0) = a_0 = x를 얻는다.

안전성: (k1)(k-1)명은 (k1)(k-1)개의 점만 가지고 있다. (k1)(k-1)차 다항식의 마지막 점이 결정되지 않았으므로, f(0)f(0)Zp\mathbb{Z}_p의 어떤 값이든 될 수 있다. 이것은 정보 이론적 안전성(information-theoretic security) 이다 — 계산 능력과 무관하게 비밀을 알 수 없다.

수치 예시: (3, 5) 방식

p=11p = 11, 비밀 x=7x = 7, k=3k = 3, n=5n = 5로 설정한다.

다항식: f(y)=3y2+2y+7(mod11)f(y) = 3y^2 + 2y + 7 \pmod{11}

지분 배포:

참여자f(i)f(i)계산
P1P_1f(1)=3+2+7=121f(1) = 3 + 2 + 7 = 12 \equiv 1mod11\bmod 11
P2P_2f(2)=12+4+7=231f(2) = 12 + 4 + 7 = 23 \equiv 1mod11\bmod 11
P3P_3f(3)=27+6+7=407f(3) = 27 + 6 + 7 = 40 \equiv 7mod11\bmod 11
P4P_4f(4)=48+8+7=638f(4) = 48 + 8 + 7 = 63 \equiv 8mod11\bmod 11
P5P_5f(5)=75+10+7=924f(5) = 75 + 10 + 7 = 92 \equiv 4mod11\bmod 11

P1P_1, P3P_3, P4P_4가 협력하면 점 (1,1)(1, 1), (3,7)(3, 7), (4,8)(4, 8)로 2차 다항식을 확정하고 f(0)=7f(0) = 7을 복원한다. 반면 P1P_1, P2P_2 두 명만으로는 2차식을 결정할 수 없으므로 f(0)f(0)00부터 1010까지 어떤 값이든 가능하다.

Shamir의 비밀 공유 — (3,5) 임계 방식, ℤ₁₁ 위의 예시

영지식 증명이란

P(증명자)V(검증자) 에게 “나는 비밀 XX를 알고 있다”고 증명하되, XX에 대한 어떤 정보도 V에게 전달하지 않는 프로토콜이다.

가장 직관적인 방법은 XX를 직접 보여주는 것이다. 비밀번호 인증이 이 방식이다 — 비밀번호를 서버에 전송해 “본인임”을 증명한다. 하지만 이 방법은 XX 자체가 노출된다. 서버가 악의적이거나(피싱 사이트), 통신이 도청되면 비밀이 유출된다.

영지식 증명은 이 문제를 해결한다. 프로토콜이 만족해야 할 세 가지 성질이 있다:

완전성 (Completeness): P가 실제로 XX를 알고 있으면, V는 항상 납득한다.

건전성 (Soundness): P가 XX를 모르면, V를 속일 확률이 무시할 수 있을 만큼 작다.

영지식성 (Zero Knowledge): V는 프로토콜을 통해 XX에 대한 어떤 정보도 얻지 못한다. “XX를 안다”는 사실만 알게 된다.

그래프 동형 문제 (Graph Isomorphism)

영지식 증명의 대표적인 예시는 그래프 동형(Graph Isomorphism) 문제다.

두 그래프 G1G_1, G2G_2가 주어졌을 때, 노드 이름만 다르고 구조가 같은지(동형인지) 판별하는 문제다. nn개의 노드가 있으면 가능한 치환이 n!n!개이므로, 나이브하게는 O(n!(n+m))O(n! \cdot (n + m)) 시간이 필요하다.

핵심은 비대칭성에 있다:

  • 검증은 쉽다: 매핑 σ\sigma가 주어지면 O(n+m)O(n + m)에 확인 가능
  • 발견은 어렵다: σ\sigma를 찾는 효율적 알고리즘이 알려져 있지 않다
  • 생성은 쉽다: G1G_1의 노드를 치환하면 동형 그래프 G2G_2를 즉시 만들 수 있다

이 비대칭성이 영지식 증명을 가능하게 한다.

그래프 동형 영지식 증명

P는 G1G2G_1 \cong G_2의 매핑 σ\sigma를 알고 있음을 V에게 증명하되, σ\sigma 자체는 전달하지 않는다.

한 라운드의 진행:

Step 1 (P → V): P가 G1G_1(또는 G2G_2)의 노드를 무작위로 치환해 새로운 그래프 GtG_t를 만들고 V에게 보낸다. P는 σ\sigma를 알고 있으므로 G1GtG_1 \leftrightarrow G_tG2GtG_2 \leftrightarrow G_t 매핑을 모두 계산할 수 있다.

Step 2 (V → P): V가 동전을 던져 ”G1GtG_1 \leftrightarrow G_t 매핑을 보여라” 또는 ”G2GtG_2 \leftrightarrow G_t 매핑을 보여라” 중 하나를 랜덤으로 질문한다.

Step 3 (P → V): P가 요청된 매핑을 제시하고, V가 이를 검증한다.

그래프 동형 영지식 증명 — 대화형 프로토콜

왜 안전한가

건전성: σ\sigma를 모르는 사칭자가 G1G_1에서 GtG_t를 만들었다면, G1GtG_1 \leftrightarrow G_t 매핑은 답할 수 있지만 G2GtG_2 \leftrightarrow G_t 매핑은 답할 수 없다(σ\sigma를 모르므로). 반대로 G2G_2에서 만들었다면 G2G_2 쪽만 답할 수 있다. 어느 쪽이든 V의 질문을 통과할 확률은 1/21/2이다.

kk 라운드를 반복하면 사칭자의 통과 확률은

(12)k\left(\frac{1}{2}\right)^k

k=30k = 30이면 약 10910^{-9}로, 실질적으로 사칭이 불가능하다.

완전성: σ\sigma를 아는 P는 어떤 질문이든 항상 올바른 매핑을 제시할 수 있다.

No Transfer — 영지식성의 증명

가장 미묘한 부분이다. V가 프로토콜을 통해 σ\sigma에 대한 정보를 정말 얻지 못하는가?

시뮬레이션 논증

핵심 아이디어: V가 P 없이도 동일한 확률 분포의 기록(transcript)을 생성할 수 있다면, P로부터 V에게 정보가 전달된 것이 아니다.

V가 혼자 기록을 만드는 방법:

  1. V가 먼저 질문을 결정한다: ”G1GtG_1 \leftrightarrow G_t 매핑을 물어보겠다”
  2. G1G_1을 무작위로 치환해 GtG_t'를 생성한다
  3. G1GtG_1 \leftrightarrow G_t' 매핑을 응답으로 기록한다

이 과정을 kk번 반복하면 기록 TT'가 만들어진다. 실제 대화 기록 TT와 시뮬레이션 기록 TT'확률 분포가 동일하다 — 둘 다 랜덤 치환 그래프, 랜덤 질문, 올바른 매핑으로 구성되며, 어떤 관찰자도 TTTT'를 구별할 수 없다.

No Transfer — 시뮬레이션 논증

따라서 P와의 대화에서 V가 얻는 정보는, V가 혼자서도 만들 수 있는 정보와 같다. P에서 V로의 정보 전달(transfer)은 없다.

쉽게 말하면

영지식성의 핵심은 "V가 P 없이도 똑같은 대화 기록을 혼자 만들 수 있다"는 것이다. 만약 V가 혼자서도 만들 수 있는 기록이라면, P와의 대화에서 새로운 정보를 얻은 것이 아니다. 마치 시험 답안지를 보여주지 않고도 "나는 답을 안다"고 증명하는 것과 같다.

주의: V가 매핑을 알아내는 경우

nn개 노드의 그래프에서 가능한 치환은 n!n!개다. 만약 (n!1)(n! - 1)번의 라운드를 진행해 모든 치환을 다 본다면, V는 G1G_1G2G_2 사이의 매핑을 유추할 수 있다. 하지만 이것은 V가 계산을 통해 스스로 알아낸 것이지, P가 전달한 것이 아니다. 영지식 증명에서 “전달 없음”은 “V가 절대 모른다”가 아니라 “P로부터 추가 정보가 흘러가지 않는다”는 의미다.

실용적 대안: RSA 기반 인증

그래프 동형 ZKP는 이론적으로 우아하지만, 라운드 수가 많고 그래프 크기에 따라 통신량이 급증해 실용적이지 않다.

현실에서는 RSA의 수학적 구조를 활용한 인증이 더 널리 쓰인다.

RSA 기반 지식 증명:

  1. A는 공개키 (n,e)(n, e)를 공개하고 비밀키 dd를 보유
  2. B가 랜덤 메시지 mm을 A에게 보냄
  3. A가 서명 s=mdmodns = m^d \bmod n을 계산해 반환
  4. B가 sem(modn)s^e \equiv m \pmod{n}을 확인

A가 dd를 알지 못하면 유효한 서명을 만들 수 없으므로, 서명 제시가 곧 dd의 지식 증명이 된다. 다만, 이것이 엄밀한 영지식 증명인지에 대한 형식적 보장은 별도의 분석이 필요하다.

은닉 서명 (Blind Signature)

RSA 인증의 확장으로, 서명자가 내용을 보지 않고 서명하는 프로토콜이 있다.

  1. B가 메시지 mm을 자신의 키 eBe_B로 암호화: meBm^{e_B}
  2. A가 암호문에 서명: (meB)dA(m^{e_B})^{d_A}
  3. B가 복호화: ((meB)dA)dB=mdA((m^{e_B})^{d_A})^{d_B} = m^{d_A}

B는 mm에 대한 A의 서명 mdAm^{d_A}를 얻었지만, A는 mm의 내용을 알지 못한다. 이 방식은 전자 투표, 디지털 화폐 등 익명성이 요구되는 시스템에서 활용된다. 단, 일반 RSA 메시지가 은닉 서명 요청으로 위장될 수 있으므로, 실무에서는 메시지에 특정 패턴을 삽입해 구별한다.

핵심 정리
  • Shamir의 비밀 공유는 (k-1)차 다항식의 보간법에 기반한다. k명이면 비밀 복원, (k-1)명 이하는 정보 이론적으로 안전하다.
  • 영지식 증명은 세 성질을 만족한다: 완전성(알면 통과), 건전성(모르면 불통과), 영지식성(정보 전달 없음).
  • 그래프 동형 ZKP에서 사칭자의 통과 확률은 1/2ᵏ이다. 매 라운드 새로운 Gₜ를 생성하므로 이전 라운드의 정보가 누적되지 않는다.
  • 시뮬레이션 논증: V가 P 없이도 동일한 분포의 기록을 만들 수 있으므로, P→V 정보 전달은 없다.
  • RSA 서명은 실용적인 지식 증명으로, 은닉 서명은 서명자가 내용을 모른 채 서명하는 확장이다.
다음 포스트

Before Physics — 논리, 불완전성, 그리고 과학의 기반 — 양자역학과 상대성 이론에 들어가기 전, 논리와 물리학의 차이, 괴델의 불완전성 정리, 오컴의 면도날, 과학적 원리까지 다룬다.

© 2026 XsQuare01. Powered by GitHub Pages.