THUẬT TOÁN MÃ HÓA AES

Một phần của tài liệu Mã hóa bảo mật trong Wimax (Trang 100 - 109)

Với thuật toán AES, độ dài khối đầu vào, khối đầu ra và bảng trạng thái là 128 bit. Điều này được thể hiện bởi giá trị Nb=4, tương ứng với các từ mã 32 bit (số cột) trong bảng trạng thái. Độ dài của khóa K là 128, 192 và 256 bit. Độ dài khóa được biểu diễn bởi Nk = 4, 6 hay 8, tương ứng với các từ mã 32 bit (số cột) trong khóa. Số vòng lặp được dùng trong quá trình thực hiện thuật toán phụ thuộc vào kích thước của khóa. Số vòng lặp được kí hiệu là Nr, trong đó Nr=10 khi Nk=4, Nr=12 khi Nk=6 và Nr=14 khi Nk=8.

Bảng 3.9 : Khóa - khối bit - số vòng

.

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

Cho cả hai quá trình mã hóa và giải mã, thuật toán AES sử dụng một hàm vòng lặp bao gồm 4 phép chuyển đổi định hướng byte :

• Thay thế byte, sử dụng một bảng thay thế (S-box).

• Dịch chuyển các hàng trong bảng trạng thái bằng các độ dịch khác nhau.

• Kết hợp dữ liệu trong các cột của bảng trạng thái.

• Cộng khóa vòng lặp vào bảng trạng thái.

Hình 3.13: Sơ đồ thuật toán mã hóa và giải mã AES-128 [7]

Mã hóa: Khởi đầu quá trình mã hóa, đầu vào được sao chép vào bảng trạng thái. Sau khi khóa vòng lặp khởi đầu được cộng vào, bảng trạng thái được chuyển đổi bằng cách thực hiện hàm vòng lặp 10,12 hay 14 lần (tùy thuộc vào độ dài khóa), với vòng lặp cuối cùng khác chút ít so với Nr-1 vòng trước đó. Bảng trạng thái cuối cùng sau đó được sao chép đến đầu ra.

Hàm lặp được tham số hóa bằng cách sử dụng hệ thống khóa, bao gồm một mảng một chiều của các từ mã 4 byte được suy ra từ phương pháp mở rộng khóa. 4 phép chuyển đổi được ký hiệu SubBytes, ShiftRows, MixColumns và

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

AddRoundKey. Vòng lặp cuối cùng sẽ không bao gồm hàm chuyển đổi MixColumns

Chuyển đổi SubBytes: Phép chuyển đổi SubBytes là một phép thay thế byte không tuyến tính, hoạt động một cách độc lập trên mỗi byte của bảng trạng thái bằng cách sử dụng một bảng thay thế S-box.

Hình 3.14: Áp dụng S-box cho mỗi byte của bảng trạng thái

S-box được sử dụng trong phép chuyển đổi SubBytes dưới dạng hexa:

Bảng 3.10: Bảng S-box

Hình 3.15 : Dịch vòng trong 3 hàng cuối của bảng trạng thái

.

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

Phép chuyển đổi ShiftRows: Trong phép chuyển đổi ShiftRows, các byte trong 3 hàng cuối của bảng trạng thái được dịch quay vòng theo số byte. Hàng đầu tiên, r=0, không dịch chuyển. Chuyển đổi ShiftRows được thực hiện theo biểu thức sau:

Trong đó giá trị dịch shift(r,Nb) phụ thuộc vào số hàng, r. Ví dụ shift(1,4)=1; shift(2,4)=2; shift(3,4)=3. Mô tả trong hình 3.18

Phép chuyển đổi MixColumns: Phép chuyển đổi MixColumns thực hiện

trên từng cột của bảng trạng thái. Các cột được xem như là các đa thức

trên trường GF(28) và nhân modulo x4+1 với đa thức cố định a(x):

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

Ta được : s′(x) = a(x)⊗s(x) và

Từ kết quả của phép nhân, 4 byte trong 1 cột được thay thế bởi :

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c) (adsbygoogle = window.adsbygoogle || []).push({});

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

Hình 3.16: Hoạt động Mixcolumn trên từng cột của bảng trạng thái

Phép chuyển đổi AddRoundKey: Một khóa vòng lặp được cộng vào bảng

trạng thái bằng phép cộng XOR. Mỗi khóa vòng bao gồm có Nb từ mã từ hệ thống khóa. Nb từ mã này được cộng vào các cột của bảng trạng thái:

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

trong đó [wi] là từ mã hệ thống khóa và vòng lặp round là một giá trị

