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

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

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

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

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

【问题讨论】:

    标签: security ios ios4


    【解决方案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

      希望对你有帮助

      【讨论】:

      • 钥匙串用于存储用户的数据,用户可以访问。无论如何,任何应用数据都必须包含在应用源代码或文件中
      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 2016-12-11
      • 1970-01-01
      • 2011-11-03
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      相关资源
      最近更新 更多