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

Xcode ios,运行时校验和二进制,ios,xcode,binary,checksum,Ios,Xcode,Binary,Checksum,我正在尝试为我的应用程序增加一点安全性。我有一个应用程序连接到的服务器,我想在建立连接时发送一个二进制校验和。如果校验和与我想要的不匹配。服务器不允许任何连接 我读过几篇关于如何提高应用程序安全性的文章,许多文章提到检查二进制文件,但没有找到任何代码解释如何在运行时对二进制文件进行校验和 比如这个 除此之外,据我所知,由于苹果公司将在提交时签字,因此无法事先知道准确的校验和?但是,我可以在提交新版本时禁用服务器上的检查,然后在知道校验和时重新启用检查。不是一个完美的解决方案,但什么是解决方案

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

我读过几篇关于如何提高应用程序安全性的文章,许多文章提到检查二进制文件,但没有找到任何代码解释如何在运行时对二进制文件进行校验和

比如这个

除此之外,据我所知,由于苹果公司将在提交时签字,因此无法事先知道准确的校验和?但是,我可以在提交新版本时禁用服务器上的检查,然后在知道校验和时重新启用检查。不是一个完美的解决方案,但什么是解决方案


有谁能给我指出正确的方向吗?

简而言之,这是一件非常困难的事情。原因是,一旦客户机代码离开您的手中,您就无法控制它。即使您使用校验和使所有内容都能正常工作,攻击者仍然可以获取二进制文件的校验和,对其进行修改,然后通过修改该代码使其提交以前的校验和而不是新的校验和。事实上,您可能会通过使用像_getBinaryChecksum()这样的函数来简化他/她,他可以更改:-)

如果要执行此操作,请使用加密强哈希算法,如。你是对的,苹果签署它会改变散列,所以你需要在苹果签署后用文件的散列对服务器进行编程。还要记住,对应用程序的任何更改都会极大地影响哈希值,因此您需要保留以前哈希值的历史列表,这样您就不会将尚未升级的客户拒之门外

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


简而言之,这是一件非常困难的事情。原因是,一旦客户机代码离开您的手中,您就无法控制它。即使您使用校验和使所有内容都能正常工作,攻击者仍然可以获取二进制文件的校验和,对其进行修改,然后通过修改该代码使其提交以前的校验和而不是新的校验和。事实上,您可能会通过使用像_getBinaryChecksum()这样的函数来简化他/她,他可以更改:-)

如果要执行此操作,请使用加密强哈希算法,如。你是对的,苹果签署它会改变散列,所以你需要在苹果签署后用文件的散列对服务器进行编程。还要记住,对应用程序的任何更改都会极大地影响哈希值,因此您需要保留以前哈希值的历史列表,这样您就不会将尚未升级的客户拒之门外

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


谢谢你的回答。你给我的一个链接说你可以使用私钥/公钥对。我目前正在使用公钥加密某些消息,并使用服务器上的私钥对其进行解密。但是,这不会验证发送方,因为公钥嵌入到应用程序中,因此任何人都可以使用它。他们说你应该使用私钥,但我看不出有什么不同。密钥仍然必须嵌入到应用程序中,因此它对任何人都可用。我也找到了这个链接,现在将通读它,看看它是否有用。谢谢你的回答。你给我的一个链接说你可以使用私钥/公钥对。我目前正在使用公钥加密某些消息,并使用服务器上的私钥对其进行解密。但是,这不会验证发送方,因为公钥嵌入到应用程序中,因此任何人都可以使用它。他们说你应该使用私钥,但我看不出有什么不同。密钥仍然必须嵌入到应用程序中,因此它对任何人都可用。我也找到了这个链接,现在将通读它,看看它是否有用。你能告诉我,你解决了这个问题吗?你的应用程序正在使用应用程序细化吗?在计算哈希值时你是如何处理的?你能告诉我,你解决了这个问题吗?您的应用程序是否使用应用程序细化,以及在计算哈希时如何处理?