Mở rộng thông báo

Một phần của tài liệu TỔNG QUAN VỀ MẬT MÃ HỌC (Trang 96)

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

3.1.2. Mở rộng thông báo

Mở rộng thông báo mô tả việc các giá trị Wi(được xem là các đầu vào cho các bước mã hóa) được tính toán từ khối thông báo đầu vào hiện tại ( )j

X . Do đó khối thông báo đầu vào hiện tại X(j) được chia thành t từ X X0, 1,...,Xt1 và sau đó tính ra s giá trị W W0, 1,...,Ws1.

Trong họ MD4 có hai phương pháp để thực hiện việc này đó là: dùng hoán vị vòng và các hàm đệ quy.

3.1.2.1. Hoán vị vòng

Kiểu mở rộng thông báo này được dùng trong MD4, MD5, tất cả các biến thể của RIPEMD và HAVAL. Hoán vị vòng có nghĩa là các bước được nhóm lại với nhau thành s t vòng bao gồm mỗi t bước (thông thường là 16). Sau đó, trong mỗi vòng mỗi một từ thông báo được dùng làm đầu vào Witrong một bước.

Có thể mô tả một hoàn vị vòng k cho mỗi vòng k như sau: ( )

k

kt i i

W   X (3.1)

Hay nói cách khác: Xi được dùng làm đàu vào ở bước này. 1

( ), {0,..., 1}

k

kt i ks t (3.2)

Thông thường phép hoán vị được lựa chọn theo cách các ít các mẫu càng tốt, ví dụ không có 2 từ X Xi, j được đưa vào hai vòng liên tiếp. Điều này là để có tính khuếch tán tốt. Ngoài ra rất nhiều nhà thiết kế đều muốn một “mở rộng” đơn giản để lựa chọn các tham số. Ví dụ mở rộng thông báo của MD5 sử dụng công thức rất đơn giản: 0 2 1 3 ( ) ( ) 3 16 mod16 ( ) 5 1mod16 ( ) 7 mod16 i i i i i i i i           (3.3)

3.1.2.2. Mở rộng thông báo theo kiểu đệ quy

Khác với các phép hoán vị vòng, các hàm trong họ SHA sử dụng csc phpes mở rộng thông báo đệ quy: sau khi chọn csc giá trị khởi tạo

, 0,..., 1

i i

WX it

Giá trịWisau được tính đệ quy từ Witrước.

Kiểu mở rộng thông báo này có ưu điểm là tăng độ khuếch tán, vì tất cả các

i

Wđều phụ thuộc (gần như) vào Xi. Do đó, nếu một trong các từ của thông báo bị thay đổi, nhiều bước trong giai đoạn 2 của bước tính toán sẽ bị ảnh hưởng. Điều này làm cho việc dự đoán tiến trình trong một bước khó khăn hơn.

Trong SHA-0, thuật toán đệ quy sử dụng như sau:

3 8 14 16, {16,...,79}

i i i i i

WW W W Wi (3.4)

Tuy nhiên có một khiếm khuyết trong phép đệ quy này: bit thứ k của mỗi từ

i

W chỉ bị ảnh hưởng bởi các bit thư kWitrước. Có nghĩa là phép mở rộng này có độ khuếch tán thấp hơn mong đợi với cùng một cấu trúc. Bản SHA-1 sửa đổi sử dụng phép mở rộng thông báo sau để có độ khuếch tán tốt hơn:

1

3 8 14 16

( ) , {16,..., 79}

i i i i i

Trong các phiên bản SHA sau này NIST quyết định ghép thêm không những các phép và quay bít, mà còn thêm phép dịch bit và cộng modulo trong khi mở rộng thông báo. Do đó, hai hàm phụ:

7 18 3 0 17 19 10 1 ( ) : ( ) ( ) ( ) ( ) : ( ) ( ) ( ) x X x x x X x x              

được thêm vào để tăng độ khuếch tán giữa các bit hơn so với việc xoay một bit của SHA-1. Ngoài ra việc sử dụng phép dịch bit (>>) trong các hàm này (thay vì phép quay >>>) tránh việc quay đối xứng có thể gây ra các nhược điểm tiềm tàng.

SHA-256 (và cả SHA-224, sử dụng SHA-256 nhưng loại bỏ 32 đầu ra) dùng quy tắc mở rộng thông báo như sau:

1( 2) 7 0( 15) 16, {16,...,63}

i i i i i

W  W W  W Wi (3.6)

Do việc sử dụng các phép tính modulo thay vì phép trước đây, phép mở rộng thông báo này không còn là tuyến tính nữa.

Một phần của tài liệu TỔNG QUAN VỀ MẬT MÃ HỌC (Trang 96)

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

(141 trang)