a16z:기술 상세 설명 암호 프로젝트 탈중앙화 체인상 신뢰 설정 의식

a16z
2022-09-13 12:31:34
수집
현재 암호화 프로젝트는 중앙 집중화된 신뢰할 수 있는 설정 의식에 의존하고 있으며, a16z는 탈중앙화된 체인 상의 신뢰할 수 있는 설정 의식의 가능성을 탐색하고 있습니다.

저자: Valeria Nikolaenko, Sam Ragsdale, a16z

편집: Amber, Foresight News

신뢰할 수 있는 설정 의식(Trusted Setup Ceremony)은 암호화 커뮤니티에 도전 과제를 제기해왔지만, 이는 또한 암호화 커뮤니티를 가장 흥분시키는 요소이기도 합니다. 의식의 목표는 암호화 지갑, 블록체인 프로토콜 또는 제로 지식 증명 시스템을 보호하기 위한 신뢰할 수 있는 암호화 키를 생성하는 것입니다. 이러한 프로그램은 프로젝트의 보안성의 신뢰의 근본이므로, 정확한 작업과 신뢰할 수 있는 설정 의식의 실행을 보장하는 것이 매우 중요합니다.

현재 블록체인 프로젝트에서 신뢰할 수 있는 설정 의식을 수행하는 방법은 다양하며, blowtorches, radioactive dust, airplanes 등을 포함하지만 이에 국한되지 않습니다. 이러한 방법들은 모두 중앙 집중식 조정자에 의존한다는 공통점이 있습니다. 본 문서에서는 스마트 계약을 통해 중앙 집중식 조정자를 대체하여 프로세스를 탈중앙화하는 방법을 보여줄 것이며, 동시에 암호화 종사자들이 Kate-Zaverucha-Goldberg(KZG) 또는 "powers-of-tau"라고 부르는 의식을 이더리움에서 실행할 수 있도록 허용하는 라이브러리를 오픈 소스화할 것입니다.

우리의 탈중앙화 방법에는 한계가 있지만 여전히 유용합니다. 현재 체인 상의 데이터 제한으로 인해 암호화 매개변수의 크기는 64 KB를 초과할 수 없습니다. 그러나 참여자의 수에는 제한이 없으며, 누구나 언제든지 기여를 제출할 수 있습니다. 이러한 짧은 매개변수의 응용에는 소형 제로 지식 SNARK, 데이터 가용성 샘플링 및 Verkle 트리 등이 포함됩니다.

신뢰할 수 있는 설정 의식의 역사와 메커니즘

전형적인 신뢰할 수 있는 설정 의식에서, 일련의 참여자들이 협력하여 암호화 매개변수 집합을 생성합니다. 각 참여자는 로컬에서 생성된 암호화 정보를 사용하여 이러한 매개변수를 생성하는 데 도움이 되는 데이터를 생성합니다. 적절한 설정은 암호화 정보가 유출되지 않도록 보장하며, 암호화 정보는 프로토콜에 따라 지정된 방식으로만 사용될 수 있고, 의식이 끝날 때 이러한 암호화 정보는 완전히 파기됩니다. 의식 중 적어도 한 참여자가 정직하다고 보장하고 (의식 종료 후) 암호화 정보를 파기하면, 전체 프로세스는 안전한 것으로 간주될 수 있습니다. (물론, 코드에 오류가 없다는 전제 하에)

가장 주목할 만한 의식 중 일부는 Zcash에서 시작되었습니다. Zcash는 프라이버시 중심의 블록체인 프로젝트입니다. 이 의식의 참여자들은 Zcash 사용자가 개인 암호화 거래를 구축하고 검증할 수 있도록 하는 공공 매개변수를 생성했습니다. 2016년 여섯 명의 참여자가 첫 번째 Zcash 의식인 Sprout를 개최했습니다. 2년 후, 암호화 연구원 Ariel Gabizon(현재 Aztec의 수석 과학자)은 의식 설계에서 치명적인 오류를 발견했으며, 이는 기초 연구 논문에서 유래된 것이었습니다.

이 취약점은 공격자가 탐지되지 않은 상태에서 무한한 Zcash 코인을 생성할 수 있게 할 수 있었습니다. Zcash 팀은 이 취약점을 7개월 동안 비밀로 유지했으며, 시스템 업그레이드인 Sapling(90명의 참여자가 포함된 의식)이 이 문제를 해결했습니다. 보안 취약점을 기반으로 한 공격은 사용자 거래의 프라이버시에는 영향을 미치지 않지만, 무한한 위조의 가능성은 Zcash의 보안 전제를 훼손했습니다. (이론적으로 공격이 발생했는지 여부를 알 수 없습니다.)

