使用强名称进行签名(密钥对存储在.snk文件中)是为了防止伪造程序集等用途。
例如:我使用强名称签名我的程序集,然后其他开发人员使用我的程序集,因此他的程序集现在包含对我的引用,提到我的密钥对的公钥。一些用户安装了该开发人员程序集和我的程序集,并愉快地使用该开发人员的代码。如果其他人试图生成一个看起来像我的版本的程序集,并说服用户它是“值得安装的更新”,那么伪造的程序集将无法加载,因为我控制我的密钥对,而伪造的程序集未使用相同的密钥对进行签名。好吧,很酷。
但是,有什么能够防止恶意方伪造我的程序集和其他开发人员的依赖程序集并“发布”它们两个呢?他们获取我的程序集和该开发人员的程序集,篡改两者,用任何密钥对签署我的程序集的伪造版本,然后将其引用添加到依赖程序集的伪造版本中,也对其进行签名,然后同时发布这两个程序集。我的意思是,恶意地“发布”两个程序集不应该比“发布”一个程序集更难。
强名称签名如何防止伪造多个程序集?