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
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 ...
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ìm kiếm theo từ khóa liên quan:
thủ thuật máy tính bí quyết lập trình thiết kế giao diện web thế kế wordpress mẹo tin họcGợi ý tài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 291 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 273 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 202 0 0 -
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 195 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 194 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 189 0 0 -
Tải video YouTube chất lượng gốc
4 trang 188 0 0 -
Hướng dẫn cách burn file ghost
9 trang 182 0 0 -
Tổng hợp 30 lỗi thương gặp cho những bạn mới sử dụng máy tính
9 trang 180 0 0 -
Phục hồi mật khẩu đăng nhập windowsNếu chính chủ nhân của chiếc máy tính
3 trang 180 0 0