본문으로 건너뛰기

영지식 증명이란 무엇인가요?

영지식 증명은 진술 자체를 드러내지 않고 진술의 유효성을 증명하는 방법입니다. '증명자'는 청구를 증명하려는 당사자이며, '검증자'는 청구를 검증할 책임이 있습니다.

영지식 증명은 1985년 논문인 "대화형 증명 시스템의 지식 복잡성(The knowledge complexity of interactive proof systems) (opens in a new tab)"에서 처음 등장했으며, 이 논문은 오늘날 널리 사용되는 영지식 증명의 정의를 제공합니다.

영지식 프로토콜은 한 당사자(증명자)가 다른 당사자(검증자)에게 특정 진술이 참이라는 사실 외에는 어떠한 정보도 공개하지 않고 무언가가 참이라는 것을 증명할 수 있는 방법입니다.

영지식 증명은 수년에 걸쳐 발전해 왔으며 현재 여러 실제 애플리케이션에서 사용되고 있습니다.

Zero-knowledge proofs explained in 5 levels of difficulty

A computer scientist explains zero-knowledge proofs at five different levels of complexity, from a child to an expert.

대본과 함께 시청하기 

왜 영지식 증명이 필요한가요?

영지식 증명은 개인의 정보 보안을 향상시킬 것을 약속했기 때문에 응용 암호학에서 획기적인 발전을 나타냈습니다. 다른 당사자(예: 서비스 제공자)에게 청구(예: "나는 X 국가의 시민입니다")를 증명하는 방법을 생각해 보세요. 청구를 뒷받침하기 위해 여권이나 운전면허증과 같은 "증거"를 제공해야 합니다.

하지만 이 접근 방식에는 주로 프라이버시 부족이라는 문제가 있습니다. 제3자 서비스와 공유되는 개인 식별 정보(PII)는 해킹에 취약한 중앙 데이터베이스에 저장됩니다. 신원 도용이 심각한 문제가 되면서 민감한 정보를 공유할 때 프라이버시를 더 잘 보호할 수 있는 수단에 대한 요구가 커지고 있습니다.

영지식 증명은 청구의 유효성을 증명하기 위해 정보를 공개할 필요성을 제거함으로써 이 문제를 해결합니다. 영지식 프로토콜은 진술('증거'라고 함)을 입력으로 사용하여 유효성에 대한 간결한 증명을 생성합니다. 이 증명은 생성에 사용된 정보를 노출하지 않고도 진술이 참이라는 강력한 보장을 제공합니다.

앞의 예로 돌아가서, 시민권 청구를 증명하는 데 필요한 유일한 증거는 영지식 증명입니다. 검증자는 기본 진술도 참이라고 확신하기 위해 증명의 특정 속성이 참인지 확인하기만 하면 됩니다.

영지식 증명의 사용 사례

익명 결제

신용카드 결제는 결제 제공업체, 은행 및 기타 이해관계자(예: 정부 기관)를 포함한 여러 당사자에게 노출되는 경우가 많습니다. 금융 감시는 불법 활동을 식별하는 데 이점이 있지만 일반 시민의 프라이버시를 훼손하기도 합니다.

암호화폐는 사용자가 프라이버시가 보장되는 피어 투 피어 트랜잭션을 수행할 수 있는 수단을 제공하기 위해 고안되었습니다. 그러나 대부분의 암호화폐 트랜잭션은 퍼블릭 블록체인에서 공개적으로 볼 수 있습니다. 사용자 신원은 종종 가명으로 사용되며, 의도적으로 실제 신원과 연결되거나(예: 트위터 또는 GitHub 프로필에 ETH 주소 포함) 기본적인 온체인 및 오프체인 데이터 분석을 사용하여 실제 신원과 연관될 수 있습니다.

완전히 익명화된 트랜잭션을 위해 설계된 특정 "프라이버시 코인"이 있습니다. Zcash 및 Monero와 같은 프라이버시 중심 블록체인은 송신자/수신자 주소, 자산 유형, 수량 및 트랜잭션 타임라인을 포함한 트랜잭션 세부 정보를 보호합니다.

