2.3.2 Các hàm băm thông dụng
Các hàm băm dòng MD (MD2, MD4, MD5) do Rivest đề xuất. Giá trị băm theo các thuật toán này có độ dài cố định là 128 bit. Hàm băm MD4 đưa ra năm 1990. Một năm sau phiên bản mạnh hơn là MD5 cũng được đề xuất.
Hàm băm an toàn SHA, phức tạp hơn nhiều, cũng dựa trên phương pháp tương tự, được công bố trong Hồ sơ Liên bang năm 1992. Năm 1993 được chấp nhận làm tiêu chuẩn của Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST). Giá trị băm theo thuật toán này có độ dài cố định là 160 bit.
2.3.2.1 Thuật toán hàm băm MD5
a. Thuật toán hàm băm MD4
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.
a). 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
- 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 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 khi
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 1991và 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 .
- Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy MD5 cũng không còn an toàn và cần được thay thế bằng một thuật toán băm khác như các công bố của Den Boer và Bosselaers năm 1993; của Hans Dobbertin năm 1996; của nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và Hongbo ngày 19/8/2004; của Arjen Lenstra, Xiaoyun Wang, và Benne de Weger ngày 1/3/2005; và của Vlastimil Klima, …
2.3.2.2 Hàm băm SHS/ SHA
- SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật mã an
toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256, SHA-384, SHA- 512 do NIST( viện công nghệ quốc gia Mỹ) và NSA( National Security Agency/Central Security Service, viết tắt NSA/CSS: cơ quan an ninh quốc gia Hoa Kỳ/ Cục an ninh Trung
ương) xây dựng.
- Chuẩn hàm băm SHA phức tạp và chậm hơn dòng MD. SHA được thiết kế để chạy trên máy kiến trúc endian lớn hơn là trên máy endian nhỏ. SHA tạo ra bản tóm lược thông điệp có kích thước 160 bit, sử dụng 5 thanh ghi 32 bit.
INPUT : Thông điệp (văn bản) có độ dài tùy ý
OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 160 bit
- Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở với phương
pháp MD4 và MD5. Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thống Big-endian( lưu trữ các byte đầu tiên quan trọng nhất) thay vì Little-endian(lưu trữ các byte đầu tiên it quan trọng) (endian chính là được đề cập đến trật tự của cácđịa chỉ cá nhân phụ trong các đại diện của một mục dữ liệu lớn hơn và được lưu trữ trong bộ nhớ bên ngoài (hoặc đôi khi gửi đi trên một kết nối nối tiếp)) như phương pháp MD4 và MD5. Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có độ dài 160 bit nên thường được sử dụng
- Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tóm tắt được tạo ra có độ dài 160 bit. Dưới đây là một số điểm so sánh giữa MD5 và SHA-1:
Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho thuật toán. Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2.
Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng một hàng số K[t] . Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sử dụng các hằng số khác nhau.
So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảm tính đối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4.
Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền.