Xcode ios,校验和你在运行时二进制

时间:2013-03-22 10:01:12

标签: ios xcode binary checksum

我正在尝试为我的应用添加一点安全性。我有一个应用程序连接的服务器,我正在考虑在建立连接时发送二进制的校验和。如果校验和与我想要的不匹配。服务器不会提供任何连接。

我已经阅读了几篇关于如何提高应用程序安全性的文章,很多提到检查你的二进制文件但没有找到任何代码解释你在运行时如何实际校验你的二进制文件。

这个例如 http://www.seoxys.com/3-easy-tips-to-prevent-a-binary-crack/#ptrace

除此之外,根据我的理解,由于Apple在提交时会签名,因此无法事先知道确切的校验和吗?但是,我可以在提交新版本时禁用我的服务器上的检查,然后在我知道校验和时重新启用检查。不是一个完美的解决方案,但解决方案是什么?

任何可以指引我正确方向的人?

1 个答案:

答案 0 :(得分:0)

简而言之,这是一件非常困难的事情。原因是,一旦离开您的手,您就无法控制客户端代码。即使您使所有内容与校验和完美配合,攻击者仍然可以对二进制文件进行校验和,修改它,然后通过修改该代码使其提交先前的校验和而不是新的校验和。事实上,你可以通过使用像_getBinaryChecksum()这样的函数让他/她变得容易,他可以改变: - )

如果要执行此操作,请使用加密强哈希算法,例如SHA-256。你是对的,Apple签署它会改变哈希值,所以你需要在 Apple签名之后用文件的哈希对服务器进行编程。另外请注意,对应用程序的任何更改都会对哈希值产生很大影响,因此您需要保留以前哈希值的历史列表,这样您就不会拒绝尚未升级的客户。

您可能想查看这些StackOverflow问题,因为它听起来像是在尝试做类似的事情:

Security When Using REST API in an iPhone Application

https://stackoverflow.com/questions/15390354/api-key-alternative/15390892#15390892