我正在开发一个 .NET包管理器,让我想到的一件事是安全性。
鉴于任何人都可能将程序集上传到存储库,我如何验证所述程序集来自受信任的来源?例如,NHibernate.dll
如果它是用来自 NHForge 的人的私钥签署的,我会更加信任。为了确保这一点,我所要做的就是使用 NHForges 的公钥验证程序集签名。
现在,考虑到这一点,如何建立这种关系(这个特定的公钥属于这个特定的人)?我想出的一个想法如下:
- 项目作者创建一个 XML 文件,其中包含有关项目和作者的信息(姓名、电子邮件等)
- 此 XML 文件使用从文件中提取的作者私钥进行签名,该
.snk
文件稍后用于对程序集本身进行签名 - 作者将此签名的 XML 文件上传到存储库,在那里对其进行检查并建立作者和公钥之间的关系
为了实现这一点(这是一个可行的想法,顺便说一句?),我需要一种访问.snk
文件和读取 PK 的编程方式。.NET 中是否有这方面的内容?