Pergunta

O que é um ficheiro.snk para? Eu sei que isso significa Key fortemente nomeado , mas todas as explicações sobre o que é e como funciona passa por cima da minha cabeça.

Existe alguma explicação simples de como uma chave de nome forte é usado e como ele funciona?

Foi útil?

Solução

O ficheiro.snk é usado para aplicar um href="http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx" nome forte a um .NET assembly . um nome tão forte consiste em

um nome de texto simples, número da versão, e informações de cultura (se fornecido) -mais uma chave pública e uma assinatura digital.

A SNK contém um par chave única - uma chave privada e pública que pode ser usado para garantir que você tem um forte nome exclusivo para a montagem. Quando o conjunto está fortemente-nomeado, um "hash de" é construído a partir do conteúdo da reunião, e o hash é criptografado com a chave privada. Então esse hash assinado é colocada na montagem, juntamente com a chave pública do .snk.

Mais tarde, quando alguém precisa para verificar a integridade do forte-nomeado montagem, que construir um hash do conteúdo da montagem, e usar a chave pública do conjunto para descriptografar o hash que veio com a montagem -. se os dois hashes corresponderem, a verificação de montagem passa

É importante ser capaz de verificar os conjuntos deste modo para garantir que ninguém swaps fora uma montagem para um malicioso que irá subverter toda a aplicação. É por isso que não de nome forte montagens não são confiáveis, da mesma forma que os conjuntos fortemente nomeados são, então eles não podem ser colocados no GAC. Além disso, há uma cadeia de confiança -. Você não pode gerar um forte-nomeado conjunto que referências montagens não fortemente chamado

O artigo " Os segredos de Naming forte ". Faz um excelente trabalho de explicar esses conceitos com mais detalhes. Com fotos.

Outras dicas

Em um mundo the.Net o SNK arquivo é usado para assinar os seus binários compilados. Isso permite que algumas coisas a acontecer:

  1. Você pode registrar o assembly no GAC (Global Assembly Cache) . Basicamente, assim você pode fazer referência a ela a partir de muitos lugares na mesma máquina sem ter que manter várias cópias).
  2. Você pode usar seus binários de dentro outros binários que também são assinados (este é um tipo viral estranho de comportamento em relação aos conjuntos assinados).
  3. O seu conjunto não pode (facilmente) ser modificado por 3 partes que não têm acesso ao arquivo SNK, fornecendo pelo menos uma pequena quantidade de segurança.

Eu não estou familiarizado com a forma como Servidor BizTalk obras, então eu não acho que pode lançar muita luz sobre o propósito específico a que servem dentro desse ambiente.

Espero que isso foi um pouco útil.

O ficheiro.snk é usado para assinar as assembléias, a fim de ser capaz de adicioná-los à Global Assembly Cache (GAC).

O ficheiro.snk contém os símbolos públicos e privados para a sua chave. Quando você quiser assinar alguns dados (ou binária) com essa chave, a soma de verificação é calculada com os dados, que é então criptografada com o token privado. A soma de verificação cifrado é então adicionado aos dados. Qualquer um pode usar o token público de sua chave para decifrar o checksum e compará-lo com o checksum eles calcularam para verificar se os dados assinados não foi adulterado.

Você pode ler mais sobre a criptografia de chave pública em http://en.wikipedia.org/ wiki / Public-key_cryptography .

A .snk arquivo é uma versão persistente do seu "Key", produzido pelo utilitário sn no conjunto de utilidade quadro. Você, então, usar esse arquivo para 'assinar digitalmente' suas montagens. É uma combinação de teclas 2-parte fundamental .. público-privada. A parte pública da chave é publicado ou seja conhecido por todos. A parte privada é conhecida apenas para você, o componente desenvolvedor / app e destinado a ser mantidos dessa forma.

Quando você assinar o seu assembly, ele usa a chave privada e um valor de hash para a sua montagem para criar uma assinatura digital que é incorporado em sua montagem. Depois disso, qualquer um que carrega seu conjunto passa por uma etapa de verificação. A chave pública é usada para validar se a montagem realmente vem de você .. você só precisa a chave pública para isso (que também é incorporado em uma forma tokenized no manifesto do assembly). Se o conjunto tenha sido adulterado, o valor de hash seria diferente e a carga de montagem seria abortado. Este é um mecanismo de segurança.

Um .snk arquivo é usado para garantir que alguém não pode escorregar um conjunto de seus próprios no lugar de vocês. Ele fornece um par de chaves de encriptação / desencriptação.

Quando um ficheiro.snk é usada para assinar uma montagem, um valor hashcode é calculado a partir do arquivo de montagem e criptografada usando a chave privada. Isso criptografados "digerir" é, então, pregado à montagem juntamente com a chave pública do ficheiro.snk.

Então, quando alguém recebe seu conjunto, eles podem também calcular esse valor hashcode. Eles usam a chave pública para descriptografar o que você calculado e comparar os valores calculados. Se o conjunto tinha sido mudado em tudo, esses valores serão diferentes eo usuário do conjunto vai saber que o conjunto que você tem não é aquele que você forneceu.

No contexto do BizTalk Server, quem constrói nenhum assemblies personalizados que são usados ??por sua solução BizTalk vai precisar usar um arquivo .snk para assinar o assembly para que o servidor BizTalk pode carregá-lo no GAC e usá-lo.

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