BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Guo Yu จาก Anbi Lab: เมื่อ Deep Neural Networks พบกับ Zero-Knowledge Proofs

星球君的朋友们
Odaily资深作者
2020-09-24 05:46
บทความนี้มีประมาณ 8025 คำ การอ่านทั้งหมดใช้เวลาประมาณ 12 นาที
การพิสูจน์ความรู้เป็นศูนย์ถูกนำมาใช้กันอย่างแพร่หลายในบล็อกเชน รวมถึงการบีบอัดบล็อก กา
สรุปโดย AI
ขยาย
การพิสูจน์ความรู้เป็นศูนย์ถูกนำมาใช้กันอย่างแพร่หลายในบล็อกเชน รวมถึงการบีบอัดบล็อก กา

หมายเหตุบรรณาธิการ: บทความนี้มาจากว่านเซียงบล็อคเชน (ID: gh_1b8639a25429)พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

หมายเหตุบรรณาธิการ: บทความนี้มาจาก

ว่านเซียงบล็อคเชน (ID: gh_1b8639a25429)

หลักฐานที่ไม่มีความรู้

พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

บทความนี้เป็นเนื้อหาที่ใช้ร่วมกันของหลักสูตรเปิดออนไลน์รุ่นที่ 29 ของ Wanxiang Blockchain Hive Academy ในฉบับนี้ Guo Yu ผู้ก่อตั้ง SECBIT Lab ได้รับเชิญให้แบ่งปัน "เมื่อ Deep Neural Network พบกับ Zero-Knowledge Proof"

วันนี้ฉันจะแบ่งปันกับคุณ "เมื่อ Deep Neural Networks พบกับ Zero-Knowledge Proofs"

หลักฐานที่ไม่มีความรู้

แนวคิดของ "zero-knowledge proof" ไม่ใช่สิ่งแปลกใหม่สำหรับสถาปัตยกรรมทางเทคนิคพื้นฐานของบล็อกเชน แนวคิดนี้ถูกเสนอโดย Goldwasser, Micali และ Rackoff ในปี 1985 (ดังแสดงในรูป) แม้ว่า "การพิสูจน์ด้วยความรู้เป็นศูนย์" นั้นถูกจำกัดไว้ในพื้นที่เล็กๆ ของการวิจัยทฤษฎีการคำนวณมานานแล้ว แต่ผลกระทบของมันนั้นกว้างไกล

มีคำว่า "พิสูจน์" ในการพิสูจน์ด้วยความรู้เป็นศูนย์ (zero-knowledge proof) แนวคิดนี้ผ่านการปรับเปลี่ยนกระบวนทัศน์หลายครั้งตลอดประวัติศาสตร์การพัฒนาอารยธรรมมนุษย์ ในยุคกรีกโบราณ "การพิสูจน์" เป็นเทคนิคทางคณิตศาสตร์ที่แยบยล เมื่อต้นศตวรรษที่ 20 การพิสูจน์ทางคณิตศาสตร์ได้รับการตีความใหม่ในวิกฤตการณ์ทางคณิตศาสตร์ครั้งที่สาม และมีการนำตรรกะอย่างเป็นทางการมาใช้เพื่อทำให้เป็นทางการ ซึ่งทำให้เกิดทฤษฎีการคำนวณและคอมพิวเตอร์

ในช่วงปี 1970 มีการค้นพบความเชื่อมโยงที่ยอดเยี่ยมระหว่างโปรแกรมและการพิสูจน์ และแนวคิดมากมายเกี่ยวกับการเขียนโปรแกรมเชิงฟังก์ชันสมัยใหม่และการพิสูจน์ทฤษฎีบทอัตโนมัติได้ถูกนำมาใช้ ในปี 1980 แนวคิดของ "การพิสูจน์" ได้ขยายไปสู่ระบบโต้ตอบ หลังจากทศวรรษที่ 1980 ระบบการพิสูจน์เชิงโต้ตอบได้นำเสนอข้อมูลเชิงลึกใหม่ๆ ที่ปฏิวัติวงการทั้งในแง่ปรัชญาและในเชิงทฤษฎีและทางเทคนิค

