Chuyển tới nội dung chính

Windows Provider

sslTrus cung cấp hai phương thức tích hợp Windows Provider là KSP (Key Storage Provider) và CSP (Cryptographic Service Provider).

Thông qua Windows Provider, các phần mềm như Microsoft SignTool, Visual Studio, MSBuild, công cụ đóng gói cài đặt và các phần mềm khác hỗ trợ giao diện mật mã Windows có thể sử dụng khả năng ký mã trên đám mây của sslTrus.

Chữ ký khóa riêng luôn được lưu trữ trong HSM trên đám mây, không cần triển khai tệp khóa riêng đến máy tính cục bộ.

Việc cài đặt, cấu hình và bảo trì KSP và CSP đều được thực hiện thông qua sslTrus SignTool CLI, có thể tải xuống từ trang phát hành máy khách sslTrus.

KSP và CSP​

KSP và CSP tương ứng với hai thế hệ giao diện mật mã học của Windows:

Nhà cung cấpGiao diện WindowsKịch bản áp dụng
KSPCNG (Cryptography API: Next Generation)Ứng dụng Windows hiện đại và công cụ ký số, ưu tiên lựa chọn
CSPCryptoAPIỨng dụng truyền thống hoặc phần mềm yêu cầu rõ ràng sử dụng CSP

Đối với các tình huống tích hợp Windows mới, thường ưu tiên sử dụng KSP.

Chỉ khi phần mềm mục tiêu không hỗ trợ KSP, hoặc có yêu cầu rõ ràng sử dụng CryptoAPI Provider truyền thống, thì mới sử dụng CSP.

KSP​

KSP là Key Storage Provider dựa trên Windows CNG.

Sau khi cài đặt sslTrus KSP, các ứng dụng Windows hỗ trợ CNG có thể gọi dịch vụ ký mã từ xa thông qua giao diện khóa chuẩn của Windows.

Provider cục bộ có nhiệm vụ tiếp nhận yêu cầu ký từ ứng dụng và gửi bản tóm tắt cần ký đến dịch vụ ký mã từ xa; thao tác khóa bí mật thực tế được thực hiện trong HSM đám mây.

Trường hợp áp dụng​

KSP phù hợp với:

  • Microsoft SignTool.
  • Visual Studio.
  • MSBuild.
  • Phần mềm xây dựng và ký số hỗ trợ Windows CNG.
  • Ứng dụng cần kết nối khóa riêng từ xa thông qua Windows Provider tiêu chuẩn.

Cài đặt KSP​

Thực hiện trong cửa sổ dòng lệnh có quyền quản trị viên:

signtool ksp install

Lệnh này sẽ cài đặt và đăng ký:

sslTrus Key Storage Provider

Cài đặt KSP liên quan đến việc đăng ký Provider trên hệ thống và thư mục hệ thống Windows, do đó thường cần quyền quản trị viên.

Thêm cấu hình chứng chỉ​

Thực hiện:

signtool ksp add

Nhập theo lời nhắc:

Access Key
Access Secret
Certificate Code

Máy khách sẽ lấy chứng chỉ tương ứng từ dịch vụ ký mã từ xa, đồng thời lưu lại địa chỉ dịch vụ từ xa, thông tin xác thực truy cập và cấu hình chứng chỉ.

Nếu sử dụng môi trường NICSRS(www.nicsrs.com),cần thêm --address nicsrs:

signtool ksp add --address nicsrs

Đăng ký chứng chỉ​

Sau khi hoàn tất cấu hình KSP, cần đăng ký chứng chỉ ký mã vào kho chứng chỉ Windows và liên kết với KSP Provider.

Thực hiện:

signtool ksp register

Mặc định đăng ký vào kho chứng chỉ cá nhân của người dùng hiện tại.

Nếu cần đăng ký vào kho chứng chỉ LocalMachine:

signtool ksp register --store local-machine

Sau khi đăng ký hoàn tất, Windows sẽ nhận diện chứng chỉ tương ứng là có khóa riêng khả dụng, nhưng thực tế khóa riêng vẫn được lưu trữ trên HSM đám mây.

Sử dụng Microsoft SignTool​

Sau khi cấu hình KSP hoàn tất, bạn có thể sử dụng công cụ signtool.exe của Microsoft do Windows SDK cung cấp để ký tệp tin.

Ví dụ:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"

Các thông số chính:

Tham sốMô tả
/cspChỉ định sslTrus KSP Provider
/kcChỉ định vùng chứa khóa tương ứng với số chứng chỉ
/fChỉ định chứng chỉ ký mã
/fdChỉ định thuật toán tóm tắt tệp
/trChỉ định máy chủ dấu thời gian RFC 3161
/tdChỉ định thuật toán tóm tắt dấu thời gian

