Một số hàm băm xây dựng theo thuật toán riêng biệt

Một phần của tài liệu (LUẬN văn THẠC sĩ) một hệ mật xây dựng trên sơ đồfeistel không cân bằng và khả năng ứng dụng trên hàm băng (Trang 50 - 57)

6. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI

3.2.3. Một số hàm băm xây dựng theo thuật toán riêng biệt

3.2.3.1. Hàm băm MD4

Các hàm băm họ MD4 đều dựa theo nguyên lý thiết kế của Merkle- Damgºard. Chúng có nhiều điểm tƣơng đồng trong các hàm nén. Sơ đồ cơ bản đƣợc mô tả trong hình 3.6

Các hàm nén sử dụng một số các thanh ghi đƣợc khởi tạo cùng với IV. Các thanh ghi sau đó đƣợc cập nhật trong các bƣớc liên tiếp phụ thuộc vào thông báo. Ngoài việc phụ thuộc vào thông báo, các bƣớc đơn lẻ rất giống nhau, chỉ thay đổi một vài thông số cụ thể.

Đầu ra cuối cùng của hàm nén đƣợc tính từ trạng thái cuối cùng của các thanh ghi và IV (thông thƣờng là cộng chúng với nhau). Việc tính ngƣợc hàm nén là không thể, điều này rất cần thiết để tránh phép tấn công kẻ đứng giữa.

* Các thông số

Chi tiết về cấu trúc tổng quát của mỗi hàm đƣợc mô tả bởi một vài tham số nhƣ trong bảng 3.1. Các thông số chính của tất cả các hàm băm đều dựa theo nguyên lý MD: đầu ra hàm băm có độ dài n, đầu ra hàm nén có độ dài m và đầu vào các khối thông báo có độ dài l.

Hầu hết các hàm của họ MD4 đều đƣợc tối ƣu trong thiết kế phần mềm trên các vi xử lý 32 bit, ví dụ chiều dài một từ là w32bít. Ngoại trừ SHA-384 và SHA- 512 ców64.

Các tham số khác đƣợc suy ra bao gồm: Số lƣợng các từ đầu vào Xi của hàm nén, ký hiệu là t, và đƣợc tính là tl w. Tƣơng tự, chiều dài đầu ra m của hàm nén chính là chiều dài của giá trị chuỗi, trong các họ MD4 các hàm băm đƣợc dùng khởi tạo các thanh ghi, số lƣợng r các thanh ghi tính đƣợc là: rm w.

Thông số quan trọng tiếp theo là số bƣớc s (còn gọi là các vòng). Đây đƣợc xem là thông số bảo mật. Để tăng tính bảo mật của hàm băm thông thƣờng tăng số bƣớc s, tuy nhiên khi đó hiệu quả sẽ giảm.

Các thông số cơ bản của một số hàm băm cụ thể đƣợc mô tả trong bảng 3.1. Chú ý SHA-0 và RIPEMD-0 là các hàm băm nguyên thủy không có ký hiệu “-0”. Sau này ký hiệu này đƣợc thêm vào để tránh nhầm lẫn. Ký hiệu “2x” trong bảng liên quan đến việc các hàm sử dụng 2 tính toán song song độc lập. Ngoại trừ SHA- 224 và SHA-384 độ dài đầu ra m của hàm nén vào đầu ra n của hàm băm là giống

nhau, mn. Trong SHA-224 và SHA-384 ở bƣớc cuối cùng cắt bỏ bit để giảm giá trị băm thực tế.

* Ký hiệu

Khối thông báo đầu vào ( )j

X đƣợc chia thành t khối nhỏ (các từ thông báo) ký hiệu X0,X1,...,Xt1. Sau đó các từ thông báo này đƣợc mở rộng thành các giá trị

0, 1,..., t 1

W W W , trong đó các Wi là các đầu vào ở bƣớc thứ i. Giá trị trong các thanh ghi ở các bƣớc đƣợc ký hiệu là Ri.

Bảng 3.1. Thông số của các hàm băm họ MD4

Bảng 3.2. Ký hiệu các thông số và các biến

l độ dài các khối thông báo đầu vào (theo bit)

