Authenticode
Información general
Authenticode es una tecnología de Microsoft utilizada para identificar quién ha publicado software. Utiliza técnicas criptográficas para verificar la integridad del código y quién lo ha publicado. Se trata de firmas digitales combinadas con organizaciones de confianza, incluidas autoridades de certificación.
Configuración del entorno
Las firmas basadas en SHA1 se pueden realizar sin ninguna configuración adicional, pero para firmar en SHA256 es necesario habilitar CNG.
-
Para habilitar el GNC, abra la consola DINAMOcon con permisos de administrador (haga clic con el botón derecho y seleccione Ejecutar como administrador). Una vez abierta, haz clic en Configuración local.
-
Seleccione la pestaña MS CAPI y marque la opción GNC Activado.
-
Aplícalo y vuelve a la pantalla de inicio. Recuerda que para que esto funcione, el certificado también debe estar habilitado para la máquina local y ésta debe poder acceder al HSM. Para comprobarlo, basta con ir a Certificados en la pantalla de inicio y comprobar la tabla del menú Certificados. El icono del certificado debe aparecer en la columna Windows. Si no es así, haga clic con el botón derecho del ratón en el certificado y haga clic en Habilitar.
Firma
Se utilizará como ejemplo Signtool, una herramienta de línea de comandos de Microsoft diseñada para firmar, verificar e insertar marcas de tiempo en archivos.
Para utilizar la herramienta necesita - El archivo del certificado. - El nombre del contenedor MSCAPI relacionado.
-
Para obtener el certificado, basta con guardarlo en un archivo; en la tabla de certificados de DINAMOcon, haga doble clic sobre el certificado.
-
A continuación, haga clic en Detalles y en la opción Copiar en archivo.
-
Elija la opción No, no exportar la clave privada.
-
Seleccione el formato binario X.509 codificado por DER (*.cer).
-
Guarda el archivo.
-
En la misma tabla de certificados, escriba el nombre del contenedor de claves, que se encuentra en una de las columnas de la tabla de certificados. Ej:
523D55BE1A_d282f562-098a-480e-a3ac-88d429900767
También puede obtener el nombre del contenedor con el comando
certutil
localizando el certificado específico en la lista de salida:comando certutilcertutil -user -store "My"
Salida del comando certutilMy "Pessoal" ================ Certificado 0 ================ Número de Série: ff000000000000000000000000000001 Emissor: C=BR, O=ICP-Brasil, OU=AC Dinamo, CN=AC Dinamo Multipla NotBefore: 17/11/2020 17:00 NotAfter: 04/08/2040 17:00 Requerente: C=BR, O=ICP-Brasil, OU=Autoridade Certificadora Raiz Brasileira v2, OU=AC Dinamo, OU=AC Dinamo Multipla, OU=Certificado PF A3, CN=Alice Criptografica da Silva:12345670001 Certificado não raiz Hash Cert(sha1): 523d55be1abbfab08c81b647e77a7861e182b17b Contêiner da chave = 523D55BE1A_d282f562-098a-480e-a3ac-88d429900767 # (1)! Provider = Dinamo HSM Cryptographic Provider A chave privada NÃO é exportável Teste de assinatura aprovado CertUtil: -store : comando concluído com êxito.
- Nombre del contenedor de claves
-
A continuación, basta con abrir el prompt y utilizar el siguiente comando:
Comando de firmasigntool.exe sign /f certificado.cer /csp "Dinamo HSM Cryptographic Provider" /v /kc nome_do_container /fd sha256 arquivo.exe
Dónde:
certificado.cer
es el certificado previamente guardadonombre_contenedor
es el nombre del contenedor que aparece en la columna Contenedor de la tabla de certificados DINAMOconarchivo.exe
es el archivo que desea firmar
Verificación
Verificación de un archivo de código firmado con la norma Authenticode puede hacerse con el programa signtool
o mostrando las propiedades del archivo (en la ventana Firmas digitales).
Realizar correctamente el control con el programa signtool es necesario incluir la opción /pa
para utilizar el Política estándar de verificación de autenticación en lugar de Política de verificación de controladores de Windows.
signtool verify /pa /v dinamo-4.7.31-x64-setup.msi
Verifying: dinamo-4.7.31-x64-setup.msi
Signature Index: 0 (Primary Signature)
Hash of file (sha256): 9BD26CD80866476402B36FA9EF19C8F72285E4FA8BECA451AC36100F514A562E
Signing Certificate Chain:
Issued to: AAA Certificate Services
Issued by: AAA Certificate Services
Expires: Sun Dec 31 20:59:59 2028
SHA1 hash: D1EB23A46D17D68FD92564C2F1F1601764D8E349
Issued to: Sectigo Public Code Signing Root R46
Issued by: AAA Certificate Services
Expires: Sun Dec 31 20:59:59 2028
SHA1 hash: 329B78A5C9EBC2043242DE90CE1B7C6B1BA6C692
Issued to: Sectigo Public Code Signing CA R36
Issued by: Sectigo Public Code Signing Root R46
Expires: Fri Mar 21 20:59:59 2036
SHA1 hash: 0BC5E76773D2E44FC9903D4DFEFE451553BBEC4A
Issued to: Dinamo Networks
Issued by: Sectigo Public Code Signing CA R36
Expires: Tue Mar 14 20:59:59 2023
SHA1 hash: D2E94D57511E818732108F8D56F96397600078B3
The signature is timestamped: Wed Aug 31 19:26:34 2022
Timestamp Verified by:
Issued to: DigiCert Assured ID Root CA
Issued by: DigiCert Assured ID Root CA
Expires: Sun Nov 09 21:00:00 2031
SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43
Issued to: DigiCert Trusted Root G4
Issued by: DigiCert Assured ID Root CA
Expires: Sun Nov 09 20:59:59 2031
SHA1 hash: A99D5B79E9F1CDA59CDAB6373169D5353F5874C6
Issued to: DigiCert Trusted G4 RSA4096 SHA256 TimeStamping CA
Issued by: DigiCert Trusted Root G4
Expires: Sun Mar 22 20:59:59 2037
SHA1 hash: B6C8AF834D4E53B673C76872AA8C950C7C54DF5F
Issued to: DigiCert Timestamp 2022 - 2
Issued by: DigiCert Trusted G4 RSA4096 SHA256 TimeStamping CA
Expires: Mon Mar 14 20:59:59 2033
SHA1 hash: 8508F386515CB3D3077DB6B4B7C07F1B4A5E41DE
Successfully verified: dinamo-4.7.31-x64-setup.msi
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0