我编写了一个可以运行基本代码的小脚本引擎。我希望如果用户保护代码,那么除了我的程序之外,没有人能够打开代码。
现在我找到了一个链接http://www.codeproject.com/KB/aspnet/TamperProofQueryString.aspx,它使用Base64编码对代码进行加密。它使用密钥加密和解密。
我想知道如何将密钥存储在我的应用程序中,以便其他任何人都不知道。我混淆了我的程序,因此字符串等不易读取。这有帮助。除了在EXE文件本身中使用变量和存储键之外。我还有哪些其他安全选择?
使用上述方法加密和解密的逻辑是否安全?我想要足够的安全性,也许不是一个很棒的安全性。
另外上面代码的好处是它不需要创建一个临时文件来解密它,这样用户就无法搜索临时文件了。
如果有人能提供有价值的建议,我将很高兴。
答案 0 :(得分:2)
这个问题一遍又一遍地被问到。简而言之,如果您的应用程序可以访问密钥,您可以更难以访问密钥,但并非不可能(至少在通用硬件和软件上)。即使在像游戏控制台这样的封闭和锁定系统上,私钥也迟早会从硬件中提取出来。
简而言之:您希望为用户提供某种伪代码软件保护。这是本机代码无法可靠解决的任务,对于解释代码,此任务可能更复杂。
密钥的良好混淆将驱除大多数非常熟练的攻击者。混淆密钥的最简单方法是使用程序的一些文本短语作为密钥。这使得使用密钥的操作对于偶尔的潜伏者来说不那么明显(专业人员知道在应用程序中找到加密密钥的不同方法)。
另一个问题是必须解密用户代码才能由引擎执行,对吗?此时,普通熟练的黑客可以捕获内存并从内存中选择脚本。