lOMoARcPSD| 60701415
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỌC PHẦN: AN TOÀN BẢO MẬT THÔNG TIN
Học kỳ: I Năm học: 2025 - 2026
CHỦ ĐỀ 07: NGHIÊN CỨU HỆ THỐNG BẢO MẬT TẬP
TIN SỬ DỤNG HỆ MÃ HÓA AES
LỚP TÍN CHỈ: ATBMTT.03.K14.05.LH.C04.1_LT
Giảng viên hướng dẫn: ThS Lê Thị Huyền Trang
Danh sách sinh viên thực hiện: Nhóm 12
T
T
Mã sinh viên
Sinh viên thực hiện
Lớp hành chính
1
20233726
QUÀNG DUY THÁI
DCCNTT14.10
2
20233717
LÊ NGUYỄN NAM ANH
DCCNTT14.10
3
20233801
NGUYỄN HÁN GIANG
DCCNTT14.10
Bắc Ninh - 2025
lOMoARcPSD| 60701415
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................................. 5
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ ......................................................................... 6
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ....................................................................... 8
1.1. Giới thiệu .............................................................................................................. 8
1.2. Lý do chọn đề tài .................................................................................................. 8
CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN .......................................................... 10
2.1. Giới thiệu ............................................................................................................ 10
2.2. Chức năng ........................................................................................................... 10
2.3. Thuật toán ........................................................................................................... 11
2.3.1.Tổng quan AES-128 ...................................................................................... 11
2.3.2. SubBytes (Thay thế Byte): ........................................................................... 13
2.3.3. ShiftRows (Dịch chuyển Hàng): .................................................................. 14
2.3.4. MixColumns (Trộn Cột): ............................................................................. 15
2.3.5. AddRoundKey (Cộng Khóa Vòng): ............................................................ 17
2.3.6. Chức năng KeyExpansion ........................................................................... 18
2.3.7. Mức độ an toàn ............................................................................................ 22
2.4. Các dạng tấn công vào AES và phương pháp phòng chống ............................... 22
2.4.1. Side – channel attack ................................................................................... 22
2.4.2. Known attacks .............................................................................................. 23
2.4.3. Các phương pháp phòng chống ................................................................... 23
2.4.4. Kết luận và đánh giá thuật toán ................................................................... 23
2.5. Ví dụ minh họa ................................................................................................... 23
CHƯƠNG 3: CÀI ĐẶT ................................................................................................ 24
3.1. Ngôn ngữ lập trình .............................................................................................. 24
lOMoARcPSD| 60701415
3.1.1. Ngôn ngữ, công cụ và môi trường ............................................................... 24
3.1.2. Thiết kế tổng thể .......................................................................................... 26
3.2. Cài đặt ................................................................................................................. 28
3.2.1. Tạo dự án & phụ thuộc ................................................................................ 28
3.2.2. Khởi tạo CSDL ............................................................................................ 30
3.2.3. Giao diện & tương tác .................................................................................. 33
3.2.4. Luồng xử lý (pseudocode rút gọn) ............................................................... 39
3.2.5. Một số điểm kỹ thuật đáng chú ý ................................................................. 42
3.2.6. Hướng dẫn chạy ........................................................................................... 42
CHƯƠNG 4: KẾT LUẬN ............................................................................................. 44
4.1. Kết quả đạt được ................................................................................................. 44
4.2. Hướng phát triển ................................................................................................. 46
4.2.1 Đánh giá & hạn chế ...................................................................................... 46
4.2.2. Hướng phát triển .......................................................................................... 46
PHỤ LỤC ...................................................................................................................... 47
Phụ lục A: Python (PyCryptodome) .......................................................................... 47
A.1. Yêu cầu môi trường ........................................................................................ 47
A.2. Mã nguồn chính (aes_file_tool.py) ................................................................ 47
A.3. Giao diện ứng dụng (Tkinter GUI) ................................................................ 48
A.4. Hướng dẫn chạy ............................................................................................. 49
Phụ lục B: Java (JDK 11+) ........................................................................................ 49
B.1. Yêu cầu môi trường ........................................................................................ 49
B.2. Mã nguồn chính: AesFileTool.java ................................................................ 50
B.3. Giao diện ứng dụng (Swing GUI) .................................................................. 51
B.4. Hướng dẫn chạy ............................................................................................. 52
DANH MỤC TÀI LIỆU THAM KHẢO ...................................................................... 52
lOMoARcPSD| 60701415
DANH MỤC CÁC TỪ VIẾT TẮT
STT
Chữ viết tắt
1
ATBMTT
2
AES
3
CSDL
4
GUI
5
GCM
6
CBC
lOMoARcPSD| 60701415
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ
Hình 2 1 Quá trình mã hóa AES-128...........................................................................12
Hình 2 2 Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận...................................13
Hình 2 3 S-box của mã hóa AES.................................................................................13
Hình 2 4 Chức năng SubBytes.....................................................................................14
Hình 2 5 Chức năng ShiftRows...................................................................................15
Hình 2 6 Ma trận chuyển đổi sử dụng trong chức năng MixColumns.........................15
Hình 2 7 Chức năng MixColumns...............................................................................16
Hình 2 8 Chi tiết về cách tính MixColumns tạo ra phần tử H04 từ cột 1.....................17
Hình 2 9 Chức năng AddRoundKey cho bước khởi tạo...............................................18
Hình 2 10 Chức năng KeyExpansion...........................................................................19
Hình 2 11 Thực thi RotWord cho từ w[3]....................................................................20
Hình 2 12 Thực thi SubWord khi chuyển đổi từ w[3]..................................................20
Hình 2 13 Thực thi AddRcon khi chuyển đổi từ w[3]..................................................21
Hình 2 14 Thực thi AddW để tạo khóa vòng 1............................................................21
Hình 3 1 Visual studio 2022........................................................................................25
Hình 3 2 Microsoft SQL Server...................................................................................26
Hình 3 3 Kiến trúc ba lớp.............................................................................................27
Hình 3 4 Cấu trúc thư mục dự án.................................................................................30
Hình 3 5 Sơ đồ cơ sở dữ liệu.......................................................................................32
Hình 3 6 Giao diện MainForm.....................................................................................33
Hình 3 7 event handler Encrypt...................................................................................33
Hình 3 8 Hàm EncryptCbcEtMAsync..........................................................................35
Hình 3 9 Hàm EncryptGcmAsync...............................................................................37
Hình 3 10 - Hàm DecryptCbcEtMAsync.....................................................................38
Hình 3 11 Hàm DecryptGcmAsync.............................................................................39
Hình 3 12 HistoryForm................................................................................................39
Hình 3 13 Luồng xử lý.................................................................................................41
lOMoARcPSD| 60701415
Hình 3 14 Đăng nhập...................................................................................................42
Hình 3 15 Mã hóa thành công......................................................................................43
Hình 3 16 Nội dung sau khi mã hóa.............................................................................43
Hình 3 17 Thực hiện giải mã.......................................................................................44
Hình 3 18 Nội dung sau khi giải mã............................................................................44
Hình 4 1 Biểu đồ minh họa..........................................................................................46
Hình 5 1 Hàm mã hóa GCM với file nhỏ.....................................................................48
Hình 5 2 Hàm mã hóa CBC với file lớn.......................................................................48
Hình 5 3 Hàm giải mã..................................................................................................49
Hình 5 4 Code giao diện triển khải trên Python...........................................................49
Hình 5 5 Giao diện chính chương trình Python............................................................50
Hình 5 6 Hàm mã hóa GCM với file nhỏ của java.......................................................50
Hình 5 7 Hàm mã hóa CBC với file lớn của java.........................................................51
Hình 5 8 Hàm giải mã của java....................................................................................51
Hình 5 9 Code triển khai giao diện của java................................................................52
Hình 5 10 Giao diện chính chương trình Java..............................................................52
lOMoARcPSD| 60701415
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ I
1.1. Giới thiệu
Trong kỷ nguyên số hóa hiện nay, dữ liệu đã trở thành tài sản quan trọng bậc nhất
của cá nhân, tổ chức và quốc gia. Cùng với sự phát triển của công nghệ thông tin sự
gia tăng phức tạp và tinh vi của các mối đe dọa an ninh mạng, từ đánh cắp thông tin
nhân, gián điệp công nghiệp, đến tấn công ransomware (mã độc tống tiền). Việc bảo vệ
tính mật, toàn vẹn sẵn sàng của dữ liệu, đặc biệt các tập tin quan trọng, tr
nên cấp thiết hơn bao giờ hết.
hóa giải pháp nền tảng và hiệu quả nhất để đảm bảo tính mật của dữ liệu.
Đề tài này tập trung vào việc nghiên cứu ứng dụng Hệ hóa Đối xứng Tiêu chuẩn
hóa Nâng cao (Advanced Encryption Standard - AES). AES thuật toán mã hóa
được chính phủ Hoa Kỳ và nhiều tổ chức quốc tế công nhận là tiêu chuẩn hàng đầu, nổi
bật với tính bảo mật cao, tốc độ xử lý nhanh và hiệu quả trên nhiều nền tảng phần cứng.
Mục tiêu của nghiên cứu là xây dựng một hệ thống bảo mật tập tin đơn giản, cho
phép người dùng hóa giải các tập tin của họ, từ đó bảo vệ dữ liệu khỏi sự
truy cập trái phép.
1.2. Lý do chọn đề tài
- Có ba lý do chính thúc đẩy việc lựa chọn và thực hiện đề tài này:
Tính cấp thiết của bảo mật tập tin: Hầu hết dữ liệu quan trọng được u trữ
dưới dạng tập tin. Việc bảo mật chúng bằng một lớp mã hóa mạnh mẽ là yêu cầu cơ bản
để chống lại c cuộc tấn công vật (truy cập thiết bị) hoặc tấn công logic (truy cập
qua mạng).
Sức mạnh và độ tin cậy của AES: AES (Rijndael) đã được chọn làm tiêu chuẩn
hóa toàn cầu thay thế cho DES. Đây thuật toán hóa đối xứng đã được kiểm
chứng về mặt toán học và mật mã học, không có lỗ hổng lớn nào được tìm thấy cho đến
nay. Sử dụng AES giúp đảm bảo tính bảo mật và tuổi thọ lâu dài cho hệ thống được xây
dựng.
Cơ hội nghiên cứu phát triển kỹ năng: Đề tài cung cấp hội để sinh viên
không chỉ nghiên cứu sâu về thuyết mật (cấu trúc mạng hoán vị-thay thế, trường
hữu hạn) mà còn áp dụng kiến thức vào thực tế thông qua việc xây dựng một ứng dụng
lOMoARcPSD| 60701415
cụ thể. Điều này giúp củng cố kỹ năng lập trình và khả năng giải quyết vấn đề trong lĩnh
vực An toàn thông tin.
lOMoARcPSD| 60701415
CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN
2.1. Giới thiệu
AES (Advanced Encryption Standard) một thuật toán hóa khối đối
xứng (Symmetric Block Cipher) được Cục Tiêu chuẩn Công nghệ Quốc gia Hoa
Kỳ (NIST) phê duyệt làm tiêu chuẩn liên bang vào năm 2001.
Nguồn gốc: AES n gọi chính thức của thuật toán Rijndael, do hai nhà mật
mã học người Bỉ là Joan Daemen và Vincent Rijmen phát triển. Thuật toán này đã chiến
thắng cuộc thi toàn cầu do NIST tổ chức (kéo dài từ năm 1997 đến 2000) để tìm ra thuật
toán thay thế cho DES đã lỗi thời.
Đặc điểm: AES mã hóa dữ liệu theo từng khối cố định có kích thước 128 bit (16
byte). Thuật toán hỗ trba kích thước khóa khác nhau: 128 bit, 192 bit, 256 bit.
Kích thước khóa càng lớn, số vòng lặp hóa (Round) càng nhiều, độ bảo mật càng
cao (tương ứng 10, 12 14 vòng lặp). Hầu hết các phép toán trong thuật toán AES
đều thực hiện trong một trường hữu hạn của các byte. Mỗi khối dữ liệu đầu vào 128bit
được chia thành 16byte, có thể xếp thành 4 cột, mỗi cột 4 phần tử hay một ma trận 4x4
của các byte, nó gọi là ma trận trạng thái.
Tùy thuộc vào độ dài của khóa khi sử dụng 128bit, 192bit hay 256bit thuật
toán được thực hiện với số lần lặp khác nhau.
Các bước xử lý chính.
- Quá trình mở rộng khóa sử dụng thủ tục sinh khóa Rijndael.
- Quá trình mã hóa.
2.2. Chức năng
Chức năng cốt lõi của AES là chuyển đổi dữ liệu rõ (Plaintext) thành dữ liệu mật
(Ciphertext) bằng cách sử dụng Khóa mật (Secret Key) một chuỗi các phép biến
đổi toán học phức tạp.
Nguyên lý hoạt động chính:
AES dựa trên cấu trúc Mạng Hoán vị-Thay thế (Substitution-Permutation Network
- SPN). Quá trình mã hóa bao gồm các vòng lặp, mỗi vòng lặp thực hiện bốn phép biến
đổi cơ bản để tạo ra sự khuếch tán (Diffusion) nhầm lẫn (Confusion), hai nguyên
tắc cơ bản của mật mã học.
lOMoARcPSD| 60701415
Nhầm lẫn (Confusion): Làm cho mối quan hệ giữa Khóa và dữ liệu mật trở nên
phức tạp nhất có thể (thực hiện bởi bước SubBytes).
Khuếch tán (Diffusion): Phân tán nh hưởng của một bit dữ liệu hoặc một bit
Khóa đến nhiều bit của dữ liệu mật (thực hiện bởi các ớc ShiftRows
MixColumns).
2.3. Thuật toán
Mỗi vòng lặp (trừ vòng cuối cùng) trong thuật toán AES bao gồm bốn phép biến
đổi tuần tự sau đây trên ma trận trạng thái 4×4 (tương đương 128 bit):
2.3.1.Tổng quan AES-128
Các vấn đề liên quan đến chuẩn hóa AES được tả trong tài liệu
"Announcing the ADVANCED ENCRYPTION STANDARD (AES)", công bố ngày
26/11/2001, của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST). Mục này chỉ
trình bày ngắn gọn về mã hóa AES 128 bit, gọi tắt là AES-128 theo hướng dễ thực hiện
bằng mạch số.
Mã hóa AES được thực hiện thông qua 5 chức năng chính là AddRoundKey, SubBytes,
ShiftRows, MixColumns KeyExpansion. Năm chức năng này được sắp xếp để thực
hiện ba bước cơ bản.
Bước 1. ớc khởi tạo: dữ liệu cần được hóa plain_text[127:0] kết hợp với
key[127:0] bằng chức năng AddRoundKey
Bước 2. Bước lặp mã hóa: kết quả bước 1 được sử dụng để thực hiện tuần tự các
chức năng SubBytes, ShiftRows, MixColumns AddRoundKey. Bước này
được lặp lại 9 lần. Chú ý, KeyExpansion thực hiện song song với bước
AddRoundKey để tạo khóa vòng cho chức năng này.
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 SubBytes, ShiftRows AddRoundKey để tạo ngõ ra
cipher_text[127:0].
lOMoARcPSD| 60701415
Hình 2 1 Quá trình mã hóa AES-128
- Quá trình hóa AES-128 sẽ được giải thích trên một dụ cụ thể. Gisử chuỗi dữliệu
cần mã hóa plain_text[127:0] và khóa mã key[127:0] có giá trị như sau:
plain_text[127:0] = 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34
key[127:0] = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
- Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte
lOMoARcPSD| 60701415
Hình 2 2 Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận
- Trong quá trình hóa, ma trận dữ liệu ban đầu sẽ bị biến đổi bởi các chức năng
AddRoundKey, SubBytes, ShiftRows hoặc MixColumns để 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 sẽ bị biến đổi bởi chức ng KeyExpansion
để tạo ra các khóa mã trung gian gọi là khóa vòng.
2.3.2. SubBytes (Thay thế Byte):
- Mỗi byte trong ma trận trạng thái được thay thế bằng một byte khác dựa trên một bảng
tra cứu cố định, được gọi S-Box. Phép toán này một phép thế không tuyến tính,
mang lại tính nhầm lẫn (Confusion) cho thuật toán.
lOMoARcPSD| 60701415
Hình 2 3 S-box của mã hóa AES
- Ví dụ, byte cần thay thế H08 thì hàng số 0 cột số 8 trong bảng S-box sẽ được
kết quả là 30.
Hình 2 4 Chức năng SubBytes
2.3.3. ShiftRows (Dịch chuyển Hàng):
- Chức năng ShiftRows thực hiện quay trái từng hàng của ma trận trạng thái, ngõ
ra của SubBytes, theo byte với hệ số quay tăng dần từ 0 đến 3. Hàng đầu tiên hệ số
quay 0 thì các byte được giữ nguyên vị trí. Hàng thứ hai hệ số quay 1 thì các
byte được quay một byte. Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte.
lOMoARcPSD| 60701415
Hình 2 5 Chức năng ShiftRows
2.3.4. MixColumns (Trộn Cột):
Chức năng MixColumns thực hiện nhân từng cột của ma trận trạng thái, ngõ ra
của ShiftRows, với một ma trận chuyển đổi quy định bởi chuẩn AES.
Hình 2 6 Ma trận chuyển đổi sử dụng trong chức năng MixColumns
- Việc biến đổi một cột của ma trận trạng thái được thực hiện bởi hai phép toán là
nhân(.)vàXOR(+).
- Biểu thức sau tạo ra phần tử H04, H hiệu của số Hex, cột 1 trong hình
minh họa "chức năng MixColumns".
H04 =Hd4.H02 + Hbf.H03 + H5d.H01 + H30.H01=Hd4.H02 + (Hbf.H02 +
lOMoARcPSD| 60701415
Hbf.H01) + H5d.H01 + H30.H01
Hình 2 7 Chức năng MixColumns
- Phép nhân với H01 thì giữ nguyên giá trị. Phép nhân với H02 ơng đương với việc
dịch trái một bit và XOR có điều kiện như sau:
Nếu bit MSB của giá trị được dịch bằng 1 thì giá trị sau khi dịch được XOR với
H1b
Nếu bit MSB của giá trị được dịch bằng 0 thì giữ giá trị saukhi dịch.
lOMoARcPSD| 60701415
Hình 2 8 Chi tiết về cách tính MixColumns tạo ra phần tử H04 từ cột 1
2.3.5. AddRoundKey (Cộng Khóa Vòng):
o Khóa vòng (Round Key) được tạo ra từ Khóa chính (Master Key) thông qua thủ tục
mở rộng khóa (Key Expansion) được kết hợp (thường là phép XOR) với ma
trận trạng thái hiện tại. Đây bước duy nhất sử dụng Khóa trong mỗi vòng
lặp.
- Chức năng AddRoundKey thực hiện ở:
Bước khởi tạo: XOR khóa mã với ma trận dữ liệu
Bước lặp hóa bước tạo ngõ ra: XOR khóa vòng (round key) với ma trận
trạng thái.
lOMoARcPSD| 60701415
Hình 2 9 Chức năng AddRoundKey cho bước khởi tạo
- Đối với bước lặp mã a bước tạo ngõ ra, vị trí "khóa mã" các "khóa vòng" còndữ
liệu là của lần tính trước đó.
- Lưu ý: Vòng lặp cuối cùng không thực hiện bước MixColumns.
2.3.6. Chức năng KeyExpansion
Chức năng KeyExpansion thực hiện tính toán khóa vòng cho bước lặp hóa
bước tạo ngõ ra. Kết quả của một lần thực thi KeyExpansion là một khóa vòng sử dụng
cho chức năng AddRoundKey. Với mã hóa AES-128, số khóa vòng là 10 tương ứng với
9 lần AddRoundKey ở bước lặp mã hóa và 1 lần AddRoundKey ở bước tạo ngõ ra.
Chức năng KeyExpansion được thực hiện thông qua 4 chức năng là RotWord, SubWord,
AddRcon và AddW.
lOMoARcPSD| 60701415
Hình 2 10 Chức năng KeyExpansion
- Mỗi khóa vòng có 128 bit được chia làm 4 word, mỗi word là 4 byte và ký hiệulà w[j]
với j là số nguyên. hóa AES-128 1 khóa mã và 10 khóa vòng nên tổng số từ
44 được đánh số từ 0 đến 43. Khóa 4 từ w[0], w[1], w[2] w[3]. Khóa
vòng 1 có 4 từ là w[4], w[5], w[6] và w[7]. Tương tự, khóa vòng 10 có 4 từ là w[40],
w[41], w[42] và w[43].
Từ w[j] tính theo công thức sau, với 3 < j < 44.
w[j] = AddW[j - 4] = w[j - 1] + w[j - 4] w[j = 4 n] =
AddW[j - 4] = trans(w[j - 1])+ w[j - 4]
- Chú ý, khi tính các từ ở vị trí j là bội số của 4, như w[4], w[8],... và w[40], thì w[j-
1] phải được biến đổi qua 3 chức năng RotWord, SubWord AddRcon, gọi trans(w[j-
1]), trước khi XOR với w[j-4].
- Khóa mã key mục 1 được sử dụng để minh họa việc tính toán khóa vòng. Khóa mã
key[127:0] được chia làm 4 từ như biểu thức sau:
w[0] = 2b7e1516 w[1] = 28aed2a6
lOMoARcPSD| 60701415
w[2] = abf71588 w[3] = 09cf4f3c
- Việc tính toán khóa ng 1 thực hiện tính 4 từ w[4], w[5], w[6] w[7]. Để tính
khóa vòng 1, trans(w[3]) phải được tính trước thông qua 3 chức năng RotWord,
SubWord và AddRcon.
w[4] = AddW[0] = trans(w[3])+ w[0]w[5] = AddW[1] = w[4]+ w[1]w[6]
= AddW[2] = w[5]+ w[2]w[7] = AddW[3] = w[6]+ w[3]
- Chức năng RotWord Chức năng RotWord thực hiện quay trái từ w[j] một byte.
Hình 2 11 Thực thi RotWord cho từ w[3]
- Chức năng SubWord thực hiện thay thế các phi tuyến từng byte của kết quả RotWord
theo bảng S-box.
Hình 2 12 Thực thi SubWord khi chuyển đổi từ w[3]
- Chức năng AddRcon thực hiện XOR kết quả SubWord và giá trị Rcon[j/4] với j là bội
số của 4. Số lượng giá trị Rcon[j/4] là 10 tương ứng với 10 lần tính khóa vòng.
Chức năng AddRcon sẽ tạo ra kết quả cuối cùng của biến đổi trans(w[j-1]).
Rcon[j/4] Giá trị HEX Vị trí sử dụng
Rcon[1] 01000000 sử dụng cho trans(w[3]) khi tính w[4]
Rcon[2] 02000000 sử dụng cho trans(w[7]) khi tính w[8]
Rcon[3] 04000000 sử dụng cho trans(w[11]) khi tính w[12]
Rcon[4] 08000000 sử dụng cho trans(w[15]) khi tính w[16]
Rcon[5] 10000000 sử dụng cho trans(w[19]) khi tính w[20]

