BTC $79,493.82 -0.59%
ETH $2,493.83 -0.36%
BNB $745.33 -1.58%
XRP $1.41 -1.30%
SOL $105.29 -1.42%
TRX $0.3353 +0.10%
DOGE $0.0903 +0.57%
ADA $0.2213 -0.02%
BCH $257.83 -0.71%
LINK $13.23 +7.29%
HYPE $88.16 -1.26%
AAVE $135.02 -0.64%
SUI $0.8319 +3.85%
XLM $0.1948 +4.36%
ZEC $1,195.76 +1.73%
BTC $79,493.82 -0.59%
ETH $2,493.83 -0.36%
BNB $745.33 -1.58%
XRP $1.41 -1.30%
SOL $105.29 -1.42%
TRX $0.3353 +0.10%
DOGE $0.0903 +0.57%
ADA $0.2213 -0.02%
BCH $257.83 -0.71%
LINK $13.23 +7.29%
HYPE $88.16 -1.26%
AAVE $135.02 -0.64%
SUI $0.8319 +3.85%
XLM $0.1948 +4.36%
ZEC $1,195.76 +1.73%

a16z: Cicada sử dụng câu đố khóa thời gian và chứng minh không kiến thức để thực hiện bỏ phiếu trên chuỗi

Summary: Cicada là một ứng dụng bỏ phiếu ẩn danh trên chuỗi.
a16z
2023-05-25 12:31:48
Cicada là một ứng dụng bỏ phiếu ẩn danh trên chuỗi.

Tiêu đề gốc: 《Xây dựng Cicada: Bỏ phiếu riêng tư trên chuỗi bằng cách sử dụng câu đố khóa thời gian

Tác giả: Michael Zhu, a16z

Biên soạn: Lynn, MarsBit

Tất cả các hệ thống bỏ phiếu hoạt động theo bất kỳ cách có ý nghĩa nào đều phụ thuộc vào tính toàn vẹn và tính minh bạch. Nhìn bề ngoài, điều này khiến blockchain trở thành nền tảng lý tưởng để xây dựng những hệ thống này------trên thực tế, nhiều tổ chức phi tập trung đã chấp nhận bỏ phiếu không cần giấy phép để thể hiện ý chí tập thể, thường là trong bối cảnh nắm giữ khối tài sản lớn hoặc điều chỉnh các tham số giao thức quan trọng. Tuy nhiên, bỏ phiếu trên chuỗi cũng có nhược điểm, quyền riêng tư vẫn chưa được khám phá và phát triển, điều này không có lợi cho hệ thống bỏ phiếu Web3------trong hầu hết các giao thức bỏ phiếu trên chuỗi hiện đang được sử dụng, lá phiếu và kết quả bỏ phiếu hoàn toàn công khai. Nếu không có quyền riêng tư, kết quả bỏ phiếu dễ dàng bị thao túng và động lực của cử tri có thể bị lệch lạc, có thể dẫn đến kết quả không dân chủ.

Đó là lý do tại sao chúng tôi phát hành Cicada: một thư viện Solidity mã nguồn mở mới, sử dụng câu đố khóa thời gian và chứng minh không biết để thực hiện bỏ phiếu riêng tư trên chuỗi. So với các hệ thống hiện có, Cicada có các thuộc tính quyền riêng tư mới lạ, giảm thiểu giả định về lòng tin và đủ hiệu quả để sử dụng trên mạng chính Ethereum.

Trong bài viết này, chúng tôi khảo sát tình hình quyền riêng tư trong bỏ phiếu và cung cấp mô tả tổng quan về cách Cicada hoạt động (bằng chứng chính thức sẽ đến sớm). Chúng tôi cũng khuyến khích các nhà phát triển xem xét kho lưu trữ GitHub------Cicada có thể được điều chỉnh và mở rộng theo nhiều cách để hỗ trợ các phương án và chức năng bỏ phiếu khác nhau, và chúng tôi mong muốn hợp tác với cộng đồng để khám phá những khả năng này.

Khảo sát ngắn về bỏ phiếu riêng tư

Trong bất kỳ hệ thống bỏ phiếu nào (trên chuỗi hoặc khác), có nhiều cấp độ quyền riêng tư khác nhau cần xem xét. Việc tiết lộ lá phiếu cá nhân, việc kiểm phiếu đang diễn ra và danh tính cử tri sẽ ảnh hưởng đến động lực của cử tri theo những cách khác nhau. Những thuộc tính quyền riêng tư nào là cần thiết phụ thuộc vào bối cảnh của cuộc bỏ phiếu. Một số thuộc tính thường xuất hiện trong tài liệu mật mã và khoa học xã hội:

  • Quyền riêng tư của lá phiếu: lá phiếu bí mật, còn được gọi là "lá phiếu Úc", được phát triển cho các hệ thống bỏ phiếu trong thế giới thực như một cách để giữ bí mật sở thích của cử tri cá nhân và giảm thiểu hối lộ và ép buộc (trong bối cảnh trên chuỗi, chúng ta có thể cần một thuộc tính mạnh mẽ hơn quyền riêng tư của lá phiếu------xem "không có biên lai" bên dưới). Quyền riêng tư của lá phiếu cũng có thể giảm thiểu thiên lệch kỳ vọng xã hội------áp lực bỏ phiếu của một người dựa trên quan điểm của người khác về sự lựa chọn của họ ít hơn.
  • Quyền riêng tư của việc kiểm phiếu đang diễn ra: Nhiều hệ thống bỏ phiếu ẩn đi việc kiểm phiếu đang diễn ra trong khi cử tri vẫn đang bỏ phiếu, hoặc số phiếu đã được bỏ cho mỗi tùy chọn, để tránh ảnh hưởng đến tỷ lệ bỏ phiếu và động lực của cử tri. Chúng tôi đã thấy điều này trong thế giới thực; ví dụ, các thượng nghị sĩ Mỹ bỏ phiếu muộn có khả năng hơn giữ vững quan điểm của họ hơn so với các thượng nghị sĩ bỏ phiếu sớm. Còn trong bối cảnh trên chuỗi: trong bỏ phiếu có trọng số bằng mã thông báo, cá voi có thể lừa đối thủ giữ vị trí dẫn đầu để tạo ra cảm giác an toàn giả (một số người có thể lười biếng bỏ phiếu, giả định rằng họ sẽ thắng dù sao đi nữa), và sau đó bỏ phiếu vào phút cuối để ảnh hưởng đến kết quả.
  • Sự ẩn danh của cử tri: Trong nhiều hệ thống bỏ phiếu trong thế giới thực, lá phiếu của bạn không được công khai, nhưng thực tế bạn đã bỏ phiếu thường là công khai. Điều này rất quan trọng để ngăn chặn gian lận cử tri, vì việc công bố hồ sơ cử tri có thể cho phép mọi người kiểm tra xem có ai khác đã bỏ phiếu thay cho họ hay không. Tuy nhiên, trong bối cảnh trên chuỗi, chúng ta có thể ngăn chặn gian lận cử tri trong khi vẫn giữ được sự ẩn danh bằng cách sử dụng các nguyên tố mật mã------ví dụ, thông qua Semaphore, bạn có thể chứng minh một cách không biết rằng bạn là một cử tri đủ điều kiện chưa bỏ phiếu.
  • Không có biên lai: Cử tri cá nhân cung cấp "biên lai" cho lá phiếu của họ để chứng minh họ đã bỏ phiếu cho bên thứ ba như thế nào, nếu không có thể dẫn đến việc bán phiếu. Một thuộc tính liên quan nhưng mạnh mẽ hơn là kháng ép buộc, nó có thể ngăn chặn ai đó ép buộc cử tri bỏ phiếu theo cách nào đó. Những thuộc tính này đặc biệt hấp dẫn trong môi trường phi tập trung, vì quyền bỏ phiếu có thể được thực hiện tính thanh khoản thông qua thị trường hợp đồng thông minh. Thật không may, chúng cũng rất khó thực hiện------trên thực tế, Juels và các đồng tác giả chỉ ra rằng điều này là không thể trong môi trường không cần giấy phép mà không có phần cứng đáng tin cậy .

Cicada tập trung vào quyền riêng tư của việc kiểm phiếu đang diễn ra, nhưng (như chúng tôi sẽ thảo luận sau) nó có thể được kết hợp với chứng minh thành viên nhóm không biết để đạt được sự ẩn danh của cử tri và quyền riêng tư của lá phiếu.

