摘要
HTTPS 4 次握手和中间人攻击。
HTTPS 选择的是对称加密 + 非对称加密的方式。
对称加密与非对称加密
先了解下这两者区别。
对称加密指的是加解密使用同样的密钥。
非对称加密则相反,加解密必须使用不同的密钥。常说的公钥与私钥是一对,一方加密之后,只有对方才能解密。
需要注意的是,非对称比对称计算量大,比较耗时。
HTTPS 为什么选择使用对称加密 + 非对称加密的方式?
首先,HTTPS 要解决的问题是,如何保证信息安全?
其实,相比 HTTP 的明文传输,使用对称加密就可以加密信息。
可密钥一旦被截获,就无济于事了。
那使用非对称加密呢?即使公钥被截获也无关紧要。
这样每次数据传输,都使用非对称加密的话,代价大了些。
所以,才有了折衷的方案:非对称加密 + 对称加密。
大致是,先使用非对称加密传输 KEY,然后再采用对称加密的方案:使用 KEY 加密信息。
一般来说,公钥与私钥是服务端生成的,客户端只生成密钥 KEY。
流程大概如下:
其中 2 3 步是非对称加密的,它都是为了保证 KEY 的安全,第 4 步之后才是对称加密。
什么是中间人攻击
有了上面的方案后,HTTPS 也不是绝对安全的,还会有「中间人攻击」。
那什么是「中间人攻击」呢?
维基百科上的描述:
中间人攻击(英语:Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
个人理解:
- 中间人截获了服务端发过来的公钥,将把自己创建的假公钥发给客户端。
- 客户端会用假公钥传输密钥 KEY,中间人就可以拦截拿到密钥。
- 之后中间人就可以解析、篡改通信的内容,再做转发。
体现在流程上就是:
至于如何防止中间人攻击呢?
维基百科上的建议:
大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL 协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信任的数字证书认证机构颁发,并且能执行双向身份认证。
其实就是验证通信双方的身份。
HTTPS 4 次握手
借助权威的证书机构做校验,来保证通信双方的真实性,可防止中间人攻击。
握手流程如下:
小结
HTTPS 选择的是对称加密 + 非对称加密的方式。
4 次握手中,前 3 次其实是为将密钥安全地送达对方,这都是为了能加密信息后传输。
为防止「中间人攻击」,借助权威的证书机构做校验,来保证通信双方的真实性。