【发布时间】:2010-11-08 21:01:31
【问题描述】:
我经常构建的应用程序具有“社交媒体服务”要求;例如
- 推特
- bit.ly
- 脸书
对于大多数这些服务,我需要某种 API 密钥。我正在尝试找出将这些 API 密钥包含在应用程序二进制文件中的最佳方法。所需的安全级别取决于恶意攻击者可能进行的攻击。
推特
- 我有一个启用 xAuth 的密钥和密钥。两者都需要 iPhone 应用使用。
攻击的后果
- 恶意用户可能会伪装成来自我的应用程序发布 Twitter 状态更新。没有 twitter 帐户可以劫持并开始发布状态更新。
bit.ly
- 我有用户名、密码和 API 密钥。
- 要登录网站并访问分析,需要用户名和密码。
- 要通过 API 创建链接,我的 iPhone 应用程序只需要用户名和 API 密钥。密码不会以任何形式出现在应用中。
攻击的后果
- 恶意用户可以在我的 bit.ly 帐户上创建链接。他们需要进行单独的攻击以暴力破解或以其他方式获取登录帐户的密码。
对于这两种服务,潜在的危害似乎都不是很大。但对于其他服务,情况可能会更糟。
我可以将 API 凭据定义为标头中的字符串或代码中的内联字符串,但随后有人在应用程序上使用 strings 来查看其中的内容很容易受到攻击。
然后我可以开始在代码中进行愚蠢的连接/异或运算以在内存中重新创建 API 密钥,而攻击者将不得不做更多的工作来恢复二进制文件中的任何密钥。我担心的是,我不是密码学家,会在那里创建一种令人尴尬的弱混淆形式。
人们有什么更好的建议?
【问题讨论】:
标签: iphone objective-c security cryptography