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