한 기사에서 블록체인의 영지식 증명 읽기
BFTF技术社区联盟
2018-09-20 07:23
本文约3806字,阅读全文需要约15分钟
영지식 증명이란 무엇입니까? ZCash의 영지식 증명 원칙과 Monero의 개인 정보 보호 체계는 무엇입니까?

이 기사의 출처: BFTF(ID:bftf2018)텍스트

이 기사의 출처:

, 저자: Wu Qiong.

영지식 증명은 확률 기반 검증 방식으로 검증 내용에는 '사실적 진술'과 '개인 지식에 대한 진술'이 포함된다. 검증자는 일정한 무작위성을 기반으로 증명자에게 질문을 하고, 정답을 줄 수 있다면 증명자는 자신이 주장하는 "지식"을 가지고 있을 확률이 높다는 것을 의미합니다. 영지식 증명 시스템은 두 부분으로 구성됩니다. 특정 명제가 참이라고 선언하는 증명자와 명제가 실제로 참임을 확인하는 검증자입니다. 증명은 이 두 부분 간의 상호 작용을 통해 수행됩니다. 영지식 프로토콜의 끝에서 검증자는 명제가 참인지 확인만 합니다. 그러나 증명자가 잘못된 명제를 주장하는 경우 검증자가 오류를 발견하는 것이 전적으로 가능합니다.

다음은 이해를 돕기 위해 아주 전형적인 영지식 증명의 예입니다.

강도에게 붙잡힌 알리바바는 목숨을 구하기 위해 돌문을 열 수 있는 암호가 있음을 강도들에게 증명해야 했습니다.

동시에 암호는 강도에게 말할 수 없습니다. 그는 해결책을 내놓았습니다. 강도들이 먼저 화살을 놔두고

그 거리는 강도가 암호를 들을 수 없을 만큼 멀고, 거리는 알리바바가 강도의 활과 화살 아래에서 빠져나올 수 없을 만큼 가깝다.

강도가 왼손을 들면 알리바바는 암호를 사용하여 석문을 열고 오른손을 들면 석문을 닫습니다.

이 거리에서 알리바바는 강도들에게 돌문이 열리고 닫히는 모습을 보여주었다. 게이트가 매번 올바르게 열리고 닫힐 수 있다면 Alibaba가 Shimen의 암호를 알고 있음이 확인됩니다.

  1. 이 전체 프로세스는 영지식 증명입니다. 즉, 증명자는 검증자에게 유용한 정보(석문의 암호)를 제공하지 않고도 특정 주장(Alibaba는 Shimen을 여는 방법을 알고 있음)이 정확하다고 검증자를 설득할 수 있습니다.

  2. 이를 통해 영지식 증명의 세 가지 속성을 요약할 수 있습니다.

  3. 진술이 사실이라면 정직한 검증자(예: 프로토콜을 올바르게 따르는 검증자)는 정직한 증명자를 통해 이 사실을 확신할 것입니다.

진술이 거짓이라면 사기꾼이 정직한 검증자를 그것이 사실이라고 확신시킬 수 있는 가능성을 배제하지 않습니다.

진술이 사실이라면 증명자의 목적은 검증자에게 증명하여 검증자로 하여금 자신이 어떤 메시지를 알고 있거나 가지고 있다고 믿게 하는 것이며, 증명 과정에서 증명된 메시지에 대한 내용을 검증자에게 누설할 수 없습니다.

Satoshi Nakamoto는 비트코인을 창의적으로 제안하고 분산형 거래 플랫폼을 구축하여 제3자 거래 플랫폼에 대한 장기적인 신뢰와 의존성을 제거했지만 동시에 비트코인은 모든 거래를 네트워크에 브로드캐스팅해야 합니다. 전체 시스템의 보안은 즉, 모든 사람이 네트워크의 모든 거래를 볼 수 있으며 원래 Bitcoin 프로토콜은 거래의 발신자와 수신자의 주소를 지정하지 않습니다.모든 처리는 일부 신중한 공격자로 이어질 것입니다. 주소의 거래 특성을 분석하고 일부 실제 정보를 결합하여 주소와 실제 사람 사이의 해당 관계를 분석하면 사용자의 개인 정보에 숨겨진 위험이 커집니다. 이를 바탕으로 잘 알려진 몇 가지 프라이버시 코인이 도출되었으며, 그 중 영지식 증명이 매우 중요한 역할을 했습니다.

ZCash

영지식 증명을 사용하는 여러 블록체인 시스템을 소개합니다.

