Bối cảnh và vấn đề nghiên cứu
Trong kỷ nguyên số hóa, mạng máy tính và hệ thống thông tin đóng vai trò trọng yếu trong việc trao đổi và xử lý dữ liệu giữa các cá nhân và tổ chức. Tuy nhiên, việc truyền dẫn và lưu trữ thông tin trên các mạng truyền thông công cộng luôn đối mặt với rủi ro bị nghe trộm, đánh cắp, sửa đổi hoặc phá hủy trái phép. Nguy cơ này đặc biệt nghiêm trọng đối với các cơ sở dữ liệu nhạy cảm thuộc lĩnh vực tài chính, ngân hàng, thương mại điện tử, cơ quan quản lý nhà nước và quân sự. Bên cạnh đó, tốc độ phát triển nhanh của phần mềm khiến nhiều hệ thống chưa được kiểm thử toàn diện trước khi phát hành, làm nảy sinh nhiều lỗ hổng bảo mật dễ bị khai thác.
Trước yêu cầu cấp thiết về việc bảo vệ dữ liệu, kỹ thuật mật mã học nói chung và chữ ký điện tử nói riêng đã trở thành giải pháp then chốt nhằm đảm bảo tính toàn vẹn, tính xác thực và chống chối bỏ nguồn gốc thông điệp. Nhằm làm rõ cơ sở lý thuyết và ứng dụng thực tiễn của mật mã khóa công khai, nhóm tác giả đã thực hiện đề tài nghiên cứu: "Tìm hiểu về chữ kí điện tử RSA và viết ứng dụng minh họa".
Văn bản xác định 5 nhiệm vụ nghiên cứu trọng tâm bao gồm:
- Nghiên cứu kiến trúc tổng quan về chữ ký số và hệ chữ ký số sử dụng giải thuật RSA.
- Phân tích nguyên lý hoạt động của giải thuật RSA kết hợp cùng hàm băm mật mã MD5 trong mô hình chữ ký điện tử.
- Khảo sát và tổng hợp các điểm yếu nội tại của hệ thống chữ ký số RSA.
- Nghiên cứu các phương pháp và dạng tấn công điển hình nhắm vào hệ thống mật mã RSA.
- Hiện thực hóa các ứng dụng minh họa (chương trình demo) thuật toán ký và xác thực chữ ký số trên nhiều nền tảng lập trình khác nhau.
- Đối tượng nghiên cứu: Hệ mật mã bất đối xứng RSA, thuật toán hàm băm mật mã MD5, mô hình chữ ký số và các kỹ thuật tấn công toán học trên RSA.
- Phạm vi nghiên cứu: Đề tài được thực hiện trong khuôn khổ môn học An toàn và bảo mật thông tin tại Khoa Công nghệ Thông tin, Trường Đại học Công nghiệp Hà Nội (năm 2023), tập trung vào mô hình toán học và cài đặt chương trình thực nghiệm minh họa.
Cơ sở lý thuyết và phương pháp
Đề tài vận dụng các khái niệm nền tảng của mật mã học bất đối xứng và an toàn thông tin:
- Hệ mật mã khóa công khai (Public Key Cryptography): Sử dụng một cặp khóa gồm khóa công khai ($K_{pub}$) dùng để kiểm tra tính hợp lệ của chữ ký và khóa bí mật ($K_{pr}$) do chủ thể nắm giữ dùng để tạo chữ ký số.
- Giải thuật RSA: Dựa trên độ khó của bài toán phân tích số nguyên lớn ra thừa số nguyên tố. Quy trình toán học bao gồm:
- Chọn hai số nguyên tố lớn $p$ và $q$.
- Tính modulo $N = p \times q$ và giá trị hàm số Euler $\Phi(N) = (p - 1) \times (q - 1)$.
- Chọn số mũ công khai $E$ thỏa mãn điều kiện $1 < E < \Phi(N)$ và $\gcd(E, \Phi(N)) = 1$.
- Tính số mũ giải mã bí mật $D = E^{-1} \pmod{\Phi(N)}$ thông qua thuật toán Euclide mở rộng.
- Cặp khóa công khai là $K_{pub} = {E, N}$; cặp khóa bí mật là $K_{pr} = {D, N}$.
- Phép ký: $M = \text{sig}(C) = C^D \pmod N$.
- Phép kiểm tra: $C = M^E \pmod N$.
- Hàm băm mật mã MD5 (RFC 1321): Chuyển đổi thông điệp có chiều dài tùy ý thành chuỗi đại diện (message digest/hash value) có độ dài cố định 128-bit (thể hiện dưới dạng chuỗi thập lục phân 32 ký tự). Xử lý dữ liệu theo từng khối 512-bit với các tính chất: tính xác định, tính một chiều (không thể đảo ngược), tốc độ tính toán nhanh, tính chống va chạm và hiệu ứng nở tuyết (avalanche effect).
- Thuật toán hỗ trợ: Thuật toán Euclide mở rộng để tìm phần tử nghịch đảo theo modulo và thuật toán bình phương và nhân (Square-and-Multiply) để tối ưu hóa phép tính lũy thừa theo modulo lớn.
Phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết toán học mật mã, phân tích an toàn hệ thống và phương pháp thực nghiệm phát triển phần mềm trên đa ngôn ngữ.
Thiết kế và triển khai
Nhóm nghiên cứu đã xây dựng quy trình tích hợp giữa giải thuật RSA và hàm băm MD5 để thực hiện ký và xác thực thông điệp số:
[Bên gửi: Quá trình ký]
Thông điệp gốc (Message) ---> [Hàm băm MD5] ---> Chuỗi đại diện MD1
Chuỗi đại diện MD1 + Khóa bí mật (Kpr: D, N) ---> [Giải thuật RSA] ---> Chữ ký số (Digital Signature)
Thông điệp gốc + Chữ ký số ---> Gói thông điệp đã ký (Signed Message) ---> [Gửi cho Bên nhận]
[Bên nhận: Quá trình kiểm tra chữ ký]
Gói thông điệp đã ký ---> Tách thành: Thông điệp gốc & Chữ ký số
Thông điệp gốc ---> [Hàm băm MD5] ---> Chuỗi đại diện MD1
Chữ ký số + Khóa công khai (Kpub: E, N) ---> [Giải thuật RSA] ---> Chuỗi đại diện MD2
So sánh MD1 và MD2:
- Nếu MD1 == MD2: Chữ ký hợp lệ (Thông điệp toàn vẹn, xác thực người gửi)
- Nếu MD1 != MD2: Chữ ký không hợp lệ (Thông điệp bị chỉnh sửa hoặc sai người gửi)
Quá trình triển khai kỹ thuật được phân công độc lập cho 4 thành viên nhằm kiểm chứng tính tương thích của giải thuật trên nhiều môi trường:
| STT |
Thành viên thực hiện |
Ngôn ngữ / Công nghệ |
Nhiệm vụ chính trong chương trình demo |
| 1 |
Tàng Trọng Phi |
Python |
Xây dựng giao diện và hàm tạo khóa, ký, xác thực trên Python |
| 2 |
Hoàng Kỳ Phong |
C# (System.Cryptography) |
Cài đặt hàm EuclideMoRong(), RSA_mod(), mã hóa, giải mã, ký số |
| 3 |
Nguyễn Xuân Phú |
Java |
Xây dựng chương trình demo sinh khóa, tạo và kiểm tra chữ ký trên Java |
| 4 |
Nguyễn Vi Phượng |
PHP |
Triển khai ứng dụng nền tảng Web thực hiện chức năng ký và xác thực |
Các chương trình demo đều cung cấp các chức năng tương tác:
- Giao diện tạo khóa: Cho phép người dùng sinh các tham số khóa công khai và khóa bí mật.
- Giao diện thực hiện ký: Tải lên hoặc nhập dữ liệu văn bản, thực hiện băm MD5 và mã hóa bằng khóa riêng để xuất ra chữ ký điện tử.
- Giao diện xác thực chữ ký: Nhận văn bản cùng chữ ký, kiểm tra qua hai kịch bản kiểm thử:
- Kịch bản 1 (Tài liệu nguyên vẹn): Giá trị băm $MD_1$ trùng khớp với $MD_2$, hệ thống thông báo chữ ký hợp lệ.
- Kịch bản 2 (Tài liệu bị thay đổi nội dung): Giá trị băm $MD_1$ khác biệt so với $MD_2$, hệ thống cảnh báo chữ ký không hợp lệ.
Nội dung chính theo từng chương
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
Chương I trình bày tổng quan về lĩnh vực an toàn và bảo mật thông tin, bao gồm an toàn vật lý và an toàn kỹ thuật. Tác giả nhấn mạnh sự cần thiết của việc bảo vệ tài sản thông tin trong bối cảnh các hệ thống mạng phân tán phát triển mạnh và phần mềm thường chứa các lỗ hổng chưa được kiểm tra kỹ.
Văn bản xác định 4 mục tiêu cốt lõi của an toàn thông tin:
- Tính bảo mật (Confidentiality): Ngăn chặn việc truy cập thông tin trái phép.
- Tính toàn vẹn (Integrity): Đảm bảo thông tin không bị sửa đổi, xóa bỏ trái phép trong quá trình lưu trữ và truyền tải.
- Tính xác thực (Authentication): Xác định chính xác danh tính của thực thể tạo ra thông điệp.
- Tính sẵn sàng (Availability): Đảm bảo tài nguyên thông tin luôn sẵn sàng phục vụ người dùng hợp pháp.
Chương này cũng giải thích khái niệm chữ ký số thông qua mô hình khóa công khai và đưa ra ví dụ trực quan về chiếc hộp khóa của Alice và Bob để làm rõ cơ chế phân tách giữa khóa công khai (dùng để đóng hộp/kiểm tra) và khóa bí mật (dùng để mở hộp/tạo chữ ký).
CHƯƠNG II: KẾT QUẢ NGHIÊN CỨU
Chương II là phần trọng tâm của tài liệu, bao gồm các nội dung chuyên sâu về mặt giải thuật, phân tích an toàn và triển khai phần mềm:
- Nguyên lý toán học của RSA và MD5: Trình bày chi tiết công thức tạo khóa, quy trình chia khối 512-bit và cơ chế đệm bit của thuật toán MD5 theo chuẩn RFC 1321.
- Các điểm yếu của chữ ký số:
- Lệ thuộc vào hạ tầng: Chữ ký số phụ thuộc hoàn toàn vào máy tính và các chương trình phần mềm tương thích.
- Tính bảo mật không tuyệt đối: Nguy cơ lộ khóa bí mật từ phía nhà cung cấp phần mềm, người cài đặt hệ thống, mã độc hoặc việc chủ sở hữu chuyển giao khóa cho bên thứ ba.
- Vấn đề bản gốc và bản sao: Dữ liệu số khi được sao chép không có sự khác biệt giữa bản chính và bản sao, tạo thách thức cho công tác văn thư hành chính.
- Hiệu lực theo thời gian: Giá trị pháp lý của tài liệu điện tử có thể bị nghi ngờ khi chứng thư số/chữ ký số hết hạn sử dụng.
- Đánh giá hiệu suất: Tốc độ thực hiện RSA chậm hơn 100 lần so với DES trên phần mềm và chậm hơn 1000 lần so với DES trên phần cứng. So với hệ mã DSA, RSA chậm hơn từ 100 đến 1000 lần do phải thực hiện các phép lũy thừa modulo $N$ phức tạp.
- Phân tích các dạng tấn công điển hình:
- Tấn công lặp liên tiếp (Simons & Norris): Kẻ tấn công tính chuỗi bản mã liên tiếp $C_i = C_{i-1}^e \pmod n$ cho đến khi tìm được $C_j = C$, từ đó suy ra thông điệp $M = C_{j-1}$.
- Tấn công dùng chung modulo $n$ (Simons & Norris): Khi một thông điệp $M$ được mã hóa bằng hai khóa công khai $e_1, e_2$ cùng modulo $n$ với $\gcd(e_1, e_2) = 1$, kẻ tấn công dùng thuật toán Euclide mở rộng $e_1 \cdot a + e_2 \cdot b = 1$ để khôi phục $M = C_1^a \cdot C_2^b \pmod n$.
- Tấn công số mũ công khai nhỏ (Håstad): Trường hợp $e = 3$, nếu thông điệp $M$ được gửi cho $k \ge 3$ người nhận với các modulo $n_1, n_2, n_3$ nguyên tố cùng nhau, kẻ tấn công thu thập các bản mã $C_1, C_2, C_3$ và áp dụng Định lý số dư Trung Hoa (CRT) để tính $M = \sqrt[3]{C'}$.
- Ứng dụng thực tế: Chứng thực người dùng trong các hệ thống đăng nhập, truyền tải dữ liệu an toàn, tích hợp chữ ký số trên thẻ ATM ngân hàng và nhúng các đoạn mã RSA trong ứng dụng phần mềm.
- Kết quả cài đặt demo: Mô tả cấu trúc mã nguồn, giao diện và kết quả kiểm thử trên 4 ngôn ngữ Python, C#, Java và PHP.
CHƯƠNG III: KIẾN THỨC LĨNH HỘI VÀ BÀI HỌC KINH NGHIỆM
Chương III tổng kết lại toàn bộ các nội dung lý thuyết đã nghiên cứu về hệ thống chữ ký số RSA và quy trình mã hóa băm MD5, đồng thời nêu các kinh nghiệm thu nhận được trong quá trình lập trình thực nghiệm và định hướng mở rộng nghiên cứu.
Kết quả và đóng góp
Tài liệu đã tổng hợp các kết quả nghiên cứu lý thuyết và thực nghiệm:
| Tiêu chí |
Dữ liệu định lượng / Kết quả ghi nhận trong văn bản |
| Kích thước băm MD5 |
128-bit (chuỗi thập lục phân 32 ký tự), xử lý trên các khối 512-bit |
| So sánh tốc độ RSA với DES |
RSA chậm hơn 100 lần (trên phần mềm) và chậm hơn 1000 lần (trên phần cứng) |
| So sánh tốc độ RSA với DSA |
RSA chậm hơn DSA từ 100 đến 1000 lần |
| Điều kiện tấn công Håstad |
Số mũ công khai $e = 3$, số lượng bản mã thu thập $k \ge 3$ |
| Triển khai thực nghiệm |
4 chương trình demo độc lập trên 4 ngôn ngữ: Python, C#, Java, PHP |
| Kiểm thử chức năng |
Xác thực thành công khi dữ liệu nguyên vẹn; phát hiện và từ chối khi dữ liệu bị sửa đổi |
Đóng góp của tài liệu thể hiện ở việc hệ thống hóa các lỗ hổng toán học và rủi ro vận hành của chữ ký số RSA, đồng thời cung cấp mã nguồn minh họa chi tiết giúp kiểm chứng quy trình ký số trên nhiều nền tảng lập trình.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế được chỉ ra trong văn bản:
- Hiệu suất xử lý của RSA còn thấp đối với các tệp tin có dung lượng lớn do chi phí tính toán lũy thừa modulo cao.
- Tồn tại các rủi ro bảo mật toán học khi lựa chọn tham số không an toàn (như số mũ công khai nhỏ hoặc dùng chung modulo $n$).
- Chữ ký số phụ thuộc nhiều vào an toàn của phần mềm đầu cuối và công tác quản lý khóa bí mật của người dùng.
- Hướng phát triển:
- Tối ưu hóa các thuật toán xử lý số học lớn để nâng cao tốc độ mã hóa và giải mã.
- Nghiên cứu và áp dụng các hàm băm có độ an toàn cao hơn thay thế cho MD5.
- Mở rộng ứng dụng chữ ký số tích hợp với hạ tầng khóa công khai (PKI) và các dịch vụ xác thực số trong thực tế.
Giá trị tham khảo
Báo cáo là tài liệu tham khảo hữu ích cho:
- Sinh viên chuyên ngành Công nghệ thông tin, An toàn thông tin và Kỹ thuật phần mềm đang học tập các môn học về Mật mã học, An toàn mạng và Bảo mật hệ thống.
- Lập trình viên cần tham khảo thuật toán cài đặt chi tiết của RSA (thuật toán Euclide mở rộng, tính lũy thừa theo modulo) và quy trình tích hợp hàm băm tạo chữ ký điện tử trên các ngôn ngữ Python, C#, Java và PHP.
- Người nghiên cứu về an toàn hệ thống quan tâm đến các kịch bản tấn công toán học kinh điển vào hệ mật mã RSA (tấn công lặp, tấn công module dùng chung, tấn công Håstad).
Câu hỏi thường gặp
1. Quy trình tạo và kiểm tra chữ ký số RSA kết hợp MD5 được thực hiện như thế nào?
Bên gửi tính giá trị băm MD5 (128-bit) của thông điệp, sau đó mã hóa giá trị băm này bằng khóa bí mật RSA ($D, N$) để tạo chữ ký số và đính kèm cùng thông điệp. Bên nhận tính lại giá trị băm MD5 ($MD_1$) của thông điệp nhận được, đồng thời dùng khóa công khai RSA ($E, N$) của người gửi để giải mã chữ ký số thu được giá trị băm $MD_2$. Nếu $MD_1 = MD_2$, chữ ký hợp lệ và thông điệp được đảm bảo toàn vẹn.
2. Thuật toán tạo khóa RSA trong tài liệu được tính toán qua những bước nào?
Quy trình gồm 4 bước: (1) Chọn 2 số nguyên tố $p, q$; (2) Tính $N = p \times q$ và $\Phi(N) = (p-1)(q-1)$; (3) Chọn số ngẫu nhiên $E$ sao cho $1 < E < \Phi(N)$ và $\gcd(E, \Phi(N)) = 1$; (4) Tính $D = E^{-1} \pmod{\Phi(N)}$. Kết quả thu được khóa công khai $K_{pub} = {E, N}$ và khóa bí mật $K_{pr} = {D, N}$.
3. Tấn công Håstad vào hệ mật mã RSA diễn ra trong điều kiện nào?
Tấn công Håstad xảy ra khi hệ thống sử dụng số mũ công khai nhỏ ($e = 3$). Nếu cùng một thông điệp $M$ được gửi cho ít nhất 3 người nhận ($k \ge 3$) với các modulo $n_i$ nguyên tố cùng nhau, kẻ tấn công thu thập 3 bản mã $C_1, C_2, C_3$ và áp dụng Định lý số dư Trung Hoa để tính ra $M^3 \pmod{n_1 n_2 n_3}$, từ đó khai căn bậc 3 để khôi phục trực tiếp bản rõ $M$.
4. Vì sao tốc độ tính toán của hệ mật mã RSA lại chậm hơn DES và DSA?
RSA yêu cầu thực hiện các phép tính số học phức tạp trên các số nguyên lớn, đặc biệt là phép tính lũy thừa theo modulo $N$. Do đó, RSA chậm hơn hệ mã đối xứng DES khoảng 100 lần trên phần mềm và 1000 lần trên phần cứng, đồng thời chậm hơn hệ mã DSA từ 100 đến 1000 lần.
5. Nhóm nghiên cứu đã thực hiện kiểm thử chương trình demo trên những ngôn ngữ nào và với kịch bản nào?
Chương trình demo được triển khai trên 4 ngôn ngữ: Python (Tàng Trọng Phi), C# (Hoàng Kỳ Phong), Java (Nguyễn Xuân Phú) và PHP (Nguyễn Vi Phượng). Các chương trình đều được kiểm thử qua hai kịch bản: (1) Tài liệu không thay đổi (kết quả xác thực thành công); (2) Tài liệu bị chỉnh sửa nội dung (kết quả cảnh báo chữ ký không hợp lệ).
Kết luận
Báo cáo bài tập lớn của nhóm sinh viên Trường Đại học Công nghiệp Hà Nội đã trình bày hệ thống và chi tiết về cơ sở lý thuyết mật mã học của chữ ký điện tử RSA kết hợp hàm băm MD5. Tài liệu không chỉ làm rõ các bước toán học sinh khóa, ký và xác minh dữ liệu mà còn phân tích sâu các điểm yếu vận hành và các phương thức tấn công toán học nguy hiểm nhắm vào RSA. Kết quả thực nghiệm với 4 ứng dụng demo trên các nền tảng Python, C#, Java và PHP đã minh chứng rõ ràng nguyên lý hoạt động và tính ứng dụng của chữ ký số trong việc bảo vệ an toàn thông tin.