保护对称密钥

时间:2017-02-13 14:18:04

标签: security cryptography reverse-engineering encryption-symmetric

在我的项目(Windows桌面应用程序)中,我使用对称密钥来加密/解密一些需要保护的配置。密钥在我的代码(C ++)中被硬编码。

  1. 逆向工程会给我的密钥带来哪些风险? (客户只会收到编译的DLL)
  2. 有没有办法提高管理密钥的安全性?
  3. 是否有我可以使用的开源或商业产品

2 个答案:

答案 0 :(得分:3)

Windows提供key storage mechanism作为加密API的一部分。只有当您的代码为每个用户生成唯一的随机密钥时,这才对您有用。如果您为所有用户使用单个密钥进行安装,则显然必须在您的代码中(或者从代码中的常量派生),因此实际上并不安全。

答案 1 :(得分:2)

  

逆向工程会给我的密钥带来哪些风险? (客户只会收到编译的DLL)

100%。当然假设密钥保护有用和有趣的东西。如果它没有,那么降低。

  

有没有办法提高管理密钥的安全性?

您可以使用没有安全工具,但有混淆和DRM工具(与安全性不同的问题)。您使用的任何方法都需要定期更新,以应对破坏旧方法的新攻击。但从根本上说,这与音乐或视频或游戏的DRM相同。我会到处逛逛。任何有价值的东西都会定期更新,而且可能有些昂贵。

  

是否有我可以使用的开源或商业产品

针对此特定问题的开源解决方案......可能无济于事。 DRM的重点是混淆(使事情混乱和隐藏而不是安全)。如果你分享秘密酱油"然后你失去了保护。这就是DRM与安全性的不同之处。在安全方面,我可以告诉你除了秘密之外的一切,它仍然是安全的。但DRM,我必须隐藏一切。也就是说,我确定有一些开源工具可以尝试。有一些开源混淆工具试图通过加扰标识符等来调试二进制文件很困难,但如果只需要一小部分信息(配置),那么它就是#39很难对此进行充分的混淆。

如果你需要这个,你可能想要一个商业解决方案,这个解决方案将是不完美的,并且可能需要修补,因为它已被破坏(再次,假设它保护了任何人真正关心的东西)。推荐特定解决方案是Stack Overflow的主题,但Google可以为您提供帮助。 Windows可能有一些特定的功能,但这取决于您的具体要求。

请记住"攻击者" (很难考虑授权用户和攻击者")并不一定要真正获得你的密钥。他们只需要等到你的程序解密配置,然后读取内存配置。因此,您也需要对此进行模糊处理。这是一场永无止境的战斗,你必须决定你想要多么努力的战斗。