Ir al contenido

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.

  1. 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.

    Pantalla de inicio de la consola Pantalla de inicio de la consola
    Pantalla de inicio de la consola

  2. Seleccione la pestaña MS CAPI y marque la opción GNC Activado.

    Parámetros CAPI de MS Parámetros CAPI de MS
    Parámetros CAPI de MS

  3. 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.

  1. Para obtener el certificado, basta con guardarlo en un archivo; en la tabla de certificados de DINAMOcon, haga doble clic sobre el certificado.

    Tabla de certificados Tabla de certificados
    Tabla de certificados

  2. A continuación, haga clic en Detalles y en la opción Copiar en archivo.

  3. Elija la opción No, no exportar la clave privada.

  4. Seleccione el formato binario X.509 codificado por DER (*.cer).

  5. Guarda el archivo.

  6. 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 certutillocalizando el certificado específico en la lista de salida:

    comando certutil
    certutil -user -store "My"
    
    Salida del comando certutil
    My "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.
    
    1. Nombre del contenedor de claves
  7. A continuación, basta con abrir el prompt y utilizar el siguiente comando:

    Comando de firma
    signtool.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 guardado
    • nombre_contenedor es el nombre del contenedor que aparece en la columna Contenedor de la tabla de certificados DINAMOcon
    • archivo.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 signtoolo 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.

Comprobar comando
signtool verify /pa /v dinamo-4.7.31-x64-setup.msi
Salida de comandos
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

Propiedad de firma digital del archivo