![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
book mã hóa ứng dụng update 2 phần 3
Số trang: 29
Loại file: pdf
Dung lượng: 483.29 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Giá trị của di số shift(r,Nb) phụ thuộc vào chỉ số dòng r và kích thước Nb của khối và được thể hiện trong
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), 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
Nội dung trích xuất từ tài liệu:
book mã hóa ứng dụng update 2 phần 3 Chương 3 Giá trị của di số shift(r,Nb) phụ thuộc vào chỉ số dòng r và kích thước Nb của khối và được thể hiện trong Bảng 3.1. InvShiftRows(byte state[4,Nb]) begin byte t[Nb] for r = 1 to 3 for c = 0 to Nb - 1 t[(c + h[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 3.6.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), 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à {y7 y 6 y5 y 4 y3 y 2 y1 y 0 } ): 64 Phương pháp mã hóa Rijndael ⎡ x 0 ⎤ ⎡0 0 1 0 0 1 0 1 ⎤ ⎡ y 0 ⎤ ⎡1 ⎤ ⎢x ⎥ ⎢ ⎢⎥ 0 0 1 0 0 1 0⎥ ⎢ y1 ⎥ ⎢0⎥ ⎢ 1 ⎥ ⎢1 ⎥ ⎢⎥ ⎢ x 2 ⎥ ⎢0 1 0 0 1 0 0 1 ⎥ ⎢ y 2 ⎥ ⎢1 ⎥ ⎢⎥⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x3 ⎥ = ⎢1 0 1 0 0 1 0 0⎥ ⎢ y 3 ⎥ ⎢0⎥ + (3.27) ⎢ x 4 ⎥ ⎢0 1 0 1 0 0 1 0⎥ ⎢ y 4 ⎥ ⎢0⎥ ⎢⎥⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x 5 ⎥ ⎢0 0 1 0 1 0 0 1 ⎥ ⎢ y 5 ⎥ ⎢0⎥ ⎢ x ⎥ ⎢1 0 0 1 0 1 0 0⎥ ⎢ y 6 ⎥ ⎢0⎥ ⎢ 6⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x 7 ⎥ ⎢0 1 0 0 1 0 1 0⎥ ⎢ y 7 ⎥ ⎢0⎥ ⎣⎦⎣ ⎦⎣ ⎦ ⎣ ⎦ hay 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. (3.28) Rõ ràng đâ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. 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} InvSubBytes(byte state[4,Nb]) begin for r = 0 to 3 for c = 0 to Nb - 1 state[r,c] = InvSbox[state[r,c]] end for end for end 65 Chương 3 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 3.6.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 4 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)) được sử dụng trong phép biến đổi MixColumns. a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} (3.29) Phép nhân s ′( x) = a −1 ( x ) ⊗ s ( x) có thể được biểu diễn dưới dạng ma trận: ⎡ s 0,c ⎤ ⎡0e ' 0b 0d 09⎤ ⎡ s0,c ⎤ ⎢' ⎥ ⎢ ⎥⎢ ⎥ 0e 0b 0d ⎥ ⎢ s1,c ⎥ ⎢ s1,c ⎥ = ⎢09 với 0 ≤ c < Nb (3.30) ⎢ s ' ⎥ ⎢0d 09 0e 0b⎥ ⎢ s 2,c ⎥ ⎢ 2 ,c ⎥ ⎢ ⎥⎢ ⎥ ' 0d 09 0e⎦ ⎢ s3,c ⎥ ⎢ s3,c ⎥ ⎣0b ⎣⎦ ⎣⎦ Trong đoạn mã chương trình dưới đây, hàm FFmul(x, y) thực hiện phép nhân (trên trường GF(28)) hai phần tử x và y với nhau. InvMixColumns(byte block[4,Nb]) begin byte t[4] for c = 0 to Nb – 1 for r = 0 to 3 t[r] = block[r,c] end for for r = 0 to 3 66 Phương pháp mã hóa Rijndael block[r,c] = FFmul(0x0e, t[r]) xor FFmul(0x0b, t[(r + 1) mod 4]) xor FFmul(0x0d, t[(r + 2) mod 4]) xor FFmul(0x09, t[(r + 3) mod 4]) end for end for end 3.6.4 Quy trình giải mã tương đương Nhận xét: 1. Phép biến đổi InvSubBytes thao tác trên giá trị của từng byte riêng biệt của trạng thái hiện hành, trong khi phép biến đổi InvShiftRows chỉ thực hiện thao tác di chuyển các byte mà không làm thay đổi giá trị của chúng. Do đó, thứ tự của hai phép biến đổi này trong quy trình mã hóa có thể được đảo ngược. Với phép biến đổi tuyến tính A bất kỳ, ta có A( x + k ) = A( x) + A(k ) . Từ đó, 2. suy ra InvMixColumns(state XOR Round Key)= InvMixColumns(state) XOR InvMixColumns(Round Key) Như vậy, thứ tự của phép biến đổi InvMixColumns và AddRoundKey trong quy trình giải mã có thể được đảo ngược với điều kiện mỗi từ (4 byte) trong bảng mã khóa mở rộng sử dụng trong giải mã phải được biến đổi bởi InvMixColumns. Do trong chu kỳ mã hóa cuối cùng không thực hiện thao tác MixColumns nên không 67 Chương 3 cần thực hiện thao tác InvMixColumns đối với mã khóa của chu kỳ giải mã đầu tiên cũng như chu kỳ giải mã cuối cùng. Vậy, quy trình giải mã Rijndael có thể được thực hiện theo với trình tự các phép biến đổi ngược hoàn toàn tương đương với quy trình mã hóa. EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, dw + Nr * Nb) for round = Nr - 1 downto 1 InvSubBytes(state) InvShiftRows(state) InvMixColumns(state) AddRoundKey(state, dw + round * Nb) end for InvSubBytes(state) InvShiftRows(state) AddRoun ...
Nội dung trích xuất từ tài liệu:
book mã hóa ứng dụng update 2 phần 3 Chương 3 Giá trị của di số shift(r,Nb) phụ thuộc vào chỉ số dòng r và kích thước Nb của khối và được thể hiện trong Bảng 3.1. InvShiftRows(byte state[4,Nb]) begin byte t[Nb] for r = 1 to 3 for c = 0 to Nb - 1 t[(c + h[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 3.6.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), 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à {y7 y 6 y5 y 4 y3 y 2 y1 y 0 } ): 64 Phương pháp mã hóa Rijndael ⎡ x 0 ⎤ ⎡0 0 1 0 0 1 0 1 ⎤ ⎡ y 0 ⎤ ⎡1 ⎤ ⎢x ⎥ ⎢ ⎢⎥ 0 0 1 0 0 1 0⎥ ⎢ y1 ⎥ ⎢0⎥ ⎢ 1 ⎥ ⎢1 ⎥ ⎢⎥ ⎢ x 2 ⎥ ⎢0 1 0 0 1 0 0 1 ⎥ ⎢ y 2 ⎥ ⎢1 ⎥ ⎢⎥⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x3 ⎥ = ⎢1 0 1 0 0 1 0 0⎥ ⎢ y 3 ⎥ ⎢0⎥ + (3.27) ⎢ x 4 ⎥ ⎢0 1 0 1 0 0 1 0⎥ ⎢ y 4 ⎥ ⎢0⎥ ⎢⎥⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x 5 ⎥ ⎢0 0 1 0 1 0 0 1 ⎥ ⎢ y 5 ⎥ ⎢0⎥ ⎢ x ⎥ ⎢1 0 0 1 0 1 0 0⎥ ⎢ y 6 ⎥ ⎢0⎥ ⎢ 6⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ x 7 ⎥ ⎢0 1 0 0 1 0 1 0⎥ ⎢ y 7 ⎥ ⎢0⎥ ⎣⎦⎣ ⎦⎣ ⎦ ⎣ ⎦ hay 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. (3.28) Rõ ràng đâ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. 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} InvSubBytes(byte state[4,Nb]) begin for r = 0 to 3 for c = 0 to Nb - 1 state[r,c] = InvSbox[state[r,c]] end for end for end 65 Chương 3 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 3.6.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 4 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)) được sử dụng trong phép biến đổi MixColumns. a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} (3.29) Phép nhân s ′( x) = a −1 ( x ) ⊗ s ( x) có thể được biểu diễn dưới dạng ma trận: ⎡ s 0,c ⎤ ⎡0e ' 0b 0d 09⎤ ⎡ s0,c ⎤ ⎢' ⎥ ⎢ ⎥⎢ ⎥ 0e 0b 0d ⎥ ⎢ s1,c ⎥ ⎢ s1,c ⎥ = ⎢09 với 0 ≤ c < Nb (3.30) ⎢ s ' ⎥ ⎢0d 09 0e 0b⎥ ⎢ s 2,c ⎥ ⎢ 2 ,c ⎥ ⎢ ⎥⎢ ⎥ ' 0d 09 0e⎦ ⎢ s3,c ⎥ ⎢ s3,c ⎥ ⎣0b ⎣⎦ ⎣⎦ Trong đoạn mã chương trình dưới đây, hàm FFmul(x, y) thực hiện phép nhân (trên trường GF(28)) hai phần tử x và y với nhau. InvMixColumns(byte block[4,Nb]) begin byte t[4] for c = 0 to Nb – 1 for r = 0 to 3 t[r] = block[r,c] end for for r = 0 to 3 66 Phương pháp mã hóa Rijndael block[r,c] = FFmul(0x0e, t[r]) xor FFmul(0x0b, t[(r + 1) mod 4]) xor FFmul(0x0d, t[(r + 2) mod 4]) xor FFmul(0x09, t[(r + 3) mod 4]) end for end for end 3.6.4 Quy trình giải mã tương đương Nhận xét: 1. Phép biến đổi InvSubBytes thao tác trên giá trị của từng byte riêng biệt của trạng thái hiện hành, trong khi phép biến đổi InvShiftRows chỉ thực hiện thao tác di chuyển các byte mà không làm thay đổi giá trị của chúng. Do đó, thứ tự của hai phép biến đổi này trong quy trình mã hóa có thể được đảo ngược. Với phép biến đổi tuyến tính A bất kỳ, ta có A( x + k ) = A( x) + A(k ) . Từ đó, 2. suy ra InvMixColumns(state XOR Round Key)= InvMixColumns(state) XOR InvMixColumns(Round Key) Như vậy, thứ tự của phép biến đổi InvMixColumns và AddRoundKey trong quy trình giải mã có thể được đảo ngược với điều kiện mỗi từ (4 byte) trong bảng mã khóa mở rộng sử dụng trong giải mã phải được biến đổi bởi InvMixColumns. Do trong chu kỳ mã hóa cuối cùng không thực hiện thao tác MixColumns nên không 67 Chương 3 cần thực hiện thao tác InvMixColumns đối với mã khóa của chu kỳ giải mã đầu tiên cũng như chu kỳ giải mã cuối cùng. Vậy, quy trình giải mã Rijndael có thể được thực hiện theo với trình tự các phép biến đổi ngược hoàn toàn tương đương với quy trình mã hóa. EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, dw + Nr * Nb) for round = Nr - 1 downto 1 InvSubBytes(state) InvShiftRows(state) InvMixColumns(state) AddRoundKey(state, dw + round * Nb) end for InvSubBytes(state) InvShiftRows(state) AddRoun ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính mẹo vặt máy tính kỹ thuật lập trình mẹo hay Linux tin học căn bản thủ thuật tin học tự học tin họcTài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 324 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 316 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 272 0 0 -
Cách phân tích thiết kế hệ thống thông tin quan trọng phần 4
13 trang 226 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 222 0 0 -
Thủ thuật chặn web đen bằng phần mềm
10 trang 222 0 0 -
Xử lý tình trạng máy tính khởi động/tắt chậm
4 trang 217 0 0 -
Bài giảng điện tử môn tin học: Quản trị các hệ thống thông tin quản lý xuyên quốc gia
27 trang 216 0 0 -
Phần III: Xử lý sự cố Màn hình xanh
3 trang 215 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 214 0 0