Distribuição do certificado de assinatura de código - melhores práticas? [fechadas]

-1

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:

  1. Para assinatura de código de binários do Windows, é necessário um certificado HSM ou existem outras alternativas melhores (nesta situação).
  2. Quais opções existem para distribuir um certificado entre os desenvolvedores? Usar o AD seria bom, já que já está em vigor globalmente.
  3. Em uma configuração distribuída, seria possível manter o certificado de assinatura em segredo?
  4. 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)
  5. Você tem uma solução melhor para nós considerarmos?

Desde já, obrigado.

fsteff
fonte

Respostas:

1

Para assinatura de código de binários do Windows, é necessário um certificado HSM ou existem outras alternativas melhores (nesta situação).

Um Módulo de Segurança de Hardware (HSM) é apenas uma ferramenta de hardware para fazer criptografia operações como gerenciamento de chaves, troca de chaves, criptografia, verificação e guarda. Não existe um certificado HSM, mas existem certificados gerado por um HSM.

Eu mesmo não usei um HSM, mas seria cauteloso com as chaves geradas por tal hardware. Eles podem ser bons para uso interno, mas para uso externo você deve usar certificados criados por uma Autoridade de Certificação (CA) bem conhecida.

Vamos criptografar é uma autoridade de certificação gratuita que é amplamente usava. Na minha organização, preferimos pagar por uma CA bem conhecida para distribuir nosso software.

Quais opções existem para distribuir um certificado entre os desenvolvedores? Usar o AD seria bom, já que já está em vigor globalmente.

Você pode usar o AD, mas isso pode ser um exagero para apenas alguns programadores. Eu só usaria para o certificado de desenvolvimento, mantendo o publicar certificado muito seguro, talvez em si mesmo dentro de um contêiner criptografado, e sob o controle total e não compartilhado de apenas uma pessoa confiável (e possivelmente uma pessoa de backup).

Para mais informações, veja:

Em uma configuração distribuída, seria possível manter o certificado de assinatura em segredo?

Não, no momento em que um segredo é compartilhado, não é mais um segredo. Mantenha o certificado de distribuição muito seguro como acima.

Se alguma vez vazar, o seu certificado será listado por todos os navegadores e produtos antivírus, no sentido de que todo o seu software distribuído ficará inutilizável. Mantê-lo seguro como se sua vida dependesse disso (pelo menos sua vida comercial).

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)

Certamente, e eu veria isso como sua única possibilidade. O certificado de desenvolvimento pode vazar, mas você não se importaria, já que as pessoas que vazam são também as que podem vazar os módulos não assinados.

Você tem uma solução melhor para nós considerarmos?

Parece que você pensou profundamente sobre o assunto. Na sua situação eu também teria ido para tal solução de duplo certificado.

harrymc
fonte