延迟签名和强名称在.NET中是什么?

🏷️ 365bet娱乐场中文 🕒 2025-10-03 08:14:00 👤 admin 👁️ 4308 ❤️ 133
延迟签名和强名称在.NET中是什么?

这方面在MSDN上有大量信息,例如:Strong Naming和 Delay Signing

概括基本思想:

Strong Naming是一种将程序集标记为简单标识符的方法,以便稍后验证它自部署以来是否已被修改。强名称基本上是程序集名称、版本以及唯一开发者的“强名称密钥”的哈希值。对于强名称程序集的引用会经过比非强名称引用更严格的验证;特别地,强名称引用必须匹配版本号和强名称哈希。

这有助于避免程序中两个潜在安全漏洞的常见来源:

恶意用户用具有相同文件名但包含恶意代码的不同程序集替换程序中的程序集,并说服您的程序加载和执行它。

恶意用户用已知存在错误但已修复的同一程序集的不同版本替换程序中的程序集。

Strong Naming过程将拒绝这两个操作,因为强名称数据不匹配。这就是为什么GAC中的程序集必须具有强名称:它们如此普遍地使用,否则就会成为这种劫持的主要目标。

但是,请注意,强名称绝对无法验证发行者的身份。任何人都可以发布一个声称是Microsoft的强名称程序集,而强名称中没有任何内容来驳斥这种说法。验证身份是Authenticode数字签名的工作,这与Strong Naming不同。两者经常一起使用,但它们是正交的概念。

延迟签名是一种在构建过程之外对程序集进行签名的技术。其思想是,您的公司可能有政策,不允许在构建时使用强名称密钥(也许它们被离线保存或安全地保护在密码后面)。延迟签名程序集用空白强名称密钥标记:它基本上为授权用户稍后添加密钥预留了空间。同时,部分强名称密钥被包含在内——只提供其他程序集进行强引用所需的足够信息,但不足以检测更改或修改。

相关文章

China Edition:活动
365天第三季无删除完整翻译

China Edition:活动

📅 07-08 👁️ 5564
奖状设计
365提款一直在处理中

奖状设计

📅 08-15 👁️ 6172