탈중앙화 신원 인증의 새 패러다임 제시한 ‘ZKP’

블록체인과 결합돼 개인 정보 노출 없이 인증 가능…거래 내역 처리 속도 향상에도 가능

[테크 트렌드]



디지털 자산 시세가 급등하면서 블록체인 산업도 되살아나고 있다. 블록체인이 디지털 자산 동작에 핵심 기술 역할을 하기 때문이다.

블록체인 산업은 디지털 자산으로 수혜를 보고 있다. 그렇다면 블록체인은 어떤 기술일까. 순수하게 블록체인만 정의하면 탈중앙 기술이라고 할 수 있다. 그리고 탈중앙에 놓여 있는 시스템을 일치해 하나로 움직여 주는 합의 알고리즘도 함께 포함된다. 다시 말해 기존에는 중앙 시스템이 홀로 통제해 운영했다면 블록체인에서는 여러 시스템이 합의해 운영한다.

그런데 여러 전문가들은 블록체인을 탈중앙과 합의 기술의 결합으로만 한정하지 않는다. 암호학과 스마트 콘트랙트를 함께 포함하고 있다. 두 가지 기술을 추가적으로 포함하는 이유는 단순하다. 블록체인 동작에서 차지하는 비율이 높기 때문이다.

정보를 제공하지 않고 검증하는 ZKP

암호학은 블록체인의 많은 부분에서 응용되고 있다. 오죽하면 어느 전문가는 블록체인 역사를 암호학의 역사와 동일시해 보고 있다. 크게 세 가지 분야를 예로 들 수 있다.

초기 블록체인 플랫폼의 합의 방식에 활용됐다. 참고로 이러한 합의 방식을 채굴이라고 부른다. 그리고 디지털 자산 거래에도 활용된다. 여기에 비대칭 암호화 알고리즘이라는 기술이 적용되는데 디지털 자산 거래의 안전성을 보장한다.

마지막으로 블록체인에 저장된 데이터 보호를 들 수 있다. 블록체인이라고 불리는 이유에 관해 궁금할 것이다. 이유는 간단하다. 데이터 블록이 체인으로 연결된 구조를 하고 있기 때문이다. 여기서 암호학이 체인의 역할을 한다. 해시 함수라는 기술이 활용되는데 해시 함수 역할은 한 번 저장된 데이터 블록이 조작되지 못하도록 방지한다. 필자가 재미로 비트코인 블록을 조작하기 위해서는 얼마만큼의 노력이 필요한지 계산해 본 적이 있다. 계산 결과, 최고급 슈퍼컴퓨터로 약 300년 정도 해킹을 시도하면 데이터 블록을 99.8% 확률로 조작할 수 있었다.

스마트 콘트랙트는 어떨까. 스마트 콘트랙트는 블록체인 산업을 확장하는 역할을 한다. 블록체인 전문가인 멜라니 스완은 스마트 콘트랙트 여부로 블록체인 1.0과 블록체인 2.0을 나눴다. 블록체인 1.0 시대에는 디지털 자산 용도의 산업에만 국한됐다면 블록체인 2.0 시대에는 스마트 콘트랙트 적용으로 계약 분야까지 확장해 적용할 수 있다.

이처럼 블록체인은 독자 기술뿐만 아니라 다른 기술과 결합해 발전했다. 그런데 발전은 여기서 끝이 아니다. 최근 또 다른 기술과의 융합으로 블록체인이 발전되는 방향을 보이고 있기 때문이다. 그 기술은 바로 ‘영 지식 증명 알고리즘(ZKP : Zero Knowledge Proof)’이다.

ZKP는 정보를 밝히지 않고 검증하는 기술이다. 이러한 검증 방법에는 확률이 내포돼 있다. 다시 말해 ZKP는 정보를 밝히지 않고 충분한 확률로 검증한다. 이러한 검증에는 3가지 특징이 있다.

첫째, 완전성(completeness)이다. 증명자는 검증자가 충분히 높은 확률로 데이터가 올바름을 알 수 있게 증명해야 한다. 다시 말해 올바를 확률이 충분히 높아야 한다.

둘째, 건전성(soundness)은 진술이 거짓일 때 만족해야 하는 조건이다. 거짓 데이터를 올바른 것으로 입증할 확률이 충분히 낮아야 한다. 다시 말해 거짓일 확률이 낮아야 한다.

마지막 영 지식(zero-knolwledge)은 검증자가 증명 내용의 사실 여부만 알 수 있어야 한다. 다시 말해 증명자는 검증자에게 어떤 정보도 주어서는 안 된다.

