-
블로그 [보안동향] ‘니가 왜 거기서 나와?’ 블록체인 속 ‘영지식증명’
알리바바의 동굴이라는 수수께끼 같은 이야기가 있습니다. 찰리와 스미스, 두 사람은 동굴 입구에서 만나서 동굴을 여는 주문을 공개하지 않은 채로, 동굴 안 비밀 문을 통과해서 다시 만나 주문을 알고 있다는 사실을 증명을 하는 이야기로, 장 자크 키스케다(Jean-Jacques Quisquater)의 논문, 「어린이들을 위한 영지식증명」에서 동굴의 비유를 들어 설명한 영지식증명에 관한 이야기입니다. 필자의 25년 전 기억 속에 오랫동안 묵혀 있던 이 이야기를 어느 날 우연히 블록체인 강의에서 듣게 되었습니다. “블록체인과 영지식증명? 왜?”, “니가 왜 여기서 나와!”, 유행가요의 제목과 같은 느낌으로 영지식증명을 새삼스레 흥미롭게 바라보게 되었습니다. 블록체인 채굴과정의 핵심인 누가 얼마의 새 화폐를 받을지 결정하는 합의 알고리즘의 활용 기술로 영지식증명이 재조명 받게 된 것이었습니다. 지금부터 작업증명(Proof of Work, PoW), 지분증명(Proof of Stake, PoS) 등의 블록체인 분산 네트워크가 합의를 얻는 방식(합의 알고리즘)과 블록체인 속 영지식증명 그리고 영지식증명과 관련한 앞으로의 과제에 대하여 간략하게 살펴보겠습니다. 블록체인 합의 알고리즘 블록체인의 합의 알고리즘이란 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘을 말합니다. 합의 모델, 합의 방식, 합의 메커니즘 또는 합의 프로토콜이라고도 합니다. 블록체인 분산 네트워크에서는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없고, 통일된 의사결정을 내릴 수 있는 권위 있는 중앙(center)이 존재하지 않습니다. 이런 상황에서 합리적이고 효율적인 의사결정을 내릴 수 있는 다양한 합의 알고리즘이 개발되었습니다. 대표적인 합의 알고리즘인 작업증명 방식과 지분증명 방식을 살펴보겠습니다. 작업증명 기반 합의 알고리즘은 Satoshi Nakamoto의 논문 “Bitcoin: A Peer-to-Peer Electronic System’에 처음 소개된 메커니즘으로, 블록 생성을 하고자 하는 노드들이 특정한 해시값을 찾는 연산을 수행하여 특정한 난이도의 작업을 수행했음을 증명하는 것입니다. 채굴자들은 해시값을 찾기 위해 경쟁하고, 특정 채굴자가 목푯값에 해당하는 해시값을 찾는 데 성공하면 새로운 블록이 생성됩니다. 작업증명에서 ‘작업’이란 ‘채굴’에 이르기까지 연산 과정을 뜻합니다. 채굴자들은 컴퓨터로 복잡한 수식을 풀어 조건에 맞는 해시값을 찾는 과정을 반복하고, 이 경우 모든 노드들이 찾아낸 해시값을 검증하고 승인하는 과정을 거쳐 블록에 거래 내역을 저장합니다. 모든 노드들의 승인을 거쳐야 하기 때문에 거래 내역을 속이기가 힘들다는 장점이 있습니다. 이러한 점에서 작업증명(PoW) 합의 알고리즘은 블록체인이 가지는 탈중앙화라는 본질을 잘 살린 합의 방식입니다. 그러나 이런 과정 때문에 거래 처리 속도가 늦어진다는 한계가 있고, 채굴에 필요한 에너지 소비가 심한 단점을 가지고 있습니다. 이 때문에 일정 조건에 따라 블록 생성에 참여하는 노드들을 제한하는 지분증명(PoS) 방식이 등장했습니다. 작업증명 방식을 사용하는 디지털 자산에는 비트코인, 이더리움, 라이트코인, 비트코인캐시, 비트코인골드, 모네로, 지캐시, 시아코인, 불웍, 에이치닥 등이 있습니다. 지분증명(PoS) 방식은 해당 디지털 자산을 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 방식입니다. 채굴 과정이 필요 없는 지분증명은 의사 결정 권한을 디지털 자산 보유량에 비례하여 지급하는 방식이기 때문에 디지털 자산을 많이 보유하고 있는 노드일수록 블록 생성에 참여할 수 있는 기회가 더 많아집니다. 블록 생성에 따른 보상도 역시 디지털 자산 보유량에 비례합니다. 지분증명 방식은 모든 노드들의 승인을 거치지 않아도 되기 때문에, 작업증명 방식보다 처리 속도가 빠르고, 전력 소비를 줄일 수 있습니다. 그러나 이 방식은 많은 디지털 자산을 가지고 있을수록 더 많은 보상을 받는 구조이기 때문에, 탈중앙화와 평등을 추구하는 블록체인의 본질에서 벗어나 ‘부익부 빈익빈’을 초래한다는 논란을 불러오고 있습니다. 큐텀(QTUM), 피어코인(Peercoin) 등이 지분증명 방식을 사용하고 있고, 스트라티스(Stratis)는 작업증명 방식에서 지분증명 방식으로 변경하였습니다. 또한 이더리움 재단은 기존 합의 방식인 작업증명 방식을 지분증명 방식으로 전환하기 위한 ‘캐스퍼(Casper)’ 프로젝트를 진행하였고, 2020년 12월 ‘이더콘 한국 2020’을 통해 발표한 이더리움2.0 개발 로드맵에 따라 2022년에는 작업증명 방식을 벗어나 지분증명 방식으로 전환하게 될 예정입니다. 영지식 증명의 개념 영지식증명은 1985년 Shafi Goldwasser, Silvio Micali, Charles Rackoff의 논문 “The Knowledge Complexity of Interactive Proof-Systems”에서 처음 소개된 개념입니다. 현대 암호학에서는 영지식증명을 다자간의 비대면 통신 프로토콜에서 정보보호 기능을 제공하기 위해 적용하는 암호 프로토콜 중 매우 중요하고, 구현하기 까다로운 고급 암호 프로토콜의 한 종류로 취급하고 있습니다. 디지털 자산(암호화폐)에서 영지식증명이 처음 적용된 것은 2013년 존스홉킨스 대학교의 연구진들이 실행한 제로코인(ZeroCoin)이었습니다. 제로코인은 2014년 제로캐시(Zero Cash)라는 이름을 거쳐, 2016년 지캐시(Zcash)라는 이름으로 변경되었습니다. 서두에 잠시 소개했던 동굴의 비유를 들어 영지식증명의 개념을 좀 더 자세히 소개하겠습니다. 알리바바 동굴(Alibaba’s cave)의 비유는 영지식증명의 3가지 조건인 완전성, 건전성, 영지식성을 만족시킴과 동시에 영지식증명을 이해하기 쉬운 문제로 설명한 아주 좋은 사례입니다. 찰리(Charlie)는 증명자(prover)이고 스미스(Smith)는 검증자(verifier)라고 가정하겠습니다. 찰리와 스미스 모두 비밀 문이 있는 동굴 가까이에 있습니다. 둥근 고리 형태의 동굴에는 A와 B라는 길이 있으며 그사이에는 도어락이 설치된 비밀 문이 있습니다. 찰리는 스미스에게 비밀 문의 암호를 알고 있다고 말했습니다. 하지만 찰리는 스미스를 포함한 다른 누구에게도 그 암호를 밝히고 싶지 않습니다. 이에 대해 스미스는 믿을 수 없다며 찰리에게 암호를 알고 있음을 증명하라고 합니다. 즉, 검증자는 증명자에게 직접적으로 설치된 도어락의 비밀번호를 물어보지 않고 증명자가 비밀번호를 알고 있다는 명제가 참인지 확인하려 합니다. 이 조건문이 참인지를 확인하기 위해 다음 방법을 사용할 수 있습니다. 이 과정을 통해 찰리(증명자)는 스미스(검증자)에게 자신이 알고 있는 비밀번호를 알려주지 않고도 자신이 비밀번호를 알고 있음을 증명할 수 있습니다. ① 찰리(증명자)가 먼저 동굴에 들어간 다음, 도어락 근처로 이동한 후 스미스(검증자)를 동굴 안으로 부릅니다.② 스미스(검증자)는 A와 B의 갈림길에 서서 찰리(증명자)에게 특정 길로 나오라고 지시합니다.③ 찰리(증명자)는 검증자가 지시한 길로 나옵니다. 이 과정을 한 번만 보았을 때는 증명자가 비밀번호를 정말로 알고 있어서 검증자가 지시한 길로 나왔는지 확신하기 어렵습니다. 왜냐하면 찰리(증명자)가 우연히 올바른 길로 나왔을 수도 있기 때문입니다. 하지만 위 과정을 일정 횟수 이상 반복하여도 항상 찰리(증명자)가 스미스(검증자)의 지시대로 행동했다면 찰리(증명자)는 스미스(검증자)에게 자신이 비밀번호를 알고 있다는 사실을 납득시킬 수 있습니다. 예를 들어 위와 같이 20번만 반복해도, 찰리(증명자)가 비밀번호를 모르면서도 스미스(검증자)의 지시를 모두 따를 수 있는 확률은 100만분의 1 이하가 됩니다. 만약 이 과정을 40회 반복하게 되면, 우연히 비밀번호를 맞출 확률은 1조분의 1 이하가 됩니다. 1회가 아니라, 40회 이상의 반복을 통해 우연성을 제거하고, 검증 대상 명제를 확률적으로 참이라고 증명할 수 있게 됩니다....