在Android中存储API密钥,是否足够晦涩?

时间:2011-01-12 17:27:04

标签: android key obfuscation dropbox-api api-key

我正在使用Dropbox API。在示例应用程序中,它包含以下行:

// Replace this with your consumer key and secret assigned by Dropbox.
// Note that this is a really insecure way to do this, and you shouldn't
// ship code which contains your key & secret in such an obvious way.
// Obfuscation is good.
final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE";
final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE";

我很清楚“秘密不是安全”的口号,而混淆实际上只会略微增加提取密钥所需的工作量。我不同意他们的声明'Obfustication is good'。那我该怎么做才能保护钥匙呢? obvustication好足够,还是我应该考虑更复杂的东西?

2 个答案:

答案 0 :(得分:5)

你无能为力。如果用户(攻击者)具有受保护的数据和执行非保护的代码,则用户最终可以访问该数据。就这么简单。他们需要的只是恰当时间的调试器和断点。那,还有很多空闲时间和决心。

保密是否足以满足您的目的取决于您的业务细节。但通常在移动世界中,如果客户担心他们的数据被盗,他们会实施高级别的盗窃和丢失控制。像远程擦除,强制屏幕锁等等。我不认为应用程序员可以复制所有这些东西。

答案 1 :(得分:2)

安全性永远不会是完美的,因此您可以自行决定要做多少工作。您可以将消费者秘密分解为多个字符串,以进行简单的更改,提供最少量的额外安全性,或者您可以创建一种算法以另一种方式表示秘密(任何东西都可以插入字符串中每隔X空格不使用的字符)修改每个字符,可能基于数字表示。)

你必须考虑工作与福利。如果这是你和一些朋友要使用的应用程序,那么它可能并不重要。如果这将成为1000万人使用的应用程序,那么安全性显然是一个问题。