Distribuição do certificado de assinatura de código - melhores práticas?
Nota: Eu sou um novato absoluto quando se trata de assinatura de código e certificados de software. Eu tentei pesquisar e ler sobre como resolver o nosso problema em particular, mas não encontrei nada parecido online.
Até agora, a assinatura de código não foi um problema para nós, já que estamos trabalhando em sistemas embarcados, baseados no Windows, mas onde fornecemos soluções prontas para uso. Então, nosso antivírus (que é obrigatório!) Não agradou vários de nossos binários (em todos os projetos) e parece não haver um padrão real naquilo que ele não gosta. Após semanas conversando com o fornecedor do antivírus, descobrimos que a solução para nós é que nossos desenvolvedores têm uma pasta excluída da varredura (usada para construir o software) e que implementamos a assinatura de código, enquanto temos nosso certificado. listado em branco no aplicativo antivírus (usado para distribuição interna limitada e teste do nosso software).
Então, por enquanto, estaremos empregando a assinatura de código, não para segurança, mas simplesmente para sermos autorizados a fazer nosso trabalho. O fornecedor do antivírus nos informou que os certificados auto-assinados não podem ser incluídos na lista branca - mesmo que isso fizesse sentido.
Nossos desenvolvedores estão localizados em cinco locais em todo o mundo e estamos procurando a solução mais simples possível para garantir que todos possam executar a assinatura de código (pois, de outra forma, não seria possível testar o código que eles criaram).
Esperamos que algum tipo de distribuição de certificado seja possível, talvez até usando o Active Directory?
Em um futuro não muito distante, precisaremos assinar o código para realmente validar nossa segurança de software, portanto, se estivermos usando o certificado distribuído, será ainda "seguro" usar para validação? Eu acho que não - o que me faz pensar se poderíamos ter dois certificados e assinar com os dois? Um certificado seria então distribuído, e nos permitiria construir e testar, então outro seria usado para realmente publicar.
Provavelmente iremos com um Certificado Microsoft Authenticode - a menos que haja boas razões para não fazê-lo.
No entanto, até onde eu entendo, a Microsoft desde 1º de fevereiro de 2017 exigiu que um Módulo de Segurança de Hardware (HSM) seja usado no processo de assinatura de código - esperamos que isso não signifique que cada desenvolvedor precise de seu próprio HSM em seu computador!
Então, para resumir minhas perguntas:
- Para assinatura de código de binários do Windows, é necessário um certificado HSM ou existem outras alternativas melhores (nesta situação).
- Quais opções existem para distribuir um certificado entre os desenvolvedores? Usar o AD seria bom, já que já está em vigor globalmente.
- Em uma configuração distribuída, seria possível manter o certificado de assinatura em segredo?
- A dupla assinatura seria uma opção para aumentar a segurança? (Uma assinatura para vencer o antivírus durante o teste, outro para a segurança real do software lançado)
- Você tem uma solução melhor para nós considerarmos?
Desde já, obrigado.