2.2 https建立流程(https = http + SSL;TLS就是握手协议)
Https的作用:在传输过程中通过加密来保护数据安全,避免用户敏感信息被第三方获取后破解
https 采用了对称加密
和非对称加密
。握手过程中采用非对称加密得到一个对称假面的密钥。在之后的数据传输中,使用对称加密。
原因:
对称加密速度快,浏览器的开销小
非对称加密开销大,速度慢,但是安全,所以在握手的时候为了保证非对称加密的密钥安全,所以使用它来生成密钥
工作流程如下(图片是copy下来的):

握手 : 在开始加密通信之前,客户端和服务端首先必须建立连接和交换参数
- 首先客户端会发送一个请求,里面包含 客户端生成的随机数,以及客户端支持的加密算法(都是对称加密算法)
- 服务端收到请求之后,从中选出一组加密算法和HASH算法,并将自己的数字证书,以及一个自己生成的随机数发送给客户端
- 客户端收到后,先验证证书是否有效(会一直验证到最顶层的根证书),如果有效就生成一个随机数,然后用证书中包含的公钥加密这个随机数生成密文,并且用服务端刚刚挑选的HASH算法对这个随机数进行加密,生成的hash值称为
校验值One
一起发给服务端- 服务端收到后,用自己的私钥解密出随机数,然后用hash算法对这个随机数进行加密,得到
校验值Two
。然后判断校验值1 == 校验值2
,如果相同,则说明内容未被篡改,可以信任。最后用随机数,加上第二步中选出的加密算法,加密一段握手消息,发还给客户端。同时包含Hash值- 客户端收到服务端消息之后,首先检验是否为握手消息,然后用HASH算法解密,再判断两个校验值是否一致。
- 握手结束之后。客户端和服务端就会使用在握手阶段产生的随机数(3个)和挑选出来的算法进行对称加解密传输
总结: 就是一共三个随机数。根据这三个随机数创建了一个对称加密的密钥,之后的数据传输均使用这个生成的密钥。
小答疑:
- 对于第一第二步中的交换随机数。
那是为了保证生成的密钥不会每次都一样。因为SSL协议中证书是静态的。因此引入随机数是为了保证生成的密钥具有随机性。
- 为啥要使用三个随机数一起生成密钥?
这样做是为了让随机数更随机。避免生成的随机数是一个伪随机数。因为一旦随机数不够随机,就有可能会被猜出来这样就会很不安全。要知道一个伪随机数可能是伪随机数,但是三个或者多个伪随机数,那么它其实已经很接近真随机数了。所以用了三个随机数一起组合生成密钥.
网友评论