2009-11-19 119 views
1

我想阻止用户篡改我iPhone应用中生成的数据,例如高分。所以我正在考虑使用相关数据的MD5散列,并将安全盐硬编码到应用程序中。当数据读回时,我创建一个新的散列并将其与旧散列进行比较。如果有差异,我知道有人正在摆弄这些数据。iPhone应用程序中的安全漏洞有多安全?

我猜测总有一种方法让人们绕过它,但这种方法是否会成功;

  • 非常困难。
  • 整蛊。
  • 完全没有区别。
+0

为了真正评估这些旧信息,需要了解更多信息,它存储在哪里以及它的安全性如何。 – zaph 2009-11-19 12:05:50

回答

2

我会说棘手,但不是很困难。使用调试器并观察salt被加载到内存中仍然非常简单,但它绝对足以阻止绝大多数用户。

不幸的是,这是一个典型的DRM问题,对于充分动机的攻击者没有解决方案。你最好的选择是尽可能地创造更多的障碍,这样不值得有人时间。

也许提交的高分也可能包含游戏状态的一些细节,这将允许您检查可能给用户带来不一致的不一致。例如,如果你看到一个用户达到了1,000,000点,但只达到了2级,那么你知道一些事情了!

快速获胜至少会打败运行strings的用户对付你的二进制文件,以确保盐串看起来不明显;不要使用“盐碱”!

+1

MD5的长度很短,真的不应该用在新设计中,应该使用SHA-1或一个或更新的表兄弟,例如SHA-256。 – zaph 2009-11-19 11:47:27

+0

在这种情况下,问题不是碰撞,而是盐本身的隐藏。 用户使用调试器提取盐比计算冲突要容易得多(或试图通过蛮力提取盐),因此这不是一个可行的攻击矢量。 – jnic 2009-11-19 12:00:16

+0

SHA-1没有盐,没有一个是需要的,所以没有黑客发现盐的问题。盐与MD5一起使用,因为结果很短。 – zaph 2009-11-19 12:24:02