Tải bản đầy đủ - 0 (trang)
2 Các khái niệm toán học của AES

2 Các khái niệm toán học của AES

Tải bản đầy đủ - 0trang

Chương 3: Thuật tốn mã hóa AES

>> bitxor(87,131)

ans =

212

3.2.2



Phép nhân



Trong cách biểu diễn một đa thức, phép nhân trong trường GF(2 8) (được ký

hiệu  ) tương ứng với phép nhân modulo một biểu thức tối giản bật 8. Một biểu

thức tối giản nếu nó chỉ chia được cho 1 và chính nó. Với thuật tốn AES, biểu thức

tối giản này là:

m(x) = x8 + x4 + x3 + x + 1

hay có thể được xem là {01}{1b} trong mã hexa.

Ví dụ như, {57}  {83} = {c1}, bởi vì

(x6 + x4 + x2 + x + 1 ) (x7 + x + 1) = x13 + x11 + x9 + x8 + x7 +

x7 + x 5 + x 3 + x 2 + x +

x6 + x 4 + x 2 + x + 1

= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1



(x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1) modulo (x8 + x4 + x3 + x + 1 )

= x7 + x 6 + 1

Việc thực hiện modulo cho đa thức m(x) bậc 8 để đảm bảo rằng kết quả đưa ra

sẽ là một đa thức có bật nhỏ hơn 8, như vậy ta có thể coi như đó là một byte. Khơng

giống như phép cộng, ở đây khơng có các tính tốn đơn giản trên các byte mà phải

thực hiện như phép nhân ở trên.

Phép nhân được định nghĩa là một sự kết hợp, và phần tử {01} gọi là phép

nhân đồng nhất. Cho bất kỳ đa thức nhị phân b(x) ≠0 có bậc nhỏ hơn 8, đảo của

b(x) ký hiệu là b-1(x) có thể tìm được dựa vào thuật toán Euclidean mở rộng được sử

dụng để tính các biểu thức a(x) và c(x) như sau:

b(x)a(x) + m(x)c(x) = 1

Ở đây, a(x)  b(x)mod m(x) = 1, có nghĩa là

b-1(x) = a(x)mod m(x)

Ngồi ra, với bất kỳ a(x), b(x) và c(x) ta có thể viết được như sau

a(x)  (b(x) + c(x)) = a(x)  b(x) + a(x)  c(x)



Chương 3: Thuật tốn mã hóa AES

Dẫn đến có thể thiết lập các giá trị của 256 byte , với việc thực hiện phép toán XOR

sử dụng như trong phép tốn cộng và nhân đã được trình bày phần trên, theo cấu

trúc của miền hữu hạn GF(28).



Hình 3.1. Mô tả phép nhân và chia hai số nhị phân

Úng dụng trong Matlab: Hàm poly_mult(a, b, mod_pol)

>>function ab = poly_mult(a, b, mod_pol)

>>



ab = 0;



>>



for i_bit = 1 : 8



>>



if (bitget(a, i_bit))



>>



b_shift = bitshift (b, i_bit - 1);



>>



ab = bitxor(ab, b_shift);



>>



end



>>



end



>>



for i_bit = 16 : -1 : 9



>>



if bitget(ab, i_bit)



>>



mod_pol_shift = bitshift(mod_pol, i_bit-9);



>>



ab = bitxor(ab, mod_pol_shift);



>>



end



>>end

3.2.3

hạn GF(28)



Đa thức với các hệ số trong trường hữu



Có 4 số hạng trong đa thức được định nghĩa, các hằng số trong trường hữu

hạn:



a(x) = a3x3 + a2x2 + a1x + a0



Chương 3: Thuật toán mã hóa AES

như là một Từ (Word) có dạng [a0,a1,a2,a3]. Chú ý rằng các biểu thức trong phần này

thì khác với các biểu thức được dùng trong việc định nghĩa các phần tử thuộc miền

giới hạn, mặc dù cả hai kiểu đa thức đều sử dụng cùng với biến x không xác định.

Các hệ số trong phần này là các phần tử trong miền hữu hạn, ví dụ như byte, thay

thế của các bit. Ngoài ra việc nhân 4 số hạng của đa thức sử dụng một đa thức biến

đổi khác, được định nghĩa bên dưới. Sự phân biệt luôn phải được rõ ràng trong mỗi

cách dùng.

Để minh họa cho phép cộng và nhân, giả sử có một đa thức

b(x) = b3x3 + b2x2 + b1x + b0

Phép cộng được thực hiện bằng cách thêm các hệ số trong miền hữu hạn tương

ứng với bật của x. Phép cộng này tương ứng với một phép toán XOR giữa các byte

tương ứng trong các Từ.

Như vậy dựa vào hai phương trình trên ta có thể thực hiện phép tốn cộng:

a(x) + b(x) = (a3  b3)x3 + (a2  b2)x2 + (a1  b1)x + (a0  b0)

và phép nhân được thực hiện thông qua hai bước:

Bước 1: Hàm c(x) = a(x)  b(x) được khai triển dưới dạng đại số.

Ta sẽ tìm được biểu thức của c(x) là

c(x) = c6x6 + c5x5 + c4x4 + c3x3 + c2x2 + c1x + c0

