Authenticode

Informações Gerais

O Authenticode é uma tecnologia da Microsoft utilizada para identificar quem fez publicações de software. Para isso ele utiliza técnicas de criptografia para verificar a integridade do código e quem o publicou. São assinaturas digitais combinadas com entidades confiáveis incluindo autoridades certificadoras.

Configuração do ambiente

Assinaturas baseadas em SHA1 podem ser feitas sem nenhuma configuração adicional, porém para assinar em SHA256 é necessário habilitar a CNG.

  1. Para habilitar a CNG abra a console DINAMOcon com permissão de administrador (clique com botão direito e selecione Executar como Administrador). Depois de aberto clique em Configuração de ambiente.

  2. Selecione a aba MS CAPI e marque a opção Habilitar CNG.

  3. Aplique e volte para a tela inicial. Lembrando que para funcionar também é necessário que o certificado esteja habilitado para a máquina local e ela consiga acessar o HSM. Para validar isso basta ir em Certificados na tela inicial e verificar na tabela no menu Certificados . O ícone do certificado precisa aparecer na coluna Windows . Caso não esteja, basta clicar com o botão direito no certificado e clicar em Habilitar.

Assinatura

Para assinar, como exemplo será utilizado o Signtool, que é uma ferramenta de linha de comando da Microsoft criada para assinar, verificar e inserir carimbos de tempo em arquivos.

Para usar a ferramenta é necessário:

  • O arquivo do certificado.

  • O nome do container MSCAPI relacionado.

  1. Para obter o certificado basta salvar para arquivo; na tabela de certificados do DINAMOcon, clique 2 vezes no certificado.

  2. Depois clique em Detalhes e na opção Copiar para arquivo.

  3. Escolha a opção Não, não exportar a chave privada.

  4. Selecione o formato X.509 binário codificado por DER (*.cer).

  5. Salve o arquivo.

  6. Na mesma tabela de certificados, anote o nome do container, que está em uma das colunas da tabela de certificados.

  7. Depois basta abrir o prompt e usar o seguinte comando:

    signtool.exe sign /f certificado.cer /csp "Dinamo HSM Cryptographic Provider" /v /kc nome_do_container /fd sha256 arquivo.exe

    Onde:

    • certificado.cer é o certificado salvo anteriormente

    • nome_do_container é o nome do container que aparece na coluna Container na tabela de certificados do DINAMOcon

    • arquivo.exe é o arquivo que deseja assinar

Verificação

  1. A verificação de um arquivo de código assinado com padrão Authenticode pode ser feita com o programa signtoolou exibinndo as propriedades do arquivo (na aba Assinaturas Digitais).

    Para fazer a verificação de forma apropriada com o programa signtool é necessário incluir a opção /pa para que seja usada a Política de Verificação de Autenticação Padrão ao invés da Política de Verificação de Drivers do 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

Last updated