Công cụ kiểm tra độ mạnh mật khẩu
Tạo mật khẩu
Công cụ kiểm tra độ mạnh mật khẩu GeekFormat, đánh giá độ an toàn mật khẩu một cách khoa học dựa trên Shannon Entropy. Nhập mật khẩu hiển thị tức thì xếp hạng cường độ 5 cấp sao, giá trị entropy (bits), ước tính thời gian bẻ khóa ba kịch bản (PC thường/siêu máy tính/tấn công trực tuyến giới hạn tốc độ), kiểm tra từng mục 7 chỉ số an ninh (độ dài, chữ hoa/thường, số, ký tự đặc biệt, không lặp lại, không dãy liên tục, khớp với cơ sở dữ liệu mật khẩu yếu phổ biến), và đưa ra đề xuất cải tiến cá nhân hóa. Tích hợp trình tạo mật khẩu ngẫu nhiên an toàn mật mã (crypto.getRandomValues), hỗ trợ độ dài 8-64 ký tự và tập ký tự tùy chỉnh. Xử lý hoàn toàn cục bộ trên trình duyệt, mật khẩu không được gửi lên máy chủ.
Đề xuất Liên quan
Về độ mạnh và an ninh mật khẩu
Độ mạnh mật khẩu (Password Strength) là thước đo khả năng chống chịu Brute-force Attack và Dictionary Attack của một mật khẩu. Mật khẩu mạnh cần có độ dài đủ lớn, tập ký tự đủ lớn (hỗn hợp nhiều loại ký tự), tính ngẫu nhiên đủ (không có quy luật, không thể dự đoán), và không có trong danh sách mật khẩu đã bị rò rỉ. Mật khẩu là phương tiện xác thực danh tính số cơ bản nhất và được sử dụng rộng rãi nhất, từ hộp thư, tài khoản mạng xã hội đến ngân hàng trực tuyến, ví mã hóa, hầu như tất cả các dịch vụ trực tuyến đều dựa vào bảo vệ mật khẩu. Mật khẩu yếu là nguyên nhân hàng đầu của rò rỉ dữ liệu và bị đánh cắp tài khoản——thống kê nhiều năm của Verizon DBIR cho thấy hơn 80% sự cố rò rỉ dữ liệu liên quan đến mật khẩu yếu hoặc rò rỉ mật khẩu.
Shannon Entropy là chỉ số khoa học để đo lường độ mạnh mật khẩu, được đề xuất bởi cha đẻ lý thuyết thông tin Claude Shannon vào năm 1948. Trong mật mã học, đơn vị entropy là bits, biểu thị logarit (cơ số 2) của số lần thử trung bình cần thiết để Brute-force mật khẩu đó. Ví dụ, entropy 40 bits có nghĩa kẻ tấn công trung bình cần thử 2⁴⁰≈1 nghìn tỷ tổ hợp; entropy 80 bits cần 2⁸⁰≈1 nghìn tỷ nghìn tỷ lần; entropy 128 bits không thể Brute-force được trong tương lai có thể thấy trước. Cần lưu ý rằng Shannon Entropy giả định các ký tự mật khẩu là hoàn toàn ngẫu nhiên, nếu mật khẩu có quy luật (như từ + hậu tố số), entropy hiệu quả thực tế sẽ thấp hơn giá trị lý thuyết.
Brute-force Attack là phương thức tấn công mật khẩu trực tiếp nhất: thử lần lượt tất cả các tổ hợp ký tự có thể, cho đến khi tìm thấy mật khẩu đúng. Tốc độ Brute-force Attack phụ thuộc vào hai yếu tố: khả năng tính toán (có thể thử bao nhiêu lần mỗi giây) và giá trị entropy mật khẩu (cần thử bao nhiêu lần mới trúng khớp). Cùng với sự nâng cao khả năng tính toán song song của GPU, tốc độ Brute-force Attack tăng cực nhanh——card đồ họa cao cấp những năm 2020 có thể thử hàng chục tỷ password hash mỗi giây. Nhưng khi giá trị entropy mật khẩu đủ cao (như trên 100 bits), ngay cả khi tập hợp tất cả tài nguyên tính toán toàn cầu, cũng không thể hoàn thành dò tìm trong suốt tuổi của vũ trụ. Do đó, phương pháp hiệu quả nhất để chống Brute-force Attack chính là sử dụng mật khẩu ngẫu nhiên dài có entropy cao.
Dictionary Attack là phương thức tấn công hiệu quả hơn Brute-force Attack: kẻ tấn công không thử tất cả các tổ hợp, mà sử dụng "từ điển" bao gồm mật khẩu phổ biến, mật khẩu bị rò rỉ, danh sách từ, tổ hợp mẫu phổ biến để thử. Hầu hết người dùng chọn mật khẩu không hoàn toàn ngẫu nhiên——nghiên cứu cho thấy hơn 50% người dùng sử dụng biến thể của Top 1000 mật khẩu phổ biến. Dictionary Attack nhanh hơn Brute-force Attack vài bậc độ lớn, bởi vì nó chỉ cần thử các ứng viên có khả năng cao nhất. Cơ sở dữ liệu mật khẩu phổ biến (như 14 triệu mật khẩu bị rò rỉ rockyou, cơ sở dữ liệu Pwned Passwords của Have I Been Pwned) ghi lại hàng tỷ mật khẩu đã từng bị rò rỉ trên internet, bất kỳ mật khẩu nào xuất hiện trong các danh sách này đều nên được coi là không an toàn.
Việc ước tính thời gian bẻ khóa mật khẩu cần xem xét kịch bản tấn công. Tấn công trực tuyến (thử thông qua giao diện đăng nhập trang web) thường bị giới hạn tốc độ nghiêm ngặt——máy chủ sẽ giới hạn tần suất thử, khóa tài khoản sau nhiều lần thất bại, yêu cầu mã xác nhận, do đó tốc độ chậm nhất (vài lần đến vài trăm lần mỗi giây). Tấn công ngoại tuyến (kẻ tấn công lấy được cơ sở dữ liệu password hash rồi bẻ khóa cục bộ) tốc độ cực nhanh——sử dụng cụm GPU cao cấp có thể thử hàng trăm tỷ lần mỗi giây, sử dụng điện toán đám mây hoặc siêu máy tính có thể đạt hàng nghìn tỷ lần thậm chí hàng triệu tỷ lần mỗi giây. Ngoài ra, tốc độ bẻ khóa của các thuật toán băm khác nhau khác nhau rất lớn: MD5 và NTHash rất nhanh, các thuật toán băm chậm như bcrypt/Argon2 được thiết kế chuyên biệt để chống Brute-force Attack, tốc độ chậm hàng triệu lần.
NIST trong hướng dẫn SP 800-63B đã đưa ra các đề xuất hiện đại cho chính sách mật khẩu: 1) Độ dài mật khẩu ít nhất 8 ký tự, đề xuất sử dụng mật khẩu dài hơn (passphrase); 2) Hỗ trợ tất cả ký tự ASCII và ký tự Unicode (bao gồm khoảng trắng); 3) Không còn bắt buộc thay đổi mật khẩu định kỳ (chỉ thay đổi khi có bằng chứng rò rỉ); 4) Không còn bắt buộc quy tắc tổ hợp ký tự cụ thể (nhưng đề xuất sử dụng nhiều loại); 5) Cấm sử dụng mật khẩu đã biết bị rò rỉ; 6) Cung cấp phản hồi độ mạnh mật khẩu. Cốt lõi của các đề xuất này là: độ mạnh thực sự của mật khẩu đến từ độ dài và tính ngẫu nhiên, chứ không phải quy tắc thành phần phức tạp; độ dài quan trọng hơn độ phức tạp.
Passphrase là một chiến lược mật khẩu cân bằng giữa an ninh và khả năng ghi nhớ: sử dụng 4-6 từ được chọn ngẫu nhiên (như correct horse battery staple) kết hợp, đạt entropy cao thông qua số lượng từ thay vì độ phức tạp ký tự. Một passphrase 5 từ tiếng Anh ngẫu nhiên có giá trị entropy khoảng 65-70 bits (giả định chọn ngẫu nhiên từ 7776 từ thông dụng), tương đương 10-11 ký tự ASCII hoàn toàn ngẫu nhiên, nhưng dễ ghi nhớ hơn. Nhưng cần lưu ý: các từ trong passphrase phải được chọn ngẫu nhiên, sử dụng câu có nghĩa hoặc cụm từ phổ biến (như iloveyou, tobeornottobe) sẽ làm giảm đáng kể an ninh.
Thực hành tốt nhất cho an ninh mật khẩu: Thứ nhất, sử dụng trình quản lý mật khẩu (như Bitwarden, KeePassXC, 1Password v.v.) để tạo và lưu trữ mật khẩu ngẫu nhiên mạnh duy nhất cho mỗi trang web (trên 16 ký tự đủ loại ký tự), tránh tái sử dụng mật khẩu; Thứ hai, càng nhiều càng tốt bật 2FA/TOTP/khóa bảo mật, ngay cả khi mật khẩu bị rò rỉ cũng có thể bảo vệ tài khoản; Thứ ba, kiểm tra định kỳ xem hộp thư có xuất hiện trong rò rỉ dữ liệu hay không (thông qua các dịch vụ như Have I Been Pwned); Thứ tư, thận trọng với email lừa đảo và trang web giả mạo, đây là cách phổ biến nhất để đánh cắp mật khẩu; Thứ năm, các tài khoản quan trọng (hộp thư, ngân hàng trực tuyến, ví mã hóa) sử dụng bảo vệ mạnh thêm, tránh đăng nhập tài khoản nhạy cảm dưới WiFi công cộng; Thứ sáu, an ninh mật khẩu là một công trình hệ thống, mật khẩu mạnh chỉ là tuyến phòng thủ đầu tiên.
Trường hợp sử dụng
- Kiểm tra độ mạnh mật khẩu trước khi đăng ký tài khoản trang web mới, tránh sử dụng mật khẩu yếu dẫn đến bị đánh cắp tài khoản
- Đánh giá độ an toàn mật khẩu mới khi thay đổi mật khẩu định kỳ, xác nhận mật khẩu mới có độ mạnh cao hơn mật khẩu cũ
- Khi bộ phận IT doanh nghiệp xây dựng chính sách mật khẩu nhóm, sử dụng làm công cụ kiểm tra tham khảo cho yêu cầu độ phức tạp mật khẩu
- Khi phát triển chức năng đăng ký/đổi mật khẩu người dùng, tham khảo tiêu chuẩn kiểm tra để thiết kế nhắc nhở độ mạnh mật khẩu phía trước
- Khi điều tra sự cố an ninh tài khoản, kiểm tra mật khẩu hiện tại có thuộc mật khẩu yếu phổ biến hay không, thời gian bẻ khóa có quá ngắn hay không
- Tạo mật khẩu có độ mạnh tương ứng cho các tài khoản có cấp độ an ninh khác nhau——hộp thư/ngân hàng trực tuyến dùng mật khẩu rất mạnh, diễn đàn dùng mật khẩu trung bình
- Giải thích cho người không chuyên môn tại sao mật khẩu "trông có vẻ dài" (như password123) thực sự không an toàn, sử dụng thời gian bẻ khóa trình bày rủi ro trực quan
- Sau khi trình quản lý mật khẩu tạo mật khẩu, xác minh lại giá trị entropy và cấp độ cường độ có đạt tiêu chuẩn hay không
- Khi học kiến thức an ninh mật khẩu, quan sát mối quan hệ thay đổi giữa giá trị entropy và thời gian bẻ khóa bằng cách điều chỉnh tổ hợp ký tự
- So sánh hiệu quả của các chính sách mật khẩu khác nhau——như sự khác biệt thời gian bẻ khóa giữa 8 ký tự thuần số vs 8 ký tự hỗn hợp vs 16 ký tự hỗn hợp
- Trong trình diễn đào tạo an ninh, trình bày tính dễ tổn thương của mật khẩu yếu, nhập mật khẩu phổ biến để trình bày rủi ro bị bẻ khóa tức thì
- Khi cài đặt mật khẩu Wi-Fi, mật khẩu cơ sở dữ liệu, khóa mã hóa và các kịch bản an ninh cao, xác nhận mật khẩu đạt cấp độ ★★★★ trở lên
Cách Sử dụng
- Nhập mật khẩu cần kiểm tra vào ô nhập mật khẩu, có thể nhấp biểu tượng mắt để chuyển đổi hiển thị dạng rõ/dạng che để đối chiếu
- Công cụ phân tích mật khẩu theo thời gian thực, hiển thị xếp hạng cường độ 5 cấp sao, giá trị Shannon entropy (bits), thời gian bẻ khóa ba kịch bản
- Xem bảng kiểm tra tập ký tự, xác nhận 7 chỉ số an ninh (độ dài, chữ hoa/thường, số, ký tự đặc biệt, không lặp lại, không phải mật khẩu phổ biến) có vượt qua hay không
- Tối ưu mật khẩu theo gợi ý trong khu vực đề xuất cải tiến——như tăng độ dài, bổ sung loại ký tự còn thiếu, tránh mật khẩu phổ biến
- Nếu cần tạo mật khẩu mạnh, cài đặt độ dài (8-64 ký tự) và tùy chọn loại ký tự, nhấp nút tạo để nhận mật khẩu ngẫu nhiên an toàn mật mã
Tính năng
- Thuật toán Shannon Entropy: Tính toán giá trị entropy Shannon (bits) dựa trên kích thước tập ký tự và độ dài mật khẩu, định lượng cường độ ngẫu nhiên của mật khẩu một cách khoa học thay vì chấm điểm theo quy tắc đơn giản
- Xếp hạng cường độ 5 cấp sao: Tổng cộng 5 cấp độ từ ☆☆☆☆☆ (rất yếu) đến ★★★★★ (rất mạnh), xác định tổng hợp dựa trên khoảng entropy (< 30/30-45/45-60/60-80/> 80 bits) và kết quả kiểm tra an ninh
- Ước tính thời gian bẻ khóa trong ba kịch bản: Ước tính thời gian Brute-force Attack trên PC thường (1 tỷ lần/giây), siêu máy tính (1000 nghìn tỷ lần/giây) và tấn công trực tuyến giới hạn tốc độ (100 lần/giây), bao phủ phạm vi thời gian từ mili giây đến hàng nghìn tỷ năm
- Kiểm tra từng mục 7 chỉ số an ninh: Tự động kiểm tra mật khẩu có đáp ứng độ dài ≥8 ký tự, chứa chữ hoa, chứa chữ thường, chứa số, chứa ký tự đặc biệt, không có ký tự lặp lại liên tiếp (như aaa/111), không có dãy số liên tục (như 123/456), không có trong danh sách mật khẩu yếu phổ biến
- Kiểm tra cơ sở dữ liệu mật khẩu yếu phổ biến: Tích hợp danh sách mật khẩu yếu phổ biến, cảnh báo đỏ ngay lập tức khi nhập các mật khẩu yếu kinh điển như 123456, password, qwerty, các mật khẩu này bị bẻ khóa tức thì dưới Rainbow Table attack
- Đề xuất cải tiến động: Đưa ra đề xuất cải tiến cá nhân hóa theo thời gian thực dựa trên kết quả kiểm tra——thiếu chữ hoa thì đề xuất thêm chữ hoa, độ dài không đủ thì đề xuất tăng độ dài, trùng khớp mật khẩu phổ biến thì đề xuất thay đổi, hướng dẫn chính xác người dùng nâng cao độ mạnh mật khẩu
- Trình tạo mật khẩu an toàn tích hợp: Sử dụng crypto.getRandomValues() của trình duyệt để tạo mật khẩu bằng số ngẫu nhiên an toàn mật mã, độ dài điều chỉnh 8-64 ký tự, tự do lựa chọn có bao gồm chữ hoa, chữ thường, số, ký tự đặc biệt (!@#$%^&*-_+=?) hay không
- Chuyển đổi hiển thị/ẩn mật khẩu: Một cú nhấp chuột chuyển đổi hiển thị mật khẩu dạng rõ/dạng che, thuận tiện đối chiếu nội dung nhập, tránh lỗi cài đặt mật khẩu do nhìn nhầm ký tự
- Đếm ký tự thời gian thực: Hiển thị số lượng ký tự mật khẩu hiện tại theo thời gian thực bên dưới ô nhập, thuận tiện đánh giá độ dài có đạt tiêu chuẩn hay không
- Phân tích tức thì không độ trễ: Phân tích tức thì khi nhập mật khẩu, không cần nhấp nút, sửa đổi phản hồi ngay lập tức thay đổi cường độ
- Sao chép kết quả kiểm tra một cú nhấp: Hỗ trợ sao chép một cú nhấp văn bản tóm tắt đầy đủ gồm cấp độ cường độ, giá trị entropy, thời gian bẻ khóa ba kịch bản, thuận tiện ghi lại hoặc chia sẻ
- Định dạng số quốc tế: Số liệu thời gian bẻ khóa được định dạng tự động theo ngôn ngữ người dùng (dấu phân cách hàng nghìn, v.v.)
- Chức năng xóa: Một cú nhấp xóa ô nhập để kiểm tra lại, thao tác thuận tiện
- Xử lý hoàn toàn cục bộ trên trình duyệt: Phân tích và tạo mật khẩu đều hoàn thành trong JavaScript của trình duyệt, mật khẩu nhập vào không được gửi qua mạng đến bất kỳ máy chủ nào, an ninh mật khẩu được đảm bảo
Câu hỏi Thường gặp
Nguyên lý của kiểm tra độ mạnh mật khẩu là gì? Cách tính Shannon entropy?
Công cụ này định lượng độ mạnh mật khẩu dựa trên lý thuyết entropy thông tin do Claude Shannon đề xuất. Công thức tính entropy: Entropy = Độ dài mật khẩu × log₂(Kích thước tập ký tự). Kích thước tập ký tự được cộng dồn theo loại ký tự mật khẩu sử dụng: chữ thường 26 ký tự, chữ hoa 26 ký tự, số 10 ký tự, ký tự đặc biệt 33 ký tự (!@#$%^&*-_+=? v.v.). Ví dụ, mật khẩu 8 ký tự chỉ sử dụng chữ thường, tập ký tự=26, entropy=8×log₂(26)≈37.6 bits; còn mật khẩu 16 ký tự sử dụng cả bốn loại ký tự, tập ký tự=95, entropy=16×log₂(95)≈105 bits. Giá trị entropy càng cao, số tổ hợp cần thử cho Brute-force Attack càng nhiều, mật khẩu càng an toàn.
Tại sao các mật khẩu như 123456, password dài nhưng được xếp hạng rất yếu?
Bởi vì độ mạnh mật khẩu không chỉ phụ thuộc vào độ dài mà còn phụ thuộc vào tính ngẫu nhiên và không thể dự đoán. 123456 mặc dù có 6 ký tự, nhưng nó là một trong những mật khẩu phổ biến nhất, tồn tại trong mọi Rainbow Table và từ điển mật khẩu, tin tặc sẽ ưu tiên thử các mật khẩu tần suất cao này khi bẻ khóa, thực tế có thể đoán đúng trong vài giây. Công cụ này tích hợp cơ sở dữ liệu mật khẩu yếu phổ biến, khi phát hiện mật khẩu trong danh sách mật khẩu phổ biến sẽ trực tiếp xác định là rất yếu (☆☆☆☆☆), bất kể độ dài bao nhiêu. Các mật khẩu yếu tương tự còn bao gồm: qwerty, abc123, admin, letmein, welcome, monkey, dragon, v.v.
Sự khác biệt giữa ba kịch bản trong ước tính thời gian bẻ khóa là gì?
Ba kịch bản mô phỏng tốc độ bẻ khóa của các khả năng tấn công khác nhau: 1) Tấn công trực tuyến giới hạn tốc độ (100 lần/giây): Mô phỏng giao diện đăng nhập trang web, máy chủ thường giới hạn tần suất thử (như mỗi tài khoản mỗi giây tối đa vài lần, khóa sau 5 lần thất bại), đây là kịch bản tấn công từ xa phổ biến nhất, tốc độ chậm nhất; 2) Tấn công ngoại tuyến PC thường (1 tỷ lần/giây): Kẻ tấn công sau khi lấy được password hash sẽ Brute-force bằng GPU cục bộ, GPU hiện đại có thể thử hàng tỷ lần mỗi giây; 3) Siêu máy tính/tấn công phân tán (1000 nghìn tỷ lần/giây): Kẻ tấn công cấp quốc gia hoặc mạng botnet lớn, có khả năng tính toán song song cực mạnh. Mật khẩu của bạn cần có khả năng chống đỡ đủ lâu trong kịch bản siêu máy tính mới được coi là thực sự an toàn.
Mật khẩu bao nhiêu ký tự mới an toàn? Chính sách mật khẩu được đề xuất là gì?
Cấp độ an ninh khác nhau tùy kịch bản: 1) Diễn đàn thường/tài khoản không quan trọng: ≥12 ký tự hỗn hợp, entropy≥60 bits (★★★☆☆), cần vài năm dưới siêu máy tính; 2) Hộp thư/tài khoản mạng xã hội: ≥14 ký tự hỗn hợp, entropy≥80 bits (★★★★☆); 3) Ngân hàng trực tuyến/ví mã hóa/tài khoản quản trị viên: ≥16 ký tự đủ loại ký tự, entropy≥100 bits (★★★★★), siêu máy tính bẻ khóa cần hàng nghìn tỷ năm trở lên. Đề xuất chung: Sử dụng trình quản lý mật khẩu để tạo mật khẩu ngẫu nhiên trên 16 ký tự bao gồm chữ hoa+thường+số+ký tự đặc biệt, mỗi trang web sử dụng mật khẩu duy nhất, bật 2FA.
Tại sao có chữ hoa+thường+số+ký tự đặc biệt nhưng vẫn được nhắc là không đủ mạnh?
Có thể có một vài lý do: 1) Độ dài không đủ——ngay cả khi có đủ bốn loại ký tự, nếu chỉ có 8 ký tự, giá trị entropy khoảng 52 bits, dưới siêu máy tính vẫn có thể bị bẻ khóa tương đối nhanh; 2) Có mẫu lặp lại——như AAAbbb123!!! chứa ký tự lặp lại liên tiếp, công cụ sẽ phát hiện và trừ điểm; 3) Có số liên tục——như 123 trong abc123! là dãy liên tục; 4) Cấu trúc tổng thể có quy luật——như Password1! mặc dù đáp ứng yêu cầu bốn loại ký tự, nhưng Password là từ phổ biến cộng với viết hoa chữ cái đầu và hậu tố số/ký hiệu, dễ bị Dictionary Attack tấn công trúng. Đề xuất độ dài ít nhất 12 ký tự trở lên, và làm cho sắp xếp ký tự ngẫu nhiên nhất có thể.
Mật khẩu nhập vào có được gửi lên máy chủ không? An toàn không?
Hoàn toàn không. Tất cả tính toán phân tích mật khẩu của công cụ này đều hoàn thành cục bộ trong JavaScript trình duyệt của bạn, sau khi nhập mật khẩu sẽ không được gửi qua mạng đến bất kỳ máy chủ bên ngoài nào. Trang sử dụng API crypto.getRandomValues() phía trình duyệt để tạo mật khẩu ngẫu nhiên (đây là giao diện số ngẫu nhiên an toàn mật mã do trình duyệt cung cấp), không phụ thuộc máy chủ. Bạn có thể sử dụng công cụ này ở trạng thái ngắt kết nối mạng, chức năng hoàn toàn bình thường. Sau khi đóng hoặc làm mới trang, mật khẩu đã nhập sẽ tự động xóa, không được lưu trữ liên tục trong trình duyệt.
Tại sao mật khẩu trông có vẻ ngẫu nhiên nhưng kết quả kiểm tra hiển thị không có trong cơ sở dữ liệu mật khẩu phổ biến? Điều này được đánh giá như thế nào?
Công cụ tích hợp một tập dữ liệu mật khẩu yếu phổ biến (commonPasswords), bao gồm hàng nghìn mật khẩu có tần suất xuất hiện cao nhất trong các vụ rò rỉ dữ liệu lịch sử (như mật khẩu tần suất cao được thống kê trong các vụ rò rỉ như rockyou). Nếu mật khẩu của bạn không có trong danh sách này, có nghĩa nó không phải là những mật khẩu yếu được sử dụng rộng rãi. Nhưng cần lưu ý: không có trong cơ sở dữ liệu mật khẩu phổ biến không có nghĩa là an toàn tuyệt đối——nếu mật khẩu chứa thông tin cá nhân (tên phiên âm, ngày sinh, số điện thoại), đường dẫn bàn phím (asdfgh), hoặc tổ hợp từ có ngữ nghĩa, vẫn có thể bị Dictionary Attack có chủ đích bẻ khóa. Mật khẩu an toàn nhất là chuỗi ký tự được tạo hoàn toàn ngẫu nhiên.
Số ngẫu nhiên mà trình tạo mật khẩu sử dụng có an toàn không?
An toàn. Trình tạo mật khẩu sử dụng giao diện crypto.getRandomValues() do trình duyệt cung cấp, đây là CSPRNG (Cryptographically Secure Pseudo-Random Number Generator) do Web Cryptography API cung cấp, chất lượng số ngẫu nhiên của nó cao hơn nhiều so với Math.random(). Nguồn entropy số ngẫu nhiên của crypto.getRandomValues() đến từ nhóm entropy của hệ điều hành (như khoảng thời gian gõ phím, di chuyển chuột, thời gian IO đĩa và các nguồn ngẫu nhiên vật lý khác), không thể dự đoán và không thể tái tạo, thích hợp để tạo mật khẩu, khóa và dữ liệu nhạy cảm an ninh khác. Ký tự mật khẩu tạo ra được rút ra ngẫu nhiên đồng đều từ tập ký tự bạn đã chọn.
Tại sao xếp hạng cường độ của cùng một mật khẩu trên các công cụ khác nhau có thể khác nhau?
Các công cụ kiểm tra độ mạnh mật khẩu khác nhau sử dụng thuật toán và ngưỡng khác nhau, kết quả xếp hạng có thể có sự khác biệt. Các khác biệt phổ biến bao gồm: 1) Cách tính giá trị entropy khác nhau——một số công cụ tính toán đơn giản theo số loại ký tự, một số thực hiện phân tích mẫu chính xác hơn; 2) Kích thước cơ sở dữ liệu mật khẩu phổ biến khác nhau——cơ sở dữ liệu càng đầy đủ, càng nhiều mật khẩu yếu có thể nhận dạng; 3) Ngưỡng cấp độ cường độ khác nhau——bao nhiêu bits được coi là "mạnh" không có tiêu chuẩn thống nhất; 4) Có phát hiện mẫu bàn phím (qwerty, qazwsx), định dạng ngày tháng, ký tự lặp lại và các mẫu khác hay không. Công cụ này áp dụng phương pháp kết hợp Shannon entropy + kiểm tra quy tắc 7 mục, và kiểm tra chuyên biệt đối với mật khẩu yếu phổ biến, xếp hạng tham khảo các tiêu chuẩn phổ biến trong ngành (khuyến nghị NIST, OWASP).
Ký tự đặc biệt bao gồm những gì? Tại sao không hỗ trợ nhiều ký tự đặc biệt hơn?
Tập ký tự đặc biệt của công cụ này là !@#$%^&*-_+=? (tổng cộng 14 ký tự), trình tạo mật khẩu cũng sử dụng tập ký tự này. Điều này là do nhiều trang web có hạn chế đối với ký tự đặc biệt được phép trong mật khẩu——ví dụ dấu nháy đơn, dấu nháy kép, dấu gạch chéo ngược, khoảng trắng, dấu ngoặc nhọn v.v. có ý nghĩa đặc biệt trong SQL, HTML, dòng lệnh, có thể gây ra vấn đề tiêm nhiễm hoặc bị trang web từ chối. Lựa chọn ký tự đặc biệt được sử dụng phổ biến nhất và được chấp nhận rộng rãi nhất có thể đảm bảo mật khẩu tạo ra có thể sử dụng trên đại đa số trang web. Nếu bạn sử dụng các ký tự đặc biệt khác khi nhập mật khẩu thủ công (như %, ~, |, {}[] v.v.), công cụ vẫn sẽ nhận dạng nó là ký tự đặc biệt và tính vào tập ký tự.
Thay đổi mật khẩu định kỳ có thể nâng cao an ninh không?
Theo hướng dẫn mới nhất NIST SP 800-63B, lợi ích an ninh của việc bắt buộc thay đổi mật khẩu định kỳ (như mỗi 90 ngày) là hạn chế, ngược lại có thể dẫn đến người dùng chọn mật khẩu yếu hoặc thực hiện thay đổi nhỏ trên cơ sở mật khẩu cũ (như password1→password2). Chiến lược tốt hơn là: 1) Sử dụng mật khẩu ngẫu nhiên dài đủ mạnh (trên 16 ký tự); 2) Mỗi tài khoản sử dụng mật khẩu duy nhất (quản lý thông qua trình quản lý mật khẩu); 3) Bật 2FA; 4) Thay đổi mật khẩu liên quan ngay lập tức sau khi biết sự cố rò rỉ dữ liệu; 5) Thay đổi mật khẩu ngay lập tức khi phát hiện đăng nhập bất thường. Công cụ này có thể giúp bạn đánh giá độ mạnh mật khẩu hiện tại có cần nâng cấp hay không.
Mật khẩu do trình quản lý mật khẩu tạo ra còn cần kiểm tra bằng công cụ này không?
Nói chung là không cần thiết, mật khẩu tạo ra bởi các trình quản lý mật khẩu chính thống (1Password, Bitwarden, KeePassXC, LastPass v.v.) mặc định sử dụng số ngẫu nhiên an toàn mật mã và tập ký tự đầy đủ, độ dài thường trên 12-20 ký tự, độ mạnh thường ở mức ★★★★ trở lên. Nhưng nếu bạn tùy chỉnh quy tắc tạo của trình quản lý mật khẩu (như loại trừ ký tự đặc biệt, rút ngắn độ dài), có thể sử dụng công cụ này để xác minh giá trị entropy và thời gian bẻ khóa có đáp ứng nhu cầu an ninh của bạn hay không. Ngoài ra, nếu bạn không chắc chắn việc triển khai số ngẫu nhiên của trình quản lý mật khẩu có đáng tin cậy hay không, xác minh lần thứ hai cũng là một thói quen tốt.
Tại sao số liên tục hoặc ký tự lặp lại liên tiếp lại làm giảm an ninh mật khẩu?
Bởi vì công cụ Brute-force Attack và Dictionary Attack không chỉ thử mật khẩu phổ biến, mà còn tạo mật khẩu ứng viên cho các mẫu phổ biến. Số liên tục (123, 456, 789, 012) và ký tự lặp lại liên tiếp (aaa, 111, !!!) là các mẫu tần suất rất cao, xuất hiện trong số lượng lớn mật khẩu. Công cụ bẻ khóa mật khẩu sẽ chuyên biệt tạo ra các biến thể như vậy (như thêm 123, !!!, 2024 và các số năm khác sau từ), mật khẩu chứa các mẫu này tương đương với việc giảm entropy hiệu quả——kẻ tấn công không cần Brute-force tất cả các tổ hợp, chỉ cần thử các mẫu phổ biến là có thể trúng khớp.
Mật khẩu tiếng Trung hoặc ký tự toàn góc có an toàn không?
Đại đa số trang web và hệ thống không hỗ trợ tiếng Trung hoặc ký tự toàn góc làm mật khẩu, bởi vì xử lý mã hóa dễ dàng gây ra vấn đề tương thích. Công cụ này tính bất kỳ ký tự không phải chữ cái-số nào là ký tự đặc biệt, nhưng trong thực tế nếu bạn sử dụng mật khẩu tiếng Trung, có thể gặp các vấn đề như không thể đăng nhập, lỗi mã hóa đa nền tảng. Đề xuất sử dụng mật khẩu bao gồm tập ký tự ASCII (chữ hoa/thường tiếng Anh, số, ký hiệu bán góc), đây là phương án có khả năng tương thích tốt nhất. Nếu hệ thống hỗ trợ mật khẩu Unicode (như một số hệ thống Linux), mật khẩu Unicode có tập ký tự lớn hơn, nhưng cần đảm bảo tất cả các thiết bị đầu cuối đều có thể nhập chính xác.
Rainbow Table attack là gì? Khác biệt với Brute-force Attack là gì?
Brute-force Attack là thử lần lượt tất cả các tổ hợp ký tự có thể; còn Rainbow Table attack là tính toán trước bảng đối chiếu các mật khẩu phổ biến và giá trị băm của chúng (Rainbow Table), khi tấn công tra cứu trực tiếp bảng thay vì tính toán từng lần, tốc độ cực nhanh. Nếu người dùng sử dụng mật khẩu phổ biến, ngay cả khi thuật toán băm rất mạnh (như SHA-256), kẻ tấn công thông qua Rainbow Table có thể tra ngược lại mật khẩu gốc trong vài giây. Phương pháp phòng chống Rainbow Table attack bao gồm: 1) Sử dụng mật khẩu dài đủ ngẫu nhiên (không nằm trong phạm vi phủ sóng của Rainbow Table); 2) Hệ thống sử dụng salted hash (như bcrypt, scrypt, Argon2), làm cho Rainbow Table tính toán trước vô hiệu. Công cụ này kiểm tra cơ sở dữ liệu mật khẩu phổ biến chính là giúp người dùng tránh chọn mật khẩu đã bị Rainbow Table phủ sóng.
Xử lý sự cố
Tại sao sau khi nhập mật khẩu không hiển thị kết quả phân tích?
Kết quả phân tích hiển thị theo thời gian thực sau khi nhập mật khẩu. Nếu sau khi nhập mật khẩu không thấy khu vực kết quả, vui lòng xác nhận: 1) Bạn đã nhập mật khẩu (ô nhập trống không hiển thị kết quả); 2) Trang đã tải hoàn toàn (JavaScript đã được bật và không có lỗi). Nếu vẫn không phản hồi, thử làm mới trang. Phân tích mật khẩu hoàn toàn tiến hành trong trình duyệt cục bộ, không phụ thuộc yêu cầu mạng, làm mới sẽ không làm mất nội dung đã nhập nhưng sẽ xóa nội dung.
Nút tạo mật khẩu sau khi nhấp không có phản ứng?
Nút tạo mật khẩu cần chọn ít nhất một loại ký tự (ít nhất một trong chữ hoa/thường/số/ký hiệu). Nếu không勾选 tất cả các tùy chọn, không thể tạo mật khẩu, mặc định sẽ sử dụng chữ thường+số làm dự phòng. Đề xuất giữ cả bốn tùy chọn chữ hoa, chữ thường, số, ký hiệu đều được勾选 để tạo mật khẩu mạnh nhất. Phạm vi thanh trượt độ dài là 8-64 ký tự. Mật khẩu tạo ra sẽ tự động điền vào ô nhập và phân tích tức thì.
Nút hiển thị/ẩn mật khẩu không hoạt động?
Nút biểu tượng mắt dùng để chuyển đổi thuộc tính type của ô nhập mật khẩu giữa password và text. Nếu sau khi nhấp không chuyển đổi, có thể là bất thường JavaScript của trình duyệt, thử làm mới trang. Lưu ý: trong chế độ password ký tự nhập vào hiển thị dưới dạng dấu chấm (•••), trong chế độ text hiển thị dạng rõ. Khi ở nơi công cộng hoặc quay màn hình đề xuất sử dụng chế độ password.
Mật khẩu của tôi rõ ràng rất phức tạp tại sao xếp hạng không cao?
Kiểm tra các vấn đề phổ biến sau: 1) Độ dài có không đủ hay không? Dưới 12 ký tự ngay cả khi hỗn hợp toàn ký tự dưới siêu máy tính vẫn có thể bị bẻ khóa tương đối nhanh, đề xuất ít nhất 14 ký tự; 2) Có chứa dãy lặp lại hay không? Như AAA111!!! chứa ký tự lặp lại liên tiếp; 3) Có phải từ phổ biến cộng hậu tố hay không? Như Password123! hoặc Qwerty@2024 mặc dù đáp ứng bốn loại ký tự, nhưng cốt lõi là từ phổ biến+hậu tố quy luật; 4) Có phải đường dẫn bàn phím hay không? Như Qazwsx123! là đường dẫn hình chữ Z trên bàn phím, loại mẫu này sẽ được công cụ bẻ khóa ưu tiên thử. Đề xuất sử dụng trình tạo mật khẩu để tạo mật khẩu hoàn toàn ngẫu nhiên.
Thuật ngữ
- Shannon Entropy
- Khái niệm lý thuyết thông tin do Claude Shannon đề xuất, dùng để đo lường cường độ ngẫu nhiên của mật khẩu, đơn vị là bits. Giá trị entropy=độ dài mật khẩu×log₂(kích thước tập ký tự). Giá trị entropy càng cao, số tổ hợp cần thử cho Brute-force Attack càng nhiều.
- Character Pool(Bộ ký tự)
- Kích thước tập hợp của tất cả các ký tự có thể có được sử dụng trong mật khẩu. Chữ thường 26 ký tự, chữ hoa 26 ký tự, số 10 ký tự, ký tự đặc biệt khoảng 33 ký tự. Càng nhiều loại ký tự được sử dụng, bộ ký tự càng lớn, lợi ích entropy mà mỗi ký tự tăng thêm mang lại càng nhiều.
- Brute-force Attack
- Phương thức tấn công đoán mật khẩu bằng cách thử một cách có hệ thống tất cả các tổ hợp ký tự có thể. Thời gian bẻ khóa phụ thuộc vào giá trị entropy mật khẩu và khả năng tính toán của kẻ tấn công, mật khẩu entropy cao có thể làm cho Brute-force Attack trở nên bất khả thi về mặt tính toán.
- Dictionary Attack
- Phương thức tấn công đoán mật khẩu sử dụng danh sách biên dịch trước bao gồm mật khẩu phổ biến, mật khẩu bị rò rỉ, từ vựng và mẫu phổ biến, hiệu quả cao hơn nhiều so với Brute-force Attack thuần túy, là phương tiện tấn công mật khẩu phổ biến nhất trong thực tế.
- Rainbow Table
- Bảng đối chiếu giá trị password hash được tính toán trước, dùng để tra ngược mật khẩu gốc nhanh chóng sau khi lấy được giá trị hash. Sử dụng salted hash và thuật toán băm chậm (bcrypt/Argon2) có thể phòng thủ hiệu quả Rainbow Table attack.
- CSPRNG
- Cryptographically Secure Pseudo-Random Number Generator, bộ tạo số ngẫu nhiên có đầu ra không thể dự đoán và không thể tái tạo. Công cụ này sử dụng giao diện CSPRNG crypto.getRandomValues() của trình duyệt để tạo mật khẩu.
- Common Password
- Mật khẩu xuất hiện với tần suất cao trong nhiều sự cố rò rỉ dữ liệu (như 123456, password, qwerty, admin v.v.). Các mật khẩu này tồn tại trong mọi từ điển bẻ khóa, nên tránh sử dụng hoàn toàn.
- 2FA/MFA
- Two-Factor/Multi-Factor Authentication, ngoài mật khẩu còn cần yếu tố xác thực thứ hai (như mã xác nhận điện thoại, TOTP, khóa bảo mật phần cứng), ngay cả khi mật khẩu bị rò rỉ cũng có thể bảo vệ an ninh tài khoản.
- Passphrase
- Mật khẩu dài bao gồm nhiều từ ngẫu nhiên, đạt giá trị entropy cao thông qua số lượng từ, đồng thời dễ ghi nhớ hơn chuỗi ngẫu nhiên. Ví dụ tổ hợp ngẫu nhiên 4 từ kiểu "correct horse battery staple".
- Password Hash
- Việc sử dụng hàm băm một chiều để chuyển đổi mật khẩu thành chuỗi độ dài cố định không thể đảo ngược để lưu trữ. Khi xác thực so sánh giá trị hash thay vì văn bản rõ, ngay cả khi cơ sở dữ liệu bị rò rỉ cũng không trực tiếp làm lộ mật khẩu. Nên sử dụng thuật toán băm chậm như bcrypt/Argon2.
- Salt
- Chuỗi ngẫu nhiên được gắn vào mật khẩu trước khi tính toán băm, làm cho cùng mật khẩu tạo ra giá trị hash khác nhau, ngăn chặn Rainbow Table attack và bẻ khóa hàng loạt. Mỗi mật khẩu nên có giá trị salt duy nhất.
- crypto.getRandomValues()
- Giao diện tạo số ngẫu nhiên an toàn mật mã do Web Cryptography API cung cấp, được triển khai bởi trình duyệt, nguồn số ngẫu nhiên đến từ nhóm entropy của hệ điều hành, vượt trội hơn nhiều so với Math.random(), thích hợp để tạo mật khẩu và khóa.
Tham khảo giá trị entropy và thời gian bẻ khóa mật khẩu
Tham khảo độ khó bẻ khóa của mật khẩu các giá trị entropy khác nhau trong kịch bản tấn công siêu máy tính (1000 nghìn tỷ lần/giây):
| Entropy(bits) | Tổ hợp điển hình | Thời gian bẻ khóa PC | Thời gian bẻ khóa siêu máy tính | Xếp hạng cường độ |
|---|---|---|---|---|
< 30 | 6 ký tự thuần số, từ phổ biến | < 1 giây | Tức thì | ☆☆☆☆☆ Rất yếu |
30-45 | 8 ký tự thuần chữ thường | Vài giây - vài giờ | < 1 giây | ★☆☆☆☆ Yếu |
45-60 | 8 ký tự chữ hoa/thường+số | Vài ngày - vài năm | Vài giây - vài phút | ★★☆☆☆ Trung bình |
60-80 | 10 ký tự hỗn hợp toàn ký tự | Vài chục năm - vài nghìn năm | Vài giờ - vài ngày | ★★★☆☆ Tốt |
80-100 | 14 ký tự hỗn hợp toàn ký tự | Vài trăm năm trở lên | Vài năm - vài trăm năm | ★★★★☆ Mạnh |
> 100 | 16 ký tự toàn ký tự ngẫu nhiên | Bất khả thi | Nghìn tỷ năm trở lên | ★★★★★ Rất mạnh |
So sánh giá trị entropy của các tổ hợp loại ký tự khác nhau
Sự khác biệt về giá trị entropy lý thuyết và an ninh khi mật khẩu 12 ký tự sử dụng các tổ hợp ký tự khác nhau:
| Tổ hợp ký tự | Bộ ký tự | Entropy 12 ký tự | Bậc số lượng tổ hợp | Đánh giá an ninh |
|---|---|---|---|---|
| Thuần số (0-9) | 10 | ~40 bits | 10¹² | Rất yếu, bẻ khóa tức thì |
| Thuần chữ thường | 26 | ~56 bits | 10¹⁷ | Yếu, bẻ khóa cấp phút |
| Chữ hoa và thường | 52 | ~68 bits | 10²⁰ | Trung bình, bẻ khóa cấp giờ |
| Hoa/thường+số | 62 | ~71 bits | 10²¹ | Tốt, bẻ khóa cấp ngày |
| Hoa/thường+số+ký hiệu | 95 | ~79 bits | 10²³ | Mạnh, bẻ khóa cấp năm |
| 16 ký tự toàn ký tự ngẫu nhiên | 95 | ~105 bits | 10³¹ | Rất mạnh, không thể brute-force |
Giải thích 7 chỉ số kiểm tra an ninh
7 chỉ số an ninh mật khẩu mà công cụ kiểm tra từng mục:
| Mục kiểm tra | Tiêu chuẩn vượt qua | Rủi ro không vượt qua |
|---|---|---|
| Độ dài ≥8 ký tự | Độ dài mật khẩu ít nhất 8 ký tự | Mật khẩu quá ngắn không gian Brute-force nhỏ |
| Chứa chữ hoa | Chứa ít nhất một ký tự A-Z | Bộ ký tự thu nhỏ 26, giảm entropy |
| Chứa chữ thường | Chứa ít nhất một ký tự a-z | Bộ ký tự thu nhỏ 26, giảm entropy |
| Chứa số | Chứa ít nhất một ký tự 0-9 | Bộ ký tự thu nhỏ 10, giảm entropy |
| Chứa ký tự đặc biệt | Chứa ký hiệu không phải chữ cái-số | Bộ ký tự thu nhỏ khoảng 33, giảm entropy |
| Không lặp lại/mẫu liên tục | Không có hơn 3 ký tự giống nhau hoặc số liên tục | Mật khẩu theo mẫu dễ bị tấn công quy tắc trúng |
| Không có trong cơ sở dữ liệu mật khẩu phổ biến | Không có trong danh sách mật khẩu yếu đã biết | Mật khẩu phổ biến bị bẻ khóa tức thì trong từ điển |
Privacy & Security
Tất cả các thao tác của công cụ kiểm tra độ mạnh mật khẩu này đều hoàn thành hoàn toàn cục bộ trên trình duyệt của bạn: mật khẩu bạn nhập chỉ được tính toán giá trị entropy và phân tích an ninh trong JavaScript trình duyệt, sẽ không được gửi qua mạng đến bất kỳ máy chủ bên ngoài nào. Trình tạo mật khẩu sử dụng giao diện crypto.getRandomValues() tích hợp sẵn của trình duyệt để tạo mật khẩu ngẫu nhiên cục bộ, không phụ thuộc máy chủ. Trang không sử dụng Cookie theo dõi, không thu thập mật khẩu người dùng nhập hoặc bất kỳ dữ liệu sử dụng nào. Sau khi đóng hoặc làm mới trang, mật khẩu đã nhập và kết quả phân tích sẽ tự động xóa, không được lưu trữ liên tục trong trình duyệt. Bạn có thể sử dụng công cụ này ở trạng thái ngắt kết nối mạng, tất cả các chức năng hoạt động bình thường.
Authoritative References
- Trình mô phỏng mù màu
- Công cụ chuyển đổi màu
- Công cụ chuyển đổi .htaccess sang Nginx
- Trình chuyển đổi SQL
- Trinh phan tich Cookie
- Trình tạo biểu thức Cron
- Trình xác thực biểu thức Cron
- Định dạng CSS
- Nén CSS
- CSV sang Excel
- Trình chuyển đổi tiền tệ
- Trình kiểm tra khác biệt
- Trình tạo biểu tượng trang web
- Định dạng XML
- Bộ chuyển đổi Thập lục phân
- Định dạng HTML
- Nén HTML
- HTML sang Markdown
- Chuyển Markdown sang HTML
- Trình định dạng JavaScript
- Nén JS
- Công cụ định dạng JSX
- Nén JSX
- Phân cụm từ khóa
- Trình tạo Lorem Ipsum
- Trình tạo bảng Markdown
- Công cụ tạo Meta Tag
- Trình tạo mật khẩu
- Công cụ kiểm tra độ mạnh mật khẩu
- Trình tạo QR Code/Barcode
- Công cụ kiểm tra Regex
- Trình tạo Slug
- Trình tạo SQL
- Công cụ định dạng SQL
- Đếm Từ
- Công cụ thời gian
- Định dạng TS
- Nén TS
- Định dạng TSX
- Nén TSX
- Công cụ chuyển đổi Unix Timestamp
- Trình tạo UUID
- Định dạng YAML
- Chuyển đổi trường hợp