a16z: วิธีที่จั๊กจั่นใช้ประโยชน์จากปริศนาล็อกเวลาและหลักฐาน ZK สำหรับการโหวตแบบออนไลน์
ผู้เขียนต้นฉบับ:Michael Zhu
การรวบรวมต้นฉบับ: Lynn, MarsBit
ผู้เขียนต้นฉบับ:การรวบรวมต้นฉบับ: Lynn, MarsBitระบบการลงคะแนนทั้งหมดที่ทำงานในลักษณะที่มีความหมายต้องอาศัยความซื่อสัตย์และความโปร่งใส สิ่งนี้ทำให้บล็อกเชนเป็นแพลตฟอร์มที่เหมาะสำหรับการสร้างระบบเหล่านี้ อันที่จริง องค์กรที่กระจายอำนาจจำนวนมากยอมรับลงคะแนนโดยไม่ได้รับอนุญาตเพื่อแสดงเจตจำนงร่วมกัน บ่อยครั้งในขณะที่ใช้ความมั่งคั่งจำนวนมากหรือปรับแต่งพารามิเตอร์โปรโตคอลหลัก แต่การลงคะแนนแบบออนไลน์ก็มีข้อเสียเช่นกัน
ความเป็นส่วนตัวยังไม่ได้รับการสำรวจและยังไม่ได้สำรวจ
ซึ่งไม่ดีสำหรับระบบการลงคะแนน Web3 - ในโปรโตคอลการลงคะแนนแบบออนไลน์ส่วนใหญ่ที่ใช้อยู่ในปัจจุบัน บัตรลงคะแนนและผลการลงคะแนนจะเป็นแบบสาธารณะอย่างสมบูรณ์ หากไม่มีความเป็นส่วนตัว ผลการลงคะแนนสามารถถูกจัดการได้ง่ายและแรงจูงใจของผู้ลงคะแนนไม่สอดคล้องกัน ซึ่งอาจนำไปสู่ผลลัพธ์ที่ไม่เป็นประชาธิปไตยนั่นเป็นเหตุผลที่เราเปิดตัว Cicada: ไลบรารี่ Solidity แบบโอเพ่นซอร์สใหม่ที่ใช้ประโยชน์จากปริศนาการล็อกเวลาและการพิสูจน์ความรู้ที่ไม่มีความรู้เพื่อเปิดใช้งานการลงคะแนนแบบออนไลน์แบบส่วนตัว เมื่อเปรียบเทียบกับระบบที่มีอยู่แล้ว Cicada มีคุณสมบัติด้านความเป็นส่วนตัวที่แปลกใหม่ ลดสมมติฐานความน่าเชื่อถือให้เหลือน้อยที่สุด และมีประสิทธิภาพเพียงพอที่จะใช้กับ Ethereum mainnetในโพสต์นี้ เราสำรวจสถานะของความเป็นส่วนตัวในการลงคะแนนและให้คำอธิบายระดับสูงเกี่ยวกับวิธีการทำงานของ Cicada (การพิสูจน์อย่างเป็นทางการกำลังจะมาถึง) เรายังสนับสนุนให้นักพัฒนาตรวจสอบ
ที่เก็บ GitHub
- Cicada สามารถปรับและขยายได้หลายวิธีเพื่อรองรับแผนการลงคะแนนเสียงและคุณสมบัติต่างๆ และเราหวังว่าจะได้ทำงานร่วมกับชุมชนเพื่อสำรวจความเป็นไปได้เหล่านี้
การสำรวจโดยย่อของการลงคะแนนส่วนตัวในระบบการลงคะแนนใด ๆ (ออนไลน์หรืออื่น ๆ ) มีความเป็นส่วนตัวหลายระดับที่ต้องพิจารณา การเปิดเผยบัตรลงคะแนนแต่ละใบ การนับคะแนน และตัวตนของผู้มีสิทธิเลือกตั้ง ล้วนส่งผลต่อแรงจูงใจของผู้มีสิทธิเลือกตั้งในรูปแบบต่างๆ กัน คุณสมบัติความเป็นส่วนตัวใดที่จำเป็นขึ้นอยู่กับบริบทของการลงคะแนน บางส่วนที่ปรากฏบ่อยครั้งในวรรณกรรมการเข้ารหัสและสังคมศาสตร์:ความเป็นส่วนตัวของบัตรลงคะแนน: บัตรลงคะแนนลับหรือที่เรียกว่า "
การลงคะแนนเสียงของชาวออสเตรเลีย
” ได้รับการพัฒนาสำหรับระบบการลงคะแนนในโลกแห่งความเป็นจริง เพื่อเป็นวิธีการรักษาความชอบของผู้ลงคะแนนแต่ละคน และลดการติดสินบนและการบีบบังคับ (ในการตั้งค่าแบบออนไลน์ เราอาจต้องการทรัพย์สินที่แข็งแกร่งกว่าความเป็นส่วนตัวในการลงคะแนน — ดูด้านล่าง "ไม่มีใบเสร็จรับเงิน "). ความเป็นส่วนตัวในการลงคะแนนยังสามารถลดอคติทางสังคมที่พึงปรารถนาได้ — บางคนมีแรงกดดันน้อยกว่าในการลงคะแนนโดยพิจารณาจากสิ่งที่คนอื่นคิดเกี่ยวกับตัวเลือกของพวกเขา
การไม่เปิดเผยชื่อผู้ลงคะแนน: ในระบบการลงคะแนนในโลกแห่งความจริงหลายๆ ระบบ การลงคะแนนของคุณจะไม่เปิดเผยต่อสาธารณะ แต่การที่คุณลงคะแนนมักจะเปิดเผยต่อสาธารณะ นี่เป็นสิ่งสำคัญในการป้องกันการฉ้อโกงผู้มีสิทธิเลือกตั้ง เนื่องจากการเผยแพร่บันทึกผู้มีสิทธิเลือกตั้งทำให้ผู้คนสามารถตรวจสอบได้ว่าผู้อื่นได้ลงคะแนนเสียงในนามของตนหรือไม่ อย่างไรก็ตาม บนเครือข่าย เราสามารถป้องกันการฉ้อฉลของผู้มีสิทธิเลือกตั้งได้ในขณะที่ยังคงรักษาความเป็นนิรนามโดยใช้การเข้ารหัสแบบดั้งเดิม ตัวอย่างเช่น ด้วย Semaphore คุณสามารถพิสูจน์ได้โดยไม่มีความรู้ว่าคุณเป็นผู้มีสิทธิเลือกตั้งที่ถูกต้องซึ่งยังไม่ได้ลงคะแนนเสียงชี้ให้เห็นการไม่มีใบเสร็จ: ผู้ลงคะแนนแต่ละคนให้ "ใบเสร็จ" ของบัตรลงคะแนนเพื่อพิสูจน์ว่าพวกเขาลงคะแนนให้กับบุคคลที่สามอย่างไร ซึ่งอาจส่งผลให้มีการขายตั๋ว คุณสมบัติที่เกี่ยวข้องอย่างใกล้ชิดแต่แข็งแกร่งกว่าคือการต่อต้านการบังคับขู่เข็ญ ซึ่งป้องกันมิให้ผู้อื่นบังคับผู้มีสิทธิเลือกตั้งให้ลงคะแนนด้วยวิธีใดวิธีหนึ่ง คุณสมบัติเหล่านี้มีความน่าสนใจเป็นพิเศษในสภาพแวดล้อมที่มีการกระจายอำนาจ ซึ่งสิทธิในการออกเสียงสามารถทำให้เป็นของเหลวได้ผ่านตลาดสัญญาอัจฉริยะ น่าเสียดายที่นำไปปฏิบัติได้ยากเช่นกัน อันที่จริง Juels et al.
ชี้ให้เห็น
ซึ่งไม่สามารถทำได้ในสภาพแวดล้อมที่ไม่ได้รับอนุญาตหากไม่มีฮาร์ดแวร์ที่เชื่อถือได้
Cicada มุ่งเน้นไปที่ความเป็นส่วนตัวในการนับคะแนนเสียงที่อยู่ระหว่างดำเนินการ แต่ (ตามที่เราจะพูดถึงในภายหลัง) สามารถใช้ร่วมกับหลักฐานการเป็นสมาชิกกลุ่มที่ไม่มีความรู้เพื่อให้บรรลุการไม่เปิดเผยตัวตนของผู้ลงคะแนนเสียงและความเป็นส่วนตัวของบัตรลงคะแนน
แนะนำ Cicada: โหวตนับความเป็นส่วนตัวจากปัญหา Homomorphic TimelockRivest, Shamir, Wagner, 1996 เพื่อให้ได้ความเป็นส่วนตัวของการนับคะแนนอย่างต่อเนื่อง Cicada ใช้ประโยชน์จากการเข้ารหัสแบบดั้งเดิมที่ (ตามความรู้ของเรา) ไม่เคยถูกใช้บนเครือข่ายมาก่อน
ครั้งแรก ปริศนาล็อคเวลา (Malavolta Thyagarajan, 2019 ) เป็นปริศนาการเข้ารหัสที่สรุปความลับที่สามารถเปิดเผยได้หลังจากระยะเวลาที่กำหนดไว้ล่วงหน้าผ่านไประยะหนึ่งเท่านั้น โดยเฉพาะอย่างยิ่ง ปริศนาที่สามารถถอดรหัสได้ด้วยการคำนวณซ้ำๆ แบบไม่ขนานกัน ปริศนาล็อกเวลามีประโยชน์ในบริบทของการลงคะแนนเพื่อให้เกิดความเป็นส่วนตัวในการเรียกใช้สถิติ: ผู้ใช้สามารถส่งคะแนนโหวตเป็นปริศนาล็อกเวลาเพื่อให้เก็บเป็นความลับในระหว่างกระบวนการลงคะแนน แต่สามารถเปิดเผยได้หลังจากการลงคะแนน ซึ่งแตกต่างจากโครงสร้างการลงคะแนนส่วนตัวอื่นๆ ส่วนใหญ่ สิ่งนี้ทำให้ความเป็นส่วนตัวทางสถิติสามารถดำเนินการได้โดยไม่ต้องพึ่งพาหน่วยงานทางสถิติ (เช่น เจ้าหน้าที่การเลือกตั้งที่นับกระดาษหรือบัตรลงคะแนนดิจิทัล) การเข้ารหัสเกณฑ์ ทุกคนสามารถไขปริศนาล็อกเวลาเพื่อให้แน่ใจว่าผลลัพธ์จะถูกเปิดเผยหลังจากการลงคะแนน
ประการที่สอง ปริศนาไทม์ล็อกแบบไอโซมอร์ฟิค (
) มีคุณสมบัติเพิ่มเติมที่การคำนวณบางอย่างเกี่ยวกับค่าที่เข้ารหัสเป็นไปได้ด้วยความรู้ของรหัสลับ ปริศนาถอดรหัส หรือการใช้แบ็คดอร์ โดยเฉพาะอย่างยิ่ง ปริศนาล็อกเวลาแบบโฮโมมอร์ฟิคเชิงเส้นช่วยให้เราสามารถรวมปริศนาเข้าด้วยกันเพื่อสร้างปริศนาใหม่ที่สรุปผลรวมของค่าความลับของปริศนาดั้งเดิม
ดังที่ผู้เขียนชี้ให้เห็น ปริศนาล็อกเวลาแบบโฮโมมอร์ฟิกเชิงเส้นเป็นปริศนาดั้งเดิมที่เหมาะสมอย่างยิ่งสำหรับการลงคะแนนส่วนตัว: การโหวตสามารถเข้ารหัสเป็นปริศนาได้ และพวกมันสามารถรวมกันแบบโฮโมมอร์ฟิกเพื่อให้ได้ปริศนานับสุดท้ายที่เข้ารหัส ซึ่งหมายความว่าต้องใช้การคำนวณเพียงครั้งเดียวในการเปิดเผยผลลัพธ์สุดท้าย แทนที่จะไขปริศนาเฉพาะสำหรับการโหวตแต่ละครั้ง
โครงสร้างใหม่: ประสิทธิภาพและการแลกเปลี่ยน
มีหลายประเด็นที่ต้องพิจารณาเพื่อให้รูปแบบการลงคะแนนเป็นไปได้จริงบนเครือข่าย ประการแรก ผู้โจมตีอาจพยายามควบคุมการลงคะแนนโดยส่งบัตรลงคะแนนที่เข้ารหัสไม่ถูกต้อง ตัวอย่างเช่น เราอาจต้องการให้ปริศนาล็อกเวลาสำหรับบัตรลงคะแนนแต่ละใบเข้ารหัสเป็นค่าบูลีน: "1" สำหรับข้อเสนอที่กำลังลงคะแนน และ "0" สำหรับไม่เห็นด้วย ผู้สนับสนุนข้อเสนอที่กระตือรือร้นอาจพยายามเข้ารหัสบางอย่างเช่น "100" เพื่อขยายอำนาจการลงคะแนนที่มีประสิทธิภาพ
เราสามารถป้องกันการโจมตีนี้ได้โดยให้ผู้ลงคะแนนเสียงส่งหลักฐานยืนยันความถูกต้องของการลงคะแนนพร้อมกับการลงคะแนน อย่างไรก็ตาม การพิสูจน์ที่ไม่มีความรู้เป็นศูนย์นั้นมีราคาแพงในการคำนวณ เพื่อรักษาต้นทุนการมีส่วนร่วมของผู้มีสิทธิเลือกตั้งให้ต่ำที่สุดเท่าที่จะเป็นไปได้ การพิสูจน์ควรเป็น (1) ฝั่งไคลเอ็นต์ที่คำนวณได้อย่างมีประสิทธิภาพ และ (2) ตรวจสอบบนเครือข่ายได้อย่างมีประสิทธิภาพ
เพื่อให้การพิสูจน์มีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ เราใช้โปรโตคอล sigma แบบกำหนดเอง ซึ่งเป็นการพิสูจน์ที่ไม่มีความรู้ซึ่งออกแบบมาสำหรับความสัมพันธ์ทางพีชคณิตเฉพาะ แทนที่จะเป็นระบบพิสูจน์ทั่วไป สิ่งนี้ทำให้เวลาในการพิสูจน์เร็วมาก: การสร้างการพิสูจน์ความถูกต้องของบัตรลงคะแนนใน Python ใช้เวลา 14 มิลลิวินาทีสำหรับแล็ปท็อปทั่วไป
ในขณะที่ตัวตรวจสอบความถูกต้องสำหรับโปรโตคอล sigma นั้นมีแนวคิดที่เรียบง่าย แต่ก็ต้องการการยกกำลังแบบโมดูลาร์จำนวนมากพอสมควร โครงการโฮโมมอร์ฟิกเชิงเส้นของ Malavolta และ Thyagarajan ใช้การเข้ารหัสแบบ Paillier ดังนั้นการยกกำลังเหล่านี้จะดำเนินการโมดูโล N^2 สำหรับ RSA โมดูโล N บางตัว สำหรับขนาดที่เหมาะสมของ N การยกกำลังมีราคาแพงมาก (ล้านก๊าซ) บนโซ่ EVM ส่วนใหญ่ เพื่อลดค่าใช้จ่าย Cicada ใช้ Exponential ElGamal - Exponential ElGamal ยังคงให้โฮโมมอร์ฟิซึ่มเพิ่มเติม แต่ทำงานในโมดูลที่เล็กกว่า (N แทน N^2)
ข้อเสียอย่างหนึ่งของการใช้ ElGamal คือขั้นตอนสุดท้ายของการถอดรหัสการนับต้องมีการบังคับบันทึกแบบแยกส่วนอย่างโหดเหี้ยม ดังนั้น จะใช้ได้ผลก็ต่อเมื่อจำนวนการโหวตสุดท้ายที่คาดไว้ค่อนข้างน้อย (เช่น น้อยกว่า 2^32 หรือประมาณ 4.3 ล้านโหวต) ในรูปแบบอิงตาม Paillier ดั้งเดิม การนับสามารถถอดรหัสได้อย่างมีประสิทธิภาพโดยไม่คำนึงถึงขนาด
การเลือกโมดูลัส RSA N ยังเกี่ยวข้องกับการแลกเปลี่ยน การใช้งานของเราใช้โมดูลัส 1024 บิตเพื่อประสิทธิภาพของแก๊ส แม้ว่าค่านี้จะสูงกว่าโมดูลัส RSA ที่ใหญ่ที่สุดที่เปิดเผยต่อสาธารณะ (829 บิต) แต่ก็ต่ำกว่าขนาดที่แนะนำโดยทั่วไปคือ 2048 บิตสำหรับการเข้ารหัสหรือการเซ็นชื่อ RSA อย่างไรก็ตาม ใบสมัครของเราไม่ต้องการการรักษาความปลอดภัยในระยะยาว เมื่อการเลือกตั้งสิ้นสุดลง จะไม่มีความเสี่ยงหาก N ได้รับการพิจารณาในอนาคต มีเหตุผลที่จะใช้โมดูลัสที่ค่อนข้างเล็ก โดยสมมติว่ามีการนับคะแนนและลงคะแนนเสียงต่อสาธารณะหลังจากไทม์ล็อคหมดเวลา (นอกจากนี้ยังสามารถอัปเดตได้อย่างง่ายดายในอนาคตหากอัลกอริทึมการสลายตัวดีขึ้น)
การไม่เปิดเผยชื่อและการมีสิทธิ์ของผู้มีสิทธิเลือกตั้ง
ดังที่ได้กล่าวไว้ข้างต้น Cicada ให้ความเป็นส่วนตัวในการนับคะแนน - คุณสมบัติไขปริศนาที่ล็อคเวลาซึ่งรักษาการนับคะแนนเป็นส่วนตัวระหว่างการลงคะแนน อย่างไรก็ตาม บัตรลงคะแนนแต่ละใบยังเป็นปริศนาล็อกเวลา ซึ่งเข้ารหัสภายใต้พารามิเตอร์สาธารณะเดียวกัน ซึ่งหมายความว่าสามารถถอดรหัสการนับได้ (โดยการคำนวณที่จำเป็น) เช่นเดียวกับที่การนับสามารถถอดรหัสได้ กล่าวอีกนัยหนึ่ง Cicada รับประกันความเป็นส่วนตัวของบัตรลงคะแนนระหว่างการลงคะแนนเท่านั้น หากผู้สังเกตการณ์ที่อยากรู้อยากเห็นต้องการถอดรหัสบัตรลงคะแนนของผู้ลงคะแนนเสียงคนใดคนหนึ่ง พวกเขาสามารถทำได้ การถอดรหัสบัตรลงคะแนนแต่ละใบมีราคาแพงพอๆ กับการถอดรหัสจำนวนสุดท้าย ดังนั้น O(n) จึงต้องใช้ความพยายามอย่างไร้เดียงสาในการถอดรหัสบัตรลงคะแนนทั้งหมดที่มีผู้ลงคะแนน n คน แต่การโหวตทั้งหมดเหล่านี้สามารถถอดรหัสแบบคู่ขนานกันได้ (สมมติว่ามีเครื่องเพียงพอ) โดยใช้เวลาเท่ากันกับเวลาที่ใช้ในการถอดรหัสการนับคะแนนสุดท้ายสำหรับบางโหวตอาจไม่ถูกใจ แม้ว่าเราจะพอใจกับการใช้ความเป็นส่วนตัวในการนับคะแนนเป็นการชั่วคราว แต่เราอาจต้องการความเป็นส่วนตัวในการลงคะแนนอย่างไม่มีกำหนด เพื่อให้บรรลุเป้าหมายนี้ เราสามารถรวม Cicada เข้ากับโปรโตคอลการมีสิทธิ์ลงคะแนนเสียงที่ไม่ระบุตัวตน ซึ่งสร้างอินสแตนซ์ด้วยหลักฐานการเป็นสมาชิกกลุ่มที่ไม่มีความรู้ ด้วยวิธีนี้ แม้ว่าบัตรลงคะแนนจะไม่ถูกแยกประเภท แต่ทั้งหมดก็เผยให้เห็นว่ามีคนลงคะแนนด้วยวิธีนั้น และเรารู้แล้วจากการนับที่นี่ที่นี่และที่นี่และ
ที่นี่
แนะนำ).
ผู้มีอำนาจทางสถิติ
หนึ่งในลำดับความสำคัญอันดับแรกของเราในการออกแบบ Cicada คือการหลีกเลี่ยงความต้องการหน่วยงานทางสถิติ โครงสร้างการลงคะแนนส่วนตัวจำนวนมากต้องการหน่วยงานทางสถิติกึ่งน่าเชื่อถือ (หรือคณะกรรมการที่ได้รับมอบอำนาจ ซึ่งประสานงานผ่านการคำนวณหลายฝ่ายที่ปลอดภัย) เพื่อรับและรวมคะแนนเสียง ในบริบทของบล็อกเชน หมายความว่าแผนการเหล่านี้ไม่สามารถดำเนินการได้ด้วยสัญญาอัจฉริยะเพียงอย่างเดียว ซึ่งต้องมีการแทรกแซงและความไว้วางใจจากมนุษย์
ในโครงสร้างส่วนใหญ่ หน่วยงานนับคะแนนไม่น่าเชื่อถือในด้านความสมบูรณ์ (ไม่สามารถควบคุมการนับคะแนนได้) แต่เชื่อถือได้ในเรื่องความมีชีวิตชีวา - หากอยู่ในสถานะออฟไลน์ ก็จะไม่สามารถคำนวณผลลัพธ์สุดท้ายได้ ทำให้การลงคะแนนล่าช้าอย่างไม่มีกำหนด ในบางโครงสร้าง พวกเขายังได้รับความไว้วางใจให้รักษาความเป็นส่วนตัว กล่าวคือ พวกเขารู้ว่าแต่ละคนลงคะแนนเสียงอย่างไร แต่คาดว่าจะเผยแพร่ผลการลงคะแนนโดยไม่เปิดเผยข้อมูลนี้
แม้ว่าหน่วยงานทางสถิติจะเป็นสมมติฐานที่สมเหตุสมผล (และจำเป็น) ในหลายๆ สถานการณ์ในโลกแห่งความเป็นจริง แต่ก็ไม่เหมาะในสภาพแวดล้อมของบล็อกเชน ซึ่งเป้าหมายของเราคือลดความไว้วางใจให้เหลือน้อยที่สุดและรับรองการต่อต้านการเซ็นเซอร์
Cicada สำรวจหนึ่งในหลายๆ ทิศทางในด้านความเป็นส่วนตัวในการลงคะแนนเสียงแบบออนไลน์และเสริมงานวิจัยส่วนใหญ่ที่ทำโดยกลุ่มอื่นๆ ดังที่กล่าวไว้ข้างต้น Cicada มีความเกี่ยวข้องอย่างใกล้ชิดกับเทคโนโลยีการเป็นสมาชิกกลุ่มที่ไม่ระบุชื่อ เช่น semaphores, ZK Proof-of-storage และตัว invalidator ที่จำกัดอัตรา จั๊กจั่นยังสามารถรวมเครื่องมือตรวจสอบหลักฐานในแง่ดีที่เสนอโดยทีม Nouns Vortex เพื่อลดภาระของผู้มีสิทธิเลือกตั้ง


