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ấp | Giao diện Windows | Kịch bản áp dụng |
|---|---|---|
| KSP | CNG (Cryptography API: Next Generation) | Ứng dụng Windows hiện đại và công cụ ký số, ư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 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ả |
|---|---|
/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 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
/cspvà/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-user | CurrentUser\My |
local-machine | LocalMachine\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ả |
|---|---|
/csp | Chỉ định nhà cung cấp sslTrus CSP |
/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 |
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ớ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 |
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.