เมื่อฉันเห็นแนวคิดของการพิสูจน์ความรู้เป็นศูนย์เป็นครั้งแรก ปฏิกิริยาแรกของฉันคือสิ่งนี้ขัดแย้งกับสัญชาตญาณมาก ทำไมถึง "สวนทางกับสัญชาตญาณ"? ก่อนอื่น ให้ฉันแนะนำกรอบพื้นฐานของการพิสูจน์ความรู้เป็นศูนย์โดยสังเขป

ในการพิสูจน์ด้วยความรู้เป็นศูนย์ ต้องมีคนแบบคนขวา เราเรียกเขาว่าบ๊อบ และคนซ้ายอาจเป็นเครื่องจักรที่ไม่น่าเชื่อถือ ณ จุดนี้ สมมติว่า Bob มีงานคอมพิวเตอร์ที่ต้องส่งมอบให้กับเครื่องทางด้านซ้ายเพื่อให้ทำงาน แต่เครื่องเองอาจถูกควบคุมโดยมนุษย์ Bob ต้องใช้ฟังก์ชัน "F ()" เป็นงานคำนวณ นำอินพุต "X" มาใส่และส่งต่อให้เครื่องด้านซ้ายเพื่อให้งานคำนวณเสร็จสมบูรณ์ เนื่องจากกระบวนการคำนวณนี้เกิดขึ้นที่เครื่องด้านซ้าย Bob จึงไม่เห็นกระบวนการคำนวณทั้งหมด ดังนั้นเหตุใด Bob จึงเชื่อว่าสามารถกำหนดสูตรของผลลัพธ์การคำนวณ Y=F (X, W) ได้ ยิ่งไปกว่านั้น ข้อมูลลับ (W) บางอย่างที่มีเฉพาะเครื่องด้านซ้ายเท่านั้นที่รู้ผสมอยู่ในกระบวนการคำนวณ แต่ Bob ไม่มี W ดังนั้น Bob จึงไม่สามารถรู้ได้ว่าผลการคำนวณถูกต้องหรือไม่หากทำขั้นตอนการคำนวณซ้ำ ภายใต้สถานการณ์ดังกล่าว Bob ยังเชื่อได้หรือไม่ว่าผลการคำนวณนั้นถูกต้อง?

กล่าวอีกนัยหนึ่ง การพิสูจน์ความรู้ที่ไม่มีศูนย์สามารถโน้มน้าวใจบ๊อบได้อย่างน่าอัศจรรย์ว่าผลการคำนวณนั้นถูกต้อง ฟังดูเหมือนไม่น่าเชื่อเล็กน้อย ผลการคำนวณความน่าเชื่อถือ Y ขึ้นอยู่กับความไม่ไว้วางใจของเครื่องจักรด้านซ้าย กล่าวคือ เป็นข้อพิสูจน์ที่ไม่มีความรู้ซึ่งสร้างความไว้วางใจจากอากาศบาง ๆ ซึ่งเป็นสิ่งที่สวนทางกับสัญชาตญาณ เป็นเรื่องที่น่าสนใจมากที่จะจินตนาการว่าเมื่อคนสองคนไม่ไว้วางใจซึ่งกันและกัน จะมีบางอย่างที่สามารถสร้างความไว้วางใจได้

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

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

2. การรักษาความลับ แม้ว่าฉันจะไม่เห็นกระบวนการคำนวณ และเป็นไปไม่ได้ที่จะรู้ผลลัพธ์ขั้นกลางบางอย่างในกระบวนการคำนวณ และเป็นไปไม่ได้ที่จะรู้ข้อมูลบางอย่างภายในนั้น ดังนั้นกระบวนการคำนวณทั้งหมด รวมถึงข้อมูลที่เป็นความลับบางอย่าง จึงเป็นความลับและเป็นความลับสำหรับฉัน .

