Documentación Técnica Code Signing

Conozca los conceptos técnicos involucrados en el proceso de firma digital de software, desde la generación de claves hasta la verificación de la firma por parte de los sistemas operativos.

Los Certificados Code Signing utilizan una Infraestructura de Clave Pública (PKI) basada en certificados X.509. Durante el proceso de emisión se genera un par de claves criptográficas compuesto por una clave privada y una clave pública.


Conforme a los estándares vigentes del CA/Browser Forum, la clave privada debe generarse dentro de un dispositivo criptográfico certificado, como un Token USB o un Hardware Security Module (HSM). La generación se realiza internamente mediante un generador criptográfico de números aleatorios (CSPRNG), por lo que la clave privada nunca abandona el dispositivo y no puede ser exportada ni duplicada.


Este mecanismo reduce significativamente el riesgo de robo o uso indebido de la clave de firma, protegiendo la identidad del desarrollador y evitando la distribución de software firmado por terceros no autorizados.
La clave pública, en cambio, puede compartirse libremente y se utiliza para crear un Certificate Signing Request (CSR), que será enviada a la Autoridad Certificante para solicitar la emisión del certificado.


El Certificate Signing Request (CSR) incluye la clave pública y la información de identificación del solicitante, firmadas mediante la clave privada asociada. Junto con la CSR, puede enviarse un mecanismo de Key Attestation, que proporciona evidencia criptográfica de que el par de claves fue generado dentro de un dispositivo seguro certificado y que la clave privada nunca abandonó dicho hardware. Tras verificar esta evidencia y completar el proceso de validación de identidad, la Autoridad Certificante procede a la emisión del certificado digital.

Tipos de archivos compatibles


Los Certificados Code Signing permiten firmar digitalmente distintos tipos de software y componentes ejecutables, dependiendo de la plataforma y del sistema operativo.

Los ejecutables y bibliotecas de Windows se firman habitualmente utilizando SignTool. La clave privada permanece almacenada en el Token USB o HSM y nunca abandona el dispositivo.

signtool sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a Aplicacion.exe
                        

Los paquetes de instalación se firman utilizando el mismo certificado almacenado en el dispositivo criptográfico.

signtool sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /n "Nombre de su empresa" "C:\ruta\al\Instalador.msi"
                    

Los controladores también se firman con SignTool. Para controladores Kernel-Mode modernos es necesario utilizar un certificado EV Code Signing para el proceso requerido por Microsoft.

signtool sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a Driver.sys
        

Los scripts PowerShell pueden firmarse mediante Authenticode, utilizando un certificado Code Signing disponible en el almacén de certificados de Windows. La operación de firma utiliza la clave privada protegida dentro del Token USB o HSM, sin exponerla ni permitir su exportación.

$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1