Nếu cần bổ sung chữ ký SHA-1 trên cơ sở chữ ký hiện có, có thể sử dụng tham số /as:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
".\app.exe"

Microsoft signtool.exe sẽ gọi sslTrus KSP thông qua Windows CNG, sau đó KSP thực hiện ký bằng khóa riêng từ xa.

Quản lý KSP​

Để xem KSP đã được cấu hình:

signtool ksp list

Xóa cấu hình:

signtool ksp del

Hủy liên kết chứng chỉ với KSP:

signtool ksp deregister

Gỡ cài đặt KSP:

signtool ksp uninstall

Trước khi gỡ cài đặt Provider, hãy xác nhận rằng không có ứng dụng Windows nào khác vẫn còn phụ thuộc vào Provider đó.

CSP​

CSP là Cryptographic Service Provider (Nhà cung cấp dịch vụ mật mã) được sử dụng bởi Windows CryptoAPI truyền thống.

Nó chủ yếu được sử dụng cho quy trình ký Windows yêu cầu chỉ định Provider và key container thông qua các tham số /csp và /kc.sslTrus CSP do khách hàng chịu trách nhiệm cài đặt và duy trì, việc ký tệp thực tế vẫn được thực hiện bởi Microsoft signtool.exe trong Windows SDK.

Trường hợp áp dụng​

CSP áp dụng cho:

  • Phần mềm Windows chỉ hỗ trợ CryptoAPI truyền thống.
  • Công cụ ký tên yêu cầu chỉ định rõ CSP Provider.
  • Môi trường cần thực thi ký tên qua tham số Microsoft SignTool /csp và /kc.
  • Ứng dụng cũ không thể sử dụng Windows CNG / KSP.

Đối với các hệ thống mới có thể sử dụng KSP bình thường, thông thường không cần sử dụng thêm CSP.

Cài đặt CSP​

Thực hiện trong cửa sổ dòng lệnh có quyền quản trị viên:

signtool csp install

Trong quá trình cài đặt sẽ đăng ký:

sslTrus Cryptographic Service Provider

và cài đặt Provider DLL vào hệ thống Windows.

CSP Provider loại là:

PROV_RSA_AES

Cấu hình cục bộ được lưu mặc định tại:

%ProgramData%\sslTrusKSP

Tệp cấu hình được bảo vệ bằng Windows DPAPI.

Nếu bạn cần cài đặt KSP cùng lúc, có thể thực hiện:

signtool csp install --with-ksp

Thêm cấu hình chứng chỉ​

Thực hiện:

signtool csp add

Nhập theo lời nhắc:

Access Key
Access Secret
Certificate Code

Sau khi thêm hoàn tất, máy khách sẽ tải xuống chứng chỉ tương ứng và lưu vào:

%ProgramData%\sslTrusKSP\CERT_CODE.crt

Trong đó CERT_CODE đồng thời đóng vai trò là định danh chứng chỉ từ xa và tên vùng chứa khóa được Microsoft SignTool sử dụng sau này.

Nếu sử dụng môi trường NICSRS(www.nicsrs.com),cần thêm --address nicsrs:

signtool csp add --address nicsrs

Đăng ký chứng chỉ​

Mặc định đăng ký chứng chỉ vào kho chứng chỉ cá nhân của người dùng hiện tại:

signtool csp register

Nếu cần đăng ký vào LocalMachine:

signtool csp register --store local-machine

Hỗ trợ các kho chứng chỉ sau:

Tham sốKho chứng chỉ Windows
current-userCurrentUser\My
local-machineLocalMachine\My

Sau khi đăng ký hoàn tất, Windows Certificate Manager sẽ hiển thị chứng chỉ tương ứng có liên kết khóa riêng, nhưng khóa riêng thực tế vẫn nằm trong HSM đám mây.

Sử dụng Microsoft SignTool​

Khi ký CSP, cần chỉ định rõ ràng Provider, vùng chứa khóa và tệp chứng chỉ:

signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"

Các thông số chính:

Tham sốMô tả
/cspChỉ định nhà cung cấp sslTrus CSP
/kcChỉ định vùng chứa khóa tương ứng với số chứng chỉ
/fChỉ định chứng chỉ ký mã
/fdChỉ định thuật toán tóm tắt tệp
/trChỉ định máy chủ dấu thời gian RFC 3161
/tdChỉ định thuật toán tóm tắt dấu thời gian

