0Pricing
Cryptology Academy · บทเรียน

เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้

ทำความเข้าใจตารางเรนโบว์ ความเร็วของการเดารหัสผ่านแบบไล่ครบ และค่าเกลือ

เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

การจัดเก็บรหัสผ่านอย่างปลอดภัยเป็นหนึ่งในหัวข้อด้านความปลอดภัยที่มักเข้าใจผิดมากที่สุด ในบทเรียนนี้ เราจะทำความเข้าใจว่าเหตุใดแฮชที่ทำงานเร็วอย่าง SHA-256 จึงไม่เหมาะสมกับรหัสผ่านอย่างร้ายแรง

จะเกิดอะไรขึ้นเมื่อฐานข้อมูลรั่วไหล

การรั่วไหลของฐานข้อมูลเกิดขึ้นอยู่เสมอ ในปี 2024 มีการรั่วไหลของรหัสผ่าน 10 BILLION รายการจาก RockYou2024 หากรหัสผ่านของผู้ใช้ถูกจัดเก็บในรูปแบบที่กู้คืนได้ ผู้โจมตีก็จะกู้คืนรหัสผ่านเหล่านั้นได้

การจัดเก็บแบบ SHA-256 อย่างง่าย

รูปแบบที่ไม่ดี: hashed = sha256(password) store(username, hashed) ปัญหา: (1) sha256 ทำงานเร็วมาก (2) รหัสผ่านเดียวกัน → ได้แฮชเดียวกัน (ไม่มีค่าเสริมแบบสุ่ม) (3) มีตารางสายรุ้งสำหรับรหัสผ่านที่ใช้กันทั่วไป

การโจมตีด้วยตารางสายรุ้ง

ตารางสายรุ้งคือการจับคู่แฮช→รหัสผ่านที่คำนวณไว้ล่วงหน้าสำหรับรหัสผ่านทั่วไปหลายล้านรายการ SHA-256('password') จะให้แฮชเดิมเสมอ การค้นหาในตารางจึงถอดรหัสรหัสผ่านส่วนใหญ่ได้ทันที

บทบาทของค่าเสริมแบบสุ่ม

ค่าเสริมแบบสุ่ม = ไบต์สุ่มที่เติมหน้ารหัสผ่านก่อนการแฮช hash = sha256(salt + password) ผู้ใช้แต่ละรายจะได้รับค่าเสริมแบบสุ่มที่ไม่ซ้ำกัน ตารางสายรุ้งจึงใช้การไม่ได้ ผู้โจมตีต้องลองค่าที่เป็นไปได้กับผู้ใช้แต่ละรายแยกกัน

แต่ค่าเสริมแบบสุ่มเพียงอย่างเดียวยังไม่พอ

GPU สมัยใหม่คำนวณแฮช SHA-256 ได้ 10 BILLION รายการต่อวินาที แม้จะใช้ค่าเสริมแบบสุ่มที่ไม่ซ้ำกัน ผู้โจมตีที่มีแฮชรั่วไหลก็ยังสามารถลองรหัสผ่าน 8 อักขระจนครบได้ภายในไม่กี่นาที

ปัญหาด้านความเร็ว

SHA-256 ถูกออกแบบมาให้ทำงานเร็ว เพื่อใช้ตรวจสอบความถูกต้องของไฟล์, TLS และอื่น ๆ ความเร็วเป็นอุปสรรคต่อการแฮชรหัสผ่าน เราต้องการขั้นตอนวิธีที่จงใจทำงานช้าและต้านทานการลองค่าที่เป็นไปได้จนครบ

การยืดคีย์

การยืดคีย์คือการทำซ้ำฟังก์ชันแฮชหลายพันครั้ง: for i in range(100000): h = sha256(h) วิธีนี้ทำให้ทั้งผู้โจมตีและผู้ป้องกันทำงานช้าลง แต่ข้อได้เปรียบด้านฮาร์ดแวร์ยังคงอยู่กับผู้โจมตี

ฟังก์ชันที่ใช้หน่วยความจำสูง

ตัวแฮชรหัสผ่านสมัยใหม่ต้องใช้ RAM จำนวนมาก ไม่ใช่เพียงรอบการทำงานของ CPU เท่านั้น GPU มี RAM ต่อแกนจำกัดเมื่อเทียบกับ CPU การใช้หน่วยความจำสูงของ Argon2 ช่วยลดข้อได้เปรียบของ GPU/ASIC

ข้อผิดพลาดที่พบบ่อย

สิ่งที่ไม่ควรทำ: - sha256(password) - sha256(salt + password) โดยไม่ทำซ้ำ - md5(password) (หรือ MD5 ใด ๆ) - การเข้ารหัสรหัสผ่าน (สามารถถอดรหัสได้) - sha256(sha256(password)) (ยังคงทำงานเร็ว)

ควรใช้อะไรแทน

ควรใช้: bcrypt (ใช้งานแพร่หลายที่สุด), Argon2id (แนะนำโดย OWASP และใช้หน่วยความจำสูง), PBKDF2-SHA256 (สอดคล้องกับ FIPS และยอมรับได้) ทั้งสามขั้นตอนวิธีจงใจทำงานช้าและมีค่าเสริมแบบสุ่มมาให้โดยการออกแบบ

ตรวจสอบความเข้าใจอย่างรวดเร็ว

เหตุใด SHA-256 จึงไม่เหมาะสำหรับการแฮชรหัสผ่าน แม้จะใช้ค่าเสริมแบบสุ่ม

สรุป

SHA-256 ไม่เหมาะกับรหัสผ่าน ต่อไปเราจะศึกษา bcrypt ซึ่งเป็นขั้นตอนวิธีที่จงใจทำให้การแฮชช้าและต้านทานฮาร์ดแวร์

คำถามที่พบบ่อย

บทเรียน “เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้”

ทำความเข้าใจตารางเรนโบว์ ความเร็วของการเดารหัสผ่านแบบไล่ครบ และค่าเกลือ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. เหตุใด SHA-256 แบบธรรมดาจึงใช้กับรหัสผ่านไม่ได้
  2. bcrypt: อัลกอริทึมและปัจจัยต้นทุน
  3. Argon2: การแฮชรหัสผ่านที่ใช้หน่วยความจำสูง
  4. PBKDF2 และการเลือกอัลกอริทึมที่เหมาะสม
← กลับไปที่ Cryptology Academy