รหัสผ่านของฉันแข็งแรงแค่ไหน?

TL;DR: ความปลอดภัยจริงของรหัสผ่านขึ้นอยู่กับสองสิ่ง — entropy (ความคาดเดาไม่ได้) และ ความไม่ซ้ำ (ไม่เคยใช้ซ้ำหรือรั่วไหล) รหัสผ่านที่ดูซับซ้อนก็สามารถถูกถอดรหัสได้ในไม่กี่วินาทีหากเป็นไปตามรูปแบบที่คาดเดาได้ กำหนดเป้าหมาย entropy อย่างน้อย 80 bits และใช้รหัสผ่านที่ไม่ซ้ำกันสำหรับทุกบัญชี

คนส่วนใหญ่ประเมินความปลอดภัยของรหัสผ่านตัวเองสูงเกินจริงมาก รหัสผ่านที่ดูซับซ้อนก็ยังสามารถถูกถอดรหัสได้ในไม่กี่วินาทีหากเป็นไปตาม รูปแบบที่คาดเดาได้

คำตอบสั้น ๆ: รหัสผ่านสุ่ม 16 ตัวอักษรที่ใช้ทุกประเภทอักขระ (≈102 bits) ใช้เวลาถอดรหัสนับพันล้านปีในการโจมตี offline รหัสผ่านใด ๆ ที่อยู่ในรายการรั่วไหล (เช่น P@ssw0rd!) จะถูกถอดรหัสทันที ไม่ว่าจะดูซับซ้อนแค่ไหนก็ตาม
→ สร้างรหัสผ่านที่แข็งแรงเดี๋ยวนี้

อะไรทำให้รหัสผ่านอ่อนแอ?

วิธีที่แฮกเกอร์ถอดรหัสผ่าน

1. การโจมตี Brute-Force

การโจมตี brute-force ลองทุกชุดตัวอักษรที่เป็นไปได้อย่างเป็นระบบ ความเร็วขึ้นอยู่กับฟังก์ชัน hash ที่ปกป้องรหัสผ่าน:

ความเร็วถอดรหัสตามอัลกอริทึม hash
อัลกอริทึม Hashความเร็ว (1 GPU, ~2024)หมายเหตุ
MD5~30–50 พันล้าน/วินาทีล้าสมัย — ห้ามใช้กับรหัสผ่าน
NTLM~100+ พันล้าน/วินาทีระบบเก่าของ Windows — ยังพบได้บ่อยในการรั่วไหล
SHA-256~10–15 พันล้าน/วินาทีเร็ว — ไม่ปลอดภัยสำหรับรหัสผ่านหากไม่มีการยืดคีย์
bcrypt (cost 12)~1,000–10,000/วินาทีสร้างมาเพื่อรหัสผ่านโดยเฉพาะ — ช้ากว่ามาก
Argon2id<1,000/วินาทีแนะนำโดย NIST SP 800-63B — ใช้หน่วยความจำสูง

การประมาณเวลาถอดรหัสของเครื่องมือนี้ใช้สมมติฐาน 10 พันล้านครั้งต่อวินาที (เหมาะสมสำหรับการโจมตี SHA-256 แบบ offline) สำหรับรหัสผ่านที่ปกป้องด้วย bcrypt หรือ Argon2id ให้คูณเวลาที่แสดง ด้วยจำนวนล้านเท่าหรือมากกว่า

2. Dictionary Attack

แทนที่จะลองทุกชุดตัวอักษร dictionary attack ใช้รายการที่คัดสรรแล้วของรหัสผ่านที่รู้จัก และคำที่ใช้กันทั่วไป ชุดข้อมูล RockYou (15 ล้านรหัสผ่านจริงจากการรั่วไหลปี 2009) และฐานข้อมูล Have I Been Pwned (ข้อมูลรับรองที่รั่วไหลกว่า 10 พันล้านรายการ) เป็นเครื่องมือมาตรฐาน สำหรับผู้โจมตี รหัสผ่านใด ๆ ที่ปรากฏในการรั่วไหลถือว่าถูกบุกรุกอย่างถาวร ไม่ว่า จะดูมีความซับซ้อนเพียงใดก็ตาม

3. Credential Stuffing

เมื่อเว็บไซต์หนึ่งถูกละเมิดข้อมูล คู่ชื่อผู้ใช้/รหัสผ่านที่รั่วไหลจะถูกลองใช้กับ เว็บไซต์อื่น ๆ อีกหลายร้อยแห่งโดยอัตโนมัติ การโจมตีนี้สำเร็จเมื่อใดก็ตามที่มีการใช้รหัสผ่านซ้ำ ไม่ว่ารหัสผ่านของคุณจะแข็งแรงแค่ไหนก็ตาม หากคุณใช้มันในหลายเว็บไซต์ — การละเมิดครั้งเดียวจะเปิดเผยทั้งหมด ควรใช้รหัสผ่านที่แตกต่างกันสำหรับทุกบัญชี

4. การโจมตี Rainbow Table

rainbow table เป็นตารางค้นหาที่คำนวณล่วงหน้า โดยจับคู่รหัสผ่านที่ใช้กันทั่วไปกับค่า hash ของมัน ทำให้สามารถค้นหาย้อนกลับได้ทันที ระบบยืนยันตัวตนสมัยใหม่เอาชนะสิ่งนี้ได้โดยการเพิ่ม salt แบบสุ่มที่ไม่ซ้ำกันให้กับแต่ละรหัสผ่านก่อนการทำ hash hash ที่เติม salt อย่างถูกต้อง ไม่สามารถถูกโจมตีด้วย rainbow table ได้

