基于客户端 - 服务器的iPhone应用程序中的通信安

时间:2012-04-08 01:20:15

标签: iphone objective-c ios cocoa-touch encryption

我希望确保我的iPhone客户端与我之间的通信安全。服务器。为了实现这一点,我希望我的服务器只响应授权客户端。因此,即使有人攻击通信渠道,他也不应该创建一个请求,使他能够从服务器获得适当的响应。

我的问题是,是否存在JAVA和JAVA之间共享的散列/加密 - 解密算法。目标C在某种意义上说,如果我使用私钥来加密目标C中iPhone客户端上的某些安全数据,使用某种算法,它可以在我的服务器上进行适当的解密,这是基于JAVA的&反之亦然。

任何合适的代码示例都会非常有用。

2 个答案:

答案 0 :(得分:2)

确保iOS中通信机密性的最简单(实际上也是最安全)方法是使用HTTPS与后端通信。 NSURLConnection直接支持这一点。开发自己的安全协议是众所周知的软件开发反模式(即,不应该采用的设计模式)。

从您的问题不清楚“授权客户”是指应用程序(即只有“官方”客户端应用程序可以与后端通信)或用户。通过NSURLConnection中的身份验证支持,后者肯定能得到更好的支持。基本上,用户提供他的用户名和密码,并且在每个请求时将该信息发送到后端。用户的凭据可以缓存在Keychain中。

可以通过HTTP客户端证书对客户端应用程序进行身份验证,但以安全的方式实施可能会非常棘手。

答案 1 :(得分:1)

验证客户端的低风险方式是使用共享密钥。客户端使用MD5或SHA1哈希标记它的秘密请求(两者的库可以在Java或Objective C中使用)。服务器通过以相同方式对请求进行签名,然后将签名与客户端传递的签名进行比较,来确认客户端的真实性。如果匹配,则服务器信任该请求。