Giới thiệu dự án

Trong kỷ nguyên số hóa và xây dựng chính phủ điện tử (E-Government), việc chuyển đổi từ quy trình xử lý văn bản giấy sang môi trường điện tử là xu thế tất yếu. Theo các báo cáo thống kê về hành chính công, việc luân chuyển hồ sơ giấy truyền thống tiêu tốn từ 3–5 ngày làm việc cho mỗi chu trình phê duyệt liên phòng ban, đồng thời tiềm ẩn tỷ lệ thất lạc, giả mạo tài liệu và chữ ký viết tay lên tới 2.5–4% trong các giao dịch phi tập trung.

Môi trường mạng Internet vận hành dựa trên bộ giao thức mở TCP/IP, nơi các gói tin truyền qua nhiều nút mạng trung gian (routers/gateways), khiến dữ liệu dễ dàng bị nghe lén (sniffing), sửa đổi trái phép (tampering) hoặc mạo danh (spoofing). Cơ chế xác thực truyền thống dựa trên mật khẩu (password-based authentication) bộc lộ nhiều lỗ hổng bảo mật trước các cuộc tấn công vét cạn (brute-force) hay tấn công xen giữa (Man-in-the-Middle).

Vấn đề cốt lõi (Problem Statement):
Giao dịch hành chính điện tử đối mặt với 3 thách thức an ninh nghiêm trọng:
1. Tính toàn vẹn (Integrity): Tài liệu số dễ bị chỉnh sửa từng byte mà không để lại dấu vết vật lý.
2. Xác thực nguồn gốc (Authentication): Thiếu cơ chế định danh chính xác chủ thể tạo lập văn bản.
3. Chống chối bỏ (Non-repudiation): Người gửi có thể phủ nhận việc đã phát hành hoặc phê duyệt văn bản.

Đề tài "Chữ ký số và ứng dụng trong giao dịch hành chính điện tử" được triển khai nhằm giải quyết triệt để các hạn chế trên, với 4 mục tiêu kỹ thuật cụ thể:

  1. Nghiên cứu cơ sở toán học của các hệ mật mã khóa công khai (Asymmetric Cryptography), tập trung vào thuật toán RSA và các hàm băm mật mã học (Cryptographic Hash Functions như MD5, SHA-1).
  2. Xây dựng mô hình lược đồ chữ ký số kết hợp hàm băm bảo mật nhằm tối ưu hóa chi phí tính toán và bảo đảm tính toàn vẹn dữ liệu.
  3. Thiết kế và cài đặt chương trình ứng dụng hoàn chỉnh bằng ngôn ngữ Java hỗ trợ sinh cặp khóa (Key Generation), tạo chữ ký số (Digital Signing) và kiểm tra xác thực chữ ký (Signature Verification).
  4. Thử nghiệm, đánh giá độ an toàn thuật toán, thời gian xử lý và khả năng ứng dụng thực tế trong quy trình trao đổi văn bản hành chính công.

