ใช้ลำดับของบัฟเฟอร์ไบต์ แฮชแต่ละอัน ตีความการย่อยแฮชเป็นเมทริกซ์สี่เหลี่ยมที่มีองค์ประกอบ int 8 บิตที่ไม่ได้ลงนาม และ (เมทริกซ์) คูณพวกมันตามลำดับ กำหนดเมทริกซ์สุดท้ายเป็น "แฮช" ของรายการองค์ประกอบ
คำนิยามนี้มีคุณสมบัติที่เป็นประโยชน์บางประการ โดยเฉพาะอย่างยิ่ง คุณสมบัติเชื่อมโยงของการคูณเมทริกซ์ทำให้สามารถคำนวณรายการแฮชของการต่อรายการสองรายการโดยการคำนวณแฮชของแต่ละรายการแยกจากกัน แล้วลดรายการโดยการคูณเพื่อให้ได้รายการแฮชสุดท้าย ใช้งานได้กับการแบ่งพาร์ติชันตามอำเภอใจ การไม่สลับสับเปลี่ยนทำให้ลำดับองค์ประกอบที่แตกต่างกันสร้างแฮชที่แตกต่างกันสำหรับรายการ ซึ่งเป็นสิ่งที่คาดหวังสำหรับรายการ
(ฉันสำรวจคำจำกัดความนี้ในรายละเอียดเพิ่มเติมรวมถึงตัวอย่างโค้ดการทำงานในสมุดบันทึก python jupyter ที่ฉันเผยแพร่ชื่อ Merklist. คุณยังสามารถเล่นกับมันด้วยตัวคุณเอง Google Colabและเพิ่มคำอธิบายประกอบของสมมติฐานในโพสต์สำหรับความคิดเห็นทั่วไป ฉันสามารถยกรายละเอียดจากคำถามนี้หากจำเป็น)
คำถาม
- คำจำกัดความนี้ทนทานต่อการโจมตีแบบพรีอิมเมจหรือไม่ กล่าวอีกนัยหนึ่ง เป็นไปได้หรือไม่ที่จะเลือกลำดับขององค์ประกอบที่ส่งผลให้เกิดแฮชรายการเป้าหมายโดยพลการ
โปรดทราบว่าต้องมีองค์ประกอบอยู่ ดังนั้นการย่อยองค์ประกอบที่เข้าสู่ list-hash จึงมีความต้านทาน preimage ตามฟังก์ชันแฮชพื้นฐาน (ซึ่งเราสามารถสันนิษฐานได้ในขอบเขตของคำถามนี้) ดังนั้นคำถามจึงกลายเป็น: ลำดับหรือการมีอยู่ของการย่อยแฮชเหล่านี้สามารถใช้เพื่อแก้ไขเนื้อหาของเมทริกซ์สุดท้ายโดยพลการได้หรือไม่ ตัวอย่างเช่น คุณสามารถสร้างลำดับขององค์ประกอบที่สร้างรายการแฮชที่เป็นเมทริกซ์ศูนย์ได้หรือไม่ (การกดปุ่มเมทริกซ์เป็นศูนย์หมายถึงเกมจบสิ้นลง)
ฉันทำการค้นหาและไม่พบคำตอบสำหรับคำถามเหล่านี้ แม้ว่าฉันสงสัยว่าอาจเป็นเพราะฉันไม่รู้คำศัพท์ที่ถูกต้องมากพอๆ กับคำตอบที่ไม่มีอยู่จริง