两个强命名和数字签名使用公钥加密提供证据有关程序集的起源,这样您就可以申请安全策略,以确定哪些权限被授予组装。
它们的区别不在他们的技术细节,但什么问题,他们是为了解决。
强名称的目的仅仅是为了确保当您按名称加载程序集时您正在加载您认为正在加载程序集的程序集。那就是只有的一个强名的设计目的。你说“我想装载Frobber,版本4,来自FooCorp”。强大的名称设备可确保实际加载该DLL,而不是另一个名为Frobber的程序集,版本4,来自Dr. Evil Enterprises。
为了实现这一目标,所有需要的是你知道有FooCorp的私钥相关联的公钥标记。您如何知道公钥令牌完全是您的业务。没有任何旨在帮助您安全获取该信息的基础设施。不知何故,你只是想知道它是什么。
从发布者证书数字签名的目的是为了建立一个可验证的身份和信任链。信任链从未知或不确定来源的代码块转变为“可信根” - 您已将操作系统配置为信任的实体。您下载了一些代码,并且代码具有带有FooCorp证书的数字签名。您检查证书并说明“该程序来自FooCorp,VeriSign证明此证书的准确性。”由于VeriSign是您值得信赖的根源之一,因此您现在确信此代码确实来自FooCorp。
注意数字签名解决的问题有多复杂。我们并不是要简单地确定“这个与这个名字相关的代码块是不是?”相反,我们试图确定这些代码来自哪里,谁声称所负责的公司的存在,我们是否应该相信这家公司?
强名和数字签名之间的区别强调了基于加密安全性的难点。难题不是密码学;这只是数学。难题是安全管理密钥信息的分发并将它们与正确的实体相关联。强名称,因为他们试图解决一个非常小但重要的问题,没有关键的管理问题。或者,他们将关键管理问题强加给用户。数字签名都是关于试图通过证书自动安全地分发关键信息,以解决更复杂的信任和身份问题。
这是明确的吗?
(大问题;这会涨上my blog 9月3日)。
你问了很多。它是一个复杂的主题,你似乎有兴趣了解它是如何工作的,从头到尾。 – Will 2009-08-26 13:23:40
我想知道它是如何工作的。 – devnull 2009-08-26 13:29:57