Qaupot Blog
Software Engineering, Trip

이 글을 이해하기 위해 컴퓨터 공학 지식이 일부 필요할 수 있습니다.

Zero Knowledge Proof (영지식 증명)

Zero Knowledge Proof 는 무엇인가를 증명할 때, 그 무엇인가를 밝히지 않고 증명하는 방식입니다.

KeyPair 기반의 블록체인에서는 Address 소유권을 증명하기 위해서, 소유자는 Private Key 를 보관하고, Address (Public Key) 를 공개합니다. 매 증명 시점에는 Private Key 와 연관된 데이터 (Knowledge) 가 공개됩니다.

블록체인은 모든 Tx 정보가 공개되는 특성이 있습니다.

  • 공개된 Address 를 추적하면, 소유자가 어떠한 행동을 취했는지 알 수 있습니다.
  • 공개된 Tx 정보를 활용하여 Private Key 를 알아내기 위한 공격을 시도할 수 있습니다.
    • 특정 조건이 갖춰진다면, Private Key 를 찾아낼 수 있는 방법이 존재합니다.

Zero Knowledge Proof 는 'Knowledge' 를 제공하지 않음으로써, 익명성을 강화합니다.

Verifiable Computation Algorithm

  1. KeyGen : λ (보안 파라미터) 와 함수 f 를 통해 EKf(증명키) 와 VKf(검증키) pair 를 생성합니다. 모두 공개키 입니다.
  2. Compute : EKf 와 함수 f 입력 값인 u 를 통해 y와 π를 생성합니다.
  3. Verify : VKf 와 u 및 y 를 통해 π가 맞는지 검증합니다.

Zero Knowledge Proof Algorithm

  1. KeyGen : λ (보안 파라미터) 와 함수 f 를 통해 EKf(증명키) 와 VKf(검증키) pair 를 생성합니다. 모두 공개키 입니다.
  2. Prove : EKf 와 공개 x 및 비밀 w 를 통해 y와 π를 생성합니다.
  3. Verify : VKf 와 공개 x 및 y 를 통해 π가 맞는지 검증합니다.

The Strange Cave of Alibaba

How to Explain Zero-Knowledge Protocols to Your Children 에 제시된 예제입니다.

시장에서 물건을 팔던 알리바바의 물건을 도둑이 훔쳐서 갈림길이 2개 (A 와 B) 인 동굴로 도망갔습니다.
알리바바는 동굴의 막다른 길까지 쫓아 들어갔지만, 도둑을 찾을 수 없었습니다. 
이 일이 반복되자, 알리바바는 동굴이 이상하다고 생각하고 막다른 길에 숨어 있다가 놀라운 비밀을 알게 됩니다.
도둑이 "Open Sesame" (열려라 참깨) 라고 하자, 동굴의 벽이 열렸고, 잠시 후 다시 닫혔습니다.

갈림길이 2개 (A 와 B) 인 동굴이 있으며, 두 갈림길 입구는 내부적으로 하나의 동굴로 연결되어 있지만, 비밀번호를 알아야만 통과할 수 있습니다.

증명자는 자신이 비밀번호를 알고 있음을 증명하려 하고, 검증자는 증명자가 비밀번호를 알고 있는지 확인하려 합니다.

  1. 증명자가 먼저 동굴에 들어갑니다.
  2. 검증자는 갈림길에서, 증명자에게 지정한 방향으로 나오라고 지시합니다.
  3. 증명자가 지정한 방향으로 나옵니다.

우연하게 지정한 출구로 나올 수 있을지도 모르므로, 이를 충분히 반복합니다. 계속해서 검증자가 원하는 결과를 낼 수 있다면, 증명자는 비밀번호를 가지고 있다고 볼 수 있습니다.

  • 입구가 2개인 상황에서 정답을 맞출 확률은 1/2 입니다.
  • N 회 시행을 반복해서 모두 정답을 맞출 확률은 (1/2)^N 입니다.

zk-SNARKs

Zero-Knowledge Succinct Non-Interactive Argument of Knowledge

자세한 설명은 zk-SNARKs 페이지를 참조해주세요.

Reference

이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.