A assinatura de código aproveita a infraestrutura de chave pública (PKI) para servir como passaporte digital do seu software. Por meio de assinaturas digitais, você cria uma prova criptográfica de autenticidade e integridade. Ela autentica você como editor e garante a integridade do código, provando que o código não foi adulterado desde que você o lançou.

Quando os usuários fazem o download do seu software, eles confiam a você a segurança do sistema deles. Quebre essa confiança uma vez e você estará acabado.
Índice
- Proteja as chaves privadas com módulos de segurança de hardware
- Implemente controles de acesso rigorosos para chaves de assinatura de código
- Registre o tempo do seu código durante o processo de assinatura
- Separe os ambientes de assinatura de teste dos ambientes de assinatura de liberação
- Implemente a autenticação de código e a verificação de integridade antes de assinar
- Execute a verificação de vírus no código antes de assiná-lo
- Gire as chaves e use vários certificados
- Leve a sério a revogação de certificados
- Aproveite os certificados de assinatura de código de validação estendida
- Automatize e centralize o gerenciamento de assinatura de código
- Proteja sua cadeia de suprimentos de software com o SSL Dragon
Os riscos se tornaram reais depois que a violação da SolarWinds expôs vulnerabilidades críticas da cadeia de suprimentos de software, mostrando como chaves de assinatura comprometidas podem transformar em arma atualizações legítimas de software e comprometer milhares de organizações. Agora, mais do que nunca, seguir as práticas recomendadas de assinatura de código não é opcional – é fundamental para proteger seus usuários e sua reputação.
Proteger a cadeia de suprimentos de software tornou-se uma prioridade máxima para organizações de todos os tamanhos. Essas diretrizes o ajudarão a implementar medidas de segurança importantes, quer você seja um desenvolvedor individual ou esteja gerenciando pipelines de DevOps corporativos. Quer você esteja assinando executáveis do Windows, aplicativos do macOS, pacotes do Linux ou aplicativos móveis para iOS e Android, esses princípios se aplicam a todas as plataformas.
Proteja as chaves privadas com módulos de segurança de hardware
Você tem chave privada é tudo na assinatura de código. Se você a comprometer, os invasores poderão assinar malware com sua identidade. Seu certificado é revogado, seus clientes perdem a confiança e sua marca sofre um golpe do qual você talvez não consiga se recuperar.
Por que a segurança de chaves privadas é fundamental
Pense na sua chave privada como a chave mestra da credibilidade do seu software – ela gera as assinaturas digitais que comprovam sua identidade. Se alguém a roubar, poderá distribuir código malicioso que pareça ter vindo de você. Você precisará revogar seu certificado, assinar novamente tudo o que já lançou e esperar que seus clientes percebam a diferença antes de instalar o software infectado.
A abordagem tradicional de armazenar chaves em discos rígidos ou servidores de compilação está pedindo por problemas. As máquinas dos desenvolvedores são comprometidas. Os servidores de compilação são violados. Até mesmo o armazenamento criptografado em hardware comum deixa as chaves vulneráveis à extração.
Soluções de hardware com certificação FIPS 140-2
Os módulos de segurança de hardware (HSMs) resolvem esse problema armazenando chaves privadas em hardware inviolável. Como a pedra angular da sua infraestrutura de PKI, os HSMs fornecem a base de segurança que a confiança baseada em certificados exige. Esses dispositivos geram e usam chaves internamente sem nunca expô-las ao seu sistema. Se você tentar adulterar fisicamente um HSM, ele destruirá as chaves.
A certificação FIPS 140-2 é importante aqui. O Nível 2 exige evidência física de violação, enquanto o Nível 3 acrescenta uma resposta ativa de violação que zera as chaves quando alguém tenta invadir. Para a maioria das organizações, o Nível 2 oferece uma proteção sólida. Essas soluções de hardware se integram perfeitamente aos ambientes de desenvolvimento Windows, macOS e Linux, protegendo suas chaves independentemente da plataforma de compilação. Os aplicativos governamentais e de alta segurança devem considerar o Nível 3.
Os tokens USB oferecem uma alternativa de HSM portátil. Eles são hardware criptográfico com certificação FIPS que você pode levar com você, adicionando segurança física por meio da posse. As principais autoridades de certificação oferecem suporte a implementações de tokens USB e HSM para certificados de assinatura de código.
No entanto, as políticas da CA são diferentes e você precisa planejá-las. A DigiCert e a GoGetSSL emitem certificados de assinatura de código por apenas um ano, e você pode usar um HSM fornecido pela CA ou seu próprio hardware.
O Sectigo (Comodo) oferece certificados plurianuais de até 3 anos, mas com regras mais rígidas. Se você escolher um certificado de 2 ou 3 anos, deverá usar seu próprio HSM. O hardware fornecido pela CA só está disponível para pedidos de 1 ano.
Você quer assinar o código? Você precisa do token. Sem token, você não assina nada – mesmo que alguém comprometa toda a sua rede.

