a. Thuật toán hàm băm MD4 [6]
Input: Thông điệp là xâu a có độ dài b bit.
Output: Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit.
Tóm tắt thuật toán
Bước 1: Khởi tạo các thanh ghi
Có 4 thanh ghi để tính toán nhằm đưa ra các đoạn mã: A, B, C, D. Đại diện thông điệp được xây dựng như sự kết nối của các thanh ghi. Mỗi thanh ghi có độ dài 32 bit. Các thanh ghi này được khởi tạo bằng giá trị dạng hecxa.
word A := 67 45 23 01 word B := ef cd ab 89
word C := 98 ba dc fe word D := 10 32 54 76
Bước 2:
+ Tạo “Thông điệp đệm” M cho xâu a.
+ Chia mảng M thành các khối 512 bit, đưa từng khối 512 bit vào mảng T[j]. + Mỗi lần xử lý một khối 512 bit (16 word ), lặp lại N/16 lần.
b. Thuật toán hàm băm MD5 [6]
MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng
phổ biến, được thiết kể bởi Giáo sư Ronald L. Rivest tại trường MIT vào năm 1991 để thay thế cho hàm băm trước đó là MD4 (1990). Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin.
Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit.
Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ dài là bội của 512. Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy bit
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp. Đơn vị xử lý trong MD5 là các từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau:
X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.
Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm băm MD5. MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6
Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũng làm thay đổi hoàn toàn kết quả trả về:
MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8 Thuật toán cũng cho kết quả đối với chuỗi rỗng:
MD5(" ") = d41d8cd98f00b204e9800998ecf8427e
c. Phƣơng pháp MD5 có những ƣu điểm sau so với phƣơng pháp MD4
Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ 4 để tăng mức độ an toàn.
Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số “ti” phân biệt, trong đó MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi.
Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY) (YZ)) được thay thế bằng G(X,Y,Z) = (XZ) (Y(Z)) để giảm tính đối xứng.
Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche).
Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển khác nhau.
Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers đã chỉ ra các điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991 và một tấn công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996 .