첫 번째 레벨 제목

  • 익명의 암호화폐 프로젝트로서 ZCash는 처음에는 Bitcoin의 암호화된 익명 계층으로만 존재했으며 나중에는 우수한 개인 정보 보호로 인해 독립적인 암호화폐가 되었습니다. Bitcoin과 마찬가지로 ZCash의 총 금액도 2,100만 개이며, 차이점은 진정한 익명성을 달성할 수 있다는 것입니다. 거래를 완료하기 위해 상대방이 얼마나 많은 돈을 가지고 있는지 알 필요조차 없습니다.

  • 그렇다면 ZCash는 어떻게 진정한 익명성과 개인 정보 보호를 달성합니까?

zk-SNARK 기술, 즉 영지식 증명 기술 활용: 통화의 출처 및 흐름 정보가 완전히 기밀이더라도 영지식 증명 기술은 돈을 쓰는 사용자가 실제로 통화를 소유하고 있는지 확인할 수 있습니다.

거래에 ZCash 디지털 통화를 사용할 때 거래의 원본 데이터를 자동으로 암호화하는 동시에 개별 거래는 데이터를 저장하기 위해 ZCash 노드가 필요하지 않고 "소비력"을 증명하기 위해 zk-SNARK만 필요합니다. 이는 주로 거래 과정에서 두 가지 지점에 반영되는데, 하나는 구체적인 거래 내용을 알지 못한 채 다른 사람이 거래의 유효성(또는 스마트 컨트랙트 함수 호출)을 검증하게 할 수 있는 것이고, 두 번째는 거래 내역도 장부에 기록할 수 있다는 점이다. 퍼블릭 블록체인 제거.

이런 식으로 거래의 두 당사자는 결코 나타나지 않는 것처럼 보이고 실제 거래가 완료되었습니다. 멜론을 먹는 사람들은 거래가 발생했다는 것만 알 뿐 통화 흐름을 추적할 수는 없습니다. 이러한 방식으로 진정한 "익명 거래"가 실현됩니다.

  • 보조 제목

zk-SNARK의 기술 구현

동형 은폐

동형 은닉은 영지식 증명을 어느 정도 실현할 수 있습니다.

  1. 예:

  2. A는 두 개의 비밀 숫자 x와 y를 가지고 있으며 이 두 숫자의 합이 7임을 B에게 증명해야 하며 다음 세 단계만 수행하면 됩니다.

  3. A는 f(x), f(y)를 계산하고 B에게 보냅니다.

  • 함수 f(x)는 가산 동형을 만족하기 때문에 B는 f(x+y)부터 f(x), f(y)까지 계산할 수 있습니다.

B는 독립적으로 f(7)을 계산하고 f(x+y)=f(7)임을 확인합니다.

다항식 블라인드 검증

다항식 블라인드 검증은 다항식에 가산 동형 특성을 사용합니다. (여기서 수학적 개념은 상대적으로 강해서 피상적인 이해만 할 수 있습니다)

  1. A가 최고 차수 d의 다항식 P를 알고 있고 B가 일부 s에 해당하는 E(P(s))를 알고 싶어한다고 가정합니다.

  2. 검증 과정에서 A는 P만 알고 s는 모르고, B는 s만 알고 P는 모르기를 바랍니다. 이는 다음과 같은 방법으로 달성할 수 있습니다.

  3. s의 각 인덱스에 대해 B는 E(1), E(s), ..., E(sd)를 계산하고 A로 보냅니다.

    A는 다항식의 모든 계수를 알고 있으며 동형 속성을 사용하여 P(s)를 계산하고 B에게 다시 보낼 수 있습니다.

    KCA(Knowledge of Coefficient Test and Assumption) 및 완전한 다항식 블라인드 검증.

  4. 위에서 제공한 다항식 블라인드 검증 방법에는 치명적인 문제가 있습니다. 즉, B는 A가 결과를 계산하기 위해 다항식 P(s)를 실제로 사용하는지 확인할 수 없습니다. 즉, A가 실제로 다항식 P(X를 알고 있음을 증명할 수 없습니다. ). KCA는 위의 검증을 지속적으로 개선하고 있습니다.

    요컨대, 가산 동형을 통해 가산 은닉을 구현하여 B가 x와 y를 몰라도 x+y의 값을 확인할 수 있습니다. 또한 다항식 블라인드 검증을 통해 B가 다항식 P(X)를 노출하지 않고 주어진 s에 해당하는 P(s)를 검증하도록 할 수 있습니다.

  5. 다항식 증명으로 변환된 임의의 계산.

    확인 프로세스의 마지막 단계입니다.

모네로

첫 번째 레벨 제목

모네로

  1. 모네로는 현재 암호화된 디지털 화폐의 대표주자로서 매우 독창적인 암호화 기술을 적용하여 거래의 프라이버시를 보장합니다.

  2. 모네로의 두 가지 속성:

