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