영지식 기술을 프로토콜에 통합함으로써 프라이버시 중심 네트워크는 가 트랜잭션 데이터에 액세스할 필요 없이 트랜잭션을 검증할 수 있도록 합니다. EIP-7503 (opens in a new tab)이더리움 블록체인에서 네이티브 프라이빗 가치 전송을 가능하게 하는 제안된 설계의 한 예입니다. 그러나 이러한 제안은 보안, 규제 및 UX 문제가 복합적으로 얽혀 있어 구현하기 어렵습니다.

영지식 증명은 퍼블릭 블록체인에서 트랜잭션을 익명화하는 데에도 적용되고 있습니다. 사용자가 이더리움에서 프라이빗 트랜잭션을 수행할 수 있도록 하는 탈중앙화된 비수탁형 서비스인 Tornado Cash가 그 예입니다. Tornado Cash는 영지식 증명을 사용하여 트랜잭션 세부 정보를 난독화하고 금융 프라이버시를 보장합니다. 안타깝게도 이러한 도구는 "선택적(opt-in)" 프라이버시 도구이기 때문에 불법 활동과 연관되는 경우가 많습니다. 이를 극복하려면 궁극적으로 퍼블릭 블록체인에서 프라이버시가 기본값이 되어야 합니다. 이더리움의 프라이버시에 대해 자세히 알아보세요.

신원 보호

현재의 신원 관리 시스템은 개인 정보를 위험에 빠뜨립니다. 영지식 증명은 개인이 민감한 세부 정보를 보호하면서 신원을 검증하는 데 도움이 될 수 있습니다.

영지식 증명은 탈중앙화 신원증명 (DID)의 맥락에서 특히 유용합니다. 탈중앙화 신원증명 (DID)(또는 '자기 주권 신원'이라고도 함)은 개인에게 개인 식별자에 대한 액세스를 제어할 수 있는 권한을 부여합니다. 납세자 번호나 여권 세부 정보를 공개하지 않고 시민권을 증명하는 것은 영지식 기술이 탈중앙화 신원증명 (DID)을 어떻게 가능하게 하는지 보여주는 좋은 예입니다.

실제 적용된 ZKP + 신원: 이더리움 기반 부탄 국가 디지털 신원(NDI)

신원 관리 시스템에 ZKP를 사용하는 실제 사례는 이더리움을 기반으로 구축된 부탄 왕국의 국가 디지털 신원(NDI) 시스템입니다. 부탄의 NDI는 ZKP를 사용하여 시민들이 신분증의 민감한 개인 데이터를 공개하지 않고도 "나는 시민입니다" 또는 "나는 18세 이상입니다"와 같은 자신에 대한 사실을 암호학적으로 증명할 수 있도록 합니다.

탈중앙화 신원증명 (DID) 사례 연구에서 부탄 NDI에 대해 자세히 알아보세요.

인류 증명 (Proof of Humanity)

오늘날 실제로 사용되는 영지식 증명의 가장 널리 알려진 예 중 하나는 "AI 시대를 위한 글로벌 디지털 여권"이라고 생각할 수 있는 World ID 프로토콜 (opens in a new tab)입니다. 이를 통해 사람들은 개인 정보를 공개하지 않고도 자신이 고유한 개인임을 증명할 수 있습니다. 이는 사람의 홍채를 스캔하여 홍채 코드를 생성하는 Orb라는 장치를 통해 이루어집니다. 홍채 코드를 확인하고 검증하여 해당 사람이 생물학적으로 고유한 인간인지 확인합니다. 검증 후, 사용자 기기에서 생성된(생체 데이터와 연결되거나 파생되지 않은) 신원 커밋먼트가 블록체인의 안전한 목록에 추가됩니다. 그런 다음 사용자가 로그인, 투표 또는 기타 작업을 수행하기 위해 자신이 검증된 인간임을 증명하고자 할 때마다 목록의 구성원임을 확인하는 영지식 증명을 생성할 수 있습니다. 영지식 증명을 사용하는 것의 장점은 단 하나의 진술, 즉 이 사람이 고유하다는 사실만 공개된다는 것입니다. 다른 모든 것은 프라이버시로 유지됩니다.

