Mật khẩu bị bẻ khóa như thế nào?

Các tài khoản hiếm khi bị xâm nhập theo cách phim ảnh thường mô tả. Trong thực tế, một mật khẩu bị chiếm đoạt theo một trong ba con đường. Nó bị bẻ khóa: tìm ra bằng cách thử hết ứng viên này đến ứng viên khác, thường là đối chiếu với cơ sở dữ liệu hàm băm mật khẩu bị đánh cắp từ một dịch vụ. Nó bị đánh cắp: do người dùng gõ vào một trang web giả mạo hoặc bị phần mềm độc hại sao chép. Hoặc nó bị tái sử dụng: kẻ tấn công lấy mật khẩu từ một vụ rò rỉ trước đó và đem thử trên các dịch vụ khác, với hy vọng chủ sở hữu cũng dùng chung mật khẩu đó. Sự khác biệt này quan trọng, bởi vì mỗi trường hợp lại cần một biện pháp đối phó khác nhau. Bài viết này điểm qua các phương thức chính và chỉ rõ điều gì giúp ích trước mỗi mối đe dọa.

Mật khẩu tái sử dụng từ các vụ rò rỉ dữ liệu

Mỗi năm có rất nhiều dịch vụ bị xâm phạm, và cơ sở dữ liệu người dùng của họ bị rao bán hoặc chia sẻ công khai. Kẻ tấn công lấy các cặp địa chỉ email và mật khẩu từ một vụ rò rỉ rồi tự động thử chúng trên các ngân hàng, dịch vụ thư điện tử, cửa hàng trực tuyến và mạng xã hội — một kiểu tấn công được gọi là nhồi thông tin xác thực (credential stuffing). Nó không liên quan gì đến việc đoán mò, và nó thành công vì một lý do đơn giản: mọi người hay dùng lại mật khẩu. Ngay cả một mật khẩu mạnh cũng không giúp ích gì ở đây nếu nó bị dùng chung ở khắp mọi nơi.

Điều gì giúp ích: một mật khẩu khác nhau cho mỗi tài khoản, để việc rò rỉ ở một dịch vụ không mở khóa được bất kỳ tài khoản nào khác.

Lừa đảo trực tuyến (Phishing)

Một trang lừa đảo (phishing) là bản sao của trang đăng nhập thật ở một địa chỉ hơi khác biệt, được dẫn tới thông qua liên kết trong email hoặc tin nhắn có vẻ khẩn cấp: tài khoản bị khóa, kiện hàng đang chờ, hóa đơn cần thanh toán. Bất cứ điều gì bạn gõ vào đó đều được gửi thẳng tới kẻ tấn công. Độ dài và tính ngẫu nhiên của mật khẩu không mang lại sự khác biệt nào ở đây, bởi vì chính bạn là người đã tự nhập nó.

Điều gì giúp ích: mở các trang web từ dấu trang của chính bạn thay vì bấm vào các liên kết. Sử dụng trình quản lý mật khẩu: nó chỉ đề xuất điền mật khẩu tại đúng địa chỉ web mà mật khẩu đã được lưu, vì vậy nếu nó không đề xuất mật khẩu, hãy kiểm tra lại địa chỉ trước khi tự tay gõ. Và hãy bật xác thực hai yếu tố, điều này khiến mật khẩu bị đánh cắp trở nên không đủ để xâm nhập. Tuy nhiên, các mã sử dụng một lần vẫn có thể bị lừa lấy theo cách tương tự như mật khẩu. Khóa truy cập (passkey) và khóa bảo mật FIDO2 thì không thể bị lừa lấy theo cách đó, bởi vì chúng chỉ phản hồi với trang web thực sự — sự phân biệt mà NIST gọi là khả năng chống lừa đảo.

Phần mềm độc hại

