Giới thiệu dự án

Trong bối cảnh chuyển đổi số quốc gia và sự bùng nổ của các giao dịch điện tử thuộc các lĩnh vực Chính phủ điện tử (e-Government: G2G, G2B, G2C), Ngân hàng số (Digital Banking) và Thương mại điện tử (B2B, B2C), bài toán đảm bảo an toàn thông tin trở thành ưu tiên sống còn. Theo các báo cáo an ninh mạng gần đây, hơn 90% rủi ro trong giao dịch trực tuyến xuất phát từ các lỗ hổng về mạo danh (Impersonation), can thiệp sửa đổi dữ liệu (Tampering) và chối bỏ trách nhiệm (Repudiation).

Hạ tầng mật mã khóa công khai (Public Key Infrastructure - PKI) là nền tảng cốt lõi giải quyết triệt để 4 yêu cầu an ninh: Xác thực (Authentication), Toàn vẹn (Integrity), Bí mật (Confidentiality)Chống chối bỏ (Non-repudiation). Tuy nhiên, sự phân mảnh dữ liệu giữa các hệ thống phần mềm nghiệp vụ hiện nay dẫn đến tình trạng bất đồng bộ về chuẩn định dạng ký số và mã mật.

                  +----------------------------------------------+
                  |           Unified Crypto Engine              |
                  +----------------------------------------------+
                         /               |               \
                        /                |                \
    +-----------------------+ +---------------------+ +-----------------------+
    |     CMS / PKCS#7      | |       XMLDSig       | |       JSON/JWT        |
    | (CAdES-BES/EPES/T/C/A)| |   (W3C XML Sig/Enc) | |   (JWS/JWE - RFC 7515)|
    +-----------------------+ +---------------------+ +-----------------------+

Vấn đề thực tế (Problem Statement)

  1. Sự phân mảnh tiêu chuẩn: Các hệ thống trao đổi văn bản truyền thống sử dụng định dạng CMS/PKCS#7; các hệ thống Hóa đơn điện tử, Hải quan điện tử sử dụng XMLDSig; trong khi các hệ sinh thái Web API, Microservices và Mobile Backend hiện đại lại sử dụng chuẩn JSON Web Signature/Encryption (JWS/JWE).
  2. Thiếu công cụ tích hợp: Doanh nghiệp và người dùng cuối trên hệ điều hành Windows phải cài đặt nhiều phần mềm riêng rẽ để ký và mã hóa từng loại dữ liệu, gây lãng phí tài nguyên và rủi ro tương thích khóa phần cứng (SmartCard/USB Token).
  3. Quản lý vòng đời chứng thư số và thu hồi phức tạp: Thiếu khả năng tích hợp linh hoạt kiểm tra trạng thái chứng thư thông qua Danh sách thu hồi (CRL, Delta CRL, Partitioned CRL) và dịch vụ xác thực trực tuyến OCSP.

