2.4.4.1 Hàm băm Davies-Mayer [2]
Hàm băm Davies-Mayer là một kiến trúc hàm băm dựa trên việc mã hóa theo khối trong đó độ dài của thông điệp rút gọn (tính theo bit) bằng với kích thước khối thông điệp ứng với thuật toán mã hóa được sử dụng.
Gọi n, k lần lượt là kích thước khối và kích thước khóa của thuật toán được sử dụng. Trong hàm băm Davies-Mayer không cần sử dụng khóa. Khóa ban đầu
được thiết lập mặc định, có giá trị là 2k -1 với k là kích thước khóa (theo bit) của thuật toán. Hàm mã hóa E sử dụng khóa K được ký hiệu là Ek.
Thông điệp ban đầu được chia thành m khối có kích thước n bit. Davies- Mayer hash chính là thực hiện lần lượt m lần thao tác sau:
Hi = EXi (Hi-1) Xi
Hm chính là thông điệp rút gọn của thông điệp ban đầu. 2.4.4.2 Hàm AES-Hash
AES-Hash được mô tả dựa trên kiến trúc hàm băm Davies-Mayer, sử dụng thuật toán Rijndael với kích thước khối và khóa đều là 256 bit. Quá trình thực hiện AES-Hash gồm các bước:
- Mở rộng thông điệp: Thông điệp được mở rộng để có kích thước bằng một bội số chẵn nhỏ nhất của kích thước khối. Việc này được thực hiện bằng cách thêm vào các bit zero vào cuối thông điệp sao cho kích thước đạt được là một bội số lẻ nhỏ nhất của 128 bit. Sau đó thêm 128 bit chứa giá trị chiều dài ban đầu của thông điệp. Thông điệp mở rộng sẽ có độ dài: 40 bit ban đầu + (128 – 40) bit 0 mở rộng + 128 bit thể hiện giá trị
- Chia thông điệp mở rộng thành n khối x1,...,xn, với kích thước 256 bit. - Áp dụng Davies-Mayer Hash bằng thuật toán Rijndael n lần cho n khối.
Hi = EXi (Hi-1) Xi
- Áp dụng thao tác bổ sung cuối để thu được giá trị băm.
Hn+1 = EHn (Hn) Xn
Hn+1 chính là giá trị băm của thông điệp ban đầu. 2.4.4.3 Hàm băm Davies-Mayer và AES-Hash
Hàm băm Davies-Mayer được chứng minh rằng để tìm thông điệp đầu vào thứ 2 có cùng kết quả giá trị băm (độ dài n bit) với thông điệp ban đầu cho trước (“tiền ảnh thứ hai”) cần phải thực hiện 2n thao tác, để tìm cặp thông điệp có cùng giá trị băm cần thực hiện 2n/2 thao tác. Do đó, để đạt được mức độ bảo mật có thể chấp nhận được thì kích thước khối đòi hỏi phải lớn. Vào thời điểm hiện tại, kích thước khối phải lớn hơn 80 bit để tránh tấn công “tiền ảnh thứ hai” và lớn hơn 160 bit để tránh tấn công đụng độ. Điều này có nghĩa không thể sử dụng các thuật toán mã hóa có kích thước khối 64 bit (ví dụ như DES) để thực hiện Davies-Mayer Hash. Một điều lưu ý khác là hàm băm Davies-Mayer được xem là không an toàn khi sử dụng các thuật toán DES-X (như 3DES).
AES-Hash áp dụng Davies-Mayer Hash, sử dụng thuật toán Rijndael 256 bit nên đảm bảo được độ an toàn đối với tấn công “tiền ảnh thứ hai” và tấn công “đụng độ”. Ngoài ra, AES-Hash còn thực hiện thao tác bổ sung cuối để tăng chi phí khi tấn công hàm băm. Do đó, mức độ an toàn bảo mật của hàm băm AES-Hash sẽ được tăng đáng kể.