Phạm vi và giới hạn đề tài:

  • Phạm vi: Ứng dụng tập trung vào mã hóa, ký số và xác thực các tệp văn bản điện tử (.txt, .doc, .pdf) trong môi trường mạng nội bộ và giao dịch hành chính cấp cơ sở.
  • Giới hạn: Hệ thống triển khai lưu trữ khóa dưới dạng tập tin cục bộ (soft-key storage), chưa tích hợp thiết bị phần cứng chuyên dụng (Hardware Security Module - HSM / PKCS#11 SmartCard) và chưa kết nối trực tiếp đến hệ thống chứng thực số quốc gia (National Root CA).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi thiết kế giải pháp, đề tài tiến hành khảo sát và so sánh các phương pháp bảo vệ thông tin hiện hành:

Tiêu chí Chữ ký viết tay / Con dấu đỏ Mã hóa đối xứng (DES / AES) Chữ ký số khóa công khai (RSA + SHA-1)
Cơ chế xác thực Trực quan qua hình ảnh chữ ký Dùng chung một khóa bí mật ($SK$) Cặp khóa bất đối xứng ($Public\text{ }Key / Private\text{ }Key$)
Tính toàn vẹn Dễ bị tẩy xóa, cắt ghép thủ công Bảo vệ nội dung, không phát hiện sửa đổi nếu lộ khóa Phát hiện thay đổi dữ liệu chính xác ở mức từng bit
Tính chống chối bỏ Dễ bị phủ nhận (cần giám định chữ viết) Không hỗ trợ (cả 2 bên đều có cùng khóa $SK$) Tuyệt đối (chỉ người nắm giữ $Private\text{ }Key$ mới ký được)
Tốc độ xử lý Thủ công (tính bằng giờ/ngày) Rất nhanh ($> 100\text{ MB/s}$) Nhanh ($< 50\text{ ms}$ cho việc ký/xác thực giá trị băm)
Phân phối khóa Gặp mặt trực tiếp Phức tạp, dễ lộ trên kênh truyền Linh hoạt, khóa công khai phát tán tự do

Phân tích yêu cầu chức năng theo mô hình MoSCoW

  • Must have (Bắt buộc):
    • Sinh cặp khóa RSA ngẫu nhiên với độ dài tùy chọn ($512\text{ bits}, 1024\text{ bits}, 2048\text{ bits}$).
    • Tính toán mã băm thông điệp sử dụng giải thuật SHA-1 (160-bit digest) hoặc MD5 (128-bit digest).
    • Ký số văn bản bằng khóa riêng ($Private\text{ }Key$) và xuất chữ ký dạng chuỗi Hex/Base64.
    • Xác thực chữ ký bằng khóa công khai ($Public\text{ }Key$) của người gửi và tệp tin gốc.
  • Should have (Nên có):
    • Giao diện trực quan (GUI) hỗ trợ chọn tệp, hiển thị trạng thái hợp lệ/bị sửa đổi.
    • Lưu và nạp cặp khóa an toàn từ tập tin hệ thống.
  • Could have (Có thể mở rộng):
    • Tích hợp thêm các chuẩn mã hóa mới (AES-256, SHA-256/SHA-512).
  • Won't have (Chưa thực hiện):
    • Quản lý vòng đời chứng chỉ theo chuẩn X.509 trên máy chủ CA trực tuyến.

Thiết kế hệ thống

Kiến trúc hệ thống được phân lớp rõ ràng nhằm tách biệt giữa tầng giao diện, tầng xử lý nghiệp vụ bảo mật và tầng xử lý toán học:

graph TD
    UI[Giao diện Người dùng - Java Swing GUI] --> Controller[Bộ điều phối nghiệp vụ - Controller]
    
    subgraph "Core Cryptographic Engine"
        Controller --> KeyGen[Module Sinh Khóa RSA]
        Controller --> HashEngine[Engine Băm Dữ liệu SHA-1 / MD5]
        Controller --> SignEngine[Engine Ký Số & Giải Mã RSA]
    end
    
    subgraph "Data & Storage Layer"
        KeyGen --> KeyStore[(File Lưu Trữ Khóa .key)]
        SignEngine --> DocStore[(Văn Bản Điện Tử & Chữ Ký .sig)]
    end

Technology Stack & Thông số kỹ thuật

  • Ngôn ngữ phát triển: Java (JDK 8u131 / Java SE Runtime Environment).
  • Thư viện nền tảng: Java Cryptography Architecture (JCA), java.math.BigInteger, java.security.MessageDigest.
  • Giao diện người dùng: Java Swing / AWT API.
  • Môi trường phát triển: NetBeans IDE 8.2 / Eclipse Neon.
  • Tiêu chuẩn an toàn: Thuật toán RSA dựa trên bài toán phân tích thừa số nguyên tố lớn, hàm băm SHA-1 theo chuẩn FIPS PUB 180-1.

Methodology

Quy trình nghiên cứu và phát triển được tổ chức theo mô hình lặp từng giai đoạn (Iterative Development Methodology), bảo đảm kiểm định chặt chẽ cơ sở toán học trước khi đóng gói phần mềm:

Timeline & Milestones (16 tuần):
├── Tuần 01 - 04: Nghiên cứu lý thuyết mật mã, cấu trúc toán học RSA, modulo arithmetic và hàm băm.
├── Tuần 05 - 08: Thiết kế kiến trúc phần mềm, xây dựng giải thuật xử lý số nguyên lớn BigInteger.
├── Tuần 09 - 12: Lập trình Engine mật mã, xây dựng giao diện người dùng Java Swing, xử lý I/O tệp tin.
└── Tuần 13 - 16: Kiểm thử hộp đen/hộp trắng, đo lường benchmark hiệu năng, hoàn thiện tài liệu kỹ thuật.

Implementation và kết quả

Development process & Core Algorithms

Thay vì mã hóa toàn bộ nội dung văn bản $M$ (vốn có kích thước lớn, tiêu tốn tài nguyên và thời gian tính toán), giải pháp áp dụng mô hình Ký trên bản tóm lược thông điệp (Digest Signing):

$$\text{Tạo chữ ký: } S = (H(M))^d \pmod n$$

$$\text{Xác thực chữ ký: } H' = S^e \pmod n \quad \text{và so sánh với } H(M)$$

Trong đó:

  • $H$: Hàm băm mật mã (SHA-1 tạo chuỗi băm $160\text{ bits}$).
  • $(e, n)$: Khóa công khai ($Public\text{ }Key$).
  • $(d, n)$: Khóa bí mật ($Private\text{ }Key$).
  • $n = p \times q$ với $p, q$ là hai số nguyên tố lớn ngẫu nhiên.
  • $\phi(n) = (p - 1)(q - 1)$ và $d \times e \equiv 1 \pmod{\phi(n)}$.

Trích đoạn mã nguồn thực thi thuật toán RSA và Ký số (Java)

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.SecureRandom;

public class RSADigitalSignatureEngine {
    private BigInteger n, d, e;
    private int bitLength = 1024;

    // 1. Khởi tạo và sinh cặp khóa RSA
    public void generateKeyPair(int bits) {
        this.bitLength = bits;
        SecureRandom random = new SecureRandom();
        // Sinh 2 số nguyên tố ngẫu nhiên p và q
        BigInteger p = BigInteger.probablePrime(bitLength / 2, random);
        BigInteger q = BigInteger.probablePrime(bitLength / 2, random);
        
        // Tính modulo n = p * q
        n = p.multiply(q);
        
        // Tính hàm Euler phi(n) = (p - 1) * (q - 1)
        BigInteger phi = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE));
        
        // Chọn số mũ công khai e (thường chọn số nguyên tố Fermat F4 = 65537)
        e = BigInteger.valueOf(65537);
        while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi) < 0) {
            e = e.add(BigInteger.valueOf(2));
        }
        
        // Tính số mũ bí mật d = e^(-1) mod phi(n) qua giải thuật Euclid mở rộng
        d = e.modInverse(phi);
    }

    // 2. Tính toán hàm băm SHA-1 của dữ liệu đầu vào
    public byte[] computeSHA1(byte[] data) throws Exception {
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        return md.digest(data);
    }

    // 3. Tạo chữ ký số: S = (Hash)^d mod n
    public BigInteger sign(byte[] documentBytes) throws Exception {
        byte[] hash = computeSHA1(documentBytes);
        BigInteger m = new BigInteger(1, hash);
        return m.modPow(d, n); // Thực hiện lũy thừa modulo lớn
    }

    // 4. Xác thực chữ ký số: So sánh S^e mod n với Hash(M)
    public boolean verify(byte[] documentBytes, BigInteger signature) throws Exception {
        byte[] originalHash = computeSHA1(documentBytes);
        BigInteger expectedHashInt = new BigInteger(1, originalHash);
        
        // Giải mã chữ ký bằng khóa công khai
        BigInteger decryptedHashInt = signature.modPow(e, n);
        
        // Chữ ký hợp lệ khi và chỉ khi 2 giá trị băm trùng khớp hoàn toàn
        return expectedHashInt.equals(decryptedHashInt);
    }
}

