【问题标题】:It is possible to find a specific byte array in a .NET assembly?可以在 .NET 程序集中找到特定的字节数组吗?
【发布时间】:2013-04-04 16:40:50
【问题描述】:
对于某人来说,反编译/反汇编/反映在发布模式下编译的 .NET 程序集以查找特定字节数组的内容有多容易?
实现依赖于特定密钥(作为字节数组存储在 C# 代码中)的安全机制是否是一个好主意?
我尝试了 .NET 反射器,但没有找到我自己的安全密钥,但我想知道这些信息是否“足够安全”。
有没有比在程序集中更安全的存储秘密的地方?
【问题讨论】:
标签:
.net
security
.net-assembly
cil
decompiling
【解决方案1】:
不要将机密存储在您不信任的人可以访问的 .Net 程序集中。反编译程序集是微不足道的,有很多工具可以做到这一点。很容易找出你放在那里的任何秘密
【解决方案2】:
我同意其他人的观点,即从程序集中获取秘密字节数组很简单。
但是有一个更普遍的原则在起作用:如果您的安全性取决于某个密钥的保密性,那么您确实应该确保该密钥永远不会在可能受到威胁的计算机上。
如果您使用本机 C++ 和/或使用某种混淆或类似的东西,这并不重要。当某个密钥在您不信任的用户的计算机上时,您应该表现得好像该用户知道该密钥。
换句话说:此类密钥的唯一安全位置是在您控制且您信任其安全性的服务器上。