m độ dài đầu ra hàm nén (theo bit)

n độ dài đầu ra hàm băm (theo bit)

r số lƣợng các thanh ghi

s số lƣợng các bƣớc (vòng)

t số lƣợng các từ thông báo đầu vào Xi w chiều dài một từ (theo bit)

k  hoán vị sử dụng ở bƣớc thứ k. i f phép toán logic ở bƣớc thứ i. i K hệ số sử dụng ở bƣớc thứ i. i

R nội dung trong thanh ghi ở bƣớc thứ i.

i

s số bit dịch ở bƣớc thứ i.

i

W từ thông báo đầu vào ở bƣớc i, phụ thuộc vào thông báo.

i

X từ thông báo

3.2.3.2. Hàm băm SHA 1

SHA (SecureHashFunction) là hàm băm một chiều đƣợc phát triển bởi cơ quan an ninh quốc gia Hoa Kỳ NSA và đƣợc công bố bởi Viện Tiêu chuẩn và Công nghệ Hoa Kỳ vào năm 1993 đƣợc gọi là SHA-0, sau đó đƣợc cải tiến và sửa đổi năm 1995 và đổi tên thành SHA-1.

Hàm băm SHA-11 là hàm băm phát triển dựa trên hàm băm MD4, nó nhận thông điệp ở đầu vào có chiều dài 64

k2 bits, thực hiện xử lý và đƣa ra thông điệp thu gọn có chiều dài cố định 160 bits [3],[13]. Quá trình tính toán cũng thực hiện theo từng khối 512 bits, nhƣng bộ đệm xử lý dùng 5 thanh ghi 32 bits. Thuật toán này chạy tốt đối với các bộ vi xử lý có cấu trúc 32 bits.

Bảng 3.3: Các phiên bản của SHA

Thông số SHA-1 SHA-256 SHA-384 SHA-512

Kích thƣớc mã băm (bit) 160 256 384 512

Kích thƣớc thông tin gốc (bit) < 264 < 264 < 2128 < 2128

Độ dài từ (bit) 32 32 64 64

Số bƣớc thực hiện (bƣớc) 80 64 80 80

Phần này chỉ tập trung nghiên cứu thuật toán băm SHA1, các phiên bản khác của SHA cũng đƣợc thiết kế theo nguyên lý tƣơng tự.

Giải thuật gồm 5 bƣớc thao tác trên khối dữ liệu 512 bits nhƣ sau:

Bƣớc 1: Nhồi thêm bit đệm – Appendpaddingbit

- Thông điệp đƣợc nhồi thêm các bit sao cho độ dài l448 mod 512 hay

l n.512 + 448 (n, l nguyên).

- Tất cả các khối trƣớc có chiều dài bằng nhau là 512 bits, riêng khối cuối cùng là 448 bits. Việc nhồi thêm bit vào khối thông điệp đƣợc thực hiện với tất cả các khối thông tin gốc, kể cả khi khối thông tin gốc có số bit chính xác bằng 448 mod 512 (khi đó chuỗi bit chèn thêm vào sẽ có chiều dài 512 bits).

- Nguyên tắc đệm là thêm một bit 1 vào cuối chuỗi bit, sau đó gắn một chuỗi bit 0 đủ để tạo thành khối 512 bits.

Hình 3.7. Quá trình nhồi thêm các bit vào thông điệp ban đầu của SHA-1

Bƣớc 2: Thêm độ dài thông điệp – Appendlength

- Độ dài của khối dữ liệu ban đầu đƣợc biểu diễn dƣới dạng nhị phân 64 bits và đƣợc thêm vào cuối chuỗi nhị phân kết quả của bƣớc 1 (hình ). Độ dài đƣợc biểu diễn dƣới dạng nhị phân 64 bits không dấu.

- Kết quả có đƣợc từ 2 bƣớc đầu là một khối dữ liệu đƣợc biểu diễn: Bằng một dãy L khối 512 bits Y0, Y1, …, YL-1

Hình 3.8. Cấu trúc khối dữ liệu trong giải thuật SHA-1

Bƣớc 3: Khởi tạo bộ đệm MD – Initialize MD bufer

