了解 HTTPS(二) —— 通信加密

  近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这种方式得以保持加密方法的安全性。
  加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。如果密钥被攻击者获得,那加密也就失去了意义

共享密钥加密技术

加密和解密同用一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密

这里写图片描述

  此种加密技术简单说发送数据的同时,将自己的加密的密码发送给对方,然后对方用我发送过去的密钥进行解密,然而在互联网上转发密钥,如果通信被监听那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。

用一个生活场景来举个例子:

  小智想要快递一份加密盒子发给小霞,小智把盒子上锁,然后把盒子和钥匙一起快递给小霞,那么小红接到快递后,就可以用一起发来的钥匙打开锁上的盒子。
  然而,任何人只要有钥匙都能打开盒子,并且快递物流会经过很多的转发站,其中如果有人想要打开盒子,只要截下这个快递就可以了。

  公开密钥加密 方式很好地解决了 共享密钥加密 的困难,下面我来介绍一下这种加密方式。

公开密钥加密

  公开密钥加密使用一对非对称的密钥。一把叫做 私有密钥,另一把叫做 公开密钥。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得

流程:
  发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

这里继续用寄快递这个例子,不过要加一些设定:
1. 每个人有两把钥匙,一把上锁,一把用来开锁;
2. 每个人都可以获取别人的上锁钥匙(互联网使这个过程变得容易);
3. 自己的开锁钥匙只能开自己用上锁钥匙锁上的箱子。

  小智想要快递一份加密盒子发给小霞,在发快递前小智用小霞的上锁钥匙将盒子上锁,那么小红在收到快递后,就可以用自己的解锁钥匙打开箱子。

这里写图片描述

  另外,要想根据密文和公开密钥,恢复到信息原文是异常困难的,因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。退一步讲,如果能对一个非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术来看是不太现实的。
  所以说,公开密钥加密的方式是一种相对安全的加密手段(不依赖线路本身),此外,公开密钥加密与共享密钥加密相比,其对大容量信息加密速度慢。
  所以应充分利用两者各自的优势,将多种方法组合起来用于通信,这就是 HTTPS 采用的加密机制。

混合加密机制

HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。我们先来总结下上面两种加密方式的优缺点,再想想怎么两者并用吧。

  • 共享密钥加密
    • 优点:传输速度快
    • 缺点:只要拿到密钥,任何人都可以破解密码
  • 公开密钥加密
    • 优点:传输相对安全(不依赖线路本身)
    • 缺点:对大容量信息加密速度慢

来来来,想出来了没有,揭晓答案了。简单说,因为共享密钥加密方式怕密钥被窃取,那么使用公开密钥加密方式交换密钥;因为公开密钥加密方式加密速度慢,那么仅用来加密密钥,然后使用共享密钥加密方式进行通信

这里写图片描述

  不过 公开密钥加密 仍有问题。那就是无法证明公开密钥本身就是真正的公开密钥。因为在传输过程中,纵使是通过 公开密钥加密 加密过的信息,对于攻击者直接将信息进行替换也束手无策。

  为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书,这是下一篇要介绍的内容。