https建立连接加解密原理

https建立连接加解密原理

本文目录

    • https建立连接加解密原理
      • 加密并建立连接过程
      • CA的作用
        • 服务器获取数字证书过程
        • 客户端认证证书过程
        • 如何防止中间人攻击
      • 解决问题的方法

加密并建立连接过程

https建立连接加解密原理_第1张图片

1.客户端发起HTTPS请求

  • 用户在浏览器里输入一个https网址,然后连接到server的443端口,客户端会把安全协议版本号、客户端支持的加密算法列表、随机数C发给服务端。

2.服务端配置数字证书,发送给客户端

  • 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面
  • 服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人
  • 把数字证书、选定的加密算法和随机数S发送给客户端

3.客户端验证证书的合法性

  • 由客户端的SSL/TLS来完成,如果发现异常,则会弹出一个警示框,提示证书存在的问题,HTTPS传输就无法继续

4.客户端生成随机数,并使用公钥加密

  • 如果证书没有问题,那么客户端会用服务器公钥来生成一个预主秘钥(Pre-Master Secret,PMS),并通过该预主秘钥和随机数C、S来组装成会话秘钥

5.客户端将此加密过的预主秘钥发送给服务端

  • 目的就是让服务端得到这个随机值(预主秘钥),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了

6.服务端解密信息

  • 服务端用私钥解密后,得到了客户端传过来的随机数,服务端通过预主秘钥和随机数C、S生成最终的会话秘钥
  • 至此,服务端和客户端都已经知道了用于此次会话的主秘钥
  • 然后把明文内容通过该值进行对称加密

7.服务端传输加密后的信息

  • 这部分信息是服务端用密钥加密后的信息,可以在客户端被还原

8.客户端解密信息

  • 客户端通过对称加密和密钥解密密文,获取明文信息

总结

  • 会话秘钥 = server random + client random + per master
  • 采用 非对称加密 + 对称加密 的方式
  • HTTPS连接建立过程使用非对称加密,而非对称加密是很耗时的一种加密方式,后续通信过程使用对称加密,减少耗时所带来的性能损耗
  • 对称加密加密的是实际的数据,非对称加密加密的是对称加密所需要的客户端的密钥。

CA的作用

https建立连接加解密原理_第2张图片

为了确保客户端能够确认公钥就是想要访问的网站的公钥,需要找到一种策略来证明这把公钥就是唯一标识服务器的公钥,解决方式就是使用数字证书。

有一些专门的权威机构用来颁发数字证书,我们称这些机构为认证中心(CA Certificate Authority)。服务器可以向这些CA来申请数字证书。

服务器获取数字证书过程

  1. 服务器本地先生成一对密匙,然后拿着自己的公匙以及其他信息(比如企业名称)去CA申请数字证书。
  2. CA在拿到这些信息T后,会选择一种单向Hash算法(比如说常见的MD5)对这些信息进行加密,加密之后的东西称之为摘要。单向Hash算法有一种特点就是单向不可逆的,这样就防止了信息被篡改。
  3. 生成摘要后,CA还会用自己的私匙对摘要进行加密,摘要加密后的数据称之为数字签名S
  4. 然后,CA将会把服务器的申请信息(包含服务器的公钥)和数字签名S整合在一起,由此而生成数字证书
  5. 最后,CA将数字证书通过https传递给服务器。

客户端认证证书过程

  1. 客户端收到服务器的数字证书,包含明文T签名S,用CA的公钥解密数字证书S,得到S’,如果解密成功则说明证书来源于合法的认证机构。
  2. 客户端按照和CA一样的Hash算法将明文T进行hash生成摘要得到T’,并和通过CA公钥解密出来的摘要做对比(S’和T’),如果相同则说明内容完整,没有被篡改。
  3. 最后,客户端安全的从证书中拿到服务器的公匙就可以和服务器进行安全的非对称加密通信了;服务器想获得客户端的公匙也可以通过相同方式。
https建立连接加解密原理_第3张图片

如何防止中间人攻击

  1. 其他的中间人如果进行伪造并篡改签名,因为证书是使用权威机构的私钥生成的,浏览器使用权威机构的公钥解密后和信息不匹配,从而不会信任该服务器。
  2. 如果第三方同样获取到了权威机构颁发的证书和签名,他可能进行重放攻击,但是解密后的信息和证书的信息也不会匹配。
  3. hash的作用是为了保证证书信息的完整性。在上面在签名之前有一个hash的操作,看上去不进行hash同样可以实现。这里的hash与加密的开销有很大关系,因为非对称加密是很耗时的,对hash后的数据进行加密会大大减少加密开销。
  4. 权威机构的公钥也可以通过其父权威机构来证明它的可信性,CA根证书和CA根公钥内置在浏览器,CA根证书内置在客户端的操作系统。

解决问题的方法

解决内容被窃听—加密

  • 对称加密+非对称加密

解决报文被篡改—数字签名

  • 验证发送者身份
  • 确定消息完整性

解决通信方身份认证—数字证书

  • 数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。

你可能感兴趣的:(前端,https,ssl,网络)