นี่คือสิ่งที่การพิสูจน์ความรู้ที่ไม่มีความรู้แบบต่อต้านการใช้งานง่ายสามารถทำได้ การใช้ Zero-knowledge Proof คืออะไร? ฉันคิดว่าการใช้งานโดยตรงที่สุดคือ "การปกป้องความเป็นส่วนตัวของข้อมูล" ฉันได้ระบุรายการบางส่วนโดยสังเขป เช่น ข้อมูลส่วนบุคคล: ข้อมูลสุขภาพ ใบแจ้งยอดธนาคาร การเตรียมการเดินทาง บันทึกการติดต่อสื่อสาร ความจริงแล้วเราไม่ต้องการให้ใครรู้สถานะสุขภาพของเรา ทั้งการเต้นของหัวใจ ประวัติทางการแพทย์ และจำนวนเงินที่เราใช้ไปในแต่ละวัน แต่เราก็อยากใช้บริการของบุคคลที่สามด้วย เช่น ออกไปเรียกแท็กซี่ก็อยากให้คนอื่นรู้ว่าเราอยู่ที่ไหนแต่ไม่อยากให้คนอื่นรู้หรืออยากให้เขารู้แค่สถานที่ทั่วไป และเราไม่อยากให้เขารู้เฉพาะสถานที่

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

Zero-knowledge proof ยังมีการใช้งานที่น่าสนใจอีกมากมายในเทคโนโลยีพื้นฐานของ blockchain นับตั้งแต่มีการเสนอ zero-knowledge Proof ในปี 1985 จึงยังคงอยู่ในระดับของผลลัพธ์ทางทฤษฎีมาเป็นเวลานานจนกระทั่งเทคโนโลยี blockchain ถูกนำไปใช้กับ ขนาดใหญ่อาจจะตั้งแต่ปี 2015 ปี - 2020 การพิสูจน์ความรู้แบบไม่มีศูนย์ถูกนำมาใช้กันอย่างแพร่หลายในบล็อกเชน รวมถึงการบีบอัดบล็อก การป้องกันการเปิดเผยตัวตนของธุรกรรม ความเป็นส่วนตัวของข้อมูลประจำตัว ข้อมูลที่ใช้ร่วมกัน ความสมบูรณ์ของการจัดเก็บข้อมูลแบบออฟไลน์ ฯลฯ เพื่อนทางเทคนิคในอุตสาหกรรมบล็อกเชนควรคุ้นเคยกับสิ่งเหล่านี้

zkSNARK

ต่อไปจะนำเสนอแนวคิดพื้นฐานสองประการ

การพิสูจน์ความรู้เป็นศูนย์แบบไม่โต้ตอบ

อย่างที่เกริ่นไปตอนต้นว่า เมื่อมีการเสนอ zero-knowledge Proof นวัตกรรมใหม่ก็เกิดขึ้นสู่กระบวนทัศน์ "การพิสูจน์" ในอดีต การพิสูจน์จะเขียนลงกระดาษ เช่น ครูถามคำถามข้อสอบมา ออก. การพิสูจน์ความรู้เป็นศูนย์คือการพิสูจน์แบบโต้ตอบ คุณสามารถโน้มน้าวให้ครูเชื่อฉันได้โดยไม่ต้องบอกกระบวนการพิสูจน์ใด ๆ กับครูด้วยการพูดคุยกับครู

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

นี่เป็นคำทั่วไปแม้ว่าจะมีการตีความที่สอดคล้องกันน้อยกว่าในด้านวิชาการ zkSNARK เป็นประเภทพิเศษของ NIZK นั่นคือการพิสูจน์ความรู้ที่ไม่มีความรู้แบบไม่มีปฏิสัมพันธ์แบบพิเศษ มีอะไรพิเศษเกี่ยวกับเรื่องนี้?

สามจุดอยู่ด้านล่าง:

1. กระชับ หลักฐานที่เกิดขึ้นนั้นน้อยมาก เล็กแค่ไหน? โดยปกติจะเรียงตามลำดับของ KB และอาจมีขนาดเล็กถึง 200 ไบต์หรือน้อยกว่าก็ได้ แม้ว่าจะมีขนาดเพียงไม่กี่ร้อยไบต์ แต่กระบวนการคำนวณที่สามารถแสดงได้อาจมีขนาดใหญ่มาก และข้อมูลที่สามารถป้องกันได้ก็มีลำดับเทราไบต์เช่นกัน

2. ข้อโต้แย้ง เป็นประเภทของการพิสูจน์ด้วยความรู้ที่ไม่มีศูนย์ซึ่งจะอธิบายสั้น ๆ ในภายหลัง

3. มี "K" ต่อท้าย zkSNARK ซึ่งหมายถึงความรู้ ความหมายก็คือ บทพิสูจน์ คือข้อพิสูจน์เกี่ยวกับ "ความรู้" และ "ความรู้" นี้มีคำจำกัดความทางคณิตศาสตร์

การปกป้องความเป็นส่วนตัว บล็อกเชน และการพิสูจน์ความรู้เป็นศูนย์

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

แม้ว่าจะมีขนาดมากกว่า 100 ไบต์เท่านั้น แต่ก็สามารถสร้างความสัมพันธ์ผูกพันเฉพาะกับฐานข้อมูลได้ หากมีการเปลี่ยนแปลงใด ๆ เกิดขึ้นในฐานข้อมูล สัญญาจะต้องเปลี่ยนตามไปด้วย สัญญาเป็นเหมือน "ล็อค" ตราบใดที่มีคนเขียนสัญญาตราบเท่าที่มีการแก้ไขใด ๆ ในฐานข้อมูล สัญญาจะเปลี่ยนไปอย่างมาก

สัญญามีสองคุณสมบัติ:

ลักษณะที่ 1: การผูกมัด สัญญาจะผูกมัดชุดข้อมูลดั้งเดิม (ไม่สามารถแก้ไขได้) ชุดข้อมูลนี้อาจมีขนาดใหญ่มาก แต่สามารถผูกมัดด้วยความมุ่งมั่นเพียงเล็กน้อย

ลักษณะที่ 2 การซ่อน สัญญาว่าจะไม่เปิดเผยข้อมูลต้นฉบับ เนื่องจากมีเพียงประมาณ 100 ไบต์เท่านั้น จึงไม่มีการรั่วไหลของข้อมูลต้นฉบับ เนื่องจากจำนวนข้อมูลสูญหายไปอย่างมาก

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

ความมุ่งมั่นฟังดูน่าทึ่ง แต่เป็นเครื่องมือเข้ารหัสแบบดั้งเดิมและใช้กันทั่วไปซึ่งผู้ที่ไม่ใช่มืออาชีพรู้น้อยมาก มีหลายวิธีในการปฏิบัติตามสัญญา วิธีที่ง่ายที่สุดคือการใช้การดำเนินการบางอย่างเช่นแฮช นอกจากนี้ยังมี Merkle Tree, Pedersen Commitment หรือ Polynomial Commitment, Elgamal Encryption ซึ่งทั้งหมดนี้สามารถเติมเต็มคำสัญญาได้

มีความมุ่งมั่นสองประเภทหลักซึ่งวิเคราะห์จากมุมมองของทฤษฎีการเข้ารหัส: ประเภทแรก: การผูกด้วยคอมพิวเตอร์และการซ่อนที่สมบูรณ์แบบ ประเภทที่สอง: การผูกที่สมบูรณ์แบบและการซ่อนคอมพิวเตอร์

