ฉันกำลังทำงานในโครงการที่ใช้แนวคิดบิตคอมมิตเพื่อรับรองความถูกต้องของข้อมูล
ฉันต้องเลือกชุดค่าผสมของวัตถุอย่างปลอดภัยจากแฮชที่ปลอดภัย แล้วจึงแจกจ่ายแฮชนั้นในภายหลัง จากนั้นไคลเอนต์จะรู้ว่าเฉพาะเซิร์ฟเวอร์ที่ผ่านการรับรองความถูกต้องเท่านั้นที่เลือกชุดค่าผสมของออบเจกต์นั้นก่อนกระจายแฮชชุดค่าผสมที่ได้รับมา
กล่าวอีกนัยหนึ่ง ฉันต้องเลือกชุดค่าผสมของออบเจกต์ที่กำหนดขึ้นเองจากคีย์เข้ารหัส
ผมคิดว่าการปรับตัว นี้ จะเป็นความคิดที่ดีดังต่อไปนี้
ให้ x เป็นแฮช เช่น จำนวนเต็ม l-bit (l>128) ที่มาจากฟังก์ชันแฮชที่ปลอดภัยหรือ prf
ฉันต้องเลือกวัตถุ M จากชุดของ N
และให้ S เป็นเซตของวัตถุที่เลือก
ฉันยืนยันว่า $log_2 C(M,N) > 128$.
เริ่มต้นตั้งค่า S เป็นว่าง
สำหรับ J := N-M + 1 ถึง N do
T := (x mod J) + 1 \ บรรทัดนี้เปลี่ยนจากลิงค์ด้านบนจาก RandInt(1, J)
ถ้า T ไม่อยู่ใน S แล้ว
ใส่ T ใน S
อื่น
ใส่ J ใน S
คำถามหลัก:
หากได้รับการรวมกันของวัตถุ M จากชุด N ใครบางคนสามารถกลับอัลกอริทึมข้างต้นเพื่อรับแฮช
ถ้าเป็นเช่นนั้น มีใครทราบวิธีที่ปลอดภัยในการเลือกชุดค่าผสมของออบเจกต์จากแฮชหรือไม่
ฉันต้องเลือกชุดค่าผสมของออบเจกต์ที่กำหนดขึ้นเองจากคีย์เข้ารหัสในลักษณะที่เราสามารถใช้กำลังเดรัจฉานเพื่อกำหนดคีย์เข้ารหัสที่ใช้ในการรับค่าผสมของออบเจกต์ M ระหว่าง N ในการกลับรายการข้างต้น เราจะต้องแก้ปัญหา โจทย์เลขคณิตแบบโมดูลาร์มากมาย มิฉะนั้นฉันจะคิดว่าฟังก์ชันหนึ่งต่อหนึ่งที่สามารถรับจำนวนเต็มและรับชุดค่าผสมจะทำงานได้เช่นกัน ฟังก์ชันนี้จำเป็นต้องมีประสิทธิภาพด้วย
ขอบคุณ