Tôi viết bài này không nhằm mục đích gì ngoài việc để lại kiến thức để tôi học thuộc. Một nỗi hổ thẹn trong tôi là dù đã được học qua, dù đã được nghe nhiều nhưng tôi vẫn chưa thực sự thuộc và nói lại được những thứ kiến thức liên quan đến băm MD5. Do đó mà, tôi sẽ viết lại nó ở đây (lý do là vở viết cái khác), mục đích là học thuộc.
Tôi có tìm hiểu về thuật toán tạo ra mã băm MD5, nhưng xin thứ lỗi là tôi không thể hiểu từ bước chia, cho nên tôi xin phép không nêu ra ở đây.
Trước tiên ta hãy nói về 4 đặc điểm của hàm băm, đó là tính một chiều (ưu điểm lớn nhất), tính duy nhất, tính cố định và tính nhanh chóng.
Vậy mà MD5, đã bị tấn công vào các đặc điểm này, khiến nó không còn được an toàn nữa.
Nói qua về MD5, đây là hàm băm cho độ dài 32 ký tự (128 bit), do đó mà nhanh chóng trở nên phổ biến với đầu ra nhanh gọn.
Tuy nhiên, MD5 đã bị :
1. Dễ tấn công va chạm Điểm yếu lớn nhất của MD5, khi mà vi phạm tính duy nhất. Khi mà 2 file dữ liệu lại cho ra 1 giá trị băm. Điều này dễ bị lợi dụng khi kẻ tấn công thay thế file gốc bằng file mã độc mà giá trị băm không thay đổi.
2. Có thể bị truy xuất ngược dữ liệu Điểm yếu này đã vi phạm tính một chiều.
3. Dễ phá hủy do công nghệ phát triển
Dưới đây là một ví dụ về tấn công va chạm MD5. Đây là cuộc tấn công vào chứng chỉ SSL giả mạo:
Sự kiện: Tấn công Flame Malware (2012)
Thời gian: Năm 2012 (được phát hiện và công bố rộng rãi sau đó). Bối cảnh: Flame là một phần mềm độc hại tinh vi được sử dụng trong gián điệp mạng, nhắm vào các hệ thống ở Trung Đông. Chi tiết tấn công: Kẻ tấn công đã khai thác nhược điểm va chạm của MD5 để tạo ra một chứng chỉ số giả mạo (fake SSL certificate). Chứng chỉ hợp lệ (M1): Có vẻ là chứng chỉ từ Microsoft, được ký bằng MD5 bởi một cơ quan cấp chứng chỉ (CA). Chứng chỉ giả mạo (M2): Có cùng giá trị băm MD5 nhưng chứa thông tin độc hại, cho phép giả mạo phần mềm cập nhật Windows chính hãng. Hậu quả: Flame lây lan qua các bản cập nhật giả mạo, thu thập dữ liệu nhạy cảm từ các máy tính bị nhiễm. Microsoft sau đó phải phát hành bản vá khẩn cấp và loại bỏ hoàn toàn MD5 khỏi các giao thức xác thực của mình. Bài học: Tấn công va chạm MD5 không chỉ là lý thuyết mà đã được áp dụng thực tế để đánh lừa các hệ thống lớn. Đây là một trong những ví dụ cuối cùng cho thấy MD5 hoàn toàn không thể tin cậy trong bảo mật.