trong dải 0≤round ≤Nr. Trong mã hóa, việc cộng khóa vòng khởi tạo được thực hiện khi round=0 và việc áp dụng phép chuyển đổi AddRoundKey với Nr round còn lại được thực hiện khi 1≤round≤Nr.

Hình 3.17: XOR mỗi cột trong bảng trạng thái với một từ trong hệ thống khóa

Hình 3.18: Vòng lặp mã hóa AES [7]

.

Mở rộng khóa: Thuật toán AES lấy khóa mã hóa K và thực hiện quá trình mở rộng khóa để tạo ra hệ thống khóa. Việc mở rộng khóa tạo ra tổng cộng Nb(Nr+1) từ mã: thuật toán yêu cầu một bộ Nb từ mã khởi tạo , và mỗi Nr vòng

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

yêu cầu Nb từ mã của dữ liệu khóa, do vậy tổng cộng là Nb(Nr+1). Hệ thống

khóa thu được bao gồm một mảng tuyến tính các từ mã 4 byte, kí hiệu [wi], với i

năm trong khoảng 0≤i≤Nb(Nr+1). Thuật toán mở rộng khóa thực hiện với 3 hàm sau:

• Hàm RotWord: lấy một từ 4 byte làm đầu vào [a0,a1,a2,a3] và tiến

hành việc hoán vị vòng như sau: [a1,a2,a3,a0] .

• Hàm SubWord: lấy một từ 4 byte làm đầu vào và sử dụng bảng S-

box cho từng byte trong số bốn 4 byte này để tạo ra từ đầu ra.

• Hàm Rcon[i]: biểu thị ma trận từ hằng số lặp và chứa giá trị được

cho như sau: [xi-1,{00},{00},{00}] trong đó x = {02}

Thuật toán mở rộng khóa như sau :

i=0

while (i<Nk)

w[i] = word (key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) i = i+1 end while i = Nk while (i<Nb*(Nr+1)) temp = w[i-1] if (i mod Nk = 0)

temp = SubWord (RotWord(temp)) xor Rcon[i/Nk] else if (Nk>6 and i mod Nk = 4)

temp = SubWord(temp) end if

w[i] = w[i-Nk] xor temp i=i+1 (adsbygoogle = window.adsbygoogle || []).push({});

end while

Ví dụ: mở rộng khóa 128 bit

Giả sử khóa là : 2b7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c

Với Nk=4 ta có : w0 = 2b7e1516 ; w1 = 28aed2a6 ; w2 = abf71588 ; w3 =

09cf4f3c

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

Bảng 3.11: Mở rộng khóa 128bit

Giải mã: Quá trình giải mã được thực hiện ngược lại với quá trình mã hóa. Các phép chuyển đổi được sử dụng trong quá trình giải mã là InvShiftRows, InvSubBytes, InvMixColumns và AddRoundKey. Ban đầu khóa vòng khởi tạo cũng được cộng XOR với đầu vào. Hình 3.24 là sơ đồ giải mã AES

• Chuyển đổi InvShiftRows : đây là hàm ngược của hàm ShiftRows. Các

byte trong 3 hàng cuối của bảng trạng thái được dịch chuyển vòng. Hàng đầu tiên r=0 không dịch chuyển. Theo biểu thức sau :

Hình 3.19 : InvShiftRows

.

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

• Chuyển đổi InvSubBytes : đây là phép chuyển đổi ngược với phép chuyển

đổi thay thế, mà trong đó bảng S-box ngược được áp dụng vào đối với mỗi byte trong bảng trạng thái.

Bảng 3.12 : Bảng S-box đảo

• Phép chuyển đổi InvMixColumns: là phép đảo của MixColumns. Phép

này thực hiện trên từng cột của bảng trạng thái. Các cột được xem như là

các da thức trên trường GF(28) và nhân modulo x4+1 với một đa thức cố

định ( đa thức a-1(x) đã nêu ở trên) : s′(x) = a-1(x)⊗s(x). Ta thu được :

Khai triển ra ta được:

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

• s0,c ) ⊕ • s1,c) ⊕ • s2,c) ⊕ • s3,c)

Hình 3.20: Sơ đồ giải mã AES-128

.

Ví dụ về mã hóa AES-128: Giả sử ta có : (adsbygoogle = window.adsbygoogle || []).push({});

Input = 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34

Cipher Key = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c

Như vậy Nb=4, Nk=4 và Nr=10. Ta có tiến trình mã hóa như sau:

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

Bảng 3.13: Mã hóa AES-128

.

Một phần của tài liệu Mã hóa bảo mật trong Wimax (Trang 100 - 109)