Mục tiêu dự án

  1. Nghiên cứu chuyên sâu lý thuyết PKI: Phân tích kiến trúc X.509 v3, cơ chế quản lý vòng đời chứng thư số, danh sách thu hồi CRL/Delta CRL và các mô hình tin cậy (Hierarchical, Mesh, Single CA).
  2. Làm chủ các cấu trúc dữ liệu mật mã: Nghiên cứu cú pháp CMS (RFC 5652 / PKCS#7, tiêu chuẩn ETSI TS 101 733 CAdES), chuẩn ký/mã XML (W3C XMLDSig, XMLEnc) và chuẩn JSON Web Token (RFC 7515 JWS, RFC 7516 JWE).
  3. Thiết kế và phát triển ứng dụng Windows: Xây dựng phần mềm hoàn chỉnh trên nền tảng .NET/C# tích hợp thư viện mật mã Bouncy Castle và Microsoft CryptoAPI / Cryptography Next Generation (CNG).
  4. Tối ưu hóa hiệu năng và bảo mật: Hỗ trợ thuật toán RSA (2048-bit, 3072-bit, 4096-bit), chuẩn băm SHA-256/SHA-512, mã hóa đối xứng AES-GCM-256 và ký số trên USB Token chuẩn PKCS#11/CSP.

Phạm vi và giới hạn

  • Phạm vi: Ứng dụng Desktop chạy trên Windows 10/11 và Windows Server, xử lý ký số, xác thực chữ ký, mã mật và giải mã trên 3 cấu trúc dữ liệu (CMS, XML, JSON). Hỗ trợ kiểm tra đường dẫn chứng thư số (Certificate Path Validation) và thu hồi CRL.
  • Giới hạn: Chưa tích hợp ký số từ xa (Remote Signing/Cloud HSM qua REST API) và chưa triển khai đóng dấu thời gian Timestamp Authority (TSA) chuẩn RFC 3161 trên môi trường Offline.

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

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

Tiêu chí so sánh Phần mềm ký số chuyên biệt (Adobe/vSign) Tiện ích dòng lệnh OpenSSL Giải pháp phần mềm tích hợp đề xuất
Định dạng CMS / CAdES Hỗ trợ tốt (chủ yếu PDF/PKCS#7) Hỗ trợ cấu trúc cơ bản Hỗ trợ đầy đủ CAdES-BES, EPES, T, C, A
Định dạng XML (XMLDSig) Không hỗ trợ hoặc rất hạn chế Phải dùng công cụ ngoài (xmlsec1) Hỗ trợ chuẩn W3C Enveloped, Enveloping, Detached
Định dạng JSON (JWS/JWE) Không hỗ trợ Không hỗ trợ trực tiếp Hỗ trợ đầy đủ RFC 7515, RFC 7516, RFC 7519
Giao diện người dùng (UI) Trực quan, đóng gói riêng lẻ Giao diện dòng lệnh (CLI) phức tạp Giao diện đồ họa (GUI) trực quan, xử lý đa định dạng
Tích hợp Token PKI Phụ thuộc CSP của Windows Cấu hình PKCS#11 Engine phức tạp Tự động phát hiện SmartCard/USB Token qua CryptoAPI

Yêu cầu người dùng theo mô hình MoSCoW

  • Must Have: Ký số và xác minh tính hợp lệ trên tệp tin CMS (SignedData), XML (XMLDSig), JSON (JWS); Mã hóa và giải mã dữ liệu CMS (EnvelopedData) và JSON (JWE); Kiểm tra tính hợp lệ chứng thư số X.509 v3.
  • Should Have: Đọc chứng thư số và khóa bí mật từ USB Token phần cứng qua CSP; Tự động tải và phân tích Base CRL và Delta CRL qua CRL Distribution Points.
  • Could Have: Hỗ trợ đóng gói thuộc tính mở rộng CAdES-EPES (Signature Policy Identifier) và định dạng lưu trữ dài hạn CAdES-A (ATSv3).
  • Won't Have (Giai đoạn này): Ký số phân tán đa bên qua giao thức Threshold Cryptography.

Thiết kế hệ thống

Kiến trúc phần mềm được xây dựng theo mô hình phân lớp (Layered Architecture) tách biệt giữa giao diện đồ họa, tầng điều phối nghiệp vụ và tầng lõi mật mã chuyên dụng.

graph TD
    A["Giao diện người dùng (WPF / WinForms GUI)"] --> B["Tầng xử lý nghiệp vụ (Business Logic Layer)"]
    B --> C1["CMS/PKCS#7 Engine (Bouncy Castle)"]
    B --> C2["XMLDSig Engine (System.Security.Cryptography.Xml)"]
    B --> C3["JSON Security Engine (Jose-jwt / Native)"]
    B --> D["Certificate & CRL Validator"]
    C1 --> E["Tầng trừu tượng phần cứng (HAL)"]
    C2 --> E
    C3 --> E
    E --> F["Microsoft CryptoAPI / CNG"]
    E --> G["PKCS#11 SmartCard / USB Token"]
    D --> H["LDAP / HTTP CRL Distribution Point"]

Ngăn xếp công nghệ (Technology Stack)

  • Hệ điều hành: Microsoft Windows 10/11 (x64), Windows Server 2019/2022.
  • Môi trường thực thi: .NET Framework 4.8 / .NET 6 Desktop Runtime.
  • Thư viện mật mã chính:
    • BouncyCastle.Crypto.dll (v1.9.0): Xử lý cấu trúc ASN.1 DER/BER, CMS SignedData, EnvelopedData, OID parsing.
    • System.Security.Cryptography.Xml.dll (v6.0.1): Xử lý chuẩn W3C XML Digital Signature và XML Encryption.
    • Jose-jwt (v4.1.0) kết hợp System.Text.Json: Xử lý cấu trúc Compact Serialization của JWS, JWE.
    • Microsoft CryptoAPI (CAPI) & CNG (Cryptography Next Generation): Giao tiếp trực tiếp với Cryptographic Service Provider (CSP) của USB Token.

Cấu trúc dữ liệu và an ninh

Hệ thống sử dụng các cấu trúc định dạng chuẩn hóa quốc tế:

  • Cấu trúc ASN.1 cho CMS: Tuân thủ chuẩn RFC 5652 với các kiểu SignedData, EncapContentInfo, SignerInfo, SignAttrs, EnvelopedData, RecipientInfo (ktri, kari, kekri, pwri).
  • Cấu trúc X.509 v3: Trích xuất các trường mở rộng bắt buộc: KeyUsage (Digital Signature, Non-Repudiation, Key Encipherment), EnhancedKeyUsage (Client Auth, Server Auth, Code Signing), CRLDistributionPoints, AuthorityKeyIdentifier, SubjectKeyIdentifier.
  • Cơ chế an toàn bộ nhớ: Toàn bộ chuỗi byte khóa bí mật (Private Key) và mã PIN Token được xử lý trong vùng nhớ bảo vệ SecureString, tự động giải phóng (Zeroize) sau khi kết thúc tác vụ tính toán chữ ký để chống kỹ thuật tấn công Memory Dumping.

Phương pháp phát triển và đảm bảo chất lượng

Dự án áp dụng mô hình phát triển Agile Scrum với 4 giai đoạn (Sprints) kéo dài trong 12 tuần:

  1. Sprint 1 (Tuần 1-3): Nghiên cứu lý thuyết PKI, chuẩn X.509, CMS/PKCS#7, cài đặt cấu trúc dữ liệu ASN.1.
  2. Sprint 2 (Tuần 4-6): Xây dựng Module CMS (SignedData, EnvelopedData) và tích hợp Microsoft CryptoAPI cho thiết bị USB Token.
  3. Sprint 3 (Tuần 7-9): Xây dựng Module ký/mã XMLDSig và Module ký/mã JSON (JWS/JWE).
  4. Sprint 4 (Tuần 10-12): Tích hợp Module kiểm tra CRL/OCSP, thiết kế giao diện hoàn chỉnh, kiểm thử hiệu năng và đóng gói ứng dụng.

Triển khai và kết quả thực nghiệm

Quy trình phát triển và chi tiết thuật toán

Hệ thống triển khai 3 engine mật mã độc lập nhưng sử dụng chung một giao diện quản lý khóa và chứng thư số:

1. Thuật toán tạo chữ ký số CMS SignedData (CAdES-BES)

Quá trình tạo chữ ký CMS tuân thủ chặt chẽ việc đóng gói SignedAttributes:

  • Đầu vào: Dữ liệu gốc $M$, Chứng thư số $Cert$, Khóa riêng $K_{priv}$, Thuật toán băm $H$ (SHA-256).
  • Bước 1: Tính $Digest = H(M)$.
  • Bước 2: Thiết lập tập SignedAttributes gồm contentType (OID: 1.2.840.113549.1.7.1), signingTime (UTC Time) và messageDigest = $Digest$.
  • Bước 3: Mã hóa DER tập SignedAttributes thành chuỗi byte $Bytes_{attr}$.
  • Bước 4: Tính chữ ký số $Sig = \text{Sign}{K{priv}}(H(Bytes_{attr}))$.
  • Bước 5: Đóng gói $Cert$, $Bytes_{attr}$, $Sig$, thuật toán mã hóa vào cấu trúc SignerInfo và xuất ra ASN.1 SignedData.
// Trích đoạn Code ký số CMS SignedData sử dụng Bouncy Castle C#
using Org.BouncyCastle.Cms;
using Org.BouncyCastle.X509;
using Org.BouncyCastle.Crypto;

public byte[] SignCmsSignedData(byte[] inputData, X509Certificate cert, AsymmetricKeyParameter privateKey)
{
    CmsProcessableByteArray content = new CmsProcessableByteArray(inputData);
    CmsSignedDataGenerator generator = new CmsSignedDataGenerator();

    // Cấu hình thuật toán SHA256withRSA
    generator.AddSigner(
        privateKey, 
        cert, 
        CmsSignedDataGenerator.DigestSha256
    );

    // Bổ sung chứng thư vào danh sách certs của CMS
    var certList = new List<X509Certificate> { cert };
    var certStore = X509StoreFactory.Create(
        "Certificate/Collection", 
        new X509CollectionStoreParameters(certList)
    );
    generator.AddCertificates(certStore);

    // Tạo đối tượng CmsSignedData đóng gói
    CmsSignedData signedData = generator.Generate(content, true); // true = Encapsulated
    return signedData.GetEncoded();
}

2. Thuật toán ký số XML Enveloped Signature (W3C XMLDSig)

Thuật toán chuẩn hóa (Canonicalization - C14N) XML trước khi băm để đảm bảo tính toàn vẹn:

// Trích đoạn Code ký số XML Enveloped Signature
using System.Security.Cryptography.Xml;
using System.Security.Cryptography.X509Certificates;
using System.Xml;

public void SignXmlEnveloped(XmlDocument xmlDoc, X509Certificate2 cert)
{
    SignedXml signedXml = new SignedXml(xmlDoc)
    {
        SigningKey = cert.GetRSAPrivateKey()
    };

    // Tạo đối tượng Reference tới toàn bộ tài liệu XML
    Reference reference = new Reference { Uri = "" };

    // Bổ sung chuyển đổi Enveloped Transform và Canonicalization
    XmlDsigEnvelopedSignatureTransform envTransform = new XmlDsigEnvelopedSignatureTransform();
    reference.AddTransform(envTransform);
    reference.DigestMethod = SignedXml.XmlDsigSHA256Url;

    signedXml.AddReference(reference);

    // Đưa thông tin KeyInfo vào chữ ký
    KeyInfo keyInfo = new KeyInfo();
    keyInfo.AddClause(new KeyInfoX509Data(cert));
    signedXml.KeyInfo = keyInfo;
    signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA256Url;

    // Tính toán chữ ký
    signedXml.ComputeSignature();

    // Nhúng Signature node vào phần tử gốc XML
    XmlElement xmlDigitalSignature = signedXml.GetXml();
    xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));
}

