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 应用程序中集成支付网关? [关闭]