Bài thuyết trình:
Quá trình mở rộng khóa của AES
NHÓM 1
Các thành viên
• Nguyễn Thị Hằng
₋
B14DCAT192
• Phạm Mạnh Tuấn
₋
B14DCAT157
• Nguyễn Thị Huyền Trang
₋
B14DCAT271
• Nguyễn Thị Vân Anh
₋
B14DCAT252
• Bùi Đức Thắng
₋
B14DCAT238
Mục lục
Nhắc lại về AES
Quá trình sinh khóa
Khác biệt trong quá trình sinh khóa
Mục đích các phép toán
Đánh giá thuật toán AES
Nhắc lại về AES
Giới thiệu
• AES (viết tắt của từ tiếng anh: Advanced Encryption Standard, hay Tiêu
chuẩn mã hóa nâng cao) là một thuật toán mã hóa khối được chính
phủ Hoa Kỳ áp dụng làm tiêu chuẩn mã hóa.
• Thuật toán được xây dựng dựa trên Rijndael Cipher phát triển bởi 2
nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen.
• AES làm việc với các khối dữ liệu 16 byte và độ dài khóa 16/24/32
byte. Các khóa mở rộng sử dụng trong chu trình được tạo ra bởi thủ
AES và Rijndael
• Thuật toán mã hóa Rijdael có thể làm việc với dữ liệu khối đầu vào có
độ dài bất kỳ là bội số của 32 bit nằm trong khoảng 128 tới 256 bit
(128, 160, 192, 224 và 256)
Tạo ra 25 tổ hợp biến thể.
• Trong 25 tổ hợp trên, có 3 tổ hợp sử dụng khối dữ liệu 128 bit ứng với
khóa 128 bit, 192 bit và 256 bit được chuẩn hóa trở thành tiêu chuẩn
mã hóa nâng cao AES
AES là một biến thể của Rijndael.
Cơ chế toán học
• Khác với thuật toán mã hóa thông dụng trước đó là DES được thực
hiện dựa trên mã hóa khối Feistel, cơ chế mã hóa của AES là mạng
thay thế hoán vị (SPN - Substitution-Permutation Network).
• Việc kết hợp các S-box và P-box tạo ra hai tính chất quan trọng của mã
hóa là:
• tính khuếch tán (có được dựa vào sử dụng P-box kết hợp S-box).
• tính gây lẫn (có được dựa vào sử dụng S-box).
Cơ sở toán học
• Phép cộng trên trường GF[28]:
Cho:
a(x) = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + 1
b(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + 1
c(x) = a(x) + b(x)
= [(a7+b7)mod(2)]x7 + [(a6+b6)mod(2)]x6 + … + [(a1+b1)mod(2)]x + 1
Cơ sở toán học
• Phép cộng trên trường GF[28]:
= 3D(H)
Ví dụ: tính 73 + 4E
(H)
(H)
Dạng nhị phân
Dạng đa thức
Dạng hex
0111 0011
0100 1110
0011 1101
x6 + x5 + x4 +
+x+1
x6 +
+ x3 + x2 + x
x5 + x4 + x3 + x2 + + 1
73
4E
3D
Cơ sở toán học
• Phép nhân trên trường GF[28]:
Cho:
a(x) = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + 1
b(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + 1
c(x) = a(x).b(x) mod(m(x)),
với m(x) = x8 + x4 + x3 + x + 1
Cơ sở toán học
• Phép cộng trên trường GF[28]:
Ví dụ: tính 53(H) CA(H)
= 01(H)
(x6 + x4 + x + 1)(x7 + x6 + x3 + x) =
x13 + x12 + x11 + x10 + x9 + x8 + x6 + x5 + x4 + x3 + x2 + x
x8 + x4 + x3 + x + 1
…
1
(0101 0011)(1101 1010) = 0000 0001
x5 + x4 + x3 + x2 + 1
Biểu diễn dữ liệu
• Trong AES, dữ liệu khối đầu vào luôn được biểu diễn dưới dạng một
ma trận 4xNb được gọi là ma trận trạng thái (state) với Nb = 4.
• Số vòng lặp (được ký hiệu là Nr) phụ thuộc vào kích thước khóa:
Khóa (bit)
128
192
256
Nr (vòng)
10
12
14
Sơ lược quá trình mã hóa/giải mã
• Thuật toán giải
hóa AES
AES khá
cũngphức
có độ
mã hóa
tạp, được
mô tả tự:
khái quát gồm 3
phức
tạp tương
• Vòng
khởi
tạo chỉ gồm phép
bước
như
sau:
AddRoundKey.
Vòng khởi tạo chỉ gồm phép
Vòng
lặp gồm .4 phép biển đổi lần lượt:
AddRoundKey
InvShiftRows, InvSubByte,
• Vòng lặp gồm 4 phép biển đổi lần lượt:
AddRoundKey,
InvMixColumns
.
SubBytes, ShiftRows,
MixColumns,
• Vòng
cuối gồm. các phép biến đổi
AddRoundKey
giống vòng lặp và không có phép
• Vòng cuối gồm các phép biến đổi
MixColumns.
giống vòng lặp và không có phép
MixColumns.
•
•
Sơ lược quá trình sinh khóa
• Quá trình sinh khóa (KeyExpandsions) là thao tác tạo lược đồ khóa hay
mở rộng khóa, tạo ra Nr+1 khóa vòng từ khóa chính K, mỗi khóa vòng
gồm Nb từ 32 bit (Nb = 4).
• Các phép biến đổi để tạo khóa vòng có những điểm khác nhau đối với
các giá trị khác nhau của kích thước khóa K.
• Trong quá trình sinh khóa, các khóa vòng hoạt động trên một mảng
ma trận có kích thước 4xNk với Nk tương ứng độ dài khóa.
Sơ lược quá trình sinh khóa
• Với khóa
k00
k10
k20
k30
w0
128
256
192
k01
k11
k21
k31
w1
bit:
k02
k12
k22
k32
w2
Nk = 46
8
k03
k13
k23
k33
w3
k04
k14
k24
k34
w4
k05
k15
k25
k35
w5
k06
k16
k26
k36
w6
k07
k17
k27
k37
w7
Quá trình sinh khóa
Khởi tạo
• Ban đầu, khóa chính được chuyển thành dạng hex và được đưa vào ma
trận 4 x Nk.
• Ví dụ với khóa 128 bit: (Nb = 4, Nk = 4, Nr = 10)
M A
T M A
H O
C
N A N G
C
A O
!
4d 41 54 4d 41 48 4f 43 4e 41 43 47 43 41 4f 21
Đưa vào mảng
4d
41
54
4d
41
48
4d
41
4f
41
48
43
54
4f
4d 41 54 4d 41 48 4f 43
4e
41
43
47
43
41
4f
21
4e
43
41
41
43
4f
4e 41 43 47 43 41 4f 21
Các vòng lặp
W0 W 1 W2 W3
W4 W5 W6 W7
4d 41 4e 43
?
?
?
41 48 41 41
?
?
?
54 4f 43 4f
?
?
?
4d 43 47 21
?
?
?
?
4d
?
41
?
54
?
4d
W 8 W9
?41 ? 4e
43
? ?
48 41 41
? ?
4f 43 4f
? ?
43 47 21
…
W4
W4
2
?
3
?
?
?
?
?
?
?
Các vòng lặp
4d 41 4e 43
?
?
?
?
41 48 41 41
?
?
?
?
54 4f 43 4f
?
?
?
?
4d 43 47 21
?
?
?
?
•Trong
mỗi vòng lặp, 4 từ được sinh ra theo qui tắc:
• Từ đầu tiên:
với g:
• Ba từ còn lại:
Vòng lặp
Wi-1
Wi
4d 41 4e 43
?
?
?
?
41 48 41 41
?
?
?
?
54 4f 43 4f
?
?
?
?
4d 43 47 21
?
?
?
?
43
41
41
4f
21
4f
43
21
RotWord
Vòng lặp
Wi-1
Wi
4d 41 4e 43
?
?
?
?
41 48 41 41
?
?
?
?
54 4f 43 4f
?
?
?
?
4d 43 47 21
?
?
?
?
fd
83
1a
84
83
41
84
4f
21
fd
43
1a
SubWord
Bảng S-box
Vòng lặp
Wi-4
Wi-1
Wi
4d 41 4e 43
?
?
?
?
41 48 41 41
?
?
?
?
54 4f 43 4f
?
?
?
?
4d 43 47 21
?
?
?
?
4d
83
01
R
cf
41
84
00
c
c5
54
fd
00
o
a9
4d
1a
00
n
57
Bảng Rcon
Vòng lặp
Wi-4
Wi-1
Wi
4d 41 4e 43
cf
? 8d
?
?
?
41 48 41 41
c5
? 8e
?
?
?
54 4f 43 4f
a9
? e6
?
?
?
4d 43 47 21
57
? 14
?
?
?
41
cf
8d
cf
48
c5
8e
c5
4f
a9
e6
a9
43
57
14
57
Vòng lặp
Wi-4
Wi-1 Wi
4d 41 4e 43
cf 8d c0
?
?
41 48 41 41
c5 8e cc
?
?
54 4f 43 4f
a9 e6 a8
?
?
4d 43 47 21
57 14 53
?
?
4e
8d
c0
41
8e
cc
43
e6
a8
47
14
53