Fiat-Shamir heuristic จะแทนที่ข้อความเหรียญสาธารณะจากเครื่องยืนยันด้วยแฮชของข้อความของผู้พิสูจน์จนถึงจุดนี้ เช่น: $$H(\alpha_1) = \beta_1, \ H(\alpha_1, \alpha_2) = \beta_2,\H(\alpha_1, \alpha_2, \alpha_3) = \beta_3,\vdots$$ ที่ไหน $\alpha_i$เป็นข้อความของผู้พิสูจน์
ฉันเข้าใจว่าเหตุใด Fiat-Shamir heuristic จึงได้รับการพิสูจน์แล้วว่าปลอดภัยใน ROM อย่างไรก็ตาม ในทางปฏิบัติ ฟังก์ชันแฮช $H$ ไม่ใช่นักพยากรณ์ แล้วอะไรล่ะที่หลีกเลี่ยงไม่ให้ผู้พิสูจน์บดบังข้อความของเขาเพื่อให้สามารถปลอมแปลงหลักฐานปลอมได้
ตัวอย่างเช่น ใน ก $\ซิกม่า$-protocol มีเพียงข้อความเดียวจากผู้ตรวจสอบ $\beta_1 = H(\alpha_1)$. จะเกิดอะไรขึ้นถ้าผู้พิสูจน์บดขยี้บางคน $\alpha_1'$ จนกว่าเขาจะพบอินพุตบางอย่างของฟังก์ชันแฮช $\beta_1$ ให้เขาได้รับประโยชน์บางอย่าง?
เหตุใดเราจึงแฮชข้อความของผู้พิสูจน์ก่อนหน้าทั้งหมดเพื่อรับข้อความยืนยันที่ไม่ใช่แบบโต้ตอบถัดไป ซึ่งเป็นปัญหาในการปฏิบัติเช่น $H(\alpha_i) = \beta_i$? ที่แย่ไปกว่านั้น ถ้าผู้พิสูจน์สามารถแฮชอะไรก็ได้ที่เขาต้องการล่ะ?