World ID는 이더리움 재단의 PSE 팀 (opens in a new tab)이 개발한 Semaphore 프로토콜 (opens in a new tab)에 의존합니다. Semaphore는 영지식 증명을 생성하고 검증하는 가볍고 강력한 방법으로 설계되었습니다. 이를 통해 사용자는 자신이 그룹의 어떤 구성원인지 보여주지 않고도 그룹(이 경우 검증된 인간)의 일부임을 증명할 수 있습니다. 또한 Semaphore는 매우 유연하여 신원 확인, 이벤트 참여 또는 자격 증명 소유와 같은 다양한 기준에 따라 그룹을 생성할 수 있습니다.

인증

온라인 서비스를 사용하려면 신원과 해당 플랫폼에 액세스할 권리를 증명해야 합니다. 이를 위해서는 이름, 이메일 주소, 생년월일 등과 같은 개인 정보를 제공해야 하는 경우가 많습니다. 또한 긴 비밀번호를 외워야 하거나 액세스 권한을 잃을 위험을 감수해야 할 수도 있습니다.

그러나 영지식 증명은 플랫폼과 사용자 모두를 위한 인증을 단순화할 수 있습니다. 공개 입력(예: 사용자가 플랫폼의 회원임을 증명하는 데이터)과 비공개 입력(예: 사용자의 세부 정보)을 사용하여 ZK 증명이 생성되면, 사용자는 서비스에 액세스해야 할 때 이를 제시하여 신원을 인증하기만 하면 됩니다. 이는 사용자 경험을 향상시키고 조직이 방대한 양의 사용자 정보를 저장할 필요성을 없애줍니다.

검증 가능한 연산

검증 가능한 연산은 블록체인 설계를 개선하기 위한 영지식 기술의 또 다른 응용 분야입니다. 검증 가능한 컴퓨팅을 사용하면 검증 가능한 결과를 유지하면서 연산을 다른 엔티티에 아웃소싱할 수 있습니다. 엔티티는 프로그램이 올바르게 실행되었음을 검증하는 증명과 함께 결과를 제출합니다.

검증 가능한 연산은 보안을 저하시키지 않으면서 블록체인의 처리 속도를 향상시키는 데 매우 중요합니다. 이를 이해하려면 이더리움 확장을 위해 제안된 솔루션의 차이점을 알아야 합니다.

샤딩과 같은 온체인 확장 솔루션은 블록체인의 기본 레이어에 대한 광범위한 수정이 필요합니다. 그러나 이 접근 방식은 매우 복잡하며 구현 오류로 인해 이더리움의 보안 모델이 훼손될 수 있습니다.

오프체인 확장 솔루션은 핵심 이더리움 프로토콜을 재설계할 필요가 없습니다. 대신 아웃소싱된 연산 모델에 의존하여 이더리움 기본 레이어의 처리량을 향상시킵니다.

실제 작동 방식은 다음과 같습니다.

  • 이더리움은 모든 트랜잭션을 처리하는 대신 별도의 체인으로 실행을 오프로드합니다.

  • 트랜잭션을 처리한 후 다른 체인은 이더리움의 상태에 적용할 결과를 반환합니다.

여기서의 이점은 이더리움이 어떠한 실행도 수행할 필요가 없으며 아웃소싱된 연산의 결과를 상태에 적용하기만 하면 된다는 것입니다. 이는 네트워크 혼잡을 줄이고 트랜잭션 속도도 향상시킵니다(오프체인 프로토콜은 더 빠른 실행을 위해 최적화됨).

