bcrypt คืออะไร
Bcrypt คือฟังก์ชันการแฮชรหัสผ่านที่ออกแบบโดย Niels Provos และ David Mazières ซึ่งอิงตาม Blowfish cipher ไม่เหมือนกับ digest ที่เร็วเช่น MD5 หรือ SHA-256 bcrypt ถูกออกแบบให้ช้าและใช้ทรัพยากรมากโดยเจตนา — ทำให้การโจมตีแบบ brute-force ต่อแฮชรหัสผ่านที่ถูกขโมยเป็นไปไม่ได้ในทางปฏิบัติ Bcrypt สร้างเกลือแบบสุ่มโดยอัตโนมัติต่อรหัสผ่านหนึ่งอัน ดังนั้นรหัสผ่านที่เหมือนกันจึงสร้างแฮชที่แตกต่างกัน
bcrypt ทำงานอย่างไร
อัลกอริทึม bcrypt ทำงานทั้งหมดในเบราว์เซอร์ของคุณ นี่คือสิ่งที่เกิดขึ้นทีละขั้นตอน:
- รหัสผ่านของคุณถูกเข้ารหัสเป็นไบต์ UTF-8 และป้อนเข้าสู่กำหนดการคีย์ bcrypt ซึ่งเริ่มต้น P-array ขนาด 4,184 ไบต์และ S-boxes ของ Blowfish cipher โดยใช้รหัสผ่านและเกลือ
- เกลือแบบสุ่ม 128-bit ถูกสร้างขึ้น เกลือถูกผสมลงในกำหนดการคีย์เพื่อให้เกลือที่ไม่ซ้ำกันแต่ละอันสร้างแฮชที่แตกต่างกันโดยสิ้นเชิงแม้สำหรับรหัสผ่านเดียวกัน
- กำหนดการคีย์ถูกทำซ้ำ 2^cost รอบ (เช่น 2^10 = 1,024 รอบที่ต้นทุน 10) แต่ละรอบจะเข้ารหัสซ้ำรายการเกลือและ P-array ทำให้การคำนวณช้าลงตามสัดส่วนเมื่อต้นทุนเพิ่มขึ้น
- ผลลัพธ์สุดท้ายคือสตริง 60 ตัวอักษรในรูปแบบ
$2b$<cost>$<salt><hash>โดยที่ cost ถูกเติมศูนย์ (เช่น 10), salt คือ 22 ตัวอักษร Base64 และ hash คือ 31 ตัวอักษร Base64 - สำหรับการยืนยัน อัลกอริทึมเดียวกันถูกเรียกใช้อีกครั้งกับรหัสผ่านที่ต้องการตรวจสอบและเกลือที่ดึงมาจากแฮชที่เก็บไว้ ถ้าแฮชที่ได้ตรงกับแฮชที่เก็บไว้ แสดงว่ารหัสผ่านถูกต้อง
ฉันควรใช้ปัจจัยต้นทุนใด
ปัจจัยต้นทุนคือลอการิทึมของจำนวนรอบ — ต้นทุน 10 หมายถึง 2^10 = 1,024 รอบ ต้นทุน 12 หมายถึง 4,096 รอบ เลือกตามความต้องการด้านความปลอดภัยและฮาร์ดแวร์ของคุณ:
- ต้นทุน 4-6 (16-64 รอบ) — สำหรับการพัฒนาและทดสอบเท่านั้น เร็วเกินไปสำหรับการใช้งานจริง ให้การป้องกันน้อยมาก
- ต้นทุน 8 (256 รอบ) — ขั้นต่ำสำหรับแอปพลิเคชันที่ไม่สำคัญ ประมาณ 6ms บนฮาร์ดแวร์สมัยใหม่
- ต้นทุน 10 (1,024 รอบ) — ค่าพื้นฐานที่แนะนำในปัจจุบัน ใช้เวลาประมาณ 25ms เหมาะสำหรับแอปพลิเคชันเว็บส่วนใหญ่
- ต้นทุน 12 (4,096 รอบ) — แนะนำสำหรับพอร์ทัลผู้ดูแลระบบ ระบบการเงิน และแอปความปลอดภัยสูง ใช้เวลาประมาณ 100ms
- ต้นทุน 14 (16,384 รอบ) — ความปลอดภัยสูง ใช้เวลาประมาณ 400ms ใช้สำหรับรหัสผ่านหลัก คีย์เข้ารหัส หรือเมื่อยอมรับความหน่วงในการเข้าสู่ระบบได้
ทำไมต้องใช้ bcrypt generator นี้
- ความเป็นส่วนตัวของคุณได้รับการปกป้อง — ทุกรหัสผ่านถูกแฮชภายในเบราว์เซอร์ของคุณ และไม่มีข้อมูลใดออกจากอุปกรณ์ของคุณ
- คุณได้รับทั้งสองโหมดเคียงข้างกัน: สร้างแฮชใหม่หรือยืนยันแฮชที่มีอยู่โดยไม่ต้องเปลี่ยนหน้า
- ปัจจัยต้นทุนปรับได้ตั้งแต่ 4 (เร็ว) ถึง 15 (ช้ามาก) เพื่อให้ตรงกับความต้องการด้านความปลอดภัยของแอปพลิเคชันของคุณ
- แฮชใช้รูปแบบมาตรฐาน
$2b$ที่ทำงานกับทุกภาษาและเฟรมเวิร์กหลัก
การใช้งานทั่วไปของ bcrypt คืออะไร
Bcrypt ถูกใช้อย่างแพร่หลายสำหรับการจัดเก็บและยืนยันรหัสผ่านในอุตสาหกรรม:
- การยืนยันตัวตนผู้ใช้แอปพลิเคชันเว็บ — จัดเก็บแฮชรหัสผ่านผู้ใช้ในฐานข้อมูลเพื่อไม่ให้รหัสผ่านแบบข้อความธรรมดาถูกบันทึก
- การแฮชคีย์ API — แฮชความลับของ API ก่อนจัดเก็บ เพื่อให้การรั่วไหลของฐานข้อมูลไม่เปิดเผยข้อมูลประจำตัวที่ถูกต้อง
- การตรวจสอบการโยกย้าย — ตรวจสอบว่าแฮชรหัสผ่านเดิมจากระบบเก่ายังสามารถยืนยันตัวตนผู้ใช้ได้หลังจากอัปเกรดชั้นการยืนยันตัวตน
แฮช bcrypt มีลักษณะอย่างไร
การแฮชรหัสผ่าน hunter2 ด้วยปัจจัยต้นทุน 10 จะสร้างสตริงเช่น $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy รูปแบบแบ่งออกเป็น: $2b$ (เวอร์ชันอัลกอริทึม), 10 (ปัจจัยต้นทุน), $, จากนั้น 22 ตัวอักษรของเกลือและ 31 ตัวอักษรของแฮช ทั้งหมดเข้ารหัส Base64 การทำงานแต่ละครั้งด้วยรหัสผ่านเดียวกันจะสร้างแฮชที่แตกต่างกันเนื่องจากเกลือแบบสุ่ม
เครื่องมือสร้าง bcrypt นี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณโดยใช้การใช้งาน JavaScript บริสุทธิ์ แฮชรหัสผ่านก่อนจัดเก็บ ยืนยันแฮชที่มีอยู่ และปรับปัจจัยต้นทุนให้ตรงกับความต้องการด้านความปลอดภัยของคุณ — ทั้งหมดโดยไม่ส่งแม้แต่ไบต์เดียวไปยังเซิร์ฟเวอร์