ข้ามไปยังเนื้อหา

การพิสูจน์แบบไม่เปิดเผยข้อมูล

คู่มือที่แม่นยำเกี่ยวกับการพิสูจน์แบบไม่เปิดเผยข้อมูล: ความครบถ้วน ความถูกต้อง การจำลอง พยาน สมมติฐานการตั้งค่า การใช้งานบล็อกเชน และความเสี่ยงในการตรวจสอบ

อัปเดต

เพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำด้านการลงทุนหรือความปลอดภัย หลักฐานที่ใช้ได้จะรับรองเฉพาะข้อความที่เข้ารหัสไว้ภายใต้สมมติฐานของระบบพิสูจน์

คำตอบโดยตรง

การพิสูจน์แบบไม่เปิดเผยข้อมูล (ZKP) ช่วยให้ผู้พิสูจน์ทำให้ผู้ตรวจสอบเชื่อว่าข้อความหนึ่งเป็นจริง โดยไม่เปิดเผยพยานลับที่ใช้ยืนยันข้อความนั้น การรับรองเชิงรูปแบบไม่ได้หมายความว่าบันทึกไม่มีข้อมูลเลย แต่หมายความว่าสิ่งที่ผู้ตรวจสอบตามแบบจำลองเรียนรู้สามารถจำลองได้โดยไม่ต้องมีพยาน นอกเหนือจากสิ่งที่อนุมานได้จากข้อความสาธารณะ

ระบบพิสูจน์ต้องประเมินสามคุณสมบัติแยกกัน: ความครบถ้วน ทำให้ผู้พิสูจน์ที่ซื่อสัตย์และมีพยานถูกต้องได้รับการยอมรับ; ความถูกต้อง ทำให้ข้อความเท็จได้รับการยอมรับด้วยความน่าจะเป็นที่เล็กจนละเลยได้; และ การไม่เปิดเผยข้อมูล ทำให้พยานยังคงเป็นความลับตามแบบจำลองภัยคุกคาม ระบบที่ใช้งานจริงจำนวนมากเป็นข้อโต้แย้งเชิงคำนวณ ซึ่งความถูกต้องมีผลต่อผู้โจมตีที่มีทรัพยากรจำกัดและขึ้นกับสมมติฐานการเข้ารหัสที่ระบุไว้

การไม่เปิดเผยข้อมูลยังต่างจากความกระชับและความใช้ได้ หลักฐานอาจเป็น ZK แต่ตรวจสอบแพง กระชับแต่เปิดเผยข้อมูลสาธารณะ หรือพิสูจน์ความสัมพันธ์ที่เข้ารหัสอย่างถูกต้องแต่ไม่ตรงกับกฎที่แอปพลิเคชันตั้งใจใช้

1
ดำเนินการ

เครื่องพิสูจน์จะดำเนินการชุดหรือการคำนวณและบันทึกการเปลี่ยนแปลงสถานะที่เกิดขึ้น

หลักการทำงาน

เริ่มจากข้อความสาธารณะ x พยานส่วนตัว w และความสัมพันธ์ที่กำหนดอย่างแม่นยำ R ผู้พิสูจน์สร้างหลักฐานและผู้ตรวจสอบประเมินด้วยพารามิเตอร์สาธารณะหรือกุญแจตรวจสอบ ข้ออ้างด้านความถูกต้องสรุปได้ว่า:

Verify(vk, x, proof) = 1 => exists w: R(x, w) = 1

สมการนี้บอกเพียงว่ามีพยานที่เหมาะกับความสัมพันธ์ที่เข้ารหัสไว้ ไม่เปิดเผยพยาน ไม่รับรองอินพุต offchain และไม่แสดงว่า R ครอบคลุมกฎธุรกิจทั้งหมดที่ต้องการ

  • แบบโต้ตอบและไม่โต้ตอบ โปรโตคอล ZK ยุคแรกแลกเปลี่ยนคำท้ากับคำตอบ ระบบไม่โต้ตอบรวมหลักฐานไว้ในชิ้นเดียว และมักพึ่งวัสดุตั้งค่า แบบจำลอง random oracle หรือทั้งสองอย่าง
  • แบบจำลองการตั้งค่า Groth16 ให้หลักฐานขนาดเล็กมากแต่ใช้การตั้งค่าแบบมีโครงสร้างเฉพาะวงจร ระบบแบบ PLONK ใช้สตริงอ้างอิงแบบมีโครงสร้างที่เป็นสากลและอัปเดตได้ ส่วน STARK ไม่ต้องใช้ trusted setup แบบมีโครงสร้าง แต่มักมีหลักฐานใหญ่กว่าและพึ่งแฮชกับการทดสอบดีกรีต่ำ
  • การทำให้เป็นเลขคณิตและคอมมิตเมนต์ การใช้งานจะแปลงโปรแกรมเป็นข้อจำกัดพีชคณิต คอมมิตค่าที่ได้จากพยาน และใช้การตรวจแบบสุ่มเพื่อให้ตรวจการคำนวณได้โดยไม่ต้องทำซ้ำหรือดูพยาน
  • หลักฐานความรู้ บางระบบอ้างเพิ่มเติมว่าผู้พิสูจน์ที่ได้รับการยอมรับรู้พยาน โดยทำให้เป็นรูปแบบด้วยตัวสกัด นี่เป็นคุณสมบัติแยกต่างหากและอนุมานจากคำว่า “ไม่เปิดเผยข้อมูล” ไม่ได้

