https

2020-06-18  本文已影响0人  达文西_Huong

2.2 https建立流程(https = http + SSL;TLS就是握手协议)

Https的作用:在传输过程中通过加密来保护数据安全,避免用户敏感信息被第三方获取后破解

https 采用了对称加密非对称加密。握手过程中采用非对称加密得到一个对称假面的密钥。在之后的数据传输中,使用对称加密。

原因:

对称加密速度快,浏览器的开销小
非对称加密开销大,速度慢,但是安全,所以在握手的时候为了保证非对称加密的密钥安全,所以使用它来生成密钥

工作流程如下(图片是copy下来的):

image

握手 : 在开始加密通信之前,客户端和服务端首先必须建立连接和交换参数

  1. 首先客户端会发送一个请求,里面包含 客户端生成的随机数,以及客户端支持的加密算法(都是对称加密算法)
  2. 服务端收到请求之后,从中选出一组加密算法和HASH算法,并将自己的数字证书,以及一个自己生成的随机数发送给客户端
  3. 客户端收到后,先验证证书是否有效(会一直验证到最顶层的根证书),如果有效就生成一个随机数,然后用证书中包含的公钥加密这个随机数生成密文,并且用服务端刚刚挑选的HASH算法对这个随机数进行加密,生成的hash值称为校验值One一起发给服务端
  4. 服务端收到后,用自己的私钥解密出随机数,然后用hash算法对这个随机数进行加密,得到校验值Two。然后判断校验值1 == 校验值2,如果相同,则说明内容未被篡改,可以信任。最后用随机数,加上第二步中选出的加密算法,加密一段握手消息,发还给客户端。同时包含Hash值
  5. 客户端收到服务端消息之后,首先检验是否为握手消息,然后用HASH算法解密,再判断两个校验值是否一致。
  6. 握手结束之后。客户端和服务端就会使用在握手阶段产生的随机数(3个)和挑选出来的算法进行对称加解密传输
总结: 就是一共三个随机数。根据这三个随机数创建了一个对称加密的密钥,之后的数据传输均使用这个生成的密钥。

小答疑:

那是为了保证生成的密钥不会每次都一样。因为SSL协议中证书是静态的。因此引入随机数是为了保证生成的密钥具有随机性。

这样做是为了让随机数更随机。避免生成的随机数是一个伪随机数。因为一旦随机数不够随机,就有可能会被猜出来这样就会很不安全。要知道一个伪随机数可能是伪随机数,但是三个或者多个伪随机数,那么它其实已经很接近真随机数了。所以用了三个随机数一起组合生成密钥.

上一篇 下一篇

猜你喜欢

热点阅读