私は .NETパッケージ マネージャーを開発していますが、考えさせられたのはセキュリティです。
誰でもアセンブリをリポジトリにアップロードできる可能性がある場合、そのアセンブリが信頼できるソースからのものであることを確認するにはどうすればよいですか? たとえば、NHibernate.dll
NHForge の秘密鍵で署名されていれば、もっと信頼できます。これを確認するには、NHForges の公開鍵を使用してアセンブリの署名を検証するだけです。
さて、それを念頭に置いて、どうすればこの関係 (この特定の公開鍵がこの特定の人物に属している) を確立できるのでしょうか? 私が思いついたアイデアは次のとおりです。
- プロジェクト作成者は、プロジェクトと作成者に関する情報 (名前、電子メールなど) を含む XML ファイルを作成します。
.snk
この XML ファイルは、後でアセンブリ自体に署名するために使用されるファイルから抽出された作成者の秘密キーで署名されています。- 作成者はこの署名済み XML ファイルをリポジトリにアップロードします。リポジトリでファイルがチェックされ、作成者と公開鍵の関係が確立されます。
これを実装するには (これは実行可能なアイデアですか?)、.snk
ファイルにアクセスして PK を読み取るプログラムによる方法が必要です。.NET でこれに対応するものはありますか?