
thuật toán mã hóa và ứng dụng phần 4
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
thuật toán mã hóa và ứng dụng phần 4 Chương 4 4.2.2.2 Xác định khóa của chu kỳ Mã khóa của chu kỳ thứ i được xác định bao gồm các từ (8 byte) có chỉ số từ Nb * i đến Nb * (i + 1) − 1 của bảng mã khóa mở rộng. Như vậy, mã khóa của chu kỳ thứ i bao gồm các phần tử w[ Nb * i ] , w[ Nb * i + 1] , …, w[ Nb * (i + 1) − 1] . w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 w16 w17 ... Maõ khoùa chu kyø 0 Maõ khoùa chu kyø 1 Maõ khoù a chu kyø 2 ... Hình 4.2. Bảng mã khóa mở rộng và cách xác định mã khóa của chu kỳ (với Nb = 6 và Nk = 4) 4.2.3 Quy trình giải mã Quy trình giải mã được thực hiện qua các giai đoạn sau: 1. Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ giải mã. 2. Nr – 1 chu kỳ giải mã bình thường: mỗi chu kỳ bao gồm bốn bước biến đổi InvShiftRows, InvSubBytes, AddRoundKey, liên tiếp nhau: InvMixColumns. 3. Thực hiện chu kỳ giải mã cuối cùng. Trong chu kỳ này, thao tác InvMixColumns được bỏ qua. 88 Phương pháp Rijndael mở rộng InvCipher( byte in[8 * Nb], byte out[8 * Nb], word w[Nb * (Nr + 1)]) begin byte state[8,Nb] state = in // Xem phần 0 AddRoundKey(state, w + Nr * Nb) for round = Nr - 1 downto 1 InvShiftRows(state) // Xem phần 4.2.3.1 // Xem phần 0 InvSubBytes(state) AddRoundKey(state, w + round * Nb) InvMixColumns(state) // Xem phần 0 end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w) out = state end 4.2.3.1 Phép biến đổi InvShiftRows InvShiftRows là biến đổi ngược của biến đổi ShiftRows. Mỗi dòng của trạng thái được dịch chuyển xoay vòng theo chiều ngược với biến đổi ShiftRows với độ dời Nb–shift (r, Nb) khác nhau. Các byte ở cuối dòng được đưa vòng lên đầu dòng trong khi các byte còn lại có khuynh hướng di chuyển về cuối dòng. ' s r ,(c + shift ( r , Nb)) mod Nb = s r ,c với 0 < r < 8 và 0 ≤ c < Nb (4.9) 89 Chương 4 InvShiftRows(byte state[8,Nb]) begin byte t[Nb] for r = 1 to 7 for c = 0 to Nb - 1 t[(c + shift[r,Nb]) mod Nb] = state[r,c] end for for c = 0 to Nb – 1 state[r,c] = t[c] end for end for end 4.2.3.2 Phép biến đổi InvSubBytes Phép biến đổi ngược của thao tác SubBytes, ký hiệu là InvSubBytes, sử dụng bảng thay thế nghịch đảo của S-box trên GF(28) được ký hiệu là S-box-1. Quá trình thay thế 1 byte y dựa vào S-box-1 bao gồm hai bước sau: 1. Áp dụng phép biến đổi affine (trên GF(2)) sau đối với y (có biểu diễn nhị phân là {y 7 y 6 y5 y 4 y3 y 2 y1 y 0 } ): xi = y (i + 2 ) mod 8 ⊕ y (i +5) mod 8 ⊕ y ( i + 7) mod 8 ⊕ d i , với di là bit thứ i của giá trị {05},0 ≤ i ≤ 7. (4.10) Đây chính là phép biến đổi affine ngược của phép biến đổi affine ở bước 1 của S-box. 90 Phương pháp Rijndael mở rộng Gọi x là phần tử thuộc GF(28) có biểu diễn nhị phân là {x7 x6 x5 x4 x3 x2 x1 x0 } . 2. Xác định phần tử nghịch đảo x-1 ∈ GF(28) với quy ước {00}-1 = {00} Bảng D.2 thể hiện bảng thay thế nghịch đảo được sử dụng trong phép biến đổi InvSubBytes InvSubBytes(byte state[8,Nb]) begin for r = 0 to 7 for c = 0 to Nb - 1 state[r,c] = InvSbox[state[r,c]] end for end for end 4.2.3.3 Phép biến đổi InvMixColumns InvMixColumns là biến đổi ngược của phép biến đổi MixColumns. Mỗi cột của trạng thái hiện hành được xem như đa thức s(x) bậc 8 có các hệ số thuộc GF(28) và được nhân với đa thức a−1(x) là nghịch đảo của đa thức a(x) (modulo M ( x ) = x 8 + 1 ) được sử dụng trong phép biến đổi MixColumns. Với a(x) = {05}x7 + {03}x6 + {05}x5 + {04}x4+ {03}x3 + {02}x2 + {02}x + {01} (4.11) ta có: a-1(x) = {b3}x7 + {39}x6 + {9a}x5 + {a1}x4+ {db}x3 + {54}x2 + {46}x + {2a} (4.12) 91 Chương 4 −1 Phép nhân s′( x) = a ( x) ⊗ s( x) được biểu diễn dưới dạng ma trận như sau: ⎡ s ' 0, c ⎤ ⎡ s 0, c ⎤ ⎢ ⎥ ⎢ ⎥ ⎢ s '1,c ⎥ ⎢ s1,c ⎥ ⎢ s ' 2, c ⎥ ⎢ s 2, c ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ s ' 3,c ⎥ = M ⎢ s 3,c ⎥ , 0≤ c≤ Nb (4.13) ⎢s' ⎥ a ⎢s ⎥ −1 ⎢ 4, c ⎥ ⎢ 4, c ⎥ ⎢ s ' 5 ,c ⎥ ⎢ s 5, c ⎥ ⎢s' ⎥ ⎢s ⎥ ⎢ 6, c ⎥ ⎢ 6, c ⎥ ⎢ s ' 7 ,c ⎥ ⎢ s 7 ,c ⎥ ⎣ ⎦ ⎣ ⎦ Đoạn chương trình sau thể hiện thao tác InvMixColumns sử dụng đa thức a-1(x) trong công thức (4.12). InvMixColumns(byte block[8,Nb]) begin byte t[8] for c = 0 to Nb – 1 for r = 0 to 7 t[r] = block[r,c] end for for r = 0 to 7 block[r,c] = FFmul(0x2a, t[r]) xor FFmul(0xb3, t[(r + 1) mod 8]) xor ...
Tìm kiếm theo từ khóa liên quan:
thuật toán mã hóa thủ thuật máy tính cách sử dụng máy tính windows phần mềm cho windows cẩm nang tin học các tính năng trong windowsTài liệu có liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 366 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 344 0 0 -
Phần III: Xử lý sự cố Màn hình xanh
3 trang 237 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 235 0 0 -
Sao lưu dữ liệu Gmail sử dụng chế độ Offline
8 trang 223 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 223 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 222 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 213 0 0 -
Chiêu 28: Trích xuất dữ liệu số trong 1 chuỗi bằng VBA
4 trang 212 0 0 -
Hướng dẫn cách burn file ghost
9 trang 207 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 207 0 0 -
Thủ thuật Cách Ghost qua mạng LAN
2 trang 204 0 0 -
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 203 0 0 -
Tải video YouTube chất lượng gốc
4 trang 196 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 191 0 0 -
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KHAI BÁO HẢI QUAN ĐIỆN TỬ phần 1
18 trang 188 0 0 -
Mẹo hay trong sử dụng máy tính: Phần 2
181 trang 182 0 0 -
bảo mật mạng các phương thức giả mạo địa chỉ IP fake IP
13 trang 169 0 0 -
Tạo đĩa CD windows có bản quyền
5 trang 164 0 0 -
Hướng dẫn tạo file ghost và bung ghost
12 trang 161 0 0