코인원 CTO Lab 인턴이 영지식증명(Zero-Knowledge Proof)과 그 발전형인 zk-SNARK 를 블록체인 맥락에서 소개한 글이다. 알리바바의 동굴 비유로 개념을 잡고, 만족해야 하는 세 조건과 비상호적 증명으로 넘어간 이유, 실제 블록체인 적용 사례까지 이어진다.
핵심 포인트- 영지식증명은 증명자가 자신이 아는 정보를 공개하지 않으면서 그것을 안다는 사실만 검증자에게 납득시키는 과정이다.
- 만족해야 할 세 조건은 완전성(참이면 정직한 증명자가 납득시킬 수 있다), 건전성(거짓이면 어떤 거짓말로도 납득시킬 수 없다), 영지식성(참·거짓 외에는 아무것도 알 수 없다)이다.
- 동굴 비유식 증명은 증명자와 검증자가 계속 통신해야 하고, 증명이 커질수록 주고받는 메시지와 시간이 늘어 비효율적이다.
- 2013년 등장한 zk-SNARK 는 사전 정의된 함수와 매개 변수로 단 한 번에 검증한다. 비상호성과 간결성이 핵심이다.
- 증명 사이즈와 검증 시간이 증명할 정보의 양과 무관하게 일정하다는 성질이 블록체인 확장성 논의로 이어진다.
상세 정리- 역할 정의: 정보가 참임을 보이는 쪽이 증명자(Prover), 그것을 확인하는 쪽이 검증자(Verifier)다.
- 동굴 비유: 입구에서 두 갈래로 갈렸다가 끝이 마법의 문으로 이어진 동굴에서, 비밀 단어를 아는 사람만 문을 열어 반대편으로 나올 수 있다.
- 한 번의 시행으로는 판정이 안 된다. 지시한 갈래로 나왔더라도 처음부터 그쪽으로 들어갔을 가능성이 남기 때문에, 절차를 여러 번 반복해 알고 있을 확률을 높이는 방식이다.
- 이 과정이 끝나면 검증자는 비밀 단어 자체를 모르는 채로 상대가 그것을 아는지 여부만 확인하게 된다.
- zk-SNARK 의 이름 풀이: zero-knowledge Succinct Non-interactive ARguments of Knowledge 로, 간결하고 비상호적인 지식 논의라는 뜻이다.
- 비상호성: 증명자와 검증자의 온라인 여부와 무관하게 증명·검증이 가능하다.
- 간결성: 증명 사이즈가 작아 1/1000 초 단위에 검증될 정도다.
- 동작 방식: 증명자가 매개 변수와 증인 변수(정보를 증명하는 데 필요한 비밀 입력값)를 증명 함수에 넣어 증명 데이터를 만들면, 검증자는 매개 변수와 그 증명 데이터를 검증 함수에 넣어 유효성만 판별한다.
- 적용 배경: 일반적인 블록체인은 수신자·송신자·전송 금액 같은 거래 내역이 공개·기록되므로 개인정보 보호와 보안 강화를 위해 zk-SNARK 접목 시도가 늘고 있다.
- 사례 ①: 지캐시(Zcash)는 영지식증명으로 익명 거래를 구현해, 거래 내역은 체인에 기록되되 잔고와 송금 금액은 공개되지 않는다.
- 사례 ②: 이더리움은 확장성을 위해 zk-SNARK 도입 계획을 밝혔고, 최대 500 TPS 까지 끌어올리며 스마트 컨트랙트 내부에서 영지식 검증 알고리즘을 돌리는 구상이 알려져 있다.
왜 읽나영지식증명이라는 단어는 들어 봤지만 무엇을 보장하고 왜 zk-SNARK 로 넘어갔는지 모르는 사람에게 비유부터 적용 사례까지 한 번에 잡아 준다.