Implemente controles de acesso rigorosos para chaves de assinatura de código
Nem todos os membros da sua equipe precisam ter acesso às chaves de assinatura de produção. Na verdade, a maioria das pessoas não deveria ter.
O princípio é simples: menos pessoas com acesso significa menos vetores de ataque. Configure o controle de acesso baseado em função (RBAC) que limita as permissões de assinatura a funções específicas. Sua equipe de controle de qualidade não precisa de acesso de assinatura de produção. Seus desenvolvedores juniores provavelmente também não precisam.
Crie fluxos de trabalho de aprovação que exijam várias aprovações para versões de produção. Uma pessoa envia o código para assinatura, outra o aprova e só então a assinatura de fato acontece. Essa separação de tarefas detecta erros e evita ameaças internas.
Mantenha registros de auditoria abrangentes. Registre quem assinou o quê, quando assinou e de qual sistema. O whitepaper Code Signing Best Practices do CA Security Council enfatiza que o registro detalhado é essencial para a resposta a incidentes e a investigação forense. Quando algo dá errado – e eventualmente algo sempre dá – você precisa saber exatamente o que aconteceu.
A segurança física também é importante:
- Não deixe tokens USB sobre as mesas.
- Não armazene as credenciais de acesso ao HSM em arquivos de texto simples.
- Não escreva códigos PIN em notas adesivas.
Isso parece óbvio, mas são problemas comuns que prejudicam uma segurança sólida.
Registre o tempo do seu código durante o processo de assinatura
Aqui está um problema: os certificados de assinatura de código expiram, geralmente após um a três anos. Sem o registro de data e hora, sua assinatura se torna inválida quando o certificado expira. Os usuários começam a ver mensagens de aviso sobre software não confiável, mesmo que nada tenha mudado no seu código.
O carimbo de data/hora corrige isso adicionando um carimbo de data/hora confiável do servidor de carimbo de data/hora de uma autoridade de certificação durante o processo de assinatura. Esse carimbo de data/hora prova que você assinou o código enquanto seu certificado ainda era válido. A assinatura permanece confiável mesmo depois que seu certificado expira ou é revogado.
Pense nisso como um carimbo de cartório com uma data. O tabelião pode se aposentar ou fechar a loja, mas o carimbo dele em seu documento de 2020 ainda prova que o documento existia e foi verificado em 2020.
O processo técnico é simples. Durante a assinatura, sua ferramenta entra em contato com um servidor de carimbo de data/hora executado pela autoridade de certificação. O servidor retorna um carimbo de data/hora assinado que é incorporado à assinatura do seu código. Quando os usuários verificam sua assinatura em qualquer plataforma – Windows, macOS, Linux, iOS ou Android – eles verificam o certificado de assinatura e o carimbo de data/hora. Esse processo de verificação mantém a integridade do código ao longo do tempo, mesmo quando os certificados expiram e os padrões de segurança evoluem.
Isso também economiza dinheiro. Sem o carimbo de tempo, você precisaria assinar novamente todo o software distribuído sempre que renovasse o certificado. Com o registro de data e hora, as versões antigas permanecem confiáveis indefinidamente.
Economize 10% em certificados SSL ao fazer seu pedido na SSL Dragon hoje mesmo!
Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10
Separe os ambientes de assinatura de teste dos ambientes de assinatura de liberação
Seu ambiente de teste não deve usar as mesmas chaves de assinatura que a produção. Você sempre pode.
Os certificados de teste devem ser autoassinados ou emitidos por uma autoridade de certificação de teste interna que se encadeie a uma raiz diferente da dos certificados de produção. Essa separação arquitetônica evita que o código assinado para teste seja confundido com software pronto para lançamento.
Configure uma infraestrutura de assinatura separada para cada ambiente. Sua assinatura de teste pode ser mais acessível e menos restritiva – os desenvolvedores precisam fazer iterações rapidamente. No entanto, a assinatura de produção deve ser bem protegida com todas as medidas de segurança que discutimos.
Marque claramente os pacotes de teste. Inclua “TEST” ou “BETA” nos nomes dos arquivos. Use identificadores de produtos diferentes. Impossibilite a distribuição acidental de códigos assinados para teste aos clientes.
Os controles de acesso também devem ser muito diferentes. Os desenvolvedores podem ter acesso direto à assinatura de teste. A assinatura de produção deve exigir fluxos de trabalho de aprovação e, possivelmente, credenciais totalmente diferentes.

