2015-12-15 123 views
5

我在我的C++应用程序中使用AWS S3上传和下载文件。我在代码中包含了访问密钥和秘密,但我担心有人可以从二进制文件中读取它们。是否有任何标准技术来混淆它们?如何在C++中隐藏我的AWS S3访问密钥和密钥?

更新:我没有在PC上运行这个应用程序,它实际上是嵌入式设备,所以我不担心用户从文件或RAM中读取密钥和密钥(访问设备要困难得多) 。我担心的是有人正在浏览我们的更新文件,并从二进制文件中提取密钥和秘密。

+0

如果我正确处理了这个问题(迄今为止给出的问题),那么问题的关键在于可以以某种方式读取代码中的密钥。这并不意味着人们可以知道实际密钥的位置,但可以知道静态数据的位置,并将此数据用作暴力攻击的基础(例如尝试所有4个字符的序列,然后是5个等等)在静态数据中)。 – marom

+0

这是一个很难回答的问题。我认为你并不完全清楚你想要达到什么目的,答案(就像通常与安全一样)可能是“你做错了”。作为一个经验法则,你不能在用户自己的电脑上保留任何秘密。你有没有想过在http://security.stackexchange.com/上提问? – BoBTFish

回答

0

最好不要将密钥保存在代码中。需要时输入。

如果保存在代码中,请勿将密钥保存为简单字符串。保持它的某种模式,并在需要时通过一些算法生成密钥。

+0

但是,我不得不将AWS密钥和秘密提供给客户,因为这会破坏隐藏它的点。 – parsley72

1

在计算机中存储秘密不是一件容易的事。您可以做的一件事是使用密码加密密钥并将加密的数据存储在文件中。然后,当用户输入密码时,您可以使用密码解密加密数据并检索密钥 - 您可以使用该密钥。

但是,这种方法不适用于软件需要在没有用户干预的情况下运行的情况。

+0

会不会更好地在代码中嵌入加密数据? – marom

+0

@marom:我很难说,我认为这取决于情况。如果密钥被加密存储,加密数据的存储位置不应太重要。 –

相关问题