Chƣơng 2 : CƠ SỞ LÝ THUYẾT
2.3. Hàm băm và chữ ký điện tử
2.3.1.6. Một số hàm băm thông dụng
a. Hàm băm MD5
Hàm băm MD4 (Message Digest 4) đƣợc Giáo sƣ Rivest đề nghị vào năm 1990. Vào năm sau, phiên bản cải tiến MD5 của thuật toán này ra đời. Cùng với phƣơng pháp SHS, đây là ba phƣơng pháp có ƣu điểm tốc độ xử lý rất nhanh nên thích hợp áp dụng trong thực tế đối với các thông điệp dài.
MD5 biến đổi một thơng điệp có chiều dài bất kì thành một khối có kích thƣớc cố định 128 bits. Thơng điệp đƣa vào sẻ đƣợc cắt thành các khối 512 bits. Thông điệp đƣợc đƣa vào bộ đệm để chiều dài của nó chia hết cho 512. Bộ đệm hoạt động nhƣ sau:
Trƣớc tiên nó sẻ chèn bit 1 vào cuối thơng điệp.
Tiếp đó là hàng loạt bit 0 cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit.
Phần còn lại sẻ đƣợc lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầu của thơng điệp.
Thuật tốn chính của MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D. Các giá trị này là các hằng số cố định. Sau đó thuật tốn chính sẻ ln phiên hoạt động trên các khối 512 bit. Mỗi khối sẽ phối hợp với một bộ. Q trình xử lý một khối thơng điệp bao gồm 4 bƣớc tƣơng tự nhau, gọi là vòng (“round”). Mỗi vòng lại gồm 16 quá trình tƣơng tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái…
Hình bên dƣới mơ tả một q trình trong một vịng. Có 4 hàm một chiều F có thể sử dụng. Mỗi vịng sử dụng một hàm khác nhau.
Hình 2.15 – Mơ tả một q trình trong một vịng của hàm băm MD5
Hàm băm MD5 (cịn đƣợc gọi là hàm tóm tắt thơng điệp - message degests) sẽ trả về một chuổi số thập lục phân gồm 32 số liên tiếp. Dƣới đây là các ví dụ mơ tả các kết quả thu đƣợc sau khi băm.
MD5("dai hoc lac hong") = 327e7cbce9c5ff6a0d654957c16b0b6c Chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn kết quả trả về: MD5("dai hoc lac honh") = 24eed62af8f392339f77f8fcf87e1311 Ngay cả một chuổi rổng cũng cho ra một kết quả phức tạp: MD5("") = d41d8cd98f00b204e9800998ecf8427e
b. SHA (thuật giải băm an toàn)
SHA (Secure Hash Algorithm) là năm thuật giải đƣợc dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu đã đƣợc mã hóa. Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit), SHA- 384 (trả lại kết quả dài 384 bit), và SHA-512 (trả lại kết quả dài 512 bit). Thuật giải SHA là thuật giải băm mật đƣợc phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) và đƣợc xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute of Standards and Technology hay NIST). Bốn thuật giải sau thƣờng đƣợc gọi chung là SHA-2.