【发布时间】:2013-09-24 18:40:20
【问题描述】:
我知道 StrongName 不会阻止反射 - 这是混淆器的工作。但除了创建相当独特的名称之外,使用 StrongNames 的加密目的或保护是什么?
假设
MyAssembly具有internal类和方法,它们通过以下方式公开[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=RealRSAPublicKey")]到MyAssemblyTest,测试程序集。
这两个程序集都有 StrongNames,可能使用相同的 RSA 密钥对。
是什么阻止了某人
- 剥离
MyAssembly上的签名 - 创建假/伪 RSA 密钥对
- 将程序集属性修改为
[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=FakeRSAPublicKey")] - 使用他们自己的假/伪 RSA 密钥对重新签名
MyAssembly - 在他们自己的程序集中使用内部组件,比如
MaliciousAssembly
我想我不清楚 Strongnaming 的真正职责是什么……希望能得到一些见解。
【问题讨论】:
标签: c# .net-assembly strongname