为了账号安全,请及时绑定邮箱和手机立即绑定

好像用经典的ASIHttprequest似乎也不支持https?

好像用经典的ASIHttprequest似乎也不支持https?

iOS
Helenr 2023-04-18 19:19:28
最近在思考安全性的问题。情景是:服务器和客户端之间的数据通讯(更确切的是,主要是服务器给客户端传递数据)。如果使用https的话,不可避免的是每次链接都会有更多的握手步骤,带来的时间开销,会大大的降低移动端的用户体验吧。而且,用经典的ASIHttprequest似乎也不支持https╮(╯_╰)╭。不知道大侠们有些什么更好的建议?
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

  1. 服务器端与客户端先共同约定好一个密钥K,客户端可通过SFHKeychainUtils等工具加密存储K;

  2. 服务器端加密时,可获取当前unix时间戳,假设为T,则加密过程中可使用K-md5(T)-K(或任意其他规则,只要将T混淆到密钥中即可)为密钥,进行加密,并将加密时的时间戳T或md5(T)传给客户端;

  3. 客户端根据相应的规则拼接好密钥后,进行解密。

这样做的好处是,即使密钥K或任意一次会话过程中的密钥被破解,仍然无法完全对所有会话进行解密,必须同时知道K、密钥拼接规则以及加密方法才可完全破解。


查看完整回答
反对 回复 2023-04-21
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

连接流程:

1. 客户端生成一个随机的密钥K(当然K需要足够强),将它用公钥加密,然后发送给服务器
2. 服务器用私钥解密得到K
3. 二者直接使用AES(密钥为K)加密通信。

优点:安全(除非入侵服务器拿到私钥、或者破解久经考验的RSA/AES算法)、快速(只有第一次来回需要RSA解密稍慢)。
缺点:需要一次握手(但可以解决:握手的来回,实际上可以用密钥K来进行加密额外发送数据)。


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信