Tải bản đầy đủ (.docx) (16 trang)

Quy trình mở rộng khóa AES

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (427.32 KB, 16 trang )

Chương 1: HỆ MẬT MÃ ĐỐI XỨNG TIÊN TIẾN
Chương này cung cấp các kiến thức mở rộng và nâng cao liên quan đến hệ mật
mã hóa đối xứng bao gồm: vấn đề mở rộng khóa cho thuật toán mã hóa AES; đánh giá
mức độ an toàn của hệ mật; một số kỹ thuật tấn công lên hệ mật. Bên cạnh đó, chương 1
còn trình bày về nguyên tắc làm việc của một số giải thuật mã hóa trong hệ mật mã đối
xứng tiên tiến điển hình đang được ứng dụng nhiều hiện nay như: IDEA; Twofish; RC6.
1

VẤN ĐỀ MỞ RỘNG KHÓA CHO GIẢI THUẬT AES
1
Ưu điểm và nhược điểm của AES
AES (Advanced Encryption Standard) là chuẩn mã hóa tiên tiến và được ứng dụng
rộng rãi hiện nay. Về cơ bản AES được xây dựng trên cơ sở của thuật toán Rijndael (hai
nhà mật mã học người Bỉ là Joan Deamen và Vincent Rijmen) và mạng thay thế hoán vị.
Tuy nhiên, ngày nay do thói quen lên người dùng thường gọi AES là thuật toán hay giải
thuật. Trong bài giảng, sẽ thống nhất gọi chuẩn mã hóa tiên tiến AES là giải thuật mã hóa
AES.
AES ra đời nhằm giải quyết các nhược điểm mà giải thuật mã hóa DES gặp phải.
Tuy nhiên, khi triển khai sử dụng AES trong thực tế thì giải thuật này vẫn gặp phải một
số vấn đề nhất định. Để hiểu rõ hơn về những vấn đề mà AES còn gặp phải, bài giảng sẽ
trình bày ưu điểm và nhược điểm của giải thuật mã hóa này.
a
-

Ưu điểm của giải thuật mã hóa AES:
Mức độ an toàn: như đã trình bày ở trên, AES được chọn để thay thế cho giải thuật
mã hóa DES chính vì vậy AES mang trong mình các cơ chế mã hóa rất an toàn.
Tính an toàn của AES được thể hiện [6, 7]:
o AES mạnh và nhanh hơn Triple DES: AES được thiết kế với cơ sở lý thuyết
rõ ràng, mạch lạc, yêu cầu thời gian sống khoảng 20-30 năm (cộng thêm
thời gian lưu trữ).




Algorithm

MiB/Second

Cycles Per
Byte

Microsecond to
Setup Key and
IV

Cycles to Setup Key and
IV

AES/CBC(192-bit
753
4.0
0.216
679
key)
DES-XEX3/CTR
59
51.1
2.465
7759
(192-bit key)
Điểm benchmarks của thuật toán AES được mã hóa dưới chế độ CBC với độ dài khóa là 192 và DES độ
dài khóa 192. Hai thuật toán được chạy trên hệ điều hành Fedora reease 25 (x86_64) sử dụng CPU thế hệ

thứ 6 Skylake, 3.14713e+09 Hz[1]

o Chống lại được các kỹ thuật tấn công: AES sử dụng bảng tra và phép thế có

tính chất phi tuyến mạnh dẫn đến mức độ phân tán thông tin phức tạp.
Chính kỹ thuật này đã làm cho giải thuật mã hóa AES an toàn trước kỹ
thuật tấn công vi sai và tuyến tính.
o AES có mô tả toán học, cấu trúc đơn giản, tính mềm dẻo, tính tương thích

với phần cứng và phần mềm. AES thể hiện sự mền dẻo ở chỗ [6]: Hỗ trợ
việc xử lý khoá và các khối có kích thước nhỏ hơn kích thước tối thiểu; Có
khả năng thực hiện một cách an toàn và hiệu quả trong nhiều môi trường
khác nhau; Có thể thực hiện như một mã hoá dòng, hàm băm và cung cấp
các dịch vụ mã hoá khác; dễ dàng mở rộng khóa để phù hợp với nhu cầu
thực tế.
o AES được cung cấp trong nhiều thư viện: C/ASM, C++, C#/.NET, Java,
Python, Javascript, LabVIEW, JavaScript
o Tốc độ mã hóa và giải mã nhanh.

Algorithm
Rijndael
Twofish
RC6

Encrypt by Pentium Pro
C
(clocks)
850
8600
1700


Bảng so sánh tốc độ mã hóa của Rijndael, Twofish, RC6[2]

-

Khả năng ứng dụng:
o Hiện nay, AES được sử dụng phổ biến trên toàn thế giới để bảo vệ dữ liệu ở
các tổ chức ngân hàng, tài chính, chính phủ, thương mại điện tử, chữ ký
điện tử;…




Thiết kế và độ dài khóa của thuật toán AES (128, 192 và 256 bít) là đủ an
toàn để bảo vệ các thông tin được xếp vào loại TỐI MẬT (secret). Các thông
tin TUYỆT MẬT (top secret) sẽ phải dùng khóa 192 hoặc 256 bít [3]

o Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, và

chỉ yêu cầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã
o
o
o
o
o
o
o

hóa những thiết bị cầm tay nhỏ như ổ USB flash, ổ đĩa CD;…
Sử dụng trong đóng gói bảo mật dữ liệu;

Sử dụng trong các giao thức mạng như VPN-IPsec, Wifi.
Lưu trữ và nén: RAR, WinZip, UltraISO. [3]
Mã hóa File: Gpg4win, Ncrypt. [3]
Mã hóa hệ thống File: NTFS. [3]
Mã hóa đĩa, phân vùng: BitLocker, CipherShed, DiskCryptor, FileVault. [3]
An ninh truyền thông mạng nội bộ: IEEE 802.11i( là bản mở rộng của
802.11 dùng trong WPA2), ITU-T G.hn.(tạo đường truyền tốc độ cao –
1Gb/s trong mạng LAN sử dụng đường truyền trong nhà – dây điện, dây

điện thoại, sử dụng AES-128 để mã hóa) [3]
o Tích hợp vào phần cứng: [3]
 Tháng 3, 2008 AES được tích hợp vào như là một tiện ích mở rộng
trong kiến trúc x86 (x86 instruction set architecture) cho bộ vi xử lý
của 2 hãng là Intel và AMD.
 AES được tích hợp vào bộ vi xử lý lõi SPARC S3 (do Sun
Microsystems phát triển) và được sử dụng trong các hệ thống
SPARC T4 và SPARC T5.

b

Nhược điểm của giải thuật mã hóa AES:
o Cũng giống như giải thuật mã hóa DES, giải thuật mã hóa AES ngay từ lúc ra
đời đã có nhiều ý kiến trái chiều về mức độ an toàn của giải thuật.

Độ an toàn
tổng thể
Độ khó khi
thực hiện
Hiệu suất
phần mềm


Rijndael
2

Serpent
3

Twofish
3

MARS
3

RC6
2

3

3

2

1

1

3

1


1

2

2


Hiệu suất thẻ
thông minh
Hiệu suất
phần cứng
Những tính
năng được
thiết kế
Tổng

3

3

2

1

1

3

3


2

1

2

2

1

3

2

1

16

14

13

10

9

Chấm điểm các thuật toán dự thi tuyển chọn AES
o AES có thể chống lại được một số kỹ thuật tấn công như vét cạn (brute-force),

vi sai, tuyến tính nhưng lại không an toàn với kỹ thuật tấn công kên bên hay

