2011-12-06 2 views
13

多くの記事には書かれているようですが、 アセンブリーには遅延サインと強い名前が付けられています。正確に遅延サインと.netの強力な名前は何ですか?

これはどういう意味ですか?

GACにアセンブリをインストールすることはできません。 私は強い名前のないアセンブリを持っていると仮定します、それはハイジャックすることはできますか?

誰かが疑いを明確にしてください。

答えて

31

MSDNにはこれに関する多くの情報があります。例えば:

強い命名は、それは以降に変更されていないことを検証するために、後で使用することができ、簡単な識別マークを使用してアセンブリをスタンプする方法は、次のとおりです。Strong Naming、およびDelay Signing

は、基本的な考え方をまとめると、それは配備されました。厳密な名前は基本的に、アセンブリ名、バージョン、および開発者固有の「強力な名前のキー」のハッシュです。厳密な名前のアセンブリへの参照は、厳密でない名前のアセンブリへの参照よりも厳しい検証を行います。特に、厳密な名前の参照はバージョン番号と一致しなければならず、厳密な名前のハッシュは一致しなければなりません。

これはあなたのプログラムで潜在的なセキュリティの脆弱性の2つの一般的な原因を回避することができます:

  1. 悪意のあるユーザーが同じファイル名で別のアセンブリを使用してプログラムにアセンブリを置き換えますが、悪質なコードが含まれていると、プログラムにロードして実行させるようにします。
  2. 悪意のあるユーザーがプログラム内のアセンブリを同じアセンブリの別のバージョンに置き換えますが、修正された既知のバグがあります。

厳密な名前のプロセスは、厳密な名前のデータが一致しないため、これらのアクションの両方を拒否します。このため、GACのアセンブリには厳密な名前を付ける必要があります。これらはまったく遍在的に使用されているため、このようなハイジャックの主なターゲットとなります。

ただし、強い名前は、出版社の身元を確認することは絶対にありません。誰でもMicrosoftと主張する厳密な名前の議会を公表することができ、その主張に反論する強い名前には何もない。識別を検証することは、強力な命名法とは異なるAuthenticodeデジタル署名の仕事です。 2つはよく一緒に使用されますが、直交する概念です。

遅延署名は、ビルドプロセス外のアセンブリに署名するための手法です。ここでのアイデアは、ビルド時に強力な名前キーが使用できないようなポリシーを持つ可能性があるということです(オフラインで保管されているか、パスワードの後ろに保護されている可能性があります)。遅延署名付きアセンブリには、名前キー:基本的には、後で認可されたユーザーがキーを追加するためのスペースを予約します。一方で、他のアセンブリが強力な参照を作成するのに十分な情報であるが、変更や変更を検出するのに十分ではない部分的な強力な名前のキーが含まれています。

関連する問題