Tất cả các hệ thống bỏ phiếu cần phải dựa vào tính liêm chính và minh bạch để có hiệu quả. Nhìn bề ngoài, blockchain dường như là nền tảng lý tưởng để xây dựng các hệ thống này. Trên thực tế, nhiều tổ chức phi tập trung đã áp dụng bỏ phiếu không cần xin phép để thể hiện ý chí tập thể, thường là trong bối cảnh thực hiện quyền lực tài chính đáng kể hoặc điều chỉnh các tham số giao thức chính. Tuy nhiên, bỏ phiếu trực tuyến có một số nhược điểm và những lo ngại về quyền riêng tư chưa được khám phá đầy đủ đối với các hệ thống bỏ phiếu Web3, điều này đã ảnh hưởng tiêu cực đến nó. Trong hầu hết các giao thức bỏ phiếu trực tuyến được sử dụng ngày nay, các lá phiếu và kết quả bỏ phiếu đều được công khai hoàn toàn. Việc thiếu bảo vệ quyền riêng tư có nghĩa là kết quả bỏ phiếu dễ bị thao túng, đồng thời dẫn đến các động cơ khuyến khích cử tri không nhất quán, có khả năng dẫn đến kết quả phi dân chủ.
Để đạt được mục tiêu đó, chúng tôi sẽ ra mắt Cicada: một thư viện Solidity mã nguồn mở mới, sử dụng các câu đố khóa thời gian và bằng chứng không cần biết để bỏ phiếu kín trên chuỗi. So với các hệ thống hiện có, Cicada có các thuộc tính riêng tư độc đáo, giảm thiểu sự phụ thuộc vào niềm tin và cũng rất hiệu quả trên mạng chính Ethereum.
Trong bài báo này, chúng tôi khảo sát tình trạng hiện tại của quyền riêng tư khi bỏ phiếu và cung cấp phần giới thiệu cấp cao về cách thức hoạt động của Cicada (các bằng chứng chính thức sẽ được cung cấp sau đây). Chúng tôi cũng khuyến khích các nhà phát triển truy cập kho lưu trữ GitHub để biết chi tiết - Cicada có thể được điều chỉnh và mở rộng linh hoạt cho các chương trình và tính năng bỏ phiếu khác nhau. Chúng tôi mong muốn được làm việc với cộng đồng để cùng nhau khám phá những khả năng này.
Tổng quan về quyền riêng tư khi bỏ phiếu
Trong bất kỳ hệ thống bỏ phiếu nào (trên chuỗi hoặc cách khác), chúng ta cần xem xét nhiều mức độ riêng tư khác nhau. Việc tiết lộ các lá phiếu riêng lẻ, việc kiểm phiếu đang diễn ra và danh tính cử tri đều ảnh hưởng đến cử tri theo những cách khác nhau. Các thuộc tính quyền riêng tư mong muốn thay đổi theo từng phiếu bầu, nhưng đây là một số thuộc tính thường được đề cập trong tài liệu khoa học xã hội và mật mã:
*****Quyền riêng tư của lá phiếu: Bỏ phiếu kín, còn được gọi là "lá phiếu Úc", là một cách để bảo vệ quyền riêng tư của từng cử tri trong các hệ thống bỏ phiếu trong thế giới thực và giảm hối lộ và ép buộc (trên dây chuyền Trong môi trường trên, chúng tôi có thể cần một cơ chế mạnh mẽ hơn bỏ phiếu kín, xem phần "không biên nhận" bên dưới để biết chi tiết). Quyền riêng tư về bầu cử cũng có thể làm giảm xu hướng mong muốn của xã hội—mọi người ít có khả năng bỏ phiếu 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 việc kiểm phiếu: Nhiều hệ thống bỏ phiếu ẩn số phiếu đang diễn ra, tức là số phiếu mà mỗi lựa chọn nhận được, trong quá trình bỏ phiếu của cử tri để tránh ảnh hưởng đến tỷ lệ cử tri đi bầu và khuyến khích cử tri. Chúng tôi đã 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. Trong biểu quyết dựa trên mã thông báo trên chuỗi, những con cá voi khổng lồ có thể duy trì cảm giác an toàn sai lầm của mình bằng cách giữ cho đối thủ của họ dẫn trước (một số người có thể quá lười bỏ phiếu vì họ nghĩ rằng đằng nào thì những người này cũng sẽ thắng), sau đó bỏ phiếu cho chính họ tại giây phút cuối cùng.phiếu quyết định kết quả.
***** Tính ẩn danh của cử tri: Trong nhiều hệ thống bỏ phiếu trong thế giới thực, phiếu bầu của bạn được giữ kín, nhưng những người khác thường biết bạn có bỏ phiếu hay không. Điều này có thể phục vụ như một biện pháp bảo vệ chống gian lận cử tri, vì việc xuất bản hồ sơ về những người đã bỏ phiếu sẽ cho phép mọi người kiểm tra xem liệu có ai đó đã bỏ phiếu nhân danh họ hay không. Tuy nhiên, trên chuỗi, chúng tôi có thể sử dụng các nguyên hàm mật mã để ngăn gian lận cử tri trong khi duy trì tính ẩn danh — ví dụ: sử dụng Semaphore, bạn có thể chứng minh theo cách không cần biết rằng bạn là cử tri đủ điều kiện và chưa bỏ phiếu.
***** Không có khả năng nhận được: Cử tri không được cung cấp "biên nhận" lá phiếu cho bên thứ ba để chứng minh lá phiếu của họ đã được bầu cho ai đó như thế nào, điều này có thể dẫn đến việc bán lá phiếu. Khả năng chống cưỡng chế là một thuộc tính có liên quan chặt chẽ khác, ngăn không cho ai đó bị buộc phải 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 mà quyền biểu quyết có thể trở thành thanh khoản thông qua thị trường hợp đồng thông minh. Thật không may, những đặc tính này rất khó đạt được. Thật vậy, Juels và cộng sự chỉ ra rằng những thuộc tính này không thể đạt được trong 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ư khi kiểm phiếu liên tục, tuy nhiên (như chúng ta sẽ thảo luận sau), nó có thể được sử dụng cùng với bằng chứng thành viên nhóm không có kiến thức về tính ẩn danh của cử tri và quyền riêng tư của lá phiếu.
Cicada: Quyền riêng tư khi kiểm phiếu bằng cách sử dụng câu đố khóa thời gian đồng hình
Để đạt được quyền riêng tư trong việc kiểm phiếu liên tục, Cicada mượn các nguyên tắc mật mã chưa bao giờ (theo hiểu biết của chúng tôi) được sử dụng trên chuỗi.
Đầu tiên, câu đố khóa thời gian (Rivest, Shamir, Wagner, 1996) là một câu đố mật mã mà bí mật của nó chỉ có thể được tiết lộ sau một khoảng thời gian xác định trước đã trôi qua—cụ thể hơn, chỉ bằng cách thực hiện lặp đi lặp lại một số phép tính không thể song song này là dùng để giải câu đố. Câu đố khóa thời gian rất hữu ích trong bối cảnh bỏ phiếu để bảo mật số phiếu đang diễn ra: người dùng có thể gửi phiếu bầu của họ dưới dạng câu đố khóa thời gian, để phiếu bầu của họ sẽ được giữ riêng tư trong quá trình bỏ phiếu, nhưng có thể được truy cập sau khi bỏ phiếu được tiết lộ. 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 đạt được quyền riêng tư khi kiểm phiếu 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ố), mã hóa ngưỡng (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 kết quả được tiết lộ sau khi bỏ phiếu.
Thứ hai, câu đố khóa thời gian đồng hình (Malavolta Thyagarajan, 2019) có thuộc tính bổ sung là một số phép tính có thể được thực hiệ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, 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 chứa tổng các 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ác câu đố khóa thời gian đồng cấu tuyến tính đặc biệt phù hợp cho việc bỏ phiếu kín: các phiếu bầu có thể được mã hóa thành các câu đố và chúng có thể được kết hợp đồng hình để thu được các câu đố mã hóa số liệu thống kê cuối cùng. Điều này có nghĩa là chỉ cần một phép tính để tiết lộ kết quả kiểm phiếu cuối cùng, thay vì giải một câu đố duy nhất cho mỗi phiếu bầu.
Hệ thống mới: Hiệu quả và Đánh đổi
Đối với một kế hoạch bỏ phiếu có thể được áp dụng thực tế trên chuỗi, có một số yếu tố cần xem xét. Đầu tiên, kẻ tấn công có thể cố gắng thao túng kết quả bỏ phiếu bằng cách gửi các lá phiếu được mã hóa không chính xác. Ví dụ: chúng tôi có thể mong đợi câu đố khóa thời gian của mỗi lá phiếu mã hóa một giá trị boolean: "1" cho giải pháp được bình chọn và "0" cho phản đối. Một người ủng hộ nhiệt thành có thể cố gắng sử dụng mã như "100" để tă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 có kiến thức bên cạnh việc tự gửi lá phiếu. Tuy nhiên, bằng chứng không kiến thức có thể tốn kém về mặt tính toán - để giữ chi phí tham gia của cử tri ở mức thấp nhất có thể, bằng chứng phải (1) được tính toán hiệu quả ở phía khách hàng và (2) được xác minh hiệu quả trên chuỗi.
Để làm cho bằng chứng hiệu quả nhất có thể, chúng tôi sử dụng giao thức sigma tùy chỉnh. Đây là một chứng minh không kiến thức được thiết kế cho các quan hệ đại số cụ thể, không phải là một hệ thống chứng minh chung. Điều này giúp tăng tốc đáng kể thời gian kiểm chứng: trên máy tính xách tay bán sẵn, chỉ mất 14 mili giây để tạo bằng chứng hợp lệ của lá phiếu bằng Python.
Mặc dù quy trình xác minh của giao thức sigma này đơn giản về mặt khái niệm, nhưng nó thực sự yêu cầu một số phép toán hàm mũ modulo lớn. 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 toán hàm mũ này sẽ được thực hiện theo mô-đun một số mô-đun RSA N^2. Đối với N lớn hợp lý, các hoạt động lũy thừa này bị cấm đối với hầu hết các chuỗi EVM (yêu cầu hàng triệu gas). Để giảm chi phí này, Cicada sử dụng số mũ ElGamal thay vào đó, vẫn cung cấp tính đồng hình phụ gia, nhưng hoạt động trên một 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à nó yêu cầu logarit rời rạc đầy đủ để giải mã số liệu thống kê (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ỉ nên được sử dụng nếu số lượng cuối cùng dự kiến tương đối nhỏ (ví dụ: dưới 2^32, khoảng 4,3 triệu phiếu bầu). Trong sơ đồ gốc dựa trên Paillier, nó có thể được giải mã một cách hiệu quả bất kể kích thước của số liệu thống kê.
Việc chọn mô đun RSA N cũng liên quan đến sự đánh đổi. Phương pháp của chúng tôi sử dụng mô-đun 1024 bit để cải thiện hiệu quả sử dụng khí. Mặc dù giá trị này cao hơn nhiều so với mô đun RSA tối đa cho hệ số hóa (là 829 bit), nhưng nó thấp hơn kích thước 2048 bit thường được khuyến nghị cho mã hóa hoặc ký RSA. Tuy nhiên, trong ứng dụng của chúng tôi, chúng tôi không cần bảo mật dài hạn: một khi cuộc bầu cử kết thúc, sẽ không có rủi ro nếu N trong tương lai được đưa vào hệ số. Sau khi khóa thời gian hết hạn, sẽ hợp lý khi sử dụng một mô-đun tương đối nhỏ, giả sử rằng số liệu thống kê và phiếu bầu sẽ được công khai. (Điều này cũng có thể dễ dàng được cập nhật trong tương lai nếu thuật toán phân tích thừa số đượ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ư kiểm phiếu liên tục - một câu đố khóa thời gian giữ bí mật kiểm phiếu trong quá trình bỏ phiếu. Tuy nhiên, mỗi lá phiếu 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ố liệu thống kê có thể được giải mã (bằng cách thực hiện các tính toán 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 tính bí mật của lá phiếu trong quá trình bỏ phiếu. Nếu một 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ũng có thể làm như vậy sau khi các phòng phiếu đóng cửa. Chi phí giải mã bất kỳ một lá phiếu nào cũng giống như chi phí giải mã lần kiểm phiếu cuối cùng, do đó, việc giải mã hoàn toàn một lá phiếu có n cử tri yêu cầu O(n) công việc. Tuy nhiên, tất cả các phiếu bầu này có thể được giải mã song song (giả sử có đủ máy tính) trong một quá trình mất cùng khoảng thời gian như giải mã lần kiểm phiếu cuối cùng.
Đối với một số cuộc thăm dò, điều này có thể không lý tưởng. Mặc dù chúng tôi hài lòng với quyền riêng tư kiểm phiếu tạm thời, nhưng chúng tôi có thể muốn có quyền riêng tư bỏ phiếu vĩnh viễ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 thông qua bằng chứng về tư cách thành viên nhóm mà không cần biết. Bằng cách đó, ngay cả khi các lá phiếu được giải mật, nó sẽ chỉ tiết lộ cách một người nào đó đã bỏ phiếu, điều này đã được tiết lộ trong cuộc kiểm phiếu.
Trong kho lưu trữ của chúng tôi, chúng tôi cung cấp một hợp đồng ví dụ sử dụng Semaphore để ẩn danh cử tri. Lưu ý rằng bản thân hợp đồng Cicada không đưa ra giả định nào về việc xác định hoặc thực thi tư cách cử tri. Đặc biệt, bạn có thể thay thế Semaphore bằng Semacaulk hoặc ZK Proof of State.
Cơ quan kiểm phiếu
Một trong những mục tiêu đầu tiên của chúng tôi khi thiết kế Cicada là tránh phụ thuộc vào các cơ quan kiểm phiếu: nhiều phiếu bầu riêng yêu cầu cơ quan kiểm phiếu bán đáng tin cậy (hoặc ủy ban hợp tác 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 của 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ỉ thông qua 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 chế độ, các cơ quan thống kê được tin tưởng về tính chính trực (họ không thể thao túng số phiếu bầu), nhưng họ cũng phải duy trì hoạt động - nếu họ ngoại tuyến, kết quả cuối cùng không thể được tính toán và kết quả bỏ phiếu bị đình trệ vô thời hạn. Trong một số hệ thống, các cơ quan thống kê cũng được tin cậy để duy trì quyền riêng tư. Tức là họ biết lá phiếu của từng cử tri, nhưng công bố kết quả mà không để lộ thông tin này.
Mặc dù các cơ quan thống kê là 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 bối cảnh 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.
Phần kết luận
Cicada khám phá 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 nghiên cứu đang diễn ra của các nhóm khác. Như đã đề cập ở trên, Cicada bổ sung cho các công nghệ thành viên nhóm ẩn danh như Semaphore, bằng chứng lưu trữ ZK và bộ vô hiệu hóa giới hạn tốc độ. Cicada cũng có thể được kết hợp với 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, chúng tôi có cơ hội điều chỉnh Cicada để hỗ trợ các sơ đồ bỏ phiếu khác nhau (ví dụ: bỏ phiếu theo trọng số, bỏ phiếu bậc hai), trong khi các sơ đồ phức tạp hơn có thể tốn kém về mặt tính toán đối với mạng chính Ethereum, chúng có thể khả thi trên các mạng Lớp 2 của. Với suy nghĩ này, chúng tôi hoan nghênh mọi đề xuất về hướng đi trong tương lai của Cicada.
Xem bản gốc
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
Cicada: Bỏ phiếu riêng tư trên chuỗi thông qua Timelock Puzzles và ZK
Tất cả các hệ thống bỏ phiếu cần phải dựa vào tính liêm chính và minh bạch để có hiệu quả. Nhìn bề ngoài, blockchain dường như là nền tảng lý tưởng để xây dựng các hệ thống này. Trên thực tế, nhiều tổ chức phi tập trung đã áp dụng bỏ phiếu không cần xin phép để thể hiện ý chí tập thể, thường là trong bối cảnh thực hiện quyền lực tài chính đáng kể hoặc điều chỉnh các tham số giao thức chính. Tuy nhiên, bỏ phiếu trực tuyến có một số nhược điểm và những lo ngại về quyền riêng tư chưa được khám phá đầy đủ đối với các hệ thống bỏ phiếu Web3, điều này đã ảnh hưởng tiêu cực đến nó. Trong hầu hết các giao thức bỏ phiếu trực tuyến được sử dụng ngày nay, các lá phiếu và kết quả bỏ phiếu đều được công khai hoàn toàn. Việc thiếu bảo vệ quyền riêng tư có nghĩa là kết quả bỏ phiếu dễ bị thao túng, đồng thời dẫn đến các động cơ khuyến khích cử tri không nhất quán, có khả năng dẫn đến kết quả phi dân chủ.
Để đạt được mục tiêu đó, chúng tôi sẽ ra mắt Cicada: một thư viện Solidity mã nguồn mở mới, sử dụng các câu đố khóa thời gian và bằng chứng không cần biết để bỏ phiếu kín trên chuỗi. So với các hệ thống hiện có, Cicada có các thuộc tính riêng tư độc đáo, giảm thiểu sự phụ thuộc vào niềm tin và cũng rất hiệu quả trên mạng chính Ethereum.
Trong bài báo này, chúng tôi khảo sát tình trạng hiện tại của quyền riêng tư khi bỏ phiếu và cung cấp phần giới thiệu cấp cao về cách thức hoạt động của Cicada (các bằng chứng chính thức sẽ được cung cấp sau đây). Chúng tôi cũng khuyến khích các nhà phát triển truy cập kho lưu trữ GitHub để biết chi tiết - Cicada có thể được điều chỉnh và mở rộng linh hoạt cho các chương trình và tính năng bỏ phiếu khác nhau. Chúng tôi mong muốn được làm việc với cộng đồng để cùng nhau khám phá những khả năng này.
Tổng quan về quyền riêng tư khi bỏ phiếu
Trong bất kỳ hệ thống bỏ phiếu nào (trên chuỗi hoặc cách khác), chúng ta cần xem xét nhiều mức độ riêng tư khác nhau. Việc tiết lộ các lá phiếu riêng lẻ, việc kiểm phiếu đang diễn ra và danh tính cử tri đều ảnh hưởng đến cử tri theo những cách khác nhau. Các thuộc tính quyền riêng tư mong muốn thay đổi theo từng phiếu bầu, nhưng đây là một số thuộc tính thường được đề cập trong tài liệu khoa học xã hội và mật mã:
*****Quyền riêng tư của lá phiếu: Bỏ phiếu kín, còn được gọi là "lá phiếu Úc", là một cách để bảo vệ quyền riêng tư của từng cử tri trong các hệ thống bỏ phiếu trong thế giới thực và giảm hối lộ và ép buộc (trên dây chuyền Trong môi trường trên, chúng tôi có thể cần một cơ chế mạnh mẽ hơn bỏ phiếu kín, xem phần "không biên nhận" bên dưới để biết chi tiết). Quyền riêng tư về bầu cử cũng có thể làm giảm xu hướng mong muốn của xã hội—mọi người ít có khả năng bỏ phiếu 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 việc kiểm phiếu: Nhiều hệ thống bỏ phiếu ẩn số phiếu đang diễn ra, tức là số phiếu mà mỗi lựa chọn nhận được, trong quá trình bỏ phiếu của cử tri để tránh ảnh hưởng đến tỷ lệ cử tri đi bầu và khuyến khích cử tri. Chúng tôi đã 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. Trong biểu quyết dựa trên mã thông báo trên chuỗi, những con cá voi khổng lồ có thể duy trì cảm giác an toàn sai lầm của mình bằng cách giữ cho đối thủ của họ dẫn trước (một số người có thể quá lười bỏ phiếu vì họ nghĩ rằng đằng nào thì những người này cũng sẽ thắng), sau đó bỏ phiếu cho chính họ tại giây phút cuối cùng.phiếu quyết định kết quả.
***** Tính ẩn danh của cử tri: Trong nhiều hệ thống bỏ phiếu trong thế giới thực, phiếu bầu của bạn được giữ kín, nhưng những người khác thường biết bạn có bỏ phiếu hay không. Điều này có thể phục vụ như một biện pháp bảo vệ chống gian lận cử tri, vì việc xuất bản hồ sơ về những người đã bỏ phiếu sẽ cho phép mọi người kiểm tra xem liệu có ai đó đã bỏ phiếu nhân danh họ hay không. Tuy nhiên, trên chuỗi, chúng tôi có thể sử dụng các nguyên hàm mật mã để ngăn gian lận cử tri trong khi duy trì tính ẩn danh — ví dụ: sử dụng Semaphore, bạn có thể chứng minh theo cách không cần biết rằng bạn là cử tri đủ điều kiện và chưa bỏ phiếu.
***** Không có khả năng nhận được: Cử tri không được cung cấp "biên nhận" lá phiếu cho bên thứ ba để chứng minh lá phiếu của họ đã được bầu cho ai đó như thế nào, điều này có thể dẫn đến việc bán lá phiếu. Khả năng chống cưỡng chế là một thuộc tính có liên quan chặt chẽ khác, ngăn không cho ai đó bị buộc phải 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 mà quyền biểu quyết có thể trở thành thanh khoản thông qua thị trường hợp đồng thông minh. Thật không may, những đặc tính này rất khó đạt được. Thật vậy, Juels và cộng sự chỉ ra rằng những thuộc tính này không thể đạt được trong 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ư khi kiểm phiếu liên tục, tuy nhiên (như chúng ta sẽ thảo luận sau), nó có thể được sử dụng cùng với bằng chứng thành viên nhóm không có kiến thức về tính ẩn danh của cử tri và quyền riêng tư của lá phiếu.
Cicada: Quyền riêng tư khi kiểm phiếu bằng cách sử dụng câu đố khóa thời gian đồng hình
Để đạt được quyền riêng tư trong việc kiểm phiếu liên tục, Cicada mượn các nguyên tắc mật mã chưa bao giờ (theo hiểu biết của chúng tôi) được sử dụng trên chuỗi.
Đầu tiên, câu đố khóa thời gian (Rivest, Shamir, Wagner, 1996) là một câu đố mật mã mà bí mật của nó chỉ có thể được tiết lộ sau một khoảng thời gian xác định trước đã trôi qua—cụ thể hơn, chỉ bằng cách thực hiện lặp đi lặp lại một số phép tính không thể song song này là dùng để giải câu đố. Câu đố khóa thời gian rất hữu ích trong bối cảnh bỏ phiếu để bảo mật số phiếu đang diễn ra: người dùng có thể gửi phiếu bầu của họ dưới dạng câu đố khóa thời gian, để phiếu bầu của họ sẽ được giữ riêng tư trong quá trình bỏ phiếu, nhưng có thể được truy cập sau khi bỏ phiếu được tiết lộ. 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 đạt được quyền riêng tư khi kiểm phiếu 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ố), mã hóa ngưỡng (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 kết quả được tiết lộ sau khi bỏ phiếu.
Thứ hai, câu đố khóa thời gian đồng hình (Malavolta Thyagarajan, 2019) có thuộc tính bổ sung là một số phép tính có thể được thực hiệ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, 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 chứa tổng các 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ác câu đố khóa thời gian đồng cấu tuyến tính đặc biệt phù hợp cho việc bỏ phiếu kín: các phiếu bầu có thể được mã hóa thành các câu đố và chúng có thể được kết hợp đồng hình để thu được các câu đố mã hóa số liệu thống kê cuối cùng. Điều này có nghĩa là chỉ cần một phép tính để tiết lộ kết quả kiểm phiếu cuối cùng, thay vì giải một câu đố duy nhất cho mỗi phiếu bầu.
Hệ thống mới: Hiệu quả và Đánh đổi
Đối với một kế hoạch bỏ phiếu có thể được áp dụng thực tế trên chuỗi, có một số yếu tố cần xem xét. Đầu tiên, kẻ tấn công có thể cố gắng thao túng kết quả bỏ phiếu bằng cách gửi các lá phiếu được mã hóa không chính xác. Ví dụ: chúng tôi có thể mong đợi câu đố khóa thời gian của mỗi lá phiếu mã hóa một giá trị boolean: "1" cho giải pháp được bình chọn và "0" cho phản đối. Một người ủng hộ nhiệt thành có thể cố gắng sử dụng mã như "100" để tă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 có kiến thức bên cạnh việc tự gửi lá phiếu. Tuy nhiên, bằng chứng không kiến thức có thể tốn kém về mặt tính toán - để giữ chi phí tham gia của cử tri ở mức thấp nhất có thể, bằng chứng phải (1) được tính toán hiệu quả ở phía khách hàng và (2) được xác minh hiệu quả trên chuỗi.
Để làm cho bằng chứng hiệu quả nhất có thể, chúng tôi sử dụng giao thức sigma tùy chỉnh. Đây là một chứng minh không kiến thức được thiết kế cho các quan hệ đại số cụ thể, không phải là một hệ thống chứng minh chung. Điều này giúp tăng tốc đáng kể thời gian kiểm chứng: trên máy tính xách tay bán sẵn, chỉ mất 14 mili giây để tạo bằng chứng hợp lệ của lá phiếu bằng Python.
Mặc dù quy trình xác minh của giao thức sigma này đơn giản về mặt khái niệm, nhưng nó thực sự yêu cầu một số phép toán hàm mũ modulo lớn. 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 toán hàm mũ này sẽ được thực hiện theo mô-đun một số mô-đun RSA N^2. Đối với N lớn hợp lý, các hoạt động lũy thừa này bị cấm đối với hầu hết các chuỗi EVM (yêu cầu hàng triệu gas). Để giảm chi phí này, Cicada sử dụng số mũ ElGamal thay vào đó, vẫn cung cấp tính đồng hình phụ gia, nhưng hoạt động trên một 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à nó yêu cầu logarit rời rạc đầy đủ để giải mã số liệu thống kê (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ỉ nên được sử dụng nếu số lượng cuối cùng dự kiến tương đối nhỏ (ví dụ: dưới 2^32, khoảng 4,3 triệu phiếu bầu). Trong sơ đồ gốc dựa trên Paillier, nó có thể được giải mã một cách hiệu quả bất kể kích thước của số liệu thống kê.
Việc chọn mô đun RSA N cũng liên quan đến sự đánh đổi. Phương pháp của chúng tôi sử dụng mô-đun 1024 bit để cải thiện hiệu quả sử dụng khí. Mặc dù giá trị này cao hơn nhiều so với mô đun RSA tối đa cho hệ số hóa (là 829 bit), nhưng nó thấp hơn kích thước 2048 bit thường được khuyến nghị cho mã hóa hoặc ký RSA. Tuy nhiên, trong ứng dụng của chúng tôi, chúng tôi không cần bảo mật dài hạn: một khi cuộc bầu cử kết thúc, sẽ không có rủi ro nếu N trong tương lai được đưa vào hệ số. Sau khi khóa thời gian hết hạn, sẽ hợp lý khi sử dụng một mô-đun tương đối nhỏ, giả sử rằng số liệu thống kê và phiếu bầu sẽ được công khai. (Điều này cũng có thể dễ dàng được cập nhật trong tương lai nếu thuật toán phân tích thừa số đượ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ư kiểm phiếu liên tục - một câu đố khóa thời gian giữ bí mật kiểm phiếu trong quá trình bỏ phiếu. Tuy nhiên, mỗi lá phiếu 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ố liệu thống kê có thể được giải mã (bằng cách thực hiện các tính toán 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 tính bí mật của lá phiếu trong quá trình bỏ phiếu. Nếu một 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ũng có thể làm như vậy sau khi các phòng phiếu đóng cửa. Chi phí giải mã bất kỳ một lá phiếu nào cũng giống như chi phí giải mã lần kiểm phiếu cuối cùng, do đó, việc giải mã hoàn toàn một lá phiếu có n cử tri yêu cầu O(n) công việc. Tuy nhiên, tất cả các phiếu bầu này có thể được giải mã song song (giả sử có đủ máy tính) trong một quá trình mất cùng khoảng thời gian như giải mã lần kiểm phiếu cuối cùng.
Đối với một số cuộc thăm dò, điều này có thể không lý tưởng. Mặc dù chúng tôi hài lòng với quyền riêng tư kiểm phiếu tạm thời, nhưng chúng tôi có thể muốn có quyền riêng tư bỏ phiếu vĩnh viễ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 thông qua bằng chứng về tư cách thành viên nhóm mà không cần biết. Bằng cách đó, ngay cả khi các lá phiếu được giải mật, nó sẽ chỉ tiết lộ cách một người nào đó đã bỏ phiếu, điều này đã được tiết lộ trong cuộc kiểm phiếu.
Trong kho lưu trữ của chúng tôi, chúng tôi cung cấp một hợp đồng ví dụ sử dụng Semaphore để ẩn danh cử tri. Lưu ý rằng bản thân hợp đồng Cicada không đưa ra giả định nào về việc xác định hoặc thực thi tư cách cử tri. Đặc biệt, bạn có thể thay thế Semaphore bằng Semacaulk hoặc ZK Proof of State.
Cơ quan kiểm phiếu
Một trong những mục tiêu đầu tiên của chúng tôi khi thiết kế Cicada là tránh phụ thuộc vào các cơ quan kiểm phiếu: nhiều phiếu bầu riêng yêu cầu cơ quan kiểm phiếu bán đáng tin cậy (hoặc ủy ban hợp tác 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 của 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ỉ thông qua 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 chế độ, các cơ quan thống kê được tin tưởng về tính chính trực (họ không thể thao túng số phiếu bầu), nhưng họ cũng phải duy trì hoạt động - nếu họ ngoại tuyến, kết quả cuối cùng không thể được tính toán và kết quả bỏ phiếu bị đình trệ vô thời hạn. Trong một số hệ thống, các cơ quan thống kê cũng được tin cậy để duy trì quyền riêng tư. Tức là họ biết lá phiếu của từng cử tri, nhưng công bố kết quả mà không để lộ thông tin này.
Mặc dù các cơ quan thống kê là 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 bối cảnh 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.
Phần kết luận
Cicada khám phá 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 nghiên cứu đang diễn ra của các nhóm khác. Như đã đề cập ở trên, Cicada bổ sung cho các công nghệ thành viên nhóm ẩn danh như Semaphore, bằng chứng lưu trữ ZK và bộ vô hiệu hóa giới hạn tốc độ. Cicada cũng có thể được kết hợp với 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, chúng tôi có cơ hội điều chỉnh Cicada để hỗ trợ các sơ đồ bỏ phiếu khác nhau (ví dụ: bỏ phiếu theo trọng số, bỏ phiếu bậc hai), trong khi các sơ đồ phức tạp hơn có thể tốn kém về mặt tính toán đối với mạng chính Ethereum, chúng có thể khả thi trên các mạng Lớp 2 của. Với suy nghĩ này, chúng tôi hoan nghênh mọi đề xuất về hướng đi trong tương lai của Cicada.