còn gọi là kênh kề (side channel attacks).
o Năm 2006 các nhà mật mã đã tấn công được 7 vòng với khóa 128 bit; 8
vòng với khóa 192 bit và 9 vòng với khóa 256 bit[4]
o 03-08-2009, 5 nhà mật mã học là Alex Biryukov, Orr Dunkelman,
Nathan Keller, Dmitry Khovratovich, and Adi Shamir

đã tìm ra cách tấn

công mới nhằm vào AES-256 bằng cách sử dụng 2 khóa liên quan đến
nhau và sử dụng thuật tóan brute-force, sau khi chạy 239 phép thử thì
tấn công được đến vòng thứ 9, 245 phép thử tấn công được đến vòng
thứ 10, 270 phép thử thì tấn công được đến vòng thứ 11. Nhưng vẫn

o

chưa tấn công được đến vòng thứ 14 của AES-256
11-2009, vòng thứ 8 của AES-128 đã bị tấn công bới cách tấn công
known-key distinguishing attack ( là mô hình tấn công chống lại mã
hóa khóa đối xứng, mà người tấn công biết trước khóa và từ khóa để
tìm ra cấu trúc của mã hóa sao cho việc mã hóa từ bản rõ sang bản mã
không phải là ngẫu nhiên )

o Chi phí phát triển chuẩn mã hóa mới: Để xây dựng chuẩn mã hóa mới sẽ tốn

rất nhiều chi phí bao gồm: chi phí bản quyền, chi phí xây dựng, thay thế các
ứng dụng cũ…
Trên đây, bài giảng đã trình bày về nhu cầu mở rộng khóa cho AES. Từ những
phân tích và trình bày ở trên có thể thấy việc lựa chọn mở rộng khóa cho một giải thuật
mã hóa thay vì lựa chọn phương pháp mã hóa thay thế phụ thuộc vào nhiều yếu tố, trong



đó nổi bật lên là 2 yếu tố cơ bản: mức độ an toàn và chi phí thay thế. Tiếp theo, bài giảng
sẽ trình bày phương pháp mở rộng khóa cho AES mà thuật toán Rijindael cung cấp.
Giải pháp mở rộng khóa cho AES
Trong các phần trước, bài giảng đã trình bày về ưu điểm và nhược điểm của giải

2

thuật mã hóa AES cũng như nhu cầu cấp thiết cần phải mở rộng khóa cho giải thuật mã
hóa này. Tiếp theo, bài giảng sẽ mô tả phương pháp mở rộng khóa của AES.
Để hiểu rõ hơn về phương pháp mở rộng khóa của AES, trước tiên hãy xem xét
các vấn đề cơ bản của giải thuật mã hóa AES. Chi tiết mô tả quá trình mã hóa và giải mã
của giải thuật mã hóa AES được trình bày trong tài liệu tham khảo [1÷6]. Trong bài
giảng, chỉ mô tả lại các vấn đề cần thiết phục vụ cho quá trình mở rộng khóa của AES.
Các vấn đề cơ bản của giải thuật mã hóa AES như sau:
a) Đặc trưng cơ bản:
-

Đầu vào và đầu ra là khối dữ liệu 128 bít.
Khóa dùng để mã hóa và giải mã bắt buộc của giải thuật là 128 ,192 hoặc 256 bít
AES được thiết kế dựa trên mạng thay thế hoán vị SPN (substitution-permutation

-

network) .
AES vận hành dựa trên một ma trận 4×4, được gọi là state (trạng thái).
Kích thước khóa quyết định số vòng lặp trong mã hóa và giải mã: 10 vòng lặp với

khóa 128 bít; 12 vòng lặp với khóa 192 bít; 14 vòng lặp với khóa 256 bít.
b) Cơ sở toán học: phép cộng và phép nhân trên trường GF(28)

 Phép cộng trên trường GF(28):
Là phép XOR hay phép cộng theo modulo 2 giữa các bit tương
ứng của 2 byte.
Giả sử:


