【问题标题】:Is this plan for preventing iPhone app client spoofing sound?这是防止 iPhone 应用程序客户端欺骗声音的计划吗?
【发布时间】:2010-11-13 21:09:21
【问题描述】:

我正在设计一个通过 HTTP 与服务器通信的 iPhone 应用程序。

我只希望应用程序能够发布到服务器上的某些 URL,而不是任意 HTTP 客户端。因此,我将设置服务器以仅验证包含秘密令牌的 POST,并设置应用程序以包含该秘密令牌。包含此令牌的所有请求将仅通过 HTTPS 连接发送,因此无法被嗅探。

您认为这种推理有什么缺陷吗?例如,是否可以使用“字符串”、十六进制编辑器等从编译的应用程序中读取令牌?当然,我不会将此令牌存储为 .plist 或其他纯文本格式。

欢迎提出替代设计的建议。

【问题讨论】:

  • 您的目标是什么?您是否试图确保人们必须为您的应用付费才能使用服务器的服务?您是否试图保证该应用只发出流氓应用可能会破坏的“措辞恰当”的请求?

标签: iphone security https


【解决方案1】:

我建议根据发送的数据和您的应用和服务器知道的密钥添加一些校验和 (md5/sha1)。

【讨论】:

  • 不知道为什么这被否决了。这是一种常见的技术。但是,在这种情况下,当设备需要密钥来发送消息时,诀窍是向设备所有者隐藏密钥。
  • 我同意。如果一个人想要制作一把真正的秘密钥匙,隐藏起来是很困难的。但随后他将需要在服务器上重新创建这些东西。如果他没有运行自己的服务器,我会认为更难做到......
  • ...这也是一个薄弱环节,特别是当托管在“其他”地方时
【解决方案2】:

按照我的理解,是的,可以通过一种或另一种方式从应用程序中检索密钥。由于它的本质,在 Objective-C 运行时中隐藏某些东西几乎是不可能的。据我所知,只有 Omni 使用其序列号对其进行了管理,显然是将关键代码保存在 C (Cocoa Insecurity) 中。

这可能需要做很多工作(我不知道实现起来有多复杂),但您可能需要考虑使用推送通知每小时向程序发送一个有效期为一小时的身份验证密钥.这将在很大程度上将验证它是您的应用程序的问题转移给 Apple。

【讨论】:

    【解决方案3】:

    一般来说,假设一个坚定的攻击者无法发现嵌入在他的物理控制下的设备上的应用程序中的密钥(并且很可能,他无论如何都拥有)是没有根据的。查看所有依赖此假设的损坏 DRM 方案。

    真正重要的是谁在尝试获取密钥,以及他们的动机是什么。销售针对不急于偷窃的人群的产品。为您的产品定价,以便购买它比发现钥匙更便宜。为您的客户提供良好的服务。这些都是营销和法律问题,而不是技术问题。

    如果您确实嵌入了密钥,请使用要求每个客户端自行发现密钥的方法,例如要求每个客户端使用不同的密钥。您不希望出现一个攻击者可以发现密钥并将其发布,从而授予所有人访问权限的情况。

    iPhone does provide the "KeyChain" API, 可以帮助应用程序向设备所有者隐藏秘密,无论好坏。但是,任何东西都是易碎的。

    【讨论】:

    • 感谢您的回答,尤其是相关问题的链接。
    【解决方案4】:

    应用程序可以被反汇编,以便他们可以找到您的密钥。

    【讨论】:

      【解决方案5】:

      需要更多信息来确定该方法是否合理。一种资产受到保护可能是合理的,而另一种资产则可能是不健全的,这一切都取决于资产的价值和资产泄露时的成本。

      早先的几张海报已经暗示这样一个事实,即设备上的任何东西都可以被坚定的攻击者泄露。因此,您能做的最好的事情就是确定资产的价值,并为攻击者设置足够的障碍,使攻击的成本超过资产的价值。

      可以将 SSL 的客户端证书添加到您的方案中。人们可以将该证书和令牌的密钥深埋在一些混淆的代码中。人们可能会制定一个使用公钥/私钥加密的方案来进一步模糊令牌。可以实现一个质询/响应协议,该协议具有时间限制响应时间,其中服务器质询应用程序,应用程序在断开连接之前有 X 毫秒的响应时间。

      障碍的数量和复杂性都取决于资产的价值。

      杰克

      【讨论】:

        【解决方案6】:

        您应该查看 Entrust Technologies (www.entrust.com) 产品线,了解与各种细节(例如,设备、IMEI、应用程序序列号、用户 ID 等)相关的双因素身份验证

        【讨论】:

          猜你喜欢
          • 2021-09-18
          • 2023-03-15
          • 1970-01-01
          • 2017-01-12
          • 1970-01-01
          • 1970-01-01
          • 2011-03-03
          • 2017-05-14
          • 2017-01-08
          相关资源
          最近更新 更多