Danh mục

thuật toán mã hóa và ứng dụng p3

Số trang: 41      Loại file: pdf      Dung lượng: 625.30 KB      Lượt xem: 21      Lượt tải: 0    
10.10.2023

Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong quy trình mã hóa vẫn sử dụng 4 phép biến đổi chính như đã trình bày trong thuật toán mã hóa Rijndael cơ bản: 1. AddRoundKey: cộng ( ⊕ ) mã khóa của chu kỳ vào trạng thái hiện hành. Độ dài của mã khóa của chu kỳ bằng với kích thước của trạng thái. 2. SubBytes: thay thế phi tuyến mỗi byte trong trạng thái hiện hành thông qua bảng thay thế (S-box).
Nội dung trích xuất từ tài liệu:
thuật toán mã hóa và ứng dụng p3 Phương pháp Rijndael mở rộng4.2.1 Quy trình mã hóaTrong quy trình mã hóa vẫn sử dụng 4 phép biến đổi chính như đã trình bày trongthuật toán mã hóa Rijndael cơ bản: AddRoundKey: cộng ( ⊕ ) mã khóa của chu kỳ vào trạng thái hiện hành. Độ1. dài của mã khóa của chu kỳ bằng với kích thước của trạng thái.2. SubBytes: thay thế phi tuyến mỗi byte trong trạng thái hiện hành thông qua bảng thay thế (S-box).3. MixColumns: trộn thông tin của từng cột trong trạng thái hiện hành. Mỗi cột được xử lý độc lập.4. ShiftRows: dịch chuyển xoay vòng từng dòng của trạng thái hiện hành với di số khác nhau.Mỗi phép biến đổi thao tác trên trạng thái hiện hành S. Kết quả S’ của mỗi phépbiến đổi sẽ trở thành đầu vào của phép biến đổi kế tiếp trong quy trình mã hóa.Trước tiên, toàn bộ dữ liệu đầu vào được chép vào mảng trạng thái hiện hành.Sau khi thực hiện thao tác cộng mã khóa đầu tiên, mảng trạng thái sẽ được trảiqua Nr = 10, 12 hay 14 chu kỳ biến đổi (tùy thuộc vào độ dài của mã khóa chínhcũng như độ dài của khối được xử lý). Nr − 1 chu kỳ đầu tiên là các chu kỳ biếnđổi bình thường và hoàn toàn tương tự nhau, riêng chu kỳ biến đổi cuối cùng cósự khác biệt so với Nr − 1 chu kỳ trước đó. Cuối cùng, nội dung của mảng trạngthái sẽ được chép lại vào mảng chứa dữ liệu đầu ra. 79Chương 4Hình 4.1 thể hiện kiến trúc của một chu kỳ biến đổi trong thuật toán Rijndael mởrộng 256/384/512-bit với Nb = 4.Quy trình mã hóa Rijndael mở rộng được tóm tắt lại như sau:1. Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ mã hóa.2. Nr–1 chu kỳ mã hóa bình thường: mỗi chu kỳ bao gồm 4 bước biến đổi liên tiếp nhau: SubBytes, ShiftRows, MixColumns, và AddRoundKey.3. Thực hiện chu kỳ mã hóa cuối cùng: trong chu kỳ này thao tác MixColumns được bỏ qua. Hình 4.1. Kiến trúc một chu kỳ biến đổi của thuật toán Rijndael mở rộng 256/384/512-bit với Nb = 4Trong thuật toán dưới đây, mảng w[] chứa bảng mã khóa mở rộng; mảng in[]và out[] lần lượt chứa dữ liệu vào và kết quả ra của thuật toán mã hóa.80 Phương pháp Rijndael mở rộngCipher(byte in[8 * Nb], byte out[8 * Nb], word w[Nb * (Nr + 1)])begin byte state[8,Nb] state = in // Xem phần 4.2.1.4 AddRoundKey(state, w) for round = 1 to Nr – 1 // Xem phần 4.2.1.1 SubBytes(state) // Xem phần 4.2.1.2 ShiftRows(state) // Xem phần 4.2.1.3 MixColumns(state) AddRoundKey(state, w + round * Nb) end for SubBytes(state) ShiftRows(state) AddRoundKey(state, w + Nr * Nb) out = stateend4.2.1.1 Phép biến đổi SubBytesThao tác biến đổi SubBytes là phép thay thế các byte phi tuyến và tác động mộtcách độc lập lên từng byte trong trạng thái hiện hành. Bảng thay thế (S-box) cótính khả nghịch và quá trình thay thế 1 byte x dựa vào S-box bao gồm hai bước: Xác định phần tử nghịch đảo x−1 ∈ GF(28). Quy ước {00}−1 = {00}1. 81Chương 4 Áp dụng phép biến đổi affine (trên GF(2)) đối với x−1 (giả sử x−1 có biểu diễn2. nhị phân là {x7 x6 x5 x4 x3 x2 x1 x0 } ): yi = xi ⊕ x(i +4) mod 8 ⊕ x(i +5) mod 8 ⊕ x(i +6) mod 8 ⊕ x (i +7) mod 8 ⊕ ci (4.2) với ci là bit thứ i của {63}, 0 ≤ i ≤ 7.Phép biến đổi SubBytes được thể hiện dưới dạng mã giả:SubBytes(byte state[8,Nb])begin for r = 0 to 7 for c = 0 to Nb - 1 state[r,c] = Sbox[state[r,c]] end for end forendBảng D.2 thể hiện bảng thay thế nghịch đảo được sử dụng trong phép biến đổiSubBytes.4.2.1.2 Phép biến đổi ShiftRowsTrong thao tác biến đổi ShiftRows, mỗi dòng của trạng thái hiện hành được dịchchuyển xoay vòng với độ dời khác nhau. Byte Sr,c tại dòng r cột c sẽ dịch chuyểnđến cột (c - shift(r, Nb)) mod Nb hay: s r ,c = s r ,(c + shift (r , Nb )) mod Nb với 0 < r < 8 và 0 ≤ c < Nb (4.3)với shift (r , Nb ) = r mod Nb (4.4)82 Phương pháp Rijndael mở rộngPhép biến đổi ShiftRows được thể hiện dưới dạng mã giả:ShiftRows(byte state[8,Nb])begin byte t[Nb] for r = 1 to 7 for c = 0 to Nb - 1 t[c] = state[r, (c + shift[r,Nb]) mod Nb] end for for c = 0 to Nb – 1 stat ...

Tài liệu được xem nhiều: