รหัสผ่าน Bcrypt เครื่องกำเนิดไฟฟ้า
สร้างแฮชรหัสผ่าน bcrypt ที่ปลอดภัยทันทีในเบราว์เซอร์ของคุณ เลือกปัจจัยด้านต้นทุนและแฮชรหัสผ่านฝั่งไคลเอ็นต์ — เป็นส่วนตัวและฟรีโดยสมบูรณ์
สร้างแฮชรหัสผ่าน bcrypt ที่ปลอดภัยทันทีในเบราว์เซอร์ของคุณ เลือกปัจจัยด้านต้นทุนและแฮชรหัสผ่านฝั่งไคลเอ็นต์ — เป็นส่วนตัวและฟรีโดยสมบูรณ์
bcrypt เป็นฟังก์ชันแฮชรหัสผ่านที่ออกแบบโดย Niels Provos และ David Mazières ในปี 1999 ซึ่งได้มาจากรหัสปักเป้า ต่างจากฟังก์ชันแฮชทั่วไปอย่าง SHA-256 ตรงที่ bcrypt นั้นจงใจช้า — และกำหนดค่าได้ช้าผ่านพารามิเตอร์ต้นทุน — ซึ่งเป็นคุณสมบัติที่แฮชรหัสผ่านต้องการอย่างแน่นอน ฟังก์ชั่นแฮชที่เร็วขึ้นช่วยให้ผู้โจมตีบังคับผู้สมัครได้มากขึ้นต่อวินาที อันที่ช้ากว่าจะจำกัดพวกมัน
bcrypt ยังรวมเกลือต่อรหัสผ่านโดยอัตโนมัติ กำจัดการโจมตีทุกประเภทโดยอิงจากตารางสายรุ้งที่คำนวณล่วงหน้า พารามิเตอร์เกลือและต้นทุนจะถูกจัดเก็บเป็นส่วนหนึ่งของเอาต์พุต bcrypt ดังนั้นการตรวจสอบจึงต้องการเพียงแฮชที่เก็บไว้และรหัสผ่านตัวเลือกเท่านั้น ไม่มีการจัดการเกลือแยกต่างหาก การผสมผสานระหว่างความช้า ความเกลือ และรูปแบบในตัวเองทำให้ bcrypt กลายเป็นแฮชรหัสผ่านเริ่มต้นมาเป็นเวลาสองทศวรรษและเป็นตัวเลือกที่แข็งแกร่งในปัจจุบัน
ทางเลือกสมัยใหม่มีอยู่ Argon2 ชนะการแข่งขัน Password Hashing Competition ประจำปี 2015 และนำเสนอความแข็งแกร่งของหน่วยความจำนอกเหนือจากความแข็งแกร่งของเวลา scrypt มีคุณสมบัติที่คล้ายกัน สำหรับการออกแบบใหม่ Argon2id เป็นตัวเลือกที่แนะนำ bcrypt ยังคงเป็นที่ยอมรับและมีการนำไปใช้อย่างกว้างขวาง โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่ไม่มี Argon2
การจัดเก็บรหัสผ่านในรูปแบบข้อความธรรมดาถือเป็นการทุจริตต่อหน้าที่ การจัดเก็บด้วยแฮชที่รวดเร็วเช่น SHA-256 นั้นแทบจะไม่ดีกว่าเลย — GPU สมัยใหม่คำนวณแฮช SHA-256 นับพันล้านต่อวินาที ทำให้การโจมตีแบบดุร้ายต่อรหัสผ่านทั่วไปใดๆ ทำได้ภายในเวลาไม่กี่ชั่วโมง ความล่าช้าโดยเจตนาของ bcrypt ทำให้เกิดความเปลี่ยนแปลงทางเศรษฐกิจ: ที่ต้นทุน 12 ผู้โจมตีใช้เวลาประมาณ 250 มิลลิวินาทีต่อรหัสผ่านของผู้สมัคร ทำให้การใช้กำลังแบบเดรัจฉานไม่สามารถทำได้สำหรับรหัสผ่านที่ไม่สำคัญ
เกลือต่อรหัสผ่านอัตโนมัติของ bcrypt ยังเอาชนะการโจมตีตารางสายรุ้ง ผู้ใช้สองคนที่มีรหัสผ่านเดียวกันจะสร้างแฮช bcrypt ที่แตกต่างกันเนื่องจากเกลือต่างกัน การบุกรุกฐานข้อมูลรหัสผ่านไม่ได้ทำให้ผู้โจมตีระบุรหัสผ่านทั่วไปหรือการเข้าถึงตารางที่คำนวณไว้ล่วงหน้าได้อย่างรวดเร็ว
พิมพ์รหัสผ่าน เลือกราคา รับแฮช
bcrypt ใช้ขั้นตอนการตั้งค่าคีย์ของ Blowfish cipher ที่แก้ไขแล้ว ทำซ้ำ 2 ^ เท่าของต้นทุน ปัจจัยด้านต้นทุนคือลอการิทึม — ราคา 12 ช้าเป็นสองเท่าของต้นทุน 11 และช้ากว่าต้นทุน 10 ถึงสี่เท่า มาตราส่วนลอการิทึมนี้ช่วยให้ผู้ดูแลระบบปรับต้นทุนเมื่อเวลาผ่านไปในขณะที่ฮาร์ดแวร์มีการปรับปรุง โดยไม่ต้องออกแบบระบบใหม่
รูปแบบเอาต์พุตคือ $version$cost$saltAndHash โดยที่ saltAndHash เข้ารหัส base64 ด้วยตัวอักษรที่กำหนดเอง โดยทั่วไปเวอร์ชันจะอยู่ที่ $2b$ (เวอร์ชันสมัยใหม่ที่มีข้อบกพร่องแบบสรุป) หรือ $2y$ (เฉพาะ PHP เทียบเท่า) เกลือคือ 16 ไบต์ แฮชคือ 24 ไบต์ ร่วมกันเข้ารหัสเป็น 53 อักขระของ custom-base64
ความยาวอินพุตสูงสุดคือ 72 ไบต์ (จำกัดความยาวคีย์ปักเป้า) รหัสผ่านที่ยาวขึ้นจะถูกตัดทอนอย่างเงียบๆ ซึ่งเป็นพฤติกรรมแปลกๆ ของ bcrypt ที่มีมายาวนาน แนวทางปฏิบัติที่ดีที่สุดคือการจำกัดความยาวของรหัสผ่านไว้ที่ 72 ไบต์หรือแฮชล่วงหน้าด้วย SHA-256 เพื่อทำให้ความยาวเป็นมาตรฐานก่อน bcrypt