Tháng 6 năm 2023, một lập trình viên tên Neal Agarwal đăng lên trang web của mình, neal.fun, một thứ có tên The Password Game. Nó bảo bạn gõ một mật khẩu. Rồi đòi ít nhất năm ký tự. Rồi một chữ số. Rồi một chữ hoa. Rồi một ký tự đặc biệt.
Tới đây thì đó không phải trò chơi. Đó là biểu mẫu của ngân hàng bạn.
Rồi mới tới phần kia. Tổng các chữ số phải bằng 25. Phải chứa tên một tháng. Phải chứa các chữ số La Mã có tích bằng 35. Phải chứa đáp án Wordle của hôm nay. Phải nhận ra quốc gia trong một tấm ảnh. Phải chứa nước đi hay nhất của một thế cờ, viết theo ký hiệu đại số. Có ba mươi lăm quy tắc, và trên đường đi, bên trong mật khẩu của bạn nở ra một emoji quả trứng tên Paul, phải cho ăn sâu bướm, trong khi một ngọn lửa ăn dần các ký tự nếu bạn không dập kịp.
Trò chơi ăn khách vì một lý do khó chịu: không ai phải giải thích cái đùa cho bạn. Bạn hiểu ngay trong giây đầu tiên, vì cái cơ chế ấy bạn đã chịu đựng gần nửa đời. Agarwal chỉ kéo tiếp sợi chỉ đó.
Và đây mới là chỗ đáng dừng lại. Bốn quy tắc đầu tiên không phải do anh ta nghĩ ra.
Những quy tắc bạn đã quen đến từ đâu
Một chữ hoa, một chữ số, một ký tự đặc biệt và một độ dài tối thiểu không phải là truyền thuyết trên mạng: đó là bản dịch thực hành của một tài liệu do NIST Hoa Kỳ công bố năm 2003, SP 800-63, do Bill Burr viết. Từ đó chúng đi xuống các biểu mẫu của nửa thế giới, rồi vào đầu bạn.
Chúng tôi đã kể trọn câu chuyện trong bài mật khẩu là gì: Burr không có dữ liệu về mật khẩu thật — gần như chưa có — nên ông lập luận theo hướng nghe có vẻ hợp lý. Càng đa dạng ký tự, càng nhiều tổ hợp, càng an toàn. Năm 2017 chính NIST quay đầu, và Burr nói với Wall Street Journal rằng ông tiếc phần lớn những gì mình đã viết.
Vậy nên trò chơi của Agarwal không phóng đại một chính sách an toàn nào cả. Nó viết tiếp một danh sách vốn đã sai ngay từ dòng đầu. Khác biệt duy nhất giữa «phải có một ký tự đặc biệt» và «các chữ số phải cộng lại bằng 25» là bạn đã quen với cái thứ nhất.
Điều mà những quy tắc đó chưa bao giờ đo
Đây là chỗ cái đùa hết buồn cười, vì có thể đo được.
Những con số này lấy từ công cụ kiểm tra của trang này, với mô hình mà nó tự công bố: một cuộc tấn công ngoại tuyến vào một hàm băm nhanh, ở tốc độ 10¹² lần thử mỗi giây. Đây không phải ước lượng quảng cáo; đây là cái bạn sẽ thấy nếu gõ đúng những chuỗi này vào đó.
| mật khẩu | quy tắc thỏa mãn | lần thử | trụ được |
|---|---|---|---|
Matkhau123! |
cả bốn | 3,3 × 10¹⁰ | < 1 giây |
Muahe2026! |
cả bốn | 4,3 × 10⁸ | < 1 giây |
Zx9#kQ2m |
cả bốn | 3,3 × 10¹⁵ | 55 phút |
| sáu từ gieo từ xúc xắc, viết thường | không quy tắc nào | 1,1 × 10²³ | 3.500 năm |
Hàng cuối không lấy từ công cụ kiểm tra mà từ số học, và đó là cố ý: công cụ không thể biết sáu từ ấy rơi ra từ xúc xắc, nên nó sẽ tính ra thứ khác. Sáu lần gieo đúng bằng 77,5 bit, và 77,5 bit ở tốc độ 10¹² lần thử mỗi giây là khoảng ba nghìn năm trăm năm. Cuối bài ta sẽ quay lại.
Đọc lại lần nữa. Matkhau123! qua được mọi biểu mẫu trên hành tinh này và gục
trước khi bạn kịp nhả phím, vì từ đó có trong từ điển và phần còn lại là món trang
trí ai cũng gắn: chữ hoa đằng trước, chữ số và ký hiệu đằng sau. Còn hàng cuối, sáu
từ thường viết thường, sẽ bị một nửa số trang bạn có tài khoản từ chối: không
chữ hoa, không chữ số, không ký tự đặc biệt.
Đáng dừng lại ở Zx9#kQ2m, vì đó là trường hợp tốt nhất có thể của quy tắc. Tám ký
tự thật sự ngẫu nhiên, đủ cả bốn loại — đúng thứ mà chính sách năm 2003 coi là mật
khẩu mẫu mực. Năm mươi lăm phút. Mà đó còn là trần: công cụ không thể biết bạn
gõ ngẫu nhiên, nên nó cho bạn hưởng lợi thế nghi ngờ và tính kịch bản tốt nhất. Vả
lại chẳng ai gõ như thế. Bảo một người cho tám ký tự có ký hiệu, thứ bật ra là
Xinchao123! — 3,3 × 10¹⁰ lần thử, dưới một giây.
Quy tắc không phân biệt được hai thứ đó. Với biểu mẫu, Xinchao123! và Zx9#kQ2m
là cùng một mật khẩu. Đó là toàn bộ lỗi: một quy tắc cấu tạo đo hình dạng của
chuỗi, còn sức chống chịu không nằm ở hình dạng.
Quy tắc 90 ngày, hay Muadong2026! ra đời thế nào
Nửa còn lại của di sản 2003 là hạn dùng. Đổi mỗi chín mươi ngày.
Không ai nghĩ ra mật khẩu mới mỗi chín mươi ngày. Cái người ta làm — cái bạn làm, và
tôi cũng vậy — là tăng cái cũ lên một bậc. Muahe2026! biến thành Muadong2026! và
xong việc. Cả hai đều trụ dưới một giây, và nếu kẻ tấn công có cái thứ nhất thì
đoán ra cái thứ hai không phải là tấn công: đó là điền vào chỗ trống.
NIST đã bỏ việc bắt buộc đổi mật khẩu định kỳ trong SP 800-63B, năm 2017. Trong bản sửa tháng 8 năm 2025, giọng văn cứng lại: chỗ trước kia viết rằng bên xác minh không nên áp đặt quy tắc cấu tạo hay bắt đổi định kỳ, nay viết rằng họ không được làm cả hai. Chỉ ép đổi khi có dấu hiệu mật khẩu đã bị lộ.
Chín năm sau lần cải chính đầu tiên, công ty bạn vẫn đòi một chữ hoa mỗi quý.
Giới hạn số ký tự là dấu hiệu xấu nhất
Agarwal kể rằng giọt nước tràn ly — thứ đẩy anh làm trò chơi này — là khi anh thử tạo tài khoản và bị báo rằng mật khẩu của anh quá dài.
Trong tất cả các quy tắc phi lý, đó là quy tắc duy nhất còn kèm theo một dấu hiệu xấu.
Một hệ thống lưu mật khẩu của bạn đúng cách thì không lưu nó: nó lưu bản băm, và một bản băm luôn có cùng độ dài, dù bạn đưa vào tám ký tự hay tám trăm. Không có lý do lưu trữ nào cho một giới hạn mười sáu ký tự. Có đúng một ngoại lệ kỹ thuật hợp lệ và ai cũng biết — bcrypt bỏ qua phần vượt quá 72 byte — và nó không giải thích được những biểu mẫu dừng ở mười hai.
Một trần thấp không chứng minh rằng họ đang giữ mật khẩu của bạn ở dạng đọc được, nhưng đó là loại chi tiết chỉ xuất hiện khi có ai đó nhét nó vào một cột cơ sở dữ liệu bề rộng cố định. Chính SP 800-63B đòi điều ngược lại: phải chấp nhận ít nhất 64 ký tự.
Quy tắc thật sự có tác dụng thì không nhét vừa biểu mẫu
Nỗi khó chịu nằm sâu là: thực hành tốt không diễn đạt được thành một ô kiểm tra. Không ai viết nổi một biểu thức chính quy cho «bạn chưa dùng nó ở nơi khác» hay cho «nó không có trong vụ lộ dữ liệu gần nhất».
Cái làm được là đếm. Một cụm từ gồm các từ chọn bằng xúc xắc — Diceware — cộng thêm 12,9 bit sạch cho mỗi từ, và những bit đó là bit thật. Với cùng mô hình 10¹² lần thử mỗi giây:
- Năm từ là 64,6 bit: khoảng 164 ngày.
- Sáu từ là 77,5 bit: khoảng 3.500 năm.
Nên nói cả hai con số, chứ không chỉ con số thứ hai. Người ta hay nhắc lại rằng một cụm năm từ «trụ được hàng thế kỷ»; trước một hàm băm nhanh thì nó không trụ hàng thế kỷ: nó trụ năm tháng rưỡi. Vì thế Reinhold khuyên năm là mức sàn và sáu cho những gì thật sự quan trọng. Từ thứ sáu mới là từ đổi bậc thang, và nó miễn phí.
Cả hai đều không qua nổi biểu mẫu ngân hàng của bạn.
Vì sao trò chơi buồn cười
Khi trò chơi đòi tổng các chữ số phải bằng 25, bạn bật cười vì đó là một điều kiện tùy tiện, chẳng liên quan gì tới thứ làm cho mật khẩu an toàn.
Đòi một ký tự đặc biệt cũng là một điều kiện tùy tiện, chẳng liên quan gì tới thứ làm cho mật khẩu an toàn. Khác biệt là cái đó nửa Internet đang phục vụ, và cái đó thì ta đã đâm ra quen thân.
Nếu bạn muốn bản tóm tắt thực hành, nó gọn trong ba dòng: dùng bộ tạo hoặc
mấy hạt xúc xắc, cất kết quả vào trình quản lý mật khẩu, và đáp ứng quy tắc của biểu
mẫu bằng cách thêm vào thứ nó đòi, đừng tin rằng việc đó bảo vệ bạn khỏi điều gì.
Chữ hoa ở đầu và dấu ! ở cuối là tiền mãi lộ, không phải hàng phòng thủ.
Phần còn lại là một trò chơi. Nó được làm rất khéo, và tiếc là nó đã không dừng lại ở mức một trò chơi.
Nguồn: Neal Agarwal, «The Password Game» (neal.fun, 27 tháng 6 năm 2023), 35 quy tắc của trò chơi và chính lời kể của tác giả về biểu mẫu báo rằng mật khẩu của anh quá dài · NIST SP 800-63 (2003), SP 800-63B (2017) và SP 800-63B-4 (tháng 8 năm 2025), văn bản chuyển từ «không nên» sang «không được» đối với quy tắc cấu tạo và hạn dùng, và yêu cầu chấp nhận ít nhất 64 ký tự · phát biểu của Bill Burr với Wall Street Journal, tháng 8 năm 2017 · Arnold G. Reinhold, Diceware (1995), nguồn của con số 12,9 bit mỗi từ. Các mốc thời gian trong bảng được đo bằng công cụ kiểm tra của trang này, theo mô hình nó công bố là 10¹² lần thử mỗi giây trước một hàm băm nhanh; các số của Diceware được tính ở cùng tốc độ từ log₂(7.776) mỗi từ.
Ảnh của Olha Ruskykh · Pexels