체인은 오프체인 트랜잭션을 다시 실행하지 않고 검증할 방법이 필요하며, 그렇지 않으면 오프체인 실행의 가치가 상실됩니다.

여기서 검증 가능한 연산이 역할을 합니다. 노드가 이더리움 외부에서 트랜잭션을 실행할 때 오프체인 실행의 정확성을 증명하기 위해 영지식 증명을 제출합니다. 이 증명(이라고 함)은 트랜잭션이 유효함을 보장하여 이더리움이 누군가 이의를 제기할 때까지 기다리지 않고 결과를 상태에 적용할 수 있도록 합니다.

영지식 롤업발리디움(validiums)은 유효성 증명을 사용하여 안전한 확장성을 제공하는 두 가지 오프체인 확장 솔루션입니다. 이러한 프로토콜은 오프체인에서 수천 개의 트랜잭션을 실행하고 이더리움에서 검증을 위한 증명을 제출합니다. 증명이 검증되면 해당 결과를 즉시 적용할 수 있으므로 이더리움은 기본 레이어의 연산을 늘리지 않고도 더 많은 트랜잭션을 처리할 수 있습니다.

레이어 2 (l2) 확장을 넘어 영지식 증명은 이더리움 레이어 1 (l1) 블록 실행 자체를 검증할 수도 있습니다. L1 검증을 위한 zkEVM은 검증자가 모든 트랜잭션을 다시 실행하는 대신 증명을 확인하여 블록을 검증할 수 있도록 하여 검증자 하드웨어 요구 사항을 높이지 않고도 더 높은 가스 한도를 가능하게 합니다.

온체인 투표에서 뇌물 수수 및 담합 감소

블록체인 투표 체계는 완전히 감사 가능하고, 공격에 안전하며, 검열에 강하고, 지리적 제약이 없다는 등 많은 유리한 특성을 가지고 있습니다. 그러나 온체인 투표 체계조차도 담합 문제에서 자유롭지 않습니다.

"다른 사람을 속이고, 기만하고, 오도하여 공개 경쟁을 제한하기 위해 조정하는 것"으로 정의되는 담합은 악의적인 행위자가 뇌물을 제공하여 투표에 영향을 미치는 형태를 취할 수 있습니다. 예를 들어, Alice는 option A를 선호하더라도 투표에서 option B에 투표하는 대가로 Bob으로부터 뇌물을 받을 수 있습니다.

뇌물 수수와 담합은 투표를 신호 메커니즘으로 사용하는 모든 프로세스(특히 사용자가 어떻게 투표했는지 증명할 수 있는 경우)의 효과를 제한합니다. 이는 특히 투표가 희소한 자원을 할당하는 역할을 하는 경우 심각한 결과를 초래할 수 있습니다.

예를 들어, 쿼드래틱 펀딩 메커니즘 (opens in a new tab)은 기부금에 의존하여 다양한 공공재 프로젝트 중 특정 옵션에 대한 선호도를 측정합니다. 각 기부금은 특정 프로젝트에 대한 "투표"로 간주되며, 더 많은 투표를 받은 프로젝트는 매칭 풀에서 더 많은 자금을 받습니다.

온체인 투표를 사용하면 쿼드래틱 펀딩이 담합에 취약해집니다. 블록체인 트랜잭션은 공개되므로 뇌물 공여자는 뇌물 수수자의 온체인 활동을 검사하여 그들이 어떻게 "투표"했는지 확인할 수 있습니다. 이런 식으로 쿼드래틱 펀딩은 커뮤니티의 집계된 선호도에 따라 자금을 할당하는 효과적인 수단이 되지 못합니다.

