Windows Provider
sslTrus ofrece dos métodos de integración de Windows Provider: KSP (Key Storage Provider) y CSP (Cryptographic Service Provider).
Mediante Windows Provider, puede permitir que Microsoft SignTool, Visual Studio, MSBuild, herramientas de paquetes de instalación y otro software compatible con las interfaces criptográficas de Windows utilicen la capacidad de firma de código en la nube de sslTrus.
La clave privada de firma se almacena siempre en el HSM en la nube, sin necesidad de desplegar el archivo de clave privada en el equipo local.
La instalación, configuración y mantenimiento de KSP y CSP se realizan a través de sslTrus SignTool CLI, que puede descargarse desde la página de lanzamientos del cliente sslTrus.
KSP y CSP
KSP y CSP corresponden respectivamente a las dos generaciones de interfaces criptográficas de Windows:
| Provider | Interfaz de Windows | Escenarios aplicables |
|---|---|---|
| KSP | CNG (Cryptography API: Next Generation) | Aplicaciones y herramientas de firma modernas de Windows, opción prioritaria |
| CSP | CryptoAPI | Aplicaciones heredadas o software que requiera explícitamente el uso de CSP |
Para nuevos escenarios de integración con Windows, normalmente se prioriza el uso de KSP.
Solo cuando el software de destino no sea compatible con KSP, o cuando se requiera explícitamente el uso de un proveedor CryptoAPI tradicional, se utilizará CSP.
KSP
KSP es un Key Storage Provider basado en Windows CNG.
Después de instalar sslTrus KSP, las aplicaciones de Windows compatibles con CNG pueden invocar el servicio remoto de firma de código a través de la interfaz estándar de claves de Windows.
El proveedor local se encarga de recibir las solicitudes de firma iniciadas por la aplicación y de enviar el resumen que se debe firmar al servicio remoto de firma de código; las operaciones reales con la clave privada se realizan en el HSM en la nube.
Escenarios aplicables
KSP es adecuado para:
- Microsoft SignTool.
- Visual Studio.
- MSBuild.
- Software de compilación y firma compatible con Windows CNG.
- Aplicaciones que necesitan acceder a claves privadas remotas a través de un proveedor estándar de Windows.
Instalación de KSP
Ejecute en una terminal de administrador:
signtool ksp install
Este comando instalará y registrará:
sslTrus Key Storage Provider
La instalación de KSP implica el registro del proveedor del sistema y el directorio del sistema de Windows, por lo que normalmente se requieren permisos de administrador.
Añadir configuración del certificado
Ejecute:
signtool ksp add
Según las indicaciones, ingrese:
Access Key
Access Secret
Certificate Code
El cliente obtendrá el certificado correspondiente del servicio remoto de firma de código y guardará la dirección del servicio remoto, las credenciales de acceso y la configuración del certificado.
Si utiliza el entorno NICSRS (www.nicsrs.com), debe agregar --address nicsrs:
signtool ksp add --address nicsrs
Registrar el certificado
Después de completar la configuración del KSP, debe registrar el certificado de firma de código en el almacén de certificados de Windows y asociarlo con el proveedor KSP.
Ejecute:
signtool ksp register
De forma predeterminada, se registra en el almacén de certificados personal del usuario actual.
Si necesita registrarse en el almacén de certificados de LocalMachine:
signtool ksp register --store local-machine
Después de completar el registro, Windows reconocerá el certificado correspondiente como que tiene una clave privada disponible, pero la clave privada real sigue almacenada en el HSM en la nube.
Usar Microsoft SignTool
Después de configurar el KSP, puede usar Microsoft signtool.exe proporcionado por Windows SDK para firmar archivos.
Por ejemplo:
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"
Parámetros principales:
| Parámetro | Descripción |
|---|---|
/csp | Especifica el proveedor KSP de sslTrus |
/kc | Especifica el contenedor de claves correspondiente al número de certificado |
/f | Especifica el certificado de firma de código |
/fd | Especifica el algoritmo de resumen de archivo |
/tr | Especifica el servidor de sello de tiempo RFC 3161 |
/td | Especifica el algoritmo de resumen del sello de tiempo |
Si necesita añadir una firma SHA-1 sobre una firma existente, puede utilizar el parámetro /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 llama a sslTrus KSP a través de Windows CNG y, a continuación, el KSP completa la firma con la clave privada remota.
Administrar KSP
Ver los KSP ya configurados:
signtool ksp list
Eliminar configuración:
signtool ksp del
Desvincular el certificado de KSP:
signtool ksp deregister
Desinstalar KSP:
signtool ksp uninstall
Antes de desinstalar el Provider, confirme que ninguna otra aplicación de Windows siga dependiendo de dicho Provider.
CSP
CSP es el Proveedor de Servicios Criptográficos utilizado por la CryptoAPI tradicional de Windows.
Se utiliza principalmente en flujos de firma de Windows que requieren especificar el Provider y el contenedor de claves mediante los parámetros /csp y /kc. El sslTrus CSP es instalado y mantenido por el cliente, mientras que la firma real del archivo la sigue realizando Microsoft signtool.exe del SDK de Windows.
Escenarios aplicables
CSP es adecuado para:
- Software de Windows que solo admite la CryptoAPI tradicional.
- Herramientas de firma que requieren especificar explícitamente un Provider CSP.
- Entornos donde es necesario ejecutar la firma mediante los parámetros
/cspy/kcde Microsoft SignTool. - Aplicaciones heredadas que no pueden utilizar Windows CNG / KSP.
En sistemas nuevos que pueden usar KSP con normalidad, generalmente no es necesario utilizar CSP adicionalmente.
Instalación de CSP
Ejecute en una terminal con privilegios de administrador:
signtool csp install
Durante la instalación, se registrará:
sslTrus Cryptographic Service Provider
e instale Provider DLL en el sistema Windows.
El tipo de CSP Provider es:
PROV_RSA_AES
La configuración local se guarda de forma predeterminada en:
%ProgramData%\sslTrusKSP
El archivo de configuración está protegido mediante Windows DPAPI.
Si necesita instalar también el KSP, puede ejecutar:
signtool csp install --with-ksp
Añadir configuración de certificado
Ejecute:
signtool csp add
Según la indicación, introduzca:
Access Key
Access Secret
Certificate Code
Una vez completada la adición, el cliente descargará el certificado correspondiente y lo guardará en:
%ProgramData%\sslTrusKSP\CERT_CODE.crt
Donde CERT_CODE se utiliza simultáneamente como identificador de certificado remoto y como nombre del contenedor de claves que empleará posteriormente Microsoft SignTool.
Si se utiliza el entorno NICSRS (www.nicsrs.com), es necesario añadir --address nicsrs:
signtool csp add --address nicsrs
Registrar el certificado
De forma predeterminada, el certificado se registra en el almacén de certificados personal del usuario actual:
signtool csp register
Si necesita registrarse en LocalMachine:
signtool csp register --store local-machine
Almacenes de certificados compatibles:
| Parámetro | Almacén de certificados de Windows |
|---|---|
current-user | CurrentUser\My |
local-machine | LocalMachine\My |
Una vez completado el registro, el Administrador de certificados de Windows mostrará que el certificado correspondiente tiene una clave privada asociada, pero la clave privada realmente permanece en el HSM en la nube.
Uso de Microsoft SignTool
Al firmar con CSP, es necesario especificar explícitamente el proveedor, el contenedor de claves y el archivo de certificado:
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"
Parámetros principales:
| Parámetro | Descripción |
|---|---|
/csp | Especifica el proveedor CSP de sslTrus |
/kc | Especifica el contenedor de claves correspondiente al número de certificado |
/f | Especifica el certificado de firma de código |
/fd | Especifica el algoritmo de resumen del archivo |
/tr | Especifica el servidor de sellado de tiempo RFC 3161 |
/td | Especifica el algoritmo de resumen del sellado de tiempo |
El CSP de sslTrus admite los algoritmos de resumen SHA1, SHA256, SHA384 y SHA512. En escenarios de firma nuevos, normalmente se debe utilizar SHA-256 o un algoritmo de mayor seguridad.
Verificar la firma
Una vez completada la firma, puede utilizar Microsoft SignTool para verificarla:
signtool.exe verify /pa /v ".\app.exe"
La verificación de firma no vuelve a invocar la clave privada remota ni genera nuevos usos de firma.
Administrar CSP
Ver la configuración existente:
signtool csp list
Eliminar una configuración de certificado:
signtool csp del
Desvincular el certificado de la clave privada de CSP:
signtool csp deregister
Desinstalar el Provider:
signtool csp uninstall
Eliminar la configuración de CSP no elimina automáticamente los archivos de certificado ya descargados. Si los certificados y configuraciones relacionados ya no se utilizan, debe limpiarlos después de confirmar que ningún otro Provider depende de ellos.
¿KSP o CSP?
Si no hay requisitos especiales de compatibilidad, puede elegir de la siguiente manera:
| Escenario | Recomendación |
|---|---|
| Nuevo entorno de firma en Windows | KSP |
| Compatible con Windows CNG | KSP |
| Herramientas modernas de Windows como Microsoft SignTool | KSP |
| El software requiere explícitamente CSP | CSP |
| Aplicaciones tradicionales de CryptoAPI | CSP |
La herramienta requiere usar /csp y /kc | CSP |
La principal diferencia entre KSP y CSP radica en las diferentes interfaces de proveedor criptográfico utilizadas por Windows; el modelo de seguridad de la clave privada remota permanece consistente.
Ya sea que use KSP o CSP, la clave privada de firma de código no se guardará en el cliente local.
Número de firmas
El número de firmas del Windows Provider se calcula según las acciones de firma remota realmente completadas en el nivel subyacente.
Por ejemplo:
SHA256 签名一次 = 1 次
Si se completa primero la firma SHA256 de un mismo archivo y luego se agrega otra firma adicional, se volverá a activar la operación de clave privada remota, por lo que es necesario calcularlas por separado.
En el escenario KSP, la doble firma SHA256 y SHA1 de un mismo archivo normalmente genera dos llamadas de firma subyacentes.
Para conocer las reglas específicas, consulte material de referencia.
Marca de tiempo
En la firma de Windows Authenticode normalmente se recomienda agregar una marca de tiempo confiable.
En los escenarios modernos de firma de código se recomienda priorizar el uso de marcas de tiempo RFC 3161, por ejemplo:
http://timestamp.acs.microsoft.com
En entornos de producción reales, se debe elegir un TSA adecuado según la versión de Windows de destino, las políticas de certificados, el entorno de red y los requisitos del proveedor de servicios de sellado de tiempo.
Para obtener más detalles sobre servidores y protocolos de sellado de tiempo, consulte Material de referencia.
Notas de seguridad
Al usar Windows Provider, tenga en cuenta lo siguiente:
- El Access Secret debe protegerse como una credencial confidencial.
- No escriba credenciales de acceso en scripts o registros públicos.
- El archivo de configuración del Provider no debe distribuirse públicamente.
- El archivo de certificado local no contiene la clave privada de firma de código.
- La clave privada de firma de código se conserva siempre en el HSM en la nube.
- Al iniciar la firma mediante KSP/CSP, se requiere acceso al servicio remoto de firma de código.
- Al usar el almacén de certificados de LocalMachine, preste especial atención a los permisos de usuario de Windows y al alcance de acceso de las credenciales.
El config.dat de CSP se protege mediante DPAPI del perfil del usuario actual de Windows. Registrar el certificado en LocalMachine no cambia automáticamente el alcance de protección de DPAPI de esta configuración.