Réponses:
Le fichier .snk est utilisé pour appliquer un nom fort à un assembly .NET . un nom si fort se compose de
un simple nom de texte, un numéro de version et des informations sur la culture (le cas échéant) - plus une clé publique et une signature numérique.
Le SNK contient une paire de clés unique - une clé privée et publique qui peut être utilisée pour garantir que vous disposez d'un nom fort unique pour l'assembly. Lorsque l'assembly porte un nom fort, un "hachage" est construit à partir du contenu de l'assembly et le hachage est chiffré 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 a besoin de vérifier l'intégrité de l'assembly fortement nommé, ils construisent un hachage du contenu de l'assembly et utilisent la clé publique de l'assembly pour décrypter le hachage fourni avec l'assembly - si les deux hachages correspondent, la vérification de l'assemblage réussit.
Il est important de pouvoir vérifier les assemblys de cette manière pour s'assurer que personne n'échange un assemblage contre un assemblage malveillant qui subvertira l'ensemble de l'application. C'est pourquoi les assemblys non nommés forts ne sont pas approuvés de la même manière que les assemblys fortement nommés, ils ne peuvent donc pas être placés dans le GAC. En outre, il existe une chaîne de confiance - vous ne pouvez pas générer d'assembly fortement nommé qui référence des assemblys non fortement nommés.
L'article " Les secrets de la dénomination forte (archivé à la Wayback Machine) ". Fait un excellent travail pour expliquer ces concepts plus en détail. Avec des photos.
Dans un monde the.Net, le fichier SNK est utilisé pour signer vos binaires compilés. Cela permet à deux choses de se produire:
Je ne suis pas familier avec le fonctionnement du serveur BizTalk , donc je ne pense pas pouvoir apporter beaucoup de lumière sur l'objectif spécifique qu'ils servent dans cet environnement.
J'espère que cela a été quelque peu utile.
Le fichier .snk est utilisé pour signer les assemblys afin de pouvoir les ajouter au Global Assembly Cache (GAC).
Le fichier .snk contient les jetons publics et privés de votre clé. Lorsque vous souhaitez signer des données (ou binaires) avec cette clé, une somme de contrôle est calculée sur les données, qui sont ensuite chiffré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 à la somme de contrôle calculée pour vérifier que les données signées n'ont pas été falsifiées.
Vous pouvez en savoir plus sur la cryptographie à clé publique à http://en.wikipedia.org/wiki/Public-key_cryptography .
Un fichier .snk est une version persistante de votre "Clé" produite par l'utilitaire sn dans l'ensemble d'utilitaires du framework. Vous utilisez ensuite ce fichier pour «signer numériquement» vos assemblys. Il s'agit d'une clé en deux parties. Combinaison de clés privée-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 est destinée à être conservée de cette façon.
Lorsque vous signez votre assembly, il utilise la clé privée et une valeur de hachage pour votre assembly pour créer une signature numérique qui est incorporée dans votre assembly. Par la suite, toute personne qui charge votre assemblage passe par une étape de vérification. La clé publique est utilisée pour valider si l'assembly vient vraiment de vous ... vous avez juste besoin de la clé publique pour cela (qui est également incorporée sous une forme tokenisée dans le manifeste de l'assembly). Si l'assembly a été falsifié, la valeur de hachage serait différente et le chargement de l'assembly serait abandonné. C'est un mécanisme de sécurité.
Un fichier .snk est utilisé pour s'assurer que quelqu'un d'autre ne peut pas glisser un assemblage à 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 assembly, une valeur de hashcode est calculée à partir du fichier d'assembly et chiffrée à l'aide de la clé privée. Ce «condensé» chiffré est ensuite ajouté à l'assembly avec la clé publique du fichier .snk.
Ensuite, lorsque quelqu'un reçoit votre assembly, il peut également calculer cette valeur de hashcode. Ils utilisent la clé publique pour décrypter celle que vous avez calculée et comparer les valeurs calculées. Si l'assemblage a été modifié du tout, 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 crée des assemblys personnalisés utilisés par votre solution BizTalk devra utiliser un fichier .snk pour signer l'assembly afin que le serveur BizTalk puisse le charger dans le GAC et l'utiliser.