bcrypt อัลกอริทึมแฮชรหัสผ่านที่ยืนหยัดมากว่า 25 ปี และอนาคตของความปลอดภัยดิจิทัล
ในช่วงทศวรรษ 2010 เหตุการณ์ข้อมูลรั่วไหล (Data Breach) กลายเป็นเรื่องที่เกิดขึ้นบ่อยครั้งจนน่าตกใจ สิ่งหนึ่งที่ผู้เชี่ยวชาญด้านความปลอดภัยและหน่วยงานบังคับใช้กฎหมายมักตั้งคำถามเมื่อเกิดเหตุการณ์เหล่านี้คือ "ระบบใช้การแฮชรหัสผ่าน (Password Hashing) ด้วยอัลกอริทึมตัวไหน?"
หากคำตอบคือฟังก์ชันที่ล้าสมัยอย่าง SHA-1 หรือร้ายกว่านั้นคือการเก็บรหัสผ่านเป็นข้อความธรรมดา (Plaintext) โดยไม่มีการเข้ารหัส ผู้ใช้งานจะตกอยู่ในความเสี่ยงสูงมาก เพราะแฮกเกอร์สามารถถอดรหัสเพื่อเข้าถึงบัญชีและนำรหัสผ่านเดียวกันนี้ไปลองใช้กับบริการอื่นได้ง่ายดาย แต่ถ้าคำตอบคือ bcrypt ความกังวลเหล่านั้นจะลดลงอย่างเห็นได้ชัด
bcrypt คืออะไรและทำงานอย่างไร
การแฮช (Hashing) คือกระบวนการนำรหัสผ่านที่อ่านออกได้ ไปผ่านอัลกอริทึมเพื่อแปลงให้เป็นชุดตัวอักษรที่สุ่มและอ่านไม่รู้เรื่อง โดยมีคุณสมบัติเป็น "ฟังก์ชันทางเดียว" (One-way function) ซึ่งหมายความว่าการแปลงข้อมูลจากรหัสผ่านเป็นค่าแฮชนั้นทำได้ง่าย แต่การย้อนกลับจากค่าแฮชมาเป็นรหัสผ่านเดิมนั้นทำได้ยากยิ่ง แม้แต่ผู้สร้างแฮชเองก็ไม่สามารถถอดรหัสได้โดยตรง
ในระบบล็อกอิน เมื่อคุณสร้างรหัสผ่าน แพลตฟอร์มจะเก็บเพียง "ค่าแฮช" ไว้ในฐานข้อมูล และเมื่อคุณเข้าสู่ระบบ ระบบจะนำรหัสผ่านที่คุณพิมพ์มาแฮชอีกครั้ง หากค่าที่ได้ตรงกับค่าที่เก็บไว้ การเข้าสู่ระบบจึงจะสำเร็จ วิธีนี้ช่วยให้ผู้ให้บริการไม่ต้องเก็บรหัสผ่านจริงของผู้ใช้ไว้ในระบบ
จุดเด่นที่ทำให้ bcrypt แตกต่างคือการมี พารามิเตอร์ด้านความปลอดภัย (Security Parameter) ที่สามารถปรับจูนได้ตามกาลเวลา เพื่อเพิ่มทรัพยากรในการคำนวณที่จำเป็นสำหรับการถอดรหัส เมื่อคอมพิวเตอร์มีความเร็วเพิ่มขึ้น ผู้ดูแลระบบสามารถเพิ่มระดับความยากเพื่อให้การเดารหัสผ่านทำได้ช้าลงและยากขึ้น

จุดกำเนิดและการเดินทางตลอด 25 ปี
bcrypt ถูกพัฒนาโดย Niels Provos และ David Mazieres โดยเริ่มใช้งานครั้งแรกในระบบปฏิบัติการ OpenBSD 2.1 เมื่อเดือนมิถุนายน ปี 1997 ในยุคที่สหรัฐอเมริกามีกฎระเบียบเข้มงวดเกี่ยวกับการส่งออกเทคโนโลยีการเข้ารหัส แต่เนื่องจาก Provos พัฒนาสิ่งนี้ขณะศึกษาอยู่ที่เยอรมนี จึงทำให้ bcrypt หลุดพ้นจากข้อจำกัดดังกล่าว
ปัจจัยที่ทำให้ bcrypt ได้รับความนิยมอย่างแพร่หลายคือการเป็น โอเพนซอร์ส (Open Source) และการแก้ปัญหาที่เกิดขึ้นจริงในโลกไซเบอร์ ส่งผลให้มีการนำไปปรับใช้ในภาษาโปรแกรมแทบทุกภาษาในปัจจุบัน จนกลายเป็นมาตรฐานพื้นฐานสำหรับการแฮชรหัสผ่านมาอย่างยาวนาน
| อัลกอริทึม | ลักษณะเด่น | สถานะปัจจุบัน |
|---|---|---|
| SHA-1 | ทำงานเร็วมาก แต่ขาดความปลอดภัย | ไม่แนะนำให้ใช้ (ล้าสมัย) |
| bcrypt | ปรับระดับความยากในการคำนวณได้ | ยังใช้งานได้ แต่เริ่มมีตัวเลือกที่ดีกว่า |
| scrypt / Argon2 | ใช้ทั้งพลังประมวลผลและหน่วยความจำ (RAM) | แนะนำสำหรับระบบสมัยใหม่ |
ข้อเท็จจริงสำคัญ
- bcrypt ถูกสร้างขึ้นเพื่อแก้ปัญหาการถอดรหัสรหัสผ่านที่เร็วเกินไปโดยการเพิ่มพารามิเตอร์ความยาก
- จุดอ่อนของ bcrypt คือการถูกโจมตีด้วยฮาร์ดแวร์เฉพาะทางที่ประมวลผลแบบขนาน (Parallel Computing) ได้อย่างรวดเร็ว
- อัลกอริทึมยุคใหม่ เช่น scrypt และ Argon2 ถูกออกแบบมาให้ใช้หน่วยความจำ (Memory-hard) เพื่อป้องกันการโจมตีแบบขนาน
- ทัศนะของผู้สร้าง Niels Provos มองว่า bcrypt ควรถูกแทนที่ได้ตั้งนานแล้ว และสะท้อนว่าโลกยังพึ่งพารหัสผ่านมากเกินไป
ก้าวต่อไปของความปลอดภัยดิจิทัล
แม้ bcrypt จะทำหน้าที่ได้อย่างดีเยี่ยมมานาน แต่ผู้เชี่ยวชาญอย่าง Matthew Green จาก Johns Hopkins ชี้ให้เห็นว่าคอมพิวเตอร์ที่เร็วขึ้นเรื่อยๆ ทำให้ฟังก์ชันที่เคย "ช้า" ในวันนี้ กลายเป็นเรื่อง "เร็ว" ในวันหน้า การเปลี่ยนไปใช้ฟังก์ชันที่ต้องการทั้งพลังประมวลผลและหน่วยความจำจึงเป็นทางออกที่ยั่งยืนกว่า
นอกจากนี้ ทั้ง Provos และ Mazieres ยังแสดงความกังวลที่พฤติกรรมการยืนยันตัวตนของผู้คนไม่เปลี่ยนแปลงมาหลายทศวรรษ เช่น การคลิกลิงก์และกรอกรหัสผ่านอย่างไม่ระมัดระวัง แม้ปัจจุบันจะเริ่มมีการนำ Passkeys มาใช้ แต่การเปลี่ยนแปลงทางวัฒนธรรมด้านความปลอดภัยยังคงเป็นเรื่องท้าทาย
คำถามที่พบบ่อย
ทำไม bcrypt ถึงปลอดภัยกว่าการเก็บรหัสผ่านแบบ Plaintext?
เพราะ bcrypt แปลงรหัสผ่านให้เป็นค่าแฮชที่อ่านไม่ออก หากฐานข้อมูลรั่วไหล แฮกเกอร์จะได้ไปเพียงค่าแฮช ไม่ใช่รหัสผ่านจริง ทำให้ไม่สามารถนำไปใช้ล็อกอินได้ทันที
พารามิเตอร์ความปลอดภัยใน bcrypt มีประโยชน์อย่างไร?
ช่วยให้ผู้พัฒนาระบบสามารถเพิ่ม "ต้นทุน" ในการคำนวณเพื่อถอดรหัสได้ เมื่อคอมพิวเตอร์แรงขึ้น เราก็ปรับให้การแฮชช้าลง เพื่อให้แฮกเกอร์ต้องใช้เวลานานขึ้นในการเดารหัสผ่าน
ปัจจุบันควรใช้ bcrypt หรือ Argon2?
แม้ bcrypt จะยังคงใช้งานได้ดี แต่ Argon2 และ scrypt มีความปลอดภัยสูงกว่าในปัจจุบัน เนื่องจากถูกออกแบบมาเพื่อป้องกันการโจมตีด้วยฮาร์ดแวร์เฉพาะทางที่ประมวลผลแบบขนาน
Passkeys คืออะไรและจะมาแทนที่รหัสผ่านได้จริงหรือไม่?
Passkeys เป็นวิธีการยืนยันตัวตนรูปแบบใหม่ที่ลดการพึ่งพารหัสผ่านแบบเดิม ซึ่งผู้สร้าง bcrypt มองว่าเป็นทิศทางที่ถูกต้องในการลดความเสี่ยงจากการใช้รหัสผ่านที่ซ้ำซ้อนหรือถูกขโมยได้ง่าย