Ví dụ:
Tính tổng của 73H và 4EH là:



 Phép nhân trên trường GF(28):

Phép nhân được thực hiện trên trường GF(28) bằng cách nhân 2
đa thức rút gọn theo modulo của đa thức bất khả quy .
Giả sử:


Ví dụ:
Tính tích của 53H và CAH là:


c) Sơ lược về quá trình mã hóa/giải mã


Thuật toán mã hóa AES được mô tả khái quát 3 bước sau:
1. Vòng khởi tạo chỉ gồm bước AddRoundKey
2. Vòng lặp gồm 4 phép biến đổi:
• SubBytes
• ShiftRows

• Mix Columns
• Add RoundKey
3. Vòng cuối gồm các phép biến đổi giống vòng lặp nhưng không có Mix
Columns
Tương tự với thuật toán mã hóa, thuật toán giải mã AES cũng gồm 3 bước nhưng
ngược lại so với mã hóa:
1. Vòng khởi tạo chỉ gồm bước AddRoundKey
2. Vòng lặp gồm 4 phép biến đổi:
• InvSubBytes
• InvShiftRows
• InvMixColumns
• AddRoundKey


3. Vòng cuối cùng gồm các phép biến đổi giống vòng lặp nhưng không có

InvMixColumns
d) Quá trình sinh khóa ( Mở rộng khóa – KeyExpandsions)
1. Sơ lược về 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.
• Với khóa 128 bit : Nk = 4
k00
k10
k20

k30
w0

k01
k11
k21
k31
w1


k00
k10
k20
k30
w0

k00
k10
k20
k30
w0

k01
k11
k21
k31
w1

k03
k13

k23
k33
w3

Với khóa 192 bit: Nk = 6
k01
k11
k21
k31
w1



k02
k12
k22
k32
w2

k02
k12
k22
k32
w2

k03
k13
k23
k33
w3


k04
k14
k24
k34
w4

k05
k15
k25
k35
w5

Với khóa 256 bit: Nk = 8
k02
k12
k22
k32
w2

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


Ghi chú: wi: là từ thứ i – mỗi từ có kích cỡ 32bit
kij : có kích thước 4 bit
2. Các bước thực hiện sinh khóa

2.1: 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) => có: Nb x (Nr+1)
= 44 từ

Dạng bản rõ (Nếu độ dài khóa không đủ 128 bit thì chèn thêm các bit 0
sao cho đủ kích cỡ khóa ):
M A
T
M A
H
O
C
N
A
Chuyển đổi từng từ của dạng bản rõ sang dạng hex:

N

G

C

A

O

!

4d

43

47


43

41

4f

21

41

54

4d

41

48

4f

43

4e

41

2.2: Đưa vào mảng
4d
41
54

4d

W0

41
48
41
48

W1

4e
41
43
47

W2

2.3: Các vòng lặp
Tính các từ còn lại: w4 -> w43
Trong mỗi vòng lặp, 4 từ được sinh ra theo quy tắc:
Từ đầu tiên: wi = wi-4 g
Với g =
Ba từ còn lại:
2.3.1: RotWord
Dịch trái 1 bit của từng từ
Ví dụ:
43
41
4f

21

41
4f
21
43

43
41
4f
W3
21


Sau khi RotWord:

2.3.2: SubWord
So sánh sánh từng kij sau khi RotWord với bảng S-box trong đó ki
tương ứng với hàng trong bảng S-box và kj tương ứng với cột trong bảng S-box

41
4f
21
43

Ví dụ:

83
84
fd

1a

Sau khi SubWord:


2.3.3: Rcon
Với từng Round tương ứng ta so với bảng Sbox để lấy giá trị

2.3.4: Tính g

g=
Ví dụ: tính W4
41
4f
21
43

83 =
84
fd
1a

01
00
00
00

cf
c5
a9

57

