Zero-Knowledge Proof - 영지식 증명

Posted by RoadtoS7 on January 26, 2020 · 4 mins read

블록체인에는 보안성이나 확장성 측면에서 보완해야할 점들이 존재한다.
그 중 하나는 퍼블릭 블록체인에서 개인간의 거래 발생 때, 거래에 관한 상세내역이 모두에게 공개된다는 점이고,
또 다른 하나는 계속해서 증가되는 블록체인의 용량이다.

이에 대한 해결방안으로 zk-SNARKs가 등장했는데, zk-SNARKs를 도입하게 되면
거래의 익명성을 보장할 수 있고, 블록체인 데이터를 짧은 해시값으로 압축시켜 저장용량을 줄일 수 있다.

이런 zk-SNARks의 근간이 되는 것이 ZKP이다.

ZKP란?

Zero-Knowledge Proof의 약자로, 한국어로는 영지식 증명이라 부른다.
어떠한 사실을 증명할 때, 증명하고자 하는 것의 참, 거짓 여부를 제외하고는 어떤 정보도 노출하지 않는 것이다.
ex) Peggy가 어떤 비밀번호를 안다고 증명하고자 할 때, 비밀번호가 “Hello”라는 문자열인지, 몇개의 문자로 이루어져 있는지와 같은 정보는 알리지 않고 오직 “비밀번호를 안다”는 사실만 증명하는 것이다.

ZKP의 기반은 Interactive Proof System 이며 이는 증명자와 검증자가 상호간에 메시지를 교환하며 컴퓨팅하는 이론적인 컴퓨팅 모델이다.

ZKP가 성립하기 위해서는 3가지 조건을 만족해야하는데 이에 대해 알아보겠다.

ZKP의 3가지 조건

1st. 완전성(Completeness) 어떤 문장이 참이라면, 정직한 증명인은 정직한 검증인에게 이 사실을 납득시킬 수 있어야 한다.

예를 들어서 위의 예시와 같이 Peggy 가 어떤 비밀번호를 안다고 증명할 때, Peggy가 비밀번호를 안다는 것이 참이라면 실제로 그 사실을 납득시킬 수 있어야 한다는 것이다.

2nd. 건실성(Soundness)
어떤 문장이 거짓이면, 부정직한 증명인이라도 정직한 검증인에게 이 문장이 사실이라고 납득시킬 수 없어야 한다.

Peggy 가 어떤 비밀번호를 안다고 증명할 때, Peggy 가 비밀번호를 사실은 알고 있지 않은데 알고 있다고 속이려고 할지라도 속일 수 없어야 한다는 것이다.

3rd. 영지식성(zero-knowledges)
어떤 문장이 참이면, 검증자는 문장의 참, 거짓 이외에는 아무것도 알 수 없어야 한다.
Peggy 가 어떤 비밀 번호를 안다고 증명할 때, 비밀번호를 알고 있다는 사실 외에는 어떤 정보도 알 수 없어야 한다는 것이다.

ZKP의 사례

ZKP의 사례로 대표적인 ‘알리바바의 동굴’을 살펴보겠다.

image

고리모양이면서 가운데 잠겨진 문이 존재하는 동굴이 존재한다.
증명자는 페기이고 검증자는 빅터이다.
증명자 페기는 동굴안에 있는 문의 열쇠를 가지고 있으며, 페기는 자신이 열쇠를 가지고 있다는 사실을 다른 사람에게는 알리지 않고 검증자인 빅터에게 알리고자 한다.
이때 영지식 증명(ZKP) 이 사용될 수 있다.

증명과정은 다음과 같이 진행된다.
image

1) 증명자인 페기가 먼저 동굴의 A 출구나 B 출구 중 선택하여 동굴로 들어간다.
2) 검증자인 빅터가 A나 B중 출구를 골라서 페기에게 알려준다.
3) 페기는 빅터가 말한 출구로 나온다.

만약 페기가 열쇠를 가지고 있다는 사실이 참이라면,(실제로 열쇠를 가지고 있다면)
빅터가 어떤 통로를 골라도 빅터가 고른 통로로 페기가 나올 것이다.
하지만 페기가 열쇠를 가지고 있다는 사실이 거짓이라면,(실제로는 열쇠를 가지고 있지 않다면)
페기는 자신이 들어간 방향으로만 나올 수 있을 것이다.
즉, 페기는 자신이 들어간 방향이 A라면 A출구로만 나올 것이고, B라는 B출구로만 나올 것이다.

우연의 일치로 빅터가 말한 방향으로 나올 수 있겠지만, 이 실험을 여러 번만 반복한다면 일치할 확률은 매우 낮아진다.
페기가 빅터가 고른 통로로 들어갔을 확률은 2분의 1이기 때문에 20번만 반복해도 100만분의 1이된다.

게다가 제 3자 입장에서는 페기와 빅터가 사전에 어떤 통로로 나올지 약속했다고 생각할 수 있기 때문에 페기가 열쇠를 가지고 있다는 사실은 빅터에게만 확실한 사실이 된다.

알리바바의 동굴이 영지식 증명의 3가지 조건을 충족하는지 보겠다.
완전성: 어떤 조건이 참이라면, 정직한 증명인은 정직한 검증인에게 이 사실을 납득시킬 수 있어야 한다.
-> 만약 페기가 열쇠를 가지고 있는게 사실이라면,
빅터가 말한 동굴의 방향으로 항상 나올 것이기 때문에 빅터는 페기가 열쇠를 가지고 있다는 사실을 납득할 수 있다..

건실성: 어떤 문장이 거짓이면, 부정직한 증명인이라도 정직한 검증인에게 이 문장이 사실이라고 납득시킬 수 없어야 한다.
-> 만약 페기가 열쇠를 가지고 있지 않다면,
이 실험을 계속해서 반복하면서 빅터가 말한 동굴의 방향으로 페기가 항상 나올 확률은 현저히 떨어질 것이기 때문에 페기가 자신이 열쇠를 가지고 있다고 빅터에게 납득시키기 어려워진다.

영지식성: 어떤 문장이 참이면, 검증자는 문장의 참, 거짓 이외에는 아무것도 알 수 없어야 한다.
-> 빅터는 이 실험을 여러 번 해본 결과로 페기가 열쇠를 가지고 있다는 사실은 알 수 있지만, 그 외에 열쇠가 어떻게 생겼는지와 같은 정보는 알 수 없다.

블록체인에서 거래 정보를 숨기면서 블록체인의 장점을 이용하고자 하는 시도는 계속해서 이루어지고 있다.
그 중심에서 활용되고 있는 것이 바로 영지식증명(ZKP) 이다. 블록체인의 트랜드인 영지식 증명을 이해하는데 이 포스팅이 도움이 되었으면 좋겠다.

자유로운 의견과 수정사항은 항상 환영입니다.