Windows Provider
sslTrus cung cấp hai phương thức tích hợp Windows Provider: KSP (Key Storage Provider) và 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:
| Provider | Giao diện Windows | Tình huống áp dụng |
|---|---|---|
| KSP | CNG (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 |
| CSP | CryptoAPI | Ứ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ả |
|---|---|
/csp | Chỉ định sslTrus KSP Provider |
/kc | Chỉ định vùng chứa khóa tương ứng với số chứng chỉ |
/f | Chỉ định chứng chỉ ký mã |
/fd | Chỉ định thuật toán tóm tắt tệp |
/tr | Chỉ định máy chủ dấu thời gian RFC 3161 |
/td | Chỉ đị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 và /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ố
/cspvà/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-user | CurrentUser\My |
local-machine | LocalMachine\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ả |
|---|---|
/csp | Chỉ định sslTrus CSP Provider |
/kc | Chỉ định container khóa tương ứng với số chứng chỉ |
/f | Chỉ định chứng chỉ ký mã |
/fd | Chỉ định thuật toán tóm tắt tệp |
/tr | Chỉ định máy chủ dấu thời gian RFC 3161 |
/td | Chỉ đị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ống | Khuyến nghị |
|---|---|
| Môi trường ký Windows mới | KSP |
| Hỗ trợ Windows CNG | KSP |
| Các công cụ Windows hiện đại như Microsoft SignTool | KSP |
| Phần mềm yêu cầu rõ ràng CSP | CSP |
| Ứng dụng CryptoAPI truyền thống | CSP |
Công cụ yêu cầu sử dụng /csp và /kc | CSP |
Đ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 đó.