Hiện tại, giao diện ký từ xa hỗ trợ các thuật toán tóm tắt SHA1 và SHA256.Các kịch bản ký mới nên ưu tiên sử dụng SHA256; chỉ sử dụng SHA1 khi cần tương thích với hệ thống cũ.

Xác minh chữ ký​

Sau khi ký hoàn tất, có thể sử dụng Microsoft SignTool để xác minh:

signtool.exe verify /pa /v ".\app.exe"

Xác minh chữ ký sẽ không gọi lại khóa riêng từ xa và cũng không tạo ra số lần ký mới.

Quản lý CSP​

Xem cấu hình hiện có:

signtool csp list

Xóa một cấu hình chứng chỉ:

signtool csp del

Hủy liên kết khóa riêng giữa chứng chỉ và CSP:

signtool csp deregister

Gỡ cài đặt Provider:

signtool csp uninstall

Xóa cấu hình CSP sẽ không tự động xóa các tệp chứng chỉ đã tải xuống.Nếu chứng chỉ và cấu hình liên quan không còn được sử dụng, nên xác nhận không có Provider nào khác phụ thuộc trước khi thực hiện dọn dẹp.

KSP hay CSP​

Nếu không có yêu cầu tương thích đặc biệt, có thể lựa chọn theo cách sau:

Kịch bảnĐề xuất
Môi trường ký Windows mớiKSP
Hỗ trợ Windows CNGKSP
Các công cụ Windows hiện đại như Microsoft SignToolKSP
Phần mềm yêu cầu rõ ràng CSPCSP
Ứng dụng CryptoAPI truyền thốngCSP
Công cụ yêu cầu sử dụng /csp và /kcCSP

Sự khác biệt chính giữa KSP và CSP nằm ở giao diện Nhà cung cấp mật mã mà Windows sử dụng, trong khi mô hình bảo mật khóa riêng từ xa vẫn được giữ nguyên.

Cho dù sử dụng KSP hay CSP, khóa riêng ký mã sẽ không được lưu trên máy khách cục bộ.

Số lần ký​

Số lần ký của Windows Provider được tính theo số thao tác ký từ xa thực tế được hoàn thành ở lớp nền tảng.

Ví dụ:

SHA256 签名一次 = 1 次

Nếu với cùng một tệp, trước tiên thực hiện ký SHA256, sau đó lại thêm một chữ ký nữa, thì sẽ kích hoạt lại thao tác với khóa riêng từ xa, vì vậy cần phải tính toán riêng từng lần.

Trong kịch bản KSP, việc thực hiện ký kép SHA256 và SHA1 trên cùng một tệp thường sẽ tạo ra hai lần gọi ký ở lớp cơ sở.

Vui lòng tham khảo Tài liệu tham khảo để biết các quy tắc cụ thể.

Dấu thời gian​

Windows Authenticode thường được khuyến nghị thêm dấu thời gian đáng tin cậy (timestamp).

Trong các kịch bản ký mã hiện đại, nên ưu tiên sử dụng dấu thời gian RFC 3161, ví dụ:

http://timestamp.acs.microsoft.com

Môi trường sản xuất thực tế nên lựa chọn TSA phù hợp dựa trên phiên bản Windows mục tiêu, chính sách chứng chỉ, môi trường mạng cũng như yêu cầu của nhà cung cấp dịch vụ dấu thời gian.

Vui lòng tham khảo Tài liệu tham khảo để biết thông tin chi tiết về máy chủ dấu thời gian cụ thể và giao thức.

Lưu ý bảo mật​

Khi sử dụng Windows Provider, cần lưu ý:

  • Access Secret cần được bảo vệ như một thông tin xác thực nhạy cảm.
  • Không ghi thông tin xác thực truy cập vào script công khai hoặc nhật ký.
  • Tệp cấu hình Provider không nên được phát tán công khai.
  • Tệp chứng chỉ cục bộ không chứa khóa riêng ký mã.
  • Khóa riêng ký mã luôn được lưu trữ trong HSM đám mây.
  • Khi KSP/CSP khởi tạo chữ ký, cần có khả năng truy cập dịch vụ ký mã từ xa.
  • Khi sử dụng kho chứng chỉ LocalMachine, cần đặc biệt chú ý đến quyền người dùng Windows và phạm vi truy cập thông tin xác thực.

Tệp config.dat của CSP sử dụng DPAPI của Profile người dùng Windows hiện tại để bảo vệ, việc đăng ký chứng chỉ vào LocalMachine sẽ không tự động thay đổi phạm vi bảo vệ DPAPI của cấu hình này.