Verifique a assinatura Authenticode como sendo de nossa empresa para atualizador automático

Estou implementando um recurso de atualização automática e preciso de alguns conselhos sobre como fazer isso com segurança usando as práticas recomendadas. Gostaria de usar a assinatura Authenticode do arquivo baixado para verificar se é seguro executá-lo (ou seja, se origina da nossa empresa e não foi adulterado). Minha pergunta é muito semelhante à pergunta # 2008519.

A questão final: qual é a melhor e mais segura maneira de verificar as assinaturas Authenticode para um recurso de atualização automática? Quais campos do certificado devem ser verificados? Os requisitos são: (1) a assinatura de verificação é válida, (2) é a minha assinatura, (3) os clientes antigos ainda podem atualizar quando meu certificado expira e eu recebo um novo.

Aqui estão algumas informações / idéias básicas da minha pesquisa: Acredito que isso possa ser dividido em duas etapas:

Verifique se a assinatura é válida. Eu acredito que isso deve ser fácil usando o WinVerifyTrust, conforme descrito emhttp://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx - Eu não espero problemas aqui.

Verifique se a assinatura corresponde à nossa empresa, e não a outra empresa. Esta parece ser uma pergunta mais difícil de responder:

Uma possibilidade é verificar algumas das strings na assinatura. Pode ser obtido por código no artigo nº 323809 do MS KB, mas este artigo não faz recomendações sobre quais campos devem ser verificados para esse tipo de aplicativo (ou qualquer outro, nesse caso).Pergunta # 1072540 também ilustra como obter algumas informações de certificado, mas, novamente, não recomenda quais campos realmente verificar. Minha preocupação é que as seqüências de caracteres não sejam a melhor verificação: e se outra pessoa puder obter um certificado com o mesmo nome, por exemplo? Ou se existe uma razão válida para mudarmos as strings no futuro?

A pessoa empergunta # 2008519 tem um requisito muito semelhante. Sua necessidade de uma função "TrustedByUs" é idêntica à minha. No entanto, ele faz a verificação comparando chaves públicas. Embora isso funcione a curto prazo, parece que não funcionará para um recurso de atualização automática. Isso ocorre porque os certificados de assinatura de código são válidos apenas por 2 a 3 anos no máximo. Portanto, no futuro, quando comprarmos um novo certificado em 2 anos, os clientes antigos não poderão mais atualizar devido à alteração na chave pública.

questionAnswers(1)

yourAnswerToTheQuestion