gpt4 book ai didi

security - 混淆存储在源代码中的解密 key

转载 作者:行者123 更新时间:2023-12-03 06:32:46 25 4
gpt4 key购买 nike

我想随我的软件一起发送一个文件,其内容需要对我的软件用户隐藏(无法进行在线身份验证,因为该软件需要离线执行)。我执行此操作的方法是使用 AES-256 加密文件,然后将加密 key 存储在源文件中。但事实证明,从编译的可执行文件中恢复这个 key 非常容易,因为整个字符串只是位于一个连续的 block 中。以下 Python 代码查找 key :

with open("/path/to/executable", 'rb') as readfile:
content = readfile.read()

to_find = 'C0SH3VKNTKR4CRGH0R8WXD9WR5I1GS' # example key

for i in range(len(content) - len(to_find)):
substr = content[i:i + len(to_find)]
if substr == to_find:
print "Found at index %d" % i

当然,作为攻击者,我不知道我在寻找什么。但是,通过查看可执行文件所依赖的共享库(这些库是开源的,解密文件的格式也是一种广泛使用的标准),人们可以轻松推断出解密文件所需的格式。因此基本上,人们可以在构成可执行文件的二进制内容上滑动一个 30 个字符的长窗口,使用每个字符串解密文件,然后检查是否可以正确解析它。

我知道,如果 key 以某种格式存在于源代码中,则不可能完全保证 key 的安全,但是在这种情况下,有哪些典型技术可用于使攻击者的日子变得更加艰难?

想到的明显解决方案是将 key 拆分为多个子字符串并将它们分散在整个代码中,或者在字符串中间插入虚拟字符,但我对软件安全性的了解为零,所以这会很好听取其他建议。

最佳答案

这方面有一个完整的研究领域,称为“白盒密码学”。只需谷歌一下即可。

其中一个选项是使用 AES 的白盒加密代码生成器。给定 key ,它将生成为该特定 key 实现 AES 或部分 AES 的源代码。 key 间接嵌入在代码中。它没有显式存储。

看来 Whitebox-crypto-AES就是这样一个代码生成器。我从来没有用过它。尝试一下...

关于security - 混淆存储在源代码中的解密 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com