我知道 StrongName 不会阻止反射 - 这是混淆器的工作。但是除了创建相当独特的名称之外,使用 StrongNames 的加密目的或保护是什么?
认为
MyAssembly
有类和方法,internal
它们通过[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=RealRSAPublicKey")]
MyAssemblyTest
,测试组件。
这两个程序集都有 StrongNames,可能使用相同的 RSA 密钥对。
是什么阻止了某人
- 剥离签名
MyAssembly
- 创建假/伪 RSA 密钥对
- 将程序集属性修改为
[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=FakeRSAPublicKey")]
MyAssembly
使用他们自己的假/伪 RSA 密钥对重新签名- 例如,在他们自己的组件中消耗内部组件
MaliciousAssembly
我想我不清楚 Strongnaming 的真正职责是什么……希望能得到一些见解。