161 votes

C# : pourquoi signer un assembly ?

Dans certains code c# J’ai repris (dans Visual Studio 2005), j’ai remarqué que les assemblys sont tous signés avec les mêmes `` fichier.

  • Pourquoi serait l’auteur précédent ont signé les assemblées de cette façon ?
  • Signe les assemblys nécessaires et ce qui serait une erreur à ne pas signer ?
  • Quels inconvénients sont a-t-il il provoque des retards dans la signature d’assemblys ?

193voto

Darin Dimitrov Points 528142

Pourquoi le précédent auteur ont signé les assemblées de cette façon?

Aucune idée, peut-être qu'il voulait que tous ses assemblées d'être signé avec la même clé.

Est la signature d'assemblées nécessaire et ce serait une erreur à ne pas signer?

Non, il n'est pas nécessaire mais c'est un mécanisme permettant de s'assurer de l'authenticité d'une assemblée. Il vous permet de vous assurer que l'assemblée n'a pas été altéré et en effet, les origines de cet auteur. Il est également nécessaire si vous voulez les mettre dans le GAC.

Quels inconvénients il y en signant assemblées - t-il de causer des retards?

Signé assemblées ne peut charger que d'autres ont signé des assemblées. Ils sont aussi liés à une version spécifique ce qui signifie que vous devez utiliser la liaison de redirections ou recompiler l'application si vous souhaitez utiliser une version différente. Il y a un peu de surcharge de performances aussi bien en raison de la vérification de la signature, mais il est si petit que vous ne devriez pas être préoccupé.

35voto

ho1 Points 31752

Vous devez vous connecter assemblées si vous voulez les mettre dans le GAC.

Si vous vous connectez à un fichier exécutable, puis toute la classe des bibliothèques de liens vers elle doit également être signé. Cela peut être difficile si vous êtes en utilisant un tiers de la bibliothèque (surtout si vous avez besoin d'utiliser un ActiveX contrôle ou similaire).

Richard Grimes ont écrit un atelier sur la sécurité dans les .NET et qui comprend un chapitre à ce sujet: Atelier de Sécurité

La raison de tous les assemblages en cours de signature avec le même .fichier snk pourrait être si il a utilisé les tests unitaires avec la couverture de code. Pour être en mesure de faire la couverture de code (au moins avec les outils intégrés dans le test de la version de Visual Studio 2005), et si les assemblages sont signés, vous devez spécifier ce que .snk fichiers sont utilisés pour la signature, mais je pense que vous ne pouvez spécifier qu'un seul .fichier snk pour l'ensemble de la solution, donc si vous vous connectez les différentes bibliothèques de classes différentes .snk fichiers, vous pouvez seulement de vérifier la couverture de code sur l'un d'eux à un moment.

18voto

Pieter van Ginkel Points 17057

Une raison très importante pour signer un assembly est alors vous pouvez être sûr que c’est votre Assemblée. Étant donné que la clé privée est le vôtre, personne d’autre ne peut signer un assembly avec cette même clé. Cela signifie que lorsque la clé publique d’un assembly est celui que vous connaissez (vous pouvez récupérer cette utilisant le GetType(). Assembly.GetName(). La fonction GetPublicKey()), l’Assemblée est le vôtre et il n’a pas été falsifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X