iPhone应用程序和安全性?

Posted

技术标签:

【中文标题】iPhone应用程序和安全性?【英文标题】:iPhone application and security? 【发布时间】:2011-03-15 02:22:51 【问题描述】:

您如何保护您的 iPhone 应用程序的密钥?

我有一个客户端应用程序使用的 API 密钥,我不想让任何人看到它,只有应用程序才能读取它。

1) 我如何安全地将其存储在我的应用程序中?将其存储到变量中?够好吗?

2) 如果有人解密我的应用程序会怎样? (这可能吗?)

【问题讨论】:

【参考方案1】:

这里有很多问题,所以让我一次回答一个:

您如何保护您的 iPhone 应用程序的密钥?

我假设您正试图从您的应用程序的用户那里保护它。除非您使用trusted computing 平台,否则这是不可能的,即。可以信任的平台服从其所有者的命令(因此有时称为treacherous computing)。据我所知,iPhone 不是这样的平台。

我有一个客户端应用程序使用的 API 密钥,不希望任何人看到它,只有应用程序才能读取它。

如果您的应用程序可以读取它,那么运行您的应用程序的平台的所有者也可以读取它。 (例外情况是受信任的计算平台 - 见上文。)

如何将其安全地存储在我的应用程序中?

你不能。

将其存储到变量中?

你可能会。

够好吗?

没有。

如果有人解密我的应用程序会怎样?

然后他得到你的钥匙。

这可能吗?

是的。

如果您不希望您的用户知道您的密钥,那么一开始就不要将其提供给他们。设置您的应用程序将连接到的代理服务器并将您的秘密保存在那里。

有句老话,每个秘密都必须被视为公共知识,除非它被不超过两个人知道。这也适用于软件。

【讨论】:

【参考方案2】:

考虑将密钥存储在 iPhone 的钥匙串存储库中。在此处查看 Apple 提供的钥匙串示例应用程序:

http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html

希望这会有所帮助。祝你好运。

【讨论】:

钥匙串用于存储用户的数据,用户可以访问。无论如何,任何应用数据都必须包含在应用源代码或文件中【参考方案3】:

我同意 Greg Thompson 的观点,Apple 建议使用钥匙串来存储凭据等安全数据。

另一方面,网上有几篇文章说钥匙串不再是“安全区域”,因为有些人能够解码其数据(而且非常快)。

在 iOs 4.0 及更高版本中,对安全性进行了一些改进,即所谓的数据保护(您可以在 google 上搜索:iOs 数据保护)。如果您对此主题感兴趣,您会发现 Session 209 -保护 WWDC 2010 会议视频中的应用程序数据非常有趣......您可以通过 iTunes 商店免费获取此视频 - iTunes U

希望对你有帮助

【讨论】:

钥匙串用于存储用户的数据,用户可以访问。无论如何,任何应用数据都必须包含在应用源代码或文件中

以上是关于iPhone应用程序和安全性?的主要内容,如果未能解决你的问题,请参考以下文章

安全的客户端/服务器数据传输iPhone应用程序

我们如何在 iphone 应用程序中集成支付网关? [关闭]

安全的 iPhone 桌面连接

iphone:是不是有任何安全的方法可以从应用程序建立 2-way SSL

重大安全漏洞曝光!你的安卓iPhone电脑都不安全了!

iphone/ipad : 如何通过 iOS 应用程序执行 Apple 安全策略?