2.3.5: Tính 3 từ còn lại của 1 vòng lặp
Tính theo công thức:

Ví dụ: Tính w5 của vòng lặp 1
41
48
4f
43

8d
= 8e
e6
14

cf
c5
a9
57


Kết quả thu được sau khi sinh khóa:

e) Cách sinh bảng S-box và Rcon[5]

1. Bảng S-box:


Bảng tra cứu S-box trong AES là một ma trận vuông 16 x 16 phục

vụ cho việc thực hiện các phép thay thế phi tuyến tính được xây
dựng từ thuật toán mã hóa Rijndael.
• Gồm 2 loại:
o Bảng S-box thuận (Forward S-box): dùng trong mã hóa.
o Bảng S-box đảo (Inverse S-box): dùng trong giải mã.
• Tuy vậy, quá trình sinh khóa trong việc mã hóa và giải mã của
thuật toán AES chỉ sử dụng bảng S-box thuận.


Cách xây dựng:
o Khởi tạo: tạo một ma trận vuông 16 x 16 có các hàng và cột
đánh thứ tự từ 0 đến f. Điền giá trị các ô tương ứng hàng và
cột (từ {00} đến {ff}). Như vậy, hàng x cột y sẽ có giá trị là
{xy}.
o Thay thế các giá trị trong bảng bằng giá trị nghịch đảo của
chúng trong trường GF(28). Giá trị nghịch đảo của s là t thỏa
mãn:


hay
Ví dụ: => nghịch đảo của CA là 53 và ngược lại.
o Những giá trị nghịch đảo này được biến đổi thông qua phép
biến đổi affine:

Phép biến đổi này được thực hiện bằng cách:
- Thực hiện phép toán XOR giữa các giá trị này và các giá trị
của chính nó sau khi quay trái 1 bit, 2 bit, 3 bit và 4 bit.
Ví dụ:
Kết quả thu được đem XOR với 63H (0110 00112).
hay

74H
2
 Giá trị ở hàng C cột A là 74.
-



Cuối cùng, ta thu được bảng:

Bảng S-box.




2. Bảng Rcon:

Bảng Rcon thực chất là một loạt các phần tử Rcon[i] được sử dụng
trong các vòng lặp quá trình sinh khóa của thuật toán Rijndael, với:
Rcon[i] = (RC[i], 0x00, 0x00, 0x00)
trong đó RC[i] là hằng số tương ứng mỗi vòng và hoàn toàn độc lập
(không phụ thuộc bất cứ biến nào).
• Các giá trị hằng RC[i] được tính theo công thức (trên trường GF[2 8]):
RC[1] = 0x01
RC[j] = 0x02 x RC[j-1]

Bảng Rcon.
Chú ý rằng bảng Rcon trên chỉ có 10 phần tử, tuy nhiên thực tế bảng
Rcon còn có các phần tử nằm sau tiếp tục được sinh theo quy tắc trên
để phục vụ trong thuật toán Rijndael, ví dụ như Rcon [29] dùng cho khóa
128 bit ứng với đầu vào 256 bit.

f) Khác biệt trong quá trình sinh khóa giữa 3 loại khóa 128 bit, 192 bit và 256 bit
Khóa 128 bit
Khóa 192 bit
Khóa 256 bit
Số
Số từ khóa được tạo Số từ khóa được tạo ra:
Số từ khóa được tạo ra:
vòng
ra:
4 x (Nr +1)= 4 x (12+1) 4 x (Nr + 1)=4x(14 + 1) =
lặp
4 x (Nr + 1) =
= 52 từ
60 từ
sinh
4x(10+1) = 44 từ
khóa Số từ sinh ra sau mỗi
Số từ sinh ra sau mỗi
Số từ sinh ra sau mỗi
con
vòng lặp sinh khóa vòng lặp sinh khóa con: vòng lặp sinh khóa con: 8
con: 4 từ
6 từ
từ
Số vòng lặp:
Số vòng lặp:
Số vòng lặp:
=>sử dụng đến
Rcon[10], không
thừa từ nào.