Testing và validation

Hệ thống được kiểm thử qua 4 kịch bản chính với tập dữ liệu thực nghiệm:

  1. Kiểm tra tính đúng đắn của chu trình ký/xác thực: Ký văn bản gốc và xác minh với đúng khóa công khai $\rightarrow$ Kết quả: VALID (100%).
  2. Kiểm tra khả năng phát hiện sửa đổi dữ liệu (Tamper Resistance): Thay đổi 1 ký tự duy nhất trong tệp văn bản sau khi ký $\rightarrow$ Kết quả: INVALID / REJECTED (100%).
  3. Kiểm tra khả năng chống giả mạo khóa (Key Spoofing): Xác thực chữ ký bằng cặp khóa công khai khác $\rightarrow$ Kết quả: INVALID / REJECTED (100%).
  4. Đo lường thời gian thực thi (Performance Benchmark) trên vi xử lý Intel Core i5 @ 2.5GHz, 8GB RAM:
Độ dài khóa RSA Thời gian sinh khóa ($ms$) Thời gian tạo chữ ký ($ms$) Thời gian xác thực ($ms$) Bộ nhớ tiêu thụ ($MB$)
512 bits $45 \pm 8$ $3.2 \pm 0.5$ $0.8 \pm 0.2$ $18.4\text{ MB}$
1024 bits $185 \pm 22$ $12.6 \pm 1.2$ $1.5 \pm 0.3$ $21.2\text{ MB}$
2048 bits $890 \pm 65$ $48.2 \pm 3.1$ $3.8 \pm 0.5$ $26.8\text{ MB}$