Unlinkability: 두 개의 거래가 동일한 사람에게 전송되었다는 것을 증명하는 것은 불가능합니다. 즉, 거래의 수신자가 누구인지 알 수 없습니다.

  1. Untraceability: 트랜잭션 발신자가 누구인지 알 수 없습니다.

    Monero의 기술적 구현:

    스텔스 주소

  2. Monero에서는 발신인이 거래를 시작하려고 할 때마다 먼저 수신인의 공개 키 정보를 사용하여 일회성 임시 중간 주소를 계산한 다음 금액을 이 중간 주소로 보내고 수신인은 자신의 공개-비공개 키를 사용합니다. 핵심 정보를 이용하여 트랜잭션을 찾아 지출할 수 있습니다.이렇게 하면 채굴자를 포함한 네트워크의 다른 사용자는 중간 주소가 누구에게 속하는지 확인할 수 없지만 여전히 트랜잭션의 유효성을 확인할 수 있습니다. 무작위로 재생성될 때마다 공격자는 실제 발신자 및 수신자와 연결할 수 없습니다.

    Alice가 Bob에게 계정을 전송하려고 한다고 가정하면 Bob은 블록체인의 모든 트랜잭션을 스캔한 다음 해당 정보를 계산하고 비교하여 그에게 전송된 트랜잭션을 찾아야 하기 때문에 Bob에게는 매우 스트레스가 될 것입니다. Monero는 이를 위해 개선된 솔루션을 제안합니다. 즉, Bob은 자신의 개인 키(a, B)의 절반을 제3자에게 넘겨주어 제3자가 블록체인에서 Bob에게 속한 모든 트랜잭션을 확인하는 데 도움을 줄 수 있도록 권한을 부여할 수 있습니다. Bob의 부담을 덜어주지만 결국 Bob만이 돈을 쓸 수 있습니다.

One-time Ring Signature (원타임 링 서명)

간단히 말해서 링 서명이 하는 일은 서명자의 공개 키를 다른 공개 키 세트와 혼합한 다음(개인 키는 알 수 없음) 메시지에 서명하여 서명 확인자(누구나 확인할 수 있음)가 혼합 세트의 어떤 공개 키가 실제 서명자에 해당하는지 구별하는 것은 불가능합니다.

Monero에서 사용되는 링 서명 기술의 전체 프로세스:

첫 번째 단계, 키 생성(GEN)

서명자는 먼저 개인 키 x를 임의로 선택한 다음 해당 공개 키를 계산합니다. 동시에 다른 공개 키가 계산됩니다. 이 공개 키 I를 "키 이미지"라고 하며, 각 서명에 대해 이 키 이미지는 고유하므로 나중에 서명이 이전에 등장했는지 여부를 확인하는 데에도 사용됩니다.

두 번째 단계, 서명(SIG)

먼저 서명자는 n개의 요소를 포함하는 공개키 집합을 임의로 선택한 다음 자신의 공개키와 혼합하여 혼합 집합 S를 생성합니다. S에서 혼합 서명자의 공개키 첨자가 s라고 가정하면 그의 공개키 시입니다. 그런 다음 서명자는 [1, l-1]에서 {qi, i = 0,...,n} 및 {wi, i=0,...,n,i!=s}를 무작위로 선택한 다음 a를 계산합니다. 비대화형 챌린지.

여기서 비인터랙티브는 인터랙티브 영지식 증명의 챌린지에 상대적이며, 인터랙티브 모드에서 챌린지는 검증자가 무작위로 선택한 값이며, 블록체인에서는 트랜잭션의 양 당사자가 블록체인만 통과할 수 있기 때문입니다. . 정보를 전송하지만 직접 상호 작용하지 않기 때문에 여기서는 비대화형 영지식 증명을 선택합니다. 이 챌린지의 이유는 증명자가 증거를 위조하여 검증자를 속이는 상황을 피하기 위해서입니다.

세 번째 부분, 서명 검증(VER)

서명의 유효성을 확인하기 위해 검증자는 먼저 계산한 다음 확인합니다. 일치하면 LNK를 실행하여 서명이 사용되었는지 확인하고, 일치하지 않으면 서명이 잘못된 것입니다.

4단계, 반복체크(LNK)

이를 위해서는 시스템이 모든 서명을 포함하는 이미지 모음을 유지한 다음 각 새 서명에 대해 해당 이미지가 컬렉션에 있는지 여부를 판단하여 서명이 이전에 등장했는지 여부를 판단해야 합니다. 이 단계 전에 이전 단계의 서명 확인 프로세스를 통과해야 합니다.

BFTF技术社区联盟
作者文库