=>sử dụng đến
Rcon[8], thừa 2 từ w52
và w53.

=>sử dụng đến Rcon[7],
thừa 4 từ w60 đến w63.

Ngoài ra trong khóa 256 bit, với các từ ở vị trí có thứ tự i thỏa mãn i chia 8 dư 4
thì sẽ sử dụng thêm hàm SubWord trước khi tính từ tiếp theo: wi = Subword(wi-8 wi-1)


1.1.3 Mở rộng khóa AES-512 và AES-1024
Mặc dù ngay từ lúc thuật toán Rijandael ra đời thì các tác giả đã đặt ra giới hạn độ dài
của khóa là 256 bit và theo tài liệu công bố về AES - FIPS PUB 197 của Viện tiêu chuẩn quốc
gia Hoa Kỳ (NIST) thì kích cỡ khóa tối đa của AES cũng chỉ là 256 bit.
Nhưng đến ngày nay do sự phát triển nhanh và mạnh mẽ của máy tính cùng với các vòng
khóa của AES lần lượt bị tấn công nên đã có một số tác giả đã cho mở rộng khóa của AES lên
512 bit và 1024 bit
Năm 2014, các tác giả Rishabh Jain , Rahul Jejurkar2 , Shrikrishna Chopade3 ,
Someshwar Vaidya , Mahesh Sanap công bố thuật toán AES với độ dài khóa 512 bit trên Tạp chí
Quốc tế Nghiên cứu Đổi mới trong Máy tính và kỹ thuật truyền thông (International Journal of
Innovative Research in Computer and Communication Engineering). Khác với AES nguyên bản
thì AES-512 có độ dài khối là 512 bit thay vì 128 bit[6]

Bảng so sánh giữa AES 128/256 bits và AES 512 bits
Năm 2015, các tác giả Ramya, Anita Madona công bố bài báo về mở rộng khóa AES lên
1024 bit trên Tạo chí Quốc tế Nghiên cứu Đổi mới trong Máy tính và Kỹ thuật truyền thông.
Cũng giống như AES-512, AES-1024 sử dụng độ dài khối đầu là 512 bit thay vì 128 bit ở AES
mà NIST công bố[7]


1.1.4 Kết luận
Với mô tả thuật toán đơn giản – bao gồm những phép XOR và phép hoán vị cho nên AES
được áp dụng rộng rãi trong thực tế và dễ dàng tích hợp với phần cứng. Nhưng cũng chính vì sợ
đơn giản đó mà AES lại đem đến nhiều tranh cãi về mức độ an toàn
Mặc dù chưa có cách thức tấn công nào thành công vào AES ngoại trừ tấn công kênh bên
nhưng với sự phát triển nhanh chóng về tốc độ tính toán của máy tính thì sự việc phá vỡ AES có
lẽ sẽ xảy ra trong 1 tương lai không xa
Gần đây, đã có những nhà mật mã học đã công bố thuật toán để mở rộng độ dài khóa
AES lên 512 bit và 1024 bit nhưng NIST vẫn giữ chuẩn về độ dài khóa là 128 bit, 192 bit và 256
bit

Tài liệu tham khảo:
[1] />
[2] Bruce Schneier, Counterpane Systems John Kelsey, Counterpane Systems Doug Whiting, Hi/fn
David W agner, UC Berkeley, “AES Performance Comparisons“

[3] />

[4] />[5] NIST-FIPS-197
[6] Rishabh Jain, Rahul Jejurkar, Shrikrishna Chopade, Someshwar Vaidya, Mahesh Sanap,
“AES Algorithm Using 512 Bit Key Implementation for Secure Communication”

[7] Ms. Ramya G, Ms. Anita Madona M, “ENHANCING DES AND AES WITH 1024 BITS
KEY”



×