Danh mục

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

Số trang: 21      Loại file: pdf      Dung lượng: 440.66 KB      Lượt xem: 15      Lượt tải: 0    
Thư viện của tui

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

Thông tin tài liệu:

Phương pháp mã hóa Rijndaelblock[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
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 3 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 forend3.6.4 Quy trình giải mã tương đươngNhậ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 raInvMixColumns(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 quytrì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. Dotrong chu kỳ mã hóa cuối cùng không thực hiện thao tác MixColumns nên không 67Chương 3cần thực hiện thao tác InvMixColumns đối với mã khóa của chu kỳ giải mã đầutiê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épbiế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) AddRoundKey(state, dw) out = stateendTrong quy trình trên, bảng mã khóa mở rộng dw được xây dựng từ bảng mã khóaw bằng cách áp dụng phép biến đổi InvMixColumns lên từng từ (4 byte) trong w,ngoại trừ Nb từ đầu tiên và cuối cùng của w.68 Phương pháp mã hóa Rijndaelfor i = 0 to (Nr + 1) * Nb – 1 dw[i] = w[i]end forfor rnd = 1 to Nr – 1 InvMixColumns(dw + rnd * Nb)end for3.7 Các vấn đề cài đặt thuật toánGọi a là trạng thái khi bắt đầu chu kỳ mã hóa. Gọi b, c, d, e lần lượt là trạng tháikết quả đầu ra sau khi thực hiện các phép biến đổi SubBytes, ShiftRows,MixColumns và AddRoundKey trong chu kỳ đang xét. Quy ước: trong trạng tháis ( s = a, b, c, d , e ), cột thứ j được kí hiệu sj, phần tử tại dòng i cột j kí hiệu là si, j. ⎡b0, j ⎤ ⎡ S [a 0, j ]⎤ ⎢ b ⎥ ⎢ S[a ] ⎥ ⎢ 1, j ⎥ = ⎢ 1, j ⎥Sau biến đổi SubBytes: (3.31) ⎢b2, j ⎥ ⎢ S [a 2, j ]⎥ ⎢ ⎥⎢ ⎥ ⎢b3, j ⎥ ⎢ S [a 3, j ]⎥ ⎣ ⎦⎣ ⎦ ⎡c 0, j ⎤ ⎡ ⎤ b0, j ⎢c ⎥ ⎢ b ⎥ ⎢ 1, j ⎥ = ⎢ 1,( j + shift (1, Nb )) mod Nb ⎥Sau biến đổi ShiftRows: (3.32) ⎢ c 2 , j ⎥ ⎢ b 2 ,( j + shift (2 , Nb )) mod Nb ⎥ ⎢ ⎥⎢ ⎥ ⎢ c 3, j ⎥ ⎢ b3 ,( j + shift (3, Nb )) mod Nb ⎥ ⎣ ⎦⎣ ⎦ ⎡d 0, j ⎤ ⎡02 03 01 01⎤ ⎡c0, j ⎤ ⎢d ⎥ ⎢ ⎢ ⎥ 02 03 01⎥ ⎢ c1, j ⎥ ⎢ 1, j ⎥ = ⎢ 01 ⎥Sau biến đổi MixColumns: (3.33) ⎢d 2, j ⎥ ⎢ 01 01 02 03⎥ ⎢c 2, j ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ d 3, j ⎥ ⎣03 01 01 02⎦ ⎢c3, j ⎥ ...

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