Chương 3 : ĐỘ AN TOÀN CỦA THUẬT TOÁN MD5
3.2 Tính an toàn của hàm băm MD5 đối với tính một chiều
Hàm băm được xem là hàm một chiều khi cho trước giá trị băm, không thể tái tạo lại thông điệp ban đầu. Như vậy, trong trường hợp lý tưởng, cần phải thực hiện hàm băm cho khoảng 2n thông điệp để tìm ra được thông điệp tương ứng với một giá trị băm. Nếu tìm ra được một phương pháp tấn công cho phép xác định được thông điệp tương ứng với một giá trị băm cho trước thì thuật toán băm sẽ không còn an toàn nữa.
Ta xét tính an toàn của hàm băm MD5:
Giả sử cho trước một giá trị băm MD5 là h(x), hãy tính khả năng tìm ra thông điệp x khi không biết bất kỳ dữ kiện gì ngoài mã băm h(x). Đến nay chưa có một phương pháp nào có thể tìm ra x khi biết h(x) bằng cách sử dụng thuật toán. Cách duy nhất là người ta sẽ duyệt qua tất cả các khả năng có thể có của x rồi tính giá trị băm h(x), nếu nó trùng với giá trị băm ban đầu thì x chính là thông điệp cần tìm.
Độ phức tạp ở đây là không gian chứa thông điệp x quá lớn. Giả sử x nằm trong tập các ký tự có thể in ra được (95 ký tự) thì số các phương án x cần duyệt là: 951 +952 +953+954+….+9595 ≈ 7x10187
Với máy tính có tốc độ xử lý 1 phép tính / 1micro giây thì phải mất khoảng 10174 năm, điều đó là không khả thi. Ngay cả với một siêu máy tính có tốc độ xử lý 1 nghìn tỷ phép tính / giây thì cũng phải mất 1019 năm.
Trên thực tế chẳng có ứng dụng bảo mật nào đi tìm một thông điệp khi biết giá trị băm của nó mà không có các dữ kiện liên quan. Ví dụ như trong ứng dụng bảo vệ mật khẩu của hàm băm MD5, việc tìm mật khẩu khi biết giá trị băm MD5 phải dựa vào căn cứ sau: Mật khẩu là các ký tự thường ( a…z), ký tự hoa (A…Z), chữ số (0…9) và một số ký tự đặc biệt ( @, _, -, !, $...) và mật khẩu thường có độ dài tối đa là 15 ký tự. Ngoài ra còn dựa vào thói quen đặt mật khẩu của người dùng như là các cụm từ có nghĩa như tên email, họ tên, dãy số dễ nhớ, số điện thoại, ngày tháng năm sinh…
Dựa vào những đặc điểm trên tác giả sẽ đánh giá tính an toàn của MD5 trong ứng dụng cụ thể, đó là khôi phục mật khẩu khi biết giá trị băm MD5.