검수요청.png검수요청.png

영지식증명

위키원
(영지식 증명에서 넘어옴)
이동: 둘러보기, 검색

영지식증명(零知識證明, zero-knowledge proof)이란 거래 상대방에게 어떠한 정보도 제공하지 않은 채, 자신이 해당 정보를 가지고 있다는 사실을 증명하는 것을 말한다. 영어로 ZKP(지케이피)라고도 한다.

역사[편집]

영지식 증명은 1985년 Shafi Goldwasser, Silvio Micali, Charles Rackoff의 논문 "The Knowledge Complexity of Interactive Proof-Systems"에서 처음 소개된 개념이다. 현대 암호학에서는 영지식증명을 다자간의 비대면 통신 프로토콜에서 정보보호 기능을 제공하기 위해 암호기술을 적용하는 암호 프로토콜 중 매우 중요한 고급 암호 프로토콜의 한 종류로 취급한다.[1] 암호화폐에서 영지식증명은 2013년 존스홉킨스 대학교의 연구진들이 실행한 제로코인(ZeroCoin)에서 처음 적용이 되었다. 제로코인은 2014년 제로캐시(Zero Cash)라는 이름을 거쳐, 2016년 지캐시(Zcash)라는 이름으로 변경되었다.[2]

배경[편집]

영지식증명은 간단히 말해 증명자가 자신이 알고 있는 지식과 정보를 공개하지 않으면서, 그 지식을 알고 있다는 사실을 검증자에게 증명하는 시스템이다. 여기서 증명자(prover)는 자신이 해당 지식을 알고 있음을 증명하는 주체이며, 검증자(verifier)는 증명자가 해당 지식을 알고 있다는 사실을 검증해주는 주체이다.

영지식 증명의 이론적 기반은 대화형 증명 시스템(interactive proof system)이다. 대화형 증명 시스템은 증명자와 검증자 상호간 메시지를 교환하는 계산(computation)을 모델링한 추상적 컴퓨터 모델(abstract machine)을 말한다. 대화형 증명 시스템에서 증명자는 전능하고 무제한의 계산 자원을 갖고 있지만 신뢰할 수 없는 존재인 반면, 검증자는 제한된 계산 자원을 갖고 있지만 신뢰할 수 있는 존재임을 전제로 한다. 따라서 지금까지 대화형 상호 증명 시스템에서는 증명자가 악역을 맡아 이들이 검증자를 속이려는 상황을 가정했다.

하지만 영지식 증명에서는 다음과 같은 상황에서 추가적으로 검증자도 악의적인 목적을 갖는다는 구성을 생각하였다. 예를 들어 증명자가 자신의 비밀번호를 알고 있고, 자신이 알고 있다는 사실을 증명하기 위해 관련된 정보를 검증자에게 보낸 상황을 가정해 보자. 이때 검증자는 전달 받은 증명자의 정보(비밀번호, 주민등록번호)들을 판매하여 부당한 이익을 챙길 수 있다는 가정이다. 이와 같은 경우를 예방하기 위해 영지식 증명은 기존의 대화형 증명 시스템에서, 1. 누구나 검증자가 정보를 누설하지 않는다는 걸 확인할 수 있는가? 2. 검증자가 검증 과정 동안 알고 있어야 하는 정보의 비중은 어느 정도 인가? 등 2가지 질문을 제시하였다. 이 의문점들을 해결하기 위해서 증명자가 제공한 정보의 증명를 통해 악의적인 검증자가 검증을 수행할 수 있지만, 증명자의 정보 자체에 대해서는 유추할 수 없는 증명 시스템이 필요했으며, 이 고민에 대한 해결책이 곧 영지식증명이었다.[3]

특징[편집]

영지식 증명은 3가지 조건을 모두 만족해야 한다.

  • 완전성(completeness): 어떤 조건이 참이라면 신뢰할 수 있는 검증자(honest verifier)는 신뢰할 수 있는 증명자(honest prover)에 의해 이 사실을 납득할 수 있어야 한다.
  • 건전성(soundness): 어떤 조건이 거짓이면 신뢰할 수 없는 증명자(dishonest prover)는 거짓말을 통해 검증자에게 조건이 참임을 절대 납득시킬 수 없다.
  • 영지식성(zero-knowledge): 어떤 조건이 참일 때, 검증자는 이 조건이 참이라는 사실 이외의 아무 정보를 알 수 없다.

