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.
-
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.
Console Dinamocon -
Selecione a aba MS CAPI e marque a opção Habilitar CNG.
Configuração Cliente HSM - Parâmetros CSP -
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.
-
Para obter o certificado basta salvar para arquivo; na tabela de certificados do DINAMOcon, clique 2 vezes no certificado.
Tabela de Certificados -
Depois clique em Detalhes e na opção Copiar para arquivo.
Certificado -
Escolha a opção Não, não exportar a chave privada.
Exportando certificado -
Selecione o formato X.509 binário codificado por DER (*.cer).
Exportando certificado -
Salve o arquivo.
-
Na mesma tabela de certificados, anote o nome do container, que está em uma das colunas da tabela de certificados.
Tabela de Certificados -
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
- A verificação de um arquivo de código assinado com padrão Authenticode pode ser feita com o programa
signtool
ou 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