Pergunta

Ok, eu devo ser causa mudo Eu já li isto: http://www.csharp411.com/ net-assembly-faq-parte-3-forte-names-e-assinatura /

E eu ainda não entendo ...

Digamos que eu abrir as propriedades do meu projeto e vá para a guia "Assinatura", então eu verificar "Assinar o assembly" e gerar uma nova montagem com uma senha. Um arquivo de chave nome forte com a extensão .pfx, com as chaves tanto o público e privado, foi criado e VS vai assinar digital de minha montagem na compilação, certo?

E a chave privada? não deve ser privada e eu, o desenvolvedor, ser o único a tê-lo? Caso não o ser assembly assinado apenas com a chave pública?

Alguém pode explicar isso para mim? Basicamente, eu quero assinar o meu projeto é montagem e permitam-me que os usuários verifiquem se a montagem foi realmente desenvolvido por mim, onde eu sou o único a manter a chave privada (que eu acho que eu deveria).

Foi útil?

Solução

Você está basicamente certo.

Você cria um par de chaves e usá-lo para assinar. Mas não enviamos o arquivo pfx (ou SNK), que contém tanto público como chaves privadas e deve ser mantido seguro.

A chave pública é adicionada à montagem como parte do processo de assinatura.

Esta assinatura é verificada quando um conjunto é carregado em um aplicativo. Os usuários finais também pode verificar o símbolo de chave pública-no GAC, mas isso não é realmente um processo conveniente. E você tem que dizer-lhes sua chave pública token de alguma forma.

E a coisa toda é tão confiável quanto a sua capacidade de manter o arquivo de chave privada.

Além disso, observe que, idealmente, você deve ter apenas 1 key por empresa. Se você se preocupar em compartilhá-lo com (muitos) colegas de trabalho, investigar atraso de assinatura.

Outras dicas

A assinatura digital envolve a computação um hash de seu binário e, em seguida, criptografar o hash gerado utilizando a chave privada do par de chaves que você gerou. Além disso, VS irá adicionar a chave pública, assim como para a montagem. Agora, quando este é executado no lado do cliente, tempo de execução usará a chave pública no conjunto para decifrar a assinatura (haxixe) e, em seguida, combinar isso com o hash calculado do binário no cliente. Se forem iguais, isso significa que o binário não foi adulterado.

assinatura

A montagem é baseada na de chave pública cryptogrpahy (PKI). O conceito geral em poucas palavras é que quando você assinar criptograficamente algo com PKI, a chave privada é usada para fazer a assinatura, mas a chave pública é usada para verificar a assinatura. A chave privada não pode ser usado para verificar a assinatura, apenas a criá-lo. A chave pública não pode ser usado para criar uma assinatura, apenas a verificar-lo.

Tendo em conta que, é muito importante que você mantenha seu cofre chave privada e privada. Se você deseja manter o mais alto nível de segurança e fornecer o mais alto nível de autenticidade para seus clientes, provavelmente seria melhor usar atraso de assinatura, e têm um único indivíduo ou departamento responsável pela gestão seus / pares de chaves público-privadas completo . Os desenvolvedores não devem ter acesso à chave privada, e pode usar a opção de atraso de sinal para ainda desenvolver fortes assemblies sem comprometer a segurança e autenticidade.

Como inscrever = Criptografar o hash SHA1 da Assembleia usando a chave privada
Verificação = Comparando a assinatura PublicKey-descriptografados com a Computed Hash da Assembleia

Assim, qualquer um com PublicKey pode verificar a montagem, mas apenas o autor com PrivateKey pode assinar um assembly.

= PublicKey símbolo últimos 64 bits de hash SHA1 PublicKey em ordem de bytes pouco-endian.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top