.snk ファイルとは何ですか? 私はそれがStrongly Named Keyの略であることを知っていますが、それが何であり、どのように機能するかについてのすべての説明は頭を悩ませています。
厳密に名前が付けられたキーがどのように使用され、どのように機能するかについて簡単な説明はありますか?
.snk ファイルとは何ですか? 私はそれがStrongly Named Keyの略であることを知っていますが、それが何であり、どのように機能するかについてのすべての説明は頭を悩ませています。
厳密に名前が付けられたキーがどのように使用され、どのように機能するかについて簡単な説明はありますか?
.snk ファイルは、厳密な名前を .NET アセンブリに適用するために使用されます。そのような強い名前は
単純なテキスト名、バージョン番号、カルチャ情報 (提供されている場合)、および公開鍵とデジタル署名。
SNK には、一意のキー ペア (アセンブリに一意の厳密な名前を付けるために使用できる秘密キーと公開キー) が含まれています。アセンブリに厳密な名前が付けられている場合、アセンブリの内容から "ハッシュ" が作成され、ハッシュは秘密キーで暗号化されます。次に、この署名付きハッシュは、.snk からの公開キーと共にアセンブリに配置されます。
後で、厳密な名前が付けられたアセンブリの整合性を確認する必要がある場合、アセンブリの内容のハッシュを作成し、アセンブリの公開キーを使用して、アセンブリに付属するハッシュを復号化します (2 つのハッシュが一致する場合)。アセンブリ検証に合格します。
この方法でアセンブリを検証できるようにして、アプリケーション全体を破壊する悪意のあるアセンブリとアセンブリを交換しないようにすることが重要です。これが、厳密な名前のないアセンブリが厳密な名前のアセンブリと同じように信頼されないため、GAC に配置できない理由です。また、信頼の連鎖があります。厳密な名前が付けられていないアセンブリを参照する、厳密な名前が付けられたアセンブリを生成することはできません。
記事「The Secrets of Strong Naming (Wayback Machine にアーカイブ)」。これらの概念をより詳細に説明する優れた仕事をしています。写真付き。
.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 に読み込んで使用できるようにする必要があります。