scrypt คืออะไร?
scrypt เป็นฟังก์ชันสร้างคีย์จากรหัสผ่าน (KDF) ที่ออกแบบให้ใช้หน่วยความจำมาก โดยแปลงรหัสผ่านและซอลต์เป็นไบต์คีย์แบบกำหนดซ้ำได้ พร้อมตั้งใจใช้เวลา CPU และหน่วยความจำ ทำให้การเดารหัสผ่านจำนวนมากมีต้นทุนสูงกว่าการแฮชแบบง่าย
ประเด็นสำคัญ:
- ใช้
N(ตัวคูณต้นทุน),r(ขนาดบล็อก) และp(การประมวลผลขนาน) - การตั้งค่า
Nและrที่สูงขึ้นจะเพิ่มต้นทุนด้านหน่วยความจำและการคำนวณ - ให้คีย์ที่ได้เหมือนเดิมเฉพาะเมื่อรหัสผ่าน ซอลต์ พารามิเตอร์ และความยาวเอาต์พุตตรงกัน
แนวทางที่ดี:
- ใช้ซอลต์สุ่มที่ไม่ซ้ำกันสำหรับรหัสผ่านหรือความลับแต่ละรายการ
- เก็บ
N,r,p, รูปแบบซอลต์ และความยาวเอาต์พุตไว้คู่กับคีย์ที่ได้ - ปรับพารามิเตอร์บนอุปกรณ์ที่ช้าที่สุดที่ต้องรองรับก่อนนำไปใช้จริงในโปรดักชัน