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: KSP (Key Storage Provider)CSP (Cryptographic Service Provider).

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

Khóa riêng dùng để ký 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 xuống 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 sslTrus client.

KSP và CSP

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

ProviderGiao diện WindowsTình huống áp dụng
KSPCNG (Cryptography API: Next Generation)Ứng dụng Windows hiện đại và công cụ ký, nên ư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 phải sử dụng CSP

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

Chỉ khi phần mềm mục tiêu không hỗ trợ KSP hoặc yêu cầu rõ ràng phải sử dụng CryptoAPI Provider truyền thống, 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ộ chịu trách nhiệm tiếp nhận yêu cầu ký do ứng dụng khởi tạo và gửi phần tóm tắt cần ký đến dịch vụ ký mã từ xa; thao tác khóa riêng thực tế được hoàn tất trong HSM trên đám mây.

Tình huống áp dụng

KSP phù hợp với:

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

Cài đặt KSP

Thực thi trong terminal quản trị viên:

signtool ksp install

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

sslTrus Key Storage Provider

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

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

Thực thi:

signtool ksp add

Theo lời nhắc, hãy nhập:

Access Key
Access Secret
Certificate Code

Client sẽ lấy chứng chỉ tương ứng từ dịch vụ ký mã từ xa, đồng thời lưu đị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, bạn 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

Theo 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 khóa riêng thực tế vẫn được lưu trữ trong HSM trên đám mây.

Sử dụng Microsoft SignTool

Sau khi KSP được cấu hình xong, bạn có thể sử dụng Microsoft signtool.exe do Windows SDK cung cấp để ký tệp.

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 tham 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 thêm 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 sẽ hoàn tất việc ký bằng khóa riêng từ xa.

Quản lý KSP

Xem các 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, cần xác nhận không còn ứng dụng Windows nào khác phụ thuộc vào Provider đó.

CSP

CSP là Cryptographic Service Provider được sử dụng bởi Windows CryptoAPI truyền thống.

Nó chủ yếu được dùng trong quy trình ký Windows cần chỉ định Provider và key container thông qua tham số /csp/kc. sslTrus CSP do phía client chịu trách nhiệm cài đặt và bảo trì, việc ký file thực tế vẫn do Microsoft signtool.exe của Windows SDK hoàn tất.

Tình huống phù hợp

CSP phù hợp với:

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

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

Cài đặt CSP

Thực thi trong terminal quản trị:

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.

Loại CSP Provider 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 cần cài đặt đồng thời KSP, bạn có thể thực thi:

signtool csp install --with-ksp

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

Thực thi:

signtool csp add

Theo lời nhắc, hãy nhập:

Access Key
Access Secret
Certificate Code

Sau khi thêm xong, máy khách sẽ tải chứng chỉ tương ứng về và lưu vào:

%ProgramData%\sslTrusKSP\CERT_CODE.crt

Trong đó CERT_CODE đồng thời được dùng làm mã định danh chứng chỉ từ xa và tên kho chứa khóa mà Microsoft SignTool sẽ 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ỉ

Theo mặc định, chứng chỉ sẽ được đăng ký 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

Các kho chứng chỉ được hỗ trợ bao gồm:

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

Sau khi đăng ký hoàn tất, Trình quản lý chứng chỉ Windows 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 trên đám mây.

Sử dụng Microsoft SignTool

Khi ký bằng CSP, cần chỉ định rõ 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 tham số chính:

Tham sốMô tả
/cspChỉ định sslTrus CSP Provider
/kcChỉ định container 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

sslTrus CSP hỗ trợ các thuật toán tóm tắt SHA1, SHA256, SHA384 và SHA512. Trong các tình huống ký mới, thường nên sử dụng SHA-256 hoặc thuật toán mạnh hơn.

Xác minh chữ ký

Sau khi ký xong, có thể 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 phát sinh 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, hãy dọn dẹp sau khi xác nhận không có Provider nào khác phụ thuộc vào chúng.

KSP hay CSP

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

Tình huốngKhuyến nghị
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/kcCSP

Điểm khác biệt chính giữa KSP và CSP nằm ở giao diện Provider mật mã mà Windows sử dụng, còn mô hình bảo mật khóa riêng từ xa vẫn nhất quán.

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

Số lần ký

Số lần ký của Windows Provider được tính theo số hành động ký từ xa thực tế được thực hiện ở tầng底层.

Ví dụ:

SHA256 签名一次 = 1 次

Nếu hoàn tất ký SHA256 cho cùng một tệp trước, rồi nối thêm một chữ ký khác, thì thao tác khóa riêng từ xa sẽ được kích hoạt lại, do đó cần tính toán riêng rẽ.

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

Về quy tắc cụ thể, vui lòng tham khảo tài liệu tham khảo.

Dấu thời gian

Chữ ký Windows Authenticode thường khuyến nghị thêm dấu thời gian tin cậy.

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 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 và yêu cầu của nhà cung cấp dịch vụ tem thời gian.

Để biết chi tiết về máy chủ tem thời gian và giao thức cụ thể, vui lòng tham khảo Tài liệu tham khảo.

Hướng dẫn bảo mật

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

  • Access Secret phải được bảo vệ như 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 tập lệnh công khai hoặc nhật ký.
  • Tệp cấu hình Provider không đượ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 trong HSM đám mây.
  • KSP/CSP cần có khả năng truy cập dịch vụ ký mã từ xa khi khởi tạo chữ ký.
  • 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.

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