Bối cảnh và vấn đề nghiên cứu

Trong kỷ nguyên công nghệ thông tin và chuyển đổi số, các giao dịch điện tử và tài liệu số đã trở thành phương thức trao đổi phổ biến trong mọi lĩnh vực đời sống xã hội. Tuy nhiên, việc chuyển đổi từ văn bản giấy sang môi trường mạng đặt ra thách thức lớn về an toàn thông tin, bao gồm việc xác định nguồn gốc tài liệu, định danh tác giả và bảo đảm tính toàn vẹn của nội dung truyền tải. Chữ ký số (Digital Signature) xuất hiện như một công cụ thiết yếu nhằm cung cấp cơ sở pháp lý cho các văn bản điện tử tương đương với tài liệu giấy truyền thống, đồng thời là phương tiện duy nhất hiện nay để xác nhận giá trị pháp lý của dữ liệu số.

Xuất phát từ thực tiễn đó, nhóm sinh viên thuộc Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Hà Nội đã thực hiện đề tài bài tập lớn môn An toàn và bảo mật thông tin với chủ đề: "Tìm hiểu về chữ ký điện tử RSA và viết ứng dụng minh họa", dưới sự hướng dẫn của ThS. Trần Phương Nhung (năm học 2022–2023).

Các nhiệm vụ và mục tiêu nghiên cứu cụ thể của đề tài bao gồm:

  1. Nắm vững các khái niệm nền tảng về an toàn và bảo mật thông tin, lý thuyết mã hóa khóa công khai và hàm băm.
  2. Khảo sát khái niệm, vai trò, ưu nhược điểm và nguyên lý hoạt động của hệ thống chữ ký điện tử.
  3. Phân loại các thuật toán chữ ký điện tử (RSA, ElGamal, DSA), trong đó tập trung đi sâu vào cấu tạo, quy trình toán học của thuật toán RSA và hàm băm MD5.
  4. Tìm hiểu các lĩnh vực ứng dụng thực tiễn của chữ ký số trong bảo mật dữ liệu, công nghệ thông tin, chính phủ điện tử và thương mại điện tử.
  5. Thiết kế và cài đặt chương trình phần mềm demo minh họa các chức năng sinh khóa, ký số và kiểm tra tính hợp lệ của chữ ký bằng ngôn ngữ Java trên nền tảng NetBeans IDE, đồng thời tìm hiểu khả năng ứng dụng trên các ngôn ngữ khác (C#, Python, PHP).

Phạm vi nghiên cứu của đề tài tập trung vào việc mô hình hóa thuật toán mật mã bất đối xứng RSA kết hợp với hàm băm MD5, áp dụng thử nghiệm trên môi trường máy tính đơn lẻ phục vụ mục đích học tập và minh họa nguyên lý.


Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình mật mã

Đề tài dựa trên nền tảng lý thuyết mật mã học hiện đại, bao gồm hai trụ cột chính:

  • Hệ mật mã khóa công khai (Asymmetric Cryptosystem): Trọng tâm là thuật toán RSA, hoạt động dựa trên độ phức tạp tính toán của bài toán phân tích một hợp số lớn thành tích của các thừa số nguyên tố. Hệ thống sử dụng cặp khóa: khóa công khai ($K_{pub} = {b, n}$) để mã hóa/xác thực và khóa bí mật ($K_{pr} = {a, p, q}$) để giải mã/ký số.
  • Hàm băm mật mã học (Cryptographic Hash Functions): Cơ chế chuyển đổi một thông điệp có độ dài tùy ý thành một chuỗi bit có độ dài cố định (thông điệp rút gọn/giá trị băm) mang tính chất một chiều và chống va chạm. Báo cáo khảo sát các chuẩn hàm băm phổ biến:
    • MD5 (Message-Digest algorithm 5): Chuẩn RFC 1321, tạo giá trị băm 128 bit.
    • Họ SHA (Secure Hash Algorithm): SHA-1 (đầu ra 160 bit), SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) và chuẩn SHA-3 (Keccak, do NIST công bố năm 2015 dựa trên cấu trúc bọt biển sponge).

Phương pháp nghiên cứu

  • Phương pháp phân tích và tổng hợp tài liệu: Thu thập, đối chiếu và hệ thống hóa các tài liệu lý thuyết chuyên ngành mật mã, tài liệu tham khảo trực tuyến và giáo trình môn học.
  • Phương pháp mô hình hóa toán học: Trình bày chi tiết các công thức toán học rời rạc, số học modulo, thuật toán Euclide mở rộng và thuật toán bình phương và nhân phục vụ quá trình sinh khóa, mã hóa và giải mã.
  • Phương pháp thực nghiệm phần mềm: Thiết kế kiến trúc chương trình, xây dựng giao diện người dùng đồ họa (GUI) và lập trình kiểm thử các ca xử lý dữ liệu (ký văn bản, xác thực chữ ký hợp lệ và phát hiện văn bản bị chỉnh sửa) trên môi trường Java.

Nội dung chính theo từng chương

Chương 1: Tổng quan

Chương 1 thiết lập cơ sở lý luận và khảo sát bức tranh tổng thể về chữ ký số cùng phạm vi ứng dụng trong thực tiễn:

  • Lý do chọn đề tài và mục tiêu: Khẳng định vai trò của chữ ký số do các cơ quan chứng thực có thẩm quyền (CA - Certificate Authority) phát hành, giúp đảm bảo tính pháp lý, tính khách quan và khả năng chống chối bỏ.
  • Khái niệm cơ bản trong chữ ký số: Định nghĩa chi tiết về khóa bí mật, khóa công khai, quá trình ký số, vai trò của người ký và người nhận.
  • Tổng quan các thuật toán chữ ký điện tử:
    • RSA: Giải thuật đơn giản, tạo khóa nhanh, bảo mật cao phụ thuộc kích thước khóa, được hỗ trợ bởi nhiều thư viện trên các ngôn ngữ lập trình.
    • ElGamal: Giải thuật có độ phức tạp cao, độ an toàn mạnh mẽ.
    • DSA: Giải thuật đơn giản, tạo chữ ký nhanh, kích thước chữ ký nhỏ, thích hợp cho các hệ thống không yêu cầu bảo mật quá khắt khe.
  • Khảo sát lĩnh vực ứng dụng thực tế:
    • Bảo mật dữ liệu: Chứng thực người dùng (xác thực OTP qua email/số điện thoại), truyền tải dữ liệu chống nghe lén/đánh cắp dữ liệu, mã hóa chữ ký trên thẻ ATM ngân hàng.
    • Công nghệ thông tin: Tích hợp thuật toán RSA vào mã nguồn Java và các nền tảng khác nhằm bảo vệ dữ liệu ứng dụng web.
    • Chính phủ điện tử: Xác thực chữ ký số trong các văn bản pháp lý tại các cơ quan quản lý nhà nước như Bộ Tài chính, Bộ Công thương.
    • Thương mại điện tử (TMĐT): Xác thực giao dịch Internet Banking, bảo đảm tính nguyên vẹn hợp đồng số, giao dịch chứng khoán trực tuyến, mua bán và đấu thầu qua mạng.

Chương 2: Kết quả nghiên cứu

Chương 2 là phần trọng tâm của báo cáo, đi sâu vào chi tiết kỹ thuật của hệ thống chữ ký số, giải thuật RSA, hàm băm MD5 và xây dựng phần mềm demo.

1. Đánh giá ưu điểm và nhược điểm của chữ ký điện tử

Báo cáo tổng hợp các đặc tính vận hành của chữ ký điện tử:

  • Ưu điểm: Đảm bảo tính toàn vẹn dữ liệu; xác thực danh tính người ký; chống thoái thác trách nhiệm; tiết kiệm thời gian và chi phí in ấn/lưu trữ giấy tờ; tạo dấu vết kiểm tra giúp truy xuất nguồn gốc dễ dàng; có thể sử dụng mọi lúc, mọi nơi; tăng cường bảo mật cho truyền thông Internet và hệ thống Blockchain.
  • Nhược điểm: Độ an toàn phụ thuộc hoàn toàn vào thuật toán mã hóa và độ dài khóa; nguy cơ bị giả mạo nếu khóa bí mật bị lộ; khó khăn trong việc kiểm chứng khi xảy ra lỗi hệ thống; sự phức tạp về hạ tầng mạng và tính tương thích thiết bị.