สิ่งที่เรียกว่า Perfect Hiding คือคำมั่นสัญญาว่าเป็นไปไม่ได้เลยที่จะรั่วไหลแม้แต่บิตเดียวและข้อมูลต้นฉบับจะถูกซ่อนไว้อย่างสมบูรณ์แต่ความสัมพันธ์ที่มีผลผูกพันของมันก็คือ Computational หากคุณจินตนาการว่ามีคนมี super quantum computer ในอีก 100 ปีข้างหน้า มันจะเกินพลังการประมวลผลในปัจจุบันมาก มันสามารถปลอม ปลอมสัญญาปลอมที่ไม่เกี่ยวข้องกับข้อมูลต้นฉบับ

ส่วนอีกประเภทกลับกัน คือ การผูกมัดแบบ Perfect Binding เป็นไปไม่ได้ที่จะปลอมแม้จะมี super quantum computer แต่การซ่อนของมันคือ Computational กล่าวคือ ถ้า super quantum computer ออกมาในอีก 100 ปีข้างหน้า มันสามารถถอดรหัสกระแส สร้างสัญญา และสามารถดึงข้อมูลที่เป็นประโยชน์บางอย่างออกมาได้

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

หลักการ zkSNARK

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

ก่อนอื่น มาทบทวนกันก่อนว่า "zero-knowledge proof" คืออะไร? บ๊อบทางขวาเป็นคนบอกให้ทำการคำนวณและส่งการคำนวณไปยังเครื่องระยะไกลที่เขาไม่เชื่อ เครื่องนี้อาจถูกควบคุมโดยแฮ็กเกอร์หรือบุคคลนี้อาจสร้างปัญหา แต่ไม่เป็นไร ให้ฟังก์ชันป้อน X และหลังจากนั้นสักครู่ให้ Y กับฉัน แม้ว่าฉันจะไม่เชื่อเครื่องนั้น แต่เพราะฉันเห็น Y แม้ว่าฉันจะสงสัยเกี่ยวกับ Y แต่เพราะฉันตรวจสอบหลักฐานที่ไม่มีความรู้เพิ่มเติม การพิสูจน์ที่ไม่มีความรู้บอกฉันว่า Y เป็นจริง ฉันจึงเชื่อ มันทำงานอย่างไร?

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

แต่เห็นได้ชัดว่าวิธีแก้ปัญหานั้นใช้ไม่ได้จริง เพราะเมื่อเครื่องกำลังทำงาน สถานะหน่วยความจำของเครื่องจะมีขนาดใหญ่มาก เช่น หน่วยความจำ 4G และไฟล์วิดีโอจะมีขนาดใหญ่จนไม่สามารถตรวจสอบได้หลังจากบันทึกกระบวนการทั้งหมดแล้ว

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

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

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

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

หากมีประตูนับหมื่นล้าน การตรวจสอบอาจใช้เวลามากกว่าหนึ่งปี มีวิธีลดความซับซ้อนของกระบวนการตรวจสอบของหลาย ๆ เกตหรือไม่? ซึ่งสามารถทำได้ด้วยเครื่องมือทางคณิตศาสตร์ "การเข้ารหัสพหุนาม"

ตัวอย่างเช่น มีตัวเลขบางตัว: y0, y1, y2 เราใส่พวกมันบนระนาบแกน XY เปลี่ยนพวกมันเป็นจุดทีละจุด แล้วหาเส้นโค้งที่ผ่านจุดเหล่านั้น ซึ่งเทียบเท่ากับการเข้ารหัสค่าทั้งหมด ​​ด้วยค่าหนึ่งเส้นโค้ง จาก y0 ถึง yn

ประโยชน์ของการเข้ารหัสเป็นเส้นโค้งคืออะไร? ข้อดีคือถ้าฉันต้องการเปลี่ยนค่าใดค่าหนึ่ง yk แม้ว่าฉันจะเปลี่ยนเพียงเล็กน้อย เส้นโค้งทั้งหมดจะถูกรบกวนอย่างเห็นได้ชัด เส้นโค้งที่ถูกรบกวนจะเหมือนกับเส้นโค้งเดิมที่จุด n จุดเท่านั้น ในขณะที่จุดอื่นๆ เบี่ยงเบนไป การเข้ารหัสแบบโพลิโนเมียลสามารถขยายการแก้ไขแม้เพียงเล็กน้อยก็ตาม ดังนั้นเราจึงสามารถตรวจสอบได้ว่าจุดที่เข้ารหัสโดยเส้นโค้งได้รับการแก้ไขหรือไม่โดยการสุ่มตรวจสอบจุด

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