신뢰할 수 있는 설정의 또 다른 주목할 만한 예는 Semaphore를 위해 설계된 영구 "tau-power-of-tau" 의식입니다. Semaphore는 이더리움에서 익명 신호를 위한 프라이버시 보호 기술입니다. 이 설정은 BN254 타원 곡선을 사용하며, 현재까지 71명의 참여자가 있습니다. 이후 Tornado.Cash, Hermez 네트워크 및 Loopring과 같은 다른 유명한 프로젝트들이 이 설정을 사용하여 자체 의식을 운영했습니다.

Aztec는 BLS12_381 타원 곡선에서 유사한 의식을 개최했으며, 176명의 참여자가 zkSync에 참여했습니다. zkSync는 제로 지식 집합을 사용하는 "2층" 이더리움 확장 솔루션입니다. Filecoin은 분산 데이터 저장 프로토콜로, 각각 19명과 33명의 참여자와 함께 1단계 및 2단계에서 의식을 개최하여 원래 저장소를 분기했습니다. Celo는 1층 블록체인으로, 그들의 경량 클라이언트 Plumo를 위해 의식을 개최했습니다.

영구 의식은 참여자 수에 제한이 없습니다. 즉, 누구나 다른 사람을 신뢰하지 않고도 어떤 수준의 보안에 참여할 수 있습니다. 신뢰할 수 있는 참여자는 모든 결과 매개변수의 보안을 보장합니다; 체인은 가장 강한 고리만큼 강합니다. 이름에서 알 수 있듯이, 영구 의식은 영구적으로 개최될 수 있으며, 이는 원래 tau 권력 의식의 전제와 같습니다. 즉, 프로젝트는 일반적으로 의식의 구체적인 시작 및 종료 시간을 결정하여 생성된 매개변수를 프로토콜에 통합할 수 있으며, 이를 지속적으로 업데이트하는 것에 대한 걱정 없이 진행할 수 있습니다.

이더리움은 다가오는 ProtoDankSharding 및 DankSharding 업그레이드를 위해 더 작은 신뢰할 수 있는 설정 의식을 운영할 계획입니다. 이 두 번의 업그레이드는 이더리움 체인이 클라이언트에 저장할 수 있는 데이터 양을 증가시킬 것입니다. 이 데이터의 유효 기간은 제안된 30일에서 60일입니다. 이 의식은 현재 활발히 개발 중이며, 내년 초 약 6주 동안 지속될 계획입니다. (자세한 내용은 kzg-ceremony-specs를 참조하십시오.) 이는 지금까지 가장 큰 블록체인 신뢰할 수 있는 설정 의식이 되고 있습니다.

편집증은 "미덕"입니다, 특히 신뢰할 수 있는 설정 의식과 관련하여. 만약 기계의 하드웨어나 소프트웨어가 손상된다면, 생성된 비밀의 보안성이 손상될 수 있습니다. 비밀 유출의 은밀한 사이드 채널 공격도 배제하기 어렵습니다. 예를 들어, 휴대폰은 CPU 진동의 음파를 기록하여 컴퓨터의 작동을 감시할 수 있습니다. 실제로 모든 가능한 사이드 채널 공격을 제거하는 것은 매우 어렵기 때문에 - 발견되지 않았거나 공개되지 않은 공격을 포함하여 - 심지어 기계를 우주로 날려 의식을 개최하자는 제안도 있었습니다.

현재, 철저한 의식 참여자의 시나리오는 일반적으로 다음과 같습니다. 새로운 기계 구매(오염되지 않은 하드웨어). 모든 네트워크 카드를 제거하여(로컬 비밀 유출 방지) 위험을 격리합니다. 파라데이 케이지 내의 원격 비공식 위치에서 기계를 운영하여(잠재적인 엿보는 사람을 저지) 합니다. 의사 랜덤 암호화 정보 생성기에 많은 엔트로피와 하드 복사 데이터를 설정합니다. 마지막으로, 모든 것을 재로 태워 암호화 정보를 파기합니다 - 그리고 암호화 정보에 대한 모든 흔적도 함께.

신뢰할 수 있는 설정 의식 조정

