O arquivo .snk é usado para aplicar um nome forte a um assembly .NET . um nome tão forte consiste em
um nome de texto simples, número da versão e informações de cultura (se fornecidas) - além de uma chave pública e uma assinatura digital.
O SNK contém um par de chaves exclusivo - uma chave pública e privada que pode ser usada para garantir que você tenha um nome forte e exclusivo para o assembly. Quando o assembly é fortemente nomeado, um "hash" é construído a partir do conteúdo do assembly e o hash é criptografado com a chave privada. Em seguida, esse hash assinado é colocado no assembly junto com a chave pública do .snk.
Posteriormente, quando alguém precisa verificar a integridade do assembly com nome forte, ele cria um hash do conteúdo do assembly e usa a chave pública do assembly para descriptografar o hash que acompanha o assembly - se os dois hashes corresponderem, a verificação da montagem é aprovada.
É importante poder verificar os assemblies dessa maneira para garantir que ninguém troque um assembly por um malicioso que subverta todo o aplicativo. É por isso que os assemblies com nomes não fortes não são confiáveis da mesma maneira que os assemblies com nomes fortes, para que não possam ser colocados no GAC. Além disso, há uma cadeia de confiança - você não pode gerar um assembly com nome forte que faça referência a assemblies com nome não-forte.
O artigo " The Secrets of Strong Naming" (arquivado na Wayback Machine) ". Faz um excelente trabalho de explicar esses conceitos em mais detalhes. Com fotos.
Não estou familiarizado com o funcionamento do servidor BizTalk , por isso acho que não posso esclarecer que finalidade específica eles servem nesse ambiente.
Espero que isso tenha sido útil.
fonte
O arquivo .snk é usado para assinar os assemblies para poder adicioná-los ao Global Assembly Cache (GAC).
O arquivo .snk contém os tokens públicos e privados da sua chave. Quando você deseja assinar alguns dados (ou binários) com essa chave, uma soma de verificação é calculada nos dados, que são então criptografados com o token privado. A soma de verificação criptografada é então adicionada aos dados. Qualquer pessoa pode usar o token público da sua chave para descriptografar a soma de verificação e compará-la com a soma de verificação calculada para verificar se os dados assinados não foram violados.
Você pode ler mais sobre a criptografia de chave pública em http://en.wikipedia.org/wiki/Public-key_cryptography .
fonte
Um arquivo .snk é uma versão persistente da sua "Chave" produzida pelo utilitário sn no conjunto de utilitários da estrutura. Você então usa esse arquivo para 'assinar digitalmente' seus assemblies. É uma chave de 2 partes. Combinação de chave pública-privada. A parte pública da chave é publicada, isto é, conhecida por todos. A parte privada é conhecida apenas por você, o desenvolvedor do componente / aplicativo e deve ser mantida dessa maneira.
Quando você assina sua montagem, ela usa a chave privada e um valor de hash para criar uma assinatura digital incorporada à sua montagem. Depois disso, qualquer pessoa que carrega sua montagem passa por uma etapa de verificação. A chave pública é usada para validar se o assembly realmente vem de você .. você só precisa da chave pública para isso (que também é incorporada de forma tokenizada no manifesto do assembly). Se a montagem foi violada, o valor do hash seria diferente e a carga da montagem seria abortada. Este é um mecanismo de segurança.
fonte
Um arquivo .snk é usado para garantir que outra pessoa não possa inserir uma montagem própria no seu lugar. Ele fornece um par de chaves de criptografia / descriptografia.
Quando um arquivo .snk é usado para assinar um assembly, um valor de código de hash é calculado a partir do arquivo do assembly e criptografado usando a chave privada. Esse "resumo" criptografado é anexado ao assembly junto com a chave pública do arquivo .snk.
Então, quando alguém recebe sua montagem, ele também pode calcular esse valor de código de hash. Eles usam a chave pública para descriptografar a que você calculou e comparar os valores calculados. Se a montagem tiver sido alterada, esses valores serão diferentes e o usuário da montagem saberá que a montagem que você possui não é a que você forneceu.
No contexto do BizTalk Server, quem cria os assemblies personalizados usados pela sua solução BizTalk precisará usar um arquivo .snk para assinar o assembly, para que o servidor BizTalk possa carregá-lo no GAC e usá-lo.
fonte