วิธีใช้งาน
- ตั้ง “ความยาว” ด้วยแถบเลื่อนหรือช่องตัวเลข ความยาวตั้งแต่ 16 อักขระขึ้นไปเป็นค่าเริ่มต้นที่ดีสำหรับรหัสผ่านที่เก็บไว้ในโปรแกรมจัดการรหัสผ่าน
- เลือกประเภทอักขระ ได้แก่ ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์ ตัวเลือก “ใช้อักขระทุกประเภทที่เลือก” เปิดไว้โดยค่าเริ่มต้น และจะใส่อักขระแต่ละประเภทอย่างน้อยหนึ่งตัวลงในรหัสผ่านทุกรายการ
- หากจำเป็น ให้เปิด “ยกเว้นอักขระที่คล้ายกัน” เพื่อตัดอักขระอย่าง l, 1 และ O ออก เปิด “ยกเว้นสัญลักษณ์ที่อาจสับสน” หรือใส่อักขระเฉพาะที่เว็บไซต์ไม่ยอมรับในช่อง “ยกเว้นอักขระ”
- คลิก “สร้าง” ตรวจดูระดับ “ความแข็งแรง” และเอนโทรปี แล้วคัดลอกรหัสผ่านทีละรายการ หรือกด “คัดลอกทั้งหมด”
อะไรทำให้รหัสผ่านแข็งแรง
สำหรับรหัสผ่านที่สร้างแบบสุ่ม ความแข็งแรงวัดเป็นเอนโทรปี ซึ่งเท่ากับ length × log2(pool size) บิต โดย length คือความยาว และ pool size คือจำนวนอักขระในชุดที่ใช้สุ่มเลือก ทุกบิตที่เพิ่มขึ้นจะทำให้จำนวนครั้งที่ต้องเดาเพิ่มเป็นสองเท่า ความยาวเป็นตัวคูณเอนโทรปี ขณะที่ชุดอักขระที่ใหญ่ขึ้นเพิ่มเอนโทรปีได้เพียงเล็กน้อยต่ออักขระ ความยาวจึงสำคัญกว่า รหัสผ่านตัวพิมพ์เล็กล้วนยาว 16 อักขระมีความเป็นไปได้มากกว่ารหัสผ่านยาว 8 อักขระที่ผสมอักขระครบทั้งสี่ประเภทประมาณ 11 ล้านเท่า
| ความยาว | อักขระ | ขนาดชุดอักขระ | เอนโทรปี |
|---|---|---|---|
| 4 | ตัวเลข (รหัส PIN) | 10 | 13.3 บิต |
| 8 | ตัวพิมพ์เล็ก | 26 | 37.6 บิต |
| 8 | ครบทั้งสี่ประเภท | 89 | 51.8 บิต |
| 12 | ตัวอักษรและตัวเลข | 62 | 71.5 บิต |
| 16 | ตัวพิมพ์เล็ก | 26 | 75.2 บิต |
| 16 | ครบทั้งสี่ประเภท | 89 | 103.6 บิต |
| 20 | ครบทั้งสี่ประเภท | 89 | 129.5 บิต |
ในที่นี้ อักขระครบทั้งสี่ประเภทรวมกันได้ 89 ตัว คือ 26 + 26 + 10 + สัญลักษณ์ 27 ตัว เครื่องมือแสดงเอนโทรปีโดยปัดลงเป็นจำนวนบิตเต็ม ตัวเลขเหล่านี้ใช้ได้กับรหัสผ่านแบบสุ่มเท่านั้น รหัสผ่านที่คนคิดขึ้นเองมีเอนโทรปีต่ำกว่าที่ความยาวบ่งบอกไว้มาก
สิ่งที่ NIST SP 800-63B แนะนำ
NIST SP 800-63B ซึ่งเป็นแนวปฏิบัติของรัฐบาลกลางสหรัฐอเมริกาด้านการยืนยันตัวตนดิจิทัล กล่าวถึงบริการที่ทำหน้าที่ตรวจสอบรหัสผ่าน ฉบับปรับปรุงปัจจุบันคือ SP 800-63B-4 ระบุว่าบริการเหล่านี้:
- ต้องกำหนดความยาวอย่างน้อย 15 อักขระเมื่อรหัสผ่านเป็นปัจจัยเดียวในการยืนยันตัวตน หรือ 8 อักขระเมื่อใช้ร่วมกับปัจจัยอื่น และควรรองรับความยาวได้อย่างน้อย 64 อักขระ
- ต้องไม่บังคับกฎการผสมอักขระ เช่น “ตัวพิมพ์ใหญ่หนึ่งตัว ตัวเลขหนึ่งตัว และสัญลักษณ์หนึ่งตัว” และไม่บังคับให้เปลี่ยนรหัสผ่านเป็นระยะ แต่ต้องบังคับให้เปลี่ยนเมื่อมีหลักฐานว่ารหัสผ่านรั่วไหล
- ต้องตรวจสอบรหัสผ่านใหม่กับรายการรหัสผ่านต้องห้าม ซึ่งรวมถึงรหัสผ่านที่ใช้กันทั่วไป คาดเดาได้ หรือเคยรั่วไหล
- ควรรับอักขระ ASCII ที่พิมพ์ได้ทั้งหมดรวมถึงช่องว่าง และอนุญาตให้วางรหัสผ่านได้ เพื่อให้โปรแกรมจัดการรหัสผ่านใช้งานได้
สำหรับผู้ใช้ บทเรียนก็เหมือนกัน คือความยาวและความสุ่มเป็นสิ่งสำคัญ ส่วนการแทนที่อักขระแบบที่คาดเดาได้ เช่น P@ssw0rd1 ไม่ได้ช่วยอะไร
โปรแกรมจัดการรหัสผ่านและวลีรหัสผ่าน
รหัสผ่านที่ใช้ซ้ำมักมีความเสี่ยงมากกว่ารหัสผ่านที่สั้น หลังจากข้อมูลรั่วไหล ผู้โจมตีจะนำคู่อีเมลและรหัสผ่านที่หลุดออกมาไปลองใช้กับเว็บไซต์อื่น (credential stuffing) ให้ใช้รหัสผ่านสุ่มที่ต่างกันสำหรับทุกบัญชี และให้โปรแกรมจัดการรหัสผ่านจำไว้แทน เมื่อเป็นเช่นนั้น รหัสผ่านยาว 20 อักขระก็ไม่ได้ยุ่งยากไปกว่ารหัสผ่านยาว 8 อักขระเลย
สำหรับรหัสผ่านไม่กี่รายการที่คุณต้องพิมพ์จากความจำ เช่น รหัสผ่านหลักของโปรแกรมจัดการรหัสผ่าน วลีรหัสผ่าน (passphrase) จะใช้งานง่ายกว่า วลีรหัสผ่านประกอบด้วยคำที่สุ่มเลือกมา เช่น ใช้ลูกเต๋าร่วมกับรายการคำแบบยาว (long word list) ของ EFF ซึ่งมี 7,776 คำ แต่ละคำเพิ่มเอนโทรปีประมาณ 12.9 บิต หกคำจึงให้ประมาณ 77.5 บิต เครื่องมือนี้สร้างรหัสผ่านจากอักขระ ไม่ได้สร้างวลีรหัสผ่าน สำหรับคีย์ API และข้อมูลลับอื่น ๆ ที่ใช้ระหว่างเครื่อง ให้ใช้ตัวสร้าง Base64 แบบสุ่ม
ตัวสร้างนี้ทำงานอย่างไร
รหัสผ่านถูกสร้างบนอุปกรณ์ของคุณด้วย crypto.getRandomValues() ซึ่งเป็นตัวสร้างเลขสุ่มของเบราว์เซอร์ที่ปลอดภัยสำหรับงานเข้ารหัสลับ และไม่มีการส่งหรือจัดเก็บไว้ที่ใด การใช้มอดูโลตรง ๆ จะทำให้อักขระบางตัวมีโอกาสถูกเลือกสูงกว่าเล็กน้อย เครื่องมือจึงใช้การสุ่มแบบปฏิเสธ (rejection sampling) กล่าวคือ ค่าสุ่ม 32 บิตที่มากกว่าหรือเท่ากับพหุคูณที่มากที่สุดของขนาดชุดอักขระจะถูกสุ่มใหม่ อักขระทุกตัวจึงมีโอกาสถูกเลือกเท่ากันทุกประการ
ยกเว้นอักขระที่คล้ายกัน จะตัด i l 1 L o 0 O ออก ซึ่งมีประโยชน์เมื่อต้องอ่านรหัสผ่านออกเสียงหรือพิมพ์ตามที่เขียนบนกระดาษ เช่น รหัส Wi-Fi ส่วนยกเว้นสัญลักษณ์ที่อาจสับสน จะตัดวงเล็บ เครื่องหมายทับ เครื่องหมายตัวหนอน และ , ; : . ออก เนื่องจากฟอร์ม เชลล์ และไฟล์การกำหนดค่าบางแบบจัดการอักขระเหล่านี้ได้ไม่ดี โดยจะเหลือ ! @ # $ % ^ & * - _ = + ? ทั้งสองตัวเลือกทำให้ชุดอักขระเล็กลง จึงควรเพิ่มความยาวอีกหนึ่งหรือสองอักขระเพื่อชดเชย
คำถามที่พบบ่อย
รหัสผ่านควรยาวเท่าใด
อย่างน้อย 15 อักขระสำหรับบัญชีที่ป้องกันด้วยรหัสผ่านเพียงอย่างเดียว ซึ่งเป็นความยาวขั้นต่ำที่ NIST SP 800-63B-4 กำหนดสำหรับรหัสผ่านที่ใช้เป็นปัจจัยเดียว หากใช้โปรแกรมจัดการรหัสผ่าน อักขระสุ่ม 16 ถึง 24 ตัวก็ไม่ได้เพิ่มภาระใด ๆ ให้คุณ สำหรับรหัสผ่านที่ต้องพิมพ์บ่อย ลองพิจารณาใช้วลีรหัสผ่านที่ประกอบด้วยคำสุ่มห้าหรือหกคำ
ใช้รหัสผ่านที่สร้างจากเว็บไซต์ปลอดภัยหรือไม่
crypto.getRandomValues() และรหัสผ่านจะไม่ถูกส่ง บันทึกลงล็อก หรือจัดเก็บไว้ ให้คัดลอกรหัสผ่านที่ต้องการไปใส่ในโปรแกรมจัดการรหัสผ่านโดยตรงเอนโทรปีเป็นบิตหมายความว่าอะไร
คือลอการิทึมฐาน 2 ของจำนวนรหัสผ่านทั้งหมดที่การตั้งค่าของคุณสร้างได้ 80 บิตหมายถึงมีรหัสผ่านที่เป็นไปได้ 2 ยกกำลัง 80 แบบ และทุกบิตที่เพิ่มขึ้นจะทำให้งานในการเดาเพิ่มเป็นสองเท่า ค่านี้อธิบายวิธีที่รหัสผ่านถูกสร้างขึ้น จึงใช้ได้กับรหัสผ่านแบบสุ่มเท่านั้น
ควรเปลี่ยนรหัสผ่านเป็นประจำหรือไม่
ไม่จำเป็นต้องเปลี่ยนตามกำหนดเวลาตายตัว NIST SP 800-63B-4 กำหนดไม่ให้บริการต่าง ๆ บังคับเปลี่ยนรหัสผ่านเป็นระยะ เพราะผู้ใช้มักรับมือด้วยการดัดแปลงรหัสผ่านเดิมในแบบที่คาดเดาได้ ให้เปลี่ยนรหัสผ่านเมื่อบริการแจ้งว่าข้อมูลรั่วไหล เมื่อรหัสผ่านปรากฏในข้อมูลที่หลุดออกมา หรือเมื่อสงสัยว่ามีคนอื่นรู้รหัสผ่านนั้น
การบังคับให้ใช้อักขระทุกประเภททำให้รหัสผ่านแข็งแรงขึ้นหรือไม่
ไม่ ตัวเลือกนี้ซึ่งเปิดไว้โดยค่าเริ่มต้นมีไว้เพื่อให้เว็บไซต์ที่มีกฎการผสมอักขระยอมรับรหัสผ่านเท่านั้น เครื่องมือจะทิ้งรหัสผ่านที่ขาดอักขระประเภทใดประเภทหนึ่งที่เลือกไว้แล้วสร้างใหม่ ซึ่งตัดชุดค่าผสมบางแบบออกไปและทำให้เอนโทรปีจริงลดลงเล็กน้อย โดยเห็นได้ชัดที่สุดในรหัสผ่านที่สั้น ค่าที่แสดงจึงเป็นขอบเขตบน การเพิ่มความยาวเป็นวิธีที่ดีกว่าในการเพิ่มความแข็งแรง