다행히도 MACI(Minimum Anti-Collusion Infrastructure)와 같은 최신 솔루션은 영지식 증명을 사용하여 온체인 투표(예: 쿼드래틱 펀딩 메커니즘)가 뇌물 수수 및 담합에 저항할 수 있도록 합니다. MACI는 중앙 관리자("코디네이터"라고 함)가 각 개인이 어떻게 투표했는지에 대한 세부 정보를 공개하지 않고도 투표를 집계하고 결과를 계산할 수 있도록 하는 스마트 컨트랙트 및 스크립트 세트입니다. 그럼에도 불구하고 투표가 제대로 집계되었는지 검증하거나 특정 개인이 투표 라운드에 참여했는지 확인하는 것은 여전히 가능합니다.

MACI는 영지식 증명과 어떻게 작동하나요?

처음에 코디네이터는 이더리움에 MACI 컨트랙트를 배포하고, 그 후 사용자는 (스마트 컨트랙트에 공개키를 등록하여) 투표에 등록할 수 있습니다. 사용자는 공개키로 암호화된 메시지를 스마트 컨트랙트로 전송하여 투표합니다(유효한 투표는 다른 기준 중에서도 사용자 신원과 연결된 가장 최근의 공개키로 서명되어야 합니다). 그 후 코디네이터는 투표 기간이 끝나면 모든 메시지를 처리하고 투표를 집계하며 온체인에서 결과를 검증합니다.

MACI에서 영지식 증명은 코디네이터가 투표를 잘못 처리하고 결과를 집계하는 것을 불가능하게 만들어 연산의 정확성을 보장하는 데 사용됩니다. 이는 코디네이터가 a) 모든 메시지가 올바르게 처리되었고 b) 최종 결과가 모든 유효한 투표의 합과 일치함을 검증하는 영지식 스나크 증명을 생성하도록 요구함으로써 달성됩니다.

따라서 (일반적인 경우처럼) 사용자별 투표 내역을 공유하지 않더라도 MACI는 집계 과정에서 계산된 결과의 무결성을 보장합니다. 이 기능은 기본적인 담합 체계의 효과를 줄이는 데 유용합니다. Bob이 Alice에게 옵션에 투표하도록 뇌물을 주는 이전 예를 사용하여 이 가능성을 살펴볼 수 있습니다.

  • Alice는 스마트 컨트랙트에 공개키를 전송하여 투표에 등록합니다.
  • Alice는 Bob으로부터 뇌물을 받는 대가로 option B에 투표하는 데 동의합니다.
  • Alice는 option B에 투표합니다.
  • Alice는 자신의 신원과 연결된 공개키를 변경하기 위해 암호화된 트랜잭션을 비밀리에 전송합니다.
  • Alice는 새로운 공개키를 사용하여 option A에 투표하는 또 다른 (암호화된) 메시지를 스마트 컨트랙트에 전송합니다.
  • Alice는 Bob에게 자신이 option B에 투표했음을 보여주는 트랜잭션을 보여줍니다(공개키가 더 이상 시스템에서 Alice의 신원과 연결되어 있지 않으므로 이는 무효입니다).
  • 메시지를 처리하는 동안 코디네이터는 option B에 대한 Alice의 투표를 건너뛰고 option A에 대한 투표만 계산합니다. 따라서 Alice와 담합하여 온체인 투표를 조작하려는 Bob의 시도는 실패합니다.

MACI를 사용하려면 코디네이터가 뇌물 공여자와 담합하거나 유권자에게 직접 뇌물을 주려고 시도하지 않을 것이라고 신뢰해야 합니다. 코디네이터는 사용자 메시지를 해독할 수 있으므로(증명 생성에 필요) 각 사람이 어떻게 투표했는지 정확하게 확인할 수 있습니다.

그러나 코디네이터가 정직하게 유지되는 경우 MACI는 온체인 투표의 신성함을 보장하는 강력한 도구입니다. 이는 각 개인의 투표 선택의 무결성에 크게 의존하는 쿼드래틱 펀딩 애플리케이션(예: clr.fund (opens in a new tab)) 사이에서 인기가 있는 이유를 설명합니다.

MACI에 대해 자세히 알아보기 (opens in a new tab).

