1

我想保护我的 iPhone 客户端和服务器之间的通信。作为第一步,我希望我的服务器只响应授权的客户端。因此,即使有人入侵了通信通道,他也不应该能够创建一个请求,从而使他能够从服务器获得正确的响应。

我的问题是,从某种意义上说,如果我使用私钥在目标 C 中使用某种算法加密 iPhone 客户端上的某些安全数据,那么在某种意义上,是否有任何哈希/加密解密算法在 JAVA 和目标 C 之间共享,它可能是适当的在我的基于 JAVA 的服务器上解密,反之亦然。

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

4

2 回答 2

2

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

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

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

于 2012-04-08T03:51:14.547 回答
1

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

于 2012-04-08T04:14:00.343 回答