Password Hashing
Password Hashing (การจัดเก็บข้อมูลรับรองตัวตนอย่างปลอดภัย)
กระบวนการแปลงรหัสผ่านแบบข้อความธรรมดาให้เป็นค่าแฮชที่มีความยาวคงที่และไม่สามารถย้อนกลับได้สำหรับการจัดเก็บ เพื่อให้แน่ใจว่าแม้ฐานข้อมูลจะถูกเจาะ รหัสผ่านเดิมก็ไม่สามารถกู้คืนได้ง่าย
รายละเอียดทางเทคนิค
อัลกอริทึม password hashing ต้องช้าโดยตั้งใจเพื่อต้านทานการโจมตีแบบ brute-force: bcrypt (1999, work factor ปรับได้, เอาต์พุต 184 บิต), scrypt (2009, memory-hard, ต้านทานการโจมตี GPU) และ Argon2 (2015, ผู้ชนะ Password Hashing Competition, กำหนดเวลา/หน่วยความจำ/ความขนานได้) รหัสผ่านแต่ละตัวจะถูกรวมกับ salt สุ่มที่ไม่ซ้ำก่อนแฮชเพื่อป้องกันการโจมตีด้วย rainbow table Pepper (ความลับฝั่งเซิร์ฟเวอร์) เพิ่มการป้องกันเพิ่มเติม แฮชการเข้ารหัสดิบ (SHA-256) ไม่เหมาะเพราะออกแบบมาให้เร็ว ทำให้เดาได้หลายพันล้านครั้งต่อวินาทีบน GPU OWASP แนะนำ Argon2id เป็นตัวเลือกหลัก
ตัวอย่าง
```
Password hashing comparison:
bcrypt: $2b$12$salt22chars..hash31chars..
Cost factor 12 → ~250ms per hash
argon2id: $argon2id$v=19$m=65536,t=3,p=4$salt$hash
Memory: 64MB, Iterations: 3, Parallelism: 4
Never use: MD5, SHA-256 alone (too fast → brute-forceable)
```