HTTPS协议加密过程

Posted 3 ERROR(s)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS协议加密过程相关的知识,希望对你有一定的参考价值。

文章目录

一、HTTP和HTTPS的区别

  • https协议需要到CA申请证书,一般免费整数较少,因而需要一定费用。

  • http是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL/TLS加密传输协议。

  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  • http的连接很简单,是无状态的;https协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

二、对称加密

  • 浏览器发送给服务端 client_random 和一系列加密方法

  • 服务端发送给浏览器 server_random和加密方法

  • 现有浏览器和服务器有了三个相同的凭证:client_random、server_random和加密方法 用加密方法把 client_random、server_random 两个随机数混合起来,生成秘钥,这个密钥就是浏览器和服务端通信的暗号。

存在的问题:第三方可以在中间获取到client_random、server_random和加密方法,由于这个加密方法同时可以解密,所以中间人可以成功对暗号进行解密,拿到数据,很容易就将这种加密方式破解了。

三、非对称加密

  • 浏览器发送给服务端 一系列加密方法

  • 服务端发送给浏览器 加密方法以及公钥

  • 之后浏览器通过公钥将数据加密传输给服务端,服务端收到数据使用私钥进行解密。服务端给浏览器发送数据,则使用私钥进行加密,浏览器收到服务端发送过来的数据,使用公钥进行解密。

存在的问题

  • 非对称加密效率太低, 这会严重影响加解密的速度,进而影响到用户打开页面的速度。

  • 无法保证服务器发送给浏览器的数据安全, 服务器的数据只能用私钥进行加密(因为如果它用公钥那么浏览器也没法解密啦),中间人一旦拿到公钥,那么就可以对服务端传来的数据进行解密了,就这样又被破解了。

HTTPS使用对称加密和非对称加密结合
传输数据阶段依然使用对称加密,但是对称加密的秘钥我们采用非对称加密传输。

四、HTTPS加密

  • 浏览器向服务器发送client_random和加密方法列表。

  • 服务器接收到,返回server_random、加密方法以及公钥。

  • 浏览器接收,接着生成另一个随机数pre_master, 并且用公钥加密,传给服务器。(重点操作!)

  • 服务器用私钥解密这个被加密后的pre_master。

  • 到此为止,服务器和浏览器就有了相同的 client_random、server_random 和 pre_master, 然后服务器和浏览器会使用这三组随机数生成对称秘钥。有了对称秘钥之后,双方就可以使用对称加密的方式来传输数据了。

CA 签发证书的过程:

  1. ⾸先 CA 会把持有者的公钥、⽤途、颁发者、有效时间等信息打成⼀个包,然后对这些信息进⾏ Hash 计算, 得到⼀个 Hash 值;
  2. 然后 CA 会使⽤⾃⼰的私钥将该 Hash 值加密,⽣成 Certificate Signature,也就是 CA 对证书做了签名;
  3. 最后将 Certificate Signature 添加在⽂件证书上,形成数字证书;
    客户端校验服务端的数字证书的过程,如上图右边部分:

客户端校验服务端的数字证书的过程

  1. ⾸先客户端会使⽤同样的 Hash 算法获取该证书的 Hash 值 H1;
  2. 通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到证书后可以使⽤ CA 的公钥解密 Certificate Signature 内容,得到⼀个 Hash 值 H2 ;
  3. 最后⽐较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。

以上是关于HTTPS协议加密过程的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS加密(握手)过程

HTTPS 加密算法过程

HTTPS 加密算法过程

HTTP协议和HTTPS协议

HTTPS加密原理与过程

Https安全协议