165 votes

A quoi sert un .snk ?

À quoi sert un fichier .snk ? Je sais que c'est l'abréviation de Clé fortement nommée mais toutes les explications sur ce que c'est et comment ça marche me passent au-dessus de la tête.

Existe-t-il une explication simple sur l'utilisation et le fonctionnement d'une clé fortement nommée ?

Je l'utilise dans BizTalk Server.

220voto

Blair Conrad Points 56195

Le fichier .snk est utilisé pour appliquer une stratégie de gestion de l'environnement. nom fort à un assemblage .NET . un nom aussi fort consiste en

un simple nom textuel, un numéro de version, et des informations sur la culture (si fournies), ainsi qu'une clé publique et une signature numérique.

Le SNK contient une paire de clés unique - une clé privée et une clé publique qui peuvent être utilisées pour s'assurer que vous avez un nom fort unique pour l'assemblage. Lorsque l'assemblage est fortement nommé, un "hash" est construit à partir du contenu de l'assemblage, et le hash est crypté avec la clé privée. Ensuite, ce hachage signé est placé dans l'assembly avec la clé publique du .snk.

Plus tard, lorsque quelqu'un doit vérifier l'intégrité de l'assemblage fortement nommé, ils construire un hachage du contenu de l'assemblage, et utiliser la clé publique de l'assemblage pour déchiffrer le hachage fourni avec l'assemblage - si les deux hachages correspondent, la vérification de l'assemblage passe.

Il est important de pouvoir vérifier les assemblages de cette manière afin de s'assurer que personne ne remplace un assemblage par un assemblage malveillant qui renverserait l'ensemble de l'application. C'est pourquoi les assemblages sans nom de tronc ne sont pas fiables de la même manière que les assemblages avec un nom fort, et ne peuvent donc pas être placés dans le GAC. De plus, il y a une chaîne de confiance - vous ne pouvez pas générer un assemblage fortement nommé qui fait référence à des assemblages non fortement nommés.

L'article " Les secrets d'un nom fort ". Fait un excellent travail pour expliquer ces concepts plus en détail. Avec des photos.

24voto

ckramer Points 7315

Dans le monde .Net, le fichier SNK est utilisé pour signer vos binaires compilés. Cela permet à deux choses de se produire :

  1. Vous pouvez enregistrer l'assemblage dans le GAC (Global Assembly Cache). Ainsi, vous pouvez le référencer à partir de plusieurs endroits sur la même machine sans avoir à en maintenir plusieurs copies).
  2. Vous pouvez utiliser vos binaires à l'intérieur d'autres binaires qui sont également signés (il s'agit d'un comportement viral étrange par rapport aux assemblages signés).
  3. Votre assemblage ne peut pas (facilement) être modifié par des tiers qui n'ont pas accès au fichier SNK, ce qui offre au moins une petite sécurité.

Je ne suis pas familier avec le fonctionnement du serveur BizTalk, donc je ne pense pas pouvoir apporter beaucoup de lumière sur le but spécifique qu'ils servent dans cet environnement.

J'espère que cela vous a été utile.

7voto

Franci Penov Points 45358

Le fichier .snk est utilisé pour signer les assemblages afin de pouvoir les ajouter au Global Assembly Cache (GAC).

Le fichier .snk contient les jetons public et privé de votre clé. Lorsque vous souhaitez signer des données (ou un fichier binaire) avec cette clé, une somme de contrôle est calculée sur les données, qui sont ensuite cryptées avec le jeton privé. La somme de contrôle chiffrée est ensuite ajoutée aux données. N'importe qui peut utiliser le jeton public de votre clé pour déchiffrer la somme de contrôle et la comparer à celle qu'il a calculée pour vérifier que les données signées n'ont pas été altérées.

Vous pouvez en savoir plus sur la cryptographie à clé publique à l'adresse suivante http://en.wikipedia.org/wiki/Public-key_cryptography .

4voto

Gishu Points 59012

Un fichier .snk est une version persistante de votre "clé" produite par l'utilitaire sn du jeu d'utilitaires du framework. Vous utilisez ensuite ce fichier pour "signer numériquement" vos assemblages. Il s'agit d'une clé en deux parties, une combinaison de clés privée et publique. La partie publique de la clé est publiée, c'est-à-dire connue de tous. La partie privée n'est connue que de vous, le développeur du composant/de l'application, et doit rester ainsi.

Lorsque vous signez votre assemblage, il utilise la clé privée et une valeur de hachage pour votre assemblage afin de créer une signature numérique qui est intégrée à votre assemblage. Ensuite, toute personne qui charge votre assemblage passe par une étape de vérification. La clé publique est utilisée pour valider si l'assemblage provient vraiment de vous. Vous avez juste besoin de la clé publique pour cela (qui est également intégrée sous forme de jeton dans le manifeste de l'assemblage). Si l'assemblage a été falsifié, la valeur de hachage sera différente et le chargement de l'assemblage sera interrompu. Il s'agit d'un mécanisme de sécurité.

3voto

Michael Lang Points 785

Un fichier .snk est utilisé pour s'assurer que quelqu'un d'autre ne puisse pas glisser un assemblage de son cru à la place du vôtre. Il fournit une paire de clés de cryptage/décryptage.

Lorsqu'un fichier .snk est utilisé pour signer un assemblage, une valeur de code de hachage est calculée à partir du fichier d'assemblage et cryptée en utilisant la clé privée. Ce "condensé" crypté est ensuite ajouté à l'assemblage avec la clé publique du fichier .snk.

Ensuite, lorsque quelqu'un reçoit votre assemblage, il peut également calculer cette valeur de hashcode. Il utilise la clé publique pour décrypter celle que vous avez calculée et compare les valeurs calculées. Si l'assemblage a été modifié, ces valeurs seront différentes et l'utilisateur de l'assemblage saura que l'assemblage que vous avez n'est pas celui que vous avez fourni.

Dans le contexte de BizTalk Server, quiconque construit des assemblages personnalisés qui sont utilisés par votre solution BizTalk devra utiliser un fichier .snk pour signer l'assemblage afin que BizTalk Server puisse le charger dans le GAC et l'utiliser.

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