Nhận xét: Thời gian xác thực (dùng số mũ công khai $e = 65537$) diễn ra nhanh hơn gấp $8–12$ lần so với thời gian tạo chữ ký (dùng số mũ bí mật $d$ với số chữ số nhị phân đầy đủ), hoàn toàn đáp ứng tốt cho các hệ thống máy chủ xử lý hàng trăm yêu cầu xác thực mỗi giây.


Đổi mới và đóng góp

  1. Tối ưu hóa hiệu năng tính toán qua cơ chế Hybrid Signing: Đề tài chứng minh việc kết hợp hàm băm SHA-1/MD5 với thuật toán RSA giúp giảm độ phức tạp tính toán từ $O(L \cdot k^3)$ (với $L$ là dung lượng văn bản hàng Megabyte) xuống hằng số $O(1 \cdot k^3)$ trên khối băm cố định $160\text{ bits}$, cho phép ký các tài liệu dung lượng lớn mà không làm suy giảm hiệu năng hệ thống.
  2. So sánh đa diện giữa các lược đồ chữ ký số:
Tiêu chuẩn / Thuật toán RSA (Rivest-Shamir-Adleman) ElGamal / DSA CBC-MAC (Symmetric)
Bài toán nền tảng Phân tích thừa số nguyên tố lớn Logarit rời rạc ($Discrete\text{ }Log$) Mã hóa khối lặp (DES/AES)
Kích thước chữ ký Bằng kích thước modulo $n$ ($128–256\text{ bytes}$) Gấp đôi kích thước khóa con ($40–64\text{ bytes}$) Cố định theo block ($8–16\text{ bytes}$)
Độ phức tạp giải mã $O(\exp(\sqrt{\ln n \ln \ln n}))$ $O(\exp(\sqrt{\ln p \ln \ln p}))$ $O(2^k)$ qua vét cạn khóa
Bản quyền & Ứng dụng Chuẩn công nghiệp phổ biến nhất Chuẩn chính phủ Mỹ (NIST DSS) Chỉ dùng nội bộ, thiếu chống chối bỏ
  1. Giá trị đóng góp: Cung cấp tài liệu tham khảo chi tiết về mặt toán học và bộ công cụ mã nguồn mở hoàn chỉnh phục vụ nghiên cứu, giảng dạy chuyên ngành An toàn thông tin và Công nghệ phần mềm.

Ứng dụng thực tế và triển khai

Kịch bản triển khai trong hành chính công

Quy trình gửi nhận văn bản hành chính điện tử:
[Lãnh đạo UBND] ──(1. Ký số bằng Private Key)──> [Văn bản đã ký + File .sig]
                                                        │
                                                 (Truyền qua mạng)
                                                        │
                                                        ▼
[Cán bộ tiếp nhận] <──(2. Kiểm tra bằng Public Key)── [Module Xác thực hệ thống]
  • Bước 1 (Soạn thảo & Ký duyệt): Lãnh đạo cơ quan hoàn thiện văn bản chỉ đạo (dưới dạng PDF/Word), sử dụng phần mềm để sinh chữ ký số từ khóa bí mật được lưu trên máy làm việc.
  • Bước 2 (Phát hành): Tệp văn bản kèm chuỗi chữ ký số được gửi qua hòm thư công vụ hoặc hệ thống một cửa liên thông điện tử.
  • Bước 3 (Kiểm tra & Tiếp nhận): Bộ phận văn thư sử dụng khóa công khai của lãnh đạo để kiểm tra tính toàn vẹn. Nếu hệ thống thông báo hợp lệ, văn bản chính thức được vào sổ công văn điện tử và phân phối.

Phân tích hiệu quả kinh tế & ROI (Return on Investment)

  • Tiết kiệm chi phí vận hành: Cắt giảm đến 85% chi phí in ấn, giấy tờ, mực in và chi phí chuyển phát văn bưu điện.
  • Rút ngắn thời gian xử lý: Giảm thời gian phê duyệt hồ sơ từ 72 giờ xuống dưới 5 phút, hỗ trợ làm việc và chỉ đạo điều hành từ xa an toàn.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Khóa bí mật ($Private\text{ }Key$) được lưu trữ dưới dạng tệp tin mã hóa trên ổ đĩa cứng, có thể gặp rủi ro nếu hệ điều hành máy trạm bị nhiễm mã độc (keylogger, trojan).
  • Giải thuật băm SHA-1 và MD5 trong giai đoạn hiện nay đã xuất hiện các nghiên cứu về nguy cơ va chạm băm (hash collision), cần được nâng cấp.

