Một số thuật toán hàm băm mật mã thông dụng

Một phần của tài liệu Một số loại chữ ký điện tử và ứng dụng (Trang 61)

1) Giới thiệu

Các hàm băm thƣờng dùng hiện nay là thuộc dòng MD hoặc SHA. Dòng MD có thể băm các thông điệp có kích thƣớc tùy ý để đƣợc thông điệp đại diện có kích thƣớc 128 bit, có các hàm băm MD2, MD3, MD4, MD5. Dòng SHA có thể băm các thông điệp có kích thƣớc tùy ý để đƣợc thông điệp đại diện có kích thƣớc 160 bit.

2) Cấu trúc cơ bản của các thuật toán hàm băm

Khối dữ liệu vào x có độ dài hữu hạn tùy ý đƣợc phân thành các khối con liên tiếp có độ dài r cố định, giả sử là : x1, x2, …, xm. Ta cần thêm vào x các bit phụ để tổng số bit của x là bội của r. Khối bit phụ thêm vào thƣờng chứa một khối bit (có chiều dài cố định trƣớc, thƣờng là 64 bit) xác định chiều dài thực sự của khối dữ liệu khi chƣa thêm các bit phụ. Sau đó ta lần lƣợt cắt từng khối con r bit từ x, mỗi khối con r bit xi lần lƣợt từng bƣớc đi qua một

hàm nén f của hàm băm h(x). Tại bƣớc thứ i hàm nén f nhận dữ liệu đầu vào là xi và kết quả trung gian của bƣớc trƣớc đó (bƣớc i-1) để tạo đầu ra là kết quả trung gian bƣớc thứ i, đƣợc ký hiệu là Hi . Kết quả trung gian tại mỗi bƣớc (Hi) là một chuỗi bit có độ dài cố định bằng n>0. Nếu ký hiệu IV là giá trị khởi tạo ban đầu (cho H0) thì quá trình lặp xử lý dãy các khối con x1, x2, …, xm

đƣợc mô tả nhƣ sau :

H0 = IV

Hi = f(Hi-1 , xi), (i = 1,2,…,m) h(x) = g (Hm)

Ngƣời ta thƣờng gọi Hi (kết quả trung gian sau bƣớc i) là các biến dây chuyền. Hàm g(x) lấy biến dây chuyền cuối cùng để tạo ra mã băm cần tìm. Trong hầu hết các thuật toán g(x) đƣợc chọn là ánh xạ đồng nhất. Khâu then chốt trong xây dựng hàm băm thƣờng là thiết kế hàm nén f.

3) Một số thuật toán hàm băm (1)MD4:

(MD : Message Digest)

Input : Chuỗi bit x có độ dài b>0 tùy ý. Output: Mã băm có độ dài cố định 128 bit. Mô tả tổng quan thuật toán:

Thêm r≥0 bit phụ vào x sao cho chiều dài chuỗi bit mới b’=b+r là bội của 512. Sau đó chia chuỗi bit này thành m khối 512 bit, b’=512m. Mỗi khối này đƣợc chia thành 16 từ, mỗi từ 32 bit.

Thuật toán MD4 tuần tự xử lý dãy m khối trong m lƣợt tính toán. Dữ liệu đầu vào trong lƣợt tính toán thứ k (1≤k≤m) là khối thứ k trong dãy và mã băm nhận đƣợc sau k-1 lƣợt tính toán trƣớc (mã băm đầu vào ứng với k=1 đƣợc khởi tạo từ trƣớc). Tại lƣợt tính toán thứ k này khối dữ liệu đầu vào 512 bit(dãy 16 từ)liên tiếp đi qua 3 vòng tính toán, trong mỗi vòng có 16 bƣớc, mỗi bƣớc tính toán với dữ liệu là 1 từ trong dãy và kết quả nhận đƣợc sau bƣớc trƣớc. Kết quả sau 3 vòng tính toán sẽ đƣợc kết hợp với mã băm trƣớc đó để sinh ra mã băm mới (cho lƣợt tính toán thứ k). Sau khi đã xử lý hết m khối, mã băm nhận đƣợc sau cùng là kết quả cần tìm.

Trong quá trình tính toán MD4 sử dụng 4 từ 32 bit : H1, H2, H3, H4 gọi là các biến dây chuyền, để lƣu trữ mã băm tạm thời tại mỗi lƣợt tính toán.

Thuật toán MD4 sử dụng các hàm sau: F(x,y,z) = (x AND y) OR ((NOT x) AND z)

G(x,y,z) = (x AND y) OR (y AND z) OR (z AND x) H(x,y,z) = (x XOR y XOR z)

(2)MD5:

Input : Chuỗi bit x có độ dài b>0 tùy ý. Output: Mã băm có độ dài cố định 128 bit.

Tƣơng tự MD4 và đƣợc phát triển nâng cao từ MD4.

(3)SHA-1:

(SHA: Secure Hash Algorithm)

Input : Chuỗi bit x có độ dài b>0 tùy ý. Output: Bản băm có độ dài cố định 160 bit. Mô tả tổng quan thuật toán:

Là thuật toán đƣợc xây dựng dựa trên MD4 do viện tiêu chuẩn công nghệ Hoa Kỳ đề xuất và hiện đang đƣợc sử dụng rộng rãi. Thuật toán SHA-1 tạo ra chuỗi mã băm có chiều dài cố định 160 bit từ chuỗi bit dữ liệu đầu vào x có chiều dài tùy ý. Ngoài những đặc điểm cơ bản về cấu trúc, so với MD4, SHA-1 có những đặc điểm khác biệt cơ bản sau :

- Chiều dài mã băm là 160 bit thay vì 128 bit trong MD4 nên thuật toán cần 5 biến trung gian 32 bit lƣu giá trị mã băm.

- Hàm nén gồm 4 vòng tính toán. Vòng thứ nhất sử dụng hàm F, vòng thứ hai sử dụng hàm H, vòng thứ ba sử dụng hàm G và vòng thứ tƣ lại sử dụng hàm H. Các hàm F, H, G định nghĩa giống trong MD4.

- Trong hàm nén, khối 16 từ (32 bit) dữ liệu đầu vào đƣợc mở rộng thành dãy 80 từ 32 bit, trong đó, 16 từ đầu tiên trong dãy đƣợc gữi nguyên nhƣ 16 từ ban đầu, sau đó mỗi từ (trong số 64 từ) tiếp theo đƣợc tạo ra bằng cách lấy 4 từ ngay trƣớc nó đem trộn (XOR) với nhau. Tất cả 80 từ đƣợc tạo ra đƣợc phân đều cho 4 vòng, mỗi vòng gồm 20 bƣớc tính toán (trong khi thuật toán MD4 chỉ có 3 vòng tính toán, mỗi vòng chỉ 16 bƣớc tính).

(4)RIPEMD-160

Đƣợc xây dựng trong khuôn khổ dự án RACE của cộng đồng châu Âu. Có độ dài mã băm là 160 bit, đƣợc thiết kế dựa trên thuật toán MD4.

Một phần của tài liệu Một số loại chữ ký điện tử và ứng dụng (Trang 61)

Tải bản đầy đủ (PDF)

(152 trang)