Giới thiệu về Cicada: Quyền riêng tư của việc kiểm phiếu từ câu đố khóa thời gian đồng nhất

Để đạt được quyền riêng tư của việc kiểm phiếu đang diễn ra, Cicada đã tận dụng các nguyên tố mật mã mà (theo như chúng tôi biết) chưa từng được sử dụng trên chuỗi trước đây.

Đầu tiên, câu đố khóa thời gian (Rivest, Shamir, Wagner, 1996) là một câu đố mật mã, nó bao bọc một bí mật chỉ có thể được tiết lộ sau một khoảng thời gian nhất định------cụ thể hơn, câu đố này có thể được giải mã bằng cách thực hiện một số phép tính không song song lặp đi lặp lại. Câu đố khóa thời gian rất hữu ích trong bối cảnh bỏ phiếu để đạt được quyền riêng tư của thống kê đang diễn ra: người dùng có thể gửi lá phiếu của họ dưới dạng câu đố khóa thời gian, như vậy họ được giữ bí mật trong quá trình bỏ phiếu, nhưng có thể được tiết lộ sau khi bỏ phiếu. Khác với hầu hết các cấu trúc bỏ phiếu riêng tư khác, điều này cho phép quyền riêng tư của thống kê đang diễn ra không cần phụ thuộc vào các cơ quan thống kê (như nhân viên bầu cử tính toán lá phiếu giấy hoặc số) hoặc mã hóa ngưỡng (một số bên đáng tin cậy phải hợp tác để giải mã một thông điệp) hoặc bất kỳ bên đáng tin cậy nào khác: bất kỳ ai cũng có thể giải quyết một câu đố khóa thời gian để đảm bảo kết quả được tiết lộ sau khi bỏ phiếu.

Thứ hai, một câu đố khóa thời gian đồng nhất (Malavolta Thyagarajan, 2019) có thuộc tính bổ sung, tức là một số phép tính trên giá trị được mã hóa là khả thi khi biết khóa bí mật, giải mã câu đố hoặc sử dụng cửa hậu. Cụ thể, một câu đố khóa thời gian đồng nhất tuyến tính cho phép chúng tôi kết hợp các câu đố lại với nhau để tạo ra một câu đố mới, bao bọc tổng giá trị bí mật của các câu đố ban đầu.

Như các tác giả của bài báo đã chỉ ra, câu đố khóa thời gian đồng nhất tuyến tính là một nguyên tố đặc biệt phù hợp cho bỏ phiếu riêng tư: lá phiếu có thể được mã hóa thành câu đố và chúng có thể được kết hợp đồng nhất để có được một câu đố mã hóa kết quả cuối cùng của việc kiểm phiếu. Điều này có nghĩa là chỉ cần một phép tính để tiết lộ kết quả cuối cùng, thay vì phải giải quyết một câu đố độc đáo cho mỗi lá phiếu.

Một cấu trúc mới: Hiệu quả và đánh đổi

Để làm cho phương án bỏ phiếu trên chuỗi thực tiễn, còn cần xem xét một số vấn đề. Đầu tiên, kẻ tấn công có thể cố gắng thao túng cuộc bỏ phiếu bằng cách bỏ một lá phiếu mã hóa không chính xác. Ví dụ, chúng tôi có thể muốn mã hóa câu đố khóa thời gian của mỗi lá phiếu thành một giá trị boolean: "1" biểu thị ủng hộ đề xuất được bỏ phiếu, "0" biểu thị phản đối. Một người ủng hộ đề xuất nhiệt tình có thể cố gắng mã hóa, chẳng hạn như "100" để mở rộng quyền bỏ phiếu hợp lệ của họ.

Chúng tôi có thể ngăn chặn cuộc tấn công này bằng cách yêu cầu cử tri gửi một chứng minh không biết về tính hợp lệ của lá phiếu cùng với việc gửi lá phiếu chính nó. Tuy nhiên, chi phí tính toán của chứng minh không biết rất cao------để giảm thiểu chi phí tham gia của cử tri, chứng minh nên là (1) có thể tính toán hiệu quả trên máy khách và (2) có thể xác minh hiệu quả trên chuỗi.

Để làm cho chứng minh càng hiệu quả càng tốt, chúng tôi đã sử dụng giao thức sigma tùy chỉnh------chứng minh không biết được thiết kế cho các mối quan hệ đại số cụ thể, thay vì hệ thống chứng minh chung. Điều này khiến thời gian của người chứng minh rất nhanh: việc tạo ra một chứng minh tính hợp lệ của lá phiếu bằng Python trên một chiếc laptop thông thường mất 14ms.

Mặc dù trình xác minh của giao thức sigma này về mặt lý thuyết rất đơn giản, nhưng nó yêu cầu một phần lớn của phép lũy thừa lớn. Phương án đồng nhất tuyến tính của Malavolta và Thyagarajan sử dụng mã hóa Paillier, do đó các phép lũy thừa này sẽ thực hiện trên một số RSA mô N với mô N^2. Đối với N có kích thước hợp lý, việc lấy lũy thừa rất tốn kém trên hầu hết các chuỗi EVM (hàng triệu gas). Để giảm chi phí, Cicada sử dụng ElGamal lũy thừa------ElGamal lũy thừa vẫn cung cấp tính đồng nhất cộng, nhưng hoạt động trên các mô số nhỏ hơn (N thay vì N^2).

Một nhược điểm của việc sử dụng ElGamal là bước cuối cùng của việc giải mã số phiếu cần phải bẻ khóa lôgari của số nguyên (lưu ý rằng điều này được thực hiện ngoài chuỗi và được xác minh hiệu quả trên chuỗi). Do đó, nó chỉ phù hợp cho các trường hợp mà số phiếu cuối cùng dự kiến là khá nhỏ (ví dụ, nhỏ hơn 2^32, hoặc khoảng 4.3 triệu phiếu). Trong phương án ban đầu dựa trên Paillier, việc kiểm phiếu có thể được giải mã hiệu quả bất kể kích thước của nó.

Việc chọn mô số RSA N cũng liên quan đến việc đánh đổi. Triển khai của chúng tôi sử dụng mô số 1024 bit để cải thiện hiệu quả gas. Mặc dù điều này cao hơn nhiều so với mô số RSA lớn nhất từng được công khai phân tích (829 bit), nhưng thấp hơn kích thước thường được khuyến nghị là 2048 bit cho mã hóa hoặc ký RSA. Tuy nhiên, ứng dụng của chúng tôi không cần tính bảo mật lâu dài: một khi cuộc bầu cử kết thúc, không có rủi ro nào liên quan đến N trong tương lai. Giả định rằng việc kiểm phiếu và lá phiếu sẽ được công khai sau khi thời gian khóa hết hạn, vì vậy việc sử dụng mô số tương đối nhỏ là hợp lý. (Nếu thuật toán phân tích được cải thiện, điều này cũng có thể dễ dàng được cập nhật trong tương lai.)

Ẩn danh và đủ điều kiện cử tri

Như đã đề cập ở trên, Cicada cung cấp quyền riêng tư cho việc kiểm phiếu đang diễn ra------thuộc tính câu đố khóa thời gian giữ cho việc kiểm phiếu được bí mật trong suốt quá trình bỏ phiếu. Tuy nhiên, mỗi lá phiếu riêng lẻ cũng là một câu đố khóa thời gian, được mã hóa dưới các tham số công cộng giống nhau. Điều này có nghĩa là cũng như có thể giải mã số phiếu (bằng cách thực hiện các phép tính cần thiết), mỗi lá phiếu cũng có thể. Nói cách khác, Cicada chỉ đảm bảo quyền riêng tư của lá phiếu trong suốt quá trình bỏ phiếu------nếu một quan sát viên tò mò muốn giải mã lá phiếu của một cử tri cụ thể, họ có thể làm như vậy. Việc giải mã bất kỳ lá phiếu cá nhân nào cũng tốn kém như việc giải mã số phiếu cuối cùng, do đó một cách ngây thơ cần O(n) công việc để hoàn toàn giải mã các lá phiếu có n cử tri. Tuy nhiên, tất cả các lá phiếu này có thể được giải mã song song (giả sử có đủ máy), thời gian thực tế tiêu tốn tương đương với thời gian cần thiết để giải mã số phiếu cuối cùng.

