Greetings! New to Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

언어

Improved zk-SNARK 다자간 계산 프로토콜

Sean Bowe, Ariel Gabizon and Ian Miers | Oct 31, 2017

zk-SNARKs – Zcash 의 영지식 증명의 핵심 – 증명 생성을 원하는 모든 거래내역서에 발생을 시키기위한 매개변수 생성 세레모니(ceremony) 필요. 프라이버시가 zk-SNARK에 의해 절대적으로 보호되기는 하나, 이 양식이 훼손되면 Zcash를 위조 할 수 있게 됩니다. 따라서 이러한 매개변수들이 안전하게 생성되도록 하는 것이 중요합니다.

지난해에, Zcash는 다자간 계산 (MPC) 프로토콜을 사용한 이러한 세레모니를 수행 하였습니다. 이러한 프로토콜들은 결과로 나오는 매개변수들의 안전을 보장하기 위해 하나의 당사자만 타협하지 않아야 할 속성이 있습니다. 다시 말해서, 세레모니를 타협하기 위해서 당사자 이외의 모든 참가자의 타협이 필요했습니다.

그러나, 세레모니에 사용했던 프로토콜은 소수 참가자 이상을 확장 할 수 없었습니다. 우리가 계속 Zcash를 업그레이드를 해야하므로, 이러한 설정을 더 많이 수행해야 할 필요가 있어, 이 프로토콜의 확장성과 성능을 향상시키는 것이 우리에게는 매우 중요합니다. Zak-SNARK를 사용하고자하는 Zcash 외부 프로젝트는 자체 설정을 수행해야 할 수도 있습니다. 그래서 우리는 또한 저렴하고 쉽게 만들어야 합니다.

Ariel Gabizon, Ian Miers 와 저는 실제 무제한의 참가자로 확장 할 수 있는 새로운 MPC 프로토콜을 상세히 다루는 논문 을 발표하였습니다. 이 논문에는 강화된 타원 곡선 구조인 BLS12-381을 포함하고 있는데, 이에 대해 전에 에 대한 블로그 를 올렸었습니다.

플레이어 교환가능 MPC

모든 참가자들은 어댑티브 공격(adaptive attacks)에 대한 방어를 위해 사전에 "유해 물질(toxic waste)"의 공유를 수행할 필요가 있습니다. 이것은 모든 참여자가 프로토콜의 전체 기간동안 있어야 하며, 전체 프로토콜이 중단되지 않고서는 아무도 중단 시킬 수 없다는 것을 의미했습니다. 참가자들은 이 과정에서 자신들의 하드웨어를 관리 할 필요가 있었기 때문에 이 세레모니는 소규모의 사람 이상으로 확장할 수 없었습니다.

당사의 새로운 프로토콜은 플레이어-교환가능 MPC 라고 부르고 싶습니다. 이전처럼, 안전을 위해 단 하나의 참가자만이 세레모니에 대해 정직해야 합니다. 그러나 전과 다르게 참가자들은 프로토콜에 참여하고 자신의 역할을 수행한 후 즉시 나가게됩니다. 이를 통해 세레모니가 수 많은 참가자에게 확장되고 더 오랜 기간 동안 진행될 수 있게됩니다. 또한 참가자의 공격 영역을 줄이고 값 비싼 동기화가 필요없게 됩니다.

두 단계

원시 MPC 프로토콜에는 세 단계의 계산이 포함되었습니다. 참가자들은 수행하고 행동하고 다음단계에서의 차례를 기다릴 필요가 있었습니다. 1 단계와 2 단계 사이에 매우 비싼 고속 푸리에 변환(fast-fourier transform) 을 수행해야 했습니다. 이로 인하여, 원래 MPC의 성능은 좋지 않았습니다.

새로운 프로토콜에서는 MPC를 두 단계로 줄이도록 노력하였습니다. 게다가 첫 번째 단계는 정확한 zk-SNARK 회로에 대한 불가지론자이므로 zk-SNARK를 사용하려는 모든 프로젝트에서 이 단계를 평가하는 대형 공동 세레모니가 수행 될 수 있습니다. 두 번째 단계는 고속 푸리에 변환이 필요 없으므로 Zcash 및 기타 프로젝트의 MPC는 큰 비용없이 무한대의 참가자에게 확장 될 수 있습니다.

우리는 새로운 BLS12-381 타원 곡선을 사용하는 러스트(Rust) 언어로 작성된 다자간 계산 세레모니의 첫 단계 구현을 시작했습니다.

요약

새로운 프로토콜은 zk-SNARK 매개변수 생성 양식을 더 안전하게 수행할 수 있습니다:

  • 세레모니에 더 많은 수의 참가자가 참여할 수 있게 해 주며, 매개변수들이 안전하다는 것을 보장하기 위해 참여자 중 한 사람만이 정직하고 동일한 속성을 갖게 됩니다.
  • 참여자들이 참여하고 있는 하드웨어와 운영체제에 상당한 유연성을 제공해줍니다. 따라서, 반드시 검사해야 하는 의존성과 코드의 갯수를 줄여주게 됩니다.
  • 참가자들이 세레모니에서 있어야 할 시간을 크게 줄여 공격의 면적을 줄이고 더 많은 참가자들이 기여할 수 있도록 합니다.
  • 보안을 향상시키는 강화된 타원 곡선 구조를 사용합니다.

곧 zk-SNARK 매개변수 생성 세레모니에 대한 자세한 내용 공유를 기대하고 있습니다.

zkSNARKs, cryptography, Parameter Generation | 모든 태그 보기