- NIST เตรียม "ห้าม" ทั้ง "ข้อกำหนดให้รหัสผ่านต้องประกอบด้วยรูปแบบอักขระที่หลากหลาย" และ "ข้อกำหนดให้เปลี่ยนรหัสผ่านเป็นระยะ" โดยมองว่าสิ่งเหล่านี้เป็นจุดอ่อนด้านความมั่นคงปลอดภัยไซเบอร์
ข้อกำหนดรหัสผ่าน
- ผู้ตรวจสอบความถูกต้องและ CSP ควรกำหนดให้รหัสผ่านมีความยาวอย่างน้อย 8 อักขระ และแนะนำให้กำหนดขั้นต่ำ 15 อักขระ SHALL
- ผู้ตรวจสอบความถูกต้องและ CSP ควรอนุญาตความยาวรหัสผ่านสูงสุดอย่างน้อย 64 อักขระ SHOULD
- ผู้ตรวจสอบความถูกต้องและ CSP ควรอนุญาตอักขระที่พิมพ์ได้ทั้งหมดใน ASCII และอักขระเว้นวรรคในรหัสผ่าน SHOULD
- ผู้ตรวจสอบความถูกต้องและ CSP ควรอนุญาตอักขระ Unicode ในรหัสผ่าน เมื่อตรวจประเมินความยาวรหัสผ่าน ต้องนับแต่ละ Unicode code point เป็นอักขระหนึ่งตัว SHOULD
- ผู้ตรวจสอบความถูกต้องและ CSP ต้องไม่กำหนดกฎองค์ประกอบอื่น ๆ กับรหัสผ่าน (เช่น บังคับให้ผสมประเภทอักขระหลายแบบ) SHALL NOT
- ผู้ตรวจสอบความถูกต้องและ CSP ต้องไม่บังคับให้ผู้ใช้เปลี่ยนรหัสผ่านเป็นระยะ SHALL NOT อย่างไรก็ตาม หากมีหลักฐานว่าตัวรับรองความถูกเจาะระบบ ผู้ตรวจสอบต้องบังคับให้เปลี่ยน SHALL
- ผู้ตรวจสอบความถูกต้องและ CSP ต้องไม่อนุญาตให้ผู้สมัครสมาชิกเก็บ hint ที่ผู้แอบอ้างที่ยังไม่ได้รับการยืนยันตัวตนสามารถเข้าถึงได้ SHALL NOT
- ผู้ตรวจสอบความถูกต้องและ CSP ต้องไม่ prompt ให้ผู้สมัครสมาชิกใช้การยืนยันตัวตนแบบอิงความรู้ (KBA) หรือคำถามความปลอดภัยตอนเลือกรหัสผ่าน SHALL NOT
- ผู้ตรวจสอบต้องตรวจสอบรหัสผ่านที่ส่งมาทั้งหมด (กล่าวคือ ต้องไม่ตัดทอน) SHALL
ประเด็นอื่น ๆ
- ปัญหาของกฎเดิม: ก่อนหน้านี้เคยมีปัญหาที่อักขระ Unicode ถูกจัดเก็บได้ไม่ถูกต้องบนบางแพลตฟอร์ม แต่ปัจจุบัน Unicode ให้ entropy ได้มากกว่า
- ข้อกำหนดใหม่: แนวทางใหม่ของ NIST จะรวมข้อกำหนดให้รองรับ Unicode แบบไม่จำกัด ซึ่งเป็นสิ่งจำเป็นสำหรับซอฟต์แวร์ที่อ้างว่ารองรับ internationalization (i18n)
- กฎองค์ประกอบรหัสผ่าน: NIST เปลี่ยนจุดยืนจาก "ไม่แนะนำ" เป็น "ไม่อนุญาต" ซึ่งเป็นก้าวสำคัญในการเสริมความปลอดภัย
- ความขัดแย้งกับมาตรฐานอุตสาหกรรม: มาตรฐานบางตัวในอุตสาหกรรม (เช่น PCI, ISO 27001:2022) ยังมีข้อกำหนดที่ขัดกับ NIST อยู่ ทำให้องค์กรต่าง ๆ ปฏิบัติตามกฎใหม่ของ NIST ได้ยาก
- การใช้ตัวจัดการรหัสผ่าน: ตัวจัดการรหัสผ่านมีประโยชน์ไม่เฉพาะกับเว็บไซต์ แต่รวมถึงระบบประเภทอื่น ๆ ด้วย และยังมีวิธีป้อนรหัสผ่านหลักผ่านฮาร์ดแวร์โทเคนหรือการยืนยันตัวตนด้วยชีวมิติได้
- การจำกัดความยาวรหัสผ่าน: การจำกัดความยาวรหัสผ่านมีไว้เพื่อป้องกันการใช้ทรัพยากรของระบบยืนยันตัวตนจนหมด แต่ถ้ากำหนดเพดานสั้นเกินไปอาจส่งผลเสียต่อความปลอดภัยอย่างรุนแรง
สรุปโดย GN⁺
- กฎรหัสผ่านใหม่ของ NIST ช่วยเสริมความปลอดภัยด้วยการตัดข้อกำหนดด้านความปลอดภัยที่ไม่จำเป็นและเป็นอันตรายแบบเดิมออกไป
- การรองรับรหัสผ่านแบบ Unicode จะเป็นประโยชน์อย่างมากต่อผู้ใช้จากนานาชาติ
- ความขัดแย้งกับมาตรฐานอุตสาหกรรมบางส่วนอาจทำให้องค์กรต่าง ๆ ปฏิบัติตามกฎใหม่ได้ยาก
- ตัวจัดการรหัสผ่านมีประโยชน์กับระบบหลากหลายประเภท และสามารถเพิ่มความปลอดภัยได้ผ่านฮาร์ดแวร์โทเคน
- การจำกัดความยาวรหัสผ่านมีไว้เพื่อป้องกันทรัพยากรหมด แต่หากจำกัดสั้นเกินไปอาจก่อปัญหาด้านความปลอดภัยได้
14 ความคิดเห็น
ที่ที่กำหนดความยาวสูงสุดสั้น ๆ นี่ก็ไม่ค่อยไหร่เหมือนกันนะครับ
จริง ๆ แล้วรหัสผ่านคือ
ข้าวแกงขาว0212341234ชุดกลางวันพิเศษ1ที่จ่ายบัตรนะครับ
แบบนี้ ต่อให้เป็นการผสมกันของ "คำที่มีอยู่แล้ว" ถ้าต่อกันหลายคำ ความยากก็พุ่งสูงขึ้นอย่างมากเลยครับ
บริษัทของผมก็มีการเปลี่ยนแนวทางเมื่อต้นปีนี้เหมือนกัน เลยเปลี่ยนเป็นให้เรียงคำภาษาอังกฤษอะไรก็ได้อย่างน้อย 4 คำ
เพราะงั้นทุกเช้าผมเลยเริ่มต้นวันด้วยการพิมพ์คำคมดี ๆ
แม้แต่ Coupang ที่ว่ากันว่าวัฒนธรรมการพัฒนายังดีกว่าที่อื่น ก็ยังแอบจำกัดความยาวรหัสผ่านไว้ที่ 16 ตัวอักษรโดยไม่มีฟีดแบ็กทางภาพใด ๆ เลยนะครับ ไม่มีอีเมลแจ้งเปลี่ยนรหัสผ่านด้วย แล้วจู่ ๆ ก็ล็อกอินไม่ได้โดยไม่มีเหตุผล จนผมนึกว่าบัญชีโดนแฮ็กไปแล้ว
ดูเหมือนว่าแม้แต่ในสายงานพัฒนาก็ยังมีหลายด้านนะครับ/คะ ความปลอดภัยหรือการเข้าถึงน่าจะเป็นตัวอย่างของด้านที่มักไม่ได้ถูกหยิบมาพูดถึงกันนัก แค่แบ่งความพยายามที่เทไปกับ dark pattern มาสักนิดก็คง...
ตอนนี้พอตรวจดูแล้วเห็นว่าปรับเพดานเป็น 20 ตัวอักษรแล้วครับ แต่หน้าเว็บสมัครสมาชิกก็ยังคงจำกัดความยาวรหัสผ่านโดยไม่มีทั้งข้อความแนะนำหรือฟีดแบ็กทางภาพใด ๆ เกี่ยวกับรหัสผ่านเลย และหน้าเว็บเข้าสู่ระบบก็ไม่มีข้อจำกัดใด ๆ ในทางกลับกัน หน้าเปลี่ยนรหัสผ่านในแอป Android ระบุกฎของรหัสผ่านไว้อย่างชัดเจนอยู่แล้ว ดูเหมือนว่าทีม Android กับทีมเว็บฟรอนต์เอนด์จะทำงานไม่ค่อยประสานกัน
ผมคิดว่านี่เป็นอาการแบบฉบับของการทำงานเป็นไซโล
เหมือนไม่มีอะไรถูกปฏิบัติตามอย่างเหมาะสมสักอย่างเลย...
ถ้ามีผู้เกี่ยวข้องกับ UI มาเห็นข้อความนี้ ขอความกรุณาช่วยเลิกบังคับให้กรอกรหัสผ่านผ่านคีย์บอร์ดเสมือนที่แสดงบนหน้าจอด้วยครับ
ตอนที่มันออกมาใหม่ ๆ คงมีเป้าหมายเพื่อป้องกันไม่ให้รหัสผ่านรั่วไหลผ่าน keylogger แต่ทุกวันนี้ความเสี่ยงที่รหัสผ่านจะถูกกล้องที่มีอยู่ทั่วไปถ่ายติดนั้นกลับสูงกว่ามาก
มันเป็น UI ที่ทำให้รู้สึกงงทุกครั้งที่เจอ และก็น่าแปลกที่ยังคงถูกใช้อยู่จนถึงตอนนี้
ผมสงสัยว่าเหตุผลที่ว่าทำขึ้นมาเพราะ keylogger นั้นคงถูกลืมไปแล้ว และน่าจะเป็นแค่ทุกคนทำกันแบบนั้นเลยทำตาม ๆ กันมากกว่า
เพราะมันเป็นแนวทางด้านความปลอดภัยของภาครัฐครับ คงไม่มีบริษัทไหนอยากใส่คีย์บอร์ดเสมือนเข้าไปหรอก
ในการรับรองตามมาตรฐานต่าง ๆ ก็มีหลายกรณีที่กำหนดให้คีย์บอร์ดเสมือนเป็นข้อบังคับด้วย ซึ่งพอเอาเข้าจริงรายละเอียดข้อกำหนดมีเยอะกว่าที่คิด ถ้าไม่ใช้ผลิตภัณฑ์ของผู้ให้บริการเดิม (SDK) ที่ทำสิ่งนี้ไว้แล้ว การตรวจประเมินก็อาจใช้เวลานานขึ้นหรือถึงขั้นไม่ผ่านได้เลย จริง ๆ แล้วถึงขั้นทำให้นึกว่านี่อาจเป็นคาร์เทลของบริษัทความปลอดภัยก็ได้ครับ
ไม่ใช่แค่หน่วยงานภาครัฐเท่านั้น แต่แม้แต่บริษัทเทคโนโลยีอย่าง Naver และ Coupang ก็ยังทำแบบนั้นอยู่ เลยยิ่งน่าอึดอัดเข้าไปอีกครับ
ที่นั่นคงแค่จำใจทำตามเพราะรัฐบาลสั่งให้ทำแบบนั้นไม่ใช่หรือครับ?
เว็บไซต์ที่จำกัดความยาวสูงสุดของรหัสผ่านไว้สั้น ๆ แค่ประมาณ 12 ตัวอักษร หรือไม่อนุญาตให้ใช้สัญลักษณ์พิเศษ มักทำให้ไม่อยากใช้งาน มันดูเป็นหนึ่งในสัญญาณว่าไม่ได้ใส่ใจเรื่องความปลอดภัย
ความเห็นจาก Hacker News
NIST ได้ให้แนวทางผ่อนคลายกฎการตั้งรหัสผ่านมาตั้งแต่ปี 2017
NIST ไม่ได้กำหนดนโยบายโดยตรง แต่มีนโยบายอื่นจำนวนมากที่อ้างอิง NIST 800-63
ตอนสมัครใช้งานเว็บไซต์ กฎแบบ "รหัสผ่านที่ดีต้องมี a, b, c" น่ารำคาญมาก
NIST ยังห้ามใช้ 'คำถามเพื่อความปลอดภัย' ด้วย (เช่น "นามสกุลเดิมของแม่คืออะไร?")
NIST เคยให้คำแนะนำเรื่องรหัสผ่านที่ผิดพลาดมาหลายสิบปี และเพิ่งจะเปลี่ยนมาใช้แนวทางที่สมเหตุสมผลกว่าในตอนนี้
ดูเหมือนว่าปัญหาของ bcrypt จะเป็นเหตุให้เกิดข้อกำหนดว่า "ต้องตรวจสอบรหัสผ่านทั้งหมดตามที่ส่งมา"
NIST เสนอให้ความยาวรหัสผ่านสูงสุดเป็น 64 ตัวอักษร (หลายเว็บไซต์จำกัดไว้ที่ 20 ตัวอักษร ทำให้ใช้ passphrase ไม่ได้)
เรื่องเล่าจากผู้ใช้คนหนึ่ง:
มีข้อถกเถียงว่าการบังคับให้มีอักขระบางประเภทเพิ่มหรือลดเอนโทรปี
กำลังรอให้ NIST แทนที่รหัสผ่านแบบข้อความล้วนด้วย PAKE และให้ W3C จัดทำกลไกรองรับสิ่งนี้
ลิงก์ต้นฉบับ: NIST SP 800-63b