ในบทที่ 10 ของ HAC (10.4.2)เราจะเห็นโปรโตคอลการระบุตัวตน Feige-Fiat-Shamir ที่รู้จักกันดีบนพื้นฐานของการพิสูจน์ความรู้แบบ zero-knowledge โดยใช้ความยากลำบาก (สันนิษฐาน) ในการแยกรูตรากโมดูโลคอมโพสิตที่ยากต่อการแยก ฉันจะให้รูปแบบในคำพูดของฉันเอง (และหวังว่าจะทำให้ถูกต้อง)
มาเริ่มด้วยโครงร่างที่ง่ายกว่ากันเถอะ, ให้เป็นจำนวนเต็ม Blum (ดังนั้นและและแต่ละอันคือ 3 mod 4) ที่มีขนาดใหญ่พอสมควร เนื่องจากเป็นจำนวนเต็ม Blum ครึ่งหนึ่งขององค์ประกอบของมีสัญลักษณ์ Jacobi +1 และอีกครึ่งหนึ่งมี -1 สำหรับองค์ประกอบ +1 ครึ่งหนึ่งของเหล่านั้นมีรากที่สองและแต่ละองค์ประกอบที่มีรากที่สองมีสี่ของพวกเขาหนึ่งองค์ประกอบเป็นสี่เหลี่ยม
ตอนนี้เพ็กกี้เลือกองค์ประกอบสุ่มจากและชุด 2 จากนั้นเธอก็ส่งไปยังวิกเตอร์ ถัดไปเป็นโปรโตคอล: Victor ความประสงค์ที่จะตรวจสอบว่าเพ็กกี้รู้รากที่สองของและเพ็กกี้มีความประสงค์ที่จะพิสูจน์ให้เขาโดยไม่ต้องบอกอะไรเกี่ยวกับเกินความจริงที่เธอรู้เช่นs
- เพ็กกี้เลือกสุ่มในและส่งไปยัง Victor
- Victor equiprobably ส่งหรือกลับไปที่ Peggy
- Peggy ส่งถึง Victor
วิกเตอร์สามารถยืนยันได้ว่าเพ็กกี้ได้ส่งคำตอบที่ถูกต้องโดยการยกกำลังสองสิ่งที่เขาได้รับและเปรียบเทียบกับผลลัพธ์ที่ถูกต้อง แน่นอนว่าเราทำซ้ำการโต้ตอบนี้เพื่อลดโอกาสที่เพ็กกี้เป็นเพียงผู้เดาที่โชคดี โปรโตคอลนี้อ้างว่าเป็น ZK หลักฐานสามารถพบได้ในสถานที่ต่าง ๆ (เช่นบันทึกการบรรยายของ Boaz Barak )
เมื่อเราขยายโปรโตคอลนี้เพื่อให้มีประสิทธิภาพมากขึ้นเรียกว่า Feige-Fiat-Shamir มันคล้ายกับข้างบนมาก เราเริ่มต้นเพ็กกี้กับค่าสุ่มและสัญญาณสุ่มเธอตีพิมพ์สี่เหลี่ยมของพวกเขาเป็น 2 ในคำอื่น ๆ ที่เราสุ่มลบล้างบางส่วนของv_iตอนนี้
- เพ็กกี้เลือกสุ่มในและส่งไปยัง Victor
- วิกเตอร์สามารถส่งค่าจากกลับไปยัง Peggy ได้
- เพ็กกี้ส่งให้กับวิกเตอร์
คำถามของฉัน:ทำไมบิตลงชื่อจำเป็น? ในวงเล็บ HAC ตั้งข้อสังเกตว่ามีข้อกำหนดทางเทคนิคที่จำเป็นในการพิสูจน์ว่าไม่มีข้อมูลลับรั่วไหล หน้าวิกิพีเดียสำหรับ Feige-Fiat-Shamir (ซึ่งได้รับโปรโตคอลที่ไม่ถูกต้อง) หมายความว่าไม่มีบิตนี้รั่วไหลออกมา
ฉันไม่สามารถค้นหาการโจมตีที่ดึงข้อมูลใด ๆ จากเพ็กกี้ได้หากเธอไม่เห็นสัญญาณ