영지식 증명은 어떻게 작동하나요?

영지식 증명을 사용하면 진술의 내용을 공유하거나 진실을 발견한 방법을 밝히지 않고도 진술의 진실성을 증명할 수 있습니다. 이를 가능하게 하기 위해 영지식 프로토콜은 일부 데이터를 입력으로 받아 '참' 또는 '거짓'을 출력으로 반환하는 알고리즘에 의존합니다.

영지식 프로토콜은 다음 기준을 충족해야 합니다.

  1. 완전성(Completeness): 입력이 유효한 경우 영지식 프로토콜은 항상 '참'을 반환합니다. 따라서 기본 진술이 참이고 증명자와 검증자가 정직하게 행동한다면 증명이 수락될 수 있습니다.

  2. 건전성(Soundness): 입력이 유효하지 않은 경우 영지식 프로토콜을 속여 '참'을 반환하도록 하는 것은 이론적으로 불가능합니다. 따라서 거짓말을 하는 증명자는 정직한 검증자를 속여 유효하지 않은 진술이 유효하다고 믿게 할 수 없습니다(아주 작은 확률의 마진 제외).

  3. 영지식(Zero-knowledge): 검증자는 진술의 유효성 또는 허위성 외에는 진술에 대해 아무것도 알지 못합니다(진술에 대해 "영지식"을 가짐). 이 요구 사항은 또한 검증자가 증명에서 원래 입력(진술의 내용)을 도출하는 것을 방지합니다.

기본 형태로 영지식 증명은 증거(witness), 도전(challenge), **응답(response)**의 세 가지 요소로 구성됩니다.

  • 증거: 영지식 증명을 통해 증명자는 숨겨진 정보에 대한 지식을 증명하고자 합니다. 비밀 정보는 증명에 대한 "증거"이며, 증명자가 증거에 대해 알고 있다고 가정하면 해당 정보에 대한 지식이 있는 당사자만 대답할 수 있는 일련의 질문이 설정됩니다. 따라서 증명자는 무작위로 질문을 선택하고 답을 계산하여 검증자에게 전송함으로써 증명 프로세스를 시작합니다.

  • 도전: 검증자는 세트에서 무작위로 다른 질문을 선택하고 증명자에게 대답하도록 요청합니다.

  • 응답: 증명자는 질문을 수락하고 답을 계산하여 검증자에게 반환합니다. 증명자의 응답을 통해 검증자는 전자가 실제로 증거에 액세스할 수 있는지 확인할 수 있습니다. 증명자가 맹목적으로 추측하여 우연히 정답을 맞히는 것이 아님을 확인하기 위해 검증자는 더 많은 질문을 선택하여 묻습니다. 이 상호 작용을 여러 번 반복함으로써 증명자가 증거에 대한 지식을 속일 가능성은 검증자가 만족할 때까지 크게 떨어집니다.

위 내용은 '대화형 영지식 증명'의 구조를 설명합니다. 초기 영지식 프로토콜은 대화형 증명을 사용했으며, 여기서 진술의 유효성을 검증하려면 증명자와 검증자 간의 왕복 통신이 필요했습니다.

대화형 증명이 어떻게 작동하는지 보여주는 좋은 예는 Jean-Jacques Quisquater의 유명한 알리바바 동굴 이야기 (opens in a new tab)입니다. 이 이야기에서 Peggy(증명자)는 Victor(검증자)에게 마법의 문을 여는 비밀 문구를 알고 있다는 것을 문구를 밝히지 않고 증명하고 싶어 합니다.

비대화형 영지식 증명

혁신적이긴 하지만 대화형 증명은 두 당사자가 모두 참여 가능하고 반복적으로 상호 작용해야 했기 때문에 유용성이 제한적이었습니다. 검증자가 증명자의 정직성을 확신하더라도 독립적인 검증을 위해 증명을 사용할 수 없었습니다(새로운 증명을 계산하려면 증명자와 검증자 간의 새로운 메시지 세트가 필요했습니다).

