ฟังก์ชัน“ Memory-Hard” กับ“ Memory-Bound”?
หนึ่งในแนวทางเพื่อป้องกันการโจมตี Sybil หรือ DoS คือ PoW ที่เชื่อมต่อกับ CPU อย่างไรก็ตามเนื่องจากอิทธิพลของกฎของมัวร์จึงมีการแนะนำแนวทางที่ใช้ความจำ
ตามความเป็นจริงมีสองคำที่แตกต่างกัน: (1) ฟังก์ชันหน่วยความจำยากและ (2) ฟังก์ชันผูกหน่วยความจำ ;
หมายความว่าเรามีเทคนิคการจำสองแบบที่แตกต่างกันหรือไม่?
และถ้าใช่ความแตกต่างระหว่างสองคำนี้คืออะไร?
คำตอบ
คำจำกัดความของ Wikipedia นั้นชัดเจน
ฟังก์ชั่นหน่วยความจำที่ถูกผูกไว้ ;
ขอบเขตของหน่วยความจำหมายถึงสถานการณ์ที่เวลาในการแก้ไขปัญหาการคำนวณที่กำหนดโดยหลักแล้วจะพิจารณาจากจำนวนหน่วยความจำที่จำเป็นในการเก็บข้อมูล
สิ่งนี้เสนอให้ใช้กับสแปมโดยใช้ CPU ตัวแรกจากนั้นเชื่อมต่อกับหน่วยความจำ อัลกอริทึมนี้ต้องการเข้าถึงหน่วยความจำในลักษณะที่ไม่สามารถคาดเดาได้เพื่อให้แคชไม่มีประสิทธิภาพ ซึ่งเป็นการกีดกันผู้ส่งสแปม
ฟังก์ชั่นหน่วยความจำยาก
ในการเข้ารหัสนั้น memory hard function (MHF) เป็นฟังก์ชันที่ต้องใช้หน่วยความจำจำนวนมากในการประเมิน มันแตกต่างจากฟังก์ชั่นที่ถูกผูกไว้กับหน่วยความจำซึ่งจะต้องเสียค่าใช้จ่ายโดยการชะลอการคำนวณผ่านเวลาแฝงของหน่วยความจำ MHF พบว่าการใช้งานเป็นรูปแบบหนึ่งของการพิสูจน์การทำงาน
นี่เป็นการต่อต้านการแฮชแบบขนานขนาดใหญ่เป็นต้นตัวอย่างเช่นผู้ขุด bitcoin สร้างฟาร์มสำหรับการคำนวณ SHA2d เนื่องจาก SHA2 ไม่ใช่หน่วยความจำที่ยาก
มีสองสายพันธุ์
- ขึ้นอยู่กับข้อมูล
- ข้อมูลอิสระ
ตัวอย่างเช่นArgon2มีทั้งโหมดและรวมกัน Argon2i สำหรับข้อมูลที่เป็นอิสระและ Argon2d สำหรับข้อมูลที่ขึ้นกับ ในโหมดรวม Argon2id