Score:1

อัลกอริทึม Proof of Work อย่างง่ายที่ใช้ SHA256 ไวต่อการโจมตีแบบขยายความยาวหรือไม่

ธง us

เนื้อหาของแต่ละบล็อกถูกแฮชเป็น 32 ไบต์โดยใช้ $\operatorname{SHA-256}$ (เรียกสตริงนี้ว่า $a$). เพื่อให้บล็อกได้รับการยอมรับ จะต้องมี 256 บิต nonce (เรียกสตริงนี้ว่า $ข$) ให้เป็นเช่นนั้น $\operatorname{SHA-256}(a\mathbin\|b)$ ($a$ เชื่อมกับ $ข$) มี $N$ หรือมากกว่าศูนย์บิตนำหน้าที่ไหน $N$ เป็นพารามิเตอร์ความยาก

อัลกอริทึม Proof of Work อย่างง่ายนี้มีพื้นฐานมาจาก $\operatorname{SHA-256}$ ไวต่อการโจมตีแบบขยายความยาว?

Score:1
ธง in
  1. การโจมตีส่วนขยายความยาวเปลี่ยนผลลัพธ์แฮช ดังนั้นมีความเป็นไปได้สูงที่พารามิเตอร์ความยากจะไม่สามารถใช้ได้อีกต่อไป จากนี้ $$ h = \operatorname{SHA-256}(a\mathbin\|b\mathbin\|pad1)$$ ในการนี้*. $$ h'= \operatorname{SHA-256}(a\mathbin\|b\mathbin\| \text{pad1}\mathbin\|\text{appended_data} \mathbin\| \text{pad2})$$ เราไม่ได้คาดหวังให้พวกเขาเท่าเทียมกัน ความเท่าเทียมกันเป็นเหตุการณ์เล็กน้อย

    แน่นอน ผู้โจมตีอาจค้นหาส่วนขยายดังกล่าว (appended_data) ที่มีพารามิเตอร์ความยากคล้ายกันอย่างไรก็ตาม พวกเขามีเวลาไม่มากเนื่องจากหนึ่งในไคลเอ็นต์ได้พบ nonce ที่ถูกต้องสำหรับพารามิเตอร์ความยากแล้ว และกำลังเผยแพร่บนเครือข่ายแล้ว

  2. ผู้ตรวจสอบจะได้รับ $a$ และ $ข$ และผลลัพธ์แฮช $h'$ (ขนาดจำกัดเป็นกุญแจสำคัญที่นี่). เมื่อพวกเขาคำนวณค่าแฮช พวกเขาจะคำนวณ $h = \operatorname{SHA-256}(a\mathbin\|b)$ และพวกเขาจะเห็นว่า $h \neq h'$ และความเท่าเทียมกันเป็นเหตุการณ์เล็กน้อย

    แม้ว่าพวกเขาจะมีค่าแฮชเดียวกันหรือพารามิเตอร์ความยากที่ถูกต้องเหมือนกัน ไคลเอนต์ที่ใช้งานอย่างถูกต้องก็จะเห็นการโจมตี

ดังนั้นด้วยการใช้งานที่เหมาะสม การโจมตีแบบขยายความยาวจึงไม่ใช่ปัญหา อย่างไรก็ตาม อย่าพึ่งพาการใช้งานเนื่องจากอาจไม่ถูกต้อง ให้ใช้ SHA-256 สองเท่าเหมือนที่ Bitcoin ทำ อีกวิธีหนึ่งคือใช้ฟังก์ชันแฮชที่ทนต่อการขยายความยาว เช่น SHA-512/256, BLAKE2/3, SHA3-256

โปรดทราบว่า POW ได้รับการออกแบบมาเพื่อให้ใช้งานจำนวนมาก ดังนั้นการเลือก SHA-256 สองเท่าไม่ใช่ความคิดที่ดี เมื่อการออกแบบ Bitcoin เริ่มต้นขึ้น


*ช่องว่างภายใน
$pad1$ เป็นช่องว่างภายในของ SHA-256 ที่กำปั้น 1 ถูกต่อท้ายให้เล็กที่สุด 0ดังนั้นเมื่อมีการเพิ่มการเข้ารหัสความยาวข้อความจะเป็นทวีคูณของ 512 ผู้โจมตีส่วนขยายความยาวต้องใช้ช่องว่างภายในนี้แล้วเพิ่มข้อความที่ขยายจากนั้นจะต้องมีช่องว่างภายในเพิ่มเติมเป็น $pad2$, ด้วย.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา