TrungTamThongTin.comTrung Tâm Thông Tin
An toàn thông tin cá nhân

Mật khẩu mạnh là gì: độ dài, entropy và cách tạo mật khẩu khó đoán mà vẫn nhớ được

Mật khẩu mạnh được đo bằng số lần đoán, không bằng ký tự đặc biệt. Cách tính entropy, vì sao cụm từ ngẫu nhiên thắng P@ssw0rd và điều NIST đã đổi.

Top-down view of a brass combination padlock and a set of wooden dice scattered on a dark slate desk, soft window light from the left, muted teal and brass palette

Mật khẩu mạnh là mật khẩu mà kẻ tấn công phải thử một số lần cực lớn mới đoán ra, và chưa từng xuất hiện trong bất kỳ vụ rò rỉ nào. Thước đo thật là không gian tìm kiếm: chuỗi được tạo ngẫu nhiên càng dài thì số khả năng càng tăng theo hàm mũ. Một cụm bốn đến sáu từ chọn ngẫu nhiên, dạng "gạo-mây-kìm-sông-nhạt", mạnh hơn nhiều so với "P@ssw0rd2024" dù trông hiền hơn.

Ba quy tắc cốt lõi: đủ dài (từ 14–16 ký tự trở lên cho tài khoản quan trọng, hoặc cụm từ ngẫu nhiên), ngẫu nhiên thật (do máy hoặc xúc xắc chọn, không do bạn nghĩ ra) và mỗi tài khoản một mật khẩu riêng. Quy tắc thứ ba thường quan trọng hơn hai quy tắc đầu, vì phần lớn tài khoản bị chiếm hiện nay không phải do bị đoán mà do mật khẩu đã lộ ở nơi khác rồi bị thử lại.

Phần dưới giải thích kẻ tấn công thật sự đoán mật khẩu như thế nào, cách tính độ mạnh bằng entropy, vì sao các quy định cũ kiểu "bắt buộc ký tự đặc biệt, đổi mỗi 90 ngày" đã bị chính cơ quan tiêu chuẩn Mỹ bỏ, và một quy trình tạo mật khẩu bạn dùng được ngay.

Kẻ tấn công đoán mật khẩu bằng cách nào

Đoán trực tuyến. Thử đăng nhập trực tiếp vào dịch vụ. Cách này chậm vì hệ thống giới hạn số lần sai, khoá tạm hoặc bắt giải captcha. Chỉ mật khẩu cực yếu như "123456", ngày sinh hay tên người thân mới thua ở đây.

Bẻ khoá ngoại tuyến. Khi một dịch vụ bị lộ cơ sở dữ liệu, kẻ tấn công có trong tay các giá trị băm của mật khẩu và thử đoán trên máy riêng, không bị giới hạn số lần. Tốc độ phụ thuộc thuật toán băm: các hàm nhanh như MD5 hay SHA-1 không có muối cho phép thử hàng tỷ lần mỗi giây trên card đồ hoạ; các hàm cố ý chậm như bcrypt, scrypt, Argon2 làm tốc độ đó giảm hàng nghìn đến hàng triệu lần. Người dùng không biết dịch vụ dùng hàm nào, nên phải giả định trường hợp xấu.

Tấn công từ điển có quy tắc. Công cụ bẻ khoá không thử mù từ "aaaa". Chúng bắt đầu bằng danh sách hàng trăm triệu mật khẩu thật đã rò rỉ, rồi áp các phép biến đổi con người hay dùng: viết hoa chữ đầu, thay a thành @, o thành 0, thêm năm sinh hoặc dấu chấm than ở cuối. Vì vậy "Matkhau@1990" yếu hơn nhiều so với độ dài 12 ký tự của nó.

Nhồi thông tin đăng nhập (credential stuffing). Lấy cặp email và mật khẩu lộ từ dịch vụ A, thử tự động trên dịch vụ B, C, D. Không cần đoán gì cả. Đây là lý do một diễn đàn nhỏ bị lộ có thể dẫn tới mất hộp thư hay tài khoản mạng xã hội chính.

Đo độ mạnh bằng entropy: phép tính bạn tự làm được

Entropy, tính bằng bit, cho biết số khả năng mà kẻ tấn công phải duyệt nếu biết đúng cách bạn tạo mật khẩu. Công thức cho mật khẩu sinh ngẫu nhiên đều: entropy = độ dài × log2(số ký hiệu trong bảng chọn). Mỗi bit thêm vào nhân đôi số lần thử.

Ví dụ: mật khẩu 8 ký tự chọn ngẫu nhiên từ 62 ký hiệu (chữ thường, chữ hoa, chữ số) có khoảng 8 × 5,95 ≈ 48 bit. Cụm 6 từ chọn ngẫu nhiên từ danh sách Diceware 7.776 từ có 6 × 12,9 ≈ 77 bit. Chênh lệch 29 bit nghĩa là cụm từ có số khả năng lớn hơn khoảng 2 mũ 29, tức hơn năm trăm triệu lần.

Đưa vào tốc độ cụ thể để thấy ý nghĩa (ví dụ giả định): nếu kẻ tấn công thử được 10 tỷ lần mỗi giây với một hàm băm nhanh, không gian 48 bit bị duyệt hết trong khoảng sáu giờ; không gian 77 bit cần khoảng 670.000 năm. Cùng tốc độ đó, một mật khẩu "tự nghĩ" nằm trong danh sách rò rỉ bị tìm ra trong vài giây, bất kể nó dài bao nhiêu.

Giới hạn quan trọng: công thức chỉ đúng khi mật khẩu thật sự ngẫu nhiên. Với mật khẩu do người nghĩ ra, entropy thực tế thấp hơn rất nhiều so với con số tính theo độ dài, vì con người chọn theo khuôn mẫu. Các thanh đo "độ mạnh mật khẩu" trên web chỉ ước lượng thô; công cụ tốt như thư viện zxcvbn do Dropbox công bố năm 2012 cố gắng mô phỏng chính các khuôn mẫu ấy thay vì đếm loại ký tự.

Hiểu lầm phổ biến và điều thực sự đúng

Nhiều lời khuyên quen thuộc về mật khẩu bắt nguồn từ quy định cũ và không còn được các tiêu chuẩn hiện nay ủng hộ.

Hiểu lầmThực tế
Phải có chữ hoa, số, ký tự đặc biệt mới mạnhQuy tắc thành phần đẩy người dùng vào khuôn mẫu đoán được (chữ hoa ở đầu, số và ! ở cuối). Độ dài và tính ngẫu nhiên quyết định nhiều hơn.
Nên đổi mật khẩu định kỳ 60–90 ngàyĐổi định kỳ khiến người dùng tăng số đuôi (Matkhau1 → Matkhau2). Chỉ đổi khi có dấu hiệu lộ hoặc dịch vụ báo bị xâm nhập.
Thay chữ bằng ký hiệu (a → @) làm mật khẩu khó đoánCông cụ bẻ khoá áp sẵn các phép thay thế này; gần như không thêm độ khó.
Mật khẩu dài là đủ, dùng chung cũng đượcMật khẩu dài đến đâu cũng thua nếu đã lộ ở dịch vụ khác. Dùng lại là rủi ro lớn nhất.
Câu hỏi bảo mật là lớp bảo vệ thêmTên trường tiểu học, tên mẹ thường tra được trên mạng xã hội. Nếu buộc phải dùng, trả lời bằng chuỗi ngẫu nhiên và lưu lại.

Điểm chung của các hiểu lầm: chúng đo mật khẩu bằng vẻ ngoài phức tạp, còn kẻ tấn công đo bằng việc nó có nằm trong khuôn mẫu con người hay không.

NIST đã đổi khuyến nghị như thế nào

Quy tắc "trộn đủ loại ký tự và đổi thường xuyên" phần lớn đến từ một phụ lục trong tài liệu hướng dẫn của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) năm 2003. Tác giả của phụ lục đó, Bill Burr, sau này nói với báo chí rằng ông hối tiếc vì các khuyến nghị đã gây nhiều phiền toái mà không đem lại an toàn tương xứng.

Năm 2017, NIST phát hành SP 800-63B, đảo ngược phần lớn quy tắc cũ. Các điểm chính: ưu tiên độ dài, cho phép mật khẩu dài và có dấu cách; không bắt buộc quy tắc thành phần; không bắt đổi định kỳ nếu không có dấu hiệu lộ; và quan trọng nhất, hệ thống phải đối chiếu mật khẩu mới với danh sách mật khẩu đã rò rỉ, từ điển và các chuỗi lặp, rồi từ chối nếu trùng. Các bản sửa đổi sau tiếp tục theo hướng này.

Ý nghĩa cho người dùng cá nhân: bạn không cần ép mình nhớ những chuỗi kiểu "Tr0ub4dor&3". Bạn cần mật khẩu dài, ngẫu nhiên, riêng cho từng nơi. Ý nghĩa cho người quản trị hệ thống trong doanh nghiệp: chính sách bắt đổi mật khẩu mỗi quý cho toàn công ty thường làm an toàn kém đi, nên được thay bằng kiểm tra rò rỉ và xác thực nhiều lớp.

Quy trình tạo mật khẩu mạnh mà vẫn nhớ được

Không ai nhớ nổi một trăm mật khẩu ngẫu nhiên, và cũng không cần. Cách thực tế là chỉ nhớ vài mật khẩu thật mạnh, phần còn lại giao cho máy.

  1. Xác định nhóm mật khẩu phải nhớ thuộc lòng: mật khẩu mở máy tính, mật khẩu chính của trình quản lý mật khẩu và mật khẩu hộp thư chính. Thường chỉ ba đến năm cái.
  2. Với mỗi mật khẩu trong nhóm này, tạo cụm 5–6 từ ngẫu nhiên. Cách chuẩn là Diceware: tung xúc xắc năm lần để ra một số, tra số đó trong danh sách từ. Có thể dùng tính năng sinh cụm từ của trình quản lý mật khẩu. Không tự chọn từ, vì não sẽ chọn những từ liên quan nhau.
  3. Ghép các từ bằng dấu gạch hoặc dấu cách, có thể thêm một chữ số ở vị trí bất kỳ nếu dịch vụ đòi hỏi. Đừng biến đổi thêm cho "phức tạp"; độ mạnh đã nằm ở tính ngẫu nhiên.
  4. Luyện nhớ bằng cách gõ lại vài lần mỗi ngày trong tuần đầu. Có thể ghi ra giấy, cất ở nơi an toàn trong nhà cho đến khi thuộc. Rủi ro tờ giấy trong ngăn kéo thấp hơn nhiều so với rủi ro dùng lại mật khẩu.
  5. Mọi tài khoản còn lại: để trình quản lý mật khẩu sinh chuỗi ngẫu nhiên 20 ký tự trở lên, bạn không cần biết chúng là gì.
  6. Kiểm tra email của bạn trên dịch vụ cảnh báo rò rỉ như Have I Been Pwned (do Troy Hunt lập năm 2013). Tài khoản nào xuất hiện trong vụ rò rỉ thì đổi mật khẩu ở đó và ở mọi nơi bạn từng dùng lại mật khẩu ấy.

Kiểm tra mật khẩu đã lộ mà không làm lộ thêm

Một câu hỏi hợp lý: gõ mật khẩu vào một trang web để kiểm tra xem nó đã rò rỉ chưa, chẳng phải là tự đem nộp nó sao? Các dịch vụ kiểm tra nghiêm túc giải bài toán này bằng kỹ thuật gọi là k-anonymity. Trình duyệt hoặc trình quản lý mật khẩu băm mật khẩu bằng SHA-1 ngay trên máy bạn, rồi chỉ gửi đi năm ký tự đầu của giá trị băm.

Máy chủ trả về toàn bộ danh sách các giá trị băm đã rò rỉ có cùng năm ký tự đầu, thường vài trăm mục. Việc so khớp phần còn lại diễn ra trên máy bạn. Máy chủ không biết bạn đang kiểm tra mật khẩu nào trong số hàng trăm ứng viên đó, và tất nhiên không thấy mật khẩu gốc. Dịch vụ Pwned Passwords dùng đúng cơ chế này, và nhiều trình quản lý mật khẩu, trình duyệt đã tích hợp nó vào tính năng cảnh báo.

Có hai kiểu kiểm tra khác nhau cần phân biệt. Kiểm tra email cho biết tài khoản của bạn có nằm trong vụ rò rỉ nào không, tức là dịch vụ nào đã để lộ dữ liệu của bạn. Kiểm tra mật khẩu cho biết chính chuỗi đó đã xuất hiện trong bất kỳ vụ rò rỉ nào, của bất kỳ ai. Một mật khẩu bạn tự nghĩ ra mà người khác cũng nghĩ ra và đã bị lộ thì vẫn nằm trong từ điển tấn công, dù bạn chưa bao giờ bị lộ.

Nguyên tắc an toàn: chỉ kiểm tra mật khẩu qua công cụ tích hợp trong trình quản lý mật khẩu hoặc trình duyệt uy tín. Đừng gõ mật khẩu thật vào các trang "kiểm tra độ mạnh" vô danh, vì bạn không biết trang đó xử lý chuỗi ký tự như thế nào.