với

c0 = a0  b0



c4 = (a3  b1)  (a2  b2)  (a1  b3)



c1 = (a1  b0)  (a0  b1)



c5 = (a3  b2)  (a2  b3)



c2 = a2  b0  a1  b1  a0  b2



c6 = a3  b3



c3 = a3  b0  a2  b1  a1  b2  a0  b3

Kết quả, c(x), không xuất hiện một vectơ 4 byte nữa.

Bước 2: Lấy modulo của c(x) với một đa thức bật 4; kết quả có thể làm giảm

bật của đa thức bé hơn 4. Đối với thuật toán AES, bước này sẽ được thực hiện với

đa thức (x4 +1), vì vậy

xi mod(x4 +1) = xi mod 4

Kết quả của modulo a(x) và b(x), ký hiệu bằng a(x)  b(x), và kết quả cũng có

4 số hạng của đa thức d(x), và đa thức này được định nghĩa như sau:

d(x) = d3x3 + d2x2 + d1x + d0



Chương 3: Thuật tốn mã hóa AES

với



d0 = (a0  b0)  ( a3  b1)  (a2  b2)  ( a1  b3)

d1 = (a1  b0)  ( a0  b1)  (a3  b2)  ( a2  b3)

d2 = (a2  b0)  ( a1  b1)  (a0  b2)  ( a3  b3)

d3 = (a3  b0)  ( a2  b1)  (a1  b2)  ( a0  b3)

Khi a(x) là biểu thức cố định, phép tính được thực hiện thơng qua việc nhân



các ma trận có dạng như sau:

 d 0   a0 a3 a2 a1  b0 

 d   a a a a  b 

 1   1 0 3 2   1 

 d 2   a2 a1 a0 a3  b2 

 

  

 d 3   a3 a2 a1 a0  b3 



(*)



Bởi vì (x4 + 1) không là một đa thức tối giản trong miền GF(2 8), phép nhân

được thực hiện bởi một đa thức cố định bật 4 thì khơng nhất thiết nghịch đảo lại.

Tuy nhiên thuật toán AES chỉ ra một đa thức cố định bậc 3 và đã thực hiện phép

nghịch đảo

a(x) = {03}x3 +{01}x2 +{01}x +{02}

a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e}

Một biểu thức tương tự sử dụng trong thuật tốn AES có a 0=a1=a2={00} và

a3={01}, một đa thức bật 3. Kiểm tra phương trình (*) ở trên sẽ chỉ ra dạng của Từ

đầu ra bằng cách quay các byte trong từ đầu vào. Có nghĩa là [b 0,b1,b2,b3] sẽ được

dịch thành [b1,b2,b3,b0].



Chương 3: Thuật tốn mã hóa AES



3.3



Q trình mã hóa bằng thuật tốn AES

Mã hóa là phương pháp sử dụng để bảo vệ tính bí mật của dữ liệu trong việc



truyền và nhận. Mã hóa được thực hiện cho một chuỗi hay một khối dữ liệu cần

được bảo vệ, được gọi là plaintext (bản gốc), và được thực hiện dựa trên một chuỗi

hay một khối khác gọi là encryption key (khóa mã), để thực hiện các thao tác toán

học và tạo ra kết quả được gọi là ciphertext (bản mã). Bản mã hóa rất khó hiểu và

được gởi đi trong mạng. Người nhận thực hiện các phương án giải mã (decryption)

để nhận được bản gốc từ bản mã bằng các khóa khác nhau. Khi việc mã hóa và giải

mã sử dụng cùng một khóa thì việc xử lý đó được gọi là mã hóa với khóa đối xứng.

Khóa này thơng thường xuất phát từ sự bí mật giữa nơi thu và nơi nhận, để mã hóa

được tốt thì ít nhất khóa phải có độ dài từ 64 bit trở lên. Khi việc mã hóa và giải mã

sử dụng 2 khóa khác nhau thì việc xử lý đó gọi là mã hóa với khóa khơng đối xứng.

Việc sử dụng khóa mã hóa đối xứng hay khơng đối xứng được sử dụng trong những

hệ thống không dây băng rộng. Trong phần này ta đi xét việc mã hóa với khóa đối

xứng được gọi là AES (Advanced Encryption Standard).

3.3.1



Thuật tốn mã hóa của AES



Thuật tốn AES hoạt động trên một khối dữ liệu có độ dài 128 bit, được xếp

vào trong một ma trận có kích thước 4 x 4 gọi là một state. Kích cỡ của khóa mã có

chiều dài 128,192, hay 256 bit, đặc biệt WiMAX sử dụng khóa 128 bit. Sơ đồ thuật

tốn và chương trình chính của thuật tốn AES:



Chương 3: Thuật tốn mã hóa AES



Q trình mã hóa AES

Cipher (input, output, roundkey)

begin

state = input

round = 0

AddRoundKey (state, roundkey[round])

for round = 1 to 9 in steps of 1

SubBytes(state)

ShiftRows(state)

MixColumns(state)

AddRoundKey(state,roundkey[round])

end for



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

2 Các khái niệm toán học của AES

Tải bản đầy đủ ngay(0 tr)

×