Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET程序集的签名_C#_.net_Assembly Signing - Fatal编程技术网

C# .NET程序集的签名

C# .NET程序集的签名,c#,.net,assembly-signing,C#,.net,Assembly Signing,数字签名与强命名程序集有什么关系。我了解到,强名称程序集具有公钥和数字签名 从: “对程序集进行签名涉及对程序集的重要部分进行哈希,然后使用私钥对哈希进行加密。签名的散列与公钥一起存储在程序集中。公钥将对签名的哈希进行解密。当CLR加载强名称程序集时,它将从该程序集生成哈希,然后将其与解密的哈希进行比较。如果比较成功,则表示文件中的公钥(以及公钥令牌)与用于对程序集签名的私钥相关联。这意味着程序集中的公钥是程序集发布者的公钥,因此可以阻止欺骗攻击。” 上面的信息准确吗?它没有任何数字签名的参考。

数字签名与强命名程序集有什么关系。我了解到,强名称程序集具有公钥和数字签名

从:

“对程序集进行签名涉及对程序集的重要部分进行哈希,然后使用私钥对哈希进行加密。签名的散列与公钥一起存储在程序集中。公钥将对签名的哈希进行解密。当CLR加载强名称程序集时,它将从该程序集生成哈希,然后将其与解密的哈希进行比较。如果比较成功,则表示文件中的公钥(以及公钥令牌)与用于对程序集签名的私钥相关联。这意味着程序集中的公钥是程序集发布者的公钥,因此可以阻止欺骗攻击。”

上面的信息准确吗?它没有任何数字签名的参考。我找不到MSDN页面来解释程序集是如何签名的,如何验证签名以及如何消除黑客攻击的可能性。我想了解更多这些信息。

基本上是防止篡改的位。一旦程序集被签名,则n对的任何更改都将使签名无效,clr将知道不加载该签名


阅读wikipedia的文章。数字签名可以防止篡改任何数字文档。不仅仅是程序集。它比我解释得更好。

正如您在本文中所读到的,避免篡改强命名程序集并不像您预期的那样简单。

强命名和数字签名都使用公共密钥y加密提供有关程序集的来源证据,以便您可以应用安全策略来确定授予程序集的权限

它们的区别不在于技术细节,而在于它们打算解决什么问题

强名称的目的仅仅是确保当您按名称加载程序集时,您加载的正是您认为正在加载的程序集。。这是强名称的唯一设计目的。您说“我想加载来自FooCorp的Frobber,版本4“。强名称gear确保您实际加载的正是该DLL,而不是来自Dr.Evil Enterprise的另一个名为Frobber的程序集,版本4。”

为了实现这一点,您只需要知道与FooCorp私钥关联的公钥令牌。您如何知道公钥令牌完全是您的事情。目前还没有设计用于帮助您安全获取信息的基础设施。你只需要知道它是什么,不知怎么的

发布者证书的数字签名的目的是建立可验证的身份和信任链。信任链从一大堆来源未知或不确定的代码到一个“受信任的根”——您已将操作系统配置为信任的实体。您下载了一些代码,代码中有一个数字签名,带有来自FooCorp的证书。您检查了证书,证书上写着“此程序来自FooCorp。此证书的准确性由VeriSign保证。”由于VeriSign是您信任的根之一,您现在有信心此代码确实来自FooCorp

请注意,数字签名解决的问题要复杂得多。我们并不是简单地确定“这一大块代码是否与这个名字相关?”而是试图确定这一代码来自何处,以及谁为据称负有责任的公司的存在提供担保,我们是否应该信任该公司

强名称和数字签名之间的区别强调了基于密码的安全性的难点。困难的问题不是密码学;那只是数学。困难的问题是安全地管理密钥信息的分发,并将它们与正确的实体相关联。强名称,因为它们试图解决一个非常小但重要的问题,没有关键的管理问题。或者,更确切地说,他们将密钥管理问题强加给您,即用户。数字签名就是试图通过证书自动安全分发关键信息,以解决更复杂的信任和身份问题

清楚了吗


(这个问题很好,将在9月3日公布。)

你问得太多了。这是一个复杂的课题,你似乎对学习它从头到尾的工作方式很感兴趣。我想对它的工作原理有一个总体的了解。我找到了一个有趣的解释。张贴在这里的书面线索。希望它可以帮助别人。