Implemente a autenticação de código e a verificação de integridade antes de assinar
A assinatura de código fornece autenticação de código, confirmando quem publicou o software. Ela não confirma que o software é seguro.
Essa distinção é importante porque, em última instância, você é responsável por tudo o que assina, mesmo que não tenha escrito tudo. Assinar um código que você não verificou é como assinar um empréstimo sem verificar as finanças do tomador.
Implemente processos de envio e aprovação antes de qualquer coisa ser assinada. Peça a alguém que revise o que está sendo assinado. Compare o código em seu servidor de compilação com o repositório de código-fonte. Certifique-se de que eles sejam exatamente iguais.
A violação da SolarWinds nos ensinou que os invasores podem injetar códigos maliciosos nos pipelines de criação. Esse ataque destacou a importância da segurança da cadeia de suprimentos de software – cada componente, dependência e etapa de compilação representa um possível vetor de ataque. Se você assinar sem verificar, estará confiando em cada parte da sua infraestrutura e em cada parte do código de fontes externas. Essa não é uma aposta que você queira fazer.
Configure verificações automatizadas sempre que possível. Verifique as assinaturas digitais no código que os desenvolvedores registram em seu repositório. Execute ferramentas de análise estática. Crie somas de verificação de compilações aprovadas e verifique-as antes de assinar.
Registre tudo. Quando alguém enviar um código para assinatura, registre o que foi enviado, quem o enviou, quem o aprovou e o que foi assinado. Essas trilhas de auditoria são cruciais para a investigação de incidentes.
Execute a verificação de vírus no código antes de assiná-lo
A assinatura de código prova que você publicou o software. Os usuários confiam em você para não publicar malware, mas os certificados de assinatura de código não verificam a segurança.
Isso é importante quando você incorpora código de fontes externas – bibliotecas de código aberto, componentes de terceiros, contribuições de contratados. Você está assinando tudo com seu nome.
Examine tudo antes de assinar. Use vários mecanismos antivírus, se possível. Verifique se há assinaturas de malware conhecidas, padrões suspeitos e possíveis vulnerabilidades. Isso se aplica se você estiver preparando executáveis do Windows, aplicativos do macOS, pacotes do Linux ou aplicativos móveis para iOS e Android.
A detecção de uma inserção mal-intencionada inadvertida antes da assinatura protege seus usuários e sua reputação. Descobrir isso depois que você distribuiu malware assinado significa revogação de certificado, notificação ao cliente e controle de danos.
A varredura acrescenta um tempo mínimo ao seu processo de compilação, mas oferece proteção essencial para a integridade e a autenticidade do código. Torne-o obrigatório, não opcional.
Gire as chaves e use vários certificados
Não coloque todos os seus ovos em uma única cesta. Ao usar um único certificado de assinatura de código para tudo, você cria um único ponto de falha.
Considere o uso de certificados diferentes para linhas de produtos diferentes ou versões principais. Se você descobrir uma falha de segurança na forma como um certificado foi gerenciado, só precisará revogar esse certificado específico. Seus outros produtos continuarão confiáveis.
A rotação regular de chaves também limita a exposição. Se alguém tiver comprometido sua chave há seis meses, mas você já tiver feito o rodízio para um novo certificado, essa pessoa não poderá assinar o código atual como você. O dano é contido em versões mais antigas.
Algumas organizações atribuem certificados exclusivos a diferentes equipes de DevOps ou ramificações de lançamento. Isso distribui o risco e facilita a investigação de comprometimentos. Quando algo dá errado, você sabe exatamente qual certificado estava envolvido e quais versões foram afetadas.
Defina um cronograma de rotação que equilibre a segurança com a sobrecarga operacional. A rotação anual ou semestral funciona para muitas organizações. Ambientes de alta segurança podem fazer a rotação trimestralmente.
Leve a sério a revogação de certificados
A revogação de certificados é a opção nuclear, mas às vezes é necessária.
Revogue imediatamente se sua chave privada for comprometida. Não espere para avaliar os danos. Não espere que ninguém tenha notado. Revogue, notifique sua autoridade de certificação e inicie a contenção.
A revogação afeta todo o código assinado com esse certificado. Os usuários verão avisos. Os sistemas automatizados podem bloquear a instalação. É por isso que o registro de data e hora é fundamental – ele limita os danos ao código assinado após o registro de data e hora, mas antes da revogação.
Acompanhe cuidadosamente seus certificados na infraestrutura de PKI. Saiba onde eles estão, quem tem acesso, quando expiram e qual código foi assinado. O gerenciamento do ciclo de vida dos certificados torna-se crucial à medida que você aumenta a escala.
Comunique os comprometimentos à sua autoridade de certificação de acordo com os procedimentos dela. Eles ajudarão você com a revogação e talvez tenham orientações sobre os requisitos de notificação.
Ter um plano de revogação antes que você precise dele torna o processo menos caótico. Documente as etapas, atribua responsabilidades e pratique o procedimento.
Aproveite os certificados de assinatura de código de validação estendida
Os certificados de assinatura de código de Validação Estendida (EV) são certificados digitais X.509 que oferecem maior garantia do que os certificados padrão. A autoridade de certificação realiza uma verificação de identidade mais rigorosa antes de emiti-los.
Os certificados EV exigem armazenamento de hardware que atenda aos padrões FIPS 140-2 Nível 2 ou superior. Você não pode obter um certificado EV e armazená-lo em seu disco rígido. Essa proteção obrigatória de hardware reduz o risco de comprometimento da chave.
A maioria dos certificados EV vem em tokens USB com proteção por PIN. Você precisa tanto do token físico quanto do PIN para assinar o código. Essa abordagem de dois fatores dificulta a assinatura não autorizada.
Uma pesquisa do Cyber Forensics Innovation Lab da Georgia Tech constatou que os executáveis assinados por EV resistiram a 99,99% dos ataques de phishing testados, em comparação com 90% das assinaturas padrão. Os sistemas operacionais, incluindo Windows, macOS e plataformas móveis como iOS e Android, reconhecem as assinaturas EV e exibem indicadores de confiança aprimorados para os usuários. Os indicadores de confiança aprimorados e a verificação rigorosa fazem uma diferença mensurável.
Escolha certificados EV quando você precisa de confiança máxima – produtos principais, software amplamente distribuído ou aplicativos que lidam com dados confidenciais. O custo extra e a sobrecarga de gerenciamento são compensados com maior credibilidade e segurança.
Automatize e centralize o gerenciamento de assinatura de código
O gerenciamento manual de certificados não é dimensionado em ambientes de DevOps em que várias equipes enviam códigos continuamente.
As soluções de CLM (gerenciamento do ciclo de vida do certificado) centralizam o controle e se integram aos pipelines de CI/CD. Plataformas como o Sectigo Certificate Manager e o AppViewX CERT+ oferecem recursos de CLM de nível empresarial projetados especificamente para fluxos de trabalho de assinatura de código. Os desenvolvedores têm acesso de autoatendimento para gerar assinaturas digitais sem acesso direto às chaves. As equipes de segurança mantêm a visibilidade e aplicam políticas em todas as atividades de assinatura.
Essas plataformas rastreiam o inventário de certificados, as datas de expiração e os padrões de uso. O gerenciamento centralizado torna-se essencial para a segurança da cadeia de suprimentos de software, especialmente quando várias equipes e contratados contribuem para a sua base de código. Elas automatizam as renovações e facilitam a auditoria. Quando você precisa saber o que foi assinado com qual certificado, a informação está lá.
A integração com sistemas de compilação significa que os desenvolvedores não precisam se preocupar com os detalhes do certificado. Eles enviam o código, o pipeline lida com a assinatura automaticamente usando o certificado apropriado, e o artefato assinado sai do outro lado.
Fluxos de trabalho predefinidos aplicam suas políticas de segurança. O código não pode ser assinado sem aprovação. Os certificados de teste não podem ser usados para produção. Os desenvolvedores de uma unidade de negócios não podem acessar as chaves de assinatura de outra unidade.
A centralização simplifica a segurança sem dificultar a vida dos desenvolvedores. Esse é o equilíbrio de que você precisa: uma segurança forte que funcione com o seu processo de desenvolvimento, e não contra ele.
Proteja sua cadeia de suprimentos de software com o SSL Dragon
A SSL Dragon fornece certificados de assinatura de código das principais autoridades de certificação, incluindo DigiCert e Sectigo. Se você precisa de assinatura de código padrão para aplicativos internos ou certificados EV para software amplamente distribuído, nós o ajudaremos a escolher a solução certa.
Nossa equipe entende os desafios de segurança que os desenvolvedores de software enfrentam. Podemos orientar você na seleção, implementação e gerenciamento de certificados para garantir que sua infraestrutura de assinatura de código siga as práticas recomendadas do setor.
Explore os certificados de assinatura de código da SSL Dragon ou entre em contato com nossa equipe para discutir qual solução melhor se adapta aos seus requisitos de segurança e desenvolvimento de software. Proteja sua cadeia de suprimentos de software – seus usuários estão contando com isso.
Economize 10% em certificados SSL ao fazer seu pedido hoje!
Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10






