พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคล พ.ศ. 2562 (PDPA) ของไทยกำหนดให้ผู้ควบคุมข้อมูลจัดให้มี "มาตรการรักษาความมั่นคงปลอดภัยที่เหมาะสม" เพื่อปกป้องข้อมูลส่วนบุคคล รวมถึงรหัสผ่าน โดยไม่ได้ระบุอัลกอริทึมเฉพาะเจาะจง ในทางปฏิบัติ ฟังก์ชันสร้างคีย์แบบ key derivation อย่าง PBKDF2 เป็นวิธีหนึ่งที่เป็นรูปธรรมซึ่งธนาคารและฟินเทคไทยใช้เพื่อให้สอดคล้องกับข้อกำหนดกว้าง ๆ นี้
หลักการของ key stretching
แทนที่จะแฮชรหัสผ่านครั้งเดียว PBKDF2 ใช้ฟังก์ชันแฮชพื้นฐาน (มักเป็น HMAC-SHA256) ซ้ำหลายพันครั้งติดต่อกัน โดยใช้ผลลัพธ์ของแต่ละรอบเป็นข้อมูลนำเข้าของรอบถัดไป สิ่งนี้ทำให้การคำนวณแฮชหนึ่งครั้งช้าลงโดยตั้งใจ ทำให้การโจมตีแบบกำลังดุร้ายจำนวนมากมีค่าใช้จ่ายสูงขึ้นมากสำหรับผู้โจมตี
PBKDF2 ใน Wi-Fi: WPA2
หนึ่งในการใช้งาน PBKDF2 ที่แพร่หลายที่สุดในโลกคือการสร้างคีย์เข้ารหัส Wi-Fi จากรหัสผ่านเครือข่ายในมาตรฐาน WPA2-PSK: รหัสผ่านเครือข่ายถูกประมวลผลผ่าน PBKDF2-HMAC-SHA1 ด้วย 4096 รอบการวนซ้ำ โดยใช้ชื่อเครือข่าย (SSID) เป็น salt สร้างคีย์ขนาด 256 บิต นี่คือเหตุผลที่รหัสผ่าน Wi-Fi สั้น ๆ เสี่ยงต่อการโจมตีแบบกำลังดุร้ายแบบออฟไลน์มากขนาดนี้ หลังจากดักจับ "handshake" ได้เพียงครั้งเดียว
เหตุใดเครื่องมือนี้จึงต้องการ HTTPS
เครื่องมือนี้คำนวณ PBKDF2 โดยใช้ Web Crypto API ที่มีอยู่ในตัวเบราว์เซอร์ แทนที่จะเขียนโค้ด JavaScript เอง เบราว์เซอร์จะเปิดให้ใช้ crypto.subtle เฉพาะใน "บริบทที่ปลอดภัย" เท่านั้น — HTTPS หรือ localhost ระหว่างการพัฒนา — ดังนั้นหากไม่มีการเชื่อมต่อที่เข้ารหัส เครื่องมือนี้และเครื่องมือเข้ารหัสอื่น ๆ ทั้งหมดในเว็บไซต์นี้จะไม่ทำงานเลย ไม่ว่าอุปกรณ์จะมีประสิทธิภาพสูงเพียงใดก็ตาม
ทำไมต้องใช้สิ่งนี้
- สร้างคีย์เข้ารหัสจากรหัสผ่านสำหรับการเข้ารหัส (เช่น ใน WPA2/WPA3 สำหรับ Wi-Fi)
- รักษาความเข้ากันได้กับระบบเก่าที่ใช้ PBKDF2 ในการจัดเก็บรหัสผ่าน
- เข้าใจว่าเหตุใดจำนวนรอบการวนซ้ำที่แนะนำจึงเพิ่มขึ้นเรื่อย ๆ ในมาตรฐานเวอร์ชันใหม่
การเลือกฟังก์ชันแฮชพื้นฐานมีความสำคัญ
การใช้งาน PBKDF2 แบบเก่ามักใช้ HMAC-SHA1 เป็นค่าเริ่มต้น — ตัว SHA-1 เองถือว่าอ่อนแอเชิงรหัสลับสำหรับการแฮชโดยตรง แต่ในโครงสร้าง HMAC ความอ่อนแอนี้ไม่ใช่ช่องโหว่ร้ายแรง อย่างไรก็ตาม คำแนะนำสมัยใหม่ระบุชัดเจนให้ใช้ HMAC-SHA256 หรือ HMAC-SHA512 — ไม่ใช่เพราะภัยคุกคามโดยตรงจาก SHA-1 แต่เพราะผลลัพธ์ที่ยาวกว่าและฟังก์ชันที่ทันสมัยกว่าให้ระยะขอบความปลอดภัยที่มากกว่าโดยแทบไม่เสียความเร็ว