앞의 두 가지 특징은 확률적인 특성을 내포하고 있다. 마지막 특성은 정보를 제공하지 않는 특성을 내포하고 있다. 예를 들어 일반인과 시각장애인이 있다고 가정해 보자. 그리고 이들 앞에는 빨간색 공과 흰색 공이 있다. 일반인은 장애인에게 색깔이 다른 공을 들고 있다는 것을 증명하고 싶다. 하지만 공 색깔을 말해서는 안 된다.

이를 어떻게 입증할까. ZKP 방법의 예로 풀 수 있는데, 이러한 방법에 관해 살펴보자. 참고로 여기에서 일반인이 증명자가 되고 장애인이 검증자 역할을 한다. 일반인이 공이 다름을 증명해야 하고 장애인은 진위를 검증해야 하기 때문이다.

검증인은 공을 자신의 책상 서랍 밑에 숨겨 증명자에게 공을 보이지 않게 한다. 그리고 검증인은 두 개 공 중 하나를 선택해 보인다. 그리고 책상 밑에 공을 넣고 다시 한 번 공 하나를 선택해 공을 보여준다. 그리고 검증자는 증명자에게 첫째로 꺼내든 공과 둘째로 꺼내든 공이 같은지 여부를 질문할 수 있다.

검증자는 증명자가 이를 맞히면 공이 다르다는 것을 인정할 수 있다. 다른 공이라면 눈이 보이는 증명자는 첫째 공과 둘째 공이 다르다는 것을 단번에 알 수 있기 때문이다. 그런데 같은 공이라면 증명자는 식별할 수 없다. 그러므로 답을 맞히기 어렵다.

여기에서 증명자가 공 색깔을 맞혔다고 가정해 보자. 그럼 검증자는 증명자의 말이 사실이라는 것을 믿어야 할까. 증명자가 같은 공인데도 운으로 맞힐 수도 있다. 증명자에게 선택지는 ‘같다’와 ‘다르다’다. 맞힐 확률이 절반인 50%이므로 검증자는 증명자의 말을 신뢰하기에는 확률적으로 모호하다. 완전성 관점에서 보면 충분히 높은 확률로 올바름을 증명했다고 보기 어렵다. 건전성 관점에서 보면 거짓일 확률이 충분히 낮다는 것을 증명했다고 보기 어렵다.

디지털 자산 익명성에 활용되기 시작

그러면 어떻게 해야 할까. 답은 간단하다. 여러 번 시도하면 된다. 10번 정도 시도만 해도 충분하다. 공이 다르다면 증명자가 10번 시도해 모두 맞힐 확률은 1024분의 1(2분의 1의 10제곱수)이다. 다시 말해 0.1%의 확률이다. 건전성 관점에서 보면 진실을 거짓으로 말할 확률이 0.1%인 셈이다. 반대로 완전성 관점에서 보면 진실일 확률이 99.9%다.

참고로 위와 같은 방식은 ZKP에서는 상호작용형 방식이라고 부른다. 스무고개처럼 질문과 답을 주고받으면서 증명하는 방식인 셈이다. 그런데 이러한 방식은 네트워크 시스템에서는 비효율적이다. 증명하는 과정에서 시간이 매우 걸리는데, 이는 네트워크의 속도 저하를 야기하기 때문이다.

그래서 한 번에 증명하는 ZKP가 필요하다. 참고로 이러한 방법을 비상호작용형 방식이라고 부른다. 이러한 방식은 한 번에 증명하므로 네트워크 속도 저하를 염려하지 않아도 된다. 계정 시스템을 이러한 유형의 대표적 예로 들 수 있다.

사용자들은 아이디와 비밀번호를 입력해 특정 서비스에 접근하다. 그런데 여기서 이런 의문이 들 수 있다. 자신의 비밀번호가 중앙 서버에 저장돼 있다면 서버 관리자는 모든 사용자의 비밀을 볼 수 있지 않을까. 물론 그렇지 않다. 비밀번호는 중앙 서버에 저장될 때 해시 함수라고 불리는 암호 함수에 의해 암호화 문자로 변경돼 저장되기 때문이다. 그래서 본인 비밀번호를 아는 사람은 본인밖에 없다. 심지어 중앙 서버도 이를 알 길이 없다. 단지 알고 있는 것은 비밀번호가 암호화된 문자밖에 없다.

그러면 중앙 서버는 사용자 여부를 어떻게 파악할까. 입력된 비밀번호의 암호화 문자를 대조해 파악한다. 참고로 입력된 비밀번호 값과 함수 값이 변하지 않으면 출력되는 암호화 문자는 항상 동일하다. 이는 ZKP의 셋째 특성을 만족한다. 비밀번호라는 정보를 제공하지 않으니 말이다.