- Bộ đệm MD (Messagedigest) là bộ nhớ có dung lƣợng 160 bits dùng để chứa các kết quả trung gian và kết quả cuối cùng của mã băm. Bộ nhớ này đƣợc tổ chức thành 5 thanh ghi 32 bits và đƣợc khởi tạo các giá trị ban đầu nhƣ sau:

A = 0x67452301 B = 0xEFCDAB89 C = 0x98BADCFE D = 0x10325476 E = 0xC3D2E1F0

Bƣớc 4: Xử lý thông điệp theo từng khối 512 bits - Processmessage

Đây là công đoạn trung tâm của hàm băm, còn đƣợc gọi là hàm nén (compressfunction), bao gồm 4 vòng, mỗi vòng 20 bƣớc. Hình 3.9 trình bày sơ đồ khối của bƣớc 4. Cả 4 vòng có cấu trúc tƣơng tự nhau, nhƣng mỗi vòng sử dụng một hàm luận lý khác nhau: Bƣớc Hàm Vòng 1 0 t 19  f (t,B,C,D) (B C) ( B D)1      Vòng 2 20 t 39 f (t, B, C, D)2   B C D Vòng 3 40 t 59 f (t, B, C, D)3 (BC)(BD)(CD) Vòng 4 60 t 79 f (t, B, C, D)4   B C D

- Ngõ vào của mỗi vòng là khối Y (512 bits) đƣợc xử lý cùng với giá trị của bộ đệm MD. Mỗi vòng sử dụng một biến cộng Kt khác nhau, với 0 t 79  biểu diễn cho 80 bƣớc của 4 vòng. Tuy nhiên, thực tế thì có 4 giá trị K khác nhau nhƣ sau: Bƣớc Giá trị Kt Vòng 1 0 t 19  Kt = 5A827999 Vòng 2 20 t 39 Kt = 6ED9EBA1 Vòng 3 40 t 59 Kt = 8F1BBCDC Vòng 4 60 t 79 Kt = CA62C1D6

- Mỗi bƣớc đƣợc mô tả nhƣ sau:  5 t t A E + f(t,B,C,D) + S (A) + W + K BA 30 CS (B) DC ED Trong đó: A,B,C,D,E : các từ bộ đệm t : số thứ tự của bƣớc Sk : dịch vòng trái k bits Wt : từ thứ t của khối dữ liệu Kt : hằng số

+ : phép cộng modulo 232

Hình 3.9. Hàm nén SHA-1 trên 1 bƣớc

- Từ 16 từ 32 bits của khối dữ liệu đầu vào đƣợc mở rộng thành 80 từ Wt. Với 0 t 15  , giá trị Wt lấy trực tiếp từ khối dữ liệu ban đầu.

Với t > 15, Wt S (W1 t 16 Wt 14 Wt 8 W ).t 3

- Ngõ ra của vòng thứ 4 (tức bƣớc 80) đƣợc cộng với ngõ vào của vòng đầu tiên để tạo ra CVq+1. Thao tác cộng đƣợc thực hiện một cách độc lập, ứng với từng thanh ghi trong bộ đệm MD với một từ tƣơng ứng trong CVq sử dụng phép cộng modulo 232.

CV0 = IV

CVq+1 = SUM32(CVq, ABCDEq) MD = CVL

Trong đó:

IV : giá trị khởi tạo của bộ đệm

ABCDE

ABCDEq: đầu ra của hàm nén trên khối thứ q

L : số khối 512 bits của thông điệp

SUM32 : phép cộng modulo 232 trên từng từ 32 bits của đầu vào

MD : giá trị băm

Hình 3.10: SHA 1 xử lý khối dữ liệu 512 bit

Bƣớc 5: Xuất kết quả - Output

- Sau khi tất cả các khối 512 bits đã đƣợc xử lý, ngõ ra của bƣớc cuối cùng chính là giá trị của mã băm 160 bits.

Một phần của tài liệu (LUẬN văn THẠC sĩ) một hệ mật xây dựng trên sơ đồfeistel không cân bằng và khả năng ứng dụng trên hàm băng (Trang 50 - 57)