FAQ Hero
Confiança da assinatura de código

O que é assinatura
de código?

O que é assinatura de código?

Aassinatura de código é o processo de aplicar uma assinatura digital a um arquivo ou binário de software. Essa assinatura digital valida a identidade do autor ou fornecedor do software e verifica se o arquivo não foi alterado ou violado desde a assinatura. A assinatura de código é um indicador para o destinatário do software de que o código é confiável, desempenhando um papel fundamental no combate a tentativas mal-intencionadas de comprometer sistemas ou dados.

Os casos de uso de assinatura de código incluem software para uso interno ou externo, patches ou correções, testes, desenvolvimento de produtos de dispositivos IoT, ambientes de computação e aplicativos móveis. Além de código e software, a assinatura de código também é usada com aplicativos, firmware, arquivos, mensagens, XML, scripts, contêineres e imagens.

Como a assinatura de código funciona?

Como ocorre com outras tecnologias de PKI, a assinatura de código envolve um par de chaves pública/privada, uma autoridade de certificação e um certificado digital. Quando um desenvolvedor assina um software, cria um pacote vinculado que inclui o próprio software, um certificado de assinatura de código e uma assinatura digital. O certificado de assinatura de código contém a identidade e a chave pública do fornecedor, além da assinatura da CA que confirma que ela verificou a identidade. A assinatura digital é o hash assinado do software que usa a chave privada do fornecedor. Quando o software é entregue, o agente do usuário verifica a validade e a integração do certificado (determinando se o software foi alterado desde a assinatura). Ele usa a chave pública do certificado para revelar o hash na assinatura digital. Em seguida, compara o hash da assinatura digital com o hash recém calculado do software. Se os hashes coincidirem, o cliente ou usuário tem a garantia de que o software não foi violado. O gerenciamento de chaves privadas é um elemento de segurança crítico da assinatura de código. Se a chave for roubada ou gerenciada de forma inadequada, criminosos cibernéticos podem usá-la para assinar código mal-intencionado e fornecê-lo como atualizações para sistemas de desenvolvedores ou clientes.

Code signing table graph 1 - PT

Por que precisamos assinar código?

A assinatura de código é exigida por grandes plataformas de software, como Java e Microsoft, para impedir a propagação de malware. Também é uma prática de segurança recomendada assinar código para que os clientes ou usuários não façam download de códigio violado ou de fontes desconhecidas. Ela diferencia código ou software de sua organização do código que pode ter sido preparado para parecer que se originou de sua organização. Além disso, quando o software é disponibilizado publicamente sem ter sido assinado, os usuários podem visualizar avisos de segurança. Quando o código é criado e desenvolvido para uso interno, sua assinatura facilita a responsabilização e o controle.

Que tipos de software é possível assinar?

É possível assinar qualquer tipo de binário ou arquivo, incluindo:

• Aplicativos de software disponibilizados em sites para download

• Aplicativos de TI internos

• Aplicativos móveis

• Arquivos XML

• Scripts

• Imagens de software

• Contêineres

• Drivers e utilitários

• Firmware

Quais são as etapas envolvidas na assinatura de código?

Primeiro, um fornecedor de software gera um par de chaves pública/privada. Depois, obtém um certificado de assinatura de código, enviando uma Solicitação de assinatura de certificado (CSR), junto com a chave pública, para uma autoridade de certificação (CA). A CA verifica a identidade do fornecedor e autentica a solicitação do certificado. Se for bem-sucedida, a CA emite o certificado com assinatura de código. O certificado inclui a identidade do fornecedor, a chave pública e a assinatura da CA. A assinatura da CA é importante, pois funciona como um testemunho confiável e independente da identidade do proprietário do certificado. O certificado de assinatura de código confirma não só a identidade do fornecedor mas também a integridade do software. Quando o fornecedor assina o software, cria um pacote vinculado que inclui o software, o certificado de assinatura de código e uma assinatura digital.

A assinatura digital também requer as seguintes etapas: 

  1. Gere um hash ou uma representação com criptografia única do software usando um algoritmo de hash.
  2. Assine o hash com a chave privada do fornecedor e um algoritmo de assinatura.

A assinatura de código pode ser realizada de forma manual ou automatizada como parte de um ciclo de vida de desenvolvimento de software, como um processo de Integração contínua/Entrega contínua (CI/CD).