Cách sử dụng
- Dùng thanh trượt để đặt độ dài hoặc nhập chính xác số ký tự (4–128).
- Chọn loại ký tự cần dùng. Chỉnh sửa danh sách ký hiệu nếu trang web chỉ chấp nhận một số ký hiệu nhất định.
- Bạn có thể loại trừ các ký tự dễ nhầm lẫn. Bật “Dùng mỗi loại đã chọn ít nhất một lần” nếu trang web có quy tắc về thành phần mật khẩu.
- Sao chép một mật khẩu hoặc chọn “Sao chép tất cả” để sao chép mọi mật khẩu, mỗi mật khẩu trên một dòng. Nhấn “Tạo lại” để tạo bộ mật khẩu mới.
Cách hoạt động
Mỗi ký tự được chọn bằng crypto.getRandomValues, bộ tạo số ngẫu nhiên an toàn về mặt mật mã được tích hợp trong trình duyệt. Công cụ không bao giờ dùng Math.random. Để chọn một ký tự từ tập gồm n ký tự, công cụ tạo một số ngẫu nhiên 32 bit và loại bỏ các giá trị nằm trong phần dư nhỏ phía trên bội số lớn nhất của n. Phương pháp lấy mẫu loại bỏ này tránh thiên lệch modulo, nhờ đó mọi ký tự trong tập đều có xác suất được chọn như nhau.
Khi bật “Dùng mỗi loại đã chọn ít nhất một lần”, trước tiên công cụ chọn một ký tự từ mỗi loại đã chọn, điền các vị trí còn lại từ tập ký tự gộp, rồi xáo trộn tất cả vị trí bằng thuật toán Fisher–Yates sử dụng cùng một nguồn ngẫu nhiên không thiên lệch. Nhờ vậy, các ký tự được đảm bảo không phải lúc nào cũng xuất hiện ở đầu mật khẩu.
Giá trị entropy được tính bằng log2(kích thước tập ký tự) × độ dài. Mật khẩu dài 16 ký tự từ toàn bộ 89 ký tự mặc định có khoảng 103 bit entropy; mật khẩu dài 20 ký tự có khoảng 129 bit. Quy tắc “dùng mỗi loại” làm giảm nhẹ số mật khẩu có thể tạo, nên entropy thực tế thấp hơn một chút so với con số hiển thị. Các mức đánh giá chỉ mang tính tham khảo: dưới 28 bit là rất yếu, 28–39 bit là yếu, 40–59 bit là trung bình, 60–99 bit là mạnh và từ 100 bit trở lên là rất mạnh. Entropy chỉ mô tả mật khẩu được tạo ngẫu nhiên như thế này; không cho biết mức độ an toàn của mật khẩu do con người tự nghĩ ra.
Ví dụ
Mật khẩu cho mục lưu trong trình quản lý mật khẩu
Giữ nguyên các tùy chọn mặc định (20 ký tự, đủ cả bốn loại). Kết quả có khoảng 129 bit entropy, vượt xa mức có thể đoán được, và trình quản lý mật khẩu sẽ ghi nhớ giúp bạn.
Trang web không chấp nhận một số ký hiệu
Nếu ngân hàng chỉ chấp nhận !@#$%, hãy thay danh sách ký hiệu bằng năm ký tự đó. Tập ký tự giảm còn 67 ký tự, nên mật khẩu dài 16 ký tự vẫn có khoảng 97 bit entropy.
Mật khẩu Wi-Fi cần nhập trên TV
Tắt ký hiệu và loại trừ các ký tự dễ nhầm lẫn. Không dùng I, l, 1, O, 0 và o, mật khẩu dài 16 ký tự từ 56 chữ cái và chữ số còn lại sẽ dễ đọc thành tiếng mà vẫn có khoảng 93 bit entropy.
Câu hỏi thường gặp
Mật khẩu nên dài bao nhiêu?
Với các tài khoản được bảo vệ bằng trình quản lý mật khẩu, 16–20 ký tự ngẫu nhiên là đủ. Nếu bạn thường xuyên phải nhập mật khẩu, mật khẩu dài hơn chỉ gồm chữ cái và chữ số sẽ dễ nhập hơn mà vẫn có thể mạnh tương đương mật khẩu ngắn hơn có ký hiệu.
Tạo mật khẩu trên một trang web có an toàn không?
Trang này tạo mật khẩu hoàn toàn trong trình duyệt bằng nguồn ngẫu nhiên an toàn của hệ điều hành. Mật khẩu không được gửi lên máy chủ, lưu lại hay đưa vào dữ liệu phân tích. Sau khi trang tải xong, bạn có thể ngắt kết nối internet mà công cụ vẫn hoạt động.
Vì sao loại trừ các ký tự dễ nhầm lẫn lại làm giảm entropy?
Entropy phụ thuộc vào số ký tự có thể xuất hiện ở mỗi vị trí. Loại bỏ ký tự sẽ làm tập ký tự nhỏ hơn, nên mỗi ký tự đóng góp ít bit hơn một chút. Tăng độ dài thêm vài ký tự sẽ bù lại phần này.
“Thiên lệch modulo” là gì và vì sao cần tránh?
Cách tạo đơn giản sẽ lấy một số ngẫu nhiên rồi dùng số dư sau khi chia cho kích thước tập ký tự. Nếu kích thước tập không chia hết phạm vi số ngẫu nhiên, một số ký tự sẽ xuất hiện thường xuyên hơn một chút. Công cụ này loại bỏ phần dư không đồng đều rồi tạo số khác, nhờ đó mọi ký tự đều có xác suất như nhau.
Quyền riêng tư
Mật khẩu được tạo trong trình duyệt bằng crypto.getRandomValues. Mật khẩu không được tải lên, lưu trữ, ghi nhật ký hay gửi vào dữ liệu phân tích; chỉ ghi nhận một sự kiện ẩn danh cho biết công cụ đã được sử dụng. Khi sao chép, công cụ dùng khay nhớ tạm trên thiết bị của bạn.