Công cụ này dùng để làm gì
Công Cụ Tính Thời Gian Bẻ Khóa Mật Khẩu ước tính khoảng thời gian mà kẻ tấn công cần để bẻ khóa mật khẩu bằng phương pháp brute force — tức là thử lần lượt mọi tổ hợp có thể. Cách tính dựa hoàn toàn vào kích thước không gian khóa (keyspace) và tốc độ đoán của kẻ tấn công, giúp bạn nhanh chóng hình dung được rằng một mật khẩu dài hơn hay phức tạp hơn thực sự an toàn đến mức nào.
Cách sử dụng
Nhập độ dài mật khẩu (số ký tự), tích chọn các bộ ký tự mà mật khẩu của bạn sử dụng, và đặt số lần đoán mỗi giây của kẻ tấn công. Một dàn GPU hiện đại có thể thực hiện khoảng một tỷ (1.000.000.000) lần đoán mỗi giây với các hàm băm nhanh — đây là giá trị mặc định hợp lý. Kết quả hiển thị thời gian tệ nhất để thử hết toàn bộ không gian khóa, tính theo giây, giờ, ngày và năm.
Giải thích công thức
Tổng số mật khẩu có thể có chính là kích thước bộ ký tự lũy thừa lên theo độ dài: \(C = N^{L}\). Chia con số này cho số lần đoán mỗi giây của kẻ tấn công sẽ ra thời gian để thử hết:
$$T = \frac{N^{L}}{G}$$Kích thước bộ ký tự \(N\) được cộng dồn lại: chữ thường (26), chữ hoa (26), chữ số (10) và ký tự đặc biệt (32), nên nếu kết hợp đầy đủ thì \(N = 94\).
Ví dụ minh họa
Giả sử có một mật khẩu 8 ký tự chỉ gồm chữ thường (\(N = 26\), \(L = 8\)) trước kẻ tấn công đoán 1 tỷ lần/giây. Số tổ hợp =
$$26^{8} = 208\,827\,064\,576$$Thời gian bẻ khóa =
$$\frac{208\,827\,064\,576}{1\,000\,000\,000} \approx 208{,}83 \text{ giây}$$— chưa tới bốn phút. Nếu thêm chữ hoa, chữ số và ký tự đặc biệt (\(N = 94\)) thì cùng độ dài đó sẽ nhảy vọt lên \(94^{8} \approx 6{,}1 \times 10^{15}\) tổ hợp, tức khoảng 70 ngày.
Câu hỏi thường gặp
Kết quả này có chính xác không? Không. Đây chỉ là mức tối đa về lý thuyết cho brute force thuần túy. Kẻ tấn công thực tế còn dùng từ điển, danh sách mật khẩu bị rò rỉ và các mẫu phổ biến, nên một mật khẩu dễ đoán sẽ bị bẻ nhanh hơn rất nhiều so với ước tính này.
Tôi nên dùng tốc độ đoán nào? Điều này phụ thuộc vào hàm băm. Các hàm băm nhanh (MD5, không có salt) cho phép hàng tỷ lần mỗi giây; các hàm băm chậm (bcrypt, Argon2) chỉ cho phép vài nghìn lần. \(G\) càng thấp thì thời gian bẻ khóa càng dài.
Làm sao để tạo mật khẩu mạnh? Độ dài quan trọng hơn độ phức tạp. Mỗi ký tự thêm vào sẽ nhân không gian khóa lên \(N\) lần, nên một cụm mật khẩu (passphrase) dài sẽ khó bẻ hơn nhiều so với một mật khẩu ngắn mà phức tạp.