การดำเนินการเพิ่มเติมในฟิลด์จำกัดของจำนวนเต็มแมปกับการดำเนินการไบนารีในกลุ่มเส้นโค้งวงรี การดำเนินการคูณจำนวนเต็มสามารถจับคู่แบบโฮโมมอร์ฟิกกับการดำเนินการจับคู่แบบทวิเนียร์บนกลุ่มเส้นโค้งวงรี การคูณทำได้เพียงการคูณเพียงครั้งเดียว แต่ก็เพียงพอที่จะตรวจสอบความสัมพันธ์การทำงานของวงจรเลขคณิตได้

กระบวนการนี้ดูเหมือนง่าย แต่การวิจัยของ zkSNARK ขึ้นอยู่กับการทำงานอย่างหนักของนักเข้ารหัสลับหลายๆ คน เส้นทางสามารถย้อนไปถึง IKO07 (2007) ในปี 2010 Groth มีแนวคิดเบื้องต้นและความก้าวหน้าที่สำคัญเกิดขึ้นในปี 2013 โซลูชันที่ได้รับการปรับปรุงของ Groth16 เป็นอัลกอริธึมการพิสูจน์ความรู้เป็นศูนย์ที่ได้รับความนิยมมากที่สุดในอุตสาหกรรม นอกจากนี้ยังมีแผนการปรับปรุงใหม่ๆ เช่น Marlin, Aurora, Spartan และ Fractal ซึ่งทั้งหมดได้รับการพัฒนาจากการปรับปรุงอย่างต่อเนื่องของอัลกอริทึม GGPR13

เอกสาร GGPR13 ในปี 2013 เป็นความก้าวหน้าที่ค่อนข้างใหญ่ และมีความคิดที่ยอดเยี่ยมมากมายมาจากเอกสารนี้ ผู้เขียนทั้ง 4 คน ได้แก่ Rosario Gennaro, Craig Gentry, Bryan Parno, Mariana Raylova

ดูกรอบงาน GGPR13/Pinocchio/Groth16 เมื่อเราต้องการแสดงการคำนวณใดๆ อันดับแรก เราจะเขียนโค้ดในภาษาระดับสูง จากนั้นจึงคอมไพล์เป็นวงจรเลขคณิตผ่านคอมไพเลอร์ จากนั้นสร้างเมทริกซ์ R1CS ผ่านการแทนค่าเมทริกซ์ และสร้าง QAP ผ่านการเข้ารหัสโพลิโนเมียล และสุดท้ายสร้าง ผ่าน Trusted-Setup: Proving Key, Verifying Key สามารถใช้ Proving Key เพื่อพิสูจน์ขั้นตอนการคำนวณ และสามารถใช้ Verifying Key เพื่อให้ทราบว่าการพิสูจน์ π นั้นถูกต้อง

หลักฐานที่ไม่มีความรู้ + โครงข่ายประสาทเทียมเชิงลึก

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

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

มีฐานข้อมูลทางด้านซ้ายซึ่งมีข้อมูลส่วนตัวจำนวนมาก และโมเดลปัญญาประดิษฐ์จะถูกสร้างขึ้นหลังจากการเรียนรู้ของเครื่อง (การฝึกอบรม) อลิซไม่ต้องการเปิดเผยโมเดล เพราะโมเดลสามารถสะท้อนถึงความเป็นส่วนตัวได้

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

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

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

ต่อไป ฉันทำการทดลองการจดจำภาพ ซึ่งเป็นโมเดลโครงข่ายประสาทเทียมของ VGG16 เป็นโครงข่ายประสาทลึก 16 ชั้น มีพารามิเตอร์จำนวนมาก, 14 เลเยอร์ convolutional, 2 เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์, ฟังก์ชันการเปิดใช้งาน Relu, การรวมพูลสูงสุด

