16

厳密な名前キー (snk ファイル) を指定します。このファイルをオープン ソース プロジェクトのソース管理に追加すると、セキュリティ上の問題はありますか?

4

1 に答える 1

19

簡単な答えは「はい」と「いいえ」です。最初にアセンブリに厳密な名前で署名する目的によって異なります。

厳密な名前の署名に関する MSDN ページには、2 つの目的がかなりよくまとめられています。

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

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

私が見た署名の主な目的は、一意の識別 (名前空間が不注意で衝突することがあります) やアセンブリを GAC で使用できるようにするなど、より技術的な理由によるものである傾向があります。このような場合、キー ファイルを公開してもセキュリティへの影響はありません。信頼/発信元の保証は提供されませんが、一意の識別は引き続き有効です。MSDN ページでは、主にこのシナリオについて説明しています。議会に署名すべき時とすべきでない時。とその周辺の詳細。

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

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

于 2012-05-06T23:02:04.077 に答える