



















Preview text:
  lOMoAR cPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
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 
ĐỀ TÀI 1: NGHIÊN CỨU VỀ HỆ MÃ HÓA VÀ GIẢI MÃ RSA TRONG DOANH 
NGHIỆP VỪA VÀ NHỎ       
Sinh viên thực hiện  Lớp  Khóa  Trần Văn Bá  DC.CNTT.12.10.13  12  Nguyễn Ngọc Hải  DC.CNTT.12.10.13  12  Nguyễn Thị Thu Phương  DC.CNTT.12.10.13  12  Đào Huy Toàn  DC.CNTT.12.10.13  12  Nguyễn Tuấn Việt  DC.CNTT.12.10.13  12  Bắc Ninh, năm 2024    lOMoAR cPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
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  Nhóm: 1 
ĐỀ TÀI 1: NGHIÊN CỨU VỀ HỆ MÃ HÓA VÀ GIẢI MÃ RSA TRONG DOANH 
NGHIỆP VỪA VÀ NHỎ     STT 
Sinh viên thực hiện 
Mã sinh viên Điểm bằng số Điểm bằng chữ   1  Trần Văn Bá  20213849    2  Nguyễn Ngọc Hải  20210688    3  Nguyễn Thị Thu Phương  20213656    4  Đào Huy Toàn  20213765    5  Nguyễn Tuấn Việt  20213704      CÁN BỘ CHẤM 1  CÁN BỘ CHẤM 2   
(Ký và ghi rõ họ tên) 
 (Ký và ghi rõ họ tên)    lOMoAR cPSD| 60701415 MỤC LỤC 
