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
Lớp Tín chỉ: ATBMTT.03.K14.09.LH.C04.1_LT
ĐỀ 4: NGHIÊN CỨU VỀ MÃ HÓA VÀ GIẢI MÃ AFFINE
TRONG ỨNG DỤNG TRUYỀN NHẬN THÔNG TIN
Giảng viên giảng dạy: Lương Thái Lê
Danh sách sinh viên thực hiện:
TT
Mã sinh viên
Sinh viên thực hiện
Lớp hành chính
1
20220111
Trần Việt Đức
DCCNTT14.9
2
20233258
Nguyễn Thị Khanh
DCCNTT14.9
3
20233420
Nguyễn Thị Kim Oanh
DCCNTT14.9
4
20233453
Đỗ Phát Đạt
DCCNTT14.9
5
20233440
Doãn Hồng Đăng
DCCNTT14.9
Bắc Ninh, năm 2025
lOMoARcPSD| 60701415
LỜI NÓI ĐẦU
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, vấn đề bảo mật thông tin ngày
càng trở nên quan trọng và cấp thiết. Thông tin khi được truyền đi qua các hệ thống mạng
máy tính, mạng viễn thông hoặc các nh truyền khác luôn đứng trước nguy bị nghe
lén, sao chép hoặc chỉnh sửa trái phép. Do vậy, việc nghiên cứu các phương pháp hóa
giải thông tin nhằm đảm bảo tính mật, toàn vẹn xác thực một trong những
nội dung trọng tâm của lĩnh vực an toàn thông tin.
Trong lịch sử phát triển của mật học, nhiều phương pháp mã hóa cổ điển đã ra đời,
đóng vai tnền tảng cho sự hình thành phát triển của các thuật toán hóa hiện đại.
Một trong số đó hóa Affine (Affine Cipher) một dạng mật thay thế đơn giản
nhưng có cơ sở toán học ràng. Thuật toán Affine sử dụng phép biến đổi tuyến tính trên
các ký tự, kết hợp giữa nhân và cộng trong số học modulo để tạo ra bản mã từ bản rõ. Đây
phương pháp đơn giản nhưng lại mang ý nghĩa quan trọng trong việc giúp người học
nắm vững nguyên lý của mật mã cổ điển, từ đó làm cơ sở tiếp cận các hệ mã hiện đại.
Đề tài “Nghiên cứu về mã hóa và giải mã Affine trong ứng dụng truyền nhận thông tin”
được thực hiện với mục tiêu:
Tìm hiểu cơ sở lý thuyết của hệ mã Affine.
Phân tích các bước mã hóa và giải mã dựa trên công thức toán học.
Xây dựng chương trình thử nghiệm mã hóa - giải mã bằng Affine.
Ứng dụng vào phỏng quá trình truyền nhận thông tin có bảo mật giữa hai bên gửi nhận.
Việc nghiên cứu đề tài không chgiúp người thực hiện nắm bắt kiến thức về toán học trong
mật mã, còn hiểu được mối liên hệ giữa thuyết ứng dụng thực tế trong lĩnh vực
bảo mật dữ liệu. Đây cũng là bước khởi đầu quan trọng để tiếp cận các hệ mã hiện đại như
DES, AES, RSA, vốn đang được sử dụng rộng rãi trong các hệ thống thông tin trên toàn
cầu.
lOMoARcPSD| 60701415
Trong quá trình thực hiện, mặc dù đã cố gắng tìm hiểu và trình bày một cách chi tiết, song
do hạn chế về thời gian kiến thức, bài báo cáo chắc chắn không tránh khỏi thiếu sót.
Nhóm rất mong nhận được sự góp ý của thầy cô và bạn bè để hoàn thiện đề tài tt hơn.
Xin chân thành cảm ơn sự hướng dẫn tận tình của thầy/cô giảng viên bộ môn cùng sự hỗ
trợ từ bạn bè trong quá trình học tập và nghiên cứu, giúp nhóm em hoàn thành bài báo cáo
này.
lOMoARcPSD| 60701415
MỤC LỤC
LỜI NÓI ĐẦU..................................................................................................................2
MỤC LỤC.........................................................................................................................4
BẢNG PHÂN CÔNG........................................................................................................6
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI...............................................7
1.1. Bối cảnh và lý do chọn đề tài.................................................................................7
1.2. Mục tiêu và nội dung nghiên cứu..........................................................................8
1.3. Mục đích của đề tài................................................................................................8
1.4. Ý nghĩa khoa học và thực tiễn...............................................................................9
1.5. Phạm vi, phương pháp nghiên cứu.......................................................................9
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI MÃ AFFINE......11
2.1. Tổng quan về mật mã học cổ điển.........................................................................11
2.2. Giới thiệu đầu vào – đầu ra của bài toán..............................................................11
2.3. Cơ sở lý thuyết.......................................................................................................12
2.3.1. Lý thuyết về mật mã Affine Cipher..............................................................................12
2.3.2. Số học Mô-đun và Vành số nguyên Zm.......................................................................12
2.3.3. Hàm mã hóa và giải mã...............................................................................................13
2.3.4. Ví dụ cụ thể..................................................................................................................13
2.3.4. Tính chất toán học của hàm Affine..............................................................................14
2.5. Phân tích hệ mã Affine..........................................................................................15
2.5.1. Ưu điểm........................................................................................................................15
2.5.2. Hạn chế và lỗ hổng bảo mật........................................................................................15
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH.................................................................17
3.1. Giới thiệu về chương trình....................................................................................17
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài......................................17
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng......................................................18
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng.................................................................19
lOMoARcPSD| 60701415
3.2.3. Sự cộng hưởng giữa C# và WinForms........................................................................20
3.3 Giao diện phần mềm..............................................................................................20
3.3.1. Giao diện trang Đăng nhập.........................................................................................20
3.3.2. Giao diện chính của chương trình...............................................................................21
3.3.3. Trang hướng dẫn sử dụng............................................................................................22
KẾT LUẬN.....................................................................................................................23
1. Tổng kết các kết quả đạt
được..................................................................................23
2. Đánh giá ưu điểm và nhược
điểm.............................................................................23
2.1. Ưu điểm...........................................................................................................................23
2.2. Nhược điểm.....................................................................................................................24
3. Hướng phát triển trong tương
lai.............................................................................24 TÀI LIỆU THAM
KHẢO.............................................................................................26
lOMoARcPSD| 60701415
BẢNG PHÂN CÔNG
ST
T
Tên
1
Trần Việt Đức
2
Nguyễn Thị Khanh
3
Nguyễn Thị Kim Oanh
4
Đỗ Phát Đạt
5
Doãn Hồng Đăng
lOMoARcPSD| 60701415
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
1.1. Bối cảnh và lý do chọn đề tài
Trong bối cảnh của cuộc Cách mạng Công nghiệp lần thứ tư, thông tin đã trở thành một
dạng tài sản giá yếu tố cốt lõi quyết định sự thành công của các tổ chức, doanh
nghiệp cũng như nhân. Dữ liệu được trao đổi liên tục trên các hạ tầng mạng phức tạp,
từ mạng Internet toàn cầu đến các hệ thống mạng nội bộ thiết bị di động, mang lại những
lợi ích to lớn về hiệu suất và khả năng kết nối. Tuy nhiên, sự phát triển này cũng đồng thời
tạo ra những thách thức chưa từng về an toàn bảo mật thông tin. Dữ liệu trong quá
trình truyền nhận luôn phải đối mặt với các nguy bị truy cập, nghe lén, sao chép hoặc
thay đổi trái phép từ các tác nhân có chủ đích xấu.
Để đối phó với những rủi ro này, Mật học (Cryptography) đã ra đời phát triển như
một ngành khoa học chuyên nghiên cứu các phương pháp bảo vệ thông tin. Lịch sử mật
học có thể được chia thành hai giai đoạn chính: mật học cổ điển và mật học hiện
đại. Trong khi các hệ mã hiện đại như AES, RSA được xây dựng trên các cấu trúc toán học
phức tạp và khả năng chống lại các cuộc tấn công bằng máy tính lượng tử, thì c hệ
mã cổ điển vẫn giữ một vai trò không thể thiếu trong lĩnh vực giáo dục và nghiên cứu.
hóa Affine (Affine Cipher) một đại diện tiêu biểu của trường phái mật cổ điển,
thuộc lớp mật mã thay thế đơn bảng (Monoalphabetic Substitution Cipher). Dù không còn
được sử dụng trong các ứng dụng đòi hỏi bảo mật cao, việc nghiên cứu mã Affine mang
lại giá trị học thuật to lớn. một cầu nối ởng, giúp người học chuyển tiếp từ những
khái niệm mật khai đến việc nắm bắt các nguyên toán học nền tảng như số học
-đun (modular arithmetic), tính khả nghịch của một phần tử trong một vành hữu hạn,
vai trò của ước chung lớn nhất (GCD) trong việc đảm bảo tính toàn vẹn của qtrình
giải mã. Vì những lý do trên, việc thực hiện đề tài
“Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin” là hoàn
toàn cần thiết và phù hợp, không chỉ để hoàn thành học phần mà còn để xây dựng một nền
tảng kiến thức vững chắc cho các lĩnh vực chuyên sâu hơn về an toàn thông tin.
lOMoARcPSD| 60701415
1.2. Mục tiêu và nội dung nghiên cứu
Đề tài được thực hiện nhằm đạt được các mục tiêu chính sau đây:
+ Nghiên cứu hệ thống hóa sở thuyết: Phân tích sâu sắc nền tảng toán học
nguyên lý hoạt động của hệ mã Affine. Trọng tâm là làm rõ các khái niệm về hàm biến đổi
tuyến tính trên vành snguyên Zm, điều kiện tồn tại nghịch đảo -đun thuật toán
Euclid mở rộng.
+ Thiết kế cài đặt thuật toán: Xây dựng các thuật toán hóa và giải mã Affine một
cách hoàn chỉnh và hiệu quả bằng ngôn ngữ lập trình. Chương trình phải khả năng xử
lý chuỗi ký tự, kiểm tra tính hợp lệ của khóa và đảm bảo tính chính xác của kết qu.
+ Xây dựng ứng dụng minh họa: Phát triển một ng dụng phần mềm phỏng quá trình
truyền nhận thông tin an toàn giữa hai bên (bên gửi và bên nhận) sử dụng mã Affine. Ứng
dụng này phục vnhư một công cụ trực quan để kiểm chứng lý thuyết thuật toán đã
nghiên cứu.
+ Phân tích và đánh giá: Đưa ra những đánh giá khách quan về ưu điểm, nhược điểm và độ
an toàn của hệ Affine trong bối cảnh thuyết mật hiện đại. So sánh hiệu quả của
Affine với các hệ cổ điển khác như Caesar Vigenère đlàm nổi bật vị trí đặc điểm
của nó.
1.3. Mục đích của đề tài
Đề tài này hướng đến việc nghiên cứu chuyên sâu về phương pháp hóa giải mã
Affine, từ lý thuyết nền tảng đến ứng dụng thực tiễn trong quá trình truyền nhận thông tin.
Cụ thể, các mục tiêu chính bao gồm:
+ Phân tích nguyên hoạt động của hóa Affine dựa trên cơ sở toán học của hàm tuyến
tính trong tập hợp số nguyên modulo.
+ Xây dựng quy trình mã hóa và giải mã Affine một cách hệ thống, có thể áp dụng cho các
chuỗi ký tự bất kỳ.
+ Đánh giá tính bảo mật của phương pháp Affine trong bối cảnh hiện đại, so sánh với các
phương pháp mã hóa khác.
lOMoARcPSD| 60701415
+ Đề xuất một số ứng dụng cụ thể của Affine trong truyền nhận thông tin, đặc biệt là trong
các hệ thống giáo dục, truyền thông nội bộ hoặc các hệ thống có yêu cầu bảo mật thấp.
1.4. Ý nghĩa khoa học và thực tiễn
Về mặt khoa học, nghiên cứu này góp phần làm hơn các nguyên toán học đằng
sau một phương pháp hóa cổ điển, từ đó tạo nền tảng cho việc tiếp cận các thuật toán
hóa phức tạp hơn như RSA, AES hay ECC. Việc hiểu rõ Affine cũng giúp người học
nắm bắt được bản chất của các phép biến đổi tuyến tính, một khái niệm quan trọng trong
nhiều lĩnh vực như mật mã học, xử lý tín hiệu, học máy và trí tuệ nhân tạo.
Về mặt thực tiễn, phương pháp mã hóa Affine có thể được ứng dụng trong các hệ thống
truyền thông đơn giản, nơi yêu cầu bảo mật không quá cao nhưng vẫn cần đảm bảo tính
riêng tính toàn vẹn của dữ liệu. Ngoài ra, Affine còn thể được sử dụng trong c
trò chơi giáo dục, phần mềm học tập hoặc các ứng dụng mang tính minh họa cho sinh viên
ngành công nghệ thông tin, toán học ứng dụng và an toàn thông tin.
1.5. Phạm vi, phương pháp nghiên cứu
Phạm vi nghiên cứu của đề tài tập trung vào:
+ hóa và giải Affine trên tập tự tiếng Anh (ASCII), thể mở rộng sang Unicode
nếu cần.
+ Ứng dụng Affine trong môi trường truyền nhận thông tin giả lập, ví dụ như giữa hai máy
tính hoặc qua giao diện web đơn giản.
+ Đánh giá hiệu năng độ bảo mật của Affine thông qua phân tích thuyết thử nghiệm
thực tế.
+ Phương pháp nghiên cứu bao gồm: phân tích tài liệu tổng hợp các công trình nghiên cứu
liên quan đến mã hóa Affine và các phương pháp mã hóa cổ điển.
Phương pháp nghiên cứu:
Nghiên cứu tài liệu, giáo trình, sách và tài nguyên trực tuyến về mật mã học.
Viết thuật toán mô phỏng bằng lập trình.
lOMoARcPSD| 60701415
Thử nghiệm thực tế: truyền nhận thông tin giữa hai hệ thống giả lập để kiểm tra tính hiệu
quả và độ chính xác của thuật toán.
Đánh giá và so sánh: phân tích ưu nhược điểm của Affine so với các phương pháp mã hóa
khác như Caesar, Vigenère, hoặc các thuật toán hiện đại.
lOMoARcPSD| 60701415
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI
AFFINE
2.1. Tổng quan về mật mã học cổ điển
Mật mã học cổ điển là thuật ngữ dùng để chỉ các hệ thống mật mã được phát triển và
sử dụng từ thời cổ đại cho đến trước khi máy tính kỹ thuật số ra đời (khoảng đầu thế kỷ
20). Các hệ y chyếu hoạt động dựa trên các thao tác đơn giản với tự không
đòi hỏi các tính toán phức tạp. Chúng được phân thành hai loại chính:
hóa thay thế (Substitution Ciphers): Nguyên tắc bản thay thế mỗi tự hoặc nhóm
ký tự trong bản rõ bằng một ký tự hoặc nhóm ký tự khác theo một quy tắc nhất định.
Mã thay thế đơn bảng (Monoalphabetic): Một quy tắc thay thế duy nhất được áp dụng cho
toàn bộ thông điệp. Ví dụ điển hình là
Mã Caesar (quy tắc là phép cộng) và mã Affine (quy tắc là một hàm tuyến tính).
thay thế đa bảng (Polyalphabetic): Sử dụng nhiều quy tắc thay thế khác nhau một cách
tuần hoàn.
Vigenère là ví dụ nổi tiếng nhất, giúp khắc phục điểm yếu về phân tích tần suất của mã
đơn bảng.
Mã hóa hoán vị (Transposition Ciphers): Nguyên tắc là giữ nguyên các ký tự trong bản
nhưng sắp xếp lại vị trí của chúng theo một quy tắc hoán vị xác định.
hóa Affine, đối tượng nghiên cứu của đề tài này, được xem một sự cải tiến tổng
quát hóa của mã Caesar, mang đến một không gian khóa lớn hơn và cấu trúc toán học thú
vị hơn.
2.2. Giới thiệu đầu vào – đầu ra của bài toán
Để xây dựng một chương trình mã hóa và giải mã theo thuật toán Affine Cipher, trước
hết cần xác định rõ đầu vào và đầu ra của bài toán:
- Đầu vào:
+ Bản rõ (Plaintext): chuỗi ký tự thông tin cần mã hóa.
lOMoARcPSD| 60701415
+ Khóa bí mật (Key): gồm hai thành phần:
+ a: hệ số nhân (phải thỏa mãn điều kiện gcd (a, m) = 1 để có nghịch đảo modulo).
+ b: hệ số cộng (một số nguyên tùy chọn).
+ Bảng chữ cái (Alphabet): thông thường chọn bảng chữ cái tiếng Anh 26 ký tự (A–Z)
hoặc có thể mở rộng để bao gồm cả chữ thường, chữ số và ký tự đặc biệt.
- Đầu ra:
+ Bản mã (Ciphertext) khi thực hiện quá trình mã hóa.
+ Bản rõ khôi phục được (Decrypted text) khi thực hiện giải mã.
2.3. Cơ sở lý thuyết
2.3.1. Lý thuyết về mật mã Affine Cipher
Mã hóa Affine Cipher là một dạng mã thay thế đơn bảng (monoalphabetic substitution
cipher), trong đó mỗi tự của bản được ánh xạ thành một tự khác dựa trên công
thức toán học. sở toán học của hệ Affine nằm trong một lĩnh vực của toán học gọi
là Số học Mô-đun (Modular Arithmetic).
Đây là sự mở rộng của Caesar Cipher (chỉ dịch chuyển ký tự), kết hợp thêm phép nhân và
phép cộng để tăng độ phức tạp.
2.3.2. Số học Mô-đun và Vành số nguyên Zm
Số học mô-đun là một hệ thống số học cho các số nguyên, nơi các số "quay vòng" sau
khi đạt đến một giá trị nhất định gọi là mô-đun (modulus) m. Ta nói hai số nguyên x y
là đồng dư (congruent) theo mô-đun m, ký hiệu x ≡ y (mod m), nếu hiệu của chúng (x − y)
là một bội của m.
Tập hợp các số dư khi chia cho m, {0,1,2,…,m − 1}, cùng với hai phép toán cộng và nhân
-đun tạo thành một cấu trúc đại số gọi vành các lớp đồng mô-đun m, hiệu
Zm. Mã Affine hoạt động chính trên vành Z26 (với m = 26 tương ứng 26 chữ cái).
2.3.3. Hàm mã hóa và giải mã
Để làm việc với các ký tự, chúng ta thiết lập một ánh xạ số: A 0, B ↔ 1, ..., Z ↔ 25.
lOMoARcPSD| 60701415
1. Hàm mã hóa (Encryption Function): Với một khóa k = (a,b) K, ký tự bản rõ P
giá trị số là x sẽ được mã hóa thành ký tự bản mã C có giá trị số là y theo công thức:
y = Ek(x) ≡ (ax + b) (mod 26)
Trong đó:
a và b là hai số nguyên tạo thành khóa mã hóa.
a phải thỏa mãn điều kiện: gcd(a, m) = 1 để đảm bảo hàm có thể đảo ngược.
m số lượng tự trong bảng chữ cái (ví dụ: m = 26 trong bảng chữ cái tiếng Anh).
Đây là một phép biến đổi Affine trên vành Z26.
2. Hàm giải mã (Decryption Function): Để giải mã, ta cần tìm lại x từ y. Từ công thức
mãhóa, ta có:
ax ≡ (y − b) (mod 26)
Để giải phương trình này cho x, ta cần nhân cả hai vế với nghịch đảo nhân -đun (modular
multiplicative inverse) của a, ký hiệu là a ¹. Phần tử a ¹ là một số trong Z 26 sao cho a *
a ¹ ≡ 1 (mod26).
Nghịch đảo này chỉ tồn tại khi chỉ khi a m hai số nguyên tố cùng nhau, tức
gcd(a,m) = 1. Đây chính là lý do cho điều kiện của khóa a.
Khi đó, công thức giải mã là:
x = Dk(y) ≡ a ¹ (y − b) (mod 26)
Nghịch đảo a ¹ thường được tìm bằng Thuật toán Euclid mở rộng.
2.3.4. Ví dụ cụ thể
Cho bản rõ: HELLO
Khóa: k = (a,b) = (5,8). Ta kiểm tra: gcd(5,26) = 1, vậy khóa hợp lệ.
Quá trình mã hóa:
H (giá trị 7) → y = (5 × 7 + 8)(mod26) = 43 (mod26) = 17 → R
lOMoARcPSD| 60701415
E (giá trị 4) → y = (5 × 4 + 8)(mod26) = 28 (mod26) = 2→ C
L (giá trị 11) → y = (5 × 11 + 8)(mod26) = 63 (mod26) = 11 → L
L (giá trị 11) → L
O (giá trị 14) → y = (5 × 14 + 8)(mod26) = 78 (mod26) = 0 → A
Kết quả bản mã: RCLLA
Quá trình giải mã:
Bước 1: Tìm nghịch đảo a ¹. Ta cần tìm 5
-1
(mod26). Bằng thuật toán Euclid mrộng (hoặc
thử trực tiếp), ta thấy 5 × 21 = 105 = 4 × 26 + 1, vậy 5 × 21 ≡ 1 (mod26). Do đó, a ¹ = 21.
Bước 2: Áp dụng công thức giải mã.
R (giá trị 17) → x = 21 × (17−8)(mod26) = 21 × 9(mod26) = 189(mod26) = 7→ H
C (giá trị 2) → x = 21 × (2−8)(mod26) = 21 × (−6)(mod26) = −126(mod26). Vì −126 = −5
× 26 + 4, nên −126 ≡ 4(mod26)→ E.
L (giá trị 11) → x = 21 × (11−8)(mod26) = 21 × 3(mod26) = 63(mod26) = 11→ L.
L (giá trị 11) → L.
A (giá trị 0) → x = 21 × (0−8)(mod26) = −168(mod26). Vì −168 = −7 × 26 + 14, nên −168
≡ 14(mod26) → O.
Kết quả bản rõ khôi phục: HELLO.
2.3.4. Tính chất toán học của hàm Affine
Hàm Affine là một dạng hàm tuyến tính có dạng:
f(x) = a * x + b
Trong không gian số nguyên modulo, hàm này có các tính chất sau:
Tính đơn ánh: Nếu gcd(a,m) = 1, hàm đơn ánh, tức mỗi đầu vào ánh xạ đến một đầu
ra duy nhất.
Tính đảo ngược: Có thể xây dựng hàm ngược để giải mã.
lOMoARcPSD| 60701415
Tính chu kỳ: làm việc trong modulo mm, hàm tính chu kỳ, tức sau mm bước sẽ
lặp lại.
2.5. Phân tích hệ mã Affine
2.5.1. Ưu điểm
Tính đơn giản và hiệu quả tính toán: Thuật toán chỉ sử dụng các phép toán số học cơ bản,
giúp việc cài đặt trở nên dễ dàng và tốc độ xử lý rất nhanh, không yêu cầu tài nguyên tính
toán lớn.
Nền tảng toán học rõ ràng: Cấu trúc của mã Affine dựa trên các khái niệm bản của
thuyết số và đại số tuyến tính, là một ví dụ minh họa xuất sắc cho việc ứng dụng toán học
vào mật mã.
An toàn hơn Caesar: Không gian khóa của Affine 12 × 26 = 312 (với 12 giá trị
hợp lệ cho a). Con số này lớn hơn đáng kể so với 25 khóa của Caesar, khiến việc tấn
công bằng phương pháp thử-sai (brute-force) trở nên khó khăn hơn một chút.
2.5.2. Hạn chế và lỗ hổng bảo mật
Mặc những ưu điểm trên, Affine được xem một hệ rất yếu không an toàn
trong thực tế.
Dễ bị tấn ng vét cạn (Brute-force Attack): Với năng lực của máy tính hiện đại, việc thử
qua toàn bộ 312 khóa chỉ mất một khoảng thời gian cực ngắn (vài mili giây).
Dễ bị tấn công phân tích tần suất (Frequency Analysis Attack): Đây là điểm yếu chí mạng
của mọi hệ mã thay thế đơn bảng. Vì mỗi ký tự bản rõ luôn được ánh xạ đến một ký tự bản
duy nhất, cấu trúc tần suất của ngôn ngữ gốc vẫn được bảo toàn trong bản mã. dụ,
trong tiếng Anh, 'E' tự phổ biến nhất. Kẻ tấn công chỉ cần tìm tự xuất hiện nhiều
nhất trong bản mã, giả định đó là 'E', và từ đó thiết lập một hệ phương trình để tìm ra khóa
(a,b).
lOMoARcPSD| 60701415
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH
3.1. Giới thiệu về chương trình
Tên chương trình: hóa AFFINE
Chức năng: Chương trình cho phép người dùng nhập vào một đoạn văn bản (plaintext),
một cặp khóa (a,b) hợp lệ, sau đó thực hiện mã hóa để tạo ra bản mã (ciphertext) hoặc
ngược lại, giải mã một bản mã để khôi phục bản rõ. Cách hoạt động:
Người dùng khởi chạy chương trình.
Nhập văn bản cần mã hóa vào ô 'Plain Text'.
Nhập giá trị khóa a b vào các ô tương ứng. Chương trình sẽ kiểm tra tính hợp lệ của a
(gcd(a,26)=1).
Nhấn nút "Encrypt" để mã hóa
Dán văn bản mã hóa vào ô 'Cipher Text' để giải mã.
Nhấn 'Decrypt' để lấy lại văn bản gốc.
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài
Trong khuôn khổ thực hiện đề tài, việc lựa chọn nền tảng công nghệ phù hợp một
trong những yếu tố tiên quyết, quyết định đến sự thành công của sản phẩm. Đối với đề tài
"Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin", sự kết
hợp giữa ngôn ngữ lập trình C# nền tảng giao diện người ng Windows Forms
(WinForms) đã được lựa chọn. Lựa chọn y dựa trên những ưu điểm vượt trội về hiệu
năng, tính cấu trúc và khả năng phát triển nhanh, đáp ứng đầy đủ các yêu cầu từ logic thuật
toán đến giao diện tương tác người dùng. Nội dung sau đây sẽ trình y chi tiết về hai công
nghệ này và lý giải sự phù hợp của chúng trong bối cảnh của đề tài.
lOMoARcPSD| 60701415
Hình 3. Ngôn ngữ C# và nền tảng .NET Framework
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng
C# một ngôn ngữ lập trình hiện đại, hướng đối tượng, và an toàn về kiểu (type-safe)
được phát triển bởi Microsoft và một phần không thể thiếu của nền tảng .NET. Trong đề
tài này, C# đóng vai trò là "bộ não" trung tâm, chịu trách nhiệm xử lý toàn bộ logic nghiệp
vụ, đặc biệt các thuật toán hóa giải mã Affine. Các đặc tính nổi bật của C# phù
hợp với đề tài:
Kiến trúc Lập trình Hướng đối tượng (OOP): Đây ưu điểm học thuật quan trọng nhất.
Thuật toán Affine có thể được trừu tượng hóa và đóng gói một cách hoàn hảo vào một lớp
(class) trong C#, ví dụ như lớp AffineCipher.
Tính đóng gói (Encapsulation): Lớp AffineCipher thể chứa các thuộc tính (properties)
như KeyA, KeyB, Alphabet (bảng chữ cái sử dụng) các phương thức (methods) như
Encrypt(string plaintext), Decrypt(string ciphertext). Điều này che giấu sự phức tạp ca
việc triển khai thuật toán bên trong, giúp mã nguồn trở nên sạch sẽ, dễ quản lý và bảo trì.
Tính module hóa: Việc xây dựng các lớp riêng biệt cho logic a giúp ddàng tái sử
dụng và tích hợp vào các phần khác của ứng dụng mà không gây ảnh hưởng.
Hỗ trợ mạnh mẽ cho các Kiểu dữ liệu và Toán tử: Thuật toán Affine về bản chất là một tập
hợp các phép toán số học trên các con số nguyên.
Công thức mã hóa: C = (a * P + b) (mod m)
lOMoARcPSD| 60701415
Công thức giải mã: P = a
-1
* (C − b) (mod m) C# cung cấp các kiểu dữ liệu số nguyên mạnh
mẽ (int, long) các toán tử số học (+, -, *) cần thiết. Đặc biệt, toán tmodulo (%) ng
cụ cốt lõi để thực hiện phép toán đồng dư, vốn trái tim của thuật toán Affine. Việc tìm
nghịch đảo modular (a
−1
) cũng có thể được triển khai dễ ng thông qua các hàm toán học.
Khả năng xử lý Chuỗi và tự ưu việt: Ứng dụng cần xử lý thông điệp đầu vào (plaintext)
đầu ra (ciphertext) dưới dạng chuỗi văn bản. C# cung cấp lớp string kiểu char với
một hệ thống phương thức phong phú để lặp qua từng tự, chuyển đổi chữ hoa/ch
thường (ToUpper(), ToLower()), xây dựng chuỗi kết quả một cách hiệu quả, giúp cho
việc ánh xạ ký tự sang số và ngược lại trở nên đơn giản.
An toàn kiểu: C# ngôn ngữ an toàn kiểu, giúp giảm thiểu các lỗi tiềm ẩn liên quan đến
việc chuyển đổi sai kiểu dữ liệu (ví dụ: nhầm lẫn giữa số và ký tự). Điều này đảm bảo tính
toàn vẹn và chính xác của thuật toán, một yếu tố cực kỳ quan trọng trong lĩnh vực mật mã.
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng
Windows Forms một framework giao diện người dùng đồ họa (GUI) nằm trong .NET
Framework, cho phép các nhà phát triển tạo ra các ứng dụng máy tính để bàn (desktop
application) cho hệ điều hành Windows. Trong đề tài này, WinForms đóng vai trò "bộ
mặt", là cầu nối trực quan cho phép người dùng cuối tương tác với logic mã hóa do C# xử
lý. Vậy tại sao WinForms là lựa chọn tối ưu cho giao diện của đề tài:
Xây dựng Giao diện người dùng trực quan (GUI): Mục tiêu của đề tài tạo ra một "ứng
dụng truyền nhận thông tin". Điều này đòi hỏi phải một giao diện rõ ràng để người dùng
có thể:
Nhập văn bản cần mã hóa (plaintext).
Nhập các khóa (khóa a, khóa b).
Thực hiện hành động mã hóa hoặc giải mã.
Xem kết quả (ciphertext) sao chép nó. WinForms cung cấp một bộ công cụ (toolbox)
đầy đủ các điều khiển (controls) nTextBox (để nhập liệu), Button (để kích hoạt sự kiện),
lOMoARcPSD| 60701415
Label (để hiển thị nhãn kết quả), giúp việc thiết kế giao diện này trở nên nhanh chóng
và dễ dàng thông qua trình thiết kế kéo - thả (drag - and - drop) của Visual Studio.
hình Lập trình Hướng sự kiện (Event - Driven Programming): Đây hình hoạt
động cốt lõi của WinForms. Giao diện người dùng sẽ "chờ" các nh động từ người dùng
(sự kiện). dụ, khi người dùng nhấn vào nút "Mã hóa", sự kiện Button_Click sẽ được
kích hoạt. Lập trình viên sẽ viết mã C# trong trình xửsự kiện này để lấy dữ liệu từ các
TextBox, gọi phương thức Encrypt() từ lớp AffineCipher, và cuối cùng hiển thị kết quả ra
một TextBox hoặc Label khác. Mô nh này giúp tách biệt rõ ràng giữa phần giao diện (UI)
và phần xử lý logic (business logic), tuân thủ các nguyên tắc thiết kế phần mềm tốt.
Phát triển Ứng dụng Nhanh (Rapid Application Development - RAD): Đối với một đề tài
nghiên cứu có quy mô vừa phải, việc tập trung vào thuật toán cốt lõi là quan trọng hơn việc
xây dựng một giao diện phức tạp. WinForms cho phép phát triển giao diện một cách cực
kỳ nhanh chóng, giúp người thực hiện đề tài tiết kiệm thời gian công sức để tập trung
vào phần nghiên cứu và triển khai thuật toán mã hóa Affine.
3.2.3. Sự cộng hưởng giữa C# và WinForms
Sự kết hợp giữa C# WinForms không chỉ đơn thuần ghép nối hai công nghệ,
một sự cộng hưởng hoàn hảo trong ng một hệ sinh thái .NET được htrợ bởi i trường
phát triển tích hợp (IDE) Visual Studio.
C# cung cấp sức mạnh tính toán, cấu trúc logic chặt chẽ để triển khai chính xác các yêu
cầu toán học phức tạp của thuật toán Affine.
WinForms cung cấp một phương tiện trực quan, thân thiện để người dùng có thể khai thác
và kiểm chứng sức mạnh của thuật toán đó mà không cần phải tương tác với các dòng lệnh
phức tạp.
Nói một cách hình ảnh, C# là cỗ máy mạnh mẽ bên trong, thực hiện mọi phép tính mã hóa
và giải mã. Trong khi đó, WinForms là bảng điều khiển với các nút bấm và màn hình hiển
thị, cho phép người dùng dễ dàng điều khiển cỗ máy đó.
lOMoARcPSD| 60701415
3.3 Giao diện phần mềm
3.3.1. Giao diện trang Đăng nhập
Người dùng sẽ đăng nhập tài khoản, mật khẩu để vào được chương trình.
Hình 3.3.1. Giao diện Đăng nhập vào chương trình
3.3.2. Giao diện chính của chương trình
Ở đây người dùng nhập văn bản, nhập khóa a,b.
Chương trình kiểm tra tính hợp lệ của a.
Thực hiện mã hóa/giải mã và in kết quả ra màn hình.

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
Lớp Tín chỉ: ATBMTT.03.K14.09.LH.C04.1_LT
ĐỀ 4: NGHIÊN CỨU VỀ MÃ HÓA VÀ GIẢI MÃ AFFINE
TRONG ỨNG DỤNG TRUYỀN NHẬN THÔNG TIN
Giảng viên giảng dạy: Lương Thái Lê
Danh sách sinh viên thực hiện: TT Mã sinh viên
Sinh viên thực hiện Lớp hành chính 1 20220111 Trần Việt Đức DCCNTT14.9 2 20233258 Nguyễn Thị Khanh DCCNTT14.9 3 20233420 Nguyễn Thị Kim Oanh DCCNTT14.9 4 20233453 Đỗ Phát Đạt DCCNTT14.9 5 20233440 Doãn Hồng Đăng DCCNTT14.9 Bắc Ninh, năm 2025 lOMoAR cPSD| 60701415 LỜI NÓI ĐẦU
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, vấn đề bảo mật thông tin ngày
càng trở nên quan trọng và cấp thiết. Thông tin khi được truyền đi qua các hệ thống mạng
máy tính, mạng viễn thông hoặc các kênh truyền khác luôn đứng trước nguy cơ bị nghe
lén, sao chép hoặc chỉnh sửa trái phép. Do vậy, việc nghiên cứu các phương pháp mã hóa
và giải mã thông tin nhằm đảm bảo tính bí mật, toàn vẹn và xác thực là một trong những
nội dung trọng tâm của lĩnh vực an toàn thông tin.
Trong lịch sử phát triển của mật mã học, nhiều phương pháp mã hóa cổ điển đã ra đời,
đóng vai trò nền tảng cho sự hình thành và phát triển của các thuật toán mã hóa hiện đại.
Một trong số đó là mã hóa Affine (Affine Cipher) – một dạng mật mã thay thế đơn giản
nhưng có cơ sở toán học rõ ràng. Thuật toán Affine sử dụng phép biến đổi tuyến tính trên
các ký tự, kết hợp giữa nhân và cộng trong số học modulo để tạo ra bản mã từ bản rõ. Đây
là phương pháp đơn giản nhưng lại mang ý nghĩa quan trọng trong việc giúp người học
nắm vững nguyên lý của mật mã cổ điển, từ đó làm cơ sở tiếp cận các hệ mã hiện đại.
Đề tài “Nghiên cứu về mã hóa và giải mã Affine trong ứng dụng truyền nhận thông tin”
được thực hiện với mục tiêu:
Tìm hiểu cơ sở lý thuyết của hệ mã Affine.
Phân tích các bước mã hóa và giải mã dựa trên công thức toán học.
Xây dựng chương trình thử nghiệm mã hóa - giải mã bằng Affine.
Ứng dụng vào mô phỏng quá trình truyền nhận thông tin có bảo mật giữa hai bên gửi nhận.
Việc nghiên cứu đề tài không chỉ giúp người thực hiện nắm bắt kiến thức về toán học trong
mật mã, mà còn hiểu được mối liên hệ giữa lý thuyết và ứng dụng thực tế trong lĩnh vực
bảo mật dữ liệu. Đây cũng là bước khởi đầu quan trọng để tiếp cận các hệ mã hiện đại như
DES, AES, RSA, vốn đang được sử dụng rộng rãi trong các hệ thống thông tin trên toàn cầu. lOMoAR cPSD| 60701415
Trong quá trình thực hiện, mặc dù đã cố gắng tìm hiểu và trình bày một cách chi tiết, song
do hạn chế về thời gian và kiến thức, bài báo cáo chắc chắn không tránh khỏi thiếu sót.
Nhóm rất mong nhận được sự góp ý của thầy cô và bạn bè để hoàn thiện đề tài tốt hơn.
Xin chân thành cảm ơn sự hướng dẫn tận tình của thầy/cô giảng viên bộ môn cùng sự hỗ
trợ từ bạn bè trong quá trình học tập và nghiên cứu, giúp nhóm em hoàn thành bài báo cáo này. lOMoAR cPSD| 60701415 MỤC LỤC
LỜI NÓI ĐẦU..................................................................................................................2
MỤC LỤC.........................................................................................................................4
BẢNG PHÂN CÔNG........................................................................................................6
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI...............................................7
1.1. Bối cảnh và lý do chọn đề tài.................................................................................7
1.2. Mục tiêu và nội dung nghiên cứu..........................................................................8
1.3. Mục đích của đề tài................................................................................................8
1.4. Ý nghĩa khoa học và thực tiễn...............................................................................9
1.5. Phạm vi, phương pháp nghiên cứu.......................................................................9
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI MÃ AFFINE......11
2.1. Tổng quan về mật mã học cổ điển.........................................................................11
2.2. Giới thiệu đầu vào – đầu ra của bài toán..............................................................11
2.3. Cơ sở lý thuyết.......................................................................................................12
2.3.1. Lý thuyết về mật mã Affine Cipher..............................................................................12
2.3.2. Số học Mô-đun và Vành số nguyên Zm.......................................................................12
2.3.3. Hàm mã hóa và giải mã...............................................................................................13
2.3.4. Ví dụ cụ thể..................................................................................................................13
2.3.4. Tính chất toán học của hàm Affine..............................................................................14
2.5. Phân tích hệ mã Affine..........................................................................................15
2.5.1. Ưu điểm........................................................................................................................15
2.5.2. Hạn chế và lỗ hổng bảo mật........................................................................................15
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH.................................................................17
3.1. Giới thiệu về chương trình....................................................................................17
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài......................................17
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng......................................................18
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng.................................................................19 lOMoAR cPSD| 60701415
3.2.3. Sự cộng hưởng giữa C# và WinForms........................................................................20
3.3 Giao diện phần mềm..............................................................................................20
3.3.1. Giao diện trang Đăng nhập.........................................................................................20
3.3.2. Giao diện chính của chương trình...............................................................................21
3.3.3. Trang hướng dẫn sử dụng............................................................................................22
KẾT LUẬN.....................................................................................................................23
1. Tổng kết các kết quả đạt
được..................................................................................23
2. Đánh giá ưu điểm và nhược
điểm.............................................................................23
2.1. Ưu điểm...........................................................................................................................23
2.2. Nhược điểm.....................................................................................................................24
3. Hướng phát triển trong tương
lai.............................................................................24 TÀI LIỆU THAM
KHẢO.............................................................................................26 lOMoAR cPSD| 60701415 BẢNG PHÂN CÔNG ST Tên Công việc T 1 Trần Việt Đức 2 Nguyễn Thị Khanh 3 Nguyễn Thị Kim Oanh 4 Đỗ Phát Đạt 5 Doãn Hồng Đăng lOMoAR cPSD| 60701415
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
1.1. Bối cảnh và lý do chọn đề tài
Trong bối cảnh của cuộc Cách mạng Công nghiệp lần thứ tư, thông tin đã trở thành một
dạng tài sản vô giá và là yếu tố cốt lõi quyết định sự thành công của các tổ chức, doanh
nghiệp cũng như cá nhân. Dữ liệu được trao đổi liên tục trên các hạ tầng mạng phức tạp,
từ mạng Internet toàn cầu đến các hệ thống mạng nội bộ và thiết bị di động, mang lại những
lợi ích to lớn về hiệu suất và khả năng kết nối. Tuy nhiên, sự phát triển này cũng đồng thời
tạo ra những thách thức chưa từng có về an toàn và bảo mật thông tin. Dữ liệu trong quá
trình truyền nhận luôn phải đối mặt với các nguy cơ bị truy cập, nghe lén, sao chép hoặc
thay đổi trái phép từ các tác nhân có chủ đích xấu.
Để đối phó với những rủi ro này, Mật mã học (Cryptography) đã ra đời và phát triển như
một ngành khoa học chuyên nghiên cứu các phương pháp bảo vệ thông tin. Lịch sử mật
mã học có thể được chia thành hai giai đoạn chính: mật mã học cổ điển và mật mã học hiện
đại. Trong khi các hệ mã hiện đại như AES, RSA được xây dựng trên các cấu trúc toán học
phức tạp và có khả năng chống lại các cuộc tấn công bằng máy tính lượng tử, thì các hệ
mã cổ điển vẫn giữ một vai trò không thể thiếu trong lĩnh vực giáo dục và nghiên cứu.
Mã hóa Affine (Affine Cipher) là một đại diện tiêu biểu của trường phái mật mã cổ điển,
thuộc lớp mật mã thay thế đơn bảng (Monoalphabetic Substitution Cipher). Dù không còn
được sử dụng trong các ứng dụng đòi hỏi bảo mật cao, việc nghiên cứu mã Affine mang
lại giá trị học thuật to lớn. Nó là một cầu nối lý tưởng, giúp người học chuyển tiếp từ những
khái niệm mật mã sơ khai đến việc nắm bắt các nguyên lý toán học nền tảng như số học
mô-đun (modular arithmetic), tính khả nghịch của một phần tử trong một vành hữu hạn,
và vai trò của ước chung lớn nhất (GCD) trong việc đảm bảo tính toàn vẹn của quá trình
giải mã. Vì những lý do trên, việc thực hiện đề tài
“Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin” là hoàn
toàn cần thiết và phù hợp, không chỉ để hoàn thành học phần mà còn để xây dựng một nền
tảng kiến thức vững chắc cho các lĩnh vực chuyên sâu hơn về an toàn thông tin. lOMoAR cPSD| 60701415
1.2. Mục tiêu và nội dung nghiên cứu
Đề tài được thực hiện nhằm đạt được các mục tiêu chính sau đây:
+ Nghiên cứu và hệ thống hóa cơ sở lý thuyết: Phân tích sâu sắc nền tảng toán học và
nguyên lý hoạt động của hệ mã Affine. Trọng tâm là làm rõ các khái niệm về hàm biến đổi
tuyến tính trên vành số nguyên Zm, điều kiện tồn tại nghịch đảo mô-đun và thuật toán Euclid mở rộng.
+ Thiết kế và cài đặt thuật toán: Xây dựng các thuật toán mã hóa và giải mã Affine một
cách hoàn chỉnh và hiệu quả bằng ngôn ngữ lập trình. Chương trình phải có khả năng xử
lý chuỗi ký tự, kiểm tra tính hợp lệ của khóa và đảm bảo tính chính xác của kết quả.
+ Xây dựng ứng dụng minh họa: Phát triển một ứng dụng phần mềm mô phỏng quá trình
truyền nhận thông tin an toàn giữa hai bên (bên gửi và bên nhận) sử dụng mã Affine. Ứng
dụng này phục vụ như một công cụ trực quan để kiểm chứng lý thuyết và thuật toán đã nghiên cứu.
+ Phân tích và đánh giá: Đưa ra những đánh giá khách quan về ưu điểm, nhược điểm và độ
an toàn của hệ mã Affine trong bối cảnh lý thuyết mật mã hiện đại. So sánh hiệu quả của
Affine với các hệ mã cổ điển khác như Caesar và Vigenère để làm nổi bật vị trí và đặc điểm của nó.
1.3. Mục đích của đề tài
Đề tài này hướng đến việc nghiên cứu chuyên sâu về phương pháp mã hóa và giải mã
Affine, từ lý thuyết nền tảng đến ứng dụng thực tiễn trong quá trình truyền nhận thông tin.
Cụ thể, các mục tiêu chính bao gồm:
+ Phân tích nguyên lý hoạt động của mã hóa Affine dựa trên cơ sở toán học của hàm tuyến
tính trong tập hợp số nguyên modulo.
+ Xây dựng quy trình mã hóa và giải mã Affine một cách hệ thống, có thể áp dụng cho các chuỗi ký tự bất kỳ.
+ Đánh giá tính bảo mật của phương pháp Affine trong bối cảnh hiện đại, so sánh với các
phương pháp mã hóa khác. lOMoAR cPSD| 60701415
+ Đề xuất một số ứng dụng cụ thể của Affine trong truyền nhận thông tin, đặc biệt là trong
các hệ thống giáo dục, truyền thông nội bộ hoặc các hệ thống có yêu cầu bảo mật thấp.
1.4. Ý nghĩa khoa học và thực tiễn
Về mặt khoa học, nghiên cứu này góp phần làm rõ hơn các nguyên lý toán học đằng
sau một phương pháp mã hóa cổ điển, từ đó tạo nền tảng cho việc tiếp cận các thuật toán
mã hóa phức tạp hơn như RSA, AES hay ECC. Việc hiểu rõ Affine cũng giúp người học
nắm bắt được bản chất của các phép biến đổi tuyến tính, một khái niệm quan trọng trong
nhiều lĩnh vực như mật mã học, xử lý tín hiệu, học máy và trí tuệ nhân tạo.
Về mặt thực tiễn, phương pháp mã hóa Affine có thể được ứng dụng trong các hệ thống
truyền thông đơn giản, nơi yêu cầu bảo mật không quá cao nhưng vẫn cần đảm bảo tính
riêng tư và tính toàn vẹn của dữ liệu. Ngoài ra, Affine còn có thể được sử dụng trong các
trò chơi giáo dục, phần mềm học tập hoặc các ứng dụng mang tính minh họa cho sinh viên
ngành công nghệ thông tin, toán học ứng dụng và an toàn thông tin.
1.5. Phạm vi, phương pháp nghiên cứu
Phạm vi nghiên cứu của đề tài tập trung vào:
+ Mã hóa và giải mã Affine trên tập ký tự tiếng Anh (ASCII), có thể mở rộng sang Unicode nếu cần.
+ Ứng dụng Affine trong môi trường truyền nhận thông tin giả lập, ví dụ như giữa hai máy
tính hoặc qua giao diện web đơn giản.
+ Đánh giá hiệu năng và độ bảo mật của Affine thông qua phân tích lý thuyết và thử nghiệm thực tế.
+ Phương pháp nghiên cứu bao gồm: phân tích tài liệu tổng hợp các công trình nghiên cứu
liên quan đến mã hóa Affine và các phương pháp mã hóa cổ điển. Phương pháp nghiên cứu:
Nghiên cứu tài liệu, giáo trình, sách và tài nguyên trực tuyến về mật mã học.
Viết thuật toán mô phỏng bằng lập trình. lOMoAR cPSD| 60701415
Thử nghiệm thực tế: truyền nhận thông tin giữa hai hệ thống giả lập để kiểm tra tính hiệu
quả và độ chính xác của thuật toán.
Đánh giá và so sánh: phân tích ưu nhược điểm của Affine so với các phương pháp mã hóa
khác như Caesar, Vigenère, hoặc các thuật toán hiện đại. lOMoAR cPSD| 60701415
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI MÃ AFFINE
2.1. Tổng quan về mật mã học cổ điển
Mật mã học cổ điển là thuật ngữ dùng để chỉ các hệ thống mật mã được phát triển và
sử dụng từ thời cổ đại cho đến trước khi máy tính kỹ thuật số ra đời (khoảng đầu thế kỷ
20). Các hệ mã này chủ yếu hoạt động dựa trên các thao tác đơn giản với ký tự và không
đòi hỏi các tính toán phức tạp. Chúng được phân thành hai loại chính:
Mã hóa thay thế (Substitution Ciphers): Nguyên tắc cơ bản là thay thế mỗi ký tự hoặc nhóm
ký tự trong bản rõ bằng một ký tự hoặc nhóm ký tự khác theo một quy tắc nhất định.
Mã thay thế đơn bảng (Monoalphabetic): Một quy tắc thay thế duy nhất được áp dụng cho
toàn bộ thông điệp. Ví dụ điển hình là
Mã Caesar (quy tắc là phép cộng) và mã Affine (quy tắc là một hàm tuyến tính).
Mã thay thế đa bảng (Polyalphabetic): Sử dụng nhiều quy tắc thay thế khác nhau một cách tuần hoàn.
Mã Vigenère là ví dụ nổi tiếng nhất, giúp khắc phục điểm yếu về phân tích tần suất của mã đơn bảng.
Mã hóa hoán vị (Transposition Ciphers): Nguyên tắc là giữ nguyên các ký tự trong bản rõ
nhưng sắp xếp lại vị trí của chúng theo một quy tắc hoán vị xác định.
Mã hóa Affine, đối tượng nghiên cứu của đề tài này, được xem là một sự cải tiến và tổng
quát hóa của mã Caesar, mang đến một không gian khóa lớn hơn và cấu trúc toán học thú vị hơn.
2.2. Giới thiệu đầu vào – đầu ra của bài toán
Để xây dựng một chương trình mã hóa và giải mã theo thuật toán Affine Cipher, trước
hết cần xác định rõ đầu vào và đầu ra của bài toán: - Đầu vào:
+ Bản rõ (Plaintext): chuỗi ký tự thông tin cần mã hóa. lOMoAR cPSD| 60701415
+ Khóa bí mật (Key): gồm hai thành phần:
+ a: hệ số nhân (phải thỏa mãn điều kiện gcd (a, m) = 1 để có nghịch đảo modulo).
+ b: hệ số cộng (một số nguyên tùy chọn).
+ Bảng chữ cái (Alphabet): thông thường chọn bảng chữ cái tiếng Anh có 26 ký tự (A–Z)
hoặc có thể mở rộng để bao gồm cả chữ thường, chữ số và ký tự đặc biệt. - Đầu ra:
+ Bản mã (Ciphertext) khi thực hiện quá trình mã hóa.
+ Bản rõ khôi phục được (Decrypted text) khi thực hiện giải mã.
2.3. Cơ sở lý thuyết
2.3.1. Lý thuyết về mật mã Affine Cipher
Mã hóa Affine Cipher là một dạng mã thay thế đơn bảng (monoalphabetic substitution
cipher), trong đó mỗi ký tự của bản rõ được ánh xạ thành một ký tự khác dựa trên công
thức toán học. Cơ sở toán học của hệ mã Affine nằm trong một lĩnh vực của toán học gọi
là Số học Mô-đun (Modular Arithmetic).
Đây là sự mở rộng của Caesar Cipher (chỉ dịch chuyển ký tự), kết hợp thêm phép nhân và
phép cộng để tăng độ phức tạp.
2.3.2. Số học Mô-đun và Vành số nguyên Zm
Số học mô-đun là một hệ thống số học cho các số nguyên, nơi các số "quay vòng" sau
khi đạt đến một giá trị nhất định gọi là mô-đun (modulus) m. Ta nói hai số nguyên x và y
là đồng dư (congruent) theo mô-đun m, ký hiệu x ≡ y (mod m), nếu hiệu của chúng (x − y) là một bội của m.
Tập hợp các số dư khi chia cho m, {0,1,2,…,m − 1}, cùng với hai phép toán cộng và nhân
mô-đun tạo thành một cấu trúc đại số gọi là vành các lớp đồng dư mô-đun m, ký hiệu là
Zm. Mã Affine hoạt động chính trên vành Z26 (với m = 26 tương ứng 26 chữ cái).
2.3.3. Hàm mã hóa và giải mã
Để làm việc với các ký tự, chúng ta thiết lập một ánh xạ số: A ↔ 0, B ↔ 1, ..., Z ↔ 25. lOMoAR cPSD| 60701415 1.
Hàm mã hóa (Encryption Function): Với một khóa k = (a,b) ∈ K, ký tự bản rõ P có
giá trị số là x sẽ được mã hóa thành ký tự bản mã C có giá trị số là y theo công thức:
y = Ek(x) ≡ (ax + b) (mod 26) Trong đó: •
a và b là hai số nguyên tạo thành khóa mã hóa. •
a phải thỏa mãn điều kiện: gcd(a, m) = 1 để đảm bảo hàm có thể đảo ngược. •
m là số lượng ký tự trong bảng chữ cái (ví dụ: m = 26 trong bảng chữ cái tiếng Anh).
Đây là một phép biến đổi Affine trên vành Z26. 2.
Hàm giải mã (Decryption Function): Để giải mã, ta cần tìm lại x từ y. Từ công thức mãhóa, ta có: ax ≡ (y − b) (mod 26)
Để giải phương trình này cho x, ta cần nhân cả hai vế với nghịch đảo nhân mô-đun (modular
multiplicative inverse) của a, ký hiệu là a ¹. Phần tử a ¹ là một số trong Z⁻ ⁻ 26 sao cho a * a ¹ ≡ 1 (mod26).⁻
Nghịch đảo này chỉ tồn tại khi và chỉ khi a và m là hai số nguyên tố cùng nhau, tức là
gcd(a,m) = 1. Đây chính là lý do cho điều kiện của khóa a.
Khi đó, công thức giải mã là:
x = Dk(y) ≡ a ¹ (y − b) (mod ⁻ 26)
Nghịch đảo a ¹ thường được tìm bằng Thuật toán Euclid mở rộng.⁻
2.3.4. Ví dụ cụ thể Cho bản rõ: HELLO
Khóa: k = (a,b) = (5,8). Ta kiểm tra: gcd(5,26) = 1, vậy khóa hợp lệ. Quá trình mã hóa:
H (giá trị 7) → y = (5 × 7 + 8)(mod26) = 43 (mod26) = 17 → R lOMoAR cPSD| 60701415
E (giá trị 4) → y = (5 × 4 + 8)(mod26) = 28 (mod26) = 2→ C
L (giá trị 11) → y = (5 × 11 + 8)(mod26) = 63 (mod26) = 11 → L
L (giá trị 11) → L
O (giá trị 14) → y = (5 × 14 + 8)(mod26) = 78 (mod26) = 0 → A
Kết quả bản mã: RCLLA
Quá trình giải mã:
Bước 1: Tìm nghịch đảo a ¹. Ta cần tìm 5⁻ -1(mod26). Bằng thuật toán Euclid mở rộng (hoặc
thử trực tiếp), ta thấy 5 × 21 = 105 = 4 × 26 + 1, vậy 5 × 21 ≡ 1 (mod26). Do đó, a ¹⁻ = 21.
Bước 2: Áp dụng công thức giải mã.
R (giá trị 17) → x = 21 × (17−8)(mod26) = 21 × 9(mod26) = 189(mod26) = 7→ H
C (giá trị 2) → x = 21 × (2−8)(mod26) = 21 × (−6)(mod26) = −126(mod26). Vì −126 = −5
× 26 + 4, nên −126 ≡ 4(mod26)→ E.
L (giá trị 11) → x = 21 × (11−8)(mod26) = 21 × 3(mod26) = 63(mod26) = 11→ L.
L (giá trị 11) → L.
A (giá trị 0) → x = 21 × (0−8)(mod26) = −168(mod26). Vì −168 = −7 × 26 + 14, nên −168 ≡ 14(mod26) → O.
Kết quả bản rõ khôi phục: HELLO.
2.3.4. Tính chất toán học của hàm Affine
Hàm Affine là một dạng hàm tuyến tính có dạng: f(x) = a * x + b
Trong không gian số nguyên modulo, hàm này có các tính chất sau:
Tính đơn ánh: Nếu gcd(a,m) = 1, hàm là đơn ánh, tức là mỗi đầu vào ánh xạ đến một đầu ra duy nhất.
Tính đảo ngược: Có thể xây dựng hàm ngược để giải mã. lOMoAR cPSD| 60701415
Tính chu kỳ: Vì làm việc trong modulo mm, hàm có tính chu kỳ, tức là sau mm bước sẽ lặp lại.
2.5. Phân tích hệ mã Affine 2.5.1. Ưu điểm
Tính đơn giản và hiệu quả tính toán: Thuật toán chỉ sử dụng các phép toán số học cơ bản,
giúp việc cài đặt trở nên dễ dàng và tốc độ xử lý rất nhanh, không yêu cầu tài nguyên tính toán lớn.
Nền tảng toán học rõ ràng: Cấu trúc của mã Affine dựa trên các khái niệm cơ bản của lý
thuyết số và đại số tuyến tính, là một ví dụ minh họa xuất sắc cho việc ứng dụng toán học vào mật mã.
An toàn hơn mã Caesar: Không gian khóa của mã Affine là 12 × 26 = 312 (với 12 giá trị
hợp lệ cho a). Con số này lớn hơn đáng kể so với 25 khóa của mã Caesar, khiến việc tấn
công bằng phương pháp thử-sai (brute-force) trở nên khó khăn hơn một chút.
2.5.2. Hạn chế và lỗ hổng bảo mật
Mặc dù có những ưu điểm trên, mã Affine được xem là một hệ mã rất yếu và không an toàn trong thực tế.
Dễ bị tấn công vét cạn (Brute-force Attack): Với năng lực của máy tính hiện đại, việc thử
qua toàn bộ 312 khóa chỉ mất một khoảng thời gian cực ngắn (vài mili giây).
Dễ bị tấn công phân tích tần suất (Frequency Analysis Attack): Đây là điểm yếu chí mạng
của mọi hệ mã thay thế đơn bảng. Vì mỗi ký tự bản rõ luôn được ánh xạ đến một ký tự bản
mã duy nhất, cấu trúc tần suất của ngôn ngữ gốc vẫn được bảo toàn trong bản mã. Ví dụ,
trong tiếng Anh, 'E' là ký tự phổ biến nhất. Kẻ tấn công chỉ cần tìm ký tự xuất hiện nhiều
nhất trong bản mã, giả định đó là 'E', và từ đó thiết lập một hệ phương trình để tìm ra khóa (a,b). lOMoAR cPSD| 60701415
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH
3.1. Giới thiệu về chương trình
Tên chương trình: Mã hóa AFFINE
Chức năng: Chương trình cho phép người dùng nhập vào một đoạn văn bản (plaintext),
một cặp khóa (a,b) hợp lệ, sau đó thực hiện mã hóa để tạo ra bản mã (ciphertext) hoặc
ngược lại, giải mã một bản mã để khôi phục bản rõ. Cách hoạt động:
Người dùng khởi chạy chương trình.
Nhập văn bản cần mã hóa vào ô 'Plain Text'.
Nhập giá trị khóa a và b vào các ô tương ứng. Chương trình sẽ kiểm tra tính hợp lệ của a (gcd(a,26)=1).
Nhấn nút "Encrypt" để mã hóa
Dán văn bản mã hóa vào ô 'Cipher Text' để giải mã.
Nhấn 'Decrypt' để lấy lại văn bản gốc.
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài
Trong khuôn khổ thực hiện đề tài, việc lựa chọn nền tảng công nghệ phù hợp là một
trong những yếu tố tiên quyết, quyết định đến sự thành công của sản phẩm. Đối với đề tài
"Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin", sự kết
hợp giữa ngôn ngữ lập trình C# và nền tảng giao diện người dùng Windows Forms
(WinForms) đã được lựa chọn. Lựa chọn này dựa trên những ưu điểm vượt trội về hiệu
năng, tính cấu trúc và khả năng phát triển nhanh, đáp ứng đầy đủ các yêu cầu từ logic thuật
toán đến giao diện tương tác người dùng. Nội dung sau đây sẽ trình bày chi tiết về hai công
nghệ này và lý giải sự phù hợp của chúng trong bối cảnh của đề tài. lOMoAR cPSD| 60701415
Hình 3. Ngôn ngữ C# và nền tảng .NET Framework
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng
C# là một ngôn ngữ lập trình hiện đại, hướng đối tượng, và an toàn về kiểu (type-safe)
được phát triển bởi Microsoft và là một phần không thể thiếu của nền tảng .NET. Trong đề
tài này, C# đóng vai trò là "bộ não" trung tâm, chịu trách nhiệm xử lý toàn bộ logic nghiệp
vụ, đặc biệt là các thuật toán mã hóa và giải mã Affine. Các đặc tính nổi bật của C# phù hợp với đề tài:
Kiến trúc Lập trình Hướng đối tượng (OOP): Đây là ưu điểm học thuật quan trọng nhất.
Thuật toán Affine có thể được trừu tượng hóa và đóng gói một cách hoàn hảo vào một lớp
(class) trong C#, ví dụ như lớp AffineCipher.
Tính đóng gói (Encapsulation): Lớp AffineCipher có thể chứa các thuộc tính (properties)
như KeyA, KeyB, Alphabet (bảng chữ cái sử dụng) và các phương thức (methods) như
Encrypt(string plaintext), Decrypt(string ciphertext). Điều này che giấu sự phức tạp của
việc triển khai thuật toán bên trong, giúp mã nguồn trở nên sạch sẽ, dễ quản lý và bảo trì.
Tính module hóa: Việc xây dựng các lớp riêng biệt cho logic mã hóa giúp dễ dàng tái sử
dụng và tích hợp vào các phần khác của ứng dụng mà không gây ảnh hưởng.
Hỗ trợ mạnh mẽ cho các Kiểu dữ liệu và Toán tử: Thuật toán Affine về bản chất là một tập
hợp các phép toán số học trên các con số nguyên.
Công thức mã hóa: C = (a * P + b) (mod m) lOMoAR cPSD| 60701415
Công thức giải mã: P = a-1 * (C − b) (mod m) C# cung cấp các kiểu dữ liệu số nguyên mạnh
mẽ (int, long) và các toán tử số học (+, -, *) cần thiết. Đặc biệt, toán tử modulo (%) là công
cụ cốt lõi để thực hiện phép toán đồng dư, vốn là trái tim của thuật toán Affine. Việc tìm
nghịch đảo modular (a−1) cũng có thể được triển khai dễ dàng thông qua các hàm toán học.
Khả năng xử lý Chuỗi và Ký tự ưu việt: Ứng dụng cần xử lý thông điệp đầu vào (plaintext)
và đầu ra (ciphertext) dưới dạng chuỗi văn bản. C# cung cấp lớp string và kiểu char với
một hệ thống phương thức phong phú để lặp qua từng ký tự, chuyển đổi chữ hoa/chữ
thường (ToUpper(), ToLower()), và xây dựng chuỗi kết quả một cách hiệu quả, giúp cho
việc ánh xạ ký tự sang số và ngược lại trở nên đơn giản.
An toàn kiểu: C# là ngôn ngữ an toàn kiểu, giúp giảm thiểu các lỗi tiềm ẩn liên quan đến
việc chuyển đổi sai kiểu dữ liệu (ví dụ: nhầm lẫn giữa số và ký tự). Điều này đảm bảo tính
toàn vẹn và chính xác của thuật toán, một yếu tố cực kỳ quan trọng trong lĩnh vực mật mã.
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng
Windows Forms là một framework giao diện người dùng đồ họa (GUI) nằm trong .NET
Framework, cho phép các nhà phát triển tạo ra các ứng dụng máy tính để bàn (desktop
application) cho hệ điều hành Windows. Trong đề tài này, WinForms đóng vai trò là "bộ
mặt", là cầu nối trực quan cho phép người dùng cuối tương tác với logic mã hóa do C# xử
lý. Vậy tại sao WinForms là lựa chọn tối ưu cho giao diện của đề tài:
Xây dựng Giao diện người dùng trực quan (GUI): Mục tiêu của đề tài là tạo ra một "ứng
dụng truyền nhận thông tin". Điều này đòi hỏi phải có một giao diện rõ ràng để người dùng có thể:
Nhập văn bản cần mã hóa (plaintext).
Nhập các khóa (khóa a, khóa b).
Thực hiện hành động mã hóa hoặc giải mã.
Xem kết quả (ciphertext) và sao chép nó. WinForms cung cấp một bộ công cụ (toolbox)
đầy đủ các điều khiển (controls) như TextBox (để nhập liệu), Button (để kích hoạt sự kiện), lOMoAR cPSD| 60701415
Label (để hiển thị nhãn và kết quả), giúp việc thiết kế giao diện này trở nên nhanh chóng
và dễ dàng thông qua trình thiết kế kéo - thả (drag - and - drop) của Visual Studio.
Mô hình Lập trình Hướng sự kiện (Event - Driven Programming): Đây là mô hình hoạt
động cốt lõi của WinForms. Giao diện người dùng sẽ "chờ" các hành động từ người dùng
(sự kiện). Ví dụ, khi người dùng nhấn vào nút "Mã hóa", sự kiện Button_Click sẽ được
kích hoạt. Lập trình viên sẽ viết mã C# trong trình xử lý sự kiện này để lấy dữ liệu từ các
TextBox, gọi phương thức Encrypt() từ lớp AffineCipher, và cuối cùng hiển thị kết quả ra
một TextBox hoặc Label khác. Mô hình này giúp tách biệt rõ ràng giữa phần giao diện (UI)
và phần xử lý logic (business logic), tuân thủ các nguyên tắc thiết kế phần mềm tốt.
Phát triển Ứng dụng Nhanh (Rapid Application Development - RAD): Đối với một đề tài
nghiên cứu có quy mô vừa phải, việc tập trung vào thuật toán cốt lõi là quan trọng hơn việc
xây dựng một giao diện phức tạp. WinForms cho phép phát triển giao diện một cách cực
kỳ nhanh chóng, giúp người thực hiện đề tài tiết kiệm thời gian và công sức để tập trung
vào phần nghiên cứu và triển khai thuật toán mã hóa Affine.
3.2.3. Sự cộng hưởng giữa C# và WinForms
Sự kết hợp giữa C# và WinForms không chỉ đơn thuần là ghép nối hai công nghệ, mà là
một sự cộng hưởng hoàn hảo trong cùng một hệ sinh thái .NET được hỗ trợ bởi môi trường
phát triển tích hợp (IDE) Visual Studio.
C# cung cấp sức mạnh tính toán, cấu trúc logic chặt chẽ để triển khai chính xác các yêu
cầu toán học phức tạp của thuật toán Affine.
WinForms cung cấp một phương tiện trực quan, thân thiện để người dùng có thể khai thác
và kiểm chứng sức mạnh của thuật toán đó mà không cần phải tương tác với các dòng lệnh phức tạp.
Nói một cách hình ảnh, C# là cỗ máy mạnh mẽ bên trong, thực hiện mọi phép tính mã hóa
và giải mã. Trong khi đó, WinForms là bảng điều khiển với các nút bấm và màn hình hiển
thị, cho phép người dùng dễ dàng điều khiển cỗ máy đó. lOMoAR cPSD| 60701415
3.3 Giao diện phần mềm
3.3.1. Giao diện trang Đăng nhập
Người dùng sẽ đăng nhập tài khoản, mật khẩu để vào được chương trình.
Hình 3.3.1. Giao diện Đăng nhập vào chương trình
3.3.2. Giao diện chính của chương trình
Ở đây người dùng nhập văn bản, nhập khóa a,b.
Chương trình kiểm tra tính hợp lệ của a.
Thực hiện mã hóa/giải mã và in kết quả ra màn hình.