Cryptology Academy · บทเรียน

Argon2: การแฮชรหัสผ่านที่ใช้หน่วยความจำสูง

สำรวจ Argon2i, Argon2d, Argon2id และเหตุผลที่การใช้หน่วยความจำสูงมีความสำคัญ

บทเรียน 3 จาก 413 ขั้นตอน

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

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

Argon2 ชนะการแข่งขันการแฮชรหัสผ่าน (PHC) ในปี 2015 และเป็นคำแนะนำอันดับหนึ่งของ OWASP การออกแบบที่ใช้หน่วยความจำสูงช่วยป้องกันการโจมตีด้วย GPU และ ASIC ซึ่ง bcrypt ไม่สามารถป้องกันได้

เหตุใดการใช้หน่วยความจำสูงจึงสำคัญ

GPU มีแกนประมวลผลหลายพันแกน แต่มี RAM ต่อแกนจำกัด (ประมาณ 1KB) Argon2 ต้องใช้ RAM อย่างน้อย 64MB ต่อแฮช ผู้โจมตีที่พยายามคำนวณแฮชพร้อมกัน 1,000 รายการจะต้องใช้ RAM 64GB ซึ่งมีราคาแพงและมีปริมาณจำกัด

รูปแบบต่าง ๆ ของ Argon2

Argon2d: การเข้าถึงข้อมูลขึ้นอยู่กับข้อมูล — เร็วที่สุด แต่เสี่ยงต่อการโจมตีแบบช่องทางข้างเคียงที่อาศัยเวลา Argon2i: การเข้าถึงข้อมูลไม่ขึ้นอยู่กับข้อมูล — ปลอดภัยจากการโจมตีที่อาศัยเวลา Argon2id: แบบผสม — แนะนำสำหรับแอปพลิเคชันส่วนใหญ่

พารามิเตอร์ของ Argon2

m: หน่วยความจำเป็นกิโลไบต์ (OWASP: ขั้นต่ำ 19456 KB = 19 MB, แนะนำ 64 MB) t: ต้นทุนเวลา / จำนวนรอบ (แนะนำ 3) p: การประมวลผลแบบขนาน / เธรด (แนะนำ 4) ค่าเกลือ: สุ่ม 16 ไบต์ ผลลัพธ์: 32 ไบต์

Argon2id ใน Python

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

รูปแบบแฮชของ Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... พารามิเตอร์ทั้งหมดจัดเก็บอยู่ในสตริงแฮช การตรวจสอบจึงทำได้ในตัวเอง — ไม่จำเป็นต้องจัดเก็บพารามิเตอร์แยกต่างหาก

คำแนะนำของ OWASP สำหรับ Argon2id ปี 2024

ขั้นต่ำ: m=19456 KB (19 MB), t=2, p=1 แนะนำ: m=65536 KB (64 MB), t=3, p=4 ความปลอดภัยสูง: m=262144 KB (256 MB), t=4, p=8 ปรับค่าตามหน่วยความจำที่เซิร์ฟเวอร์ของคุณมีอยู่

Argon2 เทียบกับ bcrypt และ PBKDF2

Argon2id: ใช้หน่วยความจำสูง ต้านทาน ASIC และแนะนำสำหรับระบบใหม่ bcrypt: รองรับอย่างแพร่หลาย ไม่ได้ออกแบบให้ต้องใช้หน่วยความจำสูง และเหมาะสำหรับการรองรับระบบเดิม PBKDF2: สอดคล้องตาม FIPS ไม่ได้ออกแบบให้ต้องใช้หน่วยความจำสูง และควรใช้ในสภาพแวดล้อมที่อยู่ภายใต้ข้อกำกับ

กลยุทธ์การอัปเกรดแฮช

เมื่ออัปเกรดจาก bcrypt เป็น Argon2: 1. เพิ่มคอลัมน์ใหม่สำหรับแฮชรูปแบบใหม่ 2. เมื่อล็อกอินครั้งถัดไป: ตรวจสอบด้วย bcrypt เดิม แฮชใหม่ด้วย Argon2 แล้วจัดเก็บแฮชใหม่ 3. หลังจากผ่านไป X เดือน ให้บังคับผู้ใช้ที่ยังไม่ได้อัปเกรดเปลี่ยนรหัสผ่าน

Argon2 ในเฟรมเวิร์กจริง

Django: set PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: use argon2 package (not argon2-ffi) PHP 7.2+: built-in PASSWORD_ARGON2ID constant in password_hash()

ค่าลับเสริมฝั่งเซิร์ฟเวอร์

ค่าลับเสริมคือค่าลับฝั่งเซิร์ฟเวอร์ที่นำมาผสมกับรหัสผ่านก่อนแฮช: hash(password + pepper) แม้ว่าฐานข้อมูลจะรั่วไหล ผู้โจมตีก็ยังต้องมีค่าลับเสริมด้วย การเปลี่ยนค่าลับเสริมจะทำให้แฮชทั้งหมดใช้ไม่ได้

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

เหตุใด Argon2 จึงต้านทานการโจมตีด้วย GPU ได้ดีกว่า bcrypt

สรุปทบทวน

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

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

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

คอร์ส
67
บทเรียน
261

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

บทเรียน “Argon2: การแฮชรหัสผ่านที่ใช้หน่วยความจำสูง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “Argon2: การแฮชรหัสผ่านที่ใช้หน่วยความจำสูง”

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

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

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

บทเรียน “Argon2: การแฮชรหัสผ่านที่ใช้หน่วยความจำสูง” ใช้เวลานานแค่ไหน

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

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

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

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

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