3. Thuật toán tạo và xác minh JSON Web Signature (JWS)

Cấu trúc chuỗi JWS Compact Serialization: BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)

// Trích đoạn Code ký số JWS (RS256)
using Jose;
using System.Security.Cryptography;

public string CreateJws(string payloadJson, RSA privateKey)
{
    var headers = new Dictionary<string, object>()
    {
        { "alg", "RS256" },
        { "typ", "JWT" }
    };

    // Mã hóa và ký payload sử dụng thuật toán RS256
    string token = JWT.Encode(payloadJson, privateKey, JwsAlgorithm.RS256, extraHeaders: headers);
    return token;
}

Kiểm thử và kết quả đánh giá

Quy trình kiểm thử được thực hiện trên môi trường máy trạm: Intel Core i7-11800H @ 2.30GHz, 16GB RAM, Windows 11 Pro 64-bit, USB Token Gemalto SafeNet Authentication Client (PKCS#11).

                      THỜI GIAN THỰC THI (MILLISECONDS)
  Định dạng    | Ký số (Sign) | Xác minh (Verify) | Mã hóa (Encrypt) | Giải mã (Decrypt)
  -------------+--------------+-------------------+------------------+------------------
  CMS (10MB)   |    142 ms    |       38 ms       |      115 ms      |      92 ms
  XML (2MB)    |     86 ms    |       24 ms       |       68 ms      |      54 ms
  JSON (500KB) |     18 ms    |        6 ms       |       22 ms      |      15 ms
  • Độ bao phủ kiểm thử (Code Coverage): Đạt 94.2% trên toàn bộ các lớp nghiệp vụ mật mã với 180 Unit Test Cases và 45 Integration Test Cases.
  • Kiểm thử tính đúng đắn: Dữ liệu CMS SignedData được xác minh thành công trên tiện ích openssl cms -verify và công cụ kiểm tra của Ban Cơ yếu Chính phủ; Dữ liệu XMLDSig được kiểm tra hợp lệ 100% trên các cổng tiếp nhận Hóa đơn điện tử của Tổng cục Thuế.
  • Xử lý danh sách thu hồi: Cơ chế kiểm tra CRL tự động phân tích và cache Delta CRL giúp giảm thời gian xác thực chứng thư từ 1.850 ms (tải Full CRL) xuống còn 68 ms (kiểm tra Cache + Delta CRL), tiết kiệm 96.3% băng thông mạng.

Đổi mới và đóng góp kỹ thuật

  1. Kiến trúc hợp nhất 3 định dạng mật mã chuẩn hóa: Thay vì triển khai các phần mềm phân tán, đồ án đã tích hợp thành công cả 3 nền tảng CMS, XML, JSON vào một kiến trúc xử lý đồng nhất trên hệ điều hành Windows, giúp giảm 70% thời gian thao tác cho người quản trị và lập trình viên.
  2. Cơ chế nạp và ánh xạ chứng thư động: Phần mềm trừu tượng hóa giao tiếp giữa Microsoft CryptoAPI (CAPI/CNG) và thư viện mã nguồn mở Bouncy Castle, cho phép thực hiện ký số trực tiếp bằng khóa bí mật phần cứng (Hardware USB Token/SmartCard) trên cấu trúc CMS SignedData và XMLDSig mà không làm lộ khóa ra ngoài bộ nhớ RAM.
  3. Thuật toán tối ưu hóa xác thực CRL/Delta CRL: Triển khai cơ chế phân tích trường CRL Distribution PointsFreshest CRL trong chứng thư số X.509 v3, thiết lập bộ nhớ đệm (In-memory Cache) có cơ chế đánh dấu thời gian (Timestamp Invalidation), giải quyết triệt để bài toán thắt nút cổ chai khi kiểm tra danh sách thu hồi kích thước lớn.
  4. Đóng góp học thuật và thực tiễn: Cung cấp một khung tham chiếu mã nguồn chuẩn mực, phục vụ công tác đào tạo chuyên sâu về An toàn thông tin, Kỹ thuật Mật mã và phát triển phần mềm an toàn tại Học viện Kỹ thuật Mật mã.

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

+-----------------------------------------------------------------------------+
|                            MÔI TRƯỜNG THỰC TẾ                               |
+-----------------------------------------------------------------------------+
       |                               |                               |
       v                               v                               v
 [Dịch vụ công G2C/G2B]      [Doanh nghiệp & Ngân hàng]       [Hệ thống Cloud / API]
  - Khai hải quan điện tử     - Hóa đơn điện tử (XML)          - JWT / JWS Authentication
  - Văn bản điều hành (CMS)   - Hợp đồng số (CMS/CAdES)        - Mã hóa payload (JWE)

Kịch bản ứng dụng thực tế

  • Hệ thống điều hành văn bản liên thông (G2G/G2B): Sử dụng module CMS (CAdES-BES/T) để ký số các văn bản chỉ đạo, hồ sơ hành chính điện tử, đảm bảo tính pháp lý theo quy định của Luật Giao dịch điện tử.
  • Hệ thống Hóa đơn và Khai báo Thuế (XML): Module XMLDSig tích hợp trực tiếp vào phần mềm kế toán doanh nghiệp để ký số hóa đơn điện tử định dạng XML và xác minh tính toàn vẹn trước khi gửi lên cơ quan thuế.
  • Hệ sinh thái API ngân hàng mở (Open Banking - JSON): Sử dụng module JWS/JWE để ký số và mã mật các yêu cầu thanh toán (Payment Requests), cấp phát Access Token định danh giữa các ngân hàng và đối tác FinTech.

Yêu cầu triển khai và khả năng mở rộng

  • Yêu cầu phần cứng tối thiểu: CPU 2 Cores 1.8GHz, 2GB RAM, 100MB dung lượng ổ đĩa trống, cổng USB 2.0/3.0 để cắm USB Token.
  • Yêu cầu phần mềm: Windows 10/11 (32-bit hoặc 64-bit), Microsoft .NET Framework 4.8 hoặc .NET Desktop Runtime 6.0+, Driver CSP của nhà cung cấp CA (VNPT-CA, Viettel-CA, BKAV-CA, Ban Cơ yếu).
  • Phân tích hiệu quả kinh tế (ROI): Việc tự chủ phát triển phần mềm ký số/mã mật đa định dạng giúp tổ chức tiết kiệm 100% chi phí bản quyền mua các bộ công cụ ký số thương mại từ nước ngoài (ước tính từ 2.000$ - 5.000$/năm/máy chủ), đồng thời làm chủ hoàn toàn mã nguồn và chính sách an ninh mạng.

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

Hạn chế hiện tại

  • Phần mềm hiện tại chỉ hoạt động trên môi trường Windows do sự phụ thuộc vào các API đặc thù của Microsoft CryptoAPI và Windows CSP.
  • Chưa tích hợp module ký số với chuẩn CAdES-A hoàn chỉnh kết hợp dịch vụ đóng dấu thời gian Time-Stamp Authority (TSA) chuẩn RFC 3161 trên môi trường độc lập hoàn toàn.
  • Quá trình phân tích cú pháp (Parsing) các tệp tin XML kích thước lớn (> 100MB) bằng DOM Parser có thể tiêu tốn nhiều bộ nhớ RAM.

Hướng phát triển trong tương lai

  • Hỗ trợ đa nền tảng: Tái cấu trúc tầng phần cứng (HAL) sang chuẩn PKCS#11 Native (pkcs11-helper) để hỗ trợ chạy trên Linux, macOS thông qua nền tảng .NET Core / .NET MAUI.
  • Mật mã hậu lượng tử (Post-Quantum Cryptography - PQC): Tích hợp các thuật toán chữ ký số kháng lượng tử theo chuẩn NIST (như CRYSTALS-Dilithium, Falcon, SPHINCS+) vào cấu trúc CMS và JSON.
  • Ký số đám mây (Cloud Signing): Mở rộng module ký số kết nối với hệ thống Cloud HSM qua chuẩn giao thức REST PKI (eIDAS / CSC Standard).

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

+--------------------------------------------------------------------------+
|                         ĐỐI TƯỢNG HƯỞNG LỢI                              |
+--------------------------------------------------------------------------+
  1. Sinh viên ATTT/CNTT  --> Tài liệu tham khảo chuẩn mực & Lab thực hành PKI
  2. Kỹ sư lập trình      --> Code pattern xử lý Bouncy Castle & CryptoAPI
  3. Doanh nghiệp & Cơ quan --> Công cụ ký/mã hóa đa năng, tối ưu hóa chi phí
  4. Nhà nghiên cứu       --> Mô hình đánh giá hiệu năng các chuẩn mật mã
  • Sinh viên chuyên ngành An toàn thông tin / Công nghệ thông tin: Có được tài liệu nghiên cứu chuyên sâu, trực quan về hạ tầng PKI và các cấu trúc dữ liệu mật mã thực tế, đi kèm mã nguồn mẫu hoàn chỉnh để làm bài tập lớn và đồ án.
  • Lập trình viên và Kỹ sư tích hợp phần mềm: Nhận được các thư viện và Design Pattern tối ưu để tích hợp nhanh chóng tính năng ký số XML, CMS, JSON vào các dự án phần mềm thực tế mà không cần tìm hiểu lại từ đầu các đặc tả RFC phức tạp.
  • Doanh nghiệp và Cơ quan Nhà nước: Sở hữu một công cụ tiện ích mạnh mẽ, độc lập để kiểm tra, xác thực và ký số các văn bản, hóa đơn, dữ liệu nghiệp vụ một cách nhanh chóng, an toàn và tuân thủ tuyệt đối pháp luật.
  • Nhà nghiên cứu an toàn mật mã: Cơ sở thực nghiệm để đo lường, phân tích hiệu năng và đánh giá độ an toàn của các thuật toán mã hóa khóa công khai trên các định dạng đóng gói khác nhau.

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

1. Phần mềm có hỗ trợ tất cả các loại USB Token PKI tại Việt Nam không?

Có. Phần mềm giao tiếp với khóa phần cứng thông qua tầng giao diện chuẩn của Windows CryptoAPI (CSP / KSP). Do đó, chỉ cần người dùng cài đặt đúng Driver của nhà cung cấp chứng thực chữ ký số công cộng (như VNPT, Viettel, FPT, BKAV, MISA, CA Ban Cơ yếu), phần mềm sẽ tự động nhận diện và đọc khóa riêng an toàn.

2. Sự khác biệt cốt lõi giữa CMS SignedData và XMLDSig là gì?

CMS SignedData (RFC 5652) đóng gói dữ liệu dưới dạng nhị phân theo chuẩn mã hóa ASN.1 BER/DER, thích hợp cho việc đóng gói toàn bộ tệp tin nhị phân hoặc văn bản không cấu trúc. Ngược lại, XMLDSig (W3C) được thiết kế đặc thù cho dữ liệu có cấu trúc XML, cho phép ký linh hoạt trên từng phần tử (Element) cụ thể của tài liệu (Enveloped, Enveloping hoặc Detached Signature) thông qua phép biến đổi C14N.

3. Cơ chế kiểm tra danh sách thu hồi CRL hoạt động như thế nào khi không có mạng Internet?

Khi không có kết nối Internet để truy vấn điểm phân phối CRL Distribution Points, phần mềm sẽ tự động kiểm tra chứng thư số dựa trên bộ nhớ đệm (Local Certificate Store Cache) đã lưu trước đó trên máy tính. Nếu không tìm thấy CRL cục bộ hợp lệ, phần mềm sẽ hiển thị cảnh báo trạng thái chứng thư chưa được kiểm tra thu hồi để người dùng đưa ra quyết định xác thực.

4. Phần mềm xử lý bài toán bảo mật mã PIN của USB Token như thế nào?

Phần mềm không tự lưu trữ hoặc ghi nhận mã PIN của người dùng vào tệp tin cấu hình. Khi cần thực hiện thao tác ký số, phần mềm sẽ gọi hộp thoại xác thực bảo mật của chính Driver Token hoặc sử dụng vùng nhớ an toàn SecureString trong phiên làm việc hiện tại, đảm bảo không thể bị đánh cắp bởi các phần mềm gián điệp (Keylogger/Spyware).

5. Chi phí triển khai và khả năng tích hợp vào hệ thống hiện có ra sao?

Giải pháp được xây dựng hoàn toàn trên nền tảng mã nguồn mở và thư viện chuẩn, không phát sinh chi phí bản quyền phần mềm bên thứ ba. Các module mật mã được thiết kế dưới dạng thư viện liên kết động (.dll), cho phép các đội ngũ phát triển dễ dàng tích hợp vào các hệ thống quản trị doanh nghiệp (ERP, CRM, DMS) thông qua vài dòng lệnh gọi hàm API.


Kết luận

Đồ án tốt nghiệp "Xây dựng phần mềm ký số, mã mật CMS, JSON và XML trên Windows" của sinh viên Võ Lê Huy (ngành An toàn thông tin, Học viện Kỹ thuật Mật mã) đã giải quyết toàn diện bài toán chuẩn hóa và hợp nhất các thao tác mật mã trong giao dịch điện tử. Bằng việc kết hợp nhuần nhuyễn giữa lý thuyết hạ tầng khóa công khai PKI, các tiêu chuẩn quốc tế (RFC 5652, W3C XMLDSig, RFC 7515/7516, ETSI TS 101 733) và công nghệ lập trình hiện đại trên Windows, đồ án đã tạo ra một sản phẩm phần mềm có tính ứng dụng cao, hiệu năng vượt trội và độ tin cậy tuyệt đối.

Công trình không chỉ mang lại giá trị học thuật xuất sắc cho sinh viên và giới nghiên cứu mật mã ứng dụng, mà còn cung cấp một giải pháp công nghệ thiết thực, sẵn sàng đóng góp vào công cuộc xây dựng Chính phủ điện tử và kinh tế số an toàn, bền vững tại Việt Nam.