2. Nguyên lý hoạt động của hệ thống chữ ký số

Quy trình ký và xác thực được chuẩn hóa qua các bước tuần tự:

Giai đoạn Bên thực hiện Các bước xử lý
Tạo chữ ký Bên gửi (Người ký) 1. Tạo cặp khóa (khóa bí mật và khóa công khai).
2. Băm văn bản gốc $M$ bằng thuật toán thống nhất (MD5/SHA) thu được giá trị băm $H_1 = \text{hash}(M)$.
3. Dùng khóa bí mật mã hóa chuỗi $H_1$ để tạo ra chữ ký số $y$.
4. Gửi văn bản gốc kèm chữ ký số $y$ sang bên nhận (gửi riêng hoặc ghép chung).
Kiểm tra chữ ký Bên nhận 1. Nhận dữ liệu và tách riêng văn bản gốc $M$ và chữ ký $y$.
2. Dùng thuật toán băm thống nhất để băm văn bản gốc nhận được, thu được chuỗi $H_2 = \text{hash}(M)$.
3. Dùng khóa công khai của người gửi giải mã chữ ký $y$ để thu lại chuỗi $H_1$.
4. Đối chiếu $H_1$ và $H_2$: Nếu $H_1 = H_2$, chữ ký hợp lệ (dữ liệu nguyên vẹn, đúng người ký); nếu $H_1 \neq H_2$, dữ liệu đã bị chỉnh sửa hoặc chữ ký không hợp lệ.

3. Cấu tạo và giải thuật RSA

  • Quy trình sinh khóa (5 bước):
    1. Chọn ngẫu nhiên hai số nguyên tố lớn phân biệt $p$ và $q$.
    2. Tính modulo $n = p \times q$ và giá trị phi hàm Euler $\Phi(n) = (p - 1)(q - 1)$.
    3. Chọn một số tự nhiên $b$ (khóa công khai) thỏa mãn điều kiện: $0 < b < \Phi(n)$ và ước số chung lớn nhất $\gcd(b, \Phi(n)) = 1$.
    4. Giải phương trình đồng dư $a \equiv b^{-1} \pmod{\Phi(n)}$ bằng thuật toán Euclide mở rộng để tìm số mũ bí mật $a$.
    5. Thiết lập cặp khóa: Khóa công khai $K_{pub} = {b, n}$ và khóa bí mật $K_{pr} = {a, p, q}$.
  • Quá trình mã hóa và giải mã:
    • Mã hóa thông điệp $x \in \mathbb{Z}_n$: $y = x^b \pmod n$.
    • Giải mã bản mã $y$: $x = y^a \pmod n$ (sử dụng thuật toán bình phương và nhân để tối ưu tốc độ tính toán).
  • Cơ chế ký số: Áp dụng mã hóa lên giá trị băm $h = \text{hash}(x)$ thay vì toàn bộ văn bản để giảm kích thước lưu trữ và tăng tốc độ xử lý:
    • Hàm ký: $y = h^a \pmod n$.
    • Hàm xác thực: $h' = y^b \pmod n$; sau đó đối chiếu $h'$ với giá trị băm độc lập $h = \text{hash}(x)$.
  • Chi phí và hiệu suất tính toán:
    • Phần lớn chi phí tập trung vào phép tính lũy thừa modulo $n$. Để tối ưu, số mũ công khai $b$ (hoặc $e$) thường được chọn nhỏ, giúp thời gian mã hóa/xác thực nhanh hơn đáng kể so với thời gian giải mã/ký số.
    • Về tốc độ: RSA chậm hơn các hệ mật mã đối xứng như DES khoảng 100 lần khi cài đặt bằng phần mềm và 1000 lần khi cài đặt bằng phần cứng; đồng thời RSA chậm hơn hệ mã DSA từ 100 đến 1000 lần.