Các chương trình được gọi là phần mềm đánh cắp thông tin (infostealers) sẽ sao chép mật khẩu đã lưu trong trình duyệt cùng với cookie phiên và gửi chúng đi chỉ trong vài giây sau khi chạy, trong khi phần mềm theo dõi thao tác phím (keyloggers) ghi lại những gì bạn gõ. Một cookie phiên bị đánh cắp có thể cho phép kẻ tấn công vào một tài khoản đã đăng nhập mà không cần mật khẩu và không cần yếu tố xác thực thứ hai. Những chương trình như vậy thường ẩn mình trong phần mềm lậu, các bản cập nhật giả mạo và tệp đính kèm email.

Điều gì giúp ích: chỉ cài đặt phần mềm từ nguồn chính thức, luôn cập nhật hệ điều hành và trình duyệt, và xem mọi tệp đính kèm không mong đợi là mối đe dọa — tuy nhiên không điều nào là sự bảo đảm. Nếu một thiết bị đã bị nhiễm mã độc, hãy thao tác từ một thiết bị khác mà bạn biết chắc là an toàn: đổi mật khẩu, dùng tùy chọn đăng xuất khỏi tất cả các phiên của từng dịch vụ, và kiểm tra lại email khôi phục, số điện thoại cùng cài đặt hai yếu tố xem có còn là của bạn hay không. Hãy làm sạch thiết bị nhiễm mã độc trước khi bạn đăng nhập lại vào đó.

Đoán mò tại biểu mẫu đăng nhập

Thử mật khẩu trực tiếp trên một trang web diễn ra rất chậm: một dịch vụ được xây dựng tốt sẽ trì hoãn, khóa tài khoản hoặc yêu cầu mã captcha sau vài lần thử sai. Điều này khiến việc tấn công dồn dập vào một tài khoản duy nhất trở nên kém hiệu quả, vì vậy cách tiếp cận phổ biến lại là chiều ngược lại: thử một số lượng nhỏ các mật khẩu phổ biến nhất — 123456, password, qwerty123 — trên hàng triệu tài khoản, được gọi là rải mật khẩu (password spraying). Việc đoán có chủ đích cũng hoạt động tương tự với thông tin cá nhân: tên con cái và thú cưng, ngày sinh nhật, đội bóng yêu thích, tất cả đều dễ dàng tìm thấy trên mạng xã hội.

Điều gì giúp ích: bất kỳ mật khẩu nào không phổ biến và không được tạo từ các dữ kiện về bạn — hãy xem cách tạo mật khẩu mạnh.

Bẻ khóa các hàm băm bị đánh cắp ngoại tuyến

Một dịch vụ được xây dựng đúng chuẩn không lưu mật khẩu ở dạng văn bản đọc được. Nó lưu các hàm băm — kết quả đầu ra của hàm một chiều mà từ đó không thể tính toán ngược lại mật khẩu ban đầu. Khi một cơ sở dữ liệu như vậy bị rò rỉ, kẻ tấn công sẽ thử nghiệm các mật khẩu khả dĩ: chúng tự tính toán hàm băm của các ứng viên trên phần cứng của mình và so sánh kết quả. Không có biểu mẫu đăng nhập nào làm chậm chúng lại, và tốc độ phụ thuộc vào hàm băm mà dịch vụ đã chọn cùng các thiết lập của nó. Đối với các hàm nhanh và lỗi thời như MD5, một card đồ họa hiện đại có thể thử hàng chục tỷ ứng viên mỗi giây. Các hàm được thiết kế chuyên biệt để lưu mật khẩu — như Argon2id, hoặc bcrypt trong các hệ thống cũ hơn — được cố ý làm chậm và giảm tốc độ thử đó xuống nhiều bậc độ lớn, đó là lý do tại sao các khuyến nghị hiện tại xướng tên chúng.

Tấn công từ điển

Các ứng viên không phải ngẫu nhiên. Công cụ bẻ khóa bắt đầu với danh sách mật khẩu thực tế từ các vụ rò rỉ trước đó và từ điển các từ ngữ, tên gọi, sau đó áp dụng các quy tắc mô phỏng thói quen của con người: viết hoa chữ cái đầu, thêm số hoặc dấu chấm than ở cuối, thay chữ cái bằng ký hiệu tương tự. Một mật khẩu như Summer2024! trông có vẻ phức tạp nhưng nằm trong số những ứng viên đầu tiên bị thử nghiệm. Việc thêm muối (salting) — thêm một chuỗi ngẫu nhiên duy nhất vào mỗi mật khẩu trước khi băm — ngăn kẻ tấn công sử dụng các bảng tính sẵn gọi là bảng cầu vồng (rainbow tables) và ngăn bẻ khóa hàng loạt mật khẩu giống nhau cùng một lúc, nhưng nó không làm cho một mật khẩu dễ đoán trở nên bớt dễ đoán.

Tấn công vét cạn (Brute force)

Khi từ điển đã cạn kiệt, những gì còn lại là thử mọi tổ hợp, và đối với một mật khẩu được tạo ngẫu nhiên, độ dài là yếu tố quyết định kết quả. Để minh họa, hãy lấy một hàm băm nhanh và một mật khẩu mà trong đó mỗi ký tự được chọn độc lập, với xác suất ngang nhau, từ 94 ký tự ASCII in được, không bao gồm khoảng trắng. Có khoảng 6 × 1015 mật khẩu 8 ký tự như vậy; ở tốc độ mười tỷ lần đoán mỗi giây, việc thử hết chúng mất khoảng một tuần, và trung bình tìm ra kết quả đúng trong nửa thời gian đó. Đối với 12 ký tự, việc thử hết trên cùng phần cứng đó sẽ mất khoảng 1,5 triệu năm, và với 16 ký tự thì con số này vượt xa mọi sự so sánh thực tế. Đó là toàn bộ lý lẽ ủng hộ mật khẩu ngẫu nhiên dài: từ điển ít có tác dụng với chúng, và dưới những giả định này, việc thử mọi tổ hợp là không khả thi trong thực tế. Trình tạo mật khẩu mạnh của chúng tôi tạo chúng ngay trong trình duyệt của bạn và hiển thị ước tính entropy cho từng mật khẩu theo bit.

Điều gì giúp ích: một mật khẩu dài không mang quy luật của con người, điều mà trong thực tế có nghĩa là mật khẩu được tạo tự động. Bạn không thể kiểm soát cách dịch vụ lưu trữ mật khẩu của mình, vì vậy hãy dự liệu trường hợp xấu nhất và chọn mật khẩu có khả năng chống đoán mò ngay cả khi nó được lưu trữ bằng một hàm băm nhanh.

Nhìn trộm và dò hỏi

Những phương thức lâu đời nhất không cần đến công nghệ. Mật khẩu bị đọc lén qua vai, từ mảnh giấy dán trên màn hình, hoặc từ màn hình được chia sẻ trong cuộc gọi video; hoặc kẻ tấn công chỉ đơn giản là giả danh nhân viên hỗ trợ hay đồng nghiệp để hỏi xin — hình thức được gọi là phi kỹ thuật (social engineering). Không có dịch vụ hợp pháp nào lại đi hỏi mật khẩu của bạn qua điện thoại, email hay tin nhắn trò chuyện.

Điều gì giúp ích: không bao giờ nói hoặc gửi mật khẩu cho bất kỳ ai, và không để nó ở nơi người khác có thể nhìn thấy.

Tổng kết lại

Các cuộc tấn công khác nhau được đối phó bằng những thói quen khác nhau, và ba trong số đó làm được phần lớn công việc: một mật khẩu duy nhất cho mỗi tài khoản, được tạo tự động chứ không phải tự nghĩ, kết hợp với xác thực hai yếu tố — hoặc khóa truy cập thay thế cho mật khẩu nếu dịch vụ có hỗ trợ. Chúng không thể bảo vệ khỏi tất cả mọi thứ — chẳng hạn như phiên đăng nhập bị đánh cắp — đó là lý do tại sao lời khuyên về phần mềm độc hại ở trên cũng quan trọng. Xem thêm các bài viết khác trong mục tài liệu mật khẩu.