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