2012-05-06 11 views

答えて

13

簡単な答えは、はいといいえです。これは、あなたが最初にあなたのアセンブリに署名する強い名前であるという目的に依存します。

Strong-Name SigningのMSDNページは、2つの目的をかなりよくまとめています。

厳密な命名は、アプリケーションまたはコンポーネントに 他のソフトウェアがそれを明示的に参照するために使用できる一意の識別情報を提供します。たとえば、 強い名前を付けると、アプリケーションの作成者と管理者は、 に、共有コンポーネントに使用する正確なサービスバージョンを指定できます。 これにより、さまざまなアプリケーションで異なるバージョン を指定できるようになり、他のアプリケーションに影響を与えることはありません。さらに、セキュリティ証拠としてコンポーネントの厳密な名前 を使用して、2つのコンポーネント間の信頼関係を確立することができます( )。

公開されているライブラリ(DLL)は、エンドユーザーが使用することを意図している限り、厳密な名前で署名する必要があります。 (実装の詳細などがない限り)

私が見た署名の主な目的は、固有の識別(名前空間が誤って突然衝突することがある)や、 GACこのような場合、最初にキーファイルを意図していないため、キーファイルを公開してもセキュリティ上の意味はありません。信頼/起源の保証はありませんが、一意の識別は依然として有効です。 MSDNページでは主にこのシナリオについて説明します。あなたが組立に署名してはならない時には、および周辺の詳細。

しかし、認証のために、具体的には、アセンブリが要求されたソースから来たものであることを消費者に保証するためにアセンブリに署名する場合、エクソリティック(公開配布された)キーは完全に無効ですこのトラストモデル。つまり、誰でもプロジェクトコードを任意に変更し、アセンブリを正しく再構築して辞めることができ、本質的にあなたの身元を偽ることができます。 MSDNのページでは残念ながらこの使用法は扱われていません(おそらく、セキュリティ戦略の一環としてより広く考慮する必要があるため)が、それでも重要です。

最後に、アセンブリに署名するためにCLR/.NETが使用する2種類のキー証明書ファイルがあることに注意してください。あなたが言及しているように、最初はSNKです。これはパスワードで保護されていません。 2番目はPFXです。これは本当にSNKキーファイルのパスワードで保護されたバージョンです。このパスワードが十分に保護されている限り、オープンソースソフトウェアで保護されたPFXを配布する際のセキュリティ上の問題はありません。です。 Visual Studio(およびコマンドラインキー生成ユーティリティ)はもちろん両方を作成することができます。

+0

また、この回答を見て、PFXキーファイルを適切に推測したい場合もあります。 – Noldorin

+0

そして 'sn.exe'は、コマンドラインから実行している場合に必要な強力な名前の作成/操作ユーティリティです。これはかなりの機能を提供しますが、そのほとんどはおそらく決して必要としません。 http://msdn.microsoft.com/en-us/library/k5b5tt23%28v=vs.100%29.aspx – Noldorin

関連する問題