ความยาวสำคัญกว่าความซับซ้อน
คนส่วนใหญ่เชื่อว่ารหัสผ่านที่ดีคือรหัสที่มีสัญลักษณ์แปลก ๆ เยอะ ๆ แต่ความจริงคือความยาวเพิ่มความปลอดภัยได้มากกว่ามาก เพราะทุกตัวอักษรที่เพิ่มเข้าไปจะคูณจำนวนความเป็นไปได้ทั้งหมด
| รหัสผ่าน | ความยาก | เวลาที่ใช้เดา |
|---|---|---|
P@ss1! (6 ตัว ครบทุกกลุ่ม) | 39 บิต | ไม่ถึงหนึ่งนาที |
P@ssw0rd123 (11 ตัว แต่เป็นคำที่รู้จัก) | ต่ำมาก | เกือบทันที — อยู่ในคลังคำที่โปรแกรมเดารหัสลองก่อน |
| สุ่ม 12 ตัว ครบทุกกลุ่ม | 79 บิต | ราว 1,900 ปี |
| สุ่ม 16 ตัว ครบทุกกลุ่ม | 105 บิต | นานกว่าอายุของจักรวาล |
| ประโยค 6 คำ | 55 บิต | ราว 65 ปี |
ตัวเลขคำนวณจากสมมติฐานว่าผู้โจมตีขโมยฐานข้อมูลไปแล้วและเดาแบบออฟไลน์ด้วยการ์ดจอที่ความเร็ว 10,000 ล้านครั้งต่อวินาที ซึ่งเป็นกรณีที่แย่ที่สุดที่พบจริง
สังเกตแถวที่สอง: P@ssw0rd123 ยาวกว่าแถวแรกและมีครบทุกกลุ่ม แต่กลับอ่อนที่สุด เพราะโปรแกรมเดารหัสไม่ได้ลองสุ่มมั่ว — มันลองคำในพจนานุกรมพร้อมการแทนตัวอักษรแบบที่คนชอบใช้ (a→@, o→0, i→1) ก่อนเสมอ ความสุ่มจริงเท่านั้นที่นับ
ตัวสุ่มที่ใช้ต่างจาก Math.random อย่างไร
เว็บสุ่มรหัสผ่านจำนวนไม่น้อยใช้ Math.random() ซึ่งไม่ได้ออกแบบมาเพื่องานความปลอดภัย — ค่าที่ได้มาจากสูตรคณิตศาสตร์ที่ถ้ารู้สถานะภายในก็ทำนายค่าถัดไปได้
หน้านี้ใช้ crypto.getRandomValues() ซึ่งดึงความสุ่มจากระบบปฏิบัติการโดยตรง และใช้วิธี rejection sampling ในการย่อค่าลงมาให้อยู่ในช่วงที่ต้องการ แทนการหารเอาเศษเฉย ๆ ที่จะทำให้ตัวอักษรต้น ๆ ของชุดถูกเลือกบ่อยกว่าตัวท้าย — เป็นรายละเอียดเล็กแต่คือหัวใจของเครื่องมือสุ่มรหัสผ่าน
ประโยครหัสผ่าน — ใช้เมื่อไรถึงเหมาะ
ประโยครหัสผ่านคือการเอาคำสุ่มมาต่อกัน เช่น river-lamp-quiz-fold-mint-echo จุดเด่นคือพิมพ์ง่ายและจำได้ ซึ่งสำคัญมากกับรหัสไม่กี่ตัวที่คุณต้องพิมพ์เองจริง ๆ
- ใช้กับ: รหัสหลักของโปรแกรมจัดการรหัสผ่าน, รหัสปลดล็อกเครื่อง, รหัสเข้ารหัสไดรฟ์ — พวกที่ต้องพิมพ์ด้วยมือทุกวัน
- ไม่ต้องใช้กับ: รหัสของเว็บทั่วไป เพราะควรให้โปรแกรมจัดการรหัสผ่านสุ่มยาว ๆ แล้วจำแทน คุณไม่ต้องจำเองอยู่แล้ว
- ต้องระวัง: จำนวนคำสำคัญมาก คลังคำของหน้านี้ทำให้แต่ละคำเพิ่มความยากราว 9 บิต ดังนั้น 4 คำได้แค่ 37 บิตซึ่งยังไม่พอ — ควรใช้ 6 คำขึ้นไป
สิ่งที่ควรทำจริง ๆ กับรหัสผ่าน
- ห้ามใช้รหัสซ้ำข้ามเว็บ — นี่คือข้อที่สำคัญที่สุด เพราะเมื่อเว็บใดเว็บหนึ่งข้อมูลรั่ว ผู้โจมตีจะเอาคู่อีเมล-รหัสนั้นไปลองกับเว็บอื่นทันที (เรียกว่า credential stuffing)
- ใช้โปรแกรมจัดการรหัสผ่าน — เพื่อให้ทุกเว็บมีรหัสไม่ซ้ำกันโดยคุณจำแค่รหัสหลักอันเดียว
- เปิดยืนยันตัวตนสองชั้น (2FA) — ป้องกันได้แม้รหัสจะรั่ว โดยเฉพาะกับอีเมลหลักซึ่งเป็นกุญแจไปสู่บัญชีอื่นทั้งหมด
- ไม่ต้องเปลี่ยนตามรอบเวลา — แนวทางปัจจุบันของ NIST เลิกแนะนำการบังคับเปลี่ยนทุก 90 วันแล้ว เพราะทำให้คนตั้งรหัสง่ายลงเรื่อย ๆ ให้เปลี่ยนเมื่อสงสัยว่ารั่วเท่านั้น
คำถามที่พบบ่อย (FAQ)
รหัสผ่านที่สุ่มจากเว็บนี้ปลอดภัยไหม
ปลอดภัย เพราะสุ่มด้วย crypto.getRandomValues ในตัวเบราว์เซอร์ และรหัสที่ได้ไม่เคยถูกส่งออกจากเครื่องคุณ ไม่มีการบันทึกที่ใดทั้งสิ้น (อ่านนโยบายความเป็นส่วนตัว) — ถ้าอยากมั่นใจที่สุด ตัดเน็ตแล้วกดสุ่มก็ยังใช้งานได้ปกติ
รหัสผ่านควรยาวเท่าไรถึงจะพอ
บัญชีทั่วไปอย่างน้อย 12 ตัว ส่วนอีเมลหลัก ธนาคาร และบัญชีสำคัญควรใช้ 16 ตัวขึ้นไปที่มีครบทุกกลุ่ม
ประโยครหัสผ่านดีกว่ารหัสสุ่มไหม
ดีกว่าตรงที่จำและพิมพ์ง่าย เหมาะกับรหัสที่ต้องพิมพ์เองบ่อย แต่ต้องใช้ 6 คำขึ้นไป ส่วนรหัสของเว็บทั่วไปควรใช้แบบสุ่มยาว ๆ แล้วให้โปรแกรมจัดการรหัสผ่านจำแทน
ต้องเปลี่ยนรหัสผ่านทุก 3 เดือนไหม
ไม่จำเป็น แนวทางปัจจุบันของ NIST เลิกแนะนำแล้ว ให้เปลี่ยนเมื่อมีเหตุสงสัยว่ารหัสรั่วเท่านั้น
ทำไมบางเว็บไม่รับสัญลักษณ์บางตัว
เป็นข้อจำกัดของระบบเว็บนั้นเอง ถ้าเจอกรณีนี้ให้ปิดตัวเลือกสัญลักษณ์แล้วเพิ่มความยาวชดเชย — รหัส 20 ตัวที่มีแค่ตัวอักษรกับตัวเลขยังแข็งแรงกว่ารหัส 10 ตัวที่มีสัญลักษณ์ครบ
เครื่องมืออื่นที่อาจได้ใช้
- Base64 Encode / Decode — เข้ารหัสถอดรหัสข้อความและถอดดู JWT
- JSON Formatter — จัดรูปแบบและตรวจสอบ JSON
- วงล้อสุ่ม — สุ่มรายชื่อแบบเห็นภาพ เหมาะกับจับฉลาก
- เครื่องนับเลขมีเสียง — นับเดินหน้าถอยหลังพร้อมออกเสียง
- ดูเครื่องมือทั้งหมดของ Thai Toolbox