동굴의 비유[편집]

영지식증명(zero-knowledge proof) - 알리바바 동굴의 비유

영지식증명의 3가지 조건인 완전성, 건전성, 영지식성을 만족시키는 사례임과 동시에 영지식 증명을 이해하기 쉬운 문제로 설명한 사례가 알리바바 동굴(Alibaba's cave)의 비유이다. 장 자크 키스케다(Jean-Jacques Quisquater)는 〈어린이들을 위한 영지식증명〉이라는 논문에서 동굴의 비유를 들어 설명했다.[4]

찰리(Charlie)는 증명자(prover)이고 스미스(Smith)는 검증자(verifier)라고 가정하자. 찰리와 스미스 모두 비밀문이 있는 동굴 가까이에 왔다. 둥근 고리 형태의 동굴에는 A와 B라는 길이 있으며 그 사이에는 도어락이 설치된 비밀문이 있다. 찰리는 스미스에게 비밀문의 암호를 알고 있다고 말했다. 하지만 찰리는 스미스를 포함한 다른 누구에게도 그 암호를 밝히고 싶지 않다. 이에 대해 스미스는 믿을 수 없다며 찰리에게 암호를 알고 있음을 증명하라고 한다. 즉, 검증자는 증명자에게 직접적으로 설치된 도어락의 비밀번호를 물어보지 않고 증명자가 비밀번호를 알고 있다는 명제가 참인지 확인하려 한다.

이 조건문이 참인지를 확인하기 위해 다음 방법을 사용할 수 있다.

  1. 증명자가 먼저 동굴에 들어간 다음, 도어락 근처로 이동한 후 검증자를 동굴 안으로 부른다.
  2. 검증자는 A와 B의 갈림길에 서서 증명자에게 특정 길로 나오라고 지시한다.
  3. 증명자는 검증자가 지시한 길로 나온다.

이 과정을 통해 증명자는 검증자에게 자신이 알고 있는 비밀번호를 알려주지 않고도 자신이 비밀번호를 알고 있음을 증명할 수 있다. 하지만 이 과정을 한 번만 보았을 때는 증명자가 비밀번호를 정말로 알고 있어서 검증자가 지시한 길로 나왔는지 확신하기 어렵다. 왜냐하면 증명자가 우연히 올바른 길로 나왔을 수도 있기 때문이다. 하지만 위 과정을 일정 횟수 이상 반복하여도 항상 증명자가 검증자의 지시대로 행동했다면 증명자는 검증자에게 자신이 비밀번호를 알고 있다는 사실을 납득시킬 수 있다. 예를 들어 위와 같이 20번만 반복해도, 증명자가 비밀번호를 모르면서도 검증자의 지시를 모두 따를 수 있는 확률은 100만분의 1 이하가 된다.[5] 만약 이 과정을 40회 반복하게 되면, 우연히 비밀번호를 맞힐 확률은 1조분의 1 이하가 된다.

이 과정을 영지식증명의 3가지 조건에 대입시키면 다음과 같다.[3]

  • 완전성(completeness): 위 실험을 여러 번 수행하는 경우에도 증명자가 검증자의 지시를 계속 따르게 된다면 검증자는 증명자가 비밀번호를 안다고 납득할 수 있다.
  • 건전성(soundness): 증명자가 사실은 비밀번호를 모르지만 안다고 거짓말을 했을 경우 검증자에게 언젠가 한 번은 지시대로 수행하지 못하는 경우가 생기기 때문에 증명자가 비밀번호를 안다는 것을 증명할 수 없다.
  • 영지식성(zero-knowledge): 여러 번의 반복을 통해 검증자는 증명자가 비밀번호를 알고 있다는 사실을 납득했지만 비밀번호가 무엇인지는 알지 못한다.

이 실험에서 증명자는 오직 검증자에게만 자신이 비밀번호를 안다는 사실을 증명할 수 있다. 이 실험을 관찰하는 다른 제3자들은 증명자가 정말로 비밀번호를 알고 있는지 확신할 수가 없다. 왜냐하면 제3의 관찰자는 증명자와 검증자가 사전에 미리 짜고 그 순서대로 동굴의 문을 열고 나왔을 수도 있기 때문이다. 하지만 검증자는 자신이 정말로 랜덤하게 문을 지정했다는 사실을 알고 있기 때문에, 증명자가 비밀번호를 알고 있다고 확신할 수 있게 된다. 이처럼 영지식증명은 오직 해당 증명 과정에 참여한 증명자와 검증자만 사실을 확신할 수 있으며, 이 증명을 관찰하는 제3자는 증명자가 정말로 해당 내용을 알고 있는지 확신할 수 없게 만든다는 특징이 있다.

스도쿠 게임[편집]

영지식증명은 스도쿠(sudoku) 게임에도 적용될 수 있다. 스도쿠 게임(sudoku game)은 정사각형 모양의 보드에 1~9까지 숫자를 넣되, 총 9*9=81개의 칸에 대해, 반드시 하나의 가로줄에 1~9의 숫자를 각각 한 번씩 사용해야 하고, 하나의 세로줄에 대해서도 1~9까지 숫자를 각각 한 번씩 사용해야 하며, 3*3 크기의 작은 정사각형 보드 안에도 1~9까지의 숫자가 오직 한 번만 사용되도록 만드는 게임이다. 이 게임의 정답을 맞힌 사람인 증명자는 자신이 발견한 정답을 검증자에게 공개하지 않으면서도 자신이 정답을 찾았다는 사실을 증명해야 하는데, 이때 영지식증명 방법을 사용할 수 있다.

  1. 증명자는 9*9 = 81개의 정사각형 보드를 다른 종이로 덮어서 검증자가 볼 수 없도록 한다.
  2. 증명자는 자신이 찾아낸 정답을 바탕으로, 1~9까지의 전체 숫자에 대해, 1-->2, 2-->5, 3-->9, 4-->7, ... 이런 식으로 랜덤하게 숫자를 1:1로 바꿔치기를 한다. 이러한 셔플링(shuffling) 과정을 거치더라도 스도쿠 게임의 정답은 여전히 유효하게 적용된다. 즉, 가로줄, 세로줄, 3*3 하위 정사각형 보드에 1~9까지의 숫자가 각각 한 번씩만 사용된다.
  3. 검증자는 증명자에게 특정 가로줄 또는 세로줄 혹은 3*3 하위 정사각형 보드를 공개하라고 요청한다.
  4. 증명자는 검증자가 요청한 특정 부분의 정답을 공개한다. 증명자가 공개한 부분에 1~9의 숫자가 각각 한 번씩만 사용되었다면, 증명자가 스도쿠 문제의 정답을 알고 있다는 증명이 된다.

하지만, 위 과정을 오직 한 번만 수행할 경우, 증명자가 우연히 해당 줄의 정답을 맞힌 것일 수도 있기 때문에, 검증자는 전적으로 증명자를 신뢰할 수 없다. 따라서 위 과정은 여러 회 반복해서 수행되어야 한다. 두번째 과정에서 증명자는 다시 자신이 알고 있는 정답의 숫자를 랜덤하게 1:1로 바꿔치기한다. 만약 이러한 셔플링 과정을 수행하지 않는다면, 검증자가 증명자가 알아낸 정답을 추측할 수 있기 때문에 증명자는 매번 이러한 셔플링을 수행해야 한다. 결국 위 과정을 상당히 여러 회 반복하였음에도 불구하고, 증명자가 매번 정답을 맞힌다면, 검증자는 증명자가 정답을 알고 있을 확률이 매우 높다고 결론을 내릴 수 있다. 이처럼 영지식증명 방법을 이용해 증명자는 자신이 찾아낸 스도쿠 게임의 정답을 공개하지 않고도 검증자에게 자신이 정답을 알고 있다는 사실을 증명할 수 있게 된다.

이 실험에서 증명자는 오직 검증자에게만 자신이 정답을 안다는 사실을 증명할 수 있다. 이 실험을 관찰하는 다른 제3자들은 증명자가 정말로 정답을 알고 있는지 확신할 수가 없다. 왜냐하면 제3의 관찰자는 증명자와 검증자가 사전에 미리 짜고 그 순서대로 특정 줄의 값만 1~9가 되도록 조작했을 수도 있기 때문이다. 하지만 검증자는 자신이 정말로 랜덤하게 특정 가로줄이나 세로줄을 지정했다는 사실을 알고 있기 때문에, 증명자가 정답을 알고 있다고 확신할 수 있게 된다. 이처럼 영지식증명을 이용하면, 오직 해당 증명 과정에 참여한 증명자와 검증자만 사실을 확신할 수 있으며, 제3자의 관찰자는 증명자가 정말로 해당 내용을 알고 있는지 확신할 수 없다.

활용[편집]

영지식증명은 개인정보보호를 중요시하는 프라이버시 코인(privacy coin)에 주로 활용되고 있다. 영지식증명은 암호화폐 거래에서 거래 제공자가 공개하는 것 이외의 정보는 제공 받는 사람이 알 수 없도록 분산화 기술로 설계가 되어 있다. 따라서 모든 거래의 프라이버시를 보호할 수 있다. 거래내역 자체는 누구에게나 공개된 블록체인에 게시되지만, 거래 상대자의 신원과 거래 금액은 암호화되기 때문에 보안이 유지가 된다. 즉, 영지식증명 기술은 거래 금액을 드러내지 않는 프라이버시 보호 기능과 당사자들이 서로의 신원을 확인하지 않고도 암호화폐를 교환할 수 있게 해주는 기능인 거래의 익명화가 가능하게 해주었다.[6]

영지식 증명을 사용한 대표적인 암호화폐는 프라이버시 코인의 한 종류인 지캐시(Zcash)가 있다. 지캐시는 영지식증명을 기술을 기반으로 한 영지식 스나크(zk-SNARKs)라는 알고리즘을 개발하여 철저한 익명성을 보장한 거래를 구현하였다. 또한 대표적인 프라이버시 코인의 일종인 대시(Dash) 역시 영지식증명을 기반으로 하였다. 영지식증명 기술은 2017년 10월 16일 진행되었던 이더리움(Ethereum) 로드맵 4단계 중 3단계인 메트로폴리스 단계로 가기 위한 비잔티움 하드포크에도 적용되었다.[7] 영지식증명 기술은 향후 이더리움의 고질적 문제 중 하나인 확장성 문제를 해결해 줄 솔루션으로 예상되고 있다.[8]

각주[편집]

  1. 김태성, 〈7장 암호통제〉, 《충북대 경영정보학과》
  2. keepit, 〈KEEP!T History: 영지식 증명 이해하기〉, 《스팀잇》, 2018-10-12
  3. 3.0 3.1 표정우(Jungwoo Pyo), 〈Zero-Knowledge proof :: chapter 1. Introduction to Zero-Knowledge Proof & zk-SNARKs〉, 《미디엄》, 2018-07-26
  4. Keepit 윤종흠, 〈Keepit 블록체인 칼럼: 익명화폐의 역사 3편〉, 《네이버 블로그》, 2017-09-22
  5. 영지식 증명〉, 《위키백과》
  6. ventasnu, 〈블록체인, 영지식증명(Zero knowledge Proof)이란?〉, 《네이버 블로그》, 2017-11-23
  7. ventasnu, 〈가상화폐 '이더리움' 메트로폴리스를 위한 '비잔티움 하드포크'〉, 《네이버 블로그》, 2017-10-23
  8. dChainers, 〈이더리움, 확장성 솔루션인 플라즈마의 대안으로 영지식 증명(zk-SNARKs) 검토〉, 《더뉴스아시아》, 2018-11-09

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 영지식증명 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.