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)
• 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
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ó :
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
.