Created by Thiago Russo
over 7 years ago
|
||
Question | Answer |
O CLR oferece suporte a dois tipos diferentes de assemblies: assemblies strong-named (fortemente nomeados) e assembleias regulares. o que são? | Assembly regular é o q Visual Studio gera para vc por padrão. É estruturalmente idêntico a um assembly fortemente nomeado. Ambos contêm metadados, cabeçalho, manifesto e todos os tipos q estão em seu assembly. Assembly de nome forte é assinado com um par de chaves pública / privada que identifica o publicador do assembly e o conteúdo do assembly. Um nome forte consiste no simples texto do nome do assembly, seu nº de versão e informações de cultura. Ele também contém uma chave pública e uma assinatura digital. |
Nomear fortemente um assembly tem várias vantagens: | ■ Os nomes fortes garantem a unicidade. Sua chave privada única é usada para gerar o nome para o seu assembly. Nenhum outro conjunto pode ter o mesmo nome forte exato. ■ Os nomes fortes protegem suas versões. Devido ao fato de vc controlar a chave privada, vc é o único que pode distribuir atualizações para seus assemblies. Os usuários podem ter certeza de q a nova versão se origina do mesmo publisher (editor). ■ Nomes fortes fornecem fornecem uma forte verificação de integridade. O .NET verifica se um assembly de nome forte mudou desde o momento em q foi assinado. No geral, vc pode ver q um assembly de nome forte garante aos usuários q eles podem confiar a origem e o conteúdo de um assembly. |
assinatura de um assembly | Vc gera um assembly de nome forte usando sua própria chave privada para assinar o assembly. Outros usuários podem verificar o assembly utilizando a chave pública que é distribuído com o assembly. Assinatura de um assembly pode ser feita tanto via linha de comando ou usando o VS. O 1º passo q vc tem q tomar é a de gerar um par de chaves. Um par de chaves é geralmente um arquivo com uma extensão .snk que contém as informações de chave pública / privada. |
gerando chave via prompt de comando | Ao usar o prompt de comando desenvolvedor (developer command prompt), você pode executar o seguinte comando para gerar um novo arquivo de par de chaves: sn -k myKey.snk |
gerando chave de assinatura pelo VS | |
como é a referência entre assemblies desse tipo? | Um assembly de nome forte pode referenciar apenas outros assemblies q tb são fortemente nomeados. Isso é para evitar falhas de segurança em que um assembly dependente poderia ser mudado para influenciar o comportamento de um assembly de nome forte. Qdo vc add uma referência a um assembbly regular e tentar invocar o código do assembly, o compilador emite um erro: Assembly generation failed -- Referenced assembly ‘MyLib’ does not have a strong name |
visualizar a chave pública de um assembly | |
token de chave pública o q é? | O token de chave pública é uma pequena string q representa a chave pública. Ele é gerado pelo hash da chave pública e pega os últimos oito bytes. Se vc faz referência a outro assembly, vc armazena apenas o token de chave pública, q preserva o espaço no manifesto do assembly. O CLR n utiliza o token de chave pública na tomada de decisões de segurança pq pode acontecer de várias chaves públicas terem o mesmo tokem de chave pública. |
delayed or partial signing | Dentro de uma organização, é importante proteger a chave privada. Se todos os funcionários têm acesso à chave privada, alguém pode vazar ou roubar a chave. Mas sem acesso à chave privada, os desenvolvedores não podem assinar o assembly e usá-lo durante a construção da aplicação. Para evitar esse problema, vc pode usar um recurso chamado assinatura atrasada ou parcial (delayed or partial signing). Ao usar assinatura atrasada (deleyed), vc só pode usar a chave pública para assinar um assembly e você atrasa usando a chave privada até que o projeto esteja pronto para implantação. ao configurar a assinatura do assembly, vc pode ver que há uma opção para ativar a assinatura delayed no Visual Studio. |
Origem do assembly de nome forte Autenticidade! | Uma coisa q é importante entender é q um assembly fortemente nomeado ñ prova q o assembly vem do editor original. Isso só mostra q a pessoa q criou o assembly tem acesso à chave privada. Se vc quiser ter certeza de q os usuários podem verificar vc como o editor, tem que usar algo chamado Authenticode, q é uma tecnologia q utiliza certificados digitais para identificar o editor de um aplicativo. Vc precisa comprar um certificado on-line e, em seguida, usar esse certificado para assinar seu aplicativo. |
Want to create your own Flashcards for free with GoConqr? Learn more.