4. Cấu tạo chi tiết hàm băm MD5

Hàm băm MD5 do Ronald Rivest phát triển (cải tiến từ MD4 và MD2), xử lý xâu đầu vào $x$ có độ dài bất kỳ và tạo ra chuỗi băm cố định 128 bit.

  • Tiền xử lý: Bổ sung dãy đệm padding (bit 1 theo sau bởi các bit 0) sao cho chiều dài thông điệp đồng dư với 448 modulo 512, sau đó ghép thêm 64 bit biểu diễn độ dài ban đầu, tạo thành $N$ khối 512 bit ($M_1, M_2, \dots, M_N$).
  • Giá trị khởi tạo: Khởi tạo thanh ghi 128 bit gồm 4 từ 32 bit $a, b, c, d$ với các giá trị thập lục phân cố định:
    • $a = \text{0x01234567}$
    • $b = \text{0x89ABCDEF}$
    • $c = \text{0xFEDBCA98}$
    • $d = \text{0x76543210}$
  • Vòng lặp biến đổi: Quá trình tính toán thực hiện qua 64 vòng lặp (chia thành 4 vòng chính, mỗi vòng 16 bước biến đổi). Tại bước thứ $i$, giá trị mới của thanh ghi được tính bằng: $$t = a + f(b, c, d) + W_i + K_i$$ $$b = b + \text{ROTL}(t, s)$$ (Trong đó: các phép cộng là cộng modulo $2^{32}$; $\text{ROTL}(t, s)$ là phép dịch vòng trái $t$ đi $s$ bit; hằng số $K_j = \lfloor 2^{32} \times |\sin(j + 1)| \rfloor$; hàm phi tuyến $f(x, y, z)$ thay đổi theo từng nhóm 16 bước; $W_i$ là từ dữ liệu 32 bit trích xuất từ khối 512 bit).

Chương 3: Kiến thức lĩnh hội và bài học kinh nghiệm

Chương 3 tổng kết quá trình thực hiện bài tập lớn, đánh giá kết quả đạt được và định hướng hoàn thiện hệ thống:

  • Nội dung đã hoàn thành: Nắm vững lý thuyết an toàn thông tin, cơ chế mã hóa bất đối xứng, nguyên lý chữ ký số RSA và hàm băm MD5; hoàn thành việc phân tích, thiết kế và lập trình giao diện phần mềm hoàn chỉnh.
  • Kết quả lĩnh hội:
    • Về kiến thức: Hiểu rõ bản chất toán học của RSA và MD5, thành thạo quy trình xử lý chữ ký điện tử.
    • Về kỹ năng: Rèn luyện kỹ năng làm việc nhóm, phân chia công việc, lập trình giao diện đồ họa trên Java và kỹ năng thuyết trình báo cáo khoa học.
  • Đánh giá thuận lợi và khó khăn:
    • Thuận lợi: Được cung cấp kiến thức nền tảng từ giảng viên hướng dẫn và có đủ thời gian nghiên cứu.
    • Khó khăn: Cần tự nghiên cứu thêm các kỹ thuật lập trình giao diện nâng cao và giải quyết các vấn đề phát sinh trong giao tiếp nội bộ nhóm.

Thiết kế và triển khai

Môi trường và công cụ phát triển

  • Môi trường phát triển tích hợp (IDE): NetBeans IDE (hỗ trợ phát triển Java dạng module).
  • Môi trường thực thi: Java Virtual Machine (JVM), phân phối dưới dạng tệp thực thi .jar.

Kiến trúc chức năng của chương trình demo

Giao diện ứng dụng được chia thành các phân hệ trực quan mô phỏng hai phía người gửi và người nhận:

  1. Phân hệ Quản lý Khóa:
    • Nút Tạo khóa: Tự động sinh cặp khóa RSA công khai và bí mật.
    • Nút Lưu khóa: Xuất thông tin cặp khóa ra tệp tin trên máy tính thông qua hộp thoại lưu file.
  2. Phân hệ Gửi (Bên ký dữ liệu):
    • Hỗ trợ nhập trực tiếp nội dung văn bản vào ô văn bản hoặc nạp nội dung từ tệp tin qua nút Tệp.
    • Nút Lưu: Lưu văn bản gốc đã soạn thảo ra tệp tin.
    • Nút Tạo chữ ký: Thực hiện băm dữ liệu văn bản bằng MD5 và mã hóa giá trị băm bằng khóa bí mật RSA, hiển thị chuỗi chữ ký số kết quả ra ô giao diện.
    • Nút Chuyển: Tự động sao chép toàn bộ văn bản gốc và chuỗi chữ ký số sang phân hệ Nhận để thực nghiệm kiểm tra nhanh.
    • Nút Lưu: Lưu chuỗi chữ ký số ra file độc lập.
  3. Phân hệ Nhận (Bên kiểm tra chữ ký):
    • Cho phép nhập trực tiếp hoặc tải tệp văn bản và tệp chữ ký số tương ứng.
    • Nút Kiểm tra: Tiến hành giải mã chữ ký bằng khóa công khai, băm lại văn bản nhận được và đối sánh hai giá trị:
      • Hiển thị hộp thoại thông báo "Dữ liệu hợp lệ" nếu hai chuỗi băm trùng khớp.
      • Hiển thị hộp thoại thông báo "Dữ liệu không hợp lệ" nếu văn bản bị thay đổi dù chỉ một ký tự hoặc chữ ký không khớp.
  4. Phân hệ Điều khiển:
    • Nút Reset: Xóa toàn bộ dữ liệu trên các ô nhập liệu, đưa phần mềm về trạng thái khởi tạo ban đầu.

Bảng phân công nhiệm vụ thành viên trong nhóm

STT Thành viên Mã sinh viên Vai trò Nhiệm vụ lý thuyết và báo cáo Nhiệm vụ lập trình minh họa
1 Bùi Quốc Triệu 2021600097 Nhóm trưởng Soạn thảo Chương 3; tổng hợp, chỉnh sửa và hoàn thiện báo cáo Viết chương trình demo bằng ngôn ngữ Java
2 Phạm Bảo Trung 2019601001 Thư ký Tìm hiểu khái niệm cơ bản, chữ ký điện tử và hệ mã RSA Viết chương trình demo bằng ngôn ngữ C#
3 Đàm Văn Tú (Ghi nhận trong bảng phân công) Thành viên Soạn thảo nội dung Chương 1 Viết chương trình demo bằng ngôn ngữ Python
4 Hoàng Thanh Tú 2019600644 Thành viên Nghiên cứu chi tiết chữ ký điện tử RSA và thuật toán MD5 Viết chương trình demo bằng ngôn ngữ PHP

Kết quả và đóng góp

Kết quả chính

  • Hệ thống hóa toàn diện cơ sở toán học của thuật toán mật mã RSA (bài toán phân tích số nguyên tố, phi hàm Euler, thuật toán Euclide mở rộng) và thuật toán băm MD5 (quy trình đệm bit, 64 vòng lặp biến đổi với 4 hàm phi tuyến).
  • Cung cấp số liệu so sánh định lượng về hiệu năng tính toán: Thuật toán RSA có tốc độ thực thi mã hóa/giải mã chậm hơn hệ mật đối xứng DES từ 100 lần (phần mềm) đến 1000 lần (phần cứng), và chậm hơn thuật toán DSA từ 100 đến 1000 lần.
  • Cài đặt thành công ứng dụng demo bằng Java (NetBeans) có giao diện đồ họa trực quan, thực hiện chính xác các quy trình sinh khóa, ký số, lưu/nạp file và xác thực tính toàn vẹn của dữ liệu số.

