Mật khẩu là câu trả lời cho một câu hỏi rất cũ: anh có phải người của chúng tôi không?
Không phải ngành máy tính phát minh ra nó. Polybius, ở thế kỷ thứ hai trước Công nguyên, mô tả cách quân đội La Mã mỗi đêm chuyền một từ được khắc trên tấm gỗ — tessera — đi từ đơn vị này sang đơn vị khác rồi quay về bộ chỉ huy. Ai biết từ đó là người của họ. Ai không biết thì không.
Hai nghìn năm sau chúng ta vẫn làm đúng như vậy. Điều duy nhất thay đổi là ai đang hỏi, và họ có thể thử đoán câu trả lời nhanh đến mức nào.
1961 mật khẩu bước vào máy tính
Tháng 11 năm 1961, MIT trình diễn CTSS (Compatible Time-Sharing System), do Fernando Corbató dẫn dắt. Đó là một ý tưởng mới: một chiếc máy tính rất đắt tiền, được nhiều người dùng chung cùng lúc.
Và vấn đề xuất hiện ở đó. Nếu cỗ máy là của mọi người, thì tệp của mỗi người phải là của riêng người đó. Máy tính cần một cách để biết ai đang gõ. Giải pháp là thứ hiển nhiên nhất, và cũng La Mã nhất: cho mỗi người dùng một từ của riêng mình.
Cần nói cho chính xác: Corbató không phát minh ra mật khẩu. Ông phát minh ra mật khẩu theo từng người dùng trên máy tính nhiều người dùng, và đó là chuyện khác. Về già, chính ông nói rằng tất cả những thứ đó đã trở thành «một cơn ác mộng».
1962 vụ rò rỉ đầu tiên, và lý do là thời gian máy
Một năm sau, Allan Scherr, nghiên cứu sinh tại chính MIT đó, có một vấn đề rất đời thường: anh chỉ được cấp bốn giờ máy tính mỗi tuần và cần nhiều hơn cho luận án.
Thế là anh bảo hệ thống in ra tệp mật khẩu. Chỉ vậy thôi. Nó nằm đó, ở dạng văn bản thuần, và không ai nghĩ rằng sẽ có người đòi nó. Với bản in trong tay, anh dùng tài khoản của người khác để tiếp tục làm việc.
Điều thú vị không phải là mánh khóe. Mà là động cơ: vụ rò rỉ mật khẩu đầu tiên trong lịch sử không do một kẻ tội phạm gây ra, mà do một người muốn tiếp tục làm việc. Sáu mươi năm sau, phần lớn lỗ hổng bảo mật vẫn sinh ra từ những người hợp lý đi tìm đường tắt.
1979 có người nhận ra rằng không nên lưu chúng
Trong gần hai thập kỷ, nhiều hệ thống lưu mật khẩu nguyên như vậy. Ai đọc được tệp thì lấy được tất cả.
Năm 1979, Robert Morris và Ken Thompson công bố trên Communications of the ACM một bài viết mang tên «Password Security: A Case History», về những gì họ đã làm trong Unix. Hai ý tưởng ngày nay là nền tảng của mọi thứ:
- Đừng lưu mật khẩu, hãy lưu hàm băm của nó. Hệ thống không cần biết mật khẩu của bạn là gì; nó chỉ cần kiểm tra được rằng thứ bạn vừa gõ cho ra cùng một kết quả.
- Muối: thêm một giá trị ngẫu nhiên vào mỗi mật khẩu trước khi băm, để hai người có cùng mật khẩu không có cùng giá trị băm, và để không ai tính trước được một bảng rồi phá tất cả cùng lúc.
Khi hôm nay ta nói rằng một dịch vụ «không nên biết mật khẩu của bạn», ta đang trích dẫn một bài viết từ năm 1979.
2003 những quy tắc tất cả chúng ta học, và chúng đến từ đâu
Năm 2003, Bill Burr, thuộc NIST của Mỹ, viết tài liệu rồi sẽ chi phối cách nửa thế giới yêu cầu mật khẩu: SP 800-63. Mọi thứ bạn nhận ra ngay lập tức đều từ đó mà ra:
Ít nhất một chữ hoa, một chữ số và một ký tự đặc biệt. Đổi mỗi 90 ngày.
Nghe như khoa học. Không phải. Burr không có dữ liệu tốt về mật khẩu thật — gần như không tồn tại — nên ông dựa vào những gì có và lập luận theo hướng có vẻ hợp lý: càng nhiều loại ký tự thì càng nhiều tổ hợp, càng an toàn.
Vấn đề là con người không phải bộ sinh ngẫu nhiên. Bảo họ thêm chữ hoa, họ đặt
lên đầu. Bảo thêm chữ số, nó rơi xuống cuối. Bảo thêm ký tự đặc biệt, đó sẽ là
!. Và nếu bạn ép đổi ba tháng một lần, Mua2024! sẽ thành Thu2024!.
Kết quả là cả một thế hệ mật khẩu trông có vẻ phức tạp mà thực ra tầm thường, cùng những người dùng kiệt sức dùng lại chúng ở khắp nơi vì không chịu nổi nữa.
2017 NIST rút lại, và Burr cũng vậy
Năm 2017 NIST công bố SP 800-63B và đảo ngược gần như mọi thứ:
- Độ dài quan trọng hơn độ phức tạp.
- Không ép đổi định kỳ trừ khi có dấu hiệu bị xâm phạm.
- Đối chiếu mật khẩu với các danh sách rò rỉ, thay vì đòi ký tự đặc biệt.
Cũng năm đó, Burr nói với Wall Street Journal rằng ông hối tiếc phần lớn những gì mình đã viết. Đó là một trong những lời đính chính trung thực nhất mà ngành bảo mật máy tính từng đưa ra — vậy mà đến nay vẫn có hàng nghìn biểu mẫu đòi bạn một ký tự đặc biệt vì một tài liệu mà chính tác giả đã phủ nhận.
Vì sao đây không phải chuyện xưa
Tất cả những điều này có một hệ quả rất cụ thể, và bạn có thể thấy nó ngay tại đây.
Trình kiểm tra của chính chúng tôi cho đến gần đây vẫn chạy theo
logic năm 2003: nó đếm chữ hoa, chữ số và ký tự đặc biệt. Nó cho Contraseña1! —
đúng nghĩa là từ «mật khẩu» trong tiếng Tây Ban Nha — 92 % «Rất mạnh», và cho
một cụm năm từ ngẫu nhiên, vốn tốt hơn không thể so sánh, 0 % «Rất yếu».
Nó đang thưởng cho đúng thứ không nên làm. Chúng tôi đã thay đổi: bây giờ nó tra mật khẩu của bạn trong các từ điển từ ngữ, tên người, thành phố và mẫu bàn phím, rồi cho biết thực sự nó sẽ trụ được bao lâu.
Và đó là lý do trình tạo hiển thị bit entropy thay vì phần trăm. Phần trăm chẳng có nghĩa gì. Bit thì có: đó là số lần một người không biết gì về bạn sẽ phải thử.
Nên làm gì, trong hai dòng
- Dài thắng rắc rối. Bốn hay năm từ ngẫu nhiên hơn
P@ssw0rdnhiều bậc độ lớn. - Mỗi nơi một mật khẩu, và cất trong trình quản lý. Đó là quy tắc duy nhất từ 2003 còn đứng vững — và cũng là quy tắc chúng ta phớt lờ nhiều nhất.
Câu hỏi vẫn như ở Roma thế kỷ thứ hai: anh có phải người của chúng tôi không? Điều đã thay đổi là kẻ hỏi giờ có thể thử một tỷ câu trả lời mỗi giây. Tốt nhất câu của bạn đừng có trong từ điển.
Nguồn: F. J. Corbató và CTSS (MIT, 1961) · lời kể của chính Allan Scherr về năm 1962 · R. Morris và K. Thompson, «Password Security: A Case History», Communications of the ACM, 1979 · NIST SP 800-63 (2003) và SP 800-63B (2017) · phát biểu của Bill Burr với Wall Street Journal, tháng 8 năm 2017.