【问题标题】:Tamper proof a file in VB.NET在 VB.NET 中防篡改文件
【发布时间】:2011-07-03 10:30:52
【问题描述】:

我编写了一个可以运行基本代码的小型脚本引擎。我希望如果用户保护代码,那么除了我的程序之外,没有人应该能够打开代码。

现在我找到了一个链接:http://www.codeproject.com/KB/aspnet/TamperProofQueryString.aspx,它使用Base64 编码对代码进行加密。它使用密钥来加密和解密。

我想知道如何将密钥存储在我的应用程序中,以免其他人知道。我确实混淆了我的程序,因此字符串等不易阅读。这有帮助。除了使用变量并将密钥存储在 EXE 文件本身中。我还有哪些其他安全选项?

我使用上述方法加密和解密的逻辑是否安全?我想要足够的安全性,也许不是很好。

加上上面代码的好处是它不需要创建一个临时文件来解密它,这样用户就无法搜索临时文件左右。

如果有人能提供宝贵的建议,我会很高兴。

【问题讨论】:

  • 用户是否有权访问程序或被访问,例如通过网络服务?在第一种情况下,您无法实现完美的安全性,因为如果程序包含解密某些内容的所有信息,那么用户就可以访问它。在第二种情况下,您可以使用公钥加密来确保 99% 的安全。
  • 虽然我的程序可以访问我的服务器,但这里的安全性并不那么重要。我将从我的程序标题或其他内容中获取 key 的文本。

标签: .net vb.net security


【解决方案1】:

这个问题被问了一遍又一遍。简而言之,如果您的应用程序可以访问密钥,您可以更难地访问密钥,但并非不可能(至少在通用硬件和软件上)。即使在封闭和锁定的系统上,如游戏机私钥迟早会从硬件中提取。

简而言之:您希望为用户提供某种针对伪代码的软件保护。这是本机代码尚未可靠解决的任务,对于解释代码,此任务可能更加复杂。

对密钥进行良好的混淆会赶走大多数技术不高的攻击者。混淆密钥的最简单方法是使用程序的一些文本短语作为密钥。对于偶尔的潜伏者来说,这使得使用密钥的操作变得不那么明显(专业人士知道在应用程序中找到加密密钥的不同方法)。

另一个问题是用户的代码必须被解密才能被你的引擎执行,对吧?而此时,一个技术一般的黑客只能捕获内存并从内存中挑选脚本。

【讨论】:

  • 感谢您的投入,尤金。你能解释一下“混淆密钥的最简单方法是使用程序的一些文本短语作为密钥。”。如果我做 private Key="xyzabc" 。并混淆我的应用程序,可以吗? Plus 是我的加密算法。
  • @Greatchap 如果您使用对称加密算法,请在您的应用程序中获取一些文本常量(例如一些错误消息或应用程序标题)并从中派生您的密钥(请参阅stackoverflow.com/questions/6482883/…),然后使用 known加密演算法。您引用的代码是您的方案中的一个可能选项,是的。
  • 非常感谢尤金。我将从我的程序的某些部分导出 key 的文本。
猜你喜欢
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 2016-10-03
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
相关资源
最近更新 更多