มันท้าทายมากที่จะทำสิ่งนี้ ก่อนอื่น ไม่มีงานก่อนหน้านี้ให้เราอ้างอิง

ความท้าทายที่ 1: วิธีการคำนวณทางวิทยาศาสตร์ในวงจรเลขคณิต

มีเลขคณิตทศนิยมและเลขทศนิยมจำนวนมากในการคำนวณทางวิทยาศาสตร์ เราเลือกที่จะเข้ารหัสตัวเลขจุดตายตัวบนฟิลด์จำกัด และทำให้ข้อมูลทั้งหมดของโมเดล VGG16 เป็นมาตรฐานเพื่อให้แน่ใจว่าตัวเลขทั้งหมดไม่เกิน 256 ใช้เลขทศนิยมหกตัว 8 บิตแทนส่วนจำนวนเต็ม 6 บิตแทนส่วนที่เป็นเศษส่วน และ 24 บิตแทนจุดที่กำหนด ใช้วงจรดิจิทัลเพื่อรับรู้การดำเนินการต่างๆ กับจำนวนจุดตายตัว (กำลังสอง รากที่สอง ลอการิทึม ฯลฯ)

ความท้าทายที่ 2: เมทริกซ์ R1CS มีขนาดใหญ่มากและต้องใช้หน่วยความจำระดับ PB

หน่วยความจำของคอมพิวเตอร์ทั่วไปคือ GB และหน่วยความจำของเซิร์ฟเวอร์ถึงร้อย G นั้นถือว่าใหญ่มากแล้ว หากวงจรเลขคณิตเมทริกซ์ R1CS ได้รับการเข้ารหัสจริง ๆ จำเป็นต้องใช้หน่วยความจำระดับ PB เครื่องธรรมดาแทบจะทนไม่ได้ เราคำนวณว่าการจดจำภาพ VGG16 ต้องใช้เกทการคูณ 14.6 พันล้าน ด้วยความรู้ที่ดีที่สุดของเรา นี่คือการพิสูจน์ที่ไม่มีความรู้ครั้งแรกของโลกเกี่ยวกับอัลกอริทึมเชิงปฏิบัติขนาดใหญ่เช่นนี้ การกระจายของจำนวนการคูณส่วนใหญ่เป็นชั้นเชิงเส้น และเมื่อทำโครงข่ายประสาทเทียมระดับลึก จำนวนมากจะเป็นชั้นเชิงเส้น คิดเป็นสัดส่วนมากกว่า 90%

เมทริกซ์ของวงจรมีขนาดใหญ่เกินไป เราต้องคิดค้นรูปแบบการพิสูจน์ที่ไม่มีความรู้ใหม่ - CLINK เพื่อพิสูจน์กระบวนการจดจำภาพ เมื่อเทียบกับแผนการพิสูจน์ความรู้ที่ไม่มีความรู้อื่น ๆ CLINK ใช้เทคนิคพิเศษบางอย่างเพื่อจัดการกับวงจรขนาดใหญ่

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

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

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

เราทำการทดลองสองครั้ง:

โซลูชันที่ 1 (แบบคู่ขนาน): ใช้ประโยชน์จาก CPU แบบมัลติคอร์ให้มากที่สุด และคำนวณ VGG16 แบบขนานในเวลาเดียวกัน วงจร 16 ชั้นทั้งหมดได้รับการพิสูจน์แบบขนานและพิสูจน์การเชื่อมโยงระหว่างชั้นความมุ่งมั่นทั้งหมดได้ที่ ในเวลาเดียวกัน

โซลูชันที่ 2 (ซีเรียล): ทำให้ซีเรียลไลซ์ทีละเลเยอร์ ขั้นแรกสร้างเลเยอร์แรกและเลเยอร์ที่สอง จากนั้นทำการพิสูจน์การเชื่อมโยงระหว่างเลเยอร์แรกและเลเยอร์ที่สอง

