移动端网络安全-密钥交换的前世今生(4)-番外篇

前言:上一篇提到了https依旧会有受到中间人攻击的风险,这一篇就来讲一下中间人攻击和相关的应对方法:ssl-pinning

中间人攻击

中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,常见的方式如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击等。这里就部展开细讲,主要讲一下在https环境下,如何实现中间人攻击。

记得上一篇有提到,一般的CA证书有包含了证书拥有者身份信息,那中间人是如何“冒充”的呢?

  1. 大量的应用在证书检验方面做的都不够,很多只是简单判断证书是不是权威CA机构颁发,证书是否过期等等。
  2. 一些第三方的系统(Android中风行一时的三方ROM),会在系统中内置一些伪造的受信任证书。

这些因素就给图谋不轨者有机可乘

借用网络上的一张图片来说明下:

简单来说,中间人在获得用户的请求后,把自己伪装成用户想要通讯的服务期,将自己的证书发送给用户,同时,向真正的服务器提交访问请求。用户在收到了中间人的证书后,由于之前提到的一些原因,并没有验证出现在通讯的对象并非真正想要通讯的服务器,并完成了和中间人的握手后开始正常的通讯。而中间人在获得了用户的信任之后,也已经完成和真正的服务期的握手(将自己伪装成一个普通用户)。这时,中间人对于两头的通讯都是透明的,它将用户的通讯数据用自己的私钥解密,获取内容后,再用从服务器获取的公钥加密,发送给服务器后,并获取服务器返回的数据。这期间,用户和服务器的数据都能正常交换,并不会感知到任何问题,但其实中间人已经获取了全部信息的内容。

ssl-pinning

ssl-pinning的原理其实很简单,既然证书可能被伪造,那就干脆将服务端证书一块打包到客户端里。这样在https建立时与服务端返回的证书比对一致性(对公钥进行指纹算法),进而识别出中间人攻击。

不过这个方案有一个需要注意的地方,就是证书的过期时间。因为证书和客户端一起打包的关系,证书一旦过期,服务端重新申请证书后,客户端在验证证书有效性时就会出现问题。这个问题的解决方案是客户端不验证证书有效期,并且服务器在续期证书时,选择不更换公钥(这样公钥的指纹就不会变化)。

写在最后

关于移动端密钥交换的内容差不多就写到这里,本人也是在不断的学习和探索中,也希望大家能多沟通和交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值