모든 신뢰할 수 있는 설정 의식은 중앙 집중식 조정자에 의존합니다. 조정자는 참여자를 등록하고 주문하는 임무를 맡은 개인, 개인 서버 또는 기타 엔티티입니다. 그들은 정보를 이전 참여자에서 다음 참여자로 전달하여 중계 역할을 하며, 감사용으로 모든 통신의 중앙 로그를 보관합니다. 조정자는 일반적으로 로그를 영구적으로 대중에게 제공할 책임이 있지만, 이러한 중앙 집중식 시스템은 관리 부실이나 비인간적 요인으로 인해 정보가 손실될 수 있습니다.

아이러니하게도, 탈중앙화가 암호화 정신의 핵심 원칙일 때, 암호화 프로젝트는 중앙 집중식 신뢰할 수 있는 설정 의식에 의존해야 합니다. 따라서 우리는 이더리움 블록체인에서 영구적인 powers-of-tau를 위해 소규모 의식을 개최하는 것이 가능한지를 증명하기로 결정했습니다. 이 설정은 완전히 탈중앙화되어 있으며, 허가가 필요 없고, 검열 저항적이며, 단지 참여자 중 하나가 정직하기만 하면 안전합니다. 현재 가격으로 계산할 때, 의식에 참여하는 비용은 필요한 결과 매개변수의 크기에 따라 7달러에서 400달러 사이입니다(이 경우 8과 1024 사이의 tau).

현재까지 우리는 코드를 실험 목적 이외의 용도로 사용하지 말 것을 권장합니다. 코드에 문제가 있는 경우 이를 보고해 주시면 감사하겠습니다. 우리는 우리 방법에 대한 피드백과 검토를 기꺼이 수집하겠습니다.

KZG 또는 "powers-of-tau" 의식 이해하기

가장 인기 있는 신뢰할 수 있는 설정 중 하나인 KZG 또는 "powers-of-tau" 의식을 탐구해 보겠습니다. 이더리움 공동 창립자 Vitalik Buterin의 신뢰할 수 있는 설정에 대한 블로그 게시물 덕분에 우리는 이 섹션에서 아이디어를 얻었습니다. 이 설정은 powers-of-tau의 인코딩을 생성하며, 이렇게 명명된 이유는 "tau"가 참여자가 생성한 비밀을 나타내는 변수이기 때문입니다:

특정 응용 프로그램(예: Groth16, Jens Groth가 2016년에 설계한 인기 있는 zkSNARK 증명 프로토콜)에서는 설정의 첫 번째 단계 이후에 두 번째 단계인 다자간 계산(MPC) 의식이 있으며, 특정 SNARK 회로에 대한 매개변수를 생성합니다. 그러나 우리의 작업은 첫 번째 단계에만 집중합니다. 첫 번째 단계 - tau의 거듭제곱 생성 - 는 일반 SNARK(예: PLONK 및 SONIC) 및 기타 암호화 응용 프로그램(예: KZG 약속, Verkle 트리 및 데이터 가용성 샘플링)의 기본 빌딩 블록으로 사용될 수 있습니다. (DAS).

일반적으로, 일반 SNARK 매개변수는 크기가 매우 커야 유용한 대형 회로를 지원할 수 있습니다. 더 많은 게이트를 포함하는 회로는 일반적으로 더 유용하며, 이는 대규모 계산을 포착할 수 있기 때문입니다; tau의 거듭제곱 수는 회로의 게이트 수에 대략적으로 해당합니다. 따라서 전형적인 설정 크기는 |pp|= ~40 GB이며, ~2의 회로 28 Gas를 지원할 수 있습니다. 현재 이더리움의 제약으로 인해 이렇게 큰 매개변수를 체인에 배치하는 것은 불가능하지만, 소형 SNARK 회로, Verkle 트리 또는 DAS에 유용한 더 작은 신뢰할 수 있는 설정 의식은 체인에서 실행될 수 있습니다.

이더리움 재단은 크기가 200 KB에서 1.5 MB인 powers-of-tau를 위해 여러 개의 더 작은 의식을 운영할 계획입니다. 더 큰 의식이 더 나아 보일 수 있지만, 더 큰 매개변수가 더 유용한 SNARK 회로를 생성할 수 있다는 점을 고려할 때, 실제로 더 큰 것이 항상 더 나은 것은 아닙니다. 특정 응용 프로그램(DAS와 같은)은 특히 더 작은 응용 프로그램을 필요로 합니다! [이유는 매우 기술적이지만, 궁금하다면 n 차의 설정(G에서)은 1) KZG가 ≤ n 차 다항식에 대한 약속만 허용하므로, KZG 약속 하의 다항식이 모든 n 차 평가에서 재구성될 수 있도록 보장하는 것이 중요합니다.

