Tiêu đề gốc: "Building Cicada: Private on-chain voting using time-lock puzzles"
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 dựa trên tính toàn vẹn và minh bạch. Nhìn bề ngoài, điều này làm cho chuỗi khối trở thành một nền tảng lý tưởng để xây dựng các hệ thống này – thực tế, nhiều tổ chức phi tập trung đã chấp nhận bỏ phiếu không cần xin phép như một phương tiện thể hiện ý định tập thể, thường sử dụng khối tài sản khổng lồ hoặc điều chỉnh các tham số giao thức chính trong trường hợp đó. Nhưng bỏ phiếu trực tuyến cũng có nhược điểm, quyền riêng tư vẫn chưa được khám phá và chưa phát triển, điều này không tốt cho hệ thống bỏ phiếu Web3 – trong hầu hết các giao thức bỏ phiếu trực tuyến hiện đang được sử dụng, các lá phiếu và kết quả bỏ phiếu đều hoàn toàn công khai. Nếu không có quyền riêng tư, kết quả bỏ phiếu có thể dễ dàng bị thao túng và động cơ khuyến khích cử tri bị sai lệch, có khả năng dẫn đến kết quả phi 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, tận dụng các câu đố khóa thời gian và bằng chứng không có kiến thức để cho phép bỏ phiếu trực tuyến riêng tư. So với các hệ thống hiện có, Cicada có các thuộc tính riêng tư mới, giảm thiểu các giả định về độ tin cậy và đủ hiệu quả để sử dụng trên mạng chính Ethereum.
Trong bài đăng này, chúng tôi khảo sát tình trạng quyền riêng tư khi bỏ phiếu và cung cấp mô tả cấp cao về cách thức hoạt động của Cicada (sắp có bằng chứng chính thức). Chúng tôi cũng khuyến khích các nhà phát triển kiểm tra 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 tính năng và chương trình bỏ phiếu khác nhau, đồng thời chúng tôi 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 gọn về bỏ phiếu kín
Trong bất kỳ hệ thống bỏ phiếu nào (trên chuỗi hoặc cách khác), có nhiều mức độ riêng tư khác nhau cần xem xét. Việc tiết lộ các lá phiếu riêng lẻ, số lượng đang tranh cử và danh tính cử tri đều ả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 riêng tư nào là cần thiết tùy thuộc vào bối cảnh của cuộc bỏ phiếu. Một số ít xuất hiện thường xuyê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: Các lá phiếu bí mật, còn được gọi là "lá phiếu của Ú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 để bảo vệ sở thích của từng cử tri và giảm thiểu hối lộ và ép buộc (được thiết lập trực tuyến, chúng tôi có thể cần một tài sản mạnh hơn quyền riêng tư của lá phiếu - xem phần "Không tiếp nhận" bên dưới). Quyền riêng tư về bầu cử cũng có thể giảm thiểu thành kiến mong muốn của xã hội — một người nào đó có ít áp lực bỏ phiếu hơn dựa trên suy nghĩ của người khác về lựa chọn của họ.
Quyền riêng tư của quá trình kiểm phiếu đang diễn ra: Nhiều hệ thống bỏ phiếu ẩn quá trình kiểm phiếu đang diễn ra hoặc số lượng phiếu bầu đã được bỏ cho mỗi tùy chọn, trong khi cử tri vẫn đang bỏ phiếu, để tránh ảnh hưởng đến tỷ lệ cử tri đi bầu và các động cơ khuyến khích cử tri. Chúng ta đã thấy điều này xảy ra trong thế giới thực; ví dụ: các thượng nghị sĩ Hoa Kỳ bỏ phiếu muộn hơn có nhiều khả năng ủng hộ đảng của họ hơn so với các thượng nghị sĩ bỏ phiếu sớm hơn. Và trên chuỗi: trong bỏ phiếu dựa trên mã thông báo, cá voi có thể ru ngủ đối thủ của họ vào cảm giác an toàn sai lầm bằng cách giữ họ ở phía trước (một số có thể quá lười bỏ phiếu, cho rằng dù sao họ cũng sẽ thắng), sau đó bỏ phiếu của chính họ tại phút cuối cùng Hãy đến và quyết định kết quả.
Cử tri ẩn danh: Trong nhiều hệ thống bỏ phiếu trong thế giới thực, phiếu bầu của bạn không công khai, nhưng thực tế là bạn đã bỏ phiếu thường công khai. Điều này rất quan trọng để ngăn chặn hành vi gian lận cử tri, bởi vì việc xuất bản hồ sơ cử tri cho phép mọi người kiểm tra xem những người khác có bỏ phiếu nhân danh họ hay không. Tuy nhiên, trên chuỗi, chúng tôi có thể ngăn chặn hành vi gian lận của cử tri trong khi vẫn duy trì tính ẩn danh bằng cách sử dụng nguyên hàm mật mã — ví dụ: với Semaphore, bạn có thể chứng minh bằng không mà không cần biết rằng bạn là cử tri đủ điều kiện chưa bỏ phiếu.
Không nhận phiếu: Các cử tri cá nhân cung cấp “biên lai” các lá phiếu của họ để chứng minh cách họ đã bỏ phiếu cho bên thứ ba, điều này có thể dẫn đến việc bán vé. Một thuộc tính có liên quan chặt chẽ nhưng mạnh mẽ hơn là khả năng chống cưỡng chế, ngăn không cho ai đó ép buộc cử tri bỏ phiếu theo một cách nhất định. Những thuộc tính này đặc biệt hấp dẫn trong môi trường phi tập trung, nơi quyền biểu quyết có thể được thực hiện thanh khoản thông qua thị trường hợp đồng thông minh. Thật không may, chúng cũng khó thực hiện—trên thực tế, Juels và cộng sự chỉ ra rằng điều đó là không thể trong một môi trường không được phép nếu không có phần cứng đáng tin cậy.
Cicada tập trung vào quyền riêng tư trong quá trình kiểm phiếu, nhưng (như chúng ta sẽ thảo luận sau) nó có thể được kết hợp với bằng chứng thành viên nhóm không có kiến thức để đạt được tính ẩn danh của cử tri và quyền riêng tư của lá phiếu.
Giới thiệu Cicada: Quyền riêng tư khi đếm phiếu bầu từ Vấn đề khóa thời gian đồng hình
Để đạt được sự 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ắc mật mã mà (theo hiểu biết của chúng tôi) 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 đố được mã hóa chứa đựng một bí mật chỉ có thể được tiết lộ sau một khoảng thời gian xác định trước—cụ thể hơn, câu đố có thể được lặp lại bằng cách thực hiện một số thao tác không tính toán song song để giải mã. Các câu đố có 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ư khi chạy số liệu thống kê: người dùng có thể gửi phiếu bầu của họ dưới dạng câu đố có khóa thời gian để chúng đượ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ông giống như 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ư thống kê hoạt động mà không cần dựa vào các cơ quan thống kê (chẳng hạn như nhân viên bầu cử đếm phiếu bầu trên giấy hoặc phiếu kỹ thuật số), ngưỡng mã hóa (một số bên đáng tin cậy phải hợp tác để giải mã tin nhắn) 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 câu đố khóa thời gian để đảm bảo rằng kết quả được tiết lộ sau khi bỏ phiếu.
Thứ hai, câu đố khóa thời gian đẳng cấu (Malavolta Thyagarajan, 2019) có thuộc tính bổ sung là có thể thực hiện một số tính toán trên các giá trị được mã hóa khi biết khóa bí mật, giải mã câu đố hoặc sử dụng cửa hậu. Đặc biệt, một câu đố khóa thời gian đồng cấu tuyến tính cho phép chúng ta kết hợp các câu đố lại với nhau để tạo ra một câu đố mới gói gọn tổng các giá trị bí mật của câu đố ban đầu.
Như các tác giả của bài báo đã chỉ ra, các câu đố khóa thời gian đồng hình tuyến tính là một công cụ nguyên thủy đặc biệt phù hợp để bỏ phiếu kín: phiếu bầu có thể được mã hóa dưới dạng câu đố và chúng có thể được kết hợp đồng hình để có được Câu đố đếm cuối cùng được mã hóa. Điều này có nghĩa là chỉ cần một phép tính để đưa ra kết quả cuối cùng, thay vì giải một câu đố duy nhất cho mỗi phiếu bầu.
Một cấu trúc mới: Hiệu quả và Đánh đổi
Có một số vấn đề cần xem xét để một kế hoạch bỏ phiếu trở nên thực tế trên chuỗi. Đầu tiên, kẻ tấn công có thể cố gắng thao túng phiếu bầu bằng cách bỏ phiếu được mã hóa không chính xác. Ví dụ: chúng tôi có thể muốn câu đố khóa thời gian cho mỗi lá phiếu được mã hóa dưới dạng giá trị boolean: "1" cho đề xuất được bỏ phiếu và "0" cho đề xuất không. Một người ủng hộ đề xuất nhiệt thành có thể cố gắng viết mã gì đó như "100" để mở rộng quyền biểu quyết hiệu quả 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 bằng chứng không biết về tính hợp lệ của phiếu bầu cùng với chính phiếu bầu đó. Tuy nhiên, bằng chứng không kiến thức rất tốn kém về mặt tính toán—để giữ cho chi phí tham gia của cử tri ở mức thấp nhất có thể, bằng chứng phải (1) phía máy khách có thể tính toán hiệu quả và (2) có thể kiểm chứng hiệu quả trên chuỗi.
Để chứng minh hiệu quả nhất có thể, chúng tôi sử dụng giao thức sigma tùy chỉnh—chứng minh không kiến thức được thiết kế cho các quan hệ đại số cụ thể, thay vì hệ thống chứng minh có mục đích chung. Điều này làm cho thời gian xác minh cực kỳ nhanh: tạo bằng chứng hợp lệ của lá phiếu bằng Python mất 14 mili giây trên máy tính xách tay có sẵn.
Mặc dù trình xác thực cho giao thức sigma này đơn giản về mặt khái niệm, nhưng nó yêu cầu một số lượng khá lớn các phép lũy thừa mô-đun. Lược đồ đồng hình tuyến tính của Malavolta và Thyagarajan sử dụng mã hóa Paillier, vì vậy các phép lũy thừa này sẽ thực hiện modulo N^2 cho một số RSA modulo N. Đối với kích thước hợp lý của N, phép lũy thừa rất tốn kém (hàng triệu gas) trên hầu hết các chuỗi EVM. Để giảm chi phí, Cicada sử dụng ElGamal hàm mũ - ElGamal hàm mũ vẫn cung cấp các phép đồng cấu phụ gia, nhưng hoạt động trên các mô đun 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ố đếm yêu cầu bruteforcing nhật ký riêng biệt (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ỉ hoạt động nếu số phiếu bầu cuối cùng dự kiến là khá nhỏ (ví dụ: dưới 2^32 hoặc khoảng 4,3 triệu phiếu bầu). Trong sơ đồ gốc dựa trên Paillier, số lượng có thể được giải mã một cách hiệu quả bất kể kích thước của chúng.
Việc chọn mô đun RSA N cũng liên quan đến sự đánh đổi. Việc triển khai của chúng tôi sử dụng mô-đun 1024 bit để tiết kiệm gas. Mặc dù giá trị này cao hơn nhiều so với mô-đun RSA lớn nhất từng được tính công khai (829 bit), nhưng nó thấp hơn kích thước thường được khuyến nghị là 2048 bit để mã hóa hoặc ký RSA. Tuy nhiên, ứng dụng của chúng tôi không yêu cầu bảo mật lâu dài: một khi cuộc bầu cử kết thúc, sẽ không có rủi ro nếu N được xem xét trong tương lai. Việc sử dụng một mô-đun tương đối nhỏ là hợp lý, giả sử rằng số lượng và phiếu bầu được công khai sau khi hết thời gian khóa. (Điều này cũng có thể dễ dàng cập nhật trong tương lai nếu thuật toán phân tách được cải thiện.)
Ẩn danh và Tư cách cử tri
Như đã đề cập ở trên, Cicada cung cấp quyền riêng tư về số lần chạy - một thuộc tính câu đố bị khóa thời gian giúp giữ kín số phiếu bầu trong khi 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 theo cùng một tham số công khai. Điều này có nghĩa là số đếm có thể được giải mã (bằng cách thực hiện các phép tính cần thiết), mỗi phiếu bầu cũng vậy. Nói cách khác, Cicada chỉ đảm bảo quyền riêng tư của lá phiếu trong quá trình bỏ phiếu — nếu những người quan sát 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. Giải mã bất kỳ lá phiếu riêng lẻ nào cũng tốn kém như giải mã số đếm cuối cùng, do đó, thật ngây thơ khi giải mã hoàn toàn một lá phiếu có n cử tri. Nhưng tất cả các phiếu bầu này có thể được giải mã song song (giả sử có đủ máy), mất cùng một lượng thời gian đồng hồ treo tường để giải mã lần kiểm phiếu cuối cùng.
Đối với một số phiếu bầu, điều này có thể không được mong muốn. Mặc dù chúng tôi hài lòng với việc chạy quyền riêng tư kiểm phiếu tạm thời, 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ủa cử tri ẩn danh, được khởi tạo bằng bằng chứng không cần biết về tư cách thành viên nhóm. Theo cách đó, ngay cả khi lá phiếu được giải mật, tất cả những gì nó tiết lộ là ai đó đã bỏ phiếu theo cách đó - và chúng tôi đã biết điều đó 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 ví dụ sử dụng Semaphore để ẩn danh cử tri. Tuy nhiên, xin lưu ý rằng bản thân hợp đồng Cicada không đưa ra giả định nào về cách thức xác định hoặc thi hành tính hợp lệ của cử tri. Cụ thể, bạn có thể thay thế Semaphore bằng Semacaulk hoặc ZK Proof of State (như được đề xuất tại đây và tại đây).
Thống kê hiện tại
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 sự cần thiết của cơ quan thống kê: nhiều cấu trúc bỏ phiếu riêng yêu cầu cơ quan thống kê bán tin cậy (hoặc ủy ban được ủy quyền, được điều phối thông qua tính toán đa bên an toàn) để nhận và tổng hợp phiếu bầu. Trong bối cảnh chuỗi khối, điều này có nghĩa là các kế hoạch này không thể được thực hiện chỉ bằng các hợp đồng thông minh, mà cần có sự can thiệp và tin tưởng của con người.
Trong hầu hết các cấu trúc, cơ quan kiểm phiếu không được tin cậy về tính chính trực (họ không thể thao túng số phiếu), nhưng được tin cậy về tính sống động - nếu họ ngoại tuyến, họ không thể tính toán kết quả cuối cùng, làm trì hoãn việc bỏ phiếu vô thời hạn. Trong một số cấu trúc, họ cũng được tin cậy để duy trì quyền riêng tư—nghĩa là họ biết cách mỗi cá nhân bỏ phiếu, nhưng phải công bố kết quả bỏ phiếu mà không tiết lộ thông tin này.
Mặc dù các cơ quan thống kê là một giả định hợp lý (và cần thiết) trong nhiều tình huống trong thế giới thực, nhưng chúng không lý tưởng trong môi trường chuỗi khối, nơi mục tiêu của chúng tôi là giảm thiểu sự tin cậy 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ư khi bỏ phiếu trên chuỗi và bổ sung cho nhiều nghiên cứu đang được thực hiện bởi các nhóm khác. Như đã đề cập ở trên, Cicada có liên quan chặt chẽ với các công nghệ thành viên nhóm ẩn danh như semaphores, bằng chứng lưu trữ ZK và trình vô hiệu hóa giới hạn tỷ lệ. Cicada cũng có thể tích hợp trình kiểm tra bằng chứng lạc quan do nhóm Nouns Vortex đề xuất để giảm bớt gánh nặng về xăng cho cử tri.
Ngoài ra còn có cơ hội điều chỉnh Cicada để hỗ trợ các kế hoạch bỏ phiếu khác nhau (ví dụ: bỏ phiếu theo trọng số mã thông báo, bỏ phiếu bậc hai) - các kế hoạch phức tạp hơn có thể quá tốn kém về mặt tính toán đối với mạng chính Ethereum, nhưng chúng có thể thực tế ở L2. Với suy nghĩ này, chúng tôi hoan nghênh những đóng góp, chia sẻ và đề xuất của bạn về nơi tiếp theo sẽ là Cicada.
Sử dụng Claude AI để điều khiển máy tính phát hành coin, gửi tiền đến Truth Terminal và tìm hiểu về Meme ANT mới
Nền tảng ra mắt Meme trở thành cơ sở hạ tầng chuỗi công cộng? Kho đĩa giả "Pump.fun" của từng chuỗi
Các tùy chọn Bitcoin ETF được phê duyệt, liệu Bitcoin có tăng trưởng bùng nổ không?