4. Một số thuật toán cơ sở đ−ợc áp dụng
4.3.1. Thuật toán băm MD5
Thuật toán MD5 là thuật toán đ−ợc sử dụng t−ơng đối phổ biến trong thực tế để kiểm tra tính toàn vẹn của các khối dữ liệu lớn. Thuật toán nhận đầu vào là một bản tin có chiều dài bất kỳ, xử lý nó thành các khối 512 bit và tạo ra đầu ra là một đoạn tin 128 bit. Quá trình thực hiện bao gồm các b−ớc sau:
1. Đoạn tin ban đầu đ−ợc nhồi thêm (cộng thêm) một số bit (bit bắt đầu là 1 còn các bit sau là 0, số bit đ−ợc thêm vào có thể từ 1 đến 512 bit), sao cho tổng số bit của đoạn tin (sau khi cộng thêm các giá trị khởi đầu là 64 bit) sẽ là bội số của 512.
2. Khởi tạo bộ đệm MD. Đó là các bộ đệm 128 bit đ−ợc sử dụng để chứa kết quả trung gian và cuối cùng của hàm băm. Có thể xem bộ đệm nh− bốn thanh ghi 32 bit. Các thanh ghi này đ−ợc khởi tạo (ở hệ Hex) nh− sau:
A = 0 1 2 3 4 5 6 7; B = 8 9 a b c d e f;
C = f e d c b a 9 8; D = 7 6 5 4 3 2 1 0;
3. Xử lý các đoạn tin thành từng khối 512 bit (chia thành 16 từ, mỗi từ 32 bit). Quá trình tính toán đ−ợc chia thành từng giai đoạn, số giai đoạn bằng chiều dài tính theo bit của đoạn tin sau khi đã đ−ợc nhồi thêm chia cho 512. Mỗi giai đoạn thực hiện trong bốn vòng, các có cấu trúc giống nhau nh−ng mỗi vòng sử dụng một hàm logic khác nhau, đ−ợc đặc tr−ng bởi sự kết hợp các thông số đặc tr−ng và phối hợp sử dụng các hàm biến đổi.
4. Đoạn tin đầu ra có độ dài là 128 bit chính là dấu nhận thực đặc tr−ng cho đoạn tin.
Có thể tóm tắt hoạt động của thuật toán MD5 nh− sau: MDo = IV
MD = MDL-1 Trong đó:
IV: chính là khối khởi đầu ABCD đã đ−ợc xác định ở b−ớc 2 Yq là khối tin 512 bit thứ q
L là chiều dài của đoạn tin (đã đ−ợc nhồi thêm) MD là giá trị cuối cùng fi là các hàm : F (b, c, d) = (b*c) | (b*d) G (b, c, d) = (b*d) | (c*d) H (b, c, d) = b ⊕ c ⊕ d I (b, c, d) = c ⊕ (b*d)
Hình 4.14. Tạo đoạn sử dụng thuật toán MD5 HMD5 là thuật toán sử dụng để băm 512 bit tạo ra 128 bit
Ta thấy rằng chỉ với 128 bit nh−ng ta có thể nhận biết đ−ợc các bản tin khác nhau sẽ tạo ra các dấu xác thực khác nhau bằng cách tổ hợp các bit này với nhau, theo lý thuyết có 2128 = 3.4 1038 các dấu xác thực khác nhau, tuy lớn nh−ng nó cũng không phải là con số vô cùng, tuy nhiên sự kết hợp của thuật toán đảm bảo rằng các bản tin cho ra cùng một dấu xác thực là rất khác nhau.
Một số thuật toán cơ sở đ−ợc áp dụng