Giải pháp và đóng góp của đề tài

  • Đề tài làm rõ cơ chế tối ưu hóa hiệu năng trong chữ ký số: Thực hiện ký trên giá trị băm cố định 128 bit của thông điệp thay vì ký trực tiếp trên toàn bộ văn bản, giúp giảm tải dung lượng lưu trữ chữ ký và rút ngắn thời gian tính toán modulo lũy thừa.
  • Xây dựng tài liệu học tập chi tiết, kết hợp đối chiếu giữa lý thuyết thuật toán và mã nguồn thực thi minh họa trên nhiều ngôn ngữ lập trình phổ biến (Java, C#, Python, PHP).

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Ứng dụng demo hiện tại hoạt động theo mô hình xử lý cục bộ trên cùng một máy tính, chưa tích hợp giao thức truyền thông mạng Client - Server để gửi nhận dữ liệu từ xa.
  • Hệ thống chưa kết nối với hệ quản trị cơ sở dữ liệu để lưu trữ và quản lý người dùng tập trung.
  • Mức độ bảo mật của chương trình thử nghiệm sử dụng hàm băm MD5 (vốn đã tồn tại các điểm yếu về va chạm mật mã theo các nghiên cứu quốc tế) và cặp khóa RSA có kích thước phục vụ mục đích minh họa học tập.

Hướng nghiên cứu và phát triển mở rộng

Nhóm tác giả đề xuất 5 hướng phát triển cụ thể cho đề tài:

  1. Cá nhân hóa và quản trị cơ sở dữ liệu: Tích hợp hệ quản trị cơ sở dữ liệu để lưu trữ khóa và nhật ký giao dịch an toàn; bổ sung tính năng đăng nhập tài khoản phục vụ phân quyền cho từng người dùng riêng biệt.
  2. Hỗ trợ đa người dùng: Mở rộng phần mềm cho phép gửi và nhận văn bản ký số giữa nhiều tài khoản khác nhau thông qua mã định danh cá nhân của người nhận.
  3. Triển khai đa nền tảng: Nâng cấp phần mềm để có thể đóng gói và vận hành ổn định trên nhiều hệ điều hành và thiết bị khác nhau.
  4. Xây dựng cổng thông tin trao đổi dữ liệu: Phát triển hệ thống thành cổng thông tin điện tử bảo mật phục vụ trao đổi tài liệu số giữa các cơ quan, tổ chức.
  5. Tích hợp ứng dụng thương mại: Tích hợp module chữ ký số vào các hệ thống thương mại điện tử, cổng thanh toán trực tuyến, ngân hàng số và hệ thống thư điện tử bảo mật.

Giá trị tham khảo

Báo cáo bài tập lớn là tài liệu học tập và tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin, An toàn thông tin, Kỹ thuật phần mềm: Dùng làm tài liệu tham khảo trực quan khi học các học phần An toàn và bảo mật thông tin, Mật mã học, Lập trình ứng dụng Java Desktop (Swing/AWT trên NetBeans).
  • Người nghiên cứu và phát triển ứng dụng: Tham khảo quy trình toán học chi tiết của giải thuật RSA, cấu trúc 64 bước biến đổi của hàm băm MD5 và phương pháp tổ chức giao diện mô phỏng quy trình ký - kiểm tra chữ ký số.

Câu hỏi thường gặp

1. Tại sao chữ ký số RSA lại thực hiện ký trên giá trị băm của văn bản thay vì ký trực tiếp trên toàn bộ văn bản gốc?

Việc ký trực tiếp trên toàn bộ văn bản gốc sẽ làm chậm tốc độ xử lý do các phép toán lũy thừa modulo trên dữ liệu lớn tốn rất nhiều thời gian tính toán, đồng thời làm tăng kích thước của chữ ký số. Bằng cách sử dụng hàm băm (MD5/SHA), văn bản có độ dài bất kỳ được rút gọn thành một chuỗi bit có kích thước cố định và rất nhỏ (ví dụ MD5 là 128 bit). Do hàm băm là hàm một chiều và có tính nhạy cảm cao (bất kỳ thay đổi nào trên văn bản gốc cũng làm thay đổi giá trị băm), việc mã hóa giá trị băm bằng khóa bí mật vừa đảm bảo tính toàn vẹn dữ liệu, vừa tối ưu hóa thời gian tính toán và tiết kiệm dung lượng lưu trữ.

2. Thuật toán RSA thực hiện quá trình tạo cặp khóa như thế nào?

Quá trình tạo khóa RSA gồm 5 bước toán học:

  1. Chọn ngẫu nhiên 2 số nguyên tố lớn phân biệt $p$ và $q$.
  2. Tính modulo $n = p \times q$ và giá trị $\Phi(n) = (p - 1)(q - 1)$.
  3. Chọn số tự nhiên $b$ sao cho $0 < b < \Phi(n)$ và $\gcd(b, \Phi(n)) = 1$.
  4. Tính số mũ giải mã $a = b^{-1} \pmod{\Phi(n)}$ bằng thuật toán Euclide mở rộng.
  5. Thiết lập khóa công khai $K_{pub} = {b, n}$ và khóa bí mật $K_{pr} = {a, p, q}$.

3. Hiệu năng tính toán của thuật toán RSA so với các thuật toán mã hóa khác như thế nào?

Theo số liệu được nhóm tác giả tổng hợp trong báo cáo:

  • So với hệ mật mã khóa đối xứng DES: Quá trình mã hóa và giải mã bằng RSA chậm hơn khoảng 100 lần khi thực thi bằng phần mềm và chậm hơn khoảng 1000 lần khi thực thi bằng phần cứng.
  • So với hệ mật mã DSA: Tốc độ xử lý của RSA chậm hơn từ 100 đến 1000 lần.

4. Thuật toán hàm băm MD5 sử dụng những hằng số khởi tạo nào và có cấu trúc biến đổi ra sao?

MD5 sử dụng 4 từ hằng số 32 bit khởi tạo ban đầu dưới dạng số thập lục phân: $a = \text{0x01234567}$, $b = \text{0x89ABCDEF}$, $c = \text{0xFEDBCA98}$, $d = \text{0x76543210}$. Dữ liệu đầu vào được đệm thành các khối 512 bit và xử lý qua 64 vòng lặp biến đổi với các phép toán cộng modulo $2^{32}$, hàm phi tuyến $f(x, y, z)$, phép dịch vòng trái $\text{ROTL}(t, s)$ và mảng hằng số $K_j = \lfloor 2^{32} \times |\sin(j + 1)| \rfloor$ để cho ra chuỗi băm cuối cùng dài 128 bit.

5. Phần mềm demo của đề tài được cài đặt bằng ngôn ngữ nào và có những chức năng chính gì?

Phần mềm demo chính được nhóm xây dựng bằng ngôn ngữ Java trên môi trường NetBeans IDE (chạy trên JVM qua tệp .jar). Các chức năng chính bao gồm: Tạo và lưu cặp khóa RSA ra file; Soạn thảo hoặc nạp file văn bản cần gửi; Băm văn bản và tạo chữ ký số; Lưu hoặc chuyển dữ liệu văn bản và chữ ký sang phân hệ nhận; Nạp file văn bản và chữ ký độc lập ở phía nhận; Thực hiện kiểm tra tính hợp lệ của chữ ký và hiển thị thông báo kết quả (hợp lệ hoặc không hợp lệ); Nút Reset đưa chương trình về trạng thái ban đầu.


Kết luận

Báo cáo bài tập lớn "Tìm hiểu về chữ ký điện tử RSA và viết ứng dụng minh họa" của nhóm sinh viên Trường Đại học Công nghiệp Hà Nội đã trình bày một cách có hệ thống lý thuyết mật mã khóa công khai RSA và hàm băm MD5. Đề tài không chỉ khảo sát toàn diện các lĩnh vực ứng dụng thực tế của chữ ký số trong bảo mật dữ liệu, chính phủ điện tử và thương mại điện tử mà còn hiện thực hóa thành công phần mềm demo bằng Java trên NetBeans IDE. Mặc dù chương trình thử nghiệm còn mang tính chất mô phỏng cục bộ phục vụ học tập, các kết quả thu được và định hướng mở rộng hệ thống (như cá nhân hóa, hỗ trợ đa người dùng và tích hợp đa nền tảng) đã cung cấp nguồn tài liệu tham khảo hữu ích cho học phần An toàn và bảo mật thông tin.