Giới thiệuTiêu chuẩn Advanced Encryption Standard AES - Tiêu chuẩn mã hóa tiêntiến là một thuật toán tiêu chuẩn của chính phủ Hoa Kỳ nhằm mã hóa và giải mãdữ liệu do Viện Tiêu chuẩn và C
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 21 Tổng quát 4
2 Chi tiết 6
2.1 Mở rộng khóa (Sinh khóa phụ) 6
2.2 Các hàm xử lý chính 11
III Quy trình giải mã AES 16
1 Tổng quát 16
2 Các bước giải mã 17
3 Ví dụ chi tiết 18
3.1 Hàm AddRoundKey 19
3.2 Hàm InvShiftRows 19
3.3 Hàm InvSubBytes 20
3.4 Hàm InvMixColumns 21
IV Đánh giá giải thuật AES 23
V Các dạng tấn công và cách phòng chống 24
1 Các dạng tấn công 24
2 Cách phòng chống: 25
VI Demo mã hóa và giải mã AES 26
VII Kết luận 27
Tài liệu tham khảo 29
Trang 3AES là một thuật toán “mã hóa khối” (block cipher) ban đầu được tạo ra bởihai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen Kể từ khi đượccông bố là một tiêu chuẩn, AES trở thành một trong những thuật toán mã hóa phổbiến nhất sử dụng khóa mã đối xứng để mã hóa và giải mã (một số được giữ bímật dùng cho quy trình mở rộng khóa nhằm tạo ra một tập các khóa vòng) Ở ViệtNam, thuật toán AES đã được công bố thành tiêu chuẩn quốc gia TCVN7816:2007 năm 2007 về Thuật toán mã hóa dữ liệu AES
AES là phương pháp mã hoá theo khối, với khối dữ liệu vào có kích thước 128bit và khoá bí mật với kích thước có thể là 128, 192, hoặc 256 bit (là bội của 32 vàlớn nhất là 256 bit) AES được thiết kế dựa trên mạng hoán vị-thay thế(Substitution-permutation network) và nó có thể cho tốc độ thực thi cao khi cài đặttrên cả phần cứng và phần mềm Đặc biệt, giải thuật AES đã được tích hợp vàocác bộ vi xử lý gần đây của hãng Intel dưới dạng tập lệnh AES-NI, giúp tăng đáng
kể tốc độ thực thi các thao tác mã hoá và giải mã dựa trên AES
AES vận hành dựa trên một ma trận vuông 4x4, được gọi là state (trạng thái)
Ma trận này gồm 16 phần tử, mỗi phần tử là 1 byte dữ liệu State được khởi trị làkhối 128 bit bản rõ và qua quá trình biến đổi sẽ chứa khối 128 bit bản mã ở đầu ra.Như đã đề cập, AES hỗ trợ 3 kích thước khoá và kích thước của khoá quyết định
Trang 4số vòng lặp cần thực hiện để chuyển đổi bản rõ thành bản mã Số vòng lặp AEScần thực hiện theo kích thước khoá như sau:
10 vòng lặp với khoá 128 bit;
12 vòng lặp với khoá 192 bit;
14 vòng lặp với khoá 256 bit
Mỗi vòng bao gồm một số bước xử lý, trong đó có một bước phụ thuộc vào chínhkhoá mã hoá Một tập hợp các vòng đảo ngược được áp dụng để biến đổi bản mãtrở lại bản rõ ban đầu bằng cách sử dụng cùng một khoá mã hoá
II Quy trình mã hóa AES
Bước 3: Các vòng lặp chính (Rounds): Có 4 hàm biến đổi dữ liệu được thực hiện trong mỗi vòng, bao gồm:
Trang 5+ SubBytes: Hàm thay thế phi tuyến tính, trong đó mỗi byte trong state được thaythế bằng một byte khác sử dụng bảng tham chiếu S-box.
+ ShiftRows: Hàm đổi chỗ, trong đó mỗi dòng trong state được dịch một số bước theo chu kỳ
+ MixColumns: Trộn các cột trong state, kết hợp 4 bytes trong mỗi cột
Trang 62 Chi tiết
2.1.Mở rộng khóa (Sinh khóa phụ)
2.1.1 Các bước sinh khoá phụ:
B1: Rotword: quay trái 8 bitB2: Subbytes: đối chiếu trong bảng Sbox B3: Rcon: tính Rcon(i) trong đó
Rcon(i) = x(i-1) mod (x8+x4+x2+x +1)B4: Shiftrow
Lặp 10 vòng thì sinh ra 10 khoá con đối với khoá đầu vào là 128, 12 vòng đối với khoá đầu vào là 192, 14 vòng đối với khoá đầu vào 256
Khoá chính (Đầu vào)
Rotword
Subbyte s Rcon
Khoá vòng (Đầu
ra) Shifrow
10 Khoá vòng
Trang 7094f
Trang 82.1.5 Shiftrow
Các dòng của ma trận state được dịch theo chu kỳ sang trái theo nguyên tắc:
Hàng số 0 giữ nguyên
Hàng số 1 dịch 1 byte sang trái
Hàng số 2 dịch 2 byte sang trái
Hàng số 3 dịch 3 byte sang trái
2.1.6 Ví dụ thực hiện sinh khoá:
Thực hiện Rotword W(i-1)
Tham chiếu trên bảng S-box
Trang 9W[i-1] XOR với Rcon[1] và W[i-4] thì ta được W[i]
W[i-4] XOR với W[i-1] ta vừa tính ở trên ta được W[i] tiếp theo và làm tiếp tục 2 lần nữa
Trang 10Và ta thu được Round key 1 chưa Shifrow
Sau khi shifrow ta được Round key 1
Trang 122.2.2 Hàm ShiftRows
Các dòng của ma trận state được dịch theo chu kỳ sang trái theo nguyêntắc[ CITATION Hoà21 \l 1033 ]:
- Hàng số 0 giữ nguyên
- Hàng số 1 dịch 1 byte sang trái
- Hàng số 2 dịch 2 byte sang trái
- Hàng số 3 dịch 3 byte sang trái
Ví dụ:
2.2.3 Hàm MixColumns
Mỗi cột trong ma trận state được nhân với một đa thức c(x) = 3x3 + x2 + x + 2
1033 ]
Ta có thể biểu diễn kết quả 1 cột sau khi nhân như sau [CITATION Wik24 \l
1033 ]:
ShiftRows
Trang 13Ví dụ với ma trận sau:
- Để biến đổi cột đầu tiên, ta thực hiện như sau:
- Các phần tử của kết quả của phép nhân ma trận trên là:
{02}*{d4} = X * (X7 + X6 + X4 + X2) mod (X8 + X4 + X3 + X + 1) = X7 + X5 + X4 + X + 1
= 1011 0011
+ Tương tự:
{03}*{bf} = 1101 1010{01}*{5d} = 0101 1101{01}*{30} = 0011 0000
Trang 14- Sau khi biến đổi cột đầu tiên ta được:
- Tương tự với các cột còn lại ta có kết quả là:
Trang 15Trong quá trình giải mã, ma trận ciphertext sẽ bị biến đổi bởi các hàm
AddRoundKey, InvSubBytes, InvShiftRows và InvMixColumns để tạo ra các dữ
liệu trung gian gọi là ma trận trạng thái Ma trận khóa mã sẽ bị biến đổi bởi chức
năng KeyExpansion như trong quá trình mã hóa Tuy nhiên, thứ tự sử dụng các khóa
vòng trong quá trình giải mã ngược với quá trình mã hóa, nghĩa là khóa vòng số 10 sẽđược sử dụng đầu tiên Tiếp theo đó là khóa vòng số 9, số 8, , cuối cùng là khóa mãgốc
3 Các bước giải mã
AddRoundKey
Trang 16Quá trình giải mã được thực hiện qua 4 hàm cơ bản là AddRoundKey,
InvSubBytes, InvShiftRows, InvMixColumns.
Bước 1 Bước khởi tạo: Dữ liệu cần được mã hóa cipher_text kết hợp với khóa vòng thứ 10, round_key_10 bằng chức năng AddRoundKey
Bước 2 Bước lặp giải mã: kết quả bước 1 được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes, AddRoundKey và InvMixColumns Bước này được lặp lại 9 lần
Bước 3 Bước tạo ngõ ra: Sau 9 lần lặp ở bước 2, kết quả được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes và AddRoundKey với khóa mã ban đầu để khôi phục lại plain_text
4 Ví dụ chi tiết
Giả sử chuỗi dữ liệu cần giải mã cipher_text[127:0] và khóa vòng cuối cùng lấy từ quá trình mã hóa round_key_10[127:0] có giá trị như sau:
cipher_text[127:0] = 69 c4 e0 d8 6a 7b 04 30 d8 cd b7 80 70 b4 c5 5a
Trang 17round_key_10[127:0] = 13 11 1d 7f e3 94 4a 17 f3 07 a7 8b 4d 2b 30 c5
4.1.Hàm AddRoundKey
Hàm AddRoundKey được sử dụng trong quá trình giải mã chính là hàm
AddRoundKey sử dụng trong quá trình mã hóa
Trang 18Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte.
4.3.Hàm InvSubBytes
Nhiệm vụ của InvSubBytes là thực hiện thay thế từng byte của ma trận trạng thái, bằng một giá trị đã quy định trong chuẩn AES Bảng quy định giá trị thay thế cho InvSubBytes gọi là S-box đảo (Inverse S-box)
Trang 19Ví dụ, byte cần thay thế là Ha7 thì dò ở hàng “a” và cột 7 trong bảng S-box dảo
sẽ được kết quả là H89
4.4.Hàm InvMixColumns
Trang 20InvMixColumns của quá trình giả mã là đảo của MixColumns trong quá trình mã hóa Từng cột của ma trận trạng thái sẽ được nhân với ma trận chuyển đổi sau đây.
Trang 21Tương tự với cách nhân của phần mã hóa, ta được một ma trận mới
IV Đánh giá giải thuật AES
Kể từ khi được công nhận là giải thuật mã hóa tiên tiến, AES ngày càng được
xã hội chấp nhận Ban đầu AES chỉ được sử dụng để mã hóa các dữ liệu nhạycảm Về sau này, người ta đã dùng nó để mã hóa các thông tin bí mật Giải thuậtAES-192/256 được sử dụng để bảo vệ các thông tin mật và tối mật Nó được đưavào các tiêu chuẩn ISO, IETF, IEEE Cho đến nay, hàng trăm sản phẩm ứng dụngdựa theo tiêu chuẩn mã hóa AES đã được NIST cấp chứng chỉ Ở Việt Nam,Thông tư số 01/2011/TT-BTTTT ban hành ngày 04 tháng 01 năm 2011 của Bộthông tin truyền thông đã khuyến nghị sử dụng AES là giải thuật mã hóa sử dụngcho các thông tin, văn bản trong các cơ quan Nhà nước
Trang 22Ưu điểm của AES:
Kỳ tuyên bố là có độ an toàn cao, được sử dụng làm tiêu chuẩn mã hóamới thay thế cho tiêu chuẩn DES đã lỗi thời AES được sử dụng để mãhóa các thông tin mật đến tuyệt mật
AES có cấu trúc đơn giản, rõ ràng và có mô tả toán học rất đơn giản
Nhược điểm của AES:
công kênh bên” thì nó chưa thực sự an toàn
dẫn tới một số mối nguy hiểm trong tương lai
Giải thuật AES thực hiện hiệu quả cả bằng phần mềm và phần cứng Thôngthường với những ứng dụng không yêu cầu cao về hiệu năng và tốc độ thì AESđược thực hiện ở dạng phần mềm Với việc thực hiện trên phần mềm, thuật toánAES có thể được viết bằng nhiều ngôn ngữ lập trình phổ biến hiện nay như C/C++, VB.NET, Java, C# và có thể vận hành trên nhiều hệ điều hành như Windows,Linux… Khi thực hiện trên phần cứng, thuật toán AES hỗ trợ thực hiện trên haidòng thiết bị: dòng thiết bị thứ nhất dựa vào một hệ vi xử lý phụ kết hợp với hệ vi
xử lý của máy tính, dòng thiết bị thứ hai thường được thiết kế ở dạng thẻ thôngminh hoặc các thiết bị giao tiếp thông qua cổng USB
V Các dạng tấn công và cách phòng chống
1 Các dạng tấn công
Side-channel attack (tấn công kênh bên):
Side Channels (Kênh bên) là các kênh đầu ra không mong muốn từ một hệ thống.Tấn công kênh bên (hay còn gọi là tấn công kênh kề) là loại tấn công dễ thực hiệntrong các loại tấn công mạnh chống lại quá trình triển khai mã hóa, và mục tiêu củaloại tấn công này là phân tích các nguyên tố, các giao thức, modul, và các thiết bịtrong mỗi hệ thống
Phân loại :
- Tấn công thời gian:
o Kẻ tấn công đo thời gian thực hiện các hoạt động mật mã để suy rathông tin về khóa bí mật hoặc dữ liệu được mã hóa
o Ví dụ: Kẻ tấn công có thể đo thời gian cần thiết để giải mã một đoạn vănbản bằng các khóa khác nhau để tìm ra khóa chính xác
- Tấn công dựa vào lỗi:
o Kẻ tấn công cố ý gây lỗi cho thiết bị điện toán để thu thập thông tin vềkhóa bí mật hoặc dữ liệu được mã hóa
Trang 23o Ví dụ: Kẻ tấn công có thể gây lỗi cho một chip xử lý để buộc nó tiết lộthông tin về khóa bí mật.
- Tấn công phân tích năng lượng:
o Kẻ tấn công đo mức tiêu thụ điện năng của thiết bị điện toán trong quátrình thực hiện các hoạt động mật mã để suy ra thông tin về khóa bí mậthoặc dữ liệu được mã hóa
o Ví dụ: Kẻ tấn công có thể đo mức tiêu thụ điện năng của một chip xử lý
để phân biệt giữa các thao tác mã hóa với các thao tác khác
- Tấn công phân tích điện từ:
o Kẻ tấn công thu thập các tín hiệu điện từ được phát ra từ thiết bị điệntoán trong quá trình thực hiện các hoạt động mật mã để suy ra thông tin
về khóa bí mật hoặc dữ liệu được mã hóa
o Ví dụ: Kẻ tấn công có thể thu thập tín hiệu điện từ từ một card smartcard
để suy ra thông tin về khóa bí mật được lưu trữ trên card
Known attacks:
Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công trên lýthuyết gọi là tấn công XSL và chỉ ra điểm yếu tiềm tàng của AES
Tuy nhiên, một vài chuyên gia về mật mã học khác cũng chỉ ra một số vấn đề trong
cơ sở toán học của tấn công này và cho rằng các tác giả đã có sai lầm trong tính toán.Việc tấn công dạng này có thực sự trở thành hiện thực hay không vẫn còn để ngỏ vàcho tới nay thì tấn công XSL vẫn chỉ là suy đoán
5 Cách phòng chống:
Phương pháp 1: Mã hóa cực mạnh
- Sử dụng các biện pháp để tăng tính bảo mật của thuật toán mã hóa AES:
o Sử dụng khóa dài
o Cần bảo vệ khóa bí mật cẩn thận, tránh tiết lộ cho bất kỳ ai
o Sử dụng các kỹ thuật chống tấn công kênh bên: che chắn phần cứng,cân bằng tiêu thụ điện năng, sử dụng thuật toán mã hóa chống SCA
Phương pháp 2: Bảo vệ dữ liệu theo phương pháp vật lý
- Nếu một kẻ tấn công không thể tiếp cận vật lý với dữ liệu, dĩ nhiên khả năngđánh cắp khóa mã hóa sẽ khó khăn hơn Vì vậy, trước những cuộc tấn công qua âmthanh tiềm tàng, bạn có thể sử dụng các giải pháp bảo vệ vật lý như đặt laptop vàocác hộp cách ly âm thanh, không để ai lại gần máy tính khi đang giải mã dữ liệu hoặc
sử dụng các nguồn âm thanh băng rộng tần số đủ cao để gây nhiễu
Phương pháp 3: Kết hợp cả 2 cách trên
Trang 24VI Demo mã hóa và giải mã AES
VII Kết luận
Bảo mật thông tin là một vấn đề lớn được quan tâm không chỉ trong lĩnh vực quân
sự mà còn trong lĩnh vực kinh doanh cũng như giữ bí mật các thông tin cá nhân Với
Trang 25sự phát triển mạnh mẽ về khoa học công nghệ và các hệ thống không dây thì vấn đề bảo mật ngày càng được chú trọng và phát triển Bảo đảm bí mật thông tin trở thành một vấn đề không thể thiếu khi nói đến giao dịch trên Internet.
Đối với người nghiên cứu về bảo mật thì quá trình chứng thực và trao đổi khóa trong mạng là vô cùng quan trọng Thông qua tìm hiểu cấu trúc khung của các bản tingiúp cho người làm bảo mật có thể phát hiện các tấn công từ bên ngoài hay là các sự
cố xảy ra trong mạng Từ đó có thể đảm bảo cho hệ thống an toàn hơn
Với các ưu điểm nổi bật, tiêu chuẩn mã hóa tiên tiến (AES) đã chứng tỏ đây chính là một tiêu chuẩn đáp ứng được các yêu cầu mật mã dữ liệu của thời đại mới Việc tấn công để phá thuật toán này chỉ được các nhà khoa học đưa ra trên lý thuyết
và đang còn nhiều vấn đề gây tranh cãi Tuy hiện nay thuật toán AES được coi là an toàn nhưng với sự phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin và viễn thông như hiện nay thì không có một thuật toán nào đảm bảo an toàn trong tương lai.Vì vậy vấn đề bảo mật còn rất nhiều điều cần phải tìm hiểu
Tài liệu tham khảo
[1] H X Dậu, An toàn và bảo mật hệ thống thông tin, Hà Nội, 2021
[2] Wikipedia, “Rijndael S-box,” 5 7 2023 [Trực tuyến] Available:
https://en.wikipedia.org/wiki/Rijndael_S-box [Đã truy cập 22 3 2024].
[3] Wikipedia, “Rijndael MixColumns,” 6 2 2024 [Trực tuyến] Available:
https://en.wikipedia.org/wiki/Rijndael_MixColumns [Đã truy cập 22 3 2024].