พื้นหลัง. อัลกอริทึม MKDF (หน่วยความจำฮาร์ด KDF) ทั้งหมดที่ฉันรู้จัก (Scrypt, Argon2, Balloon) ไม่ต้องการหน่วยความจำทั้งหมดในทุกช่วงเวลาระหว่างรันไทม์ของการนำอัลกอริทึมไปใช้ แต่ต้องการการลงโทษทางการคำนวณอย่างหนักแทน เมื่อใช้หน่วยความจำน้อยลง .
โดยประมาณ การใช้หน่วยความจำเทียบกับกราฟเวลาจะมีลักษณะดังนี้ (แน่นอนว่า MKDF ที่ดีกว่าจะมีหนามแหลมที่อยู่ติดกันมากกว่า):
(ภาพจาก ที่นั่น)
ฉันคิดว่าข้อจำกัดนี้ (ไม่ต้องการหน่วยความจำในทุกช่วงเวลา) เกิดจากวิธีการทำงานของคอมพิวเตอร์ทั่วไป (เช่น CPU, RAM)
คำถาม. หากเราไม่ตั้งสมมติฐานเกี่ยวกับฮาร์ดแวร์ (เช่น อนุญาตให้ใช้ฮาร์ดแวร์พิเศษ) เราสามารถกำหนดอัลกอริทึม MKDF ที่ต้องใช้หน่วยความจำทั้งหมดในทุกช่วงเวลาได้หรือไม่ เช่น. เราจะทำให้กราฟแสดงเป็นเส้นตรงได้ไหม
ความคิดของฉันจนถึงตอนนี้ ลองนึกภาพว่าหากเรามีระนาบหน่วยความจำเชิงกล ซึ่งสถานะของหน่วยความจำทุกบิตจะเชื่อมต่อกับสถานะของบิตอื่นๆ ทุกๆ บิต เช่น ถ้าเราพลิกค่าของบิตหนึ่ง มันก็จะทำให้เกิดการพลิกกลับทุกๆ บิตในหน่วยความจำทั้งหมด
ด้วยระนาบหน่วยความจำเชิงกลนี้ เราดำเนินการคำสั่งเดียวที่พลิก 1 บิต และการดำเนินการเพียงครั้งเดียวจะพลิกสถานะของบิตอื่นทั้งหมดโดยอัตโนมัติ
หากความสัมพันธ์ระหว่างบิตไม่สามารถคาดเดาได้ (เช่น คล้ายกับการเปลี่ยนแปลงเล็กน้อยในมูลค่าบล็อกของข้อความที่ชัดเจนส่งผลให้ข้อความรหัสเปลี่ยนแปลงโดยสมบูรณ์) ฉันเดาว่าหน่วยความจำเชิงกลนี้กลายเป็น MKDF ที่สามารถทำงานได้ดังนี้:
- ผู้ใช้เริ่มต้นหน่วยความจำโดยการเติมบิตแบบสุ่มที่สร้างขึ้นจากเมล็ดบางส่วน นี้จะทำเพียงครั้งเดียว
- ผู้ใช้เข้ารหัสรหัสผ่านในบิตที่สำคัญที่สุดของระนาบหน่วยความจำเชิงกล สิ่งนี้ทำได้อย่างชัดเจนทุกครั้งที่ผู้ใช้ต้องการรับรหัสที่ปลอดภัยกว่าจากรหัสผ่านของเขา
- ขณะที่ผู้ใช้เข้ารหัสรหัสผ่านในบิตต้นๆ ของแผ่นหน่วยความจำเชิงกลนั้น สถานะของบิตทั้งหมดในแผ่นหน่วยความจำเชิงกลจะพลิกกลับในลักษณะที่คาดเดาไม่ได้
- สุดท้าย เมื่อผู้ใช้เข้ารหัสรหัสผ่านเสร็จแล้ว เขาก็เลือกบิตที่มีนัยสำคัญน้อยที่สุดของระนาบหน่วยความจำเชิงกลนั้นเป็นคีย์ที่ได้รับ
หากฝ่ายตรงข้ามพยายามทำเช่นนี้ด้วยระนาบหน่วยความจำเชิงกลที่เล็กกว่า (มีบิตหน่วยความจำน้อยกว่า) คีย์ที่ได้รับของเขาจะถูกสุ่มโดยสิ้นเชิง
หากการเดาของฉันถูกต้อง และการนำฮาร์ดแวร์ดังกล่าวไปใช้นั้นสามารถทำได้ ดังนั้น:
- นี่คือแพลตฟอร์มสำหรับอัลกอริทึมที่ใช้ฮาร์ดแวร์ MKDF เสมอ ต้องการหน่วยความจำเท่ากันที่ ทุกช่วงเวลา ระหว่างรันไทม์ของฟังก์ชันการรับคีย์
- ผู้ใช้ซื้อระนาบหน่วยความจำเชิงกลเดียวสำหรับการเข้าสู่ระบบของตนเอง ดังนั้นผู้ใช้สามารถจ่ายได้เนื่องจากเป็นการซื้อครั้งเดียว แต่ฝ่ายตรงข้ามจะต้องซื้อเอกสารเหล่านี้หลายแผ่นเพื่อทำควบคู่กันไป ดังนั้นฉันเดาว่ามันปรับขนาดได้สำหรับผู้ใช้ แต่ไม่สามารถปรับขนาดได้สำหรับฝ่ายตรงข้าม
ฉัน เดา เราสามารถใช้ระนาบหน่วยความจำเชิงกลนี้โดยใช้:
- ควอนตัมพัวพันน่าจะเป็นวิธีคิดที่เป็นธรรมชาติมากกว่า
- กระดานกลไกขนาดใหญ่ที่มีจาระบีจำนวนมากเพื่อให้ฟันเฟืองไม่ติด
- อุปกรณ์อิเล็กทรอนิกส์สำหรับทางเลือกที่เล็กกว่าและมันเยิ้มน้อยกว่า