0Pricing
Cyber Security Academy · บทเรียน

การแฮชรหัสผ่าน: 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

การเลือกอัลกอริทึมที่เหมาะสม

ลำดับความเหมาะสมสำหรับแอปพลิเคชันใหม่:

  1. Argon2id — ต้านทานการถอดรหัสด้วย GPU/ASIC ได้ดีที่สุด
  2. bcrypt — รองรับอย่างแพร่หลายและมีประวัติการใช้งานที่พิสูจน์แล้ว
  3. PBKDF2 — ได้รับการรับรองจาก NIST และจำเป็นในบริบทการปฏิบัติตามข้อกำหนดบางประเภท

ห้ามใช้: MD5, SHA-1 หรือ SHA-256 ที่ไม่เติมซอลต์กับรหัสผ่าน

กระบวนการตรวจสอบยืนยัน

เมื่อผู้ใช้เข้าสู่ระบบ:

  1. ดึงค่าแฮชและค่าเกลือที่จัดเก็บไว้สำหรับผู้ใช้ออกมา
  2. แฮชรหัสผ่านที่ส่งมาด้วยค่าเกลือและอัลกอริทึมเดียวกัน
  3. เปรียบเทียบค่าแฮชที่ได้กับค่าแฮชที่จัดเก็บไว้ (การเปรียบเทียบที่ใช้เวลาเท่ากันเสมอ)
  4. ห้ามถอดรหัส — เปรียบเทียบเท่านั้น

ตรวจสอบอย่างรวดเร็ว: การแฮชรหัสผ่าน

อัลกอริทึมการแฮชรหัสผ่านใดถือเป็นแนวทางปฏิบัติที่ดีที่สุดในปัจจุบัน และเป็นผู้ชนะการแข่งขันการแฮชรหัสผ่าน

สรุปบทเรียน

ต้องจัดเก็บรหัสผ่านเป็นค่าแฮช ไม่ใช่ข้อความธรรมดา อัลกอริทึมที่ทำงานเร็วอย่าง 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ความแข็งแรงของรหัสผ่านและนโยบาย
  2. การแฮชรหัสผ่าน: bcrypt, Argon2, PBKDF2
  3. การยืนยันตัวตนหลายปัจจัย
  4. การยัดข้อมูลรับรองและการทดลองรหัสผ่านเป็นชุด
← กลับไปที่ Cyber Security Academy