Preview text:

lOMoAR cPSD| 60701415
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN
HỌC PHẦN: AN TOÀN BẢO MẬT THÔNG TIN
Học kỳ: I Năm học: 2025 - 2026
CHỦ ĐỀ 07: NGHIÊN CỨU HỆ THỐNG BẢO MẬT TẬP
TIN SỬ DỤNG HỆ MÃ HÓA AES
LỚP TÍN CHỈ: ATBMTT.03.K14.05.LH.C04.1_LT
Giảng viên hướng dẫn: ThS Lê Thị Huyền Trang
Danh sách sinh viên thực hiện: Nhóm 12
T
Sinh viên thực hiện Lớp hành chính Mã sinh viên T 1 20233726 QUÀNG DUY THÁI DCCNTT14.10 2 20233717 LÊ NGUYỄN NAM ANH DCCNTT14.10 3 20233801 NGUYỄN HÁN GIANG DCCNTT14.10 Bắc Ninh - 2025 lOMoAR cPSD| 60701415 MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................................. 5
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ ......................................................................... 6
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ....................................................................... 8
1.1. Giới thiệu .............................................................................................................. 8
1.2. Lý do chọn đề tài .................................................................................................. 8
CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN .......................................................... 10
2.1. Giới thiệu ............................................................................................................ 10
2.2. Chức năng ........................................................................................................... 10
2.3. Thuật toán ........................................................................................................... 11
2.3.1.Tổng quan AES-128 ...................................................................................... 11
2.3.2. SubBytes (Thay thế Byte): ........................................................................... 13
2.3.3. ShiftRows (Dịch chuyển Hàng): .................................................................. 14
2.3.4. MixColumns (Trộn Cột): ............................................................................. 15
2.3.5. AddRoundKey (Cộng Khóa Vòng): ............................................................ 17
2.3.6. Chức năng KeyExpansion ........................................................................... 18
2.3.7. Mức độ an toàn ............................................................................................ 22
2.4. Các dạng tấn công vào AES và phương pháp phòng chống ............................... 22
2.4.1. Side – channel attack ................................................................................... 22
2.4.2. Known attacks .............................................................................................. 23
2.4.3. Các phương pháp phòng chống ................................................................... 23
2.4.4. Kết luận và đánh giá thuật toán ................................................................... 23
2.5. Ví dụ minh họa ................................................................................................... 23
CHƯƠNG 3: CÀI ĐẶT ................................................................................................ 24
3.1. Ngôn ngữ lập trình .............................................................................................. 24 lOMoAR cPSD| 60701415
3.1.1. Ngôn ngữ, công cụ và môi trường ............................................................... 24
3.1.2. Thiết kế tổng thể .......................................................................................... 26
3.2. Cài đặt ................................................................................................................. 28
3.2.1. Tạo dự án & phụ thuộc ................................................................................ 28
3.2.2. Khởi tạo CSDL ............................................................................................ 30
3.2.3. Giao diện & tương tác .................................................................................. 33
3.2.4. Luồng xử lý (pseudocode rút gọn) ............................................................... 39
3.2.5. Một số điểm kỹ thuật đáng chú ý ................................................................. 42
3.2.6. Hướng dẫn chạy ........................................................................................... 42
CHƯƠNG 4: KẾT LUẬN ............................................................................................. 44
4.1. Kết quả đạt được ................................................................................................. 44
4.2. Hướng phát triển ................................................................................................. 46
4.2.1 Đánh giá & hạn chế ...................................................................................... 46
4.2.2. Hướng phát triển .......................................................................................... 46
PHỤ LỤC ...................................................................................................................... 47
Phụ lục A: Python (PyCryptodome) .......................................................................... 47
A.1. Yêu cầu môi trường ........................................................................................ 47
A.2. Mã nguồn chính (aes_file_tool.py) ................................................................ 47
A.3. Giao diện ứng dụng (Tkinter GUI) ................................................................ 48
A.4. Hướng dẫn chạy ............................................................................................. 49
Phụ lục B: Java (JDK 11+) ........................................................................................ 49
B.1. Yêu cầu môi trường ........................................................................................ 49
B.2. Mã nguồn chính: AesFileTool.java ................................................................ 50
B.3. Giao diện ứng dụng (Swing GUI) .................................................................. 51
B.4. Hướng dẫn chạy ............................................................................................. 52
DANH MỤC TÀI LIỆU THAM KHẢO ...................................................................... 52 lOMoAR cPSD| 60701415
DANH MỤC CÁC TỪ VIẾT TẮT STT Chữ viết tắt Giải thích 1 ATBMTT
An toàn bảo mật thông tin 2 AES Advanced Encryption Standard 3 CSDL Cơ sở dữ liệu 4 GUI Graphical User Interface 5 GCM Galois/Counter Mode 6 CBC Cipher Block Chaining lOMoAR cPSD| 60701415
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ
Hình 2 1 Quá trình mã hóa AES-128...........................................................................12
Hình 2 2 Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận...................................13
Hình 2 3 S-box của mã hóa AES.................................................................................13
Hình 2 4 Chức năng SubBytes.....................................................................................14
Hình 2 5 Chức năng ShiftRows...................................................................................15
Hình 2 6 Ma trận chuyển đổi sử dụng trong chức năng MixColumns.........................15
Hình 2 7 Chức năng MixColumns...............................................................................16
Hình 2 8 Chi tiết về cách tính MixColumns tạo ra phần tử H04 từ cột 1.....................17
Hình 2 9 Chức năng AddRoundKey cho bước khởi tạo...............................................18
Hình 2 10 Chức năng KeyExpansion...........................................................................19
Hình 2 11 Thực thi RotWord cho từ w[3]....................................................................20
Hình 2 12 Thực thi SubWord khi chuyển đổi từ w[3]..................................................20
Hình 2 13 Thực thi AddRcon khi chuyển đổi từ w[3]..................................................21
Hình 2 14 Thực thi AddW để tạo khóa vòng 1............................................................21
Hình 3 1 Visual studio 2022........................................................................................25
Hình 3 2 Microsoft SQL Server...................................................................................26
Hình 3 3 Kiến trúc ba lớp.............................................................................................27
Hình 3 4 Cấu trúc thư mục dự án.................................................................................30
Hình 3 5 Sơ đồ cơ sở dữ liệu.......................................................................................32
Hình 3 6 Giao diện MainForm.....................................................................................33
Hình 3 7 event handler Encrypt...................................................................................33
Hình 3 8 Hàm EncryptCbcEtMAsync..........................................................................35
Hình 3 9 Hàm EncryptGcmAsync...............................................................................37
Hình 3 10 - Hàm DecryptCbcEtMAsync.....................................................................38
Hình 3 11 Hàm DecryptGcmAsync.............................................................................39
Hình 3 12 HistoryForm................................................................................................39
Hình 3 13 Luồng xử lý.................................................................................................41 lOMoAR cPSD| 60701415
Hình 3 14 Đăng nhập...................................................................................................42
Hình 3 15 Mã hóa thành công......................................................................................43
Hình 3 16 Nội dung sau khi mã hóa.............................................................................43
Hình 3 17 Thực hiện giải mã.......................................................................................44
Hình 3 18 Nội dung sau khi giải mã............................................................................44
Hình 4 1 Biểu đồ minh họa..........................................................................................46
Hình 5 1 Hàm mã hóa GCM với file nhỏ.....................................................................48
Hình 5 2 Hàm mã hóa CBC với file lớn.......................................................................48
Hình 5 3 Hàm giải mã..................................................................................................49
Hình 5 4 Code giao diện triển khải trên Python...........................................................49
Hình 5 5 Giao diện chính chương trình Python............................................................50
Hình 5 6 Hàm mã hóa GCM với file nhỏ của java.......................................................50
Hình 5 7 Hàm mã hóa CBC với file lớn của java.........................................................51
Hình 5 8 Hàm giải mã của java....................................................................................51
Hình 5 9 Code triển khai giao diện của java................................................................52
Hình 5 10 Giao diện chính chương trình Java..............................................................52 lOMoAR cPSD| 60701415
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1. Giới thiệu
Trong kỷ nguyên số hóa hiện nay, dữ liệu đã trở thành tài sản quan trọng bậc nhất
của cá nhân, tổ chức và quốc gia. Cùng với sự phát triển của công nghệ thông tin là sự
gia tăng phức tạp và tinh vi của các mối đe dọa an ninh mạng, từ đánh cắp thông tin cá
nhân, gián điệp công nghiệp, đến tấn công ransomware (mã độc tống tiền). Việc bảo vệ
tính bí mật, toàn vẹn và sẵn sàng của dữ liệu, đặc biệt là các tập tin quan trọng, trở
nên cấp thiết hơn bao giờ hết.
Mã hóa là giải pháp nền tảng và hiệu quả nhất để đảm bảo tính bí mật của dữ liệu.
Đề tài này tập trung vào việc nghiên cứu và ứng dụng Hệ mã hóa Đối xứng Tiêu chuẩn
Mã hóa Nâng cao (Advanced Encryption Standard - AES). AES là thuật toán mã hóa
được chính phủ Hoa Kỳ và nhiều tổ chức quốc tế công nhận là tiêu chuẩn hàng đầu, nổi
bật với tính bảo mật cao, tốc độ xử lý nhanh và hiệu quả trên nhiều nền tảng phần cứng.
Mục tiêu của nghiên cứu là xây dựng một hệ thống bảo mật tập tin đơn giản, cho
phép người dùng mã hóa và giải mã các tập tin của họ, từ đó bảo vệ dữ liệu khỏi sự truy cập trái phép.
1.2. Lý do chọn đề tài
- Có ba lý do chính thúc đẩy việc lựa chọn và thực hiện đề tài này:
Tính cấp thiết của bảo mật tập tin: Hầu hết dữ liệu quan trọng được lưu trữ
dưới dạng tập tin. Việc bảo mật chúng bằng một lớp mã hóa mạnh mẽ là yêu cầu cơ bản
để chống lại các cuộc tấn công vật lý (truy cập thiết bị) hoặc tấn công logic (truy cập qua mạng).
Sức mạnh và độ tin cậy của AES: AES (Rijndael) đã được chọn làm tiêu chuẩn
mã hóa toàn cầu thay thế cho DES. Đây là thuật toán mã hóa đối xứng đã được kiểm
chứng về mặt toán học và mật mã học, không có lỗ hổng lớn nào được tìm thấy cho đến
nay. Sử dụng AES giúp đảm bảo tính bảo mật và tuổi thọ lâu dài cho hệ thống được xây dựng.
Cơ hội nghiên cứu và phát triển kỹ năng: Đề tài cung cấp cơ hội để sinh viên
không chỉ nghiên cứu sâu về lý thuyết mật mã (cấu trúc mạng hoán vị-thay thế, trường
hữu hạn) mà còn áp dụng kiến thức vào thực tế thông qua việc xây dựng một ứng dụng lOMoAR cPSD| 60701415
cụ thể. Điều này giúp củng cố kỹ năng lập trình và khả năng giải quyết vấn đề trong lĩnh vực An toàn thông tin. lOMoAR cPSD| 60701415
CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN
2.1. Giới thiệu
AES (Advanced Encryption Standard) là một thuật toán mã hóa khối đối
xứng (Symmetric Block Cipher) được Cục Tiêu chuẩn và Công nghệ Quốc gia Hoa
Kỳ (NIST) phê duyệt làm tiêu chuẩn liên bang vào năm 2001.
Nguồn gốc: AES là tên gọi chính thức của thuật toán Rijndael, do hai nhà mật
mã học người Bỉ là Joan Daemen và Vincent Rijmen phát triển. Thuật toán này đã chiến
thắng cuộc thi toàn cầu do NIST tổ chức (kéo dài từ năm 1997 đến 2000) để tìm ra thuật
toán thay thế cho DES đã lỗi thời.
Đặc điểm: AES mã hóa dữ liệu theo từng khối cố định có kích thước 128 bit (16
byte). Thuật toán hỗ trợ ba kích thước khóa khác nhau: 128 bit, 192 bit, và 256 bit.
Kích thước khóa càng lớn, số vòng lặp mã hóa (Round) càng nhiều, độ bảo mật càng
cao (tương ứng là 10, 12 và 14 vòng lặp). Hầu hết các phép toán trong thuật toán AES
đều thực hiện trong một trường hữu hạn của các byte. Mỗi khối dữ liệu đầu vào 128bit
được chia thành 16byte, có thể xếp thành 4 cột, mỗi cột 4 phần tử hay một ma trận 4x4
của các byte, nó gọi là ma trận trạng thái.
Tùy thuộc vào độ dài của khóa khi sử dụng 128bit, 192bit hay 256bit mà thuật
toán được thực hiện với số lần lặp khác nhau.
Các bước xử lý chính.
- Quá trình mở rộng khóa sử dụng thủ tục sinh khóa Rijndael. - Quá trình mã hóa.
2.2. Chức năng
Chức năng cốt lõi của AES là chuyển đổi dữ liệu rõ (Plaintext) thành dữ liệu mật
(Ciphertext) bằng cách sử dụng Khóa bí mật (Secret Key) và một chuỗi các phép biến
đổi toán học phức tạp.
Nguyên lý hoạt động chính:
AES dựa trên cấu trúc Mạng Hoán vị-Thay thế (Substitution-Permutation Network
- SPN). Quá trình mã hóa bao gồm các vòng lặp, mỗi vòng lặp thực hiện bốn phép biến
đổi cơ bản để tạo ra sự khuếch tán (Diffusion)nhầm lẫn (Confusion), hai nguyên
tắc cơ bản của mật mã học. lOMoAR cPSD| 60701415
Nhầm lẫn (Confusion): Làm cho mối quan hệ giữa Khóa và dữ liệu mật trở nên
phức tạp nhất có thể (thực hiện bởi bước SubBytes).
Khuếch tán (Diffusion): Phân tán ảnh hưởng của một bit dữ liệu rõ hoặc một bit
Khóa đến nhiều bit của dữ liệu mật (thực hiện bởi các bước ShiftRowsMixColumns).
2.3. Thuật toán
Mỗi vòng lặp (trừ vòng cuối cùng) trong thuật toán AES bao gồm bốn phép biến
đổi tuần tự sau đây trên ma trận trạng thái 4×4 (tương đương 128 bit):
2.3.1.Tổng quan AES-128
Các vấn đề liên quan đến chuẩn mã hóa AES được mô tả trong tài liệu
"Announcing the ADVANCED ENCRYPTION STANDARD (AES)", công bố ngày
26/11/2001, của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST). Mục này chỉ
trình bày ngắn gọn về mã hóa AES 128 bit, gọi tắt là AES-128 theo hướng dễ thực hiện bằng mạch số.
Mã hóa AES được thực hiện thông qua 5 chức năng chính là AddRoundKey, SubBytes,
ShiftRows, MixColumns và KeyExpansion. Năm chức năng này được sắp xếp để thực hiện ba bước cơ bản. •
Bước 1. Bước khởi tạo: dữ liệu cần được mã hóa plain_text[127:0] kết hợp với
key[127:0] bằng chức năng AddRoundKey •
Bước 2. Bước lặp mã hóa: kết quả bước 1 được sử dụng để thực hiện tuần tự các
chức năng SubBytes, ShiftRows, MixColumns và AddRoundKey. Bước này
được lặp lại 9 lần. Chú ý, KeyExpansion thực hiện song song với bước
AddRoundKey để tạo khóa vòng cho chức năng này. •
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 SubBytes, ShiftRows và AddRoundKey để tạo ngõ ra cipher_text[127:0]. lOMoAR cPSD| 60701415
Hình 2 1 Quá trình mã hóa AES-128
- Quá trình mã hóa AES-128 sẽ được giải thích trên một ví dụ cụ thể. Giả sử chuỗi dữliệu
cần mã hóa plain_text[127:0] và khóa mã key[127:0] có giá trị như sau: •
plain_text[127:0] = 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34 •
key[127:0] = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
- Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte lOMoAR cPSD| 60701415
Hình 2 2 Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận
- Trong quá trình mã hóa, ma trận dữ liệu ban đầu sẽ bị biến đổi bởi các chức năng
AddRoundKey, SubBytes, ShiftRows hoặc MixColumns để 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
để tạo ra các khóa mã trung gian gọi là khóa vòng.
2.3.2. SubBytes (Thay thế Byte):
- Mỗi byte trong ma trận trạng thái được thay thế bằng một byte khác dựa trên một bảng
tra cứu cố định, được gọi là S-Box. Phép toán này là một phép thế không tuyến tính,
mang lại tính nhầm lẫn (Confusion) cho thuật toán. lOMoAR cPSD| 60701415
Hình 2 3 S-box của mã hóa AES
- Ví dụ, byte cần thay thế là H08 thì dò ở hàng số 0 và cột số 8 trong bảng S-box sẽ được kết quả là 30.
Hình 2 4 Chức năng SubBytes
2.3.3. ShiftRows (Dịch chuyển Hàng):
- Chức năng ShiftRows thực hiện quay trái từng hàng của ma trận trạng thái, ngõ
ra của SubBytes, theo byte với hệ số quay tăng dần từ 0 đến 3. Hàng đầu tiên có hệ số
quay là 0 thì các byte được giữ nguyên vị trí. Hàng thứ hai có hệ số quay là 1 thì các
byte được quay một byte. Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte. lOMoAR cPSD| 60701415
Hình 2 5 Chức năng ShiftRows
2.3.4. MixColumns (Trộn Cột):
Chức năng MixColumns thực hiện nhân từng cột của ma trận trạng thái, ngõ ra
của ShiftRows, với một ma trận chuyển đổi quy định bởi chuẩn AES.
Hình 2 6 Ma trận chuyển đổi sử dụng trong chức năng MixColumns -
Việc biến đổi một cột của ma trận trạng thái được thực hiện bởi hai phép toán là nhân(.)vàXOR(+). -
Biểu thức sau tạo ra phần tử H04, H là ký hiệu của số Hex, ở cột 1 trong hình
minh họa "chức năng MixColumns".
H04 =Hd4.H02 + Hbf.H03 + H5d.H01 + H30.H01=Hd4.H02 + (Hbf.H02 + lOMoAR cPSD| 60701415
Hbf.H01) + H5d.H01 + H30.H01
Hình 2 7 Chức năng MixColumns
- Phép nhân với H01 thì giữ nguyên giá trị. Phép nhân với H02 tương đương với việc
dịch trái một bit và XOR có điều kiện như sau: •
Nếu bit MSB của giá trị được dịch bằng 1 thì giá trị sau khi dịch được XOR với H1b •
Nếu bit MSB của giá trị được dịch bằng 0 thì giữ giá trị saukhi dịch. lOMoAR cPSD| 60701415
Hình 2 8 Chi tiết về cách tính MixColumns tạo ra phần tử H04 từ cột 1
2.3.5. AddRoundKey (Cộng Khóa Vòng):
o Khóa vòng (Round Key) được tạo ra từ Khóa chính (Master Key) thông qua thủ tục
mở rộng khóa (Key Expansion) được kết hợp (thường là phép XOR) với ma
trận trạng thái hiện tại. Đây là bước duy nhất sử dụng Khóa trong mỗi vòng lặp.
- Chức năng AddRoundKey thực hiện ở:
Bước khởi tạo: XOR khóa mã với ma trận dữ liệu
Bước lặp mã hóa và bước tạo ngõ ra: XOR khóa vòng (round key) với ma trận trạng thái. lOMoAR cPSD| 60701415
Hình 2 9 Chức năng AddRoundKey cho bước khởi tạo
- Đối với bước lặp mã hóa và bước tạo ngõ ra, vị trí "khóa mã" là các "khóa vòng" còndữ
liệu là của lần tính trước đó.
- Lưu ý: Vòng lặp cuối cùng không thực hiện bước MixColumns.
2.3.6. Chức năng KeyExpansion
Chức năng KeyExpansion thực hiện tính toán khóa vòng cho bước lặp mã hóa và
bước tạo ngõ ra. Kết quả của một lần thực thi KeyExpansion là một khóa vòng sử dụng
cho chức năng AddRoundKey. Với mã hóa AES-128, số khóa vòng là 10 tương ứng với
9 lần AddRoundKey ở bước lặp mã hóa và 1 lần AddRoundKey ở bước tạo ngõ ra.
Chức năng KeyExpansion được thực hiện thông qua 4 chức năng là RotWord, SubWord, AddRcon và AddW. lOMoAR cPSD| 60701415
Hình 2 10 Chức năng KeyExpansion
- Mỗi khóa vòng có 128 bit được chia làm 4 word, mỗi word là 4 byte và ký hiệulà w[j]
với j là số nguyên. Mã hóa AES-128 có 1 khóa mã và 10 khóa vòng nên tổng số từ là
44 và được đánh số từ 0 đến 43. Khóa mã có 4 từ là w[0], w[1], w[2] và w[3]. Khóa
vòng 1 có 4 từ là w[4], w[5], w[6] và w[7]. Tương tự, khóa vòng 10 có 4 từ là w[40], w[41], w[42] và w[43].
Từ w[j] tính theo công thức sau, với 3 < j < 44.
w[j] = AddW[j - 4] = w[j - 1] + w[j - 4] w[j = 4 n] =
AddW[j - 4] = trans(w[j - 1])+ w[j - 4]
- Chú ý, khi tính các từ ở vị trí j là bội số của 4, như w[4], w[8],... và w[40], thì w[j-
1] phải được biến đổi qua 3 chức năng RotWord, SubWord và AddRcon, gọi là trans(w[j-
1]), trước khi XOR với w[j-4].
- Khóa mã key ở mục 1 được sử dụng để minh họa việc tính toán khóa vòng. Khóa mã
key[127:0] được chia làm 4 từ như biểu thức sau:
w[0] = 2b7e1516 w[1] = 28aed2a6 lOMoAR cPSD| 60701415
w[2] = abf71588 w[3] = 09cf4f3c
- Việc tính toán khóa vòng 1 là thực hiện tính 4 từ w[4], w[5], w[6] và w[7]. Để tính
khóa vòng 1, trans(w[3]) phải được tính trước thông qua 3 chức năng RotWord, SubWord và AddRcon.
w[4] = AddW[0] = trans(w[3])+ w[0]w[5] = AddW[1] = w[4]+ w[1]w[6]
= AddW[2] = w[5]+ w[2]w[7] = AddW[3] = w[6]+ w[3]
- Chức năng RotWord Chức năng RotWord thực hiện quay trái từ w[j] một byte.
Hình 2 11 Thực thi RotWord cho từ w[3]
- Chức năng SubWord thực hiện thay thế các phi tuyến từng byte của kết quả RotWord theo bảng S-box.
Hình 2 12 Thực thi SubWord khi chuyển đổi từ w[3]
- Chức năng AddRcon thực hiện XOR kết quả SubWord và giá trị Rcon[j/4] với j là bội
số của 4. Số lượng giá trị Rcon[j/4] là 10 tương ứng với 10 lần tính khóa vòng.
Chức năng AddRcon sẽ tạo ra kết quả cuối cùng của biến đổi trans(w[j-1]).
Rcon[j/4] Giá trị HEX Vị trí sử dụng
Rcon[1] 01000000 sử dụng cho trans(w[3]) khi tính w[4]
Rcon[2] 02000000 sử dụng cho trans(w[7]) khi tính w[8]
Rcon[3] 04000000 sử dụng cho trans(w[11]) khi tính w[12]
Rcon[4] 08000000 sử dụng cho trans(w[15]) khi tính w[16]
Rcon[5] 10000000 sử dụng cho trans(w[19]) khi tính w[20]