บทความนี้ได้สรุปคำแนะนำและแนวทางปฏิบัติด้าน Password จากเอกสาร NIST Special Publication 800-63B Rev3 ของ สถาบันมาตรฐานและเทคโนโลยีแห่งชาติสหรัฐฯ หรือ NIST ได้แก่ การสร้างรหัสผ่านใหม่ การพิสูจน์ตัวตนด้วยรหัสผ่าน และการจัดเก็บรหัสผ่าน รวมไปถึงสาเหตุว่าทำไม เพื่อให้องค์กรเข้าใจและนำไปประยุกต์ใช้กับการออกนโยบายด้านรหัสผ่านของตนเองได้ ดังนี้
คำแนะนำในการสร้างรหัสผ่านใหม่
การรักษาความมั่นคงปลอดภัยสำหรับรหัสผ่านเริ่มต้นด้วยการสร้างรหัสผ่านให้แข็งแกร่ง นี่ไม่ใช่แค่ความรับผิดชอบของผู้ใช้ฝ่ายเดียว แต่องค์กรจำเป็นต้องกำหนดนโยบายรหัสผ่านที่แข็งแกร่งเพียงพอ แล้วนำไปบังคับใช้กับผู้ใช้ด้วย โดยคำแนะนำในการสร้างรหัสผ่านใหม่มี 2 ข้อ คือ
1. ความยาวสำคัญกว่าความยาก
แนวคิดสมัยก่อนเชื่อว่ายิ่งรหัสผ่านซับซ้อนเท่าไหร่ ยิ่งแข็งแกร่งมากเท่านั้น แต่ที่จริงแล้ว ปัจจัยสำคัญของความแข็งแกร่งของรหัสผ่านขึ้นกับความยาวมากกว่า เนื่องจากยิ่งรหัสผ่านยาว ยิ่งเดารหัสผ่านได้ยาก นอกจากนี้ จากการวิจัยเพิ่มเติมพบว่า การบังคับให้รหัสผ่านใหม่มีความยากกลับยิ่งทำให้ความมั่นคงปลอดภัยลดลง เนื่องจากผู้ใช้หลายคนมักเพิ่มความยากให้รหัสผ่านตัวเองแบบง่ายๆ เช่น เพิ่ม “1” ไว้ด้านหน้าหรือ “!” ไว้ตอนท้าย แม้ในทางทฤษฎีจะทำให้รหัสผ่านแข็งแกร่งยิ่งขึ้น แต่เมื่อเหล่าแฮ็กเกอร์ทราบรูปแบบตรงนี้แล้ว กลับเป็นการช่วยลดเวลาในการเดารหัสผ่านให้แฮ็กเกอร์แทน ที่น่าเป็นห่วงยิ่งกว่า คือ ยิ่งรหัสผ่านซับซ้อนเท่าไหร่ ยิ่งทำให้ผู้ใช้ใช้รหัสผ่านเดิมซ้ำๆ กับหลายๆ บัญชี ซึ่งเพิ่มความเสี่ยงในการถูกโจมตีแบบ Credential Stuffing Attacks มากยิ่งขึ้น
ด้วยเหตุนี้ NIST จึงไม่บังคับเรื่องความยากของรหัสผ่าน แต่กลับบังคับเรื่องความยาวที่ต้องมีขั้นต่ำ 8 ตัวอักษรแทน
2. ตัดการรีเซ็ตรหัสผ่านใหม่ทุก 3 เดือนหรือ 6 เดือนทิ้งไป
หลายองค์กรยังคงยึดติดกับการบังคับให้ผู้ใช้รีเซ็ตรหัสผ่านบ่อยๆ เช่น ทุก 3 เดือนหรือทุก 6 เดือน โดยเข้าใจว่าเป็นการป้องกันเผื่อกรณีที่รหัสผ่านหลุดออกไป จะได้ไม่สามารถล็อกอินเข้ามาได้อีก อย่างไรก็ตาม การเปลี่ยนรหัสผ่านบ่อยๆ กลับเป็นการทำให้ความมั่นคงปลอดภัยแย่ลง เนื่องจาก ในชีวิตจริง การจดจำรหัสผ่านดีๆ สักอันไปทั้งปีถือเป็นเรื่องยากอยู่แล้ว เมื่อต้องมีหลายๆ รหัสผ่านที่จำเป็นต้องจำ ผู้ใช้จึงมักเปลี่ยนรหัสผ่านเป็นรูปแบบที่คาดเดาได้ไม่ยาก เช่น เพิ่มตัวอักษรอีก 1 ตัวต่อท้ายรหัสผ่านล่าสุดที่ใช้ หรือแทนที่ตัวอักษรบางตัวด้วยสระ เช่น “$” แทน “S” เป็นต้น เมื่อแฮ็กเกอร์รู้รหัสผ่านก่อนหน้านี้ จึงไม่ใช่เรื่องยากอะไรที่จะเดารหัสผ่านใหม่ NIST จึงแนะนำให้ตัดการรีเซ็ตรหัสผ่านใหม่เมื่อเวลาผ่านไปออกจากนโยบายขององค์กร
คำแนะนำในการพิสูจน์ตัวตนด้วยรหัสผ่าน
วิธีที่องค์กรใช้พิสูจน์ตัวตนด้วยรหัสผ่านเมื่อผู้ใช้ทำการล็อกอินส่งผลกระทบอย่างใหญ่หลวงกับความมั่นคงปลอดภัยของรหัสผ่าน ซึ่ง NIST ได้ให้คำแนะนำในส่วนนี้ดังนี้
1. เปิดใช้งาน “แสดงรหัสผ่านขณะพิมพ์”
การพิมพ์รหัสผ่านผิดถือเป็นเรื่องปกติที่เราพบเจอ เนื่องจากสิ่งที่เราพิมพ์จะแสดงผลเป็นจุดดำหรือเครื่องหมายดอกจันทร์ ซึ่งเป็นเรื่องยากที่จะระบุได้ว่าพิมพ์ผิดตรงไหน นี่เป็นหนึ่งในเหตุผลที่ทำให้ผู้ใช้หลายรายเลือกใช้รหัสผ่านสั้นๆ เพื่อที่จะหลีกเลี่ยงปัญหานี้ โดยเฉพาะอย่างยิ่งกับเว็บไซต์ที่ยอมให้ใส่รหัสผ่านได้ไม่กี่ครั้ง ดังนั้น ควรเปิดให้มีฟีเจอร์ “แสดงรหัสผ่านขณะพิมพ์” เพื่อเพิ่มโอกาสให้ผู้ใช้พิมพ์รหัสผ่านยาวๆ ได้ถูกต้องในทีเดียว
2. เปิดให้ “วาง” รหัสผ่านในช่องที่ต้องกรอกได้
ยิ่งการใส่รหัสผ่านทำได้ง่ายเท่าไหร่ ผู้ใช้ยิ่งมีแนวโน้มที่จะตั้งรหัสผ่านยาวๆ และมีความยากมากยิ่งขึ้น การเปิดให้ “คัดลอก” และ “วาง” รหัสผ่านในช่องที่ต้องกรอกได้จึงเป็นผลดีมากกว่า โดยเฉพาะในยุคดิจิทัลที่ผู้ใช้จำเป็นต้องมีรหัสผ่านเป็นจำนวนมากและเริ่มหันไปใช้เครื่องมือจำพวก Password Manager มากขึ้น
3. ใช้การป้องกันรหัสผ่านรั่วไหล
คำแนะนำด้านรหัสผ่านล่าสุดของ NIST ระบุว่า ต้องมีการตรวจสอบรหัสผ่านใหม่กับรายการแบล็กลิสต์ เช่น คำในพจนานุกรม, คำที่ใช้ตัวอักษรเรียงกัน, คำที่ใช้เป็นชื่อต่างๆ , ข้อความที่มักใช้บ่อย หรือรหัสผ่านที่เคยหลุดออกมาสู่สาธารณะ การใช้เครื่องมือสำหรับตรวจสอบรหัสผ่านที่เคยรั่วไหลก็เป็นทางเลือกที่ช่วยให้การตั้งรหัสผ่านใหม่มีความมั่นคงปลอดภัยมากยิ่งขึ้น
4. ห้ามใช้ “Password Hints”
บางองค์กรพยายามช่วยให้ผู้ใช้จำรหัสผ่านยากๆ ได้ผ่านทางการใช้ “Password Hints” หรือให้ตอบคำถามส่วนบุคคลบางอย่าง อย่างไรก็ตาม การมีอยู่ของโซเชียลมีเดียในปัจจุบันทำให้แฮ็กเกอร์สามารถใช้ Social Engineering เพื่อหาคำตอบของข้อมูลส่วนบุคคลเหล่านั้นได้ไม่ยาก NIST จึงไม่แนะนำให้มีฟีเจอร์ในในการพิสูจน์ตัวตน
5. จำกัดจำนวนครั้งในการใส่รหัสผ่าน
แฮ็กเกอร์หลายรายใช้วิธีลองเดารหัสผ่านไปเรื่อยๆ จนกว่าจะเดาถูก (Brute-force Attack) วิธีป้องกันแบบง่ายๆ คือ การจำกัดจำนวนครั้งในการพยายามล็อกอิน และล็อกบัญชีไม่ให้ล็อกอินอีกเมื่อใส่รหัสผ่านผิดครบจำนวนครั้งที่กำหนด
6. ใช้การพิสูจน์ตัวตนแบบ 2FA
2-Factor Authentication (2FA) จะใช้การยืนยันตัวตน 2 จาก 3 วิธีดังต่อไปนี้เพื่อทำการพิสูจน์ตัวตน
สิ่งที่คุณรู้ เช่น รหัสผ่าน
สิ่งที่คุณมี เช่น มือถือ
สิ่งที่คุณเป็น เช่น ลายนิ้วมือ
NIST แนะนำให้ใช้การพิสูจน์ตัวตนแบบ 2FA เพื่อปกป้องข้อมูลส่วนบุคคลที่สามารถเข้าถึงได้แบบออนไลน์
คำแนะนำในการจัดเก็บรหัสผ่าน
สำหรับการจัดเก็บรหัสผ่านให้มั่นคงปลอดภัย NIST มีคำแนะนำดังนี้
1. ปกป้องฐานข้อมูลให้มั่นคงปลอดภัย
รหัสผ่านของผู้ใช้มักถูกเก็บในฐานข้อมูล วิธีการที่ง่ายที่สุดในการปกป้องฐานข้อมูลนี้คือการจำกัดสิทธิ์ให้เฉพาะผู้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงได้ รวมไปถึงทำให้มั่นใจว่าฐานข้อมูลสามารถป้องกันการโจมตีที่พบทั่วไปอย่าง SQL Injection หรือ Buffer Overflow ได้
2. แฮชรหัสผ่านของผู้ใช้
การแฮชรหัสผ่านก่อนจัดเก็บลงในฐานข้อมูลเป็นหนึ่งในกลไกสำคัญสามารถป้องกันรหัสผ่านรั่วไหลสู่สาธารณะได้ แม้แฮ็กเกอร์จะสามารถเจาะเข้ามาขโมยรหัสผ่านที่แฮชในฐานข้อมูลได้ แต่ก็ไม่สามารถถอดรหัสกลับไปเป็นรหัสผ่านปกติที่นำไปใช้ประโยชน์ต่อได้
NIST แนะนำให้ Salt รหัสผ่านเป็น 32 bits และแฮชโดยใช้ 1-way Key Derivation Function เช่น PBKDF2 หรือ Balloon รวมไปถึงมีจำนวน Iteration มากที่สุดที่เป็นไปได้ (อย่างต่ำ 10,000 ครั้ง) โดยต้องไม่ส่งผลกระทบกับประสิทธิภาพของเซิร์ฟเวอร์
ผู้ที่สนใจสามารถศึกษา Password Guideline จาก NIST ได้ที่เอกสาร NIST Special Publication 800-63B Rev3
ที่มา: https://auth0.com/blog/dont-pass-on-the-new-nist-password-guidelines/
———————————————————————————————————————————————————————
ที่มา : TechTalkThai / วันที่เผยแพร่ 13 เม.ย.2564
Link : https://www.techtalkthai.com/latest-password-guideline-and-practices-from-nist/