วันพฤหัสบดีที่ 15 เมษายน พ.ศ. 2564

สรุปคำแนะนำและแนวทางปฏิบัติด้าน Password ล่าสุดจาก NIST

บทความนี้ได้สรุปคำแนะนำและแนวทางปฏิบัติด้าน 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

ที่มา: TechTalk

ไม่มีความคิดเห็น:

แสดงความคิดเห็น