Kiểm tra mật khẩu đã bị lộ chưa: cơ chế k-Anonymity và ý nghĩa thật của kết quả
Công cụ đối chiếu mật khẩu của bạn với kho dữ liệu mật khẩu đã rò rỉ của dịch vụ Have I Been Pwned mà không gửi mật khẩu đi. Trình duyệt tự băm mật khẩu bằng SHA-1, chỉ gửi 5 ký tự đầu của mã băm lên máy chủ, rồi so phần còn lại ngay trên máy bạn.
Tính năng nổi bật
- Băm mật khẩu bằng SHA-1 ngay trên trình duyệt qua giao diện mã hóa có sẵn của trình duyệt
- Chỉ gửi 5 ký tự đầu của mã băm lên dịch vụ tra cứu, không gửi mật khẩu và không gửi cả mã băm
- Đối chiếu phần đuôi mã băm ngay trên máy bạn với danh sách nhận về
- Cho biết mật khẩu đã xuất hiện bao nhiêu lần trong các vụ rò rỉ đã ghi nhận
- Nút hiện và ẩn ký tự để bạn kiểm tra mình gõ đúng trước khi tra
- Nhấn phím Enter là tra ngay, không cần rời tay khỏi bàn phím
- Kèm sáu nguyên tắc đặt mật khẩu an toàn ngay dưới ô nhập
- Không lưu mật khẩu, không ghi lịch sử tra cứu
Mật khẩu đã lộ nguy hiểm hơn mật khẩu yếu
Một mật khẩu yếu như abc123 nguy hiểm vì dễ đoán, nhưng kẻ tấn công vẫn phải thử. Một mật khẩu đã nằm trong kho dữ liệu rò rỉ thì khác hẳn: nó đã có sẵn trong danh sách mà công cụ tấn công tự động chạy đầu tiên, kể cả khi nhìn nó có vẻ rất phức tạp. Nghĩa là một chuỗi kiểu chữ số ký tự đặc biệt lẫn lộn mà bạn tưởng chỉ mình biết vẫn có thể bị thử ngay trong vài giây đầu, nếu nó đã lộ từ một dịch vụ nào đó mà bạn từng đăng ký và quên mất. Kiểu tấn công này gọi là nhồi thông tin đăng nhập: kẻ tấn công lấy cặp email và mật khẩu lộ từ một trang, rồi thử tự động lên hàng trăm dịch vụ khác. Chỉ cần bạn từng dùng lại mật khẩu ở một nơi nữa là đủ. Kiểm tra mật khẩu là bước rẻ nhất và nhanh nhất để biết mình có đang nằm trong nhóm rủi ro đó hay không.
Lợi ích khi sử dụng
- Biết ngay mật khẩu có nằm trong danh sách bị tấn công thử đầu tiên hay không
- Không phải đánh đổi bằng việc gửi mật khẩu cho một dịch vụ lạ
- Con số lần xuất hiện cho biết mức độ phổ biến, càng cao càng nguy hiểm
- Kiểm tra được cả những mật khẩu cũ mà bạn còn dùng lại ở đâu đó
- Chỉ mất vài giây nên có thể rà toàn bộ mật khẩu quan trọng trong một buổi
Cách kiểm tra mật khẩu
- 1Gõ hoặc dán mật khẩu cần kiểm tra vào ô nhập, có thể bấm biểu tượng con mắt để hiện ký tự và xác nhận mình gõ đúng.
- 2Bấm nút tìm hoặc nhấn phím Enter, trình duyệt sẽ tự băm mật khẩu và gửi đi 5 ký tự đầu của mã băm.
- 3Đọc kết quả: khung đỏ nghĩa là mật khẩu đã xuất hiện trong dữ liệu rò rỉ, kèm số lần xuất hiện; khung xanh nghĩa là chưa từng xuất hiện trong kho dữ liệu đã biết.
- 4Nếu bị lộ, hãy đổi mật khẩu đó ngay ở mọi dịch vụ bạn từng dùng nó, không chỉ ở dịch vụ bạn đang nghĩ tới.
- 5Nếu chưa lộ, vẫn nên đánh giá lại độ dài và tính duy nhất của mật khẩu, vì chưa lộ không đồng nghĩa với đủ mạnh.
k-Anonymity: mật khẩu không rời khỏi máy bạn, cụ thể là thế nào
Quy trình gồm bốn bước và bạn có thể tự kiểm chứng bằng tab mạng trong công cụ dành cho nhà phát triển. Bước một, trình duyệt băm mật khẩu bằng thuật toán SHA-1 thông qua giao diện mã hóa có sẵn, cho ra chuỗi 40 ký tự thập lục phân. Bước hai, chuỗi này được cắt làm hai: 5 ký tự đầu và 35 ký tự còn lại. Bước ba, chỉ 5 ký tự đầu được gửi tới dịch vụ tra cứu dưới dạng một đường dẫn công khai. Máy chủ trả về danh sách toàn bộ mã băm trong kho có cùng 5 ký tự đầu đó, thường là vài trăm tới gần một nghìn dòng, mỗi dòng gồm phần đuôi mã băm và số lần xuất hiện. Bước bốn, trình duyệt duyệt danh sách đó ngay trên máy bạn để tìm phần đuôi khớp. Vì có tới hơn một triệu tổ hợp 5 ký tự thập lục phân, việc bạn thuộc nhóm nào gần như không nói lên điều gì về mật khẩu. Cần nói cho chính xác: đây là một lượt gọi ra dịch vụ bên ngoài chứ không phải xử lý hoàn toàn cục bộ, nhưng thứ đi ra ngoài là 5 ký tự của một mã băm, không phải mật khẩu và cũng không phải mã băm đầy đủ.
Kết quả an toàn không có nghĩa là mật khẩu đủ mạnh
Đây là hiểu nhầm phổ biến nhất. Khung xanh chỉ nói một điều duy nhất: chuỗi ký tự đó chưa xuất hiện trong kho dữ liệu rò rỉ mà dịch vụ tra cứu đã thu thập được, hiện gồm hơn 800 triệu mã băm mật khẩu khác nhau. Nó không đánh giá độ dài, không đánh giá tính ngẫu nhiên, và không biết mật khẩu của bạn có phải là tên con bạn ghép năm sinh hay không. Một chuỗi như Tanphat2026 rất có thể chưa lộ, nhưng vẫn nằm gọn trong tầm của tấn công theo từ điển có quy tắc biến đổi, tức công cụ lấy từ điển tiếng Việt và tiếng Anh rồi tự động thêm số, thêm ký tự đặc biệt, đổi chữ a thành số 4, thêm năm ở cuối. Ngược lại, khung đỏ với số lần xuất hiện rất lớn là tín hiệu nghiêm trọng: mật khẩu xuất hiện hàng triệu lần nghĩa là nó nằm ở đầu mọi danh sách thử. Cách đọc kết quả đúng là coi khung đỏ là mệnh lệnh phải đổi ngay, còn khung xanh chỉ là điều kiện cần, sau đó vẫn phải tự trả lời hai câu: mật khẩu này có đủ dài không, và tôi có dùng nó ở nơi nào khác không.
Kho dữ liệu này đến từ đâu và không cho bạn biết điều gì
Kho mật khẩu rò rỉ được tổng hợp từ hàng trăm vụ rò rỉ dữ liệu công khai qua nhiều năm, trong đó có những vụ rất lớn ở các dịch vụ phổ biến. Điều quan trọng cần phân biệt: kho này chứa mật khẩu chứ không chứa cặp email và mật khẩu, nên khi bạn tra ra kết quả bị lộ, điều đó không có nghĩa là tài khoản của bạn đã bị xâm nhập, mà chỉ có nghĩa là chuỗi ký tự đó đã từng xuất hiện trong ít nhất một vụ rò rỉ, có thể của một người hoàn toàn khác dùng trùng mật khẩu với bạn. Ngược lại, kết quả chưa lộ cũng không bảo đảm tài khoản của bạn an toàn, vì tài khoản có thể bị chiếm qua con đường khác như lừa đảo qua thư điện tử, phần mềm ghi phím, hoặc lộ mã phiên đăng nhập. Muốn biết địa chỉ thư điện tử của mình có nằm trong vụ rò rỉ nào không, bạn cần dùng chức năng tra theo địa chỉ thư của chính dịch vụ Have I Been Pwned, đó là một tra cứu khác và cho thông tin khác. Hai công cụ này bổ sung cho nhau chứ không thay thế nhau.
Đặt mật khẩu mạnh theo hướng dẫn hiện đại, không phải theo thói quen cũ
Hướng dẫn của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ trong tài liệu về danh tính số đã thay đổi khá nhiều so với những quy tắc mà nhiều hệ thống ở ta vẫn áp dụng. Ba điểm đáng chú ý nhất. Thứ nhất, độ dài quan trọng hơn độ phức tạp: một cụm bốn tới năm từ không liên quan dài hơn 16 ký tự mạnh hơn nhiều so với chuỗi 8 ký tự có đủ hoa thường số ký tự đặc biệt, đồng thời dễ nhớ hơn hẳn. Thứ hai, không nên bắt buộc đổi mật khẩu định kỳ kiểu ba tháng một lần, vì thực tế người dùng chỉ tăng một con số ở cuối và mật khẩu không mạnh thêm; chỉ nên bắt đổi khi có dấu hiệu bị lộ. Thứ ba, hệ thống nên chặn ngay những mật khẩu đã nằm trong danh sách rò rỉ, đúng việc mà công cụ này đang làm thủ công cho bạn. Ba nguyên tắc còn lại vẫn nguyên giá trị: mỗi dịch vụ một mật khẩu riêng, không dùng thông tin cá nhân dễ tra như ngày sinh và số điện thoại, và bật xác thực hai lớp ở mọi nơi cho phép.
Việc cần làm ngay khi phát hiện mật khẩu đã lộ
Thứ tự xử lý có ý nghĩa, vì làm sai thứ tự thì đổi mật khẩu xong vẫn bị chiếm lại. Bước một, liệt kê mọi nơi bạn từng dùng mật khẩu đó, kể cả những tài khoản cũ tưởng đã bỏ, vì chúng thường dùng chung địa chỉ thư khôi phục với tài khoản chính. Bước hai, đổi mật khẩu ở tài khoản thư điện tử chính trước tiên, vì đó là chìa khóa khôi phục của mọi tài khoản còn lại. Bước ba, ngay sau khi đổi, vào phần bảo mật để đăng xuất tất cả các phiên đang hoạt động và thu hồi quyền của các ứng dụng bên thứ ba lạ, nếu không kẻ tấn công vẫn giữ phiên cũ. Bước bốn, bật xác thực hai lớp bằng ứng dụng hoặc khóa vật lý cho các tài khoản quan trọng. Bước năm, kiểm tra địa chỉ thư và số điện thoại khôi phục xem có bị ai đó thêm vào không, đây là chi tiết rất hay bị bỏ qua. Bước cuối, cài một trình quản lý mật khẩu và để nó sinh mật khẩu ngẫu nhiên dài cho từng dịch vụ, vì cách duy nhất để không dùng lại mật khẩu là không cần nhớ chúng.
Câu hỏi thường gặp (FAQ)
Mật khẩu của tôi có bị gửi lên máy chủ không?
Không. Trình duyệt tự băm mật khẩu bằng SHA-1 rồi chỉ gửi đi 5 ký tự đầu của mã băm, tức một phần rất nhỏ và không thể suy ngược. Máy chủ trả về danh sách các mã băm cùng nhóm, và việc so khớp phần đuôi diễn ra ngay trên máy bạn. Bạn kiểm chứng được bằng tab mạng trong công cụ dành cho nhà phát triển.
Vậy công cụ có gọi ra dịch vụ bên ngoài không?
Có, một lượt gọi tới dịch vụ tra cứu mật khẩu rò rỉ Have I Been Pwned. Nhưng thứ đi ra ngoài chỉ là 5 ký tự đầu của mã băm, không phải mật khẩu và cũng không phải mã băm đầy đủ. Có hơn một triệu tổ hợp 5 ký tự nên nhóm mà bạn rơi vào gần như không tiết lộ gì.
Kết quả mật khẩu an toàn nghĩa là gì?
Chỉ nghĩa là chuỗi ký tự đó chưa xuất hiện trong kho dữ liệu rò rỉ đã thu thập được. Nó không đánh giá độ dài, không đánh giá tính ngẫu nhiên và không biết mật khẩu có dễ đoán hay không. Một chuỗi kiểu tên ghép năm sinh vẫn có thể chưa lộ nhưng rất dễ bị dò bằng từ điển có quy tắc biến đổi.
Con số lần xuất hiện có ý nghĩa gì?
Đó là số lần mật khẩu này xuất hiện trong toàn bộ các vụ rò rỉ đã ghi nhận. Con số càng lớn thì mật khẩu càng nằm gần đầu danh sách mà công cụ tấn công tự động thử trước. Xuất hiện hàng triệu lần nghĩa là nó bị thử trong vài giây đầu tiên của bất kỳ đợt dò nào.
Mật khẩu bị lộ có nghĩa là tài khoản tôi đã bị hack không?
Không nhất thiết. Kho dữ liệu chứa mật khẩu chứ không chứa cặp email và mật khẩu, nên chuỗi đó có thể đã lộ từ tài khoản của một người khác dùng trùng mật khẩu với bạn. Dù vậy vẫn phải đổi ngay, vì kẻ tấn công có sẵn chuỗi này trong danh sách thử.
Làm sao biết địa chỉ email của tôi có nằm trong vụ rò rỉ nào?
Đó là một tra cứu khác, dùng chức năng tìm theo địa chỉ thư điện tử của chính dịch vụ Have I Been Pwned. Công cụ trên trang này chỉ tra chuỗi mật khẩu. Hai tra cứu bổ sung cho nhau: một cho biết mật khẩu đã lộ, một cho biết tài khoản của bạn nằm trong vụ nào.
Vì sao dùng SHA-1 trong khi thuật toán này bị coi là yếu?
Vì ở đây SHA-1 không dùng để bảo vệ mật khẩu mà chỉ dùng làm mã định danh cho việc so khớp theo giao thức k-Anonymity, và kho dữ liệu bên tra cứu cũng được lập theo SHA-1. Việc lưu mật khẩu trong hệ thống thật thì phải dùng thuật toán băm chuyên dụng như Argon2 hoặc bcrypt.
Mật khẩu bao nhiêu ký tự là đủ dài?
Hướng dẫn hiện đại nhấn mạnh độ dài hơn độ phức tạp. Một cụm gồm bốn tới năm từ không liên quan, tổng cộng trên 16 ký tự, mạnh hơn hẳn chuỗi 8 ký tự có đủ hoa thường số và ký tự đặc biệt, đồng thời dễ nhớ hơn nhiều. Với tài khoản quan trọng nên nhắm từ 16 ký tự trở lên.
Có nên đổi mật khẩu định kỳ ba tháng một lần không?
Hướng dẫn hiện đại khuyến nghị bỏ quy tắc này. Thực tế người dùng chỉ tăng một con số ở cuối nên mật khẩu không mạnh thêm mà còn dễ đoán hơn. Nên đổi khi có dấu hiệu bị lộ, khi công cụ này báo đỏ, hoặc khi dịch vụ bạn dùng thông báo có sự cố dữ liệu.
Phát hiện lộ rồi thì làm gì trước tiên?
Đổi mật khẩu của tài khoản thư điện tử chính trước, vì đó là chìa khóa khôi phục của mọi tài khoản khác. Ngay sau khi đổi, hãy đăng xuất tất cả phiên đang hoạt động và thu hồi quyền các ứng dụng bên thứ ba lạ, nếu không kẻ tấn công vẫn giữ được phiên cũ.
Có nên nhập mật khẩu đang dùng thật vào đây không?
Về mặt kỹ thuật thì an toàn vì mật khẩu không rời khỏi trình duyệt. Nếu bạn vẫn e ngại, cách thay thế là dùng chính chức năng kiểm tra mật khẩu rò rỉ tích hợp sẵn trong trình quản lý mật khẩu hoặc trong trình duyệt của bạn, vì các công cụ đó dùng đúng giao thức k-Anonymity này.
Trình quản lý mật khẩu có thực sự cần thiết không?
Rất cần, vì cách duy nhất để không dùng lại mật khẩu giữa các dịch vụ là không phải nhớ chúng. Trình quản lý sinh mật khẩu ngẫu nhiên dài cho từng trang, tự điền đúng tên miền nên còn chặn được cả trang giả mạo, và thường có sẵn chức năng cảnh báo khi một mật khẩu trong kho bị lộ.
Từ khóa liên quan
- kiểm tra mật khẩu bị lộ
- mật khẩu có bị rò rỉ không
- have i been pwned
- pwned passwords
- k-anonymity kiểm tra mật khẩu
- credential stuffing là gì
- dò mật khẩu theo từ điển
- đặt mật khẩu mạnh
- mật khẩu bao nhiêu ký tự là an toàn
- có nên đổi mật khẩu định kỳ
- nist 800-63b mật khẩu
- trình quản lý mật khẩu
- xác thực hai lớp 2fa
- tài khoản bị hack phải làm gì
- đăng xuất tất cả thiết bị
- rò rỉ dữ liệu là gì
- sha-1 băm mật khẩu
- kiểm tra email bị lộ
- mật khẩu dùng lại nhiều nơi
- công cụ kiểm tra mật khẩu miễn phí
