Trình tạo mật khẩu
Trình tạo mật khẩu trực tuyến miễn phí, tạo mật khẩu mạnh ngẫu nhiên, cụm từ dễ nhớ và mã PIN số dựa trên nguồn ngẫu nhiên an toàn Web Crypto. Hỗ trợ kiểm tra độ mạnh, loại trừ ký tự dễ nhầm lẫn, xuất hàng loạt. Tạo cục bộ trong trình duyệt, không tải lên.
Đề xuất Liên quan
Trình tạo mật khẩu an toàn là gì?
Trình tạo mật khẩu là một công cụ tạo mật khẩu ngẫu nhiên, không thể dự đoán. Khác với mật khẩu do con người thiết kế, trình tạo mật khẩu thực sự sử dụng **Bộ tạo số giả ngẫu nhiên an toàn mật mã học (CSPRNG)** để chọn ngẫu nhiên các ký tự từ nhóm ký tự được chỉ định, tránh các mô hình có thể dự đoán vốn có khi con người đặt mật khẩu (tên+ngày sinh, phím liên tiếp trên bàn phím như qwerty, tên công ty+năm, v.v.), từ đó giảm đáng kể rủi ro bị tấn công nhồi nhét thông tin xác thực, tấn công từ điển và bẻ khóa vũ phu.
**Tại sao không thể sử dụng Math.random()**: Trạng thái nội bộ của bộ tạo số giả ngẫu nhiên thông thường có thể được suy ngược từ một lượng nhỏ đầu ra, kẻ tấn công có thể dự đoán các số «ngẫu nhiên» được tạo ra sau đó. Công cụ này sử dụng crypto.getRandomValues() của Web Crypto API của trình duyệt, gọi cấp thấp CSPRNG cấp hệ điều hành (như getrandom của Linux, SecRandomCopyBytes của macOS, BCryptGenRandom của Windows), các số ngẫu nhiên tạo ra vượt qua kiểm tra ngẫu nhiên mật mã học, không thể dự đoán.
**Cốt lõi của độ mạnh mật khẩu là entropy**: Entropy = log₂(kích thước nhóm ký tự^độ dài mật khẩu), đơn vị là bit. Ví dụ mật khẩu 16 ký tự được chọn ngẫu nhiên từ 94 ký tự ASCII có thể in, entropy khoảng 104 bit, có nghĩa là kẻ tấn công trung bình cần thử 2¹⁰³ lần để tìm thấy mật khẩu đúng — ngay cả khi thử 1 nghìn tỷ lần mỗi giây, cũng cần khoảng 200 tỷ năm.
**Cụm từ dễ nhớ (Passphrase)**: Bao gồm nhiều từ được chọn ngẫu nhiên (như Brave-Cloud-Star42), mặc dù trông «đơn giản» hơn mật khẩu ngẫu nhiên, nhưng nếu các từ được chọn ngẫu nhiên thực sự, tổng entropy có thể đạt trên 60 bit, đủ an toàn cho hầu hết các tình huống, và dễ ghi nhớ hơn nhiều so với mật khẩu ngẫu nhiên có cùng cường độ. Đây cũng là tư tưởng cốt lõi của truyện tranh kinh điển XKCD #936 và phương pháp Diceware.
**Tất cả mật khẩu được tạo cục bộ trong trình duyệt**, không gửi đến bất kỳ máy chủ nào. Công cụ đồng thời cung cấp kiểm tra độ mạnh: tính toán entropy, ước tính thời gian bẻ khóa vũ phu, phát hiện mô hình mật khẩu yếu (ký tự lặp lại, số/chữ cái liên tục, khớp với mật khẩu yếu phổ biến), giúp bạn hiểu độ mạnh bảo mật thực tế của mật khẩu được tạo.
Trường hợp sử dụng
- Tạo mật khẩu mạnh ngẫu nhiên khi đăng ký tài khoản mới, xem entropy và thời gian bẻ khóa, đảm bảo an toàn tài khoản
- Tạo hàng loạt mật khẩu tạm thời cho nhóm hoặc môi trường kiểm tra, phân phối nhanh chóng
- Tạo cụm từ dễ nhớ cho mật khẩu Wi-Fi hoặc mật khẩu thiết bị cần ghi nhớ thủ công
- Đặt mã PIN thiết bị, khởi tạo tài khoản quản trị hoặc đặt lại mật khẩu
- Thay thế mật khẩu yếu, thay thế mật khẩu nhân tạo dễ đoán bằng mật khẩu ngẫu nhiên cường độ cao
Cách Sử dụng
- Chọn chế độ mật khẩu: mật khẩu ngẫu nhiên, cụm từ dễ nhớ hoặc mã PIN số
- Đặt độ dài mật khẩu, tùy chọn tập ký tự (khuyến nghị trên 16 ký tự), có thể bật loại trừ ký tự dễ nhầm lẫn
- Xem kết quả kiểm tra độ mạnh: entropy, ước tính thời gian bẻ khóa, phát hiện mật khẩu yếu
- Sao chép mật khẩu hoặc xuất hàng loạt tệp TXT để đăng ký, đặt lại hoặc phân phối
Tính năng
- Tạo ngẫu nhiên an toàn: Dựa trên nguồn ngẫu nhiên an toàn mật mã học của trình duyệt Web Crypto API (crypto.getRandomValues), tạo mật khẩu ngẫu nhiên không thể dự đoán
- Ba chế độ mật khẩu: Hỗ trợ ba chế độ mật khẩu ngẫu nhiên, cụm từ dễ nhớ (tổ hợp từ) và mã PIN số, bao gồm các mức độ bảo mật khác nhau
- Kiểm tra độ mạnh đầy đủ: Xem kích thước nhóm ký tự, tính toán entropy, phát hiện trùng khớp mật khẩu yếu, rủi ro ký tự lặp lại/liên tục, ước tính thời gian bẻ khóa vũ phu
- Loại trừ ký tự dễ nhầm lẫn: Có thể loại trừ các ký tự dễ nhầm lẫn như 0/O/1/l/I, phù hợp cho tình huống nhập thủ công, đọc qua điện thoại
- Tạo và xuất hàng loạt: Hỗ trợ tạo hàng loạt 5/10/20 mật khẩu, tải xuống TXT một cú nhấp, thuận tiện cho phân phối nhóm và khởi tạo môi trường kiểm tra
- Tạo cục bộ không tải lên: Tất cả mật khẩu được tạo cục bộ trong trình duyệt, không gửi đến bất kỳ máy chủ nào
Mật khẩu ngẫu nhiên vs Cụm từ dễ nhớ vs Mã PIN số: Nên chọn cái nào?
Ba chế độ mật khẩu đều có sự đánh đổi. Chọn sai chế độ có thể khiến bạn không nhớ được, dễ bị đánh cắp, hoặc không phù hợp với tình huống. Dựa trên «ai nhớ, ai nhập, ai lưu trữ» để chọn sẽ tránh được nhiều rắc rối.
| Chế độ | Câu hỏi điển hình khi chọn | Độ mạnh bảo mật | Dễ sử dụng | Người dùng điển hình |
|---|---|---|---|---|
| Mật khẩu ngẫu nhiên | «Tôi không bao giờ gõ tay, chỉ để trình quản lý mật khẩu tự điền» | Cao (16 ký tự đạt ~104 bit) | Kém (không nhớ được, phải dùng kèm trình quản lý) | Email chính, ngân hàng, mạng xã hội, khóa API |
| Cụm từ dễ nhớ | «Tôi cần có thể đọc, gõ tay, và vẫn đủ an toàn» | Trung bình cao (5-6 từ Diceware ≈ 64-77 bit) | Tốt (con người có thể đọc, phát âm được) | Mật khẩu chính, Wi-Fi, mật khẩu cần nhập trên nhiều thiết bị |
| Mã PIN số | «Chỉ dùng 0-9, bị giới hạn bởi thiết bị» | Thấp (6 số chỉ ~20 bit, 10 số cũng chỉ ~33 bit) | Tốt (chỉ cần bàn phím số là nhập được) | Màn hình khóa thiết bị, PIN thẻ ngân hàng, mã xác minh một lần |
Best Practices
Lưu vào trình quản lý mật khẩu ngay sau khi tạo, đừng để lâu trên màn hình
Mật khẩu mạnh mới tạo ở trạng thái «toàn bộ văn bản rõ», nằm trong bộ nhớ tạm, màn hình, lịch sử trình duyệt đều là điểm rủi ro. Tạo → điền ngay vào trang web đích → dọn bộ nhớ tạm, ba bước này không nên chèn việc khác vào giữa. **Tuyệt đối không** chụp màn hình mật khẩu lưu vào album, càng không nên viết ra giấy rồi chụp ảnh gửi cho người khác. Mật khẩu của công cụ này chỉ tồn tại trên trang hiện tại, tải lại hoặc đóng trang là mất, vì vậy hãy chuẩn bị sẵn nơi lưu trữ trước khi nhấn tạo.
Mật khẩu tạo ra có được tải lên máy chủ không?Mật khẩu chính dùng «cụm từ dễ nhớ dài», các tài khoản khác dùng mật khẩu ngẫu nhiên 16-20 ký tự
Chiến lược phân lớp: mật khẩu chính (để mở khóa trình quản lý mật khẩu) phải con người nhớ được và đủ mạnh → chọn cụm từ dễ nhớ Diceware 5-6 từ. 99% trang web/dịch vụ còn lại dùng mật khẩu ngẫu nhiên 16-20 ký tự + trình quản lý mật khẩu tự điền. **Đừng** dùng cụm từ dễ nhớ cho mọi trang web (không nhớ nổi, dễ bị yếu đi), cũng **đừng** dùng mật khẩu ngẫu nhiên cho cả mật khẩu chính (bạn sẽ phải viết ra, an toàn trở về 0). Đây là tư tưởng phân lớp cốt lõi của quản lý mật khẩu.
Mật khẩu dài bao lâu thì an toàn?Mật khẩu ngẫu nhiên hay cụm từ dễ nhớ an toàn hơn?Chỉ loại trừ ký tự dễ nhầm lẫn khi cần nhập thủ công
Loại trừ các ký tự dễ nhầm lẫn như 0/O/1/l/I sẽ làm giảm đáng kể kích thước nhóm ký tự (cùng độ dài entropy giảm 5-10 bit), **chỉ nên bật khi cần nhập thủ công, đọc qua điện thoại, hoặc in ra phân phối**. Nếu mật khẩu chỉ dùng trong trình quản lý mật khẩu, giữ lại tất cả ký tự có thể in sẽ có entropy cao hơn. Một cách phán đoán đơn giản: «Mật khẩu này có khi nào tôi phải gõ tay bằng ngón tay không?» — có thì loại trừ, không thì đừng loại trừ.
Tại sao nên loại trừ các ký tự dễ nhầm lẫn (0/O/1/l/I)?Tạo hàng loạt chỉ dùng cho kịch bản kiểm thử/phân phối, không dùng cho tài khoản sản xuất theo cùng cách
Quy trình tạo hàng loạt 5/10/20 mật khẩu chủ yếu phù hợp với: khởi tạo môi trường kiểm thử, phân phối tài khoản tạm, tạo mã mời, xuất khóa API một lần. **Đừng** lấy một mật khẩu từ kết quả tạo hàng loạt để dùng lại cho tài khoản sản xuất của bạn — mật khẩu tạo hàng loạt thường theo cùng quy tắc, đặc trưng rõ ràng (tập ký tự, độ dài, loại trình tạo), một khi tài khoản nào đó bị lộ, kẻ tấn công có thể đoán được sự khác biệt cấu trúc của các mật khẩu hàng loạt khác. Mật khẩu tài khoản sản xuất hãy tạo riêng, lưu riêng.
Tạo cục bộ không tải lênMật khẩu mới phải kết hợp với 2FA mới thực sự an toàn
Dù mạnh đến đâu, mật khẩu cũng bất lực trước lừa đảo, keylogger, rò rỉ kho mật khẩu, hoặc nội gián nhà mạng. **Mọi tài khoản quan trọng (email, ngân hàng, mạng xã hội, cloud) phải bật xác thực hai yếu tố (2FA)**, TOTP (Google Authenticator / Authy) > khóa phần cứng (YubiKey) > SMS. **Tránh dùng 2FA qua SMS** (có thể bị vượt qua bằng tấn công hoán đổi SIM). Mật khẩu mạnh + 2FA + trình quản lý mật khẩu, thiếu một là không đủ, 2FA là lớp bảo hiểm cuối cùng khi mật khẩu bị lộ.
NIST SP 800-63B - Hướng dẫn Nhận dạng Kỹ thuật sốMật khẩu nghi bị lộ hãy kiểm tra HIBP trước khi quyết định đặt lại
Khi nghi ngờ mật khẩu bị lộ (thấy tin tức trang web nào đó bị đánh cắp dữ liệu, nhận email lừa đảo, v.v.), đừng vội đổi mật khẩu — hãy dùng API Pwned Passwords của Have I Been Pwned (HIBP) để kiểm tra mật khẩu này có thực sự xuất hiện trong kho lộ không. HIBP cung cấp API k-anonymity, công cụ này sau này có thể tích hợp; hiện tại bạn có thể truy cập haveibeenpwned.com/Passwords và tra bằng 5 ký tự đầu của SHA-1. Chỉ khi xác nhận có trong kho mới cần đổi mật khẩu khẩn cấp, mật khẩu chưa bị lộ thì không cần ép buộc đổi vì «an tâm tâm lý» (NIST đã khẳng định không khuyến nghị đổi mật khẩu định kỳ).
Have I Been Pwned - Kiểm tra rò rỉ mật khẩuCâu hỏi Thường gặp
Tại sao sử dụng Web Crypto API thay vì Math.random()?
Math.random() là bộ tạo số giả ngẫu nhiên thông thường, không được thiết kế cho các tình huống bảo mật, trạng thái nội bộ có thể bị suy ngược. crypto.getRandomValues() sử dụng nguồn ngẫu nhiên an toàn mật mã học (CSPRNG) của hệ điều hành, tạo số ngẫu nhiên không thể dự đoán, phù hợp cho các tình huống bảo mật như mật khẩu, khóa.
Mật khẩu tạo ra có được tải lên máy chủ không?
Không. Tất cả mật khẩu được tạo cục bộ trong trình duyệt, phân tích độ mạnh, tính toán entropy và ước tính thời gian bẻ khóa cũng hoàn toàn thực hiện cục bộ. Mở bảng điều khiển mạng của công cụ nhà phát triển có thể xác nhận không có yêu cầu mạng ngoài.
Mật khẩu dài bao lâu thì an toàn?
Khuyến nghị ít nhất 12 ký tự bao gồm chữ hoa+chữ thường+số+ký hiệu. Mật khẩu ngẫu nhiên 16 ký tự cần hàng trăm triệu năm để bẻ khóa vũ phu với sức mạnh tính toán hiện đại. Mỗi khi tăng độ dài thêm một ký tự, không gian tìm kiếm tăng theo cấp số nhân. Tham khảo bảng thời gian bẻ khóa ở trên.
Mật khẩu ngẫu nhiên hay cụm từ dễ nhớ an toàn hơn?
Với cùng độ dài, mật khẩu ngẫu nhiên có entropy cao hơn. Nhưng cụm từ dễ nhớ (bao gồm 4-6 từ ngẫu nhiên) cũng có tổng entropy đủ cao (trên ~60bit), và dễ ghi nhớ hơn, phù hợp cho các tình huống cần nhập thủ công. Điểm quan trọng là các từ phải được chọn ngẫu nhiên thực sự, không phải cụm từ do bạn tự nghĩ ra.
Tại sao nên loại trừ các ký tự dễ nhầm lẫn (0/O/1/l/I)?
Các ký tự này khó phân biệt trong một số phông chữ, dễ gây lỗi nhập. Nếu mật khẩu cần được nhập thủ công, đọc qua điện thoại hoặc in ra để phân phối, khuyến nghị bật tùy chọn loại trừ. Nếu chỉ được sử dụng bởi trình quản lý mật khẩu, giữ lại tất cả các ký tự sẽ có entropy cao hơn.
Thay đổi mật khẩu định kỳ có an toàn hơn không?
Hướng dẫn mới nhất của NIST (SP 800-63B) không còn khuyến nghị thay đổi mật khẩu định kỳ, trừ khi xác nhận mật khẩu đã bị rò rỉ. Việc buộc thay đổi định kỳ ngược lại khiến người dùng chọn mật khẩu yếu hoặc viết ra. Cách tốt hơn là: sử dụng mật khẩu ngẫu nhiên dài + trình quản lý mật khẩu + bật xác thực hai yếu tố (2FA).
Entropy mật khẩu là gì?
Entropy đo lường tính không thể dự đoán của mật khẩu, đơn vị là bit. Entropy = log₂(kích thước nhóm ký tự^độ dài mật khẩu). Ví dụ mật khẩu 16 ký tự được chọn ngẫu nhiên từ 94 ký tự ASCII có thể in, entropy là log₂(94¹⁶) ≈ 104 bit. Entropy càng cao, bẻ khóa vũ phu càng khó.
Thuật ngữ
- CSPRNG (Bộ tạo số giả ngẫu nhiên an toàn mật mã học)
- Cryptographically Secure Pseudo-Random Number Generator, bộ tạo số ngẫu nhiên vượt qua kiểm tra ngẫu nhiên mật mã học nghiêm ngặt. Đầu ra không thể dự đoán, ngay cả khi kẻ tấn công biết nhiều đầu ra lịch sử cũng không thể suy luận đầu ra sau đó. Web Crypto API của trình duyệt cấp thấp sử dụng CSPRNG.
- Entropy mật khẩu
- Chỉ số đo lường tính không thể dự đoán của mật khẩu, đơn vị là bit. Công thức tính: entropy = log₂(N^L), trong đó N là kích thước nhóm ký tự, L là độ dài mật khẩu. Entropy càng cao, bẻ khóa vũ phu càng khó. Thường trên 60 bit là an toàn, trên 100 bit là cực mạnh.
- Tấn công vũ phu (Brute Force Attack)
- Phương thức tấn công thử tất cả các tổ hợp ký tự có thể để đoán mật khẩu. Phương pháp phòng thủ là sử dụng mật khẩu ngẫu nhiên đủ dài, làm cho số tổ hợp lớn đến mức không thể liệt kê về mặt vật lý.
- Tấn công từ điển (Dictionary Attack)
- Phương thức tấn công sử dụng danh sách mật khẩu phổ biến (như 123456, password, qwerty, v.v.) để đoán. Hiệu quả hơn nhiều so với tấn công vũ phu, vì đại đa số người dùng sử dụng mật khẩu yếu phổ biến. Mật khẩu tạo ngẫu nhiên miễn dịch tự nhiên với tấn công từ điển.
- Tấn công nhồi nhét thông tin xác thực (Credential Stuffing)
- Sử dụng tên người dùng và mật khẩu bị rò rỉ từ một trang web để thử đăng nhập vào các trang web khác. Phương pháp phòng thủ là sử dụng mật khẩu duy nhất cho mỗi trang web và kiểm tra mật khẩu đã bị rò rỉ thông qua Have I Been Pwned.
- Cụm từ dễ nhớ (Passphrase)
- Mật khẩu/cụm từ bao gồm nhiều từ ngẫu nhiên. So với mật khẩu ký tự ngẫu nhiên, cụm từ từ dễ ghi nhớ hơn, khi số từ đủ lớn entropy cũng rất cao. Diceware là phương pháp tạo cụm từ dễ nhớ nổi tiếng nhất, sử dụng xúc xắc để chọn ngẫu nhiên từ danh sách 7772 từ.
- Diceware
- Phương pháp tạo cụm từ do Arnold Reinhold phát minh vào năm 1995, sử dụng 5 con xúc xắc để xác định một từ (chọn từ danh sách 7776 từ). 6 từ Diceware có entropy khoảng 77 bit, đủ an toàn để chống lại tấn công vũ phu.
- NIST SP 800-63B
- Hướng dẫn xác nhận danh tính kỹ thuật số do Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ ban hành, là tài liệu tham khảo có thẩm quyền nhất trong lĩnh vực bảo mật mật khẩu. Sau khi cập nhật năm 2017, không còn khuyến nghị thay đổi mật khẩu định kỳ, không còn bắt buộc ký tự đặc biệt, thay vào đó nhấn mạnh độ dài mật khẩu, phát hiện danh sách đen và xác thực đa yếu tố.
- Xác thực hai yếu tố (2FA/MFA)
- Yêu cầu phương thức xác minh danh tính thứ hai ngoài mật khẩu (như mã xác minh điện thoại, TOTP, khóa phần cứng), ngay cả khi mật khẩu bị rò rỉ cũng có thể bảo vệ an toàn tài khoản. NIST khuyến nghị bật 2FA cho tất cả các tài khoản quan trọng.
- Danh sách đen mật khẩu yếu
- Danh sách mật khẩu đã bị rò rỉ công khai, cực kỳ phổ biến hoặc chứa mô hình có thể dự đoán. Như 123456, password, admin, qwerty, v.v. NIST khuyến nghị kiểm tra xem có trong danh sách đen khi đăng ký và thay đổi mật khẩu hay không.
Ước tính độ dài mật khẩu và thời gian bẻ khóa (chữ hoa+chữ thường+số+ký hiệu)
| Độ dài mật khẩu | Entropy(bit) | Số tổ hợp | Thời gian bẻ khóa vũ phu (1 nghìn tỷ lần/giây) | Xếp hạng an toàn |
|---|---|---|---|---|
6 ký tự | ~37 | khoảng 139 tỷ | < 1 giây | ❌ Rất yếu |
8 ký tự | ~52 | khoảng 2.2×10¹⁴ | khoảng 2.5 ngày | ❌ Yếu |
10 ký tự | ~65 | khoảng 3.7×10¹⁸ | khoảng 116 năm | ⚠️ Trung bình |
12 ký tự | ~78 | khoảng 6.1×10²² | khoảng 1.93 triệu năm | ✅ Mạnh |
16 ký tự | ~104 | khoảng 6.3×10³⁰ | khoảng 200 tỷ năm | ✅✅ Rất mạnh |
20 ký tự | ~131 | khoảng 6.7×10³⁸ | hàng nghìn tỷ lần tuổi vũ trụ | ✅✅✅ Không thể bẻ khóa |
So sánh ba chế độ mật khẩu
| Chế độ | Ví dụ định dạng | Entropy điển hình | Khả năng ghi nhớ | Trường hợp khuyến nghị |
|---|---|---|---|---|
| Mật khẩu ngẫu nhiên | xK9#mP2$vL8@nQ4! | ~6.5bit/ký tự | Kém | Mật khẩu chính cho trình quản lý mật khẩu, mật khẩu cơ sở dữ liệu, khóa API |
| Cụm từ dễ nhớ | Brave-Cloud-Star42 | ~10bit/từ | Tốt | Mật khẩu Wi-Fi, mật khẩu đăng nhập cần ghi nhớ thủ công |
| Mã PIN số | 482917 | 3.3bit/số | Tốt | Màn hình khóa thiết bị, PIN thẻ ngân hàng, mã xác minh một lần |
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