回答:
.snkファイルは、.NETアセンブリに厳密な名前を付けるために使用されます。そのような強い名前はで構成されています
単純なテキスト名、バージョン番号、およびカルチャ情報(提供されている場合)—公開鍵とデジタル署名。
SNKには一意のキーペアが含まれています。これは、アセンブリに一意の厳密な名前を付けるために使用できる秘密キーと公開キーです。アセンブリに厳密な名前を付けると、アセンブリのコンテンツから "ハッシュ"が作成され、ハッシュは秘密キーで暗号化されます。次に、この署名付きハッシュは、.snkからの公開鍵と共にアセンブリに配置されます。
その後、誰かが厳密な名前のアセンブリの整合性を検証する必要がある場合、アセンブリのコンテンツのハッシュを作成し、アセンブリの公開鍵を使用して、アセンブリに付属するハッシュを復号化します-2つのハッシュが一致する場合、アセンブリ検証に合格しました。
この方法でアセンブリを検証して、アプリケーション全体を破壊する悪意のあるアセンブリとアセンブリを交換しないようにすることが重要です。これが、厳密な名前のないアセンブリが厳密な名前のアセンブリと同じように信頼されないため、GACに配置できない理由です。また、信頼の連鎖もあります。厳密な名前のないアセンブリを参照する厳密な名前のアセンブリを生成することはできません。
記事「強力な命名の秘密(ウェイバックマシンでアーカイブ)」。これらの概念をより詳細に説明する優れた仕事をします。写真付き。
.Netの世界では、SNKファイルはコンパイルされたバイナリに署名するために使用されます。これにより、いくつかのことが起こります。
私はBizTalkサーバーがどのように機能するかについてよく知らないので、その環境内でサーバーがどのような特定の目的で機能するかについては、あまり明かすことができないと思います。
これが多少役に立ったといいのですが。
.snkファイルは、アセンブリをグローバルアセンブリキャッシュ(GAC)に追加できるようにするために、アセンブリに署名するために使用されます。
.snkファイルには、鍵の公開トークンと秘密トークンが含まれています。そのキーを使用して一部のデータ(またはバイナリ)に署名する場合、データに対してチェックサムが計算され、プライベートトークンで暗号化されます。次に、暗号化されたチェックサムがデータに追加されます。誰でもあなたのキーの公開トークンを使用してチェックサムを復号化し、それを計算したチェックサムと比較して、署名されたデータが改ざんされていないことを確認できます。
公開鍵暗号の詳細については、http://en.wikipedia.org/wiki/Public-key_cryptographyを参照してください。
.snkファイルは、フレームワークユーティリティセットのsnユーティリティによって生成された「キー」の永続バージョンです。次に、このファイルを使用して、アセンブリに「デジタル署名」します。これは2つの部分からなる鍵です。秘密鍵と公開鍵の組み合わせです。キーの公開部分は公開されます。つまり、誰もが知っています。非公開部分は、コンポーネント/アプリ開発者であるあなただけが知っており、そのようにしておくことを目的としています。
アセンブリに署名すると、アセンブリの秘密キーとハッシュ値を使用して、アセンブリに埋め込まれるデジタル署名が作成されます。その後、アセンブリをロードするすべての人が検証ステップを実行します。公開キーは、アセンブリが実際にユーザーからのものであるかどうかを検証するために使用されます。これには公開キーが必要です(これは、アセンブリマニフェストのトークン化されたフォームにも埋め込まれています)。アセンブリが改ざんされている場合、ハッシュ値は異なり、アセンブリのロードは中止されます。これはセキュリティメカニズムです。
.snkファイルは、自分の代わりに自分のアセンブリを他の誰かが滑らせないようにするために使用されます。暗号化/復号化キーのペアを提供します。
.snkファイルを使用してアセンブリに署名すると、ハッシュコード値がアセンブリファイルから計算され、秘密キーを使用して暗号化されます。次に、その暗号化された「ダイジェスト」が.snkファイルの公開鍵とともにアセンブリに追加されます。
その後、誰かがアセンブリを受け取ったときに、そのハッシュコード値を計算することもできます。公開鍵を使用して、計算したものを復号化し、計算した値を比較します。アセンブリがまったく変更されていた場合、それらの値は異なり、アセンブリのユーザーは、自分が持っているアセンブリが指定したものではないことを知っています。
BizTalk Serverのコンテキストでは、BizTalkソリューションで使用されるカスタムアセンブリを構築する人は誰でも、.snkファイルを使用してアセンブリに署名し、BizTalkサーバーがアセンブリをGACに読み込んで使用できるようにする必要があります。