DANH MỤC BẢNG BIỂU VÀ SƠ ............................................................................. 4 
Chương 1. Tổng quan về đề tài..................................................................................... 5 
1.1. Giới thiệu ............................................................................................................... 5 
1.2. Lý do chọn đề tài ................................................................................................... 5 
Chương 2. Giới thiệu thuật toán ................................................................................... 7 
2.1. Giới thiệu ............................................................................................................... 7 
2.2. Yêu cầu thuật toán RSA ...................................................................................... 11 
2.3. Ứng dụng của thuật toán RSA ............................................................................. 17 
2.4. Ưu và nhược điểm của thuật toán RSA ............................................................... 19 
Chương 3. Cài đặt ....................................................................................................... 20 
3.1. Giới thiệu về ngôn ngữ ........................................................................................ 20 
3.2. Cài đặt .................................................................................................................. 21 
3.2.1 Mã hoá......................................................................................................... 21 
3.2.2 Kết quả ........................................................................................................ 42 
Kết luận ....................................................................................................................... 44 
Kết quả đạt được ......................................................................................................... 44 
Hướng phát triển ......................................................................................................... 44 
DANH MỤC SÁCH THAM KHẢO.......................................................................... 46      lOMoAR cPSD| 60701415
DANH MỤC BẢNG BIỂU VÀ SƠ 
Hình 1: Sơ đồ cách thực hoạt động về thuật toán RSA................................................7 
Hình 2: Mã hoá đối xứng............................................................................................10 
Hình 3: Giao diện mã hoá rsa.....................................................................................22 
Hình 4: Giao diện khi tạo khoá tự động......................................................................36 
Hình 5: Giao diện mã hoá và giải mã.........................................................................36 
Hình 6: Giao diện khi tạo mã tuỳ chọn.......................................................................37 
Hình 7: Giao diện mã hoá và giải mã.........................................................................37        lOMoAR cPSD| 60701415
Chương 1. Tổng quan về đề tài  1.1. Giới thiệu 
Đề tài nghiên cứu về hệ mã hóa và giải mã RSA trong doanh nghiệp vừa và nhỏ là 
một chủ đề quan trọng trong lĩnh vực an ninh thông tin. RSA là một thuật toán mã hóa 
và giải mã chìa khóa công khai phổ biến được sử dụng rộng rãi trong việc bảo vệ thông 
tin quan trọng trên mạng Internet và trong các hệ thống máy tính. Trong bối cảnh môi 
trường kinh doanh ngày càng phức tạp và mối đe dọa về an ninh thông tin ngày càng 
gia tăng, việc hiểu và triển khai RSA trong các doanh nghiệp vừa và nhỏ (SMEs) là  cực kỳ quan trọng. 
Đề tài này nhằm mục đích nghiên cứu về cách thức triển khai hệ thống mã hóa và 
giải mã RSA trong các doanh nghiệp vừa và nhỏ, đặc biệt là trong ngữ cảnh của ngân 
hàng dữ liệu, bảo vệ thông tin khách hàng, giao dịch điện tử và quản lý rủi ro an ninh  thông tin. 
Các mục tiêu cụ thể của nghiên cứu bao gồm: 
- Phân tích và đánh giá hiệu quả của RSA trong việc bảo vệ dữ liệu nhạy cảm của 
doanh nghiệp vừa và nhỏ. 
- Nghiên cứu về các ứng dụng cụ thể của RSA trong các lĩnh vực như giao dịch 
tài chính trực tuyến, chứng thực người dùng, và bảo mật email. 
- Đề xuất các phương pháp triển khai RSA phù hợp với tài nguyên và nhu cầu của 
các doanh nghiệp vừa và nhỏ. 
- Phân tích rủi ro và các biện pháp phòng ngừa để đảm bảo tính bảo mật của hệ 
thống RSA trong môi trường doanh nghiệp. 
1.2. Lý do chọn đề tài. 
- Bảo mật thông tin: Trong thời đại số, việc bảo vệ thông tin cá nhân và dữ liệu 
doanh nghiệp là vô cùng quan trọng. RSA là một trong những thuật toán mã hóa công 
khai phổ biến, giúp đảm bảo tính bảo mật cao cho quá trình trao đổi thông tin.      lOMoAR cPSD| 60701415
- Ứng dụng rộng rãi: RSA được sử dụng trong nhiều lĩnh vực như chữ ký số, giao 
dịch ngân hàng, và quản lý truy cập web, làm cho nó trở thành một chủ đề nghiên cứu 
hữu ích cho các doanh nghiệp muốn áp dụng công nghệ này. 
- Tính khả thi: Doanh nghiệp vừa và nhỏ có thể không có nguồn lực lớn như các 
tập đoàn lớn, nhưng việc triển khai hệ thống mã hóa RSA là khả thi về mặt kỹ thuật và 
tài chính, giúp họ cạnh tranh bằng cách sử dụng công nghệ tiên tiến. 
- Nhu cầu thực tế: Với sự gia tăng các mối đe dọa an ninh mạng, việc nghiên cứu 
và áp dụng các giải pháp mã hóa mạnh mẽ như RSA trở nên cấp thiết, đặc biệt là trong 
bối cảnh doanh nghiệp vừa và nhỏ thường xuyên trở thành mục tiêu của các cuộc tấn  công mạng. 
- Đổi mới công nghệ: Nghiên cứu về RSA cũng mở ra cơ hội cho doanh nghiệp 
cập nhật và đổi mới hệ thống công nghệ thông tin của mình, giúp họ duy trì sự an toàn 
và hiệu quả trong kinh doanh.        lOMoAR cPSD| 60701415
Chương 2. Giới thiệu thuật toán  2.1. Giới thiệu. 
RSA là một thuật toán hay còn gọi là hệ mã hóa đối xứng được sử dụng cho các mục 
đích bảo mật. Nó cho phép mã hóa khóa công khai và được sử dụng phổ biến, rộng rãi 
để đảm bảo an toàn cho các dữ liệu nhạy cảm đặc biệt là những dữ liệu gửi qua mạng 
Internet. Thuật toán này sử dụng mật mã khóa công khai (còn gọi là mã hóa không đối 
xứng – asymmetric encryption), vì vậy nó sử dụng hai khóa khác nhau để mã hóa 
(encrypt) và giải mã (decrypt) dữ liệu. Trong RSA, một cặp khóa được tạo ra trong đó 
một khóa tiết lộ với thế giới bên ngoài, được gọi là khóa công khai (public key) và 
khóa còn lại giữ bí mật cho người dùng, được gọi là khóa riêng tư (private key). Họ đã 
phát triển thuật toán này để giải quyết hai vấn đề chính: tạo thông tin liên lạc an toàn 
mà không cần phải tin tưởng một điều phối viên phân phối khóa riêng biệt với khóa 
của bạn và để xác minh một thư đến từ người gửi đã xác nhận quyền sở hữu.   
Hình 1: Sơ đồ cách thực hoạt động về thuật toán RSA 
Thuật toán mã hóa RSA có những đặc điểm nổi bật sau đây: 
Hệ mã hóa bất đối xứng: đặc biệt là thuật toán RSA (Rivest-Shamir Adleman), là một 
trong những phương pháp quan trọng nhất trong lĩnh vực bảo mật thông tin. Thuật toán      lOMoAR cPSD| 60701415
này đã trở thành một trong những công cụ cơ bản không thể thiếu trong việc bảo vệ 
thông tin trên Internet và trong các ứng dụng khác đòi hỏi tính bảo mật cao. RSA sử 
dụng một cặp khóa, bao gồm khóa công khai (public key) và khóa bí mật (private key), 
để mã hóa và giải mã thông tin. 
Cặp khóa và quá trình mã hóa/giải mã khóa công khai và khóa bí mật: RSA sử dụng 
cặp khóa này để thực hiện quá trình mã hóa và giải mã. Khóa công khai được chia sẻ 
công khai và dùng để mã hóa dữ liệu trước khi gửi đi. Trong khi đó, khóa bí mật chỉ 
được người nhận giữ và sử dụng để giải mã dữ liệu nhận được.  Quá trình mã hóa: 
Khi A muốn gửi một thông điệp cho B, A sử dụng khóa công khai của B để mã hóa 
thông điệp của mình trước khi gửi đi. Cách mã hóa này đảm bảo rằng chỉ có B (người 
có khóa bí mật tương ứng) mới có thể giải mã thông điệp đó. Điều này giúp bảo vệ 
thông điệp trên đường truyền mà không cần phải tiết lộ khóa bí mật của B. 
Quá trình giải mã: 
B nhận được thông điệp đã được mã hóa và sử dụng khóa bí mật của mình để giải mã. 
Với khóa bí mật, B có thể dễ dàng giải mã thông điệp mà chỉ có B mới có khả năng  đọc được.  Mô tả hệ mã RSA:  Sinh khóa. 
Chọn hai số nguyên tố phân biệt 𝑝,𝑞 và tính tích của chúng 𝑛 = 𝑝𝑞. 
Chọn một số nguyên 𝑑 nguyên tố cùng nhau với 𝜑(𝑛)=(𝑝−1)(𝑞−1). 
Tính 𝑒 ≡ 𝑑−1(𝑚𝑜𝑑𝜑(𝑛)). 
Công bố khóa chung 𝑒 và giữ 𝑑 làm khóa riêng .𝑛 là thông tin công khai.  Mã hóa. 
Không gian văn bản là ℤ𝑛={0,1,2,...,𝑛−1}. 
Một văn bản 𝑚 ∈ ℤ𝑛 được mã hóa thanh 𝑐 ≡ 𝑚𝑒(𝑚𝑜𝑑𝑛).      lOMoAR cPSD| 60701415 Giải mã. 
𝑐 được giải mã bằng cách tính 𝑐𝑑 ≡ 𝑚(𝑚𝑜𝑑𝑛). 
Chú ý về hệ mã RSA: 
Theo quy ước, một hệ mã trong đó các quá trình mã hóa và giải mã được tiến hành 
bằng lũy thừa sẽ được gọi là một biến thể của RSA. 
Phương trình 𝑚𝑒𝑑 ≡ 𝑚(𝑚𝑜𝑑𝑛)là yếu tố quan trọng đảm bảo sự mã hóa 𝑚𝑒 ≡𝑐(𝑚𝑜𝑑𝑛) 
và giải mã 𝑐𝑑 ≡ 𝑚(𝑚𝑜𝑑𝑛). Nói tổng quát, một khi có được phương trình 𝑚𝑒𝑑=𝑚, 
chúng ta có thể thiết lập được một biến thể của RSA. Do đó, trong mục tiếp theo đây, 
chúng tôi chỉ đưa ra các điều kiện đảm bảo cho phươngtrình 𝑚𝑒𝑑=𝑚. Một biến thể 
của RSA sẽ được ngầm nói đến đằng sau phương trình này. 
Khóa công khai và khóa riêng tư trong RSA: 
Khóa công khai (Public Key): Trong hệ mã hóa RSA, khóa công khai được chia sẻ 
công khai với mọi người. Đây là khóa được sử dụng để mã hóa dữ liệu trước khi gửi 
đi. Khóa công khai thường được đại diện bằng một số nguyên nhiều bit, và ai cũng có 
thể biết được khóa công khai của một người nào đó. 
Khóa riêng tư (Private Key): Khóa bí mật được giữ bí mật và chỉ người nhận có thể sử 
dụng nó để giải mã dữ liệu đã được mã hóa bằng khóa công khai tương ứng. Khóa bí 
mật cũng được đại diện bằng một số nguyên gồm 2048 bit và không được tiết lộ cho 
bất kỳ ai ngoài chủ sở hữu. 
Quá trình mã hóa và giải mã trong RSA: Quá trình mã hóa khi A muốn gửi một thông 
điệp cho B bằng RSA, thì A sẽ sử dụng khóa công khai của B để mã hóa thông điệp. 
Quá trình mã hóa này là một phép tính toán số học phức tạp, đảm bảo rằng thông điệp 
sau khi được mã hóa sẽ trở thành một dãy số không thể đọc được trực tiếp. Quá trình 
giải mã Khi B nhận được thông điệp đã được mã hóa, B sẽ sử dụng khóa bí mật của 
mình để giải mã. Điều này đảm bảo rằng chỉ có B mới có khả năng đọc được thông 
điệp ban đầu mà A đã gửi.      lOMoAR cPSD| 60701415  
Hình 2: Mã hoá đối xứng 
Mặc dù RSA là một thuật toán mạnh, nhưng tốc độ mã hóa và giải mã của nó không 
phải là nhanh nhất. Với các khối dữ liệu lớn, việc sử dụng RSA để mã hóa và giải mã 
có thể gây ra hiệu năng chậm. Do đó, trong các ứng dụng yêu cầu tốc độ cao, thường 
sử dụng RSA để mã hóa khóa bí mật và sử dụng một thuật toán mã hóa đối xứng như 
AES để mã hóa dữ liệu thực tế. Tóm lại, thuật toán mã hóa RSA nổi tiếng với tính bảo 
mật cao, tính linh hoạt và khả năng tạo chữ ký điện tử. 
Tuy nhiên, vì tốc độ mã hóa và giải mã chậm, nó thường được sử dụng để mã hóa khóa 
bí mật trong các ứng dụng thực tế. 
Cơ sở toán học của RSA: 
RSA dựa trên vấn đề về tính toán khó của việc phân tích một số thành tích của hai số 
nguyên tố lớn. Để tạo ra các khóa, trước hết, người tạo khóa phải chọn hai số nguyên 
tố lớn p và q. Sau đó, họ tính n = p * q và tính toán hàm Euler của n: φ(n) = (p-1)(q1). 
Khóa công khai e được chọn sao cho 1 < e < φ(n) và e là số nguyên tố cùng nhau với 
φ(n). Khóa bí mật d được chọn sao cho e * d ≡ 1 (mod φ(n)). 
Tính bảo mật của RSA 
An toàn với cuộc tấn công brute-force. Một cuộc tấn công brute-force để tìm ra khóa 
bí mật trong RSA là một nhiệm vụ không thể thực hiện trong thời gian ngắn, đặc biệt      lOMoAR cPSD| 60701415
khi sử dụng các số nguyên tố lớn. Việc tính toán ngược lại từ khóa công khai để tìm ra 
khóa bí mật đòi hỏi một lượng lớn thời gian và tài nguyên tính toán. 
Sự phức tạp của việc phân tích số nguyên tố lớn Sự phân tích số nguyên tố lớn là một 
trong những vấn đề khó nhất trong toán học và khoa học máy tính. RSA sử dụng tính 
toán này để tạo ra các khóa có độ dài lớn, từ 1024 bit trở lên, tăng cường độ an toàn  của hệ thống mã hóa. 
RSA được coi là một trong những thuật toán mã hóa khóa công khai mạnh nhất hiện 
nay. Nó dựa trên vấn đề tính toán khó của việc phân tích số nguyên tố lớn. Việc tìm ra 
khóa bí mật từ khóa công khai là một bài toán rất khó, thậm chí là không khả thi trong  thời gian hợp lý.  Tính linh hoạt: 
RSA có thể được sử dụng để mã hóa và giải mã với các khối dữ liệu khác nhau, không 
giới hạn kích thước của dữ liệu. Điều này làm cho thuật toán này phù hợp cho việc bảo 
mật thông tin trong các ứng dụng khác nhau, từ gửi email, thanh toán trực tuyến cho 
đến truyền thông an toàn. 
Chữ ký số điện tử: 
Thuật toán RSA cũng được sử dụng để tạo ra chữ ký điện tử, cho phép xác minh tính 
toàn vẹn và nguồn gốc của dữ liệu. Bằng cách sử dụng khóa bí mật để ký một tệp tin, 
người nhận có thể sử dụng khóa công khai tương ứng để xác minh tính xác thực của  chữ ký. 
2.2. Yêu cầu thuật toán RSA 
Thuật toán mã hóa RSA thoả măn 5 yêu cầu của một hệ mã hiện đại: 
Độ bảo mật cao (nghĩa là để giải mã được mà không biết khoá mật thì 
phải tốn hàng triệu năm) 
Thuật toán RSA nổi tiếng với tính bảo mật cao trong lĩnh vực mã hóa bất đối xứng. 
Dưới đây là những lý do chính khiến RSA được coi là một trong những thuật toán bảo  mật mạnh nhất:      lOMoAR cPSD| 60701415
Sự Phức Tạp của Việc Phân Tích Số Nguyên Tố Lớn: 
RSA dựa trên vấn đề về tính toán khó của việc phân tích một số thành tích của hai số 
nguyên tố lớn. Điều này có nghĩa là để giải mã một thông điệp đã được mã hóa, kẻ tấn 
công cần phải giải quyết bài toán phân tích một số thành tích của hai số nguyên tố lớn. 
Với các số nguyên tố có hàng trăm chữ số, việc này trở nên vô cùng khó khăn và tốn 
kém về thời gian và tài nguyên tính toán. 
Kích thước khóa lớn: 
RSA sử dụng các khóa có kích thước lớn, thường từ 1024 bit trở lên, để tăng cường độ 
bảo mật. Việc có các khóa lớn làm cho việc thử tất cả các khả năng để tìm ra khóa bí 
mật trở nên không khả thi trong thời gian hợp lý. Kích thước của khóa ảnh hưởng trực 
tiếp đến khả năng chịu được các cuộc tấn công brute-force. 
Khó khăn trong việc tìm số nguyên tố ngược: 
Một trong những bước quan trọng khi tạo khóa RSA là chọn hai số nguyên tố lớn p và 
q, sau đó tính n = p * q. Để tính toán ngược lại từ n để tìm ra p và q, kẻ tấn công phải 
phân tích n thành các thành phần nguyên tố của nó, điều này rất khó với các số nguyên  tố lớn. 
Tính ngẫu nhiên của các khóa: 
Khi tạo ra các cặp khóa RSA, quá trình chọn các số nguyên tố p và q là ngẫu nhiên, từ 
đó tạo ra sự không đoán trước và không thể dự đoán được của các khóa. Điều này làm 
cho việc dự đoán hoặc suy luận khóa bí mật từ khóa công khai trở nên rất khó khăn. 
Bảo mật đối với các cuộc tấn công phân tích văn bản mã hóa RSA cũng chống lại các 
cuộc tấn công thông tin bằng cách chống lại việc phân tích văn bản mã hóa (ciphertext-
only attacks). Điều này có nghĩa là khi kẻ tấn công chỉ có văn bản đã được mã hóa mà 
không có thông tin khác, việc giải mã trở nên vô cùng khó khăn. 
Sự đa dạng trong ứng dụng sử dụng:       lOMoAR cPSD| 60701415
RSA không chỉ sử dụng để mã hóa thông điệp mà còn được sử dụng để tạo chữ ký số 
(digital signatures), xác thực người dùng và các ứng dụng khác. Sự đa dạng trong cách 
sử dụng RSA giúp tăng cường tính bảo mật của nó. 
Thao tác nhanh (thao tác mã hoá và giải mã tốn ít thời gian).  
Khi sử dụng thuật toán RSA trong các ứng dụng thực tế, việc thao tác nhanh và hiệu 
quả là một yêu cầu cần thiết. Dù RSA có tính bảo mật cao, nhưng cũng đặt ra một số 
thách thức khi áp dụng trong các hệ thống thời gian thực hoặc yêu cầu xử lý nhanh. 
Dưới đây là những điểm cần lưu ý: 
Mã hóa và giải mã nhanh:  
RSA yêu cầu các phép tính số học phức tạp, đặc biệt là trong quá trình mã hóa và giải 
mã. Đối với thông điệp dài và khóa có độ dài lớn, việc tính toán có thể tốn nhiều thời 
gian. Do đó, trong các ứng dụng yêu cầu thao tác nhanh, cần phải có cơ chế tối ưu hóa 
để giảm thiểu thời gian tính toán. 
Tối ưu hóa thuật toán:  
Có nhiều kỹ thuật được sử dụng để tối ưu hóa việc thực hiện thuật toán RSA. Một số  trong số đó bao gồm: 
Tính chất cộng cuối: RSA sử dụng phép toán mũ để mã hóa và giải mã. Trong quá trình 
tính toán mũ, người ta thường áp dụng tính chất cộng cuối để giảm số lần tính toán mũ 
và tăng tốc độ xử lý. 
Chọn khóa công khai thích hợp: Việc chọn một số e phù hợp làm khóa công khai cũng 
ảnh hưởng đến tốc độ xử lý. Cần chọn e sao cho số lần lặp lại phép nhân là ít nhất để  tối ưu hóa hiệu suất. 
Sử dụng các thư viện mã nguồn mở: 
Để giảm thiểu thời gian phát triển và tối ưu hóa hiệu suất, nhiều nhà phát triển chọn sử 
dụng các thư viện mã nguồn mở đã được tối ưu hóa cho việc thao tác RSA. Các thư 
viện như OpenSSL, Bouncy Castle, hay PyCrypto giúp giảm thiểu việc viết lại thuật 
toán và tận dụng những cải tiến được thực hiện bởi cộng đồng lập trình viên.      lOMoAR cPSD| 60701415
Phân phối tính toán:  
Trong môi trường có nhiều người dùng cùng lúc, việc phân phối tính toán là quan trọng 
để tăng tốc độ xử lý. Sử dụng các máy chủ có khả năng xử lý song song hoặc phân tán 
tính toán sẽ giúp cải thiện hiệu suất khi sử dụng RSA trong hệ thống lớn. 
Xử lý thời gian thực:  
Trong một số trường hợp, như trong giao thức HTTPS hoặc các ứng dụng tương tác 
trực tiếp với người dùng, yêu cầu xử lý thời gian thực là quan trọng. Trong trường hợp 
này, việc tối ưu hóa hiệu suất của RSA trở nên đặc biệt quan trọng để đảm bảo trải 
nghiệm người dùng không bị gián đoạn. Trong tổng thể, việc thao tác nhanh và hiệu 
quả khi sử dụng thuật toán RSA đòi hỏi sự tối ưu hóa kỹ thuật và sự chọn lựa khéo léo 
của các thông số và cách thức thực hiện. Với sự cần thiết của tính bảo mật cao và yêu 
cầu về hiệu suất, việc phát triển và triển khai RSA trong môi trường yêu cầu xử lý 
nhanh là một thách thức đồng thời cũng là một cơ hội để tối ưu hóa hệ thống bảo mật. 
Có thế dùng để xác định chủ nhân (dùng làm chữ ký điện từ)  
Khi một bên muốn sử dụng khóa công khai của ai đó, việc xác nhận chủ nhân của khóa 
này là quan trọng. Để chứng thực khóa công khai, người sử dụng cần xác định rằng 
khóa công khai đó đến từ người nào, và không bị sửa đổi hay giả mạo. 
Chữ ký số là một phần quan trọng của việc xác nhận chủ nhân trong RSA. Khi một 
bên gửi thông điệp và chữ ký số của họ, bên nhận có thể sử dụng khóa công khai của 
người gửi để kiểm tra tính hợp lệ của chữ ký. 
Xác thực người dùng: RSA cũng được sử dụng trong việc xác thực người dùng, nơi 
mà người dùng cần chứng minh họ là chủ nhân của một khóa bằng cách giải mã thông 
điệp bí mật. Xác định chủ nhân của dữ liệu: Khi một bên nhận được dữ liệu đã được 
mã hóa bằng khóa công khai, việc xác định chủ nhân của dữ liệu này là quan trọng để 
đảm bảo tính bảo mật. 
Cơ chế bảo vệ khóa:       lOMoAR cPSD| 60701415
Khóa bí mật cần được bảo vệ chặt chẽ, chỉ cho phép người sở hữu khóa có thể truy 
cập. Một cách phổ biến để làm điều này là sử dụng hệ thống quản lý khóa an toàn 
(KMS) hoặc mã hóa khoa. Khóa công khai cần được phân phối một cách an toàn để 
tránh bị lộ thông tin và sử dụng sai mục đích. Các phương thức an toàn như SSL/TLS 
trong giao thức HTTPS được sử dụng để chắc chắn rằng khóa công khai không bị lộ. 
Bảo vệ khóa bí mật: Khóa bí mật cần được quản lý một cách an toàn và chặt chẽ. Chỉ 
có chủ sở hữu khóa mới có thể truy cập và sử dụng khóa này. Việc lưu trữ khóa trên 
hệ thống cần được mã hóa và bảo vệ chống lại các cuộc tấn công từ bên ngoài. 
Mật khẩu mạnh: Đối với các ứng dụng yêu cầu nhập mật khẩu để truy cập vào khóa bí 
mật, yêu cầu mật khẩu phải mạnh và khó bị đoán được. Việc sử dụng hàm hash và salt 
là cách thức phổ biến để bảo vệ mật khẩu. 
Mã hóa khóa bí mật: Trước khi lưu trữ khóa bí mật trên hệ thống, nó có thể được mã 
hóa để đảm bảo tính bảo mật. Mã hóa khóa bí mật sẽ ngăn chặn kẻ tấn công truy cập 
trực tiếp vào khóa nếu hệ thống bị xâm nhập. 
Sử dụng Hardware Security Module (HSM): HSM là một thiết bị vật lý hoặc phần 
mềm được sử dụng để bảo vệ và quản lý khóa bí mật một cách an toàn. HSM cung cấp 
một môi trường bảo mật đáng tin cậy để lưu trữ và xử lý các khóa, ngăn chặn việc truy  cập trái phép. 
Mô hình quản lý khóa an toàn (KMS): Mô hình KMS cung cấp một cơ chế để quản lý 
khóa mật mã trên toàn bộ hệ thống. Nó bao gồm việc tạo, quản lý, và phân phối các 
khóa một cách an toàn và có cấu trúc. 
Phân quyền truy cập: Yêu cầu đặt quyền truy cập chính xác vào các khóa bí mật. Chỉ 
những người được ủy quyền mới có thể truy cập và sử dụng các khóa này. 
Audit Logs: Việc ghi lại mọi hoạt động liên quan đến quản lý và sử dụng khóa bí mật 
trong logs giúp kiểm tra và phát hiện các hoạt động không bình thường hoặc xâm nhập.      lOMoAR cPSD| 60701415
Tái phân phối khóa: Trong trường hợp khẩn cấp, như khi khóa bị mất hoặc bị đánh 
cắp, cần có cơ chế tái phân phối khóa mới. Quá trình này đòi hỏi một quy trình an toàn 
để thu hồi khóa cũ và cấp phát khóa mới. 
Quản lý tuổi thọ khóa: Khóa bí mật cần được thay đổi định kỳ để đảm bảo tính an toàn. 
Việc đánh giá và thay đổi tuổi thọ của khóa là một phần quan trọng của quản lý khóa. 
Sử dụng môi trường tách biệt: Để ngăn chặn việc lộ khóa bí mật thông qua các tấn 
công side-channel, có thể sử dụng môi trường tách biệt (sandboxing) để chạy các quy 
trình liên quan đến khóa mật mã. 
Tính chính xác và an toàn:  
Trong quá trình mã hóa và giải mã, yêu cầu đảm bảo rằng không có sự thay đổi nào 
xảy ra với dữ liệu. Một lỗi nhỏ trong quá trình tính toán có thể dẫn đến dữ liệu bị hỏng  hoặc mất mát. 
Tính chính xác trong mã hóa và giải mã: Trong quá trình mã hóa, mỗi bit của thông 
điệp cần được mã hóa chính xác bằng khóa công khai. Bất kỳ thay đổi nào cũng có thể 
dẫn đến việc thông điệp không được giải mã đúng. Khi giải mã, thông điệp phải được 
khôi phục một cách chính xác và đúng đắn. Bất kỳ lỗi nào trong quá trình giải mã cũng 
có thể dẫn đến mất mát thông tin hoặc thông điệp không chính xác. 
Bảo mật khóa: Khóa công khai và khóa bí mật phải được tạo một cách ngẫu nhiên và 
có độ dài đủ lớn để đảm bảo tính bảo mật cao. Kích thước khóa thường được lựa chọn 
ít nhất 2048 bit. Khóa bí mật, đặc biệt là, phải được bảo vệ chặt chẽ. Nếu khóa bí mật 
bị lộ, toàn bộ hệ thống mã hóa RSA có thể bị đe dọa. 
Chữ ký số hợp lệ: RSA cũng được sử dụng để tạo và kiểm tra chữ ký số, một cách để 
xác minh tính hợp lệ của một thông điệp. Người gửi sử dụng khóa bí mật để tạo chữ 
ký, trong khi người nhận sử dụng khóa công khai để kiểm tra chữ ký này. Nếu chữ ký 
không hợp lệ, thông điệp được coi là không tin cậy. 
Quản lý khóa an toàn: Việc quản lý khóa bí mật là một phần quan trọng của tính an 
toàn trong RSA. Khóa bí mật cần được lưu trữ và quản lý một cách an toàn, thường      lOMoAR cPSD| 60701415
thông qua việc mã hóa hoặc sử dụng các hệ thống quản lý khóa an toàn (KMS). Đồng 
thời, cần có các quy trình để thu hồi khóa nếu cần, chẳng hạn khi một nhân viên rời 
khỏi công ty hoặc nếu có nghi ngờ về sự an toàn của khóa. 
Xác thực người dùng và dữ liệu: RSA cung cấp cơ chế xác thực mạnh mẽ, nơi mà 
người dùng cần chứng minh họ có khóa bí mật bằng cách giải mã thông điệp hoặc tạo 
chữ ký số. Đối với dữ liệu, việc sử dụng RSA để ký và xác minh chữ ký số đảm bảo 
rằng dữ liệu không bị sửa đổi trong quá trình truyền tải. 
Kiểm tra tính đúng đắn của dữ liệu: Sau khi giải mã, thông điệp được nhận phải được 
kiểm tra để đảm bảo tính nguyên vẹn và đúng đắn của dữ liệu. Các thuật toán băm 
cũng thường được sử dụng để kiểm tra tính toàn vẹn của dữ liệu. 
2.3. Ứng dụng của thuật toán RSA  
RSA là một thuật toán mã hóa bất đối xứng, được sử dụng chủ yếu trong lĩnh vực bảo 
mật thông tin. Dưới đây là mục đích sử dụng của RSA trong bảo mật thông tin: 
Mã hóa với khóa công khai: 
RSA cho phép mã hóa dữ liệu bằng khóa công khai (public key encryption). Người gửi 
sử dụng khóa công khai của người nhận để mã hóa thông điệp. Chỉ người nhận với 
khóa riêng tư (private key) phù hợp mới có thể giải mã được thông điệp. Điều này đảm 
bảo tính bảo mật của thông tin trong quá trình truyền. 
Giải mã với khóa riêng tư: 
RSA cho phép người nhận giải mã thông điệp bằng khóa riêng tư của mình. Khóa riêng 
tư chỉ thuộc sở hữu của người nhận và không được tiết lộ cho bất kỳ ai khác. 
Nhờ đó, thông tin chỉ được giải mã bởi người nhận duy nhất. 
Chữ ký điện tử: 
RSA cũng được sử dụng để tạo chữ ký điện tử. Người gửi sử dụng khóa riêng tư của 
mình để tạo ra chữ ký điện tử cho thông điệp. Khi người nhận nhận được thông điệp 
và chữ ký điện tử, họ sẽ sử dụng khóa công khai của người gửi để xác minh tính toàn 
vẹn và xác thực của thông điệp. Trên các thẻ ATM luôn có phần chữ ký điện tử đã được      lOMoAR cPSD| 60701415
mã hóa từ chữ ký của khách hàng khi đăng ký tài khoản tại ngân hàng. Có thể nói, 
trong lĩnh vực ngân hàng, vấn đề bảo mật thông tin của khách hàng cần được đặt lên 
hàng đầu, chúng quyết định chất lượng của dịch vụ. RSA được ứng dụng để bảo mật 
dữ liệu khi người dùng thực hiện những giao dịch ngân hàng, đem lại trải nghiệm tốt 
và giúp khách hàng an tâm hơn.  Giao thức an toàn:  
Hiện nay tình trạng nghe lén, theo dõi hoạt động cũng như lấy cắp dữ liệu cá nhân trên 
mạng xã hội bị lên án và chỉ trích rất nhiều, bao gồm cả ông lớn Facebook. Không chỉ 
những trang mạng xã hội, các trang web cũng không tránh khỏi việc lưu lại các hoạt 
động, hành vi truy cập để phục vụ các mục đích Marketing. Do đó với thuật toán RSA 
giúp dữ liệu khỏi các cuộc tấn công của kẻ xấu.RSA được sử dụng trong nhiều giao 
thức an toàn như SSL/TLS để bảo vệ quá trình giao tiếp trực tuyến. Khi thiết lập kết 
nối an toàn, RSA được sử dụng để trao đổi khóa bí mật giữa hai bên thông qua quá 
trình giao tiếp. Khóa này sau đó được sử dụng để mã hóa và giải mã dữ liệu được 
truyền qua kết nối. Tóm lại, RSA được sử dụng trong bảo mật thông tin để mã hóa dữ 
liệu, giải mã dữ liệu, tạo chữ ký điện tử và thiết lập các giao thức an toàn. Thuật toán 
này đóng vai trò quan trọng trong việc đảm bảo tính toàn vẹn, xác thực và bảo mật của 
thông tin trong quá trình truyền và lưu trữ. 
Thuật toán RSA trong công nghệ thông tin:  
Trong ngôn ngữ lập trình Java, các nhà lập trình viên thường sử dụng những đoạn code 
chứa RSA để tăng tính bảo mật cho trang web và ứng dụng cũng như đảm bảo an toàn 
cho người sử dụng. Các đoạn code RSA này có thể hoạt động dưới bất kỳ sự thay đổi 
nào của môi trường. Ngoài ra, các lập trình viên cũng sử dụng các ngôn ngữ lập trình 
khác bên cạnh Java có thể tìm hiểu và ứng dụng những tính năng của RSA trong hoạt 
động làm việc và bảo mật thông tin. Ngày nay việc sử dụng các ứng dụng, trang web 
trên internet ngày càng gia tăng khiến cho vấn đề bảo mật dữ liệu càng được chú trọng. 
Những dữ liệu này có thể là những thông tin bí mật cá nhân, thông tin về tài chính, ... 
gây không ít nguy hại cho người sử dụng. Cũng chính vì lý do này mà thuật toán RSA      lOMoAR cPSD| 60701415
được biết đến và sử dụng nhiều hơn trong tất cả các lĩnh vực đặc biệt là trong ngành  ngân hàng. 
2.4. Ưu và nhược điểm của thuật toán RSA 
Ưu điểm của RSA:  
Bảo mật cao: RSA sử dụng một cặp khóa, khóa công khai và khóa bí mật, giúp tăng 
cường bảo mật cho việc mã hóa và giải mã dữ liệu. Độ bảo mật của RSA phụ thuộc 
vào độ dài của khóa, thường được đo bằng số bit. Khóa 2048 bit được coi là an toàn  trong thời gian dài. 
Phân phối khóa dễ dàng: Khóa công khai có thể được phân phối một cách công khai 
và an toàn mà không lo sợ rò rỉ thông tin. Bất kỳ ai muốn gửi tin nhắn cho người sở 
hữu khóa công khai đều có thể sử dụng nó để mã hóa tin nhắn. 
Xác thực: RSA được sử dụng rộng rãi trong việc xác thực người dùng, xác thực dữ liệu 
và xác thực tài liệu trên internet. Khi người dùng ký một tài liệu bằng chữ ký số RSA, 
điều này có nghĩa là họ chấp nhận và cam kết với nội dung của tài liệu đó. 
Kích thước khóa linh hoạt: RSA cho phép sử dụng khóa có độ dài khác nhau, từ 512 
bit đến hàng nghìn bit, tùy thuộc vào mức độ bảo mật mong muốn và hiệu suất yêu 
cầu. Điều này cho phép lựa chọn kích thước khóa phù hợp với ứng dụng cụ thể mà 
không ảnh hưởng đến bảo mật. 
Không thể giải mã ngược (One-way Function): Một trong những điểm mạnh nhất của 
RSA là khả năng không thể giải mã ngược từ khóa công khai sang khóa bí mật trong 
thời gian hợp lý. Điều này đảm bảo rằng người nhận thông điệp chỉ có thể giải mã 
được nó nếu có khóa bí mật. 
Nhược Điểm của RSA:  
Tính siệu suất: RSA có thể tốn nhiều thời gian và tài nguyên tính toán, đặc biệt là khi 
sử dụng các khóa có độ dài lớn. Quá trình mã hóa và giải mã trong RSA có thể làm 
giảm hiệu suất của hệ thống. Điều này khiến RSA không phù hợp cho các ứng dụng 
yêu cầu xử lý nhanh và hiệu suất cao.      lOMoAR cPSD| 60701415
Khả năng tấn công Brute-Force: Khi sử dụng các khóa nhỏ, RSA trở nên dễ bị tấn công 
bằng kỹ thuật brute-force, nơi mà kẻ tấn công thử từng khóa mật mã cóthể có để giải 
mã dữ liệu. Điều này đặc biệt đáng quan ngại khi sử dụng khóa có độ dài thấp. 
Khả năng tấn công chọn lọc: RSA có thể bị tấn công thông qua việc chọn lọc khóa 
công khai. Kẻ tấn công có thể tìm kiếm những khóa dễ dàng để giải mã thông điệp. 
Đây là một vấn đề nếu không sử dụng khóa có độ dài đủ lớn và ngẫu nhiên đủ. 
Không thích hợp cho dữ liệu lớn: RSA không hiệu quả cho việc mã hóa dữ liệu lớn do 
yêu cầu xử lý lớn và tốn nhiều tài nguyên tính toán. Điều này khiến RSA không phù 
hợp cho việc mã hóa và giải mã dữ liệu lớn như trong các ứng dụng lưu trữ đám mây 
hoặc truyền tải dữ liệu lớn. 
Cần phải đảm bảo khóa bí mật an toàn: Khóa bí mật trong RSA cần được bảo mật một 
cách tuyệt đối. Nếu khóa bị rò rỉ hoặc bị đánh cắp, toàn bộ hệ thống mã hóa có thể bị 
đe dọa. Việc quản lý và bảo vệ khóa bí mật là một thách thức đối với các tổ chức và cá  nhân sử dụng RSA. 
Chương 3. Cài đặt 
3.1. Giới thiệu về ngôn ngữ 
Trong bài tôi đã sử dụng hai công nghệ quan trọng trong việc phát triển ứng dụng  Windows hiện đại: 
C# (C Sharp) là một ngôn ngữ lập trình đa năng, phát triển bởi Microsoft, được sử 
dụng rộng rãi trong việc xây dựng các ứng dụng Windows, web và di động. Với cú 
pháp dễ đọc và hiểu, C# là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ, mang 
lại tính linh hoạt và hiệu suất cao cho các nhà phát triển. Được tích hợp sâu vào.NET 
Framework và .NET Core, C# cung cấp một nền tảng ổn định và mạnh mẽ cho việc 
phát triển ứng dụng đa nền tảng. 
WPF (Windows Presentation Foundation) là một công nghệ phát triển giao diện 
người dùng (GUI) mạnh mẽ của Microsoft, cho phép các nhà phát triển tạo ra các ứng 
dụng Windows với giao diện đẹp mắt và linh hoạt. Sử dụng XAML (eXtensible