首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在C++应用程序二进制文件中查找密钥

防止在C++应用程序二进制文件中查找密钥
EN

Security用户
提问于 2019-09-04 09:35:18
回答 3查看 1.5K关注 0票数 0

我需要在我的C++应用程序二进制(基于OpenCV)中存储一个密钥(对称密钥加密),以便密钥尽可能不可识别。有人能帮我选择密钥吗?这样才是安全的,而且攻击者很难在二进制文件中找到密钥?

如果我选择纯文本(不管长度),那么这将被保存为二进制文件中的文本,并且很容易识别,对吗?所以我可能想选择一个看起来像普通二进制内容的键。

我想,拥有多个按预定义顺序使用的密钥也会使其更安全,因为攻击者必须找到所有密钥(这些密钥可能存储在二进制文件中的不同位置)。

我需要选择这种类型的保护,因为我的应用程序的性质。我接受攻击者查找密钥的风险--在这种情况下,我将使用新的密钥和新的应用程序二进制--但我不想经常这样做(希望永远不会)。

我知道这种方式不可能有100%的密钥安全性,但是我想要一个基本的安全级别,这样攻击者至少需要一些知识。

EN

回答 3

Security用户

发布于 2019-09-04 09:48:20

,基本上,你不能。

您所寻找的是任何其他名称的DRM,历史一再表明DRM是无效的。因此,拥有二进制文件的任何熟练攻击者都拥有密钥,而不管您隐藏的程度如何。

即使您要将密钥存储在服务器上并从internet动态加载密钥,攻击者也可以在传输时截获密钥,或者在加载密钥后从内存中转储密钥。

事实上,攻击者根本不需要密钥,因为一旦它被用来解密一些数据,一旦解密完成,攻击者就可以从内存中转储解密的数据。

票数 9
EN

Security用户

发布于 2019-09-08 17:48:06

攻击者迟早会访问应用程序的二进制代码,包括嵌入的密码,从而知道密码。如果您对其进行加密,攻击者将不会获得密码,这种想法并不严重。你想做的是通过默默无闻来确保安全。

记住克尔克霍夫原理2

不需要保密,落入敌人之手也不成问题;

你能做些什么呢?将加密密钥放在应用程序之外,以便应用程序可以在需要时读取它。

票数 2
EN

Security用户

发布于 2019-09-08 17:42:16

短信?您将密钥存储为二进制,而不是二进制位的文本十六进制表示,对吗?

这里有安全性,然后会使攻击者的操作变得稍微不方便。听起来你是在假设他们有一个程序的副本,并且是逆向工程的。不管你做什么,什么能阻止他们简单地复制这个部分?

如果只是试图变得更加困难,就会有一些琐碎的游戏,例如:

  • 洗牌键字节和位的顺序。
  • 具有递增、递减或其他数字模式的异或
  • 将关键的去模糊处理扩展到多个代码区域,这应该会使它们慢一到几个小时。

这只有在攻击者没有足够的动机找出谜题的情况下才能起作用,并且没有想出其他方法来构建类似的设备。

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

https://security.stackexchange.com/questions/216512

复制
相关文章

相似问题

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