ตัวอย่าง

สมมติว่า x มีคอมมิตเมนต์และเกณฑ์ 100 units ส่วน w มียอดคงเหลือที่คอมมิตไว้และปัจจัยพราง ความสัมพันธ์ตรวจว่าคอมมิตเมนต์เปิดได้ถูกต้องและยอดอย่างน้อย 100 units ZKP ที่ใช้ได้พิสูจน์สิ่งนี้โดยไม่เปิดยอดที่แน่นอน

ผลลัพธ์เพียงอย่างเดียวไม่พิสูจน์ว่าผู้พิสูจน์เป็นเจ้าของบัญชี เงินไม่มีภาระผูกพัน หรือไม่ได้ใช้คอมมิตเมนต์เดิมซ้ำ ข้ออ้างเหล่านี้ต้องมีข้อจำกัดและอินพุตสาธารณะเพิ่มเติม

ในคริปโทเคอร์เรนซีแบบปกปิด วงจรอาจบังคับการอนุญาต การรักษามูลค่า และการไม่ทำซ้ำพร้อมซ่อนรายละเอียดบางอย่าง ใน validity rollup หลักฐานอาจรับรองการเปลี่ยนสถานะแบบชุด แต่ข้อมูลธุรกรรมยังอาจเปิดเผย ดังนั้น “ZK Rollup” ไม่ได้หมายถึงธุรกรรมส่วนตัวโดยอัตโนมัติ

ความเสี่ยง

  • วงจรที่ไม่ครบหรือผิดอาจพิสูจน์กฎที่ผิดได้อย่างสมบูรณ์
  • การขาดการแยกโดเมน ตัวระบุเชน ราก หรือคอมมิตเมนต์อาจผูกหลักฐานกับบริบทที่ผิด
  • การตั้งค่าที่ถูกเจาะหรือ toxic waste ที่ยังอยู่ อาจทำลายความถูกต้องของระบบที่ต้องใช้ trusted setup
  • บั๊กในผู้พิสูจน์ ผู้ตรวจสอบ บันทึก เส้นโค้ง แฮช คอมไพเลอร์ หรือสมาร์ตคอนแทรกต์อาจทำให้การรับรองทางทฤษฎีใช้ไม่ได้
  • อินพุตสาธารณะ เวลา กราฟธุรกรรม ค่าธรรมเนียม และเมทาดาทาเครือข่ายอาจรั่วข้อมูลนอกข้อความ ZK
  • ช่องทางข้างเคียงในการสร้างพยาน เบราว์เซอร์ ฮาร์ดแวร์ หรือบริการระยะไกลอาจเปิดเผยความลับก่อนสร้างหลักฐาน
  • การตรวจหลักฐานไม่ได้ให้ความพร้อมใช้ของข้อมูล ความต่อเนื่องของซีเควนเซอร์ ความสิ้นสุด การต้านการเซ็นเซอร์ หรือการอัปเกรดที่ปลอดภัย
  • สมมติฐานและส่วนเผื่อความปลอดภัยต่างกัน ขนาดหลักฐานหรือความเร็วตรวจสอบอย่างเดียวไม่ใช่อันดับความปลอดภัย

ความเข้าใจผิดที่พบบ่อย

  • “ไม่เปิดเผยข้อมูลหมายถึงไม่เปิดข้อมูลใดเลย” ข้อความสาธารณะและเอาต์พุตที่ตั้งใจเผยยังมองเห็นได้ และเมทาดาทานอกแบบจำลองอาจรั่วไหล
  • “หลักฐานใช้ได้แปลว่าแอปถูกต้อง” หมายถึงความสัมพันธ์ที่เข้ารหัสได้รับการยอมรับ แต่ข้อผิดพลาดในวงจร การผสาน และนโยบายยังเกิดได้
  • “ระบบ ZK ทุกแบบมีสมมติฐานความไว้วางใจเหมือนกัน” พิธีตั้งค่า เส้นโค้ง แฮช แบบจำลองบันทึก และการควบคุมอัปเกรดต่างกันอย่างมาก
  • “ZK คือการเข้ารหัส” การเข้ารหัสซ่อนข้อมูลให้ผู้มีสิทธิ์ถอดรหัส ส่วน ZKP ยืนยันข้ออ้างโดยไม่ส่งพยานไปถอดรหัส

หัวข้อที่เกี่ยวข้อง

แหล่งข้อมูล

การนำทาง

ค้นหาในวิกิ...