Bruteforce attack – Tại sao tất cả các phương thức mã hóa đều không an toàn

Brute: cục súc, vũ phu, force: ép buộc, cưỡng ép – cái tên cho ta thấy phần nào bản chất của hình thức tấn công này.

Bruteforce attack – Tại sao tất cả các phương thức mã hóa đều không an toàn

Brute-force attack là kiểu tấn công vào các dữ liệu đã được mã hóa. Hiểu theo cách dân dã là “đoán pass”. Brute: cục súc, vũ phu, force: ép buộc, cưỡng ép – cái tên cho ta thấy phần nào bản chất của hình thức tấn công này.

Một ví dụ đơn giản

Nếu ai đã dùng Keepass (phần mềm quản lý password) thì sẽ biết tất cả password người dùng muốn quản lý sẽ được lưu vào trong một file .kdbx và file này sẽ được mã hóa. Để mở được file này phải biết được master password. Giả sử tôi “chôm” được file .kdbx của ai đó và sẽ bắt đầu “mò″ master password của họ.

Nếu may mắn, tôi có thể đoán được ra sau vài phút, nhưng thường thì sẽ ngồi cả ngày mà không ra. Tôi thực hiện plan B: lên mạng tải về một password dictionary, là một danh sách các password mà người ta thường đặt, rồi viết một chương trình nhỏ, thử từng password trong dictionary vừa tải về. Cách này gọi là dictionary attack. Ở đây tôi đã lợi dụng sức mạnh của máy tính để đạt được mục đích của mình.

Nếu dictionay của tôi đủ lớn, và password người kia đặt không quá oái ăm thì tôi sẽ thành công trong thời gian ngắn. Tuy nhiên, nếu vẫn không được, tôi sẽ thực hiện phương án cuối cùng. Giả sử master password yêu cầu phải từ 6-32 ký tự, có thể bao gồm chữ cái, số, các ký tự đặc biệt. Không quá khó để tính ra được số các password có thể sinh ra được, nó có thể rất lớn nhưng luôn là giới hạn. Chương trình của tôi sẽ thử tất cả các password có thể sinh ra và vì lý do trên, tôi sẽ luôn tìm ra được password đúng, vấn đề chỉ là thời gian.

Ars Technica cảnh báo rằng một máy tính với 25-GPU cluster có thể crack được tất cả các password Windows dưới 8 ký tự trong vòng 6 giờ. Ngày nay với sự phát triển nhanh mạnh của phần cứng máy tính, thời gian này có thể giảm nữa.

Phòng chống brute-force attack

Brute-force attack là hình thức tấn công không thể chống đỡ một cách hoàn toàn. Bạn chỉ có thể giảm thiểu nguy cơ của nó. Dưới đây là một số cách cơ bản:

  • Đảm bảo những dữ liệu mã hóa của bạn tránh sự tiếp xúc với attacker. Nếu attacker có một bản copy dữ liệu của bạn, brute-force attack đã có thể thực thi.
  • Nếu bạn có một website có chức năng đăng nhập (hoặc những ứng dụng tương tự), hãy thiết lập giới hạn số lần nhập sai password của người dùng, block khi nhập sai quá giới hạn hay thử đăng nhập nhiều lần trong một thời gian ngắn, yêu cầu nhập thêm captcha….
Gmail bắt người dùng nhập thêm captcha khi gõ sai mật khẩu quá nhiều lần
Gmail bắt người dùng nhập thêm captcha khi gõ sai mật khẩu quá nhiều lần
  • Bản chất của brute-force attack là thực hiện lại đúng thuật toán mã hóa đã sử dụng trên dữ liệu, vì thế hãy sử dụng thuật toán mã hóa mạnh để làm tăng thời gian thực thi brute-force (tuy nhiên phải tính toán đến việc cân bằng với hiệu năng)
  • Sử dụng mật khẩu mạnh. Tất cả các thuật toán mã hóa sẽ không giúp gì bạn nếu bạn sử dụng những mật khẩu kiểu như “123456″, “iloveyou”,…

Kết luận

Brute-force attack rất đơn giản, dễ hiểu nhưng khó để phòng chống triệt để. Ý thức được mức độ nguy hiểm của nó sẽ giúp bạn bảo vệ dữ liệu và các ứng dụng của mình tốt hơn.

teketen