Criando e usando assemblies de nomes fortes

 

Um nome forte consiste na identidade do assembly — seu nome de texto simples, número de versão e informações de cultura (se fornecidas) — mais uma chave pública e uma assinatura digital. Ele é gerado de um arquivo de assembly usando a chave privada 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 estaria comprometida.

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

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

  1. Um assembly é criado com um nome forte usando um dos seguintes métodos:

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

    • Criando um par de chaves criptográficas usando o ferramenta 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 de desenvolvimento ou a ferramenta assina o hash do arquivo que contém o manifesto do assembly com a chave particular do desenvolvedor. Esta assinatura digital é armazenada no portável executável (PE) que contém o manifesto do Assembly.

  3. O assembly B é um consumidor do Assembly A. A seção de referência do manifesto do Assembly B inclui um token que representa a chave pública do Assembly. 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 no cache de assembly global. Ao vincular por nome forte no 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 as verificações de segurança do .NET Framework e a associação for bem-sucedida, o Assembly B tem uma garantia de que os bits do Assembly não foram violados e que esses bits na verdade vêm dos desenvolvedores do Assembly A.

System_CAPS_noteObservação

Este cenário não aborda questões de confiança. Assemblies podem carregar assinaturas Microsoft Authenticode completas além de um nome forte. As assinaturas Authenticode incluem um certificado que estabelece a relação de confiança. É importante observar que os nomes fortes não exigem código esteja assinado dessa maneira. Na verdade, não é necessário que as chaves usadas para gerar a assinatura de nome forte sejam as mesmas chaves usadas para gerar uma assinatura Authenticode.

Voltar ao início

Começando com o .NET Framework 3.5 Service Pack 1, assinaturas de nome forte não são validadas quando um assembly é carregado em um domínio de aplicativo de confiança total, como o domínio de aplicativo padrão para a 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 assinado, assemblies de confiança total, independentemente de sua assinatura. O recurso de desvio de nome forte evita sobrecarga desnecessária de verificação de assinatura de nome forte dos assemblies de confiança total nessa situação, permitindo que os assemblies para carregar mais rapidamente.

O recurso se aplica a qualquer assembly 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ência de zona).

  • Carregado em um totalmente confiável AppDomain.

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

  • Não assinado com atraso.

Esse recurso pode ser desativado para aplicativos individuais ou para um computador. Consulte Como desabilitar a funcionalidade de desvio de nome forte.

Voltar ao início

Título

Descrição

Como: criar um par de chaves públicas-privadas

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.

Nomeação forte aprimorada

Descreve aprimoramentos para nomes fortes no .NET Framework 4.5.

Como referenciar um assembly de nome forte

Descreve como referenciar tipos ou recursos em um assembly de nome forte no tempo de compilação ou tempo de execução.

Como desabilitar a funcionalidade de desvio de nome forte

Descreve como desabilitar 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 dos assemblies de arquivo único e vários arquivos.

NIB: Como: atrasar a assinatura de um Assembly (Visual Studio)

Explica como assinar um assembly com um nome forte, depois que o assembly foi criado.

Sn.exe (Ferramenta de Nome Forte)

Descreve a ferramenta incluída no .NET Framework que ajuda a criar assemblies com nomes fortes. Esta ferramenta oferece opções para o gerenciamento de chaves, geração de assinaturas e verificação de assinaturas.

Al.exe (Assembly Linker)

Descreve a ferramenta incluída no .NET Framework que gera um arquivo que tenha um conjunto de arquivos de manifesto de módulos ou de recurso.

Mostrar: