Cryptology Academy · บทเรียน

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

เปรียบเทียบ PBKDF2 กับ bcrypt/Argon2 และเลือกตัวเลือกที่ดีที่สุดสำหรับแอปของคุณ

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

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

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

ในบทเรียนระดับเริ่มต้นบทสุดท้ายนี้ เราจะศึกษา PBKDF2 เปรียบเทียบกับ bcrypt และ Argon2 และสร้างกรอบการตัดสินใจเพื่อเลือกอัลกอริทึมการแฮชรหัสผ่านที่เหมาะสม

ภาพรวมของ PBKDF2

PBKDF2 (ฟังก์ชันสร้างกุญแจจากรหัสผ่าน 2) เผยแพร่ใน RFC 2898 (2000) โดยใช้ฟังก์ชันสุ่มเทียม (โดยทั่วไปคือ HMAC-SHA256) กับรหัสผ่านและค่าเกลือซ้ำหลายรอบ

สูตรของ PBKDF2

PBKDF2(PRF, password, salt, iterations, keylen) ตัวอย่าง: key = PBKDF2-HMAC-SHA256(password, salt, 600000, 32) ณ ปี 2023 OWASP แนะนำให้ใช้ 600,000 รอบร่วมกับ SHA-256

PBKDF2 ใน Python

import hashlib, os salt = os.urandom(16) key = hashlib.pbkdf2_hmac( 'sha256', password.encode(), salt, 600000, dklen=32 ) # Or using cryptography library: from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

จุดแข็งของ PBKDF2

สอดคล้องตาม FIPS 140-2/3 มีอยู่ในไลบรารีมาตรฐานของ Python, Java และ .NET มีการใช้งานอย่างแพร่หลายในสภาพแวดล้อมระดับองค์กรและหน่วยงานรัฐ และนำไปใช้อย่างถูกต้องได้ง่าย

จุดอ่อนของ PBKDF2

ไม่ได้ออกแบบให้ต้องใช้หน่วยความจำสูง จึงเหมาะต่อการโจมตีด้วย GPU ซึ่งคำนวณการทำซ้ำของ SHA-256 ได้หลายพันล้านรอบต่อวินาที แม้ใช้ 600K รอบ GPU ก็ยังทำได้ประมาณ 1M รหัสผ่านต่อวินาที bcrypt และโดยเฉพาะ Argon2 นั้นถอดรหัสแบบลองทุกค่าที่เป็นไปได้ได้ยากกว่ามาก

ตารางเปรียบเทียบอัลกอริทึม

อัลกอริทึม | ใช้หน่วยความจำสูง | FIPS | ความเร็ว (GPU) | คำแนะนำ bcrypt | ไม่ใช่ | ไม่ใช่ | 50K/s | ยอมรับได้ PBKDF2 | ไม่ใช่ | ใช่ | 1M/s | สภาพแวดล้อมที่อยู่ภายใต้ข้อกำกับ Argon2id | ใช่ | ไม่ใช่ | 100/s | ตัวเลือกที่ดีที่สุด

กรอบการตัดสินใจ

ใช้ Argon2id: สำหรับแอปพลิเคชันใหม่ที่ไม่มีข้อจำกัดด้านการปฏิบัติตามข้อกำกับ ใช้ bcrypt: เมื่อไม่มี Argon2 ให้ใช้ หรือในระบบเดิม ใช้ PBKDF2-SHA256: เมื่อต้องปฏิบัติตามข้อกำกับของ FIPS หรือหน่วยงานรัฐ ห้ามใช้โดยเด็ดขาด: MD5, SHA-1, SHA-256 ที่ไม่ทำซ้ำหลายรอบ และสิ่งใดก็ตามที่ไม่มีค่าเกลือ

หมายเหตุเกี่ยวกับการปฏิบัติตามข้อกำกับ

PCI-DSS ไม่ได้ระบุอัลกอริทึมที่ต้องใช้ แต่กำหนดให้ใช้การแฮชที่มีความแข็งแกร่ง bcrypt และ Argon2 จัดว่าเข้าข่าย NIST SP 800-132 อนุมัติให้ใช้ PBKDF2 ระบบ FedRAMP ที่มีข้อกำหนดเข้มงวดบางระบบบังคับใช้ PBKDF2 ร่วมกับ PRF ที่ FIPS อนุมัติ

พัฒนาการของจำนวนรอบ

จำนวนรอบของ OWASP PBKDF2-SHA256: 2010: 1000, 2016: 100000, 2023: 600000 ฮาร์ดแวร์มีความเร็วสูงขึ้น — ควรทบทวนและเพิ่มค่าทุก 2 ปี ปัจจัยต้นทุนของ bcrypt: 2010: 10, 2023: 12, เป้าหมายปี 2025: 13

ลำดับการรีเซ็ตรหัสผ่านอย่างปลอดภัย

1. สร้างโทเค็นแบบสุ่มเชิงเข้ารหัส: secrets.token_urlsafe(32) 2. แฮชด้วย SHA-256 (ไม่ใช่ bcrypt — ใช้สำหรับจัดเก็บเท่านั้น) 3. จัดเก็บแฮช แล้วส่งโทเค็นทางอีเมล 4. เมื่อรีเซ็ต: แฮชโทเค็นที่ส่งมา เปรียบเทียบ แล้วทำให้หมดอายุทันทีหลังใช้งาน

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

ในสภาพแวดล้อมใดจึงควรเลือก PBKDF2 แทน Argon2id แม้จะต้านทานการโจมตีด้วย GPU ได้น้อยกว่า

สรุปทบทวน

คุณเรียนจบเส้นทางวิทยาการรหัสลับระดับเริ่มต้นแล้ว คุณเข้าใจแฮช การเข้ารหัสแบบสมมาตรและอสมมาตร ลายเซ็น PKI และการแฮชรหัสผ่าน บทถัดไป: หัวข้อระดับกลาง — โหมดของรหัสลับแบบบล็อก รหัสลับแบบสตรีม และการแลกเปลี่ยนกุญแจ
เริ่มต้นได้ฟรี

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

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

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

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

บทเรียน “PBKDF2 และการเลือกอัลกอริทึมที่เหมาะสม” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “PBKDF2 และการเลือกอัลกอริทึมที่เหมาะสม”

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

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

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

บทเรียน “PBKDF2 และการเลือกอัลกอริทึมที่เหมาะสม” ใช้เวลานานแค่ไหน

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

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

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

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

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