이 문제를 해결하기 위해 Manuel Blum, Paul Feldman, Silvio Micali는 증명자와 검증자가 공유 키를 갖는 최초의 비대화형 영지식 증명 (opens in a new tab)을 제안했습니다. 이를 통해 증명자는 정보 자체를 제공하지 않고도 일부 정보(즉, 증거)에 대한 지식을 입증할 수 있습니다.

대화형 증명과 달리 비대화형 증명은 참가자(증명자와 검증자) 간에 단 한 번의 통신 라운드만 필요했습니다. 증명자는 비밀 정보를 특수 알고리즘에 전달하여 영지식 증명을 계산합니다. 이 증명은 검증자에게 전송되며, 검증자는 다른 알고리즘을 사용하여 증명자가 비밀 정보를 알고 있는지 확인합니다.

비대화형 증명은 증명자와 검증자 간의 통신을 줄여 ZK 증명을 더 효율적으로 만듭니다. 또한 증명이 생성되면 (공유 키 및 검증 알고리즘에 액세스할 수 있는) 누구나 검증할 수 있습니다.

비대화형 증명은 영지식 기술의 획기적인 발전을 나타내며 오늘날 사용되는 증명 시스템의 개발을 촉진했습니다. 아래에서 이러한 증명 유형에 대해 설명합니다.

영지식 증명의 유형

영지식 스나크 (ZK-SNARKs)

영지식 스나크(ZK-SNARK)는 **Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(영지식 간결한 비대화형 지식 인수)**의 약자입니다. 영지식 스나크 프로토콜은 다음과 같은 특성을 갖습니다.

  • 영지식(Zero-knowledge): 검증자는 진술에 대해 다른 것을 알지 못해도 진술의 무결성을 검증할 수 있습니다. 검증자가 진술에 대해 아는 유일한 지식은 그것이 참인지 거짓인지 여부입니다.

  • 간결성(Succinct): 영지식 증명은 증거보다 작으며 빠르게 검증할 수 있습니다.

  • 비대화형(Non-interactive): 여러 라운드의 통신이 필요한 대화형 증명과 달리 증명자와 검증자가 한 번만 상호 작용하기 때문에 증명은 '비대화형'입니다.

  • 인수(Argument): 증명은 '건전성' 요구 사항을 충족하므로 속임수를 쓸 가능성이 극히 낮습니다.

  • 지식(Knowledge): 비밀 정보(증거)에 액세스하지 않고는 영지식 증명을 구성할 수 없습니다. 증거가 없는 증명자가 유효한 영지식 증명을 계산하는 것은 불가능하지는 않더라도 어렵습니다.

앞서 언급한 '공유 키'는 증명자와 검증자가 증명을 생성하고 검증하는 데 사용하기로 동의한 공개 매개변수를 나타냅니다. 공개 매개변수(총칭하여 공통 참조 문자열(CRS)이라고 함)를 생성하는 것은 프로토콜의 보안에서 중요하기 때문에 민감한 작업입니다. CRS를 생성하는 데 사용되는 엔트로피(무작위성)가 부정직한 증명자의 손에 들어가면 거짓 증명을 계산할 수 있습니다.

다자간 연산(MPC) (opens in a new tab)은 공개 매개변수 생성 시 위험을 줄이는 방법입니다. 여러 당사자가 신뢰할 수 있는 설정 (opens in a new tab) 세리머니에 참여하며, 여기서 각 사람은 CRS를 생성하기 위해 일부 무작위 값을 기여합니다. 한 명의 정직한 당사자라도 자신의 엔트로피 부분을 파기하는 한 영지식 스나크 프로토콜은 연산적 건전성을 유지합니다.

신뢰할 수 있는 설정은 사용자가 매개변수 생성에 참여하는 참가자를 신뢰해야 합니다. 그러나 ZK-스탁의 개발로 신뢰할 수 없는 설정에서 작동하는 증명 프로토콜이 가능해졌습니다.

