bcrypt คืออะไร?
bcrypt เป็นอัลกอริทึมสำหรับการ hash รหัสผ่านที่ออกแบบมาเพื่อเก็บรหัสผ่าน โดยรวมรหัสผ่านกับ salt แบบสุ่มและทำงานที่ใช้ทรัพยากรสูงซ้ำตาม cost factor ทำให้ผู้โจมตีต้องใช้เวลามากขึ้นในการทดสอบแต่ละคำเดา
ควรใช้เครื่องมือนี้เมื่อใด
- สร้าง bcrypt hash สำหรับบัญชีทดสอบ สคริปต์ seed หรือสภาพแวดล้อมพัฒนาในเครื่อง
- เปรียบเทียบว่า cost factor ต่าง ๆ เปลี่ยนรูปแบบเอาต์พุตและเวลารันอย่างไร
- สร้าง hash ที่พร้อมคัดลอกโดยไม่ส่งรหัสผ่านไปยังเซิร์ฟเวอร์
วิธีเลือก cost factor
ค่า cost ที่สูงขึ้นจะช้ากว่าและโดยทั่วไปปลอดภัยกว่า แต่ก็ทำให้การเข้าสู่ระบบแต่ละครั้งในแอปพลิเคชันของคุณช้าลงด้วย ค่า cost ประมาณ 10-12 พบได้บ่อยในระบบแบบโต้ตอบ ส่วนค่าที่สูงกว่านั้นอาจเหมาะกับเวิร์กโฟลว์สำหรับผู้ดูแลเท่านั้นหรือระบบที่มีปริมาณใช้งานต่ำ ทดสอบค่า cost บนฮาร์ดแวร์ประเภทเดียวกับที่จะใช้ตรวจสอบรหัสผ่าน
สิ่งที่ควรคำนึงถึง
- hash ที่สร้างแต่ละครั้งใช้ salt แบบสุ่มใหม่ ดังนั้นเอาต์พุตจึงเปลี่ยนแม้รหัสผ่านและ cost จะเหมือนเดิม
- เก็บ bcrypt hash ไม่ใช่รหัสผ่านต้นฉบับ
- ใช้ bcrypt สำหรับรหัสผ่าน ไม่ใช่สำหรับ checksum ของไฟล์, signature หรือการ hash ทั่วไป
- รักษาพฤติกรรมการตรวจสอบให้คงที่และหลีกเลี่ยงการเปิดเผยว่าบัญชีผู้ใช้มีอยู่หรือไม่