Khi nào mật khẩu mạnh vẫn không đủ

Mật khẩu mạnh chống được đoán và bẻ khoá, nhưng không chống được việc bạn tự tay đưa nó cho kẻ gian. Trang đăng nhập giả mạo nhận mật khẩu 77 bit dễ dàng như nhận "123456". Phần mềm ghi phím trên máy nhiễm mã độc cũng vậy. Đó là lý do mật khẩu chỉ nên là một lớp, đi kèm xác thực hai lớp, và về lâu dài là passkey, loại thông tin đăng nhập không thể bị gõ nhầm vào trang giả.

Ở chiều ngược lại, độ dài cũng có điểm dừng hợp lý. Với tài khoản ngân hàng hay dịch vụ có giới hạn số lần thử trực tuyến và có xác thực nhiều lớp, một mật khẩu ngẫu nhiên 16 ký tự đã thừa sức; theo đuổi 40 ký tự không đem lại khác biệt thực tế. Nơi cần mật khẩu chính cực mạnh là những thứ có thể bị tấn công ngoại tuyến: mật khẩu chính của kho mật khẩu, mật khẩu mã hoá ổ đĩa, mật khẩu tệp nén mã hoá.

Cuối cùng, tránh đưa thông tin cá nhân vào mật khẩu dù dưới dạng biến tấu: biển số xe, số căn cước, tên con kèm năm sinh. Những chi tiết ấy nằm sẵn trên mạng xã hội và trong các vụ rò rỉ dữ liệu, và công cụ tấn công có chủ đích sẽ thử chúng đầu tiên.

Câu hỏi thường gặp

Mật khẩu tiếng Việt có dấu có mạnh hơn không?

Về lý thuyết bảng ký hiệu lớn hơn, nhưng thực tế gây rắc rối: bộ gõ khác nhau có thể tạo mã Unicode khác nhau cho cùng một chữ, nhiều hệ thống xử lý sai ký tự có dấu và bạn có thể không đăng nhập được trên máy lạ. Dùng từ tiếng Việt không dấu chọn ngẫu nhiên an toàn và ổn định hơn.

Dùng một mật khẩu gốc rồi thêm tên dịch vụ vào cuối có ổn không?

Không nên. Khi một mật khẩu kiểu "Goc!Shopee" bị lộ, kẻ tấn công nhìn là thấy quy luật và thử ngay "Goc!Facebook". Các công cụ nhồi thông tin đăng nhập hiện đại có quy tắc biến đổi đúng kiểu này. Mỗi tài khoản cần một chuỗi độc lập hoàn toàn.

Có nên để trình duyệt lưu mật khẩu không?

Trình quản lý mật khẩu tích hợp trong trình duyệt lớn hiện nay đã mã hoá và đồng bộ khá tốt, tốt hơn hẳn việc dùng lại mật khẩu. Điểm yếu là phụ thuộc vào bảo mật tài khoản trình duyệt và thiết bị; cần đặt khoá màn hình và bật xác thực hai lớp cho tài khoản đồng bộ.

Mã PIN 6 số của điện thoại có phải mật khẩu yếu không?

Sáu số chỉ có một triệu khả năng, nhưng điện thoại hiện đại có chip bảo mật giới hạn số lần thử và tăng thời gian chờ sau mỗi lần sai, nên đoán trực tuyến rất khó. Rủi ro thật là người khác nhìn trộm khi bạn mở máy. Chọn PIN không phải ngày sinh hay chuỗi lặp.

Làm sao biết một dịch vụ lưu mật khẩu đúng cách?

Người dùng không kiểm tra trực tiếp được. Dấu hiệu xấu rõ nhất: dịch vụ gửi lại nguyên văn mật khẩu cũ qua email khi bạn bấm quên mật khẩu, hoặc giới hạn độ dài tối đa rất ngắn. Gặp trường hợp đó, coi như mật khẩu ở đây có thể lộ và đừng dùng nó ở bất kỳ đâu khác.

Cụm từ lấy từ câu thơ hay lời bài hát có tốt không?

Không. Thơ, ca dao, lời bài hát, câu nói nổi tiếng đều có trong từ điển tấn công, kể cả khi viết tắt chữ cái đầu. Sức mạnh của cụm từ đến từ việc các từ được chọn ngẫu nhiên và không có quan hệ nghĩa với nhau.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.