Criando e usando Assemblies de Nome Forte

Um nome forte consiste na identidade assembly— seu nome de texto simples, número de versão, e informações de cultura (se fornecido) — mais uma chave pública e uma assinatura digital. Ele é gerado de um arquivo de assembly usando a chave particular correspondente. (O arquivo do assembly contém o manifesto do assembly, que contém os nomes e hashes de todos os arquivos que compõem o assembly.)

Um assembly de nome forte pode apenas usar tipos de outros assemblies de nome forte. Caso contrário, a segurança do assembly de nome forte poderia ser comprometida.

Esta visão geral contém as seções a seguir:

  • Cenário de nome forte

  • Ignorando a verificação de assinatura de Assemblies confiáveis

  • Tópicos relacionados

Cenário de nome forte

O cenário a seguir descreve o processo de assinar um assembly com um nome forte e posteriormente referencia-lo por esse nome.

  1. O assembly A é criado com um nome forte usando um dos métodos a seguir:

    • Usando um ambiente de desenvolvimento que ofereça suporte a criação de forte nomes, como Visual Studio 2005.

    • Criando um par de chaves de criptografia usando a ferramenta de Nome Forte (Sn.exe) e atribuindo esse par de chaves ao assembly usando um compilador de linha de comando ou o Assembly Linker (AL.exe). O Windows Software Development Kit (SDK) fornece sn. exe e Al.exe.

  2. O ambiente ou ferramenta de desenvolvimento assina o hash do arquivo que contém o manifesto do assembly com a chave particular do desenvolvedor. Esta assinatura digital é armazenada no arquivo PE que contém o manifesto do assembly A.

  3. O assembly b é um consumidor do Assembly a. A seção de referência do manifesto do Assembly B inclui um símbolo que representa a chave pública do Assembly do. Um token é uma parte da chave pública completa e é usado em vez da chave em si para economizar espaço.

  4. O Common Language Runtime verifica a assinatura de nome forte quando o assembly é colocado na cache global de assemblies. Quando a ligação por nome de alta segurança em tempo de execução, o common language runtime compara a chave armazenada no manifesto do Assembly B com a chave usada para gerar o nome forte do Assembly a. Se o.Verificações de segurança do NET Framework e o bind for bem-sucedida, o Assembly B tem uma garantia de que os bits de Assembly do não foi adulterados e que esses bits realmente provém de desenvolvedores do Assembly a.

Observação

Este cenário não aborda questões de confiança.Assemblies podem transportar completo de assinaturas de Authenticode da Microsoft com um nome forte.Assinaturas Authenticode incluem um certificado que estabelece confiança.É importante observar que os nomes fortes não exigem que o código esteja assinado dessa maneira.Na verdade, as chaves usadas para gerar a assinatura de nome forte não têm de ser necessariamente as mesmas chaves usadas para gerar uma assinatura Authenticode.

Voltar ao topo

Ignorando a verificação de assinatura de Assemblies confiáveis

Começando com o .NET Framework versão 3.5 Service Pack 1, assinaturas de nome de alta segurança não são validadas quando um assembly é carregado em um domínio de aplicativo de confiança total, como, por exemplo, o domínio de aplicativo padrão para o MyComputer zona. Isso é conhecido para como o nome forte ignorar o recurso. Em um ambiente de confiança total de pedidos de StrongNameIdentityPermission sempre será bem sucedida para assemblies assinados, confiança total, independentemente de sua assinatura. O recurso de nome de alta segurança ignorar evita a sobrecarga desnecessária de verificação de assinatura de nome forte de assemblies de confiança total nessa situação, permitindo que os assemblies carregar mais rapidamente.

O recurso de ignorar se aplica a qualquer conjunto que está assinado com um nome forte e que tem as seguintes características:

  • Totalmente confiável, sem StrongName evidência (por exemplo, tem MyComputer evidências de zona).

  • Carregado em totalmente confiáveis AppDomain.

  • Carregado a partir de um local sob o ApplicationBase propriedade do que AppDomain.

  • Não assinado para o atraso.

Esse recurso pode ser desativado para aplicativos individuais ou para um computador. Consulte Como: Desativar o recurso de Bypass de nome forte.

Voltar ao topo

Tópicos relacionados

Título

Descrição

Como: Criar um par de chaves pública/particular

Descreve como criar um par de chaves de criptografia para assinar um assembly.

Como: Assinar um Assembly com um nome forte

Descreve como criar um assembly de nome forte.

Como: Fazer referência a um Assembly de nome forte

Descreve como fazer referência a tipos ou recursos em um assembly de nome forte no tempo de compilação ou tempo de execução.

Como: Desativar o recurso de Bypass de nome forte

Descreve como desativar o recurso que ignora a validação de assinaturas de nome forte. Esse recurso pode ser desativado para todos ou para aplicativos específicos.

Criando assemblies

Fornece uma visão geral de conjuntos de arquivo único e de múltiplos arquivos.

Como: Atrasar a assinatura de um Assembly (Visual Studio)

Explica como assinar um assembly com um nome forte após ele ter sido criado.

Sn. exe (ferramenta de nome forte)

Descreve a ferramenta incluída na.NET Framework que ajuda a criar assemblies com nomes fortes. Essa ferramenta fornece opções para gerenciamento de chaves, geração de assinatura e verificação de assinatura.

AL.exe (do Assembly Linker)

Descreve a ferramenta incluída na.NET Framework que gera um arquivo de um conjunto de módulos ou o recurso arquivos manifest.

Voltar ao topo