เวลาถอดรหัสจริงในโลกแห่งความเป็นจริงที่ 10 พันล้าน/วินาที

เวลาถอดรหัสจริงในโลกแห่งความเป็นจริง
รหัสผ่านEntropyเวลาถอดรหัส
password~0 bits (อยู่ในพจนานุกรม)ทันที
P@ssw0rd!~0 bits (อยู่ในพจนานุกรม)ทันที
abc12345~37 bits (8 ตัวอักษร, ชุดเล็ก)~4 วินาที
Tr0ub4dor&3~40 bits (อยู่ใน XKCD, พจนานุกรม)ไม่กี่นาที
ตัวอักษร+ตัวเลข 12 ตัว, สุ่ม71.5 bits~230 ปี
ทุกประเภท 16 ตัวอักษร, สุ่ม102 bitsนับพันล้านปี

บทบาทของการยืนยันตัวตนสองขั้นตอน

แม้แต่รหัสผ่านที่แข็งแรงก็สามารถถูกเปิดเผยผ่านการหลอกลวงแบบฟิชชิงหรือการละเมิดข้อมูล การยืนยันตัวตนสองขั้นตอน (2FA) เพิ่มชั้นการพิสูจน์ตัวตนที่สอง — โดยทั่วไปคือรหัสผ่านใช้ครั้งเดียว ตามเวลา (TOTP) จากแอปยืนยันตัวตน แม้รหัสผ่านของคุณจะถูกขโมย ผู้โจมตีก็ไม่สามารถเข้าสู่ระบบได้หากไม่มีปัจจัยที่สองของคุณด้วย

แนวทางปฏิบัติที่ดีที่สุด: รหัสผ่านที่แข็งแรงและไม่ซ้ำกัน + 2FA สำหรับทุกบัญชีที่สำคัญ

สิ่งที่ควรทำทันที

  1. ใช้ตัวจัดการรหัสผ่าน (Bitwarden, 1Password, KeePass) เพื่อสร้างและจัดเก็บรหัสผ่านที่ไม่ซ้ำกันสำหรับทุกเว็บไซต์
  2. เปิดใช้งานการยืนยันตัวตนสองขั้นตอนบนอีเมล ธนาคาร และทุกบัญชีที่รองรับ
  3. ตรวจสอบอีเมลของคุณที่ haveibeenpwned.com เพื่อดูว่าบัญชีของคุณอยู่ในการรั่วไหลที่รู้จักหรือไม่
  4. สร้างรหัสผ่านใหม่ที่แข็งแรง: ใช้เครื่องมือสร้างรหัสผ่านปลอดภัย

คำถามที่พบบ่อย

แฮกเกอร์ถอดรหัสผ่านได้เร็วแค่ไหน?

สำหรับ hash แบบ MD5 หรือ NTLM GPU สมัยใหม่ตัวเดียวสามารถลองได้ 30–100 พันล้านรหัสผ่านต่อวินาที อัลกอริทึมที่สร้างมาเพื่อรหัสผ่านโดยเฉพาะเช่น bcrypt หรือ Argon2id นั้นตั้งใจให้ชำระช้า — ประมาณ 1,000–10,000 ครั้งต่อวินาที — นี่คือเหตุผลที่อัลกอริทึม hash มีความสำคัญไม่น้อยไปกว่าตัวรหัสผ่านเอง

คุณเก็บรหัสผ่านของฉันไหม?

ไม่ ทุกอย่างทำงานในเบราว์เซอร์ของคุณเอง ไม่มีข้อมูลรหัสผ่านใดถูกส่งไปยังเซิร์ฟเวอร์ คุณสามารถตรวจสอบสิ่งนี้ได้ในเครื่องมือนักพัฒนาของเบราว์เซอร์ภายใต้แท็บ Network

dictionary attack คืออะไร?

dictionary attack ลองรหัสผ่านจากรายการขนาดใหญ่ของคำที่รู้จัก รหัสผ่านที่ใช้กันทั่วไป และข้อมูลรับรองที่รั่วไหลไปก่อนหน้านี้ เนื่องจากรายการเหล่านี้มีจำนวนรายการนับพันล้าน รหัสผ่านใด ๆ ที่อิงจากคำจริงหรือรูปแบบที่ใช้กันทั่วไปจึงมีความเสี่ยงอย่างร้ายแรง

credential stuffing คืออะไร?

credential stuffing ใช้คู่ชื่อผู้ใช้/รหัสผ่านที่รั่วไหลจากเว็บไซต์หนึ่งเพื่อลองใช้กับเว็บไซต์อื่น ๆ โดยอัตโนมัติ การใช้รหัสผ่านซ้ำหมายความว่าการละเมิดครั้งเดียวสามารถบุกรุกบัญชีได้หลายสิบบัญชี

รหัสผ่านที่ปลอดภัยต้องมี entropy กี่ bits?

ผู้เชี่ยวชาญด้านความปลอดภัยแนะนำ entropy 80+ bits สำหรับรหัสผ่านที่แข็งแรง รหัสผ่านสุ่ม 16 ตัวอักษรที่ใช้ทุกประเภทอักขระจะได้ ~102 bits เรียนรู้เพิ่มเติมในคู่มือ entropy ของเรา

สร้างรหัสผ่านที่แข็งแรงเดี๋ยวนี้: เครื่องมือสร้างรหัสผ่านปลอดภัย

คู่มือที่เกี่ยวข้อง: Password เทียบกับ Passphrase · อธิบาย Password Entropy · ตัวอย่างรหัสผ่าน WiFi ที่แข็งแรง

เราไม่เก็บ ไม่จัดเก็บ หรือส่งรหัสผ่านใด ๆ