การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2
เรียนรู้ว่าเหตุใดการจัดเก็บรหัสผ่านแบบข้อความธรรมดาจึงเป็นอันตราย และการแฮชพร้อมค่าเกลือช่วยปกป้องรหัสผ่านอย่างไร
การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2 เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงไม่ควรเก็บรหัสผ่านเป็นข้อความธรรมดา
การเก็บรหัสผ่านเป็นข้อความธรรมดาเป็นหายนะ — การรั่วไหลของฐานข้อมูลเพียงครั้งเดียวทำให้ทุกบัญชีถูกเปิดเผย รหัสผ่านต้องผ่านฟังก์ชันทางเดียวก่อนจัดเก็บ เพื่อให้แม้เข้าถึงฐานข้อมูลก็ไม่สามารถทราบรหัสผ่านต้นฉบับได้
แฮชคืออะไร
ฟังก์ชันแฮชจะแปลงข้อมูลนำเข้าที่มีความยาวเท่าใดก็ได้ให้เป็นผลลัพธ์ที่มีความยาวคงที่ ข้อมูลนำเข้าเดียวกันจะให้ผลลัพธ์เดียวกันเสมอ แต่ไม่สามารถกู้คืนข้อมูลต้นฉบับจากค่าแฮชได้ ตัวอย่างเช่น SHA-256, bcrypt และ Argon2
เหตุใดจึงไม่ใช้ SHA-256 กับรหัสผ่าน
ฟังก์ชันแฮชทั่วไปอย่าง SHA-256 ได้รับการออกแบบให้ทำงานเร็ว ผู้โจมตีสามารถคำนวณค่าแฮช SHA-256 ได้หลายพันล้านค่าต่อวินาทีบน GPU ทำให้การถอดรหัสด้วยการลองครบทุกแบบทำได้จริง
การแฮชรหัสผ่านต้องใช้ฟังก์ชันที่ช้าและใช้ทรัพยากรมาก
การเติมซอลต์
ซอลต์คือค่าสุ่มที่เติมลงในรหัสผ่านแต่ละชุดก่อนการแฮช วิธีนี้ทำให้ผู้ใช้สองคนที่ใช้รหัสผ่านเดียวกันมีค่าแฮชต่างกัน จึงป้องกันการโจมตีด้วยตารางสายรุ้งและการถอดรหัสเป็นชุด ซอลต์จะถูกจัดเก็บไว้คู่กับค่าแฮช (ไม่ใช่ข้อมูลลับ)
# Conceptual salt example
hash = bcrypt("password" + random_salt)bcrypt
bcryptได้รับการออกแบบในปี 1999 โดยเฉพาะสำหรับการแฮชรหัสผ่าน มีปัจจัยต้นทุนที่กำหนดค่าได้เพื่อควบคุมความช้าของการแฮช เมื่อฮาร์ดแวร์มีประสิทธิภาพสูงขึ้น ให้เพิ่มปัจจัยต้นทุนเพื่อรักษาความปลอดภัย
ปัจจัยต้นทุน 12 เป็นค่าที่ใช้กันทั่วไปในปัจจุบัน — ใช้เวลาประมาณ 250 มิลลิวินาทีในการแฮชบน CPU รุ่นใหม่
PBKDF2
PBKDF2 (ฟังก์ชันสร้างกุญแจจากรหัสผ่าน 2) ใช้ฟังก์ชันแฮช (เช่น HMAC-SHA256) ซ้ำหลายครั้ง (รอบการทำซ้ำ) ยิ่งมีรอบการทำซ้ำมากก็ยิ่งช้าและปลอดภัยมากขึ้น NIST แนะนำวิธีนี้ และ WPA2 ใช้สำหรับรหัสผ่าน Wi-Fi
Argon2
Argon2ชนะการแข่งขันการแฮชรหัสผ่านในปี 2015 และเป็นมาตรฐานสมัยใหม่ โดยสามารถกำหนดค่าได้ในด้านต่อไปนี้:
- ต้นทุนด้านเวลา — จำนวนรอบการทำซ้ำ
- ต้นทุนหน่วยความจำ — RAM ที่ต้องใช้ (จำกัดการเร่งความเร็วด้วย GPU)
- การทำงานขนาน — จำนวนเธรด
ใช้ Argon2id สำหรับแอปพลิเคชันส่วนใหญ่
ตารางสายรุ้ง
ตารางสายรุ้งคือตารางค้นหาค่าแฮช → ข้อความต้นฉบับที่คำนวณไว้ล่วงหน้า หากไม่มีซอลต์ ผู้โจมตีที่มีค่าแฮชก็สามารถค้นหาในตารางได้ทันที การเติมซอลต์ทำให้ตารางสายรุ้งใช้การไม่ได้ เพราะค่าแฮชแต่ละค่ามีเอกลักษณ์
เทคนิคการถอดรหัสรหัสผ่าน
แนวทางการถอดรหัสแบบออฟไลน์ที่พบบ่อย:
- การโจมตีด้วยพจนานุกรม — ลองรหัสผ่านทั่วไปและรูปแบบดัดแปลง
- การลองครบทุกแบบ — ลองชุดอักขระทุกชุดที่เป็นไปได้
- การใช้กฎ — ใช้กฎการดัดแปลงกับพจนานุกรม (เติมปี เปลี่ยนตัวแรกเป็นตัวพิมพ์ใหญ่ ใช้อักษรแทนเสียง)
- เครื่องมือ: Hashcat, John the Ripper
การเลือกอัลกอริทึมที่เหมาะสม
ลำดับความเหมาะสมสำหรับแอปพลิเคชันใหม่:
- Argon2id — ต้านทานการถอดรหัสด้วย GPU/ASIC ได้ดีที่สุด
- bcrypt — รองรับอย่างแพร่หลายและมีประวัติการใช้งานที่พิสูจน์แล้ว
- PBKDF2 — ได้รับการรับรองจาก NIST และจำเป็นในบริบทการปฏิบัติตามข้อกำหนดบางประเภท
ห้ามใช้: MD5, SHA-1 หรือ SHA-256 ที่ไม่เติมซอลต์กับรหัสผ่าน
กระบวนการตรวจสอบยืนยัน
เมื่อผู้ใช้เข้าสู่ระบบ:
- ดึงค่าแฮชและค่าเกลือที่จัดเก็บไว้สำหรับผู้ใช้ออกมา
- แฮชรหัสผ่านที่ส่งมาด้วยค่าเกลือและอัลกอริทึมเดียวกัน
- เปรียบเทียบค่าแฮชที่ได้กับค่าแฮชที่จัดเก็บไว้ (การเปรียบเทียบที่ใช้เวลาเท่ากันเสมอ)
- ห้ามถอดรหัส — เปรียบเทียบเท่านั้น
ตรวจสอบอย่างรวดเร็ว: การแฮชรหัสผ่าน
อัลกอริทึมการแฮชรหัสผ่านใดถือเป็นแนวทางปฏิบัติที่ดีที่สุดในปัจจุบัน และเป็นผู้ชนะการแข่งขันการแฮชรหัสผ่าน
สรุปบทเรียน
ต้องจัดเก็บรหัสผ่านเป็นค่าแฮช ไม่ใช่ข้อความธรรมดา อัลกอริทึมที่ทำงานเร็วอย่าง SHA-256 ไม่เหมาะสม — ให้ใช้ฟังก์ชันแฮชรหัสผ่านที่ทำงานช้า ได้แก่ Argon2id (แนะนำ), bcrypt หรือ PBKDF2 ต้องใช้ค่าเกลือแบบสุ่มที่แตกต่างกันสำหรับรหัสผ่านแต่ละรายการเสมอ เพื่อป้องกันการโจมตีด้วยตารางสายรุ้ง ห้ามสร้างระบบเข้ารหัสขึ้นเอง — ให้ใช้ไลบรารีที่ผ่านการพิสูจน์แล้ว
คำถามที่พบบ่อย
บทเรียน “การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2”
เรียนรู้ว่าเหตุใดการจัดเก็บรหัสผ่านแบบข้อความธรรมดาจึงเป็นอันตราย และการแฮชพร้อมค่าเกลือช่วยปกป้องรหัสผ่านอย่างไร คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ความแข็งแรงของรหัสผ่านและนโยบาย
- การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2
- การยืนยันตัวตนหลายปัจจัย
- การยัดข้อมูลรับรองและการทดลองรหัสผ่านเป็นชุด