Công cụ tạo mật khẩu tạo ra những mật khẩu ngẫu nhiên khó đoán hơn rất nhiều so với mật khẩu do con người tự nghĩ. Lập trình viên và người học dùng chúng cho tài khoản thử nghiệm, trang quản trị, thông tin đăng nhập cơ sở dữ liệu, đăng ký dashboard, secret trong CI và để luyện thói quen bảo mật cá nhân.
Ý tưởng cốt lõi là *entropy*: mức độ khó đoán của một mật khẩu. Mật khẩu dài hơn, khó đoán hơn sẽ mạnh hơn rất nhiều, kể cả khi cả hai đều trông ngẫu nhiên với con người. Mỗi tài khoản một mật khẩu riêng, lưu trong một trình quản lý mật khẩu đáng tin cậy, sẽ loại bỏ phần lớn rủi ro đến từ việc dùng lại mật khẩu.
Một công cụ tạo mật khẩu thực thụ phải lấy tính ngẫu nhiên từ nguồn an toàn: window.crypto.getRandomValues trong trình duyệt, secrets trong Python, crypto.randomBytes trong Node.js. Bất cứ thứ gì dựa trên Math.random() hay bộ sinh số ngẫu nhiên đơn giản lấy hạt giống từ thời gian đều đủ dễ đoán để bị tấn công.
Bạn sẽ học được gì khi tạo mật khẩu
Độ dài thường quan trọng hơn các mẹo thay ký tự như @ thay cho a: một mật khẩu 20 ký tự toàn chữ thường mạnh hơn mật khẩu 10 ký tự có ký hiệu.
Tính ngẫu nhiên phải đến từ nguồn an toàn về mật mã như window.crypto, không phải từ Math.random().
Mỗi tài khoản một mật khẩu riêng giúp hạn chế thiệt hại nếu một trang web hay cơ sở dữ liệu bị xâm phạm.
Một *passphrase* ngẫu nhiên dài (từ bốn đến sáu từ không liên quan) có thể mạnh ngang một chuỗi ngẫu nhiên 20 ký tự mà lại dễ gõ hoặc đọc hơn.
Cách tạo mật khẩu mạnh từng bước
1
Chọn độ dài
Nhắm ít nhất 16 ký tự cho tài khoản quan trọng, từ 20 ký tự trở lên cho thông tin đăng nhập quản trị hoặc root. Tăng độ dài hiệu quả hơn mọi tinh chỉnh khác.
2
Chọn loại ký tự
Bật chữ thường, chữ hoa, chữ số và ký hiệu để có kết quả mạnh nhất. Nếu bạn sẽ đọc mật khẩu bằng giọng nói hoặc sao chép qua nhiều hệ thống, bạn có thể tắt ký hiệu.
3
Loại bỏ ký tự dễ nhầm (tùy chọn)
Bật tùy chọn bỏ qua O / 0 và l / 1 / I nếu mật khẩu có thể phải đọc to hoặc gõ tay.
4
Tạo mật khẩu và xem thanh đo độ mạnh
Thanh đo ước tính thời gian cần để dò ra mật khẩu bằng vét cạn (brute force). Mức nào thuộc nhóm mạnh nhất cũng ổn cho tài khoản cá nhân.
5
Lưu vào trình quản lý mật khẩu
Sao chép mật khẩu vào một trình quản lý mật khẩu đáng tin cậy, đừng bao giờ dán vào chat, email hay giấy ghi chú. Không dùng lại nó cho tài khoản khác.
Bảng tra nhanh độ mạnh mật khẩu
Thời gian vét cạn ước tính với giả định 10 tỷ lần đoán mỗi giây, tương đương công cụ bẻ khóa ngoại tuyến hiện đại. Hãy dùng bảng này làm tham khảo gần đúng khi chọn độ dài. Hướng dẫn chính thức: NIST SP 800-63B và OWASP Authentication Cheat Sheet.
Độ dài
Bộ ký tự
Độ mạnh ước tính
8
chữ thường + chữ số (36 ký tự)
Bị bẻ trong vài giây
10
chữ thường + chữ hoa + chữ số (62)
Bị bẻ trong vài giờ
12
chữ thường + chữ hoa + chữ số + ký hiệu (94)
Vài ngày đến vài tuần
16
chữ thường + chữ hoa + chữ số + ký hiệu
Hàng thế kỷ
20
chữ thường + chữ hoa + chữ số + ký hiệu
Gần như không thể bẻ với công nghệ hiện nay
4 từ
Passphrase từ các từ ngẫu nhiên (correct horse battery staple)
Mức mặc định thực tế cho dashboard, ứng dụng web và hầu hết tài khoản cá nhân. 20 ký tự với cả bốn loại ký tự hiện được xem là gần như không thể bẻ khóa.
So sánh chỉ theo độ dài
8 ký tự (yếu)
f7Bk2pQz
24 ký tự (mạnh)
f7Bk2pQzM!eV9rT&hG3wXn$L
Mật khẩu ngắn hơn dùng cùng loại ký tự nhưng yếu hơn rất nhiều bậc độ lớn. Độ dài gần như luôn thắng.
Passphrase dễ đọc
Passphrase
lantern-vivid-comet-nimbus-quartz
Năm từ ngẫu nhiên không liên quan nhau mạnh xấp xỉ một mật khẩu ngẫu nhiên 16 ký tự, nhưng dễ gõ, dễ đọc và dễ nhớ hơn nhiều.
Lỗi thường gặp với mật khẩu
Dùng lại cùng một mật khẩu đã tạo cho nhiều tài khoản: một trang bị lộ là kéo theo tất cả.
Chọn mật khẩu ngắn vì nó có ký hiệu, rồi cho rằng chỉ riêng ký hiệu đã đủ mạnh. Độ dài mới là đòn bẩy lớn hơn.
Lưu thông tin đăng nhập production trong mã nguồn, ảnh chụp màn hình, tin nhắn chat hay ghi chú bài học: hãy dùng biến môi trường và trình quản lý secret.
Tạo mật khẩu bằng Math.random() hoặc bộ sinh số ngẫu nhiên đơn giản dựa trên thời gian trong code của bạn. Luôn dùng API mật mã của nền tảng.
Ghi mật khẩu ra giấy ghi chú thay vì dùng trình quản lý mật khẩu. Tờ giấy ghi chú chính là mắt xích yếu nhất.
Câu hỏi thường gặp về tạo mật khẩu
Làm sao tạo mật khẩu mạnh?
Dùng công cụ tạo mật khẩu và chọn độ dài ít nhất 16 ký tự với cả bốn loại ký tự (chữ thường, chữ hoa, chữ số, ký hiệu). Lưu kết quả thẳng vào trình quản lý mật khẩu, đừng cố nhớ hay gõ tay.
Điều gì làm nên một mật khẩu mạnh?
Độ dài, tính ngẫu nhiên và tính duy nhất. Một mật khẩu dài, ngẫu nhiên, tạo từ bộ sinh số an toàn và chỉ dùng cho đúng một tài khoản là tiêu chuẩn vàng.
Có nên dùng công cụ tạo mật khẩu cho mọi tài khoản không?
Có. Mật khẩu được tạo tự động, riêng cho từng tài khoản và lưu trong trình quản lý mật khẩu đáng tin cậy là cách phòng thủ đơn giản và mạnh nhất trước tấn công credential stuffing.
Mật khẩu mạnh có bắt buộc phải có ký hiệu không?
Ký hiệu có giúp ích, nhưng độ dài và tính ngẫu nhiên quan trọng hơn. Một passphrase ngẫu nhiên dài (tower-citrus-bronze-quay-pear) có thể mạnh ngang một mật khẩu ngắn hơn đầy ký hiệu mà lại dễ dùng hơn.
Công cụ tạo mật khẩu này có an toàn không?
Có. Công cụ của Coddy chạy hoàn toàn trên trình duyệt của bạn bằng window.crypto.getRandomValues. Mật khẩu được tạo ngay trên máy và không bao giờ được gửi lên máy chủ.
Có thể dùng mật khẩu đã tạo trong code của mình không?
Hãy dùng biến môi trường, trình quản lý secret hoặc kho lưu trữ được mã hóa. Đừng hardcode thông tin đăng nhập thật trong tệp mã nguồn, kể cả trong repository riêng tư.