Set-AuthenticodeSignature `
-FilePath "script.ps1" `
-Certificate $cert `
-TimestampServer "http://timestamp.sectigo.com"

Los archivos JAR pueden firmarse mediante jarsigner, utilizando el certificado almacenado en un dispositivo criptográfico compatible.

jarsigner -tsa http://timestamp.sectigo.com -verbose -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./xxxx.cfg "C:\ruta\al\archivo.jar" ALIAS
        

Los proyectos VBA y complementos de Office pueden firmarse utilizando un certificado Code Signing almacenado en el Token USB o HSM, permitiendo identificar al editor y reducir advertencias de seguridad.

  1. Abrir el editor VBA (Alt+F11) en el documento u complemento.
  2. Ir a Herramientas → Firma digital del proyecto.
  3. Seleccionar el certificado del Token USB o HSM.
  4. Aceptar y guardar el proyecto.

Parámetros aplicables en la firma con signtool


Opción Descripción
/a Selecciona automáticamente el certificado de firma más adecuado. SignTool busca todos los certificados válidos que cumplen las condiciones especificadas y utiliza el que tenga el mayor período de validez restante.
/n Especifica el Nombre del Sujeto (Subject Name) del certificado de firma. El valor puede ser una parte del nombre completo del sujeto.
/fd Especifica el algoritmo de resumen criptográfico (hash) que se utilizará para crear la firma digital.
/tr Especifica la dirección URL del servidor de Timestamp (sellado de tiempo).
/td Especifica el algoritmo de resumen criptográfico utilizado por el servidor de Timestamp. Debe utilizarse junto con la opción /tr. Recomendado
/sha1 Selecciona el certificado de firma mediante su huella digital (SHA-1 Thumbprint).
/csp Especifica el Proveedor de Servicios Criptográficos (CSP) que contiene la clave privada utilizada para la firma.

Timestamp


Durante la firma digital puede incorporarse una marca de tiempo (Timestamp) emitida por un servidor confiable.

Esto permite demostrar que el software fue firmado mientras el certificado se encontraba vigente, conservando la validez de la firma incluso después del vencimiento o reemplazo del certificado.

Formas de Emisión del Certificado


La clave privada del certificado Code Signing debe generarse y almacenarse en hardware certificado conforme a los estándares del CA/Browser Forum. A continuación se describen las dos modalidades disponibles para la emisión y custodia de la clave.

Máxima seguridad

HSM (Hardware Security Module)

El certificado se instala en un Hardware Security Module (HSM) o dispositivo criptográfico dedicado del cliente. La clave privada se genera dentro del hardware mediante un generador criptográfico de números aleatorios (CSPRNG) y nunca puede ser exportada ni duplicada.

Características técnicas
  • Certificación FIPS 140-2 Nivel 2 o superior
  • Common Criteria EAL 4+ o equivalente
  • Alta disponibilidad y rendimiento para firmas masivas
  • Integración con PKCS#11, JKS, CNG y CSP
Casos de uso recomendados
  • Grandes volúmenes de firma automatizada (CI/CD)
  • Entornos con requisitos de auditoría y cumplimiento
  • Equipos distribuidos con firma centralizada
Cumple CA/B BR v.1.8.7+ FIPS 140-2
Más popular

Token USB

El certificado se entrega preinstalado en un token USB enviado de forma segura al solicitante. La clave privada se genera dentro del token y permanece protegida en todo momento, sin requerir infraestructura adicional.

Características técnicas
  • Certificación FIPS 140-2 Nivel 2 o superior
  • Compatible con PKCS#11, Microsoft CAPI/CNG
  • Protección con PIN de acceso
  • Plug-and-play, sin configuración adicional
Casos de uso recomendados
  • Desarrolladores individuales o equipos pequeños
  • Firmas esporádicas o de baja frecuencia
  • Entornos sin infraestructura PKI propia
Cumple CA/B BR v.1.8.7+ FIPS 140-2

Independientemente de la modalidad elegida, los certificados pueden emitirse bajo distintos niveles de validación según el grado de confianza requerido: OV (Organization Validation) — verificación de la empresa mediante documentación legal y dominio, o EV (Extended Validation) — validación reforzada con verificación de identidad más rigurosa.

Requisitos de Hardware


A partir del 1° de Junio de 2023, el CA/Browser Forum exige que las claves privadas de los certificados Code Signing se generen y almacenen en dispositivos criptográficos certificados.

FIPS 140-2 Nivel 2

Estándar de seguridad para módulos criptográficos. El Nivel 2 requiere evidencia de integridad física y protección contra acceso no autorizado.

Common Criteria EAL 4+

Evaluación de seguridad que garantiza que el producto ha sido desarrollado y probado siguiendo metodologías rigurosas de seguridad.

CSPRNG

Generador criptográfico de números aleatorios que garantiza la entropía necesaria para la generación segura de claves privadas.

Soporte y Recursos


Soporte Técnico

¿Necesita asistencia personalizada? Nuestro equipo de soporte está disponible para ayudarle con su implementación.

Ir al portal

¿Busca información comercial o cotización? Visite nuestra página de producto