이 속성은 데이터 가용성 샘플링을 지원합니다: 다항식의 무작위 평가를 성공적으로 얻을 때마다, 그것은 다항식이 확률 t/n로 완전히 재구성될 수 있음을 보장합니다. DAS에 대한 더 많은 정보를 원하시면 Buterin이 이더리움 연구 포럼에 게시한 이 글을 확인하십시오.

우리는 신뢰할 수 있는 설정 의식을 실행하기 위해 이더리움 블록체인에 배포할 수 있는 스마트 계약을 설계했습니다. 이 계약은 공공 매개변수를 체인에 완전히 저장하고 사용자의 거래를 통해 참여를 수집합니다.

새로운 참여자는 먼저 이러한 매개변수를 읽습니다:

그런 다음 무작위 키 τ'를 샘플링하고 업데이트된 매개변수를 계산합니다:

그리고 이를 체인에 게시하며, 세 가지 사항을 증명합니다:

  • 이산 로그의 지식: 참여자는 τ'를 알고 있습니다. (신뢰할 수 있는 설정 의식에 대한 최신 기여가 모든 이전 참여자의 작업에 기반하고 있음을 증명합니다.)
  • pp의 형식이 좋음 1: 이러한 요소는 실제로 증가하는 거듭제곱을 인코딩합니다. (새로운 참여자가 의식에 기여한 것의 좋은 형식을 검증합니다.)
  • 업데이트가 지워지지 않음: τ' ≠ 0. (모든 참여자의 과거 작업을 삭제하여 시스템을 파괴하려는 공격자에 대한 방어입니다.)

스마트 계약은 증명을 검증하며, 올바른 경우 저장된 공공 매개변수를 업데이트합니다. 수학 및 그 배후의 추론에 대한 더 자세한 정보는 저장소에서 확인할 수 있습니다.

가스 비용 계산

체인에서 설정을 실행하는 주요 도전 과제는 신뢰할 수 있는 설정 의식을 가능한 한 효율적으로 만드는 것입니다. 이상적으로는 기여 제출 비용이 50달러를 초과하지 않아야 합니다. (대형 프로젝트는 기여자에게 가스를 보조할 수 있으며, 이 경우 수백 명의 참여자가 각자 100달러를 지출하는 것이 더 쉽게 상상됩니다.) 아래에서는 설정에서 가장 비싼 부분에 대한 추가 세부 정보를 제공합니다. 낮은 가스 비용은 기여 비용을 줄이고 더 긴 매개변수(더 많은 tau 거듭제곱 및 더 큰 SNARK 회로)를 구축할 수 있게 해줍니다!

우리의 설정은 타원 곡선 BN254(또는 BN256, BN128 및 alt_bn128이라고도 함)에 적합하며, 이더리움에서 다음과 같은 미리 컴파일된 계약을 지원합니다:

ECADD는 두 개의 타원 곡선 점을 추가하는 것을 허용하며, 즉 [α+ β]1을 [α]1 및 [β]1에서 계산합니다: 가스 비용 150

ECMULT는 타원 곡선 점을 스칼라로 곱하는 것을 허용하며, 즉 [a*α]1을 a 및 [α]1에서 계산합니다: 가스 비용 6,000

ECPAIR는 타원 곡선 쌍의 곱을 검사하는 것을 허용하며, 즉 e([α1]1, [β1]2)* … *e([α1]1, [β1]2) = 1을 계산하며, 이는 α1*β1+ … + αk*βk= 0을 검사하는 것과 같습니다: 가스 비용 34,000 * k + 45,000

이더리움이 BLS12_381을 활성화할 수 있다면(EIP-2537에서 제안된 대로), 우리의 설정 계약은 다른 곡선에도 쉽게 사용할 수 있습니다.

설정을 업데이트하는 데 드는 가스 비용을 추정해 보겠습니다

증명을 검증하는 가스 비용. 앞서 언급했듯이, 각 참여자는 설정을 업데이트하고 세 가지 구성 요소가 포함된 증명을 제출합니다. 증명의 구성 요소 1 및 3 - "이산 로그 지식" 및 "업데이트가 비지워짐" - 은 검증하는 데 매우 저렴합니다. 도전 과제는 구성 요소 2, "pp의 좋은 형성"1을 체인에서 검증하는 것입니다. 이는 큰 다중 스칼라 곱셈(MSM)과 두 개의 쌍을 필요로 합니다:

여기서 ρ0,…,?n-1는 의사 랜덤 샘플링 스칼라입니다. 미리 컴파일된 스마트 계약의 경우, 필요합니다:

데이터 저장의 가스 비용. 각 참여자는 또한 체인에서 업데이트된 저장소를 호출 데이터로 저장하며(바이트당 68 가스), n * 64 * 68 가스를 차지합니다. (타원 곡선 암호학에 익숙한 사람들을 위해 한 가지 주의할 점은, n = 256에 대한 우리의 측정에 따르면, 저장된 압축 점이 압축 해제 비용을 지배할 것이라는 점입니다.)

이로 인해 추정된 가스 비용은 다음과 같습니다:

물론 우리는 또한 가스 비용을 줄이는 솔루션을 탐색하고 있습니다.

오픈 소스 라이브러리: evm-powers-of-tau

우리는 github.com/a16z/evm-powers-of-tau에서 EVM 기반의 powers-of-tau 의식을 오픈 소스화했습니다. 우리의 전략을 사용하여 의식을 수행하는 것은 간단하고 투명합니다:

  • 저장 및 검증 프로토콜 배포 (프로토콜 /KZG.sol)
  • 참여자는 이전 거래의 호출 데이터에서 의식 매개변수를 읽습니다.
  • 참여자는 로컬에서 키를 생성하고 업데이트된 매개변수를 계산합니다.
  • 기여자는 그들의 증명: pi1, pi2를 생성합니다.
  • 기여자는 KZG.potUpdate()를 통해 업데이트된 매개변수를 공공 블록체인에 배포된 스마트 계약에 제출합니다.
  • 스마트 계약은 업데이트의 유효성을 검증하며, 제출 형식이 잘못된 경우 복구합니다.
  • 여러 기여자는 영구적으로 단계 2-5를 수행할 수 있으며, 각 단계는 의식의 보안을 향상시킬 수 있습니다.
  • 개발자가 제출된 수와 품질에 대해 확신을 가질 때마다, 그들은 블록체인에서 현재 매개변수를 조회하고 이러한 값을 암호화 키로 사용할 수 있습니다.

우리의 저장소는 arkworks-rs를 사용하여 단계 2 및 3을 계산합니다(러스트 계산은 src/potupdate.rs에서 찾을 수 있음), 그러나 사용자는 자신의 것을 작성하고 싶어할 수 있습니다. 업데이트 제출의 전체 엔드 투 엔드 프로세스는 tests/integrationtest.rs의 통합 테스트에서 찾을 수 있습니다.

마지막으로, 증명 및 자세한 방정식은 techreport/main.pdf의 기술 보고서에서 찾을 수 있습니다.

미래 작업 계획

이 신뢰할 수 있는 설정 의식을 생산 환경에서 사용하기 전에, 우리는 먼저 수학적 증명과 예제 구현에 대한 철저한 검토를 권장합니다.

구현이 진행됨에 따라, 설정 업데이트의 거래 비용은 설정 크기에 따라 선형적으로 증가합니다. 대부분의 응용 프로그램(SNARKs, DAS)에 대해, 우리는 설정 n > = 256을 원하며, 현재 매 업데이트 비용은 73달러입니다.

우리는 효과적인 업데이트 계산의 STARK 증명과 업데이트 값에 대한 벡터 약속을 통해 아선형 검증 비용 증가를 달성할 수 있을 것입니다. 이러한 구조는 이더리움 L1 BN254 미리 컴파일에 대한 의존성을 제거하여 더 인기 있는 BLS12-381 곡선을 사용할 수 있게 합니다.

모든 의식 전략은 반복적인 균형과 테스트를 거쳤습니다. 우리는 이 구조가 신뢰할 수 있으며, 좋은 검증 가능성과 검열 저항성을 가지고 있다고 생각합니다. 그러나 마찬가지로, 우리의 방법의 합리성을 검증하기 위한 추가 작업이 완료되기 전까지는 본 문서에서 언급된 이 솔루션을 직접 사용하는 것에 대해 높은 주의가 필요합니다.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축