พื้นหลัง
ฉันเข้าใจโปรโตคอลของ Schnorr เวอร์ชันอินเทอร์แอกทีฟ และฉันเข้าใจว่าโปรแกรมจำลองสามารถสร้างเอาต์พุตที่ i.i.d ให้กับเอาต์พุตของผู้พิสูจน์ยืนยันได้อย่างไร:
คำถาม
สิ่งที่ฉันไม่เข้าใจคือตัวจำลองสร้างการถอดเสียงที่ถูกต้องได้อย่างไรเมื่อเราย้ายไปยังโปรโตคอลระบุตัวตนของ Schnorr เวอร์ชันที่ไม่โต้ตอบ หน้า 4 ของเอกสารประกอบการบรรยาย CS355 ประจำปี 2562 แสดงให้เห็นว่าเครื่องจำลองสามารถ "Program $H(g,h,u)$ เป็น $ค$".
และหน้าที่ 23 ของ ติดตามเอกสารประกอบการบรรยาย แสดงว่าเครื่องจำลองสามารถตั้งค่าได้ $H$ ไปยังฟังก์ชันแฮชใดๆ โดยพลการ
มันดูแปลกสำหรับฉันและฉันไม่เข้าใจ เหตุใดเราจึงถือว่า S มีความสามารถในการเลือกฟังก์ชันแฮชใดๆ ในความเป็นจริงจะมีฟังก์ชันแฮชคงที่ที่เราใช้เพื่อสร้างความท้าทายแบบสุ่ม $ค$, ขวา?
ความเข้าใจของฉันคือการพิสูจน์ HVZK ไม่ทำงานหากเราไม่อนุญาตให้ตัวจำลองสร้างฟังก์ชันแฮชใดๆ สมมติว่าเรามีฟังก์ชันแฮชที่ป้องกัน preimage คงที่ เครื่องจำลองไม่สามารถสร้างข้อความของผู้พิสูจน์ได้ $u$, $z$ ในลักษณะที่สอดคล้องกับความท้าทายนั้น ในกรณีโต้ตอบ ตัวจำลองสามารถเลือกได้ $z$ และ $ค$ สุ่มและทำงานย้อนหลังเพื่อรับ $u$ กำหนดได้ที่ไหน $u = \frac{g^z}{h^c}$. แต่ในกรณีที่ไม่โต้ตอบคุณต้องค้นหา $u$ และ $ค$ ดังนั้น $u = \frac{g^z}{h^c}$ และ $H(g,h,u) = c$และนี่คือ NP-ฮาร์ด ดังนั้นคุณจึงสูญเสียคุณสมบัติที่ไม่มีความรู้ เนื่องจากโปรแกรมจำลองไม่สามารถสร้างการถอดเสียงที่ถูกต้องได้
ดังนั้นการพิสูจน์ความรู้ที่ไม่มีความรู้เป็นศูนย์แบบไม่โต้ตอบจะถูกนำไปใช้ในทางปฏิบัติอย่างไร
บรรณานุกรม