한양과학기술고등학교

에듀테크 프로젝트 대시보드

영지식 증명 (Zero-Knowledge Proof)

영지식 증명 (Zero-Knowledge Proof)

"나는 비밀번호를 안다"는 것을 비밀번호를 한 글자도 보여주지 않고 상대에게 확신시킬 수 있을까? 성인 인증을 하면서 생년월일도, 이름도 넘기지 않을 수 있을까? 영지식 증명은 "안다는 사실만" 전달한다.

핵심 아이디어 — 증명자(Prover)는 검증자(Verifier)가 무작위로 던지는 도전(challenge)에 매번 올바르게 답한다. 비밀을 진짜로 알면 항상 답할 수 있고, 모르면 매 라운드 운으로 절반만 넘긴다. 라운드를 n번 반복하면 사기꾼이 안 걸릴 확률은 (1/2)ⁿ — 20라운드면 약 100만분의 1.

1. 갖춰야 할 3가지 성질

완전성
Completeness
비밀을 진짜 아는 증명자는 정직한 검증자를 항상 설득할 수 있다.
건전성
Soundness
비밀을 모르는 사기꾼은 아주 낮은 확률로만 검증자를 속인다. 라운드를 늘리면 그 확률은 0에 수렴한다.
영지식성
Zero-Knowledge
검증자는 "증명자가 비밀을 안다"는 사실 외에는 아무것도 못 배운다. 대화 기록을 봐도 비밀을 복원할 수 없다.

2. 알리바바 동굴 — 직접 돌려보기

고리 모양 동굴 안쪽에 마법의 문이 있고, 주문을 외워야 열린다. 증명자 페기는 A/B 중 한 쪽으로 들어가고, 검증자 빅터는 입구에서 기다리다가 무작위로 "A로 나와!" 또는 "B로 나와!"를 외친다.

입구 A B 🚪 마법의 문 (주문 필요) 🧑‍⚖️ 빅터 🧙‍♀️ "A로 나와!"
라운드 0
통과 0
발각 0
사기꾼이 여기까지 안 걸릴 확률 100%
역할을 고르고 「한 라운드 진행」을 눌러 보세요. 빅터의 도전은 매번 동전 던지기입니다.
왜 영지식일까? 빅터가 보는 것은 "페기가 매번 옳은 쪽에서 나왔다"뿐이다. 페기가 어느 쪽으로 처음 들어갔는지, 주문이 무엇인지는 전혀 드러나지 않는다. 심지어 이 장면을 몰래 촬영한 영상조차 페기와 빅터가 미리 짜고 순서를 맞춰 찍으면 똑같이 만들 수 있어서, 제3자에겐 증거가 되지 못한다(시뮬레이션 가능성).

3. 컴퓨터가 쓰는 방식 — 그래프 3색칠

"이 지도를 이웃한 나라끼리 다른 색이 되도록 3색으로 칠할 수 있다"를 칠하는 법은 숨긴 채 증명한다. 증명자는 색을 매번 무작위로 섞고(예: 빨강↔파랑 통째로 교체) 각 꼭짓점을 봉투에 넣어 봉인(커밋)한다. 검증자는 간선 하나를 골라 그 두 봉투만 열게 한다. 두 색이 다르면 통과. 한 번에 간선 하나만 보므로 전체 배색은 절대 노출되지 않고, 색칠이 틀렸다면 매 라운드 걸릴 확률이 있다.

검사한 간선 0
모두 정상 예
「색 섞고 봉인」으로 시작. 봉인 상태에서는 모든 꼭짓점이 회색(=안 보임)입니다.

4. 대화형에서 비대화형으로 (Fiat–Shamir)

위 방식들은 검증자가 실시간으로 도전을 던져야 한다. Fiat–Shamir 변환은 "검증자의 무작위 도전"을 증명자가 지금까지 만든 값들의 해시로 대체한다. 해시는 예측 불가능하므로 증명자가 미리 답을 준비할 수 없고, 그 결과 한 번에 완성되는 증명 파일이 나온다. 누구나 나중에 혼자 검증할 수 있다.

# 대화형: 여러 번 왕복
prover  → commit
verifier→ challenge (무작위 동전)
prover  → response
# ... n 라운드 반복 ...

# 비대화형 (Fiat-Shamir): 왕복 없음
challenge = hash(commit ‖ 공개정보)   # 검증자 대신 해시가 도전을 결정
proof = (commit, response)               # 이 한 덩어리를 아무나 검증

5. 어디에 쓰나

익명 암호화폐Zcash — 송금액과 주소를 숨긴 채 "잔액이 충분하고 이중지불이 아님"만 증명(zk-SNARK).
zk-롤업수천 건의 거래를 오프체인에서 처리하고 "모두 규칙대로 실행됐다"는 작은 증명 하나만 블록체인에 올려 확장.
신원·인증"성인이다", "우리 학교 학생이다"를 생년월일·학번 노출 없이 증명. 비밀번호를 서버에 안 보내는 로그인(PAKE 계열).
규제 보고회사가 장부 원본을 넘기지 않고 "세금 계산이 규칙에 맞다"를 감사기관에 증명.