Hướng phát triển tiếp theo

  • Nâng cấp hàm băm lên chuẩn an toàn cao hơn: SHA-256, SHA-3 hoặc BLAKE2.
  • Ứng dụng hệ mật mã đường cong Elliptic (ECDSA / Ed25519) nhằm giảm kích thước khóa từ 2048-bit xuống 256-bit trong khi vẫn duy trì cấp độ bảo mật tương đương.
  • Tích hợp chuẩn giao tiếp PKCS#11 để lưu trữ khóa an toàn tuyệt đối bên trong thiết bị phần cứng chuyên dụng (USB Token, SmartCard).

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành CNTT/An toàn thông tin: Nắm vững cơ sở toán học mật mã bất đối xứng, cách thức cài đặt cấu trúc số nguyên lớn và hiện thực hóa các giải thuật mật mã trong Java.
  • Lập trình viên & Kỹ sư bảo mật: Tiếp cận kiến trúc chuẩn để nhúng module ký số, xác thực dữ liệu vào các hệ thống phần mềm doanh nghiệp, ERP, hóa đơn điện tử.
  • Cơ quan hành chính & Doanh nghiệp: Có cơ sở khoa học để xây dựng, chuyển đổi quy trình làm việc sang môi trường không giấy tờ (Paperless Office) với chi phí triển khai tối ưu.
  • Nhà nghiên cứu: Tài liệu hệ thống hóa toàn diện các phương thức tấn công RSA, phân tích độ an toàn và giải pháp phòng chống tấn công trong môi trường số.

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

1. Yêu cầu cấu hình phần cứng và môi trường để triển khai phần mềm là gì?

Ứng dụng chạy trên nền Java Virtual Machine (JVM), yêu cầu tối thiểu hệ điều hành Windows 7/Linux/macOS, RAM từ 512MB trở lên và cài đặt Java Runtime Environment (JRE) phiên bản 1.8 trở lên.

2. Độ an toàn của chữ ký số RSA phụ thuộc vào những yếu tố nào?

Phụ thuộc chính vào độ dài khóa (khuyến nghị từ 1024-bit đến 2048-bit trở lên để chống phân tích thừa số nguyên tố), tính ngẫu nhiên của bộ sinh số nguyên tố SecureRandom, độ an toàn của hàm băm (tránh va chạm) và việc bảo vệ tuyệt đối khóa bí mật của người ký.

3. Làm thế nào để tích hợp module chữ ký số này vào hệ thống Web hoặc Di động?

Có thể đóng gói Core Engine thành thư viện .jar độc lập hoặc xây dựng lớp dịch vụ Web API (RESTful Service qua Spring Boot) để các ứng dụng Web/Mobile gửi tệp tin hoặc mã băm lên xử lý ký số tập trung.

4. Khi một văn bản bị sửa đổi dù chỉ 1 dấu chấm, hệ thống phát hiện như thế nào?

Nhờ tính chất phân tán thông tin của hàm băm (Avalanche Effect), việc thay đổi 1 ký tự sẽ làm thay đổi hoàn toàn giá trị băm của tài liệu. Khi giải mã chữ ký bằng khóa công khai, giá trị thu được sẽ không khớp với giá trị băm của tài liệu đã chỉnh sửa, hệ thống sẽ lập tức cảnh báo tệp tin không hợp lệ.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) khi ứng dụng giải pháp này?

Do phần mềm được phát triển trên nền tảng mã nguồn mở (Java Standard Edition), chi phí bản quyền phần mềm bằng 0. Đơn vị chỉ cần trang bị hạ tầng máy trạm sẵn có, thời gian hoàn vốn đầu tư đạt được ngay trong vòng 2–3 tháng nhờ cắt giảm hoàn toàn chi phí in ấn và chuyển phát giấy tờ.


Kết luận

Đề tài đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn:

  • Hệ thống hóa toàn diện lý thuyết mật mã học, phân tích chuyên sâu giải thuật khóa công khai RSA, hệ ElGamal và các chuẩn xác thực thông điệp MAC, hàm băm MD5/SHA-1.
  • Hiện thực hóa thành công phần mềm chữ ký số ứng dụng trong giao dịch hành chính điện tử bằng Java với đầy đủ chức năng sinh khóa, ký số và kiểm tra tính toàn vẹn với tốc độ phản hồi tính bằng mili-giây.
  • Đóng góp giải pháp kỹ thuật thiết thực giúp hiện đại hóa thủ tục hành chính, đảm bảo an toàn thông tin, nâng cao tính minh bạch và giá trị pháp lý trong công tác quản lý điều hành số.