【发布时间】:2014-03-06 20:30:50
【问题描述】:
我很好奇,通过 Google 研究,我一直在了解数字签名和强命名程序集。如果您真的很努力,似乎可以使用数字签名来签署强命名程序集。
我推测,通过这种做法,可以通过这种方式绕过数字签名的目的。
微软说:
“强名称本身并不意味着像数字签名和支持证书所提供的那样的信任级别。”
--http://msdn.microsoft.com/en-us/library/wd40t7ad%28v=vs.110%29.aspx
我是否正确猜测以这种方式使用数字签名实际上是一种不好的做法,这可能会造成安全漏洞并且绝对没有任何用途?或者甚至有可能吗?使用数字签名作为强名称是可能的还是比什么都不做更好?除了正确使用数字签名之外,它是否提供了一些额外的安全性。
【问题讨论】:
-
Microsoft .NET Framework 程序集由 Microsoft 强命名和数字签名。
-
@MichaelLiu Umm 你想说什么?详情?
-
否。 强命名并不是为了防止 DLL 地狱。名称中的 version 防止了 DLL 地狱,但这并不是名称 strong 的原因。 strong 这个名字的由来是公钥令牌,而 that 是出于安全目的:提供 evidence 作为 evidence 的输入i>安全政策.
-
GAC 中的程序集必须具有强名称;如果您没有证据证明代码的来源,则不应将代码放入 GAC。再说一遍:DLL Hell 解决部分名称是version。 I-want-to-run-code-actually-written-by-Microsoft 解决问题是 key token。
-
不幸的是,存在两个非常相似的东西,因为它会导致像这样的对话混乱! :-) 如果我成为 .NET 之王,并有机会重来一遍,我会使用证书进行强命名和签名同样的事情,并让强名称密钥生成工具生成自签名证书。
标签: c# .net-assembly digital-signature strongname