关于HTTPS的理解 https( 二 )


那么这个保险箱是如何工作的呢?这就是我们今天的重点 。
何谓安全我们考虑一下两个人写信的场景,怎样才能做到安全的远程交流呢?

  1. 我不想我们写信的内容被人看懂
  2. 得想个办法保证内容不被人修改
  3. 你得在信里面证明你的身份
  4. 一旦证明了这是你写的,以后你可不许抵赖
如果能够做到这四点,那么我们的信应该是比较安全的,而这四点正好对应了我们信息安全领域中的四个要点,既:
  1. 机密性
  2. 完整性
  3. 身份认证
  4. 不可否认
下面我们就逐一来分析一下HTTPs是如何做到这四点的:
1. 机密性我们知道两台计算机之间要想传输数据,这些数据必然会经过层层路由,这些节点上的每台计算机理论上都能看到我们的数据,所以安全的首要目标就是对我们想要传输的数据进行加密 。根据密码学的知识,摆在我们面前的有两种选择---对称加密和非对称加密 。 对称加密使用一把密钥,加密解密都用它,在双方都知道密钥并且妥善保管的情况下理论上非常安全 。但是对于我们复杂的网络环境,一台服务器需要服务众多的客户,难道要为每个客户都配置一个对称加密的密钥吗?这显然不现实 。
关于HTTPS的理解 https

文章插图


那么非对称加密呢?一把私钥对应一把公钥,私钥加密的内容只有公钥可以解开,公钥加密的内容也只有私钥可以解开,那么我们在服务器上配置一把私钥,再把公钥发给所有客户,是不是就行了呢?
关于HTTPS的理解 https

文章插图


答案是否定的,原因有两点:
  1. 服务器是面向大众客户的,公钥必然会公开,谁都可以获取,那么路由的中间节点一样可以拿着这把公钥解析服务器返回的报文 。
  2. 非对称加密的性能无法适应互联网高并发的环境,所有请求都用非对称加密会导致连接异常缓慢,无法使用 。
基于上述两点,HTTPs做了一个非常聪明的选择,就是混合加密 。现在我们在TCP三次握手的基础上再引入TLS的四次握手,而这次会晤的重要目标就是协商出密钥 。为了便于理解我们先看一个简单的模型:
  1. 客户端通过可靠的渠道获取到服务器的公钥 。
  2. 客户端生成一个随机数作为对称加密的密钥,也就是本次会话的主密钥
    (实际上生成主密钥需要Server-Client都参与,通过相同的算法算出来,但是在老版本的RSA交换密钥中最终的安全性还是客户端保证的,所以这里我们简单认为是客户端生成了一个随机数即可,后面会详细讲到)
  3. 客户端用Server的公钥将主密钥加密传输给Server 。
  4. 后续交换内容均用主密钥进行加密解密 。
    混合加密.png

    秒懂生活扩展阅读