7 melhores práticas de assinatura de código da Microsoft e PowerShell que você pode implementar imediatamente
A assinatura de código é um componente crítico do desenvolvimento de software. Você passou todo esse tempo criando o software – isso provavelmente significava muita programação noturna, muito controle de qualidade e uma quantidade insalubre de cafeína – você não quer ter certeza de que as pessoas confiam no seu software? E, talvez mais importante, você não quer que eles confiem em você como desenvolvedor? É aqui que a implementação das melhores práticas de assinatura de código pode entrar em ação.
Seu software provavelmente não é apenas um. Você está tentando construir relacionamentos com os clientes – e isso começa com confiança.
Mas tu já sabes isso; você sabe que precisa estar assinando seu código . Você sabe que precisa obter um certificado de assinatura de código de uma autoridade de certificação (CA) confiável como Sectigo (anteriormente Comodo CA) ou DigiCert. Você sabe sobre a validação envolvida, o processo de emissão.
Você está aqui para saber quais são as melhores práticas para assinar seu código. Se você usa o Windows PowerShell ou o prompt de comando para escrever scripts, essas práticas recomendadas de assinatura de código também se aplicam a você. Então, vamos dar uma olhada.
7 melhores práticas de assinatura de código
Dividimos essas melhores práticas de assinatura de código geral e do PowerShell em sete pontos principais:
1. Empregar segurança de chave forte
Sua chave de assinatura é o componente mais importante do seu certificado de assinatura de código. Guarde-o com sua vida. Isso significa limitar o acesso a ele e, idealmente, armazená-lo em um módulo de segurança de hardware (HSM) e não em qualquer lugar da rede. Esse HSM deve ser hardware criptográfico usando padrões criptográficos certificados FIPS 140-2 Nível 2. Além disso, certifique-se de que o HSM criptográfico esteja protegido com uma senha gerada aleatoriamente com pelo menos 16 caracteres. É claro que as regras de senha padrão se aplicam, e as senhas devem conter uma mistura de letras maiúsculas e minúsculas, números e símbolos.
2. Carimbo de data e hora em tudo
São necessárias algumas etapas extras para configurar seu dispositivo de assinatura para fazer uma chamada para um servidor de carimbo de data/hora, mas são etapas extras necessárias porque a falha em fazer isso tornará suas assinaturas inválidas assim que seu certificado de assinatura de código expirar. A única coisa pior para a reputação de um desenvolvedor do que um usuário ser informado de que seu software não é confiável é um usuário ser informado de que seu software não é confiável DEPOIS de já estar usando. Acabou o relacionamento.
3. Entenda a diferença entre assinatura de teste e de liberação
Os certificados de assinatura de teste não exigem os mesmos padrões de segurança rigorosos que os certificados de assinatura de código de desenvolvimento. Na verdade, na maioria das vezes, os certificados de assinatura de teste são autoassinados — o que é totalmente aceitável nesse contexto — e encadeados para uma raiz diferente dos certificados de assinatura de desenvolvimento. Essa é uma proteção necessária para garantir que as assinaturas de testes internos nunca sejam confundidas com as assinaturas de lançamento. Idealmente, você deve desenvolver uma infraestrutura de assinatura totalmente independente para o processo de assinatura de teste.
4. Autentique o código que você assina
Isso tem a ver com o ciclo de desenvolvimento real. Antes que sua chave de assinatura de lançamento chegue perto de seu software, ela precisa ser totalmente autenticada por todas as partes interessadas – o que significa que todos precisam confirmar e assinar o fato de que está pronto. É melhor desenvolver um processo de aprovação completo para garantir que todas as assinaturas sejam bem documentadas. Isso ajuda tanto na resposta a incidentes quanto na conformidade.
5. Verificação de vírus antes de assinar
Isso meio que se acumula no último título, mas também vale a pena declarar explicitamente. Certifique-se de que seu software esteja livre de vírus antes de ser assinado. Se houver algo de errado com ele e ele acabar infectando os computadores ou dispositivos de seus usuários, você não apenas terá que lidar com as consequências disso – também fará com que seu certificado de assinatura seja revogado e você ter um tempo REALMENTE difícil conseguir outro por causa dos requisitos de validação.
6. Use mais de uma chave
Sempre que você assina algo com sua chave privada , há um pequeno grau de risco. Geralmente, a matemática por trás da criptografia moderna é proibitivamente difícil para computadores – mas ainda há risco. E se algo acontecer com essa chave e ela precisar ser revogada, invalidará outras assinaturas e outros códigos bons. Essa prática recomendada de assinatura de código é realmente apenas uma versão moderna do ditado sobre não colocar todos os ovos na mesma cesta. Use chaves diferentes para projetos diferentes e tente espalhar o risco.
7. Dicas sobre revogação
Eventualmente, todos acabam tendo que revogar um certificado por um motivo ou outro. Antes de fazer isso, aqui vão alguns conselhos:
- Quando surgir um comprometimento ou algum outro problema, notifique imediatamente sua CA.
- A data de revogação afetará a validade de suas assinaturas com carimbo de data/hora. Isso significa que você pode querer selecionar uma data anterior ao dia em que o comprometimento foi descoberto.
Lembre-se de que você é NECESSÁRIO a revogar o certificado se estiver comprometido ou descobrir que ele já foi usado para assinar malware.
E isso serve para nossas práticas recomendadas de assinatura de código. Se você tiver outras perguntas, sinta-se à vontade para deixá-las na seção de comentários abaixo.
FONTE: COMODO