ZK-스탁 (ZK-STARKs)

ZK-스탁(ZK-STARK)은 **Zero-Knowledge Scalable Transparent Argument of Knowledge(영지식 확장 가능하고 투명한 지식 인수)**의 약자입니다. ZK-스탁은 다음과 같은 점을 제외하고 영지식 스나크와 유사합니다.

  • 확장성(Scalable): ZK-스탁은 증거의 크기가 더 클 때 증명을 생성하고 검증하는 데 영지식 스나크보다 빠릅니다. STARK 증명의 경우 증거가 커짐에 따라 증명자 및 검증 시간이 약간만 증가합니다(SNARK 증명자 및 검증자 시간은 증거 크기에 비례하여 선형적으로 증가함).

  • 투명성(Transparent): ZK-스탁은 신뢰할 수 있는 설정 대신 공개적으로 검증 가능한 무작위성에 의존하여 증명 및 검증을 위한 공개 매개변수를 생성합니다. 따라서 영지식 스나크에 비해 더 투명합니다.

ZK-스탁은 영지식 스나크보다 더 큰 증명을 생성하므로 일반적으로 검증 오버헤드가 더 높습니다. 그러나 (대규모 데이터 세트를 증명하는 것과 같이) ZK-스탁이 영지식 스나크보다 비용 효율적일 수 있는 경우가 있습니다.

영지식 증명 사용의 단점

하드웨어 비용

영지식 증명을 생성하려면 특수 기계에서 가장 잘 수행되는 매우 복잡한 계산이 필요합니다. 이러한 기계는 비싸기 때문에 일반 개인이 접근하기 어려운 경우가 많습니다. 또한 영지식 기술을 사용하려는 애플리케이션은 하드웨어 비용을 고려해야 하며, 이는 최종 사용자의 비용을 증가시킬 수 있습니다.

증명 검증 비용

증명을 검증하는 데에도 복잡한 연산이 필요하며 애플리케이션에 영지식 기술을 구현하는 비용이 증가합니다. 이 비용은 연산을 증명하는 맥락에서 특히 관련이 있습니다. 예를 들어, 영지식 롤업은 이더리움에서 단일 영지식 스나크 증명을 검증하는 데 약 500,000 가스를 지불하며, ZK-스탁은 훨씬 더 높은 수수료를 요구합니다.

신뢰 가정

영지식 스나크에서 공통 참조 문자열(공개 매개변수)은 한 번 생성되며 영지식 프로토콜에 참여하려는 당사자가 재사용할 수 있습니다. 공개 매개변수는 참가자가 정직하다고 가정하는 신뢰할 수 있는 설정 세리머니를 통해 생성됩니다.

그러나 사용자가 참가자의 정직성을 평가할 방법은 실제로 없으며 사용자는 개발자의 말을 믿어야 합니다. ZK-스탁은 문자열을 생성하는 데 사용되는 무작위성이 공개적으로 검증 가능하기 때문에 신뢰 가정에서 자유롭습니다. 한편, 연구원들은 증명 메커니즘의 보안을 높이기 위해 영지식 스나크에 대한 신뢰할 수 없는 설정을 연구하고 있습니다.

양자 컴퓨팅 위협

영지식 스나크는 암호화에 타원 곡선 암호학을 사용합니다. 타원 곡선 이산 로그 문제는 현재로서는 풀기 어려운 것으로 가정되지만, 양자 컴퓨터의 발전으로 인해 미래에 이 보안 모델이 깨질 수 있습니다.

ZK-스탁은 보안을 위해 충돌 저항성 해시 함수에만 의존하기 때문에 양자 컴퓨팅의 위협에 면역이 있는 것으로 간주됩니다. 타원 곡선 암호학에 사용되는 공개키-개인 키 쌍과 달리 충돌 저항성 해싱은 양자 컴퓨팅 알고리즘이 깨기 더 어렵습니다.

더 읽어보기