Đối với một số lá phiếu, điều này có thể không mong muốn. Mặc dù chúng tôi hài lòng với quyền riêng tư tạm thời của việc kiểm phiếu đang diễn ra, nhưng chúng tôi có thể muốn quyền riêng tư bỏ phiếu vô thời hạn. Để đạt được điều này, chúng tôi có thể kết hợp Cicada với một giao thức đủ điều kiện cử tri ẩn danh, được thực hiện thông qua chứng minh thành viên nhóm không biết. Bằng cách này, ngay cả khi lá phiếu bị giải mã, điều nó tiết lộ chỉ là ai đó đã bỏ phiếu theo cách này------chúng tôi đã biết điều này từ việc kiểm phiếu.

Trong kho lưu trữ của chúng tôi, chúng tôi bao gồm một hợp đồng mẫu sử dụng Semaphore để ẩn danh cử tri. Tuy nhiên, xin lưu ý rằng hợp đồng Cicada bản thân không đưa ra bất kỳ giả định nào về cách xác định hoặc thực hiện đủ điều kiện cử tri. Cụ thể, bạn có thể thay thế Semaphore bằng các giải pháp như Semacaulk hoặc chứng minh trạng thái ZK (như tại đâytại đây đã đề xuất).

Cơ quan thống kê

Một trong những ưu tiên hàng đầu của chúng tôi khi thiết kế Cicada là tránh cần có cơ quan thống kê: nhiều cấu trúc bỏ phiếu riêng tư yêu cầu một cơ quan thống kê (hoặc ủy ban được ủy quyền, phối hợp thông qua tính toán đa bên an toàn) nhận và tổng hợp các lá phiếu. Trong môi trường blockchain, điều này có nghĩa là các phương án này không thể chỉ được thực hiện bởi hợp đồng thông minh, mà cần một số can thiệp và lòng tin của con người.

Trong hầu hết các cấu trúc, cơ quan kiểm phiếu không đáng tin cậy về tính toàn vẹn (họ không thể thao túng số phiếu), nhưng đáng tin cậy về tính hoạt động------nếu họ ngoại tuyến, họ không thể tính toán kết quả cuối cùng, do đó kéo dài vô thời hạn kết quả bỏ phiếu. Trong một số cấu trúc, họ cũng được tin tưởng để duy trì quyền riêng tư------tức là, họ biết mọi người đã bỏ phiếu như thế nào, nhưng dự kiến sẽ công bố kết quả bỏ phiếu mà không tiết lộ thông tin này.

Mặc dù trong nhiều tình huống thực tế, cơ quan thống kê là một giả định hợp lý (và cần thiết), nhưng chúng không lý tưởng trong môi trường blockchain, và mục tiêu của chúng tôi là giảm thiểu lòng tin và đảm bảo khả năng chống kiểm duyệt.

Cicada khám phá một trong nhiều hướng trong lĩnh vực quyền riêng tư bỏ phiếu trên chuỗi, và bổ sung cho phần lớn nghiên cứu mà các nhóm khác đang thực hiện. Như đã đề cập ở trên, Cicada có mối liên hệ chặt chẽ với các công nghệ thành viên nhóm ẩn danh như Semaphore, chứng minh lưu trữ ZK và bộ giới hạn không hợp lệ. Cicada cũng có thể tích hợp với trình kiểm tra chứng minh lạc quan mà nhóm Nouns Vortex đã đề xuất, để giảm bớt gánh nặng gas cho cử tri.

Cũng có cơ hội điều chỉnh Cicada để hỗ trợ các phương án bỏ phiếu khác nhau (ví dụ, bỏ phiếu có trọng số bằng mã thông báo, bỏ phiếu thứ cấp)------các phương án phức tạp hơn có thể có chi phí tính toán quá cao cho mạng chính Ethereum, nhưng chúng có thể khả thi trên L2. Với điều đó trong tâm trí, chúng tôi hoan nghênh bạn đóng góp, phân nhánh và đề xuất về bước tiếp theo để đưa Cicada đi xa hơn.

warnning Cảnh báo rủi ro
app_icon
ChainCatcher Building the Web3 world with innovations.