또한 확률적 특성도 만족한다. 암호 함수의 한계로 다른 비밀번호를 동일 암호화 문자로 출력되게 할 수 있다. 그렇게 되면 다른 사용자임에도 서비스에 접근할 수 있게 된다. 그런데 이러한 확률은 천문학적으로 낮다.

이처럼 ZKP는 정보를 말하지 않고 충분한 확률로 증명한다. 그러면 블록체인 산업에서는 어떻게 활용될까. 블록체인에서는 디지털 자산 거래 익명 용도로 처음 등장했다. 2016년 제트캐시(Z-Cash)라는 디지털 자산이 등장했는데 제트캐시 특징은 ZKP를 활용해 디지털 자산의 거래 정보를 익명화했다는 것이다.

그런데 디지털 자산의 채굴 과정을 아는 사람은 이렇게 질문할 수 있다. “채굴자는 어떻게 거래가 유효한지 검증할 수 있을까”라고 말이다. 채굴자는 거래 내역과 전자 서명의 내용을 보고 거래 유효성을 검증하는데 ZKP는 이러한 정보를 모두 암호화해 버린다. 그러면 채굴자(혹은 검증자)는 거래 유효성을 검증할 수 없게 된다.

여기서 복잡한 계산식이 사용되는데 비유를 들어 설명하면, 사극 드라마를 보면 자식을 둔 주인공이 부인에게 헤어질 때 검 조각을 쪼개 준다. 그리고 훗날 자식이 본인에게 찾아 오려고 하면 쪼개진 반쪽 검을 자식에게 주라고 말한다. 이유는 주인공이 쪼개진 반쪽 검을 서로 맞춰 자식 여부를 확인할 수 있기 때문이다. 여기서도 ZKP로 접근할 수 있다. 첫째는 자식은 본인이 자식이라고 말하지 않고 반쪽짜리 검만 건넬 수 있다. 둘째는 확률적으로 서로 다른 쪼개진 검이 서로 일치할 확률이 매우 낮다. 그러므로 확률적으로 증명이 가능하다.

제트캐시에서는 거래 내역과 전자 서명을 위와 같이 서로 대조해 진위를 판별할 수 있게 한다. 이러한 방식으로 검증할 수 있으면서 거래 내역을 익명화할 수도 있다.

최근 디지털 자산에서 ZKP는 속도 향상 목적으로 활용되고 있다. 거래 내역을 암호화 문자로 바꾸면 용량을 압축하는 효과가 있다. 비유하면 20만 문자를 2000개의 문자로 줄이는 것인데, 이는 공유에서 속도를 올려 준다. 10기가바이트 파일을 다운로드 받는 시간보다 1기가바이트 파일을 다운로드 받는 시간이 덜 든다. 디지털 자산에서 거래 내역 공유도 마찬가지다. 암호화로 용량을 줄이면 시간을 덜 들게 해 속도 향상 효과를 가져온다. 실제로 이더리움 재단에서는 속도 향상을 목적으로 ZKP 적용을 검토한 적이 있다.

ZKP, 탈중앙 신원 인증 시대를 여는 핵심

계정 시스템, 제트캐시 등 사례를 살펴보면 ZKP는 익명화하면서도 검증할 수 있는 특징을 가지고 있다. 이는 개인 정보 보호에 매우 유익하다.

최근 ZKP는 블록체인 기반 인증인 ‘탈중앙 신원 인증’에 중요 역할을 할 것으로 보인다. 탈중앙 신원 인증은 인증 중개 기관을 블록체인으로 대체하는 기술이다. 여기서 ZKP는 핵심이 될 수 있다. 가령 인증 받을 때 우리는 개인 정보를 과도하게 노출한다고 생각한다. 우리의 주민등록번호를 아무에게나 쉽게 건네야 하고 은행과 동 주민센터 등을 방문할 때 제삼자에게 정보를 쉽게 노출한다.

그런데 탈중앙 신원 인증과 ZKP를 결합하면 그럴 필요가 없다. 제삼자에게 개인 정보를 제공하지 않고 개인을 입증할 수 있다. 이러한 특징은 개인 정보가 중요해지는 지금 추세에서 굉장히 유용할 것으로 보인다.

블록체인은 암호학과 스마트 콘트랙트에 힘입어 발전했다. 더 나아가 ZKP와 결합해 인증의 새로운 패러다임을 제시할 것으로 보인다.

유성민 건국대 겸임교수
상단 바로가기