Các thuật tốn ứng cử viên AES

Một phần của tài liệu thuật toán mã hóa và ứng dụng phần 3 docx (Trang 37 - 41)

" Trong chương 3, chúng ta đã khảo sát phương pháp mã hĩa Rijndael. Cùng với phương pháp này, cịn cĩ bốn phương pháp mã hĩa khác được chọn vào vịng chung kết các ứng cử viên của chuẩn mã hĩa AES, bao gồm phương pháp MARS, RC6, Serpent và TwoFish. Trong nội dung của chương này sẽ lần lượt giới thiệu về bốn phương pháp mã hĩa ứng cử viên AES này.

5.1 Phương pháp mã hĩa MARS

MARS là thuật tốn mã hĩa khĩa đối xứng hỗ trợ kích thước khối dữ liệu 128 bit và cho phép sử dụng mã khĩa cĩ kích thước thay đổi được. Thuật tốn được thiết kế trên cơ sở khai thác các thế mạnh của việc thực hiện các phép tốn trên các thế hệ máy tính hiện nay nhằm tăng hiệu quả của thuật tốn so với các thuật tốn mã hĩa quy ước trước đây.

5.1.1 Quy trình mã hĩa

⊞ Phép cộng ⊟ Phép trừ

Hình 5.1. Quy trình mã hĩa MARS

D[3] D[2] D[1] D[0] D’[3] D’[2] D’[1] D’[0] Thơng tin cần mã hĩa Thơng tin đã mã hĩa Cộng khĩa 8 chu kỳ trộn “tới” khơng cĩ khĩa 8 chu kỳ trộn “tới” cĩ khĩa 8 chu kỳ trộn “lùi” cĩ khĩa 8 chu kỳ trộn “lùi” khơng cĩ khĩa Trừ khĩa Trộn “tới” Phần lõi chính Trộn “lùi”

Hình 5.1 thể hiện mơ hình chung của quy trình mã hĩa MARS. Dữ liệu đầu vào và kết quả của quá trình mã hĩa đều là từ cĩ độ dài 32 bit. Tất cả các phép tốn trong quy trình mã hĩa và giải mã đều thực hiện trên các từ 32 bit. Trong trường hợp khảo sát dữ liệu mã hĩa dưới dạng mảng gồm 4 byte, các tác giả quy ước sử dụng thứ tự lưu trữ little–endian.

5.1.2 S–box

Trong quá trình thiết kế S–box, các phần tử trong S-box được chọn sao cho S– box cĩ các đặc tính tuyến tính và vi phân an tồn chống lại các phương pháp tấn cơng. Phụ lục A trình bày chi tiết nội dung của S-box được sử dụng trong thuật tốn MARS.

Các S–boxđược phát sinh bằng cách cho i=0 đến 102, j=0 đến 4, [5 ] SHA 1(5 1 2 3)j

S i+ j = − i c c c (5.1)

(ởđây SHA – 1(.)j là từ thứ j trong kết quả của SHA – 1). Xem i như một số nguyên khơng dấu 32 bit và c1, c2, c3 là các hằng số cốđịnh. Trong khi thực hiện ta đặt c1=0xb7415162, c2 =0x283f6a88 (là phần khai triển nhị phân của các phân sốe, π tương ứng) và biến đổi c3 cho đến khi tìm được một S–box cĩ những đặc tính tốt. Xem SHA–1 như một phép tốn trên các dịng byte và sử dụng quy ước little–endian để chuyển đổi giữa các từ và các byte.

S–boxđược xây dựng như sau: Đầu tiên biến đổi các giá trị cĩ thể cĩ của c3 theo thứ tự tăng dần, bắt đầu với c3 =0. Đối với mỗi giá trị, phát sinh S–box và sau đĩ cốđịnh nĩ bằng cách biến đổi tồn bộ các cặp (i, j) của các mục trong S0, S1

theo thứ tự từđiển và kiểm tra xem S[i] ⊕ S[j] cĩ chênh lệch 2 hoặc nhiều byte zero. Bất kỳ lúc nào tìm được sự chênh lệch 2 hoặc nhiều byte zero thì thay thế S[i] với 3⋅S[i] và di chuyển đến i kế tiếp. Sau khi dừng lại, thử nghiệm S–box lại để kiểm tra xem nĩ cĩ thỏa mãn hết các điều kiện 1–8 ở trên và tính single bit correlation (điều kiện 9). Giá trị của c3 giảm single bit correlation là

3 0x02917d59

c = . S–box này cĩ parity bias 2–7, single bit bias đạt cao nhất là 1/30, Two consecutive bit bias đạt cao nhất 1/32 và single bit correlation bias nhỏ hơn 1/22.

5.1.3 Khi to và phân b khĩa

Thủ tục Key–Expansion thực hiện việc mở rộng mảng khĩa k[] bao gồm n từ 32 bit (với n là số bất kỳ trong khoảng từ 4 đến 14) thành một mảng K[] gồm 40 từ. Cần lưu ý là khơng cần cĩ bất kỳ yêu cầu đặc biệt gì về cấu trúc của khĩa gốc k[] (ví dụ như khĩa khơng cần sử dụng các bit parity). Ngồi ra, thủ tục Key– Expansion cũng đảm bảo rằng mỗi từ trong khĩa được sử dụng cho phép nhân trong thủ tục mã hĩa cĩ các đặc tính sau đây:

1. Hai bit thấp nhất của một từ trong khĩa được sử dụng trong phép nhân cĩ giá trị 1.

5.1.3.1 Thủ tục Key–Expansion

Thủ tục Key–Expansion bao gồm các bước sau:

1. Ban đầu, nội dung khĩa gốc được chép vào một mảng tạm T[] (cĩ độ dài là 15 từ), tiếp theo là sốn và cuối cùng là các số 0. Nghĩa là:

[0.. 1] [0.. 1], [ ] , [ 1..14] 0

T n− =k nT n =n T n+ = (5.2)

2. Sau đĩ, các bước dưới đây được thực hiện lặp lại bốn lần. Mỗi lần lặp sẽ tính giá trị của 10 từ kế tiếp trong khĩa mở rộng:

a) Mảng T[] được biến đổi sử dụng cơng thức tuyến tính sau: for i = 0 to 14

[ ] [ ] (( [ 7 mod15] [ 2 mod15]) 3) (4 )

T i =T iT i− ⊕T i− <<< ⊕ i+ j

với j là số thứ tự của lần lặp (j = 0, 1,…)

b) Kếđến, mảng T[] sẽđược biến đổi qua bốn chu kỳ của mạng Feistel loại 1:

T[i]=(T[i] + S[9 bit thấp của T[i–1 mod 15]]) <<< 9 với i = 0, 1, …, 14.

c) Sau đĩ, lấy 10 từ trong mảng T[], sắp xếp lại rồi đưa vào thành 10 từ kế tiếp của mảng khĩa mở rộng K[].

K[10j + i] = T[4i mod 15], i = 0,1,…,9 với j là số thứ tự của lần lặp, j = 0,1,…

Một phần của tài liệu thuật toán mã hóa và ứng dụng phần 3 docx (Trang 37 - 41)

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

(41 trang)