모든 투표 시스템은 의미 있는 방식으로 작동하기 위해 무결성과 투명성에 의존합니다. 액면 그대로 볼 때 이는 블록체인을 이러한 시스템을 구축하기 위한 이상적인 플랫폼으로 만듭니다. 실제로 많은 분산형 조직은 종종 상당한 자금을 휘두르거나 중요한 프로토콜 매개변수를 조정하는 맥락에서 집단적 의도를 표현하기 위해 무허가 투표를 채택했습니다. 그러나 온체인 투표에는 단점이 있으며 web3 투표 시스템에 해를 끼치는 개인 정보 보호는 아직 조사되지 않은 상태로 남아 있습니다 . 오늘날 사용되는 대부분의 온체인 투표 프로토콜에서 투표 용지와 투표 집계는 완전히 공개됩니다. 프라이버시가 없으면 투표 결과는 조작 및 잘못된 유권자 인센티브에 취약해 잠재적으로 비민주적인 결과를 초래할 수 있습니다.
이것이 바로 우리가 비공개 온체인 투표를 위해 시간 잠금 퍼즐과 영지식 증명을 활용하는 새로운 오픈 소스 Solidity 라이브러리인 Cicada를 출시하는 이유입니다. 기존 시스템과 비교하여 Cicada는 새로운 개인 정보 보호 속성을 갖고 있으며 신뢰 가정을 최소화하며 Ethereum 메인넷에서 사용할 수 있을 만큼 효율적입니다.
이 게시물에서 우리는 투표 개인 정보 보호의 환경을 조사하고 Cicada의 작동 방식에 대한 높은 수준의 설명을 제공합니다(공식 증거 제공 예정). 우리는 또한 개발자들이 GitHub 저장소를 확인하도록 권장합니다 . Cicada는 다양한 투표 방식과 기능을 지원하기 위해 다양한 방식으로 조정 및 확장될 수 있으며, 이러한 가능성을 탐색하기 위해 커뮤니티와 협력하기를 희망합니다.
민간투표에 대한 간략한 조사
모든 투표 시스템(온체인 또는 기타)에는 고려해야 할 다양한 개인 정보 보호 계층이 있습니다. 개별 투표지, 집계, 유권자 신원의 공개는 모두 다양한 방식으로 유권자 인센티브에 영향을 미칠 수 있습니다. 어떤 개인정보 보호 속성이 필요한지는 투표의 맥락에 따라 다릅니다. 암호화 및 사회 과학 문헌에서 자주 발생하는 몇 가지 사항은 다음과 같습니다.
투표 개인 정보 보호: " 호주 투표 " 라고도 불리는 비밀 투표는 개별 유권자의 선호도를 비공개로 유지하고 뇌물 수수 및 강압을 완화하기 위한 방법으로 실제 투표 시스템용으로 개발되었습니다 (온체인 설정에서는 필요할 수 있음). 투표용지 프라이버시보다 더 강력한 속성 – 아래 “수신 불가” 참조). 투표 개인 정보 보호는 또한 사회적 바람직성 편향을 완화합니다. 즉, 다른 사람이 자신의 선택에 대해 어떻게 생각하는지에 따라 투표해야 한다는 압력이 줄어듭니다.
총계 개인 정보 보호: 많은 투표 시스템은 총계 또는 각 옵션에 대해 투표한 투표 수를 숨기는 반면, 유권자들은 투표율과 유권자 인센티브에 영향을 주지 않기 위해 계속 투표하고 있습니다. 우리는 이것이 현실 세계에서 일어나는 것을 보았습니다. 예를 들어, 나중에 투표하는 미국 상원의원은 일찍 투표한 상원의원보다 소속 정당에 동조할 가능성이 더 높습니다 . 그리고 온체인: 토큰 가중치 투표에서 고래는 상대방이 선두를 차지하게 함으로써 상대방을 잘못된 안전감에 빠뜨린 다음(일부는 상관없이 승리할 것이라고 가정하고 투표에 신경 쓰지 않을 수 있음) 마지막에 투표를 할 수 있습니다. 결과를 바꾸는 데 몇 분이 걸립니다.
유권자 익명성 : 많은 실제 투표 시스템에서 귀하의 투표는 비공개이지만, 귀하가 투표했다는 사실은 공개되는 경우가 많습니다. 투표한 사람에 대한 기록을 게시하면 다른 사람이 자신의 이름으로 투표했는지 여부를 확인할 수 있기 때문에 이는 유권자 사기에 대한 보호 장치로서 중요할 수 있습니다. 그러나 온체인에서는 암호화 기본 요소를 사용하여 익명성을 유지하면서 유권자 사기를 방지할 수 있습니다. 예를 들어 Semaphore를 사용 하면 자신이 아직 투표하지 않은 적격 유권자임을 영지식으로 증명할 수 있습니다.
영수증 면제 : 개별 유권자는 자신의 투표 방식을 제3자에게 증명하기 위해 투표용지 "영수증"을 제공합니다. 그렇지 않으면 투표 판매로 이어질 수 있습니다. 밀접하게 관련되어 있지만 더 강력한 속성은 강제 저항 입니다 . 이는 누군가가 유권자에게 특정 방식으로 투표하도록 강요하는 것을 방지합니다. 이러한 속성은 스마트 계약 시장을 통해 투표권을 유동화할 수 있는 분산형 환경에서 특히 매력적입니다. 불행하게도 그들은 달성하기가 매우 어렵습니다. 실제로 Juels et al. 신뢰할 수 있는 하드웨어가 없으면 허가 없는 설정에서는 불가능하다고 명시합니다 .
Cicada는 집계 개인정보 보호에 중점을 두고 있지만 (나중에 논의하겠지만) 유권자 익명성과 투표지 개인정보 보호를 확보하기 위해 영지식 그룹 멤버십 증명으로 구성될 수 있습니다.
Cicada 소개: 동형 시간 잠금 퍼즐에서 개인정보 보호
러닝 탈리 개인 정보 보호를 달성하기 위해 Cicada는 (우리가 아는 한) 이전에 온체인에서 사용된 적이 없는 암호화 기본 요소를 사용합니다.
첫째, 시간 잠금 퍼즐 ( Rivest, Shamir, Wagner, 1996 )은 미리 결정된 시간이 경과한 후에만 공개될 수 있는 비밀을 캡슐화하는 암호화 퍼즐입니다. 병렬화 불가능한 계산. 시간 잠금 퍼즐은 집계 개인 정보 보호를 달성하기 위한 투표의 맥락에서 유용합니다. 사용자는 자신의 투표 용지를 시간 잠금 퍼즐로 제출할 수 있으므로 투표 중에는 비밀이지만 나중에 공개될 수 있습니다. 대부분의 다른 개인 투표 구성과 달리 이를 통해 집계 기관(예: 선거 관리원이 종이 또는 디지털 투표용지를 계산하는 것), 임계 암호화 (여러 신뢰할 수 있는 당사자가 메시지를 해독하기 위해 협력해야 함) 또는 기타 신뢰할 수 있는 당사자(누구나)에 의존하지 않고 집계 개인 정보 보호를 실행할 수 있습니다. 투표 후 결과가 공개되도록 시간 제한 퍼즐을 풀 수 있습니다.
둘째, 동형 시간 잠금 퍼즐( Malavolta Thyagarajan, 2019 )에는 암호화된 값에 대한 일부 계산이 비밀 키를 알거나 퍼즐을 해독하거나 백도어를 사용하여 가능하다는 추가 속성이 있습니다. 특히 선형 동형 시간 잠금 퍼즐을 사용하면 퍼즐을 서로 결합하여 원래 퍼즐의 비밀 가치의 합계를 캡슐화하는 새로운 퍼즐을 생성할 수 있습니다.
논문 노트의 저자로서 선형 동형 시간 잠금 퍼즐은 개인 투표에 특히 적합한 기본 요소입니다. 투표지는 퍼즐로 인코딩될 수 있으며 동형 결합되어 최종 집계를 인코딩하는 퍼즐을 얻을 수 있습니다. 이는 모든 투표용지에 대해 고유한 퍼즐을 푸는 대신 최종 집계를 공개하는 데 단 한 번의 계산만 필요하다는 것을 의미합니다.
새로운 구성: 효율성과 절충
투표 방식이 온체인에서 실용적이려면 고려해야 할 몇 가지 사항이 더 있습니다. 첫째, 공격자는 잘못 인코딩된 투표를 실시하여 투표를 조작하려고 시도할 수 있습니다. 예를 들어, 각 투표용지의 시간 잠금 퍼즐은 부울 값을 인코딩할 것으로 예상할 수 있습니다. 즉, 투표된 제안을 지지하는 경우 "1", 반대하는 경우 "0"입니다. 제안의 열렬한 지지자는 대신에 유효 투표권을 증폭시키기 위해 "100"을 인코딩하려고 시도할 수 있습니다.
유권자가 투표 용지 자체와 함께 투표 유효성에 대한 영지식 증명을 제출하도록 함으로써 이러한 종류의 공격을 예방할 수 있습니다. 영지식 증명은 계산 비용이 많이 들 수 있습니다. 유권자 참여 비용을 가능한 한 낮게 유지하려면 증명은 (1) 클라이언트 측에서 효율적으로 계산 가능하고 (2) 온체인에서 효율적으로 검증 가능해야 합니다.
가능한 한 효율적인 증명을 위해 우리는 일반화된 증명 시스템이 아닌 특정 대수 관계를 위해 설계된 영지식 증명인 맞춤형 시그마 프로토콜을 사용합니다. 이를 통해 입증 시간이 매우 빨라집니다. Python에서 투표 유효성 증명을 생성하는 데 기성 노트북에서는 14ms가 걸립니다.
이 시그마 프로토콜의 검증자는 개념적으로 간단하지만 몇 가지 대규모 모듈식 지수 가 필요합니다 . Malavolta와 Thyagarajan의 선형 동형 체계는 Paillier 암호화를 사용 하므로 이러한 지수화는 일부 RSA 모듈러스 N에 대해 모듈로 N^2로 수행됩니다. 합리적인 크기의 N의 경우 지수화는 대부분의 EVM 체인에서 엄청나게 비쌉니다(수백만 개의 가스). 이 비용을 줄이기 위해 Cicada는 대신 지수 ElGamal을 사용합니다 . 지수 ElGamal은 여전히 가산 동형을 제공하지만 훨씬 더 작은 모듈러스(N^2 대신 N)에서 작동합니다.
ElGamal 사용의 한 가지 단점은 집계를 해독하는 마지막 단계에서 개별 로그에 대한 무차별 공격이 필요하다는 것입니다(이 작업은 오프체인에서 수행되고 온체인에서 효율적으로 확인된다는 점에 유의하세요). 따라서 예상되는 최종 집계가 합리적으로 작은 경우(예: 2^32 미만 또는 약 430만 표)에만 적합합니다. 원래 Paillier 기반 체계에서는 크기에 관계없이 집계를 효율적으로 해독할 수 있습니다. RSA 계수 N을 선택하는 것에도 트레이드오프가 수반됩니다. 우리의 구현에서는 가스 효율성을 위해 1024비트 모듈러스를 사용합니다. 이는 공개적으로 고려된 가장 큰 RSA 모듈러스( 829 비트)보다 훨씬 높지만 RSA 암호화 또는 서명에 사용하기 위해 일반적으로 권장되는 크기인 2048비트보다 낮습니다. 그러나 우리 애플리케이션에는 장기적인 보안이 필요하지 않습니다. 일단 선거가 끝나면 N이 미래에 고려되더라도 위험은 없습니다. 집계와 투표는 시간 제한이 만료된 후에 공개되는 것으로 가정되므로 상대적으로 작은 모듈러스를 사용하는 것이 합리적입니다. (인수분해 알고리즘이 개선되면 향후 쉽게 업데이트될 수도 있습니다.)
익명성과 유권자 자격
위에서 설명한 대로 Cicada는 집계 개인 정보 보호를 제공합니다. 시간 잠금 퍼즐 속성은 투표 기간 동안 집계를 비공개로 유지합니다. 그러나 각 개별 투표지는 동일한 공개 매개변수로 암호화된 시간 잠금 퍼즐이기도 합니다. 이는 집계가 (필요한 계산을 수행하여) 해독될 수 있는 것처럼 각 개별 투표도 해독될 수 있음을 의미합니다. 즉, Cicada는 투표 기간 동안만 투표지의 개인 정보 보호를 보장합니다. 호기심이 많은 관찰자가 특정 유권자의 투표지를 해독하려는 경우 그렇게 할 수 있습니다. 개별 투표지를 해독하는 것은 최종 집계를 해독하는 것만큼 비용이 많이 들기 때문에 순진하게도 n 명의 유권자가 있는 투표를 완전히 해독하려면 O( n ) 작업이 필요합니다 . 그러나 이러한 모든 투표용지는 병렬로 해독될 수 있으며(충분한 컴퓨터가 있다고 가정) 최종 집계를 해독하는 데 걸리는 시간과 동일한 벽시계 시간이 소요됩니다.
일부 투표에서는 이것이 바람직하지 않을 수 있습니다. 일시적인 집계 개인 정보 보호 에 만족하지만 무기한 투표 개인 정보 보호를 원할 수도 있습니다 . 이를 달성하기 위해 우리는 영지식 그룹 멤버십 증명으로 인스턴스화되는 익명 유권자 자격 프로토콜과 Cicada를 결합할 수 있습니다. 이렇게 하면 투표용지가 해독되더라도 공개되는 것은 누군가가 그런 식으로 투표했다는 것뿐입니다. 이는 이미 집계를 통해 알 수 있습니다.
우리 저장소에는 유권자 익명성을 위해 세마포어를 사용하는 예제 계약이 포함되어 있습니다. 그러나 Cicada 계약 자체는 유권자 자격이 어떻게 결정되거나 시행되는지에 대한 가정을 하지 않는다는 점에 유의하십시오. 특히 Semaphore를 Semacaulk 또는 ZK 상태 증명( 여기 및 여기에서 제안된 대로 )으로 대체할 수 있습니다.
집계 기관
Cicada를 설계할 때 우리의 우선순위 중 하나는 집계 기관의 필요성을 피하는 것이었습니다. 많은 민간 투표 구성에는 투표 용지를 받고 집계하는 반신뢰 집계 기관 (또는 안전한 다당 계산을 통해 조정하는 당국 위원회)이 필요합니다 . 블록체인 맥락에서 이는 이러한 계획이 스마트 계약만으로는 수행될 수 없으며 어느 정도 인간의 개입과 신뢰가 필요하다는 것을 의미합니다.
대부분의 구성에서 집계 기관은 무결성 에 대해 신뢰되지 않지만 (투표 수를 조작할 수 없음) 활성 에 대해서는 신뢰됩니다 . 오프라인이 되면 최종 결과를 계산할 수 없으며 투표 결과가 무기한 지연됩니다. 일부 구조에서는 개인 정보 보호를 유지하는 것으로 신뢰됩니다. 즉, 각 개인이 투표하는 방법을 배우지만 이 정보를 공개하지 않고 투표 결과를 게시할 것으로 예상됩니다.
집계 기관은 많은 실제 시나리오에서 합리적이고 필요한 가정이지만, 신뢰를 최소화하고 검열 저항을 보장하는 것이 우리의 목표인 블록체인 환경에서는 이상적이지 않습니다.
Cicada는 온체인 투표 개인 정보 보호 분야의 여러 방향 중 하나를 탐색하고 다른 팀에서 진행 중인 연구의 대부분을 보완합니다. 위에서 언급했듯이 Cicada는 Semaphore, ZK 저장 증명 및 속도 제한 nullifier와 같은 익명 그룹 멤버십 기술을 사용합니다. Cicada는 또한 Nouns Vortex 팀이 제안한 낙관적 증명 검사기를 통합하여 유권자의 가스 부담을 줄일 수 있습니다.
또한 다양한 투표 방식(예: 토큰 가중치 투표, 2차 투표)을 지원하기 위해 Cicada를 조정할 수 있는 기회도 있습니다. 더 복잡한 방식은 Ethereum 메인넷에 계산 비용이 너무 많이 들 수 있지만 L2에서는 실용적일 수 있습니다. 이를 염두에 두고 Cicada를 다음에 어디로 가져갈지에 대한 여러분의 기여, 포크 및 제안을 환영합니다.
감사의 말: Cicada는 Joseph Bonneau와 공동으로 개발되었습니다. 투표 개인 정보 보호의 역사적 맥락에 대한 맥락을 제공한 Andrew Hall에게 감사드립니다. 이 게시물에 대한 피드백을 주신 Robert Hackett에게도 감사드립니다. 편집해주신 Stephanie Zinn에게 특별히 감사드립니다.
“게시물”(기사, 팟캐스트, 비디오 및 소셜 미디어 포함)에 표현된 견해는 해당 게시물에 인용된 개인의 견해이며 반드시 AH Capital Management, LLC(“a16z”) 또는 해당 계열사의 견해는 아닙니다. a16z는 미국 증권거래위원회에 등록된 투자 자문사입니다. 투자 자문가로 등록한다고 해서 특별한 기술이나 교육을 받는 것은 아닙니다. 여기에 포함된 특정 정보는 a16z가 관리하는 펀드의 포트폴리오 회사를 포함한 제3자 소스에서 얻은 것입니다. a16z는 신뢰할 수 있는 출처에서 가져온 정보이지만, 해당 정보를 독립적으로 검증하지 않았으며 정보의 지속적인 정확성이나 특정 상황에 대한 적합성에 대해 어떠한 진술도 하지 않습니다. 또한 이 콘텐츠에는 제3자 정보가 포함될 수 있습니다. a16z는 그러한 자료를 검토하지 않았으며 거기에 포함된 어떠한 광고 콘텐츠도 보증하지 않습니다.
이 콘텐츠는 정보 제공의 목적으로만 제공되며 법률, 비즈니스, 투자 또는 세금 관련 조언으로 의존해서는 안 됩니다. 그러한 문제에 대해서는 자신의 조언자와 상담해야 합니다. 증권, 디지털 자산, 투자 전략 또는 기술에 대한 언급은 설명 목적으로만 제공되며 투자 추천이나 투자 자문 서비스 제공을 제안하는 것이 아닙니다. 또한, 이 내용은 투자자나 잠재 투자자를 대상으로 하거나 사용하려는 의도가 없으며, a16z가 관리하는 펀드에 대한 투자 결정을 내릴 때 어떤 상황에서도 의존할 수 없습니다. (a16z 펀드에 대한 투자 제안은 해당 펀드의 사모 각서, 청약 계약서 및 기타 관련 문서를 통해서만 이루어지며 전체 내용을 읽어야 합니다.) 언급되거나 언급되거나 언급된 모든 투자 또는 포트폴리오 회사 설명된 내용은 a16z가 관리하는 차량에 대한 모든 투자를 대표하는 것은 아니며, 해당 투자나 투자 전략이 수익성이 있을 것이라는 보장이나 향후 수행되는 다른 투자가 유사한 특성이나 결과를 가질 것이라는 보장은 없습니다. Andreessen Horowitz가 관리하는 펀드에 의한 투자 목록(발행자가 a16z에 공개를 허용하지 않은 투자 및 공개 거래되는 디지털 자산에 대한 미발표 투자 제외)은 https://a16z.com/investments 에서 확인할 수 있습니다. / .
또한, 이 자료는 정보 제공의 목적으로만 제공되며 투자 결정을 내릴 때 의존해서는 안 됩니다. 과거 성과는 미래 결과를 나타내지 않습니다. 공동 투자 수단 및/또는 디지털 자산에 대한 투자에는 상당한 변동성, 유동성, 기술 및 규제 위험을 포함하되 이에 국한되지 않는 여기에서 완전히 논의되지 않은 많은 위험이 포함됩니다. 내용은 표시된 날짜 기준으로만 설명됩니다. 본 자료에 표현된 모든 예상, 추산, 예상, 목표, 전망 및/또는 의견은 예고 없이 변경될 수 있으며, 다른 사람이 표현한 의견과 다르거나 반대될 수 있습니다. 추가적인 중요한 정보는 https://a16z.com/disclosures/를 참조하세요 .
"코인인증하고 코인올백 공식카톡방 입장하기
https://open.kakao.com/o/slRwZOog"