ผู้ส่วนใหญ่เข้าใจว่า "ความแข็งแกร่ง" ของรหัสผ่าน ขึ้นอยู่กับความหลากหลายของตัวอักษร แต่มุมมองของโจมตีขัดแย้ง: ความซับซ้อนไม่ได้ป้องกันภัยคุกคามสมัยใหม่ รหัสผ่านแข็งแกร่งคืออะไร? ต้องวิเคราะห์ threat model จริงที่ผู้คนเผชิญ
ความซับซ้อนของรหัสผ่านไม่ได้แก้ประเด็น
"ความแข็งแกร่ง" มักวัดจาก complexity หรือความสุ่ม (symbols, numbers, ตัวพิมพ์ใหญ่-เล็ก) แต่เพิ่มตัวอักษรไม่กี่ตัว ไม่เพิ่ม "ความแข็งแกร่ง" จริงๆ แม้แถบสีเขียวจะบอกว่าแข็งแกร่ง Complexity เพิ่มความยากของ brute force แต่โจมตีแบบนี้พบน้อย
การขโมย credentials เกิดจาก data breach/leak จากองค์กรใหญ่ ความแข็งแกร่งของรหัสผ่านไม่ช่วยได้ หากโจมตีมีรหัสผ่าน plain text
ใช้รหัสผ่านที่ไม่ซ้ำกัน
ผู้คนส่วนใหญ่เปราะบางต่อ "credential stuffing": credentials ที่โดนขโมย ถูกลองบนแพลตฟอร์มดังๆ เนื่องจากนิสัยนำรหัสผ่านเดิมไปใช้ซ้ำ อันตรายกว่ารหัสผ่าน "อ่อน" เพราะรหัสผ่าน "แข็งมาก" สุ่มสมบูรณ์ ใช้ซ้ำทุกที่ จะเป็นภัยพิบัติหลังรั่วไหลครั้งเดียว
แทนที่จะคิดว่า password strength เป็นคุณสมบัติเดียว ควรคิดถึงความแข็งแกร่งของระบบ authentication ทั้งหมด รหัสผ่านสมัยใหม่สร้างระบบนี้ ใช้รหัสผ่านไม่ซ้ำกันง่ายขึ้นด้วย password manager เริ่มใช้วันนี้เลย
ความยาวสำคัญกว่าความซับซ้อน
หลายปีเราถูกฝึกให้คิดว่า complexity สำคัญที่สุด แต่ความยาวสำคัญกว่ามากสำหรับการป้องกัน brute force
ความยาวรหัสผ่าน มีความสัมพันธ์แบบ exponential กับเวลาที่แตก เพิ่มความยาวเล็กน้อย เพิ่มเวลาแตกมากกว่า Complexity สัมพันธ์แบบ linear
ตัวอย่าง: เครื่องแตกรหัสผ่านระดับสูง แตก *nRyU86) ได้ใน 80 นาที เพิ่มตัวอักษรพิมพ์ใหญ่ 1 ตัว ใช้เวลาเกือบ 36 ชั่วโมง เปลี่ยนตัวอักษรเป็นสัญลักษณ์ ไม่เพิ่มเวลาแตกมีนัยสำคัญ
ใช้ประโยชน์จาก exponential power ของความยาว: passphrase 4 คำ ใช้คำในพจนานุกรม รวม 16 ตัวอักษร แม้คำนึงถึง dictionary attacks ก็ใช้เวลา 90 พันล้านปี
ลืม complexity ไป Passphrase คือที่ดีที่สุด รหัสผ่านซับซ้อนระดับเดียวกันจดไม่ได้ แต่มนุษย์จดเรื่องเล่า ตลก ผิดปกติได้ดี หากสร้างเรื่องราวน่าจดจำสำหรับ passphrase สุ่ม จะลืมยาก
การสร้าง passphrase แบบสุ่มจริงสำคัญ การเลือกคำเกี่ยวกับตัวเอง (เดือนเกิด) ทำให้ทายง่าย ใช้ EFF's Password Dice สร้าง passphrase สุ่มได้ปลอดภัย
เปิด Two-Factor Authentication (2FA) ทุกอย่าง
ทุกระบบรั่วไหล ความแข็งแกร่งของรหัสผ่านไม่ช่วย 2FA เพิ่มชั้นความปลอดภัย: สิ่งที่คุณ รู้ (รหัสผ่าน) + สิ่งที่คุณ มี (โทรศัพท์) รหัสส่วนใหญ่สร้างจากเซิร์ฟเวอร์ระยะไกล ส่งมาเมื่อล็อกอิน
แต่โจมตีสามารถดักรหัส SMS ได้ผ่าน SIM cloning ใช้แอป 2FA บนมือถือสร้างรหัสเองดีกว่า เช่น Authy, Google Authenticator, หรือ password manager ที่รองรับ 2FA เช่น 1Password
สรุป
"ความแข็งแกร่ง" ของรหัสผ่านเดี่ยวเป็น red herring ระบบ authentication ที่แข็งแกร่งสำคัญกว่า การรั่วไหลและขโมยข้อมูลจะเกิดขึ้นแน่ๆ รหัสผ่านไม่ซ้ำกันจำกัดความเสียหาย 2FA ลดความเสียหายจาก credentials โดนขโมยเหลือศูนย์