เราขอขอบคุณทีมงาน QTUM มากที่มอบซูเปอร์เซิร์ฟเวอร์ที่มีหน่วยความจำ 1TB และ SSD ประสิทธิภาพสูงให้กับเรา ลองใช้โซลูชันแบบขนานตัวแรกก่อน เนื่องจากโซลูชันแบบขนานยังต้องการหน่วยความจำจำนวนมาก แม้ว่าจะไม่ต้องการระดับ PB แต่ต้องใช้หน่วยความจำประมาณ 5TB เพื่อเรียกใช้โซลูชันแบบขนาน ซึ่ง 4TB กำลังทำงานบนพาร์ติชัน swap เนื่องจากกระบวนการทั้งหมดใช้ SSD สลับพาร์ติชัน ประสิทธิภาพจะได้รับผลกระทบอย่างมาก

วิธีแก้ไขแบบคู่ขนาน: พิสูจน์ว่ารูปภาพรู้จักลูกแมวด้วยความละเอียด 224×224 และเวลาในการพิสูจน์จะใช้เวลา 25 ชั่วโมง หากคุณได้รับเครื่องที่มีหน่วยความจำ 4TB อาจใช้เวลาเพียง 5 ชั่วโมง แต่เครื่องที่มีหน่วยความจำ 4TB นั้นหายาก และเวลาในการตรวจสอบจะใช้เวลา 1 ชั่วโมง ความยาวของการพิสูจน์คือ 80KB และการใช้หน่วยความจำสูงสุดคือ 5TB

Serial Scheme: ดูช้ากว่า แต่รันเร็วกว่าบนเครื่อง ดังนั้นจึงใช้หน่วยความจำเพียง 500GB และไม่ใช้ swap partition ดังนั้นโดยรวมจึงเร็วกว่า เวลาพิสูจน์ 20 ชั่วโมง และเวลาตรวจสอบ 1 ชั่วโมง ความยาวของหลักฐานคือ 110KB

ในกระบวนการทดลองของเรา นักวิชาการชาวเกาหลีได้ส่งเอกสารฉบับร่างที่ทำงานคล้ายกันมาให้เราด้วย ความแตกต่างที่ใหญ่ที่สุดคือพวกเขาได้ทำการแก้ไขบางอย่างที่ประนีประนอมกับ VGG16 โดยเฉพาะอย่างยิ่งเมื่อการรวม Max ในวงจรเป็นเรื่องยากมาก ดังนั้นพวกเขาจึงใช้ค่าเฉลี่ยในการรวม ในหมู่พวกเขามีการเปิดตัว CRS ขนาด 83GB ที่มีขนาดใหญ่มาก ในโครงการของเรา CRS มีขนาดเล็กมากและการปฏิบัติได้จริงดีกว่า นี่คือผลการวิจัยระดับนานาชาติล่าสุดที่เราสามารถทราบได้

โอกาสของการประยุกต์ใช้การพิสูจน์ความรู้ที่ไม่มีข้อมูลขนาดใหญ่

การพิสูจน์ด้วยความรู้เป็นศูนย์ได้เปลี่ยนจากทฤษฎีเป็นวิศวกรรม และค่อยๆ เคลื่อนไปสู่การประยุกต์ใช้ ในอนาคต อุปกรณ์จะสามารถจัดการกับข้อมูลจำนวนมากขึ้นได้ อัลกอริทึม CLINK ที่เราพัฒนาขึ้นระหว่างกระบวนการสำรวจสามารถรองรับสถิติข้อมูลขนาดใหญ่ การสืบค้น และการดำเนินการที่ซับซ้อนอื่นๆ แม้กระทั่งรวมถึงกระบวนการอนุมานของโครงข่ายประสาทเทียมเชิงลึก ในอนาคต เทคโนโลยีเหล่านี้สามารถนำไปใช้ใน:

开发者
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_GoldenApe
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android