首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用组装StrongName提供的保护?

使用组装StrongName提供的保护?
EN

Stack Overflow用户
提问于 2013-09-24 18:40:20
回答 1查看 60关注 0票数 1

我明白,StrongName并不阻止反射--这是一个模糊处理者的工作。但是,除了创建相当独特的名称之外,使用StrongNames的密码目的或保护是什么?

假设

  1. MyAssemblyinternal类和方法,这些类和方法通过[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=RealRSAPublicKey")]公开给
  2. MyAssemblyTest,测试程序集。

这两个程序集都有StrongNames,可能使用相同的RSA密钥对。

是什么阻止了某人

  1. MyAssembly上删除签名
  2. 创建假/假RSA密钥对
  3. 将程序集属性修改为[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=FakeRSAPublicKey")]
  4. 用他们自己的假/假RSA密钥对重新签名MyAssembly
  5. 在他们自己的程序集中使用内部部件,MaliciousAssembly

我想我不清楚斯特隆格宁的真正职责是什么.会感谢你的洞察力。

EN

回答 1

Stack Overflow用户

发布于 2013-09-24 18:49:44

给程序集一个强名称的主要目的是防止恶意使用使用程序集的代码的用户用自己的代码替换代码。

考虑一下这种情况:您可以将TransmitSecret.dll程序集交给客户,以便他们能够以安全的方式与您的服务器进行通信。如果TransmitSecret.dll没有签名,恶意用户将能够编写自己的模块,该模块与您的模块显示相同的接口,将代码包装在自己的恶意代码中,拦截客户的所有“安全”传输,并将副本发送到自己的服务器。他们可以在不访问客户源代码的情况下做到这一点,只需将您的dll替换为他们的源代码即可。

但是,如果TransmitSecret.dll被签名了,并且您的客户代码是针对它的,那么交换程序集的技巧就行不通了:当您的客户代码尝试加载TransmitSecret.dll时,.NET会注意到更改,并阻止程序启动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18989490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档