



















Preview text:
  lOMoAR cPSD| 60701415 NỘI DUNG MỞ ĐẦU 
1.1. Lý do chọn đề tài 
Nhóm quan tâm đến việc phát triển một ứng dụng chatbot vì nhóm nhận thấy sự gia 
tăng của nhu cầu giao tiếp thông qua các nền tảng trực tuyến. Chatbot không chỉ giúp tối ưu 
hóa trải nghiệm người dùng mà còn cung cấp một cách tiếp cận tiện lợi và tức thì để tương tác  với người dùng. 
Chọn thuật toán Vigenere để mã hóa tin nhắn trong ứng dụng của mình là vì tính đơn 
giản và độ bảo mật cao của nó. Vigenere là một trong những phương pháp mã hóa cổ điển 
được sử dụng từ thế kỷ 16 và vẫn được coi là một phương pháp bảo mật đáng tin cậy trong  nhiều trường hợp. 
Nhóm tin rằng việc sử dụng thuật toán Vigenere có thể cung cấp mức độ bảo mật đủ 
đáng cho tin nhắn giữa hai máy tính trong trường hợp của ứng dụng của mình. Tuy nhiên, để 
tăng cường bảo mật, nhóm cũng đang xem xét sử dụng các phương pháp bổ sung như mã hóa  đối xứng và băm. 
Thông qua việc tích hợp chatbot và mã hóa tin nhắn, nhóm mong muốn xây dựng một 
ứng dụng cung cấp giao tiếp an toàn và bảo mật giữa người dùng. Ứng dụng này có thể được 
sử dụng trong nhiều tình huống khác nhau, từ giao tiếp cá nhân đến giao tiếp doanh nghiệp. 
Trong tương lai, nhóm dự định cải thiện tính năng và hiệu suất của ứng dụng bằng cách 
tối ưu hóa thuật toán mã hóa, cải thiện giao diện người dùng và thêm các tính năng mới như 
giao diện đa ngôn ngữ và tích hợp trí tuệ nhân tạo để cải thiện trải nghiệm người dùng. 
1.2. Mục tiêu đề tài 
Mục tiêu của dự án "Xây dựng ứng dụng chatbot sử dụng thuật toán Vigenere để mã 
hóa tin nhắn giữa hai thiết bị máy tính" có thể được phân rã thành các mục tiêu cụ thể như  sau: 
Phát triển một ứng dụng chatbot đơn giản và dễ sử dụng: Mục tiêu này nhằm tạo ra một 
giao diện người dùng thân thiện và trực quan để người dùng có thể tương tác và gửi tin nhắn  một cách thuận tiện. 
Tích hợp thuật toán Vigenere để mã hóa tin nhắn: Mục tiêu này đòi hỏi việc triển khai 
thuật toán Vigenere vào ứng dụng để mã hóa và giải mã tin nhắn giữa hai máy tính, đảm bảo 
tính bảo mật và an toàn cho thông điệp.      lOMoAR cPSD| 60701415
Đảm bảo tính bảo mật của ứng dụng: Mục tiêu này yêu cầu việc kiểm tra và cải thiện 
tính bảo mật của ứng dụng, bao gồm cả việc bảo vệ dữ liệu người dùng và đảm bảo rằng thuật 
toán mã hóa được triển khai đúng cách. 
Kiểm tra và thử nghiệm ứng dụng: Mục tiêu này là để đảm bảo rằng ứng dụng hoạt 
động một cách chính xác và ổn định trước khi phát hành, bằng cách thực hiện các bước kiểm 
tra và thử nghiệm kỹ lưỡng. 
Tối ưu hóa hiệu suất và trải nghiệm người dùng: Mục tiêu này nhằm cải thiện hiệu suất 
và trải nghiệm người dùng của ứng dụng thông qua việc tối ưu hóa mã nguồn, cải thiện tốc độ 
phản hồi và giảm thiểu lỗi hệ thống. 
Tổng thể, mục tiêu của dự án là xây dựng một ứng dụng chatbot an toàn, bảo mật và dễ 
sử dụng, cho phép người dùng gửi và nhận tin nhắn một cách riêng tư và an toàn giữa hai thiết  bị máy tính. 
1.3. Bố cục triển khai đề tài 
Bố cục triển khai cho dự án "Xây dựng ứng dụng chatbot sử dụng thuật toán Vigenere 
để mã hóa tin nhắn giữa hai thiết bị máy tính" có thể được tổ chức như sau: 
Thu thập Yêu cầu: Xác định các yêu cầu chính của ứng dụng chatbot, bao gồm khả 
năng giao tiếp giữa người dùng và chatbot, mã hóa và giải mã tin nhắn, và tích hợp thuật toán 
Vigenere với bảng mã ASCII 256 ký tự. 
Thiết kế Kiến trúc: Thiết kế giao diện đơn giản và dễ sử dụng cho ứng dụng chatbot 
trên cả hai thiết bị máy tính. Bố cục giao diện gồm các ô nhập tin nhắn, nút gửi, và khu vực 
hiển thị tin nhắn đã mã hóa và giải mã. 
Logic Ứng dụng: Xây dựng logic ứng dụng để xử lý các tin nhắn được gửi và nhận từ 
người dùng. Tích hợp thuật toán mã hóa và giải mã Vigenere cho việc mã hóa và giải mã tin  nhắn. 
Triển khai Thuật toán Vigenere: Để mã hóa và giải mã tin nhắn theo bảng mã ASCII 
256 ký tự. Xây dựng các hàm hoặc lớp để thực hiện quá trình mã hóa và giải mã, bao gồm cả 
việc xử lý độ dài khóa và chuỗi tin nhắn. 
Tích hợp Giao tiếp Máy tính: Sử dụng các giao thức truyền thông như TCP/IP hoặc 
WebSocket để thiết lập kết nối giữa hai thiết bị máy tính. Triển khai logic để gửi và nhận các 
tin nhắn đã mã hóa và giải mã qua kết nối mạng. 
Kiểm thử và Debug: Tiến hành kiểm thử chức năng và tính năng của ứng dụng, bao 
gồm cả việc kiểm tra việc mã hóa và giải mã tin nhắn.      lOMoAR cPSD| 60701415
Sửa lỗi và điều chỉnh ứng dụng dựa trên phản hồi từ quá trình kiểm thử. 
Tối ưu hóa và Cải tiến: Tối ưu hóa mã nguồn và tăng cường hiệu suất của ứng dụng. 
Cải tiến tính bảo mật và tính ổn định của hệ thống mã hóa và giải mã. 
Triển khai và Phát hành:Triển khai ứng dụng chatbot trên hai thiết bị máy tính và công 
bố cho người dùng. Theo dõi và hỗ trợ người dùng trong quá trình sử dụng và giải quyết vấn  đề. 
Mỗi bước trong quá trình triển khai dự án đều quan trọng và đóng vai trò quan trọng 
trong việc xây dựng và triển khai một ứng dụng chatbot thành công. Tuy nhiên, có một số 
bước có thể được coi là quan trọng nhất trong quá trình này: 
Thiết kế Kiến trúc: Bước này là cơ sở để xây dựng ứng dụng và đặt nền tảng cho toàn 
bộ dự án. Việc thiết kế kiến trúc ứng dụng đòi hỏi sự cân nhắc kỹ lưỡng về cách tổ chức logic 
ứng dụng, giao diện người dùng và tích hợp các thành phần chức năng. Một kiến trúc tốt sẽ 
giúp dễ dàng mở rộng và bảo trì ứng dụng trong tương lai. 
Triển khai Thuật toán Vigenere: Vì dự án yêu cầu sử dụng thuật toán Vigenere để mã 
hóa và giải mã tin nhắn, việc triển khai thuật toán này là một bước quan trọng. Đảm bảo rằng 
thuật toán được triển khai đúng cách và hoạt động một cách chính xác là điều cực kỳ quan 
trọng để đảm bảo tính bảo mật và chính xác của hệ thống mã hóa và giải mã. 
Kiểm thử và Debug: Bước kiểm thử và debug là quan trọng để đảm bảo tính ổn định 
và chất lượng của ứng dụng. Việc phát hiện và sửa lỗi sớm giúp tránh được các vấn đề tiềm 
ẩn và cải thiện trải nghiệm người dùng. Một quy trình kiểm thử kỹ lưỡng sẽ giúp đảm bảo 
rằng ứng dụng hoạt động như mong đợi và đáp ứng được yêu cầu của người dùng. 
Tuy nhiên, không có một bước cụ thể nào được xác định là quan trọng nhất trong quá 
trình triển khai. Mỗi bước đều có ý nghĩa riêng và đóng góp vào thành công của dự án. Quan 
trọng nhất là phải thực hiện mỗi bước một cách cẩn thận và cân nhắc để đảm bảo rằng ứng 
dụng được xây dựng và triển khai một cách thành công và hiệu quả.  CƠ SỞ LÝ THUYẾT 
1.4. Mã hóa và giải mã 
Mã hóa và giải mã là hai khái niệm cơ bản trong lĩnh vực bảo mật thông tin và truyền 
thông. Chúng đóng vai trò quan trọng trong việc bảo vệ dữ liệu khỏi việc truy cập trái phép 
và đảm bảo tính bảo mật của thông tin được truyền tải qua các kênh không an toàn. 
Mã Hóa: Mã hóa là quá trình chuyển đổi thông tin từ dạng rõ ràng (plaintext) thành 
dạng không thể đọc được (ciphertext) một cách có hệ thống và theo một qui tắc nhất định, sử      lOMoAR cPSD| 60701415
dụng một thuật toán mã hóa cụ thể và một khóa (key). Mục tiêu của mã hóa là làm cho thông 
tin trở nên không thể hiểu được nếu không có khóa giải mã phù hợp. Có hai loại mã hóa chính 
là mã hóa đối xứng và mã hóa không đối xứng. 
Mã hóa đối xứng: Trong loại mã hóa này, cùng một khóa được sử dụng cho cả quá trình 
mã hóa và giải mã. Ví dụ phổ biến cho loại mã hóa này là AES (Advanced Encryption 
Standard) và DES (Data Encryption Standard). 
Mã hóa không đối xứng: Trong loại mã hóa này, có hai loại khóa: khóa công khai 
(public key) và khóa bí mật (private key). Một khóa dùng để mã hóa thông tin và khóa còn lại 
được sử dụng để giải mã. Ví dụ phổ biến nhất cho loại mã hóa này là RSA (RivestShamir- Adleman). 
Giải Mã: Giải mã là quá trình ngược lại của mã hóa, trong đó dữ liệu được chuyển từ 
dạng không thể đọc được (ciphertext) trở lại thành dạng rõ ràng (plaintext) bằng cách sử dụng 
một khóa giải mã phù hợp. Khóa giải mã này thường được tạo ra hoặc được cung cấp bởi 
người gửi thông tin cho người nhận. 
Mã hóa và giải mã mang lại ý nghĩa to lớn với quá trình công nghiệp hóa, hiện đại nói 
chung và ngành an toàn bảo mật thông tin nói riêng, dưới đây là một trong những ý nghĩa mà 
mã hóa và giải mã mang lại 
Bảo mật dữ liệu: Mã hóa đảm bảo rằng dữ liệu không thể đọc được nếu không có khóa 
giải mã. Điều này giúp bảo vệ thông tin quan trọng khỏi việc truy cập trái phép. 
Bảo mật truyền thông: Mã hóa đảm bảo rằng thông tin được truyền tải qua mạng hoặc 
các kênh không an toàn không bị đánh cắp hoặc thay đổi bởi bên thứ ba. 
Quyền riêng tư: Việc sử dụng mã hóa đảm bảo tính riêng tư của dữ liệu cá nhân và  thông tin nhạy cảm. 
An toàn trực tuyến: Mã hóa đóng vai trò quan trọng trong việc bảo vệ các giao dịch 
trực tuyến, thông tin tài khoản và dữ liệu cá nhân của người dùng khi sử dụng các dịch vụ trực  tuyến 
Trong tổ chức và cá nhân, việc hiểu và áp dụng đúng các phương pháp mã hóa và giải 
mã là rất quan trọng để đảm bảo tính bảo mật của thông tin và dữ liệu. 
1.5. Mã hóa và phá khóa 
Trong lĩnh vực bảo mật, ngoài hoạt động mã hóa, còn tồn tại hoạt động ngược lại được 
gọi là mã thám, đó là việc khám phá bí mật từ các bản mã mật "lấy trộm" được. Mã thám đóng 
vai trò quan trọng không kém trong lĩnh vực này, vì các thuật toán mã hóa và giải mã không      lOMoAR cPSD| 60701415
nhất thiết phải được giữ bí mật. Mã thám thường tập trung vào việc tìm khóa mật mã, và do 
đó, cũng được biết đến với tên gọi phá khóa. 
Bài toán mã hóa cơ bản thường liên quan đến việc tìm ra khóa mật mã K hoặc khóa 
giải mã Kd để giải mã thông tin được mã hóa. Trong trường hợp mà người thám mã biết thông 
tin về sơ đồ hệ mật mã, bao gồm cả các phép lập mã và giải mã tổng quát E và D, việc này có 
thể giúp họ tìm ra khóa mật mã. 
Ngoài ra, người thám mã cũng có thể biết thêm một số thông tin khác, và dựa trên 
những thông tin này, bài toán thám mã có thể được phân loại thành các bài toán cụ thể khác 
nhau. Điều này có thể bao gồm việc biết các điều kiện ban đầu, các đặc điểm của thông tin 
được mã hóa, hoặc các thuật toán cụ thể được sử dụng trong quá trình mã hóa và giải mã. Phụ 
thuộc vào các thông tin cụ thể này, người thám mã sẽ phát triển các chiến lược khác nhau để  tìm ra khóa mật mã.: 
Bài toán thám mã chỉ biết bản mã : là bài toán phổ biến nhất , khi người thám mã chỉ 
biết một bản mật mã Y. 
Bài toán thám mã khi chỉ biết bản rõ : người thám mã biết một bản mật mã Y cùng với 
bản rõ tưng ứng với X. 
Bài toán thám mã khi có bản rõ được chọn : người thám mã có thể chọn một bản rõ X, 
và biết bản mật mã tương ứng Y. Điều này có thể xảy ra khi người thám mã chiếm được tạm  thời máy lập mã. 
Bài toán thám mã khi có bản mã được chọn : người thám mã có thể chọn một bản mật 
mã Y , và biết bản rõ tương ứng X. điều này có thể xảy ra khi một người thám mã tham chiếm 
được tạm thời máy giải mã 
1.6. Các khái niệm liên quan khác 
Bản rõ (Plaintext): Bản rõ là dạng của dữ liệu ban đầu, thông tin được biểu diễn một 
cách rõ ràng và dễ đọc. Đây là dữ liệu mà bạn muốn bảo vệ hoặc truyền đi một cách an toàn. 
Bản mã (Ciphertext): Bản mã là dữ liệu sau khi đã được mã hóa và không thể đọc được 
trực tiếp. Nó là kết quả của quá trình mã hóa bản rõ, thường là một chuỗi ký tự hoặc một dãy  bit không gian sắp xếp. 
Khóa (Key): Khóa là một giá trị hoặc tập hợp các giá trị được sử dụng trong quá trình 
mã hóa và giải mã. Khóa xác định cách mà dữ liệu bản rõ được biến đổi thành bản mã và 
ngược lại. Sự an toàn của hệ thống mã hóa thường phụ thuộc vào việc bảo vệ và quản lý khóa.      lOMoAR cPSD| 60701415
Mã hóa (Encryption): Mã hóa là quá trình biến đổi bản rõ thành bản mã sử dụng một 
thuật toán mã hóa và khóa tương ứng. Mục đích chính của mã hóa là bảo vệ thông tin khỏi 
việc truy cập trái phép bằng cách biến đổi nó thành dạng không thể đọc được. 
Giải mã (Decryption): Giải mã là quá trình ngược lại của mã hóa, trong đó bản mã được 
chuyển đổi trở lại thành bản rõ sử dụng khóa giải mã tương ứng. Quá trình giải mã cho phép 
người nhận dữ liệu khôi phục lại thông tin ban đầu từ dữ liệu đã được mã hóa. 
Những thuật ngữ này đóng vai trò quan trọng trong lĩnh vực bảo mật thông tin và truyền 
thông, giúp đảm bảo tính bảo mật và toàn vẹn của thông tin khi truyền tải hoặc lưu trữ. 
1.7. Các thành phần của hệ mật mã 
Việc mã hóa hay giải mã theo quy tắc nhất định , quy tắc đó được gọi là hệ mật mã. 
Định nghĩa : Một hệ mật là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau: 
P là một tập hợp hữu hạn các bản rõ (PlainText), nó được gọi là không gian bản rõ. 
C là tập các hữu hạn các bản mã (Crypto), nó còn được gọi là không gian các bản mã. 
Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của  P, với k ∈ K. 
K là tập hữu hạn các khoá hay còn gọi là không gian khoá. Đối với mỗi phần tử k của 
K được gọi là một khoá (Key). Số lượng của không gian khoá phải đủ lớn để “kẻđịch: không 
có đủ thời gian để thử mọi khoá có thể(phương pháp vét cạn). 
Các thành phần này đều liên quan mật thiết đến nhau nhằm tạo ra một hệ mật mã mạnh, 
có logic cũng như đáp ứng như cầu người dùng 
Đối với mỗi k ∈ K có một quy tắc mã eK: P → C và một quy tắc giải mã tương ứng 
dK∈ D. Mỗi eK: P → C và dK: C → P là những hàm mà: dK (eK(x))=x với mọi bản rõ x ∈ P 
Dưới đây chúng ta sẽ có sơ đồ sơ lược về thành phần của hệ mật mã và sự liên quan giữa các  thành phần.      lOMoAR cPSD| 60701415  
Hình 2.4. Sơ đồ sơ lược thành phần của hệ mật mã 
1.8. Phân loại hệ mật mã 
Có nhiều cách để phân loại hệ mật mã. Dựa vào cách truyền khóa có thể phân các hệ  mật mã thành hai loại: 
Mật mã đối xứng (Symmetric Cryptography): Trong mật mã đối xứng, cùng một khóa 
được sử dụng cho cả quá trình mã hóa và giải mã. Cụ thể, khóa được sử dụng để mã hóa thông 
tin là cũng khóa được sử dụng để giải mã nó. Điều này có nghĩa là cả người gửi và người nhận 
đều phải biết và giữ bí mật khóa này. Mật mã đối xứng thường nhanh chóng và hiệu quả về 
mặt tính toán, làm cho chúng phổ biến trong nhiều ứng dụng. Tuy nhiên, một thách thức quan 
trọng là việc quản lý và phân phối khóa một cách an toàn.   
Hình 2.5.1.1. Mô tả Hệ mật mã đối xứng Một 
vài thuật toán của hệ mật mã đối xứng như sau:      lOMoAR cPSD| 60701415
AES (Advanced Encryption Standard): Là một thuật toán mật mã đối xứng tiêu biểu, 
được sử dụng rộng rãi trên toàn thế giới cho việc mã hóa dữ liệu. Nó thường được xem là một 
trong những thuật toán mật mã mạnh nhất hiện nay.   
Hình 2.5.2. Mô tả thuật toán AES 
Ứng dụng: AES được sử dụng trong nhiều ứng dụng, bao gồm mã hóa dữ liệu trên các 
kết nối mạng không dây (Wi-Fi, Bluetooth), mã hóa dữ liệu trên ổ đĩa cứng (disk encryption), 
mã hóa dữ liệu trong các ứng dụng như email và tin nhắn, và trong các giao thức bảo mật như  TLS/SSL. 
Độ an toàn: Hệ mật mã AES (Advanced Encryption Standard) là một trong những thuật 
toán mã hóa đối xứng phổ biến nhất hiện nay. Tính an toàn của AES dựa trên sự khó khăn của 
việc giải quyết các vấn đề toán học mà nó dựa trên, đặc biệt là vấn đề phá mã khóa thông qua 
việc tìm kiếm giải pháp cho các hộp thay thế và hoán vị. Dưới đây là một số yếu tố quan trọng 
ảnh hưởng đến độ an toàn của AES: 
Kích thước khóa: AES hỗ trợ ba kích thước khóa chính là 128 bits, 192 bits và 256 bits. 
Kích thước khóa càng lớn thì càng khó khăn cho kẻ tấn công thực hiện các cuộc tấn công 
brute-force (cố gắng tất cả các khả năng cho từng khóa) hoặc các phương pháp tấn công khác 
như tìm kiếm giải pháp thông qua việc phân tích về cấu trúc của thuật toán AES. 
Sự ngẫu nhiên của các khóa: Khóa được chọn ngẫu nhiên từ không gian khóa lớn, điều 
này làm tăng khả năng ngăn chặn các cuộc tấn công dựa trên việc tìm kiếm giải pháp thông 
qua việc tìm ra mẫu hoặc dãy nhất định trong các khóa. 
Quản lý khóa và công cụ: Sự an toàn của hệ mật mã AES cũng phụ thuộc vào việc      lOMoAR cPSD| 60701415
quản lý và bảo vệ khóa mật, bao gồm việc sử dụng các biện pháp bảo mật phù hợp như việc 
lưu trữ khóa mật an toàn, và chỉ cho phép quyền truy cập tới các người dùng cần thiết. 
Khả năng chống các cuộc tấn công cơ chế mã hóa hàng loạt (ciphertext-only attacks): 
AES được thiết kế để chống lại các cuộc tấn công này bằng cách làm cho mối quan hệ giữa 
đầu ra và khóa trở nên rất phức tạp, làm cho việc phân tích mối quan hệ này trở nên vô cùng  khó khăn. 
DES (Data Encryption Standard) và 3DES (Triple Data Encryption Standard): Là một 
trong những thuật toán mật mã đối xứng đầu tiên và đã từng được sử dụng phổ biến trong quá 
khứ. Tuy nhiên, do DES bị coi là không đủ mạnh trước các phương pháp tấn công hiện đại, 
3DES đã được phát triển để cung cấp mức độ bảo mật cao hơn bằng cách áp dụng DES ba lần.   
Hình 2.5.3. Mô tả thuật toán DES 
Ứng dụng: Mặc dù không còn được sử dụng rộng rãi trong các hệ thống mới, DES và 
3DES vẫn được sử dụng trong một số ứng dụng cũ và trong một số quốc gia vì lý do tương 
thích hoặc yêu cầu pháp lý. 
Độ an toàn: DES (Data Encryption Standard) là một trong những thuật toán mã hóa 
đối xứng đầu tiên và phổ biến nhất từ trước đến nay. Tuy nhiên, với sự phát triển của công 
nghệ, DES đã trở nên không còn an toàn như trước. Dưới đây là một số lý do vì sao DES 
không còn được coi là an toàn: 
Kích thước khóa nhỏ: DES sử dụng khóa có kích thước là 56 bits, làm cho việc thực 
hiện các cuộc tấn công brute-force (cố gắng tất cả các khả năng cho từng khóa) trở nên khả 
thi trong thời gian ngắn, đặc biệt là với sức mạnh tính toán hiện đại. 
Sự tiên đoán được (Predictable): Cấu trúc của DES đã trở nên dễ dàng bị tiên đoán      lOMoAR cPSD| 60701415
được và các phương pháp tấn công đã được phát triển để tận dụng điều này. Cụ thể, các cuộc 
tấn công như tấn công "meet-in-the-middle" và "chosen-plaintext attack" đã được chứng minh 
là hiệu quả đối với DES. 
Quản lý khóa và công cụ: Sự an toàn của DES cũng phụ thuộc vào việc quản lý và bảo 
vệ khóa mật, bao gồm việc sử dụng các biện pháp bảo mật phù hợp như việc lưu trữ khóa mật 
an toàn, và chỉ cho phép quyền truy cập tới các người dùng cần thiết. Tuy nhiên, với kích 
thước khóa nhỏ, việc này trở nên khó khăn. 
Tiến triển của công nghệ mã hóa: Các thuật toán mã hóa đối xứng hiện đại như AES 
(Advanced Encryption Standard) được coi là an toàn hơn DES, do sử dụng khóa có kích thước 
lớn hơn và độ phức tạp cao hơn trong quá trình mã hóa và giải mã. 
Blowfish và Twofish: Là hai thuật toán mã hóa đối xứng khác nhau nhưng cùng được 
phát triển bởi Bruce Schneier. Blowfish là một thuật toán mã hóa khối, trong khi Twofish là 
một thuật toán mã hóa dựa trên mạng Feistel.        lOMoAR cPSD| 60701415  
Hình 2.5.4. Mô tả thuật toán Blowfish 
Ứng dụng: Cả Blowfish và Twofish đã được sử dụng trong các ứng dụng mã hóa dữ 
liệu như phần mềm mã hóa file và trong giao thức mã hóa VPN (Virtual Private Network). 
Độ an toàn: Blowfish và Twofish đều là thuật toán mã hóa đối xứng có khả năng cung 
cấp mức độ an toàn cao. Dưới đây là một cái nhìn tổng quan về độ an toàn của cả hai thuật  toán: 
Kích thước khóa: Blowfish sử dụng khóa có độ dài từ 32 bits đến 448 bits. Với kích 
thước khóa lớn, Blowfish có khả năng chống lại các cuộc tấn công brute-force. 
Tiền xử lý: Blowfish thực hiện một số bước tiền xử lý để tạo ra các bản mã khác nhau 
từ cùng một khóa, điều này làm tăng độ phức tạp và độ an toàn của thuật toán.      lOMoAR cPSD| 60701415
Tiến triển công nghệ: Mặc dù vẫn được coi là an toàn, Blowfish đã không còn được sử 
dụng rộng rãi trong các ứng dụng mới vì có sự ra đời của các thuật toán mã hóa mới hơn như 
AES, cũng như các vấn đề về bản quyền và sự phát triển của các thuật toán mã hóa mã nguồn  mở. 
Kích thước khóa: Twofish sử dụng khóa có độ dài từ 128 bits đến 256 bits, giúp tăng 
cường độ an toàn của thuật toán. 
Sự linh hoạt: Twofish được thiết kế để có khả năng hoạt động hiệu quả trên nhiều nền 
tảng và môi trường khác nhau, làm cho nó trở thành một lựa chọn phổ biến cho các ứng dụng  mã hóa đa dạng. 
Khả năng chống các cuộc tấn công: Twofish có thể chống lại các cuộc tấn công như tấn 
công phân tích miền văn bản (plaintext), tấn công đối với bản mã đã biết (knownplaintext 
attack), và tấn công phân tích trực tiếp (brute-force attack) trong điều kiện có kích thước khóa  đủ lớn.   
Hình 2.5.5. Mô tả thuật toán RC4 
Ứng dụng: RC4 đã được sử dụng rộng rãi trong các giao thức bảo mật như WEP (Wired 
Equivalent Privacy) và SSL (Secure Sockets Layer), mặc dù sau này đã bị thay thế bởi các 
thuật toán mạnh hơn do các lỗ hổng bảo mật. 
Độ an toàn: Thuật toán RC4 (Rivest Cipher 4) đã từng được sử dụng rộng rãi trong các 
ứng dụng bảo mật, nhưng hiện nay nó không còn được coi là an toàn do các vấn đề bảo mật 
đã được phát hiện và được công bố. Dưới đây là một số lý do vì sao RC4 không còn được coi  là an toàn: 
Cấu trúc yếu: Cấu trúc của RC4 có một số vấn đề an ninh, bao gồm sự hiệu quả của 
thuật toán tìm kiếm và các lỗi trong quá trình khởi tạo khóa.      lOMoAR cPSD| 60701415
Cuộc tấn công đối với khóa: Có các phương pháp tấn công như "fluhrer, mantin and 
shamir" (FMS) attack và "key reconstruction" attack cho phép tấn công viên phục hồi khóa từ 
dữ liệu được mã hóa. Điều này làm cho RC4 trở nên dễ dàng bị tấn công. 
Thiên về hiệu suất: Mặc dù nhanh chóng và đơn giản, RC4 không được thiết kế để đối 
phó với một số vấn đề bảo mật quan trọng, bao gồm việc chống lại các cuộc tấn công phổ biến 
như các cuộc tấn công với văn bản đã biết. 
Khả năng đối phó với tấn công đáng ngờ: Có nhiều cuộc tấn công đối với RC4 đã được 
công bố và đã được nghiên cứu rộng rãi, làm giảm sự tin cậy vào thuật toán. 
Mật mã không đối xứng (Asymmetric Cryptography): Trái ngược với mật mã đối xứng, 
mật mã không đối xứng sử dụng cặp khóa: một khóa công khai (public key) và một khóa bí 
mật (private key). Khóa công khai được chia sẻ công khai và được sử dụng để mã hóa thông 
tin, trong khi khóa bí mật được giữ bí mật và được sử dụng để giải mã thông tin. Mật mã 
không đối xứng làm giảm đáng kể vấn đề của việc quản lý khóa trong mật mã đối xứng, bởi 
vì khóa công khai có thể được phổ biến mà không gây nguy cơ cho tính bảo mật.   
Hình 2.5.6. Mô tả Hệ mật mã bất đối xứng Một 
vài thuật toán của hệ mật mã không đối xứng như sau: 
RSA (Rivest-Shamir-Adleman): Là một thuật toán mật mã không đối xứng phổ biến 
nhất, dựa trên việc sử dụng hai khóa: khóa công khai và khóa bí mật.      lOMoAR cPSD| 60701415  
Hình 2.5.7. Mô tả thuật toán RSA 
Ứng dụng: RSA được sử dụng rộng rãi trong bảo mật dữ liệu truyền tải trên internet, 
như trong giao thức HTTPS để bảo vệ thông tin cá nhân, giao dịch tài chính trực tuyến, chữ 
ký số, và trong việc tạo ra các kênh truyền tải an toàn. 
Độ an toàn: Hệ mật mã RSA (Rivest-Shamir-Adleman) là một trong những hệ mật mã 
công khai phổ biến nhất và được sử dụng rộng rãi trong thực tế. Tính an toàn của hệ mật mã 
RSA phụ thuộc vào khả năng của người tấn công để phá vỡ các thuật toán toán học mà RSA 
dựa trên, chẳng hạn như phân tích số nguyên tố lớn, dựa vào sự khó khăn của bài toán nguyên 
tố lớn, giải phương trình đồng dư và các thuật toán tìm kiếm giải pháp khác. 
Kích thước khóa: Kích thước của khóa RSA ảnh hưởng trực tiếp đến độ an toàn của hệ 
thống. Kích thước khóa lớn hơn thì cần nhiều tính toán hơn cho cả hai quá trình mã hóa và 
giải mã, đồng thời cũng khó khăn hơn cho người tấn công để phá vỡ hệ thống. Hiện nay, kích 
thước khóa an toàn thường được sử dụng là 2048 bits hoặc cao hơn. 
Sự ngẫu nhiên của khóa: Việc tạo ra các khóa ngẫu nhiên và đủ lớn là rất quan trọng để 
tránh các cuộc tấn công dựa trên việc tìm ra mẫu hoặc dãy nhất định trong các khóa. 
Sự an toàn của các thuật toán toán học liên quan: Độ an toàn của RSA phụ thuộc vào 
sự khó khăn của các bài toán toán học liên quan, chẳng hạn như việc phân tích một số nguyên 
tố thành các thừa số nguyên tố, giải phương trình đồng dư và các thuật toán tìm kiếm giải pháp  khác. 
Quản lý khóa và công cụ: Sự an toàn của hệ mật mã RSA cũng phụ thuộc vào việc quản 
lý và bảo vệ khóa mật và các thông tin mật khác, bao gồm việc sử dụng các công cụ mã hóa 
và giải mã một cách an toàn. 
ECC (Elliptic Curve Cryptography): Sử dụng các điểm trên đường cong elliptic để tạo 
ra các cặp khóa công khai và khóa bí mật.      lOMoAR cPSD| 60701415  
Hình 2.5.8. Mô tả thuật toán ECC 
Ứng dụng: ECC thường được sử dụng trong các thiết bị có tài nguyên hạn chế, như các 
thiết bị di động và IoT (Internet of Things), do nó cung cấp mức độ bảo mật tương đương với 
RSA nhưng với kích thước khóa nhỏ hơn, giảm bớt tải cho hệ thống và tiết kiệm năng lượng. 
Độ an toàn: Thuật toán ECC (Elliptic Curve Cryptography) là một trong những phương 
pháp mã hóa khóa công khai phổ biến nhất hiện nay. ECC sử dụng các phép toán trên điểm 
trên các đường cong elip để thực hiện mã hóa và chữ ký số. Dưới đây là một số yếu tố quan 
trọng ảnh hưởng đến độ an toàn của thuật toán ECC: 
Kích thước khóa nhỏ: So với các thuật toán khóa công khai truyền thống như RSA, 
ECC yêu cầu kích thước khóa nhỏ hơn để cung cấp cùng mức độ an toàn. Điều này làm cho 
ECC trở thành một lựa chọn hấp dẫn trong các ứng dụng yêu cầu tài nguyên tính toán và băng  thông hạn chế. 
Kích thước khóa và độ an toàn: ECC cung cấp mức độ an toàn tương đương với RSA 
khi sử dụng kích thước khóa nhỏ hơn. Ví dụ, một khóa ECC với độ dài 256 bits có độ an toàn 
tương đương với một khóa RSA có độ dài 3072 bits. 
Quản lý khóa và công cụ: Sự an toàn của hệ mật mã ECC cũng phụ thuộc vào việc quản 
lý và bảo vệ khóa mật, bao gồm việc sử dụng các biện pháp bảo mật phù hợp như việc lưu trữ 
khóa mật an toàn và chỉ cho phép quyền truy cập tới các người dùng cần thiết.      lOMoAR cPSD| 60701415
Tóm lại, ECC là một thuật toán mã hóa mạnh mẽ và hiệu quả, được sử dụng rộng rãi 
trong các ứng dụng bảo mật ngày nay. Độ an toàn của nó phụ thuộc vào sự khó khăn của vấn 
đề ECDLP và việc sử dụng kích thước khóa phù hợp. 
DSA (Digital Signature Algorithm): Là một thuật toán tạo chữ ký số, sử dụng trong quy 
trình xác nhận danh tính và xác minh tính toàn vẹn của thông tin.   
Hình 2.5.9. Mô tả thuật toán RSA 
Ứng dụng: DSA được sử dụng trong các giao thức xác nhận và chứng thực, như giao 
thức SSH (Secure Shell) và giao thức TLS (Transport Layer Security). 
Độ an toàn: Hệ mật mã DSA (Digital Signature Algorithm) là một thuật toán chữ ký số 
dựa trên hệ mật mã khóa công khai. Tính an toàn của hệ mật mã DSA phụ thuộc vào sự khó 
khăn của bài toán phân tích nhỏ hơn hoặc tìm kiếm giải pháp cho các vấn đề toán học mà thuật 
toán DSA dựa trên. Dưới đây là một số yếu tố quan trọng ảnh hưởng đến độ an toàn của DSA: 
Kích thước khóa: Kích thước của các tham số trong hệ mật mã DSA, như kích thước 
của số nguyên tố và khóa, ảnh hưởng trực tiếp đến độ an toàn của thuật toán. Kích thước lớn 
hơn thì làm tăng độ khó của việc tìm kiếm giải pháp cho các vấn đề toán học liên quan, và do 
đó tăng cường độ an toàn của hệ thống DSA. 
Ngẫu nhiên: Việc tạo ra các tham số ngẫu nhiên, bao gồm cả khóa và số nguyên tố, là 
rất quan trọng để ngăn chặn các cuộc tấn công dựa trên việc tìm ra các mẫu hoặc dãy nhất  định trong các tham số. 
Phát hiện số nguyên tố không an toàn: DSA dựa trên việc chọn một số nguyên tố ngẫu 
nhiên. Nếu một số nguyên tố không an toàn được chọn, thì sẽ dễ dàng cho người tấn công phá 
vỡ hệ thống. Do đó, quá trình chọn số nguyên tố phải được thực hiện một cách cẩn thận.      lOMoAR cPSD| 60701415
Quản lý khóa và công cụ: Sự an toàn của hệ mật mã DSA cũng phụ thuộc vào việc quản 
lý và bảo vệ khóa mật và các thông tin mật khác, bao gồm việc sử dụng các công cụ mã hóa 
và giải mã một cách an toàn. 
ElGamal: Là một thuật toán mã hóa khóa công khai, dựa trên vấn đề Diffie-Hellman. 
Nó được sử dụng chủ yếu trong các hệ thống trao đổi khóa và mật mã.   
Hình 2.5.10. Mô tả thuật toán ElGamal 
Ứng dụng: ElGamal được sử dụng trong các giao thức bảo mật như PGP (Pretty Good 
Privacy) và OpenPGP để mã hóa và ký số dữ liệu. 
Độ an toàn: Hệ mật mã ElGamal là một hệ mật mã khóa công khai dựa trên vấn đề 
logarithm rời rạc (Discrete Logarithm Problem - DLP), nó được sử dụng cho các mục đích 
như mã hóa và chữ ký số. Tính an toàn của hệ mật mã ElGamal cũng phụ thuộc vào sự khó 
khăn của việc giải quyết vấn đề logarithm rời rạc, và có một số yếu tố khác ảnh hưởng đến độ  an toàn của nó: 
Kích thước khóa: Kích thước của các tham số trong hệ mật mã ElGamal, như kích 
thước của nhóm số nguyên tố, ảnh hưởng trực tiếp đến độ an toàn của thuật toán. Kích thước 
lớn hơn thì làm tăng độ khó của việc giải quyết vấn đề logarithm rời rạc và do đó tăng cường 
độ an toàn của hệ thống ElGamal. 
Sự ngẫu nhiên: Việc tạo ra các tham số ngẫu nhiên, bao gồm cả khóa và số nguyên tố, 
là rất quan trọng để ngăn chặn các cuộc tấn công dựa trên việc tìm ra các mẫu hoặc dãy nhất  định trong các tham số.      lOMoAR cPSD| 60701415
Phát hiện số nguyên tố không an toàn: ElGamal cũng dựa trên việc chọn một số nguyên 
tố ngẫu nhiên. Nếu một số nguyên tố không an toàn được chọn, thì sẽ dễ dàng cho người tấn 
công phá vỡ hệ thống. Do đó, quá trình chọn số nguyên tố phải được thực hiện một cách cẩn  thận. 
Quản lý khóa và công cụ: Sự an toàn của hệ mật mã ElGamal cũng phụ thuộc vào việc 
quản lý và bảo vệ khóa mật và các thông tin mật khác, bao gồm việc sử dụng các công cụ mã 
hóa và giải mã một cách an toàn. 
Bằng cách phân loại hệ mật mã thành hai loại dựa vào cách truyền khóa này, người ta 
có thể hiểu rõ hơn về cách mà các hệ mật mã hoạt động và cách chúng được triển khai trong 
các ứng dụng bảo mật thông tin. 
1.9. Tiêu chuẩn đánh giá hệ mật mã 
Để đi đến tìm hiểu về tiêu chuẩn của một hê mật mã nào đó, ta cần hiểu khái niệm về  đánh giá hệ mật mã . 
Đánh giá hệ mật mã là quá trình đánh giá và kiểm tra tính bảo mật, hiệu quả và tính 
phù hợp của một hệ thống mã hóa. Đây là một quy trình kỹ thuật tổng hợp các phương pháp 
và công cụ để đảm bảo rằng hệ mật mã hoạt động đúng cách và đáp ứng được các yêu cầu và 
tiêu chuẩn cụ thể. Dưới đây là một mô tả chi tiết về khái niệm này:  Phạm vi của Đánh giá: 
Yêu cầu và Tiêu chuẩn: Đánh giá hệ mật mã bắt đầu bằng việc xác định và hiểu rõ yêu 
cầu và tiêu chuẩn áp dụng cho hệ mật mã. Điều này bao gồm cả yêu cầu về bảo mật, hiệu suất, 
tính linh hoạt và tiện lợi. 
Mục tiêu Đánh giá: Mục tiêu của quá trình đánh giá là đảm bảo rằng hệ mật mã đáp 
ứng được các yêu cầu và tiêu chuẩn đã được xác định, cũng như đảm bảo rằng nó là an toàn, 
hiệu quả và phù hợp với môi trường triển khai. 
Các bước trong Đánh giá: 
Phân tích và Đánh giá Rủi ro: Đánh giá bắt đầu bằng việc phân tích các rủi ro tiềm ẩn 
và mối đe dọa mà hệ mật mã có thể phải đối mặt. Các rủi ro này có thể bao gồm cả các tấn 
công thông tin và các lỗ hổng bảo mật tiềm ẩn. 
Kiểm tra Hiệu suất: Đánh giá cũng bao gồm việc kiểm tra hiệu suất của hệ mật mã, bao 
gồm tốc độ mã hóa và giải mã, tải trọng hệ thống, và sử dụng tài nguyên tính toán. 
Kiểm tra Tính Phù hợp: Một phần quan trọng của đánh giá là kiểm tra tính phù hợp của 
hệ mật mã với yêu cầu và môi trường triển khai cụ thể, bao gồm cả tính linh hoạt và tiện lợi.      lOMoAR cPSD| 60701415
Các phương pháp Đánh giá: 
Kiểm tra Mã hóa: Đánh giá bao gồm việc kiểm tra các thuật toán mã hóa và giải mã 
được sử dụng trong hệ mật mã để đảm bảo tính an toàn và hiệu quả của chúng. 
Kiểm tra Quản lý Khóa: Một phần quan trọng của đánh giá là kiểm tra quản lý khóa, 
bao gồm việc tạo ra, lưu trữ, phân phối và thu hồi khóa một cách an toàn và hiệu quả. 
Kiểm tra Tương thích: Đánh giá cũng bao gồm việc kiểm tra tính tương thích của hệ 
mật mã với các hệ thống và tiêu chuẩn khác nhau, đảm bảo rằng nó có thể hoạt động hiệu quả 
trong môi trường được xác định. 
Kết quả và Cải thiện: 
Báo cáo và Đánh giá Kết quả: Sau quá trình đánh giá, một báo cáo chi tiết về kết quả 
và đánh giá sẽ được tạo ra, đưa ra các khuyến nghị cải thiện và biện pháp bảo mật cần thiết. 
Cải thiện Liên tục: Đánh giá hệ mật mã không chỉ là một quy trình một lần mà còn là 
một phần của việc liên tục cải thiện và nâng cao tính bảo mật và hiệu suất của hệ mật mã theo  thời gian. 
Tóm lại, đánh giá hệ mật mã là một quá trình quan trọng để đảm bảo tính bảo mật, hiệu 
quả và tính phù hợp của một hệ mật mã trong các ứng dụng và môi trường triển khai khác  nhau. 
Sau khi chúng ta đã có cái nhìn tổng quan về đánh giá của 1 hệ mật mã, dựa trên đó ta 
có một số tiêu chí sau để đánh giá 1 hệ mật mã, dựa trên các tiêu chí này, ta sẽ lấy đó để cải 
thiện hệ mật mã đó Bảo mật: 
Độ mạnh của thuật toán: Xác định cường độ bảo mật của thuật toán mã hóa bằng cách 
đánh giá sức mạnh của hệ thống mã hóa đối với các phương pháp tấn công phổ biến, bao gồm 
tấn công brute force, tấn công plaintext/ciphertext và tấn công phân tích phổ. Đảm bảo thuật 
toán đáp ứng các tiêu chuẩn quốc tế về bảo mật và đã được kiểm tra và chứng minh qua các 
cuộc kiểm tra bảo mật độc lập. 
Kích thước và quản lý khóa: Xác định kích thước khóa phù hợp để đảm bảo mức độ 
bảo mật mong muốn. Đánh giá các phương pháp và cơ chế quản lý khóa để đảm bảo rằng 
khóa được sinh ra, lưu trữ và quản lý một cách an toàn và hiệu quả. 
Khả năng chống lại các tấn công hiện đại: Đánh giá khả năng chống lại các tấn công 
hiện đại như tấn công quyền tương quan, tấn công mạng và tấn công phân tích bên trong. 
Xác định các cải tiến và bảo vệ bổ sung để củng cố hệ thống chống lại các mối đe dọa mới. 
Hiệu suất và tính linh hoạt:      lOMoAR cPSD| 60701415
Tốc độ và hiệu suất: Đánh giá tốc độ thực thi của thuật toán mã hóa và giải mã, bao 
gồm thời gian cần thiết để xử lý dữ liệu lớn và nhỏ. Xác định tỷ lệ nén dữ liệu, nếu có, và ảnh 
hưởng của nó đến hiệu suất tổng thể của hệ thống. 
Tính linh hoạt và tính tương thích: Đánh giá khả năng tích hợp của thuật toán vào các 
hệ thống và ứng dụng hiện tại mà không yêu cầu sự thay đổi lớn trong cơ sở hạ tầng. 
Xác định khả năng tương thích với các tiêu chuẩn và giao thức bảo mật phổ biến để 
đảm bảo tính tương thích và tính mở rộng.  Hiệu quả và chi phí: 
Chi phí triển khai và duy trì: Đánh giá chi phí triển khai và duy trì hệ mật mã, bao gồm 
chi phí cho phần cứng, phần mềm và nhân lực. Xác định các yếu tố chi phí khác nhau như 
giấy phép, quản lý và bảo trì khóa, và các cải tiến và nâng cấp sau này.