Mr. Panda
Tech For Fun

[网络] HTTP 协议和 HTTPS 协议的区别详解

本文讲解 HTTP 协议和 HTTPS 协议的关系和区别,内容包括 HTTP 和 HTTPS 的比较、HTTP 存在的问题、HTTPS=HTTP+加密+证书+完整性保护、对称加密、非对称加密、混合加密、证书、完整性保护、HTTPS 的优点和缺点等。

HTTPS VS HTTP

HTTP 使用明文,没有加密机制,也没有确认机制,很容易受到中间人攻击。

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将被入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。

HTTP协议和HTTPS协议的区别详解


HTTP 没有验证通信对象身份,可能会有人假扮客户端进行通信。

HTTP协议和HTTPS协议的区别详解


HTTP 无法验证报文完整性,中途可能被人篡改。

HTTP协议和HTTPS协议的区别详解
HTTP协议和HTTPS协议的区别详解

HTTP 的主要缺点如下:

  • 通信使用明文,可能会被窃听;
  • 不验证通信方的身份,可能遭遇伪装;
  • 无法验证报文完整性,可能遭到篡改;

HTTPS并不是一个新的协议,而是身披SSL外壳的HTTP,通过引入加密,证书,完整性保护来保证安全。

HTTPS=HTTP+加密+证书+完整性保护

加密

对称加密

对称加密也叫共享密钥加密,其实就是加密和解密采用了同一密钥。

双方通信时,发送方利用密钥进行加密,再将密钥一同发送给接收方,让其使用这个密钥进行解密。

这种方法也存在问题,如果在发送的时候被拦截,密钥就会泄露给中间人,此时中间人就可以通过密钥来对之后的数据进行解密。

HTTP协议和HTTPS协议的区别详解

非对称加密

非对称加密又叫公开密钥加密,使用一对非对称密钥,一把私钥,一把公钥。共钥是公开的,任何人都可以获得,而私钥则不能让任何人知道。

当进行通信时,发送方使用对方的公钥进行加密,而接收方则使用私钥进行解密,用于解密的私钥掌握在接收者手里,中间人无法从中窃取密钥。

HTTP协议和HTTPS协议的区别详解

混合加密

由于非对称加密的处理比对称加密复杂,如果在通信时一直使用非对称加密,会导致通信的效率降低,所以HTTPS采用对称加密和非对称加密并用的混合加密。

  1. 使用非对称加密交换用来进行加密解密的对称加密密钥。
    (对称加密的主要问题是无法确保密钥安全,此时采用非对称加密传输密钥,能规避这个问题)
  2. 使用对称加密密钥通信。
    (非对称加密最大问题在于其复杂的处理机制导致效率降低,所以在安全的情况下使用对称加密可以提高效率)
HTTP协议和HTTPS协议的区别详解

证书

虽然数据得到了加密,也不够安全,我们还需考虑HTTP的第二个缺点——没有验证对象。

中间人可以在双方第一次通信时截获公钥,此时他可以冒充发送者,将自己生成的公钥发送给被中间人截获接受者。接受者使用中间人的公钥加密,将对称加密的密钥发送了过去。此时中间人就可通过自己的私钥解密,就获取了对称加密的密钥。

通过这种手法,中间人就能截取双方的通信内容。

为解决这个问题,HTTPS引入了数字证书。

HTTP协议和HTTPS协议的区别详解


服务器的运营人员会向数字证书认证机构来进行认证,在机构对其验明身份之后,就会对服务器的公钥做一个数字签名,并且将公钥放入公钥证书后绑定在一起。

此时当客户端接收到服务器发送的公钥证书的时候,就会向证书认证机构来验证数字签名是否正确,来判断该公钥是否遭到替换,确保了公钥的真实性。

此时即使中间人想仿造公钥证书,但也因为无法通过机构的验证而被识破。此时,中间人就没有使坏的空间了。

HTTP协议和HTTPS协议的区别详解


这就是HTTPS使用加密以及证书来确保安全的整个流程。

完整性保护

HTTP协议和HTTPS协议的区别详解
HTTP协议和HTTPS协议的区别详解


在上面的流程中,应用层发送数据的时候会附加MAC报文摘要,MAC能够查知报文是否遭受到篡改,从而让保护报文的完整性。

SSL是把双刃剑

HTTPS 也叫披着 SSL 外壳的 HTTP,在通信接口部分使用了 SSL 和 TLS 来进行代替。

HTTPS 为了保证安全,使用了 SSL 来提供保障,通信时首先与 SSL 进行通信,再由 SSL 来与TCP 进行通信,正是因为由 SSL 的存在,才使得 HTTP 具备了 HTTPS 的加密、证书、安全性保障功能。

HTTP协议和HTTPS协议的区别详解


SSL主要慢在两个方面:

  1. 和 HTTP 相比,网络负载可能变慢 2 到 100 倍。由于 HTTPS 还需要额外进行 SSL 通信,处理通信量增加了。
  2. SSL 为了确保安全,在客户端和服务端都需进行大量的加密和解密的运算处理,导致其比起HTTP会更多消耗服务器和客户端的硬件资源,导致负载增强。

HTTPS的遗憾之处

  1. SSL 的高度安全带来的低效率以及高负载使得 HTTPS 并不会一直使用。对于高访问量的Web网站来说,进行大量的加密解密负载庞大,并且非敏感信息(可公开信息)也没有加密必要,所以大多数网站并不会一直使用HTTPS,而是只在进行私密内容传输的时候才会使用,来确保资源的节约。
  2. 数字证书的高昂成本使得个人网站及非盈利网站望而却步。要进行HTTPS通信,数字证书是必不可少的,但是对于一些非盈利的网站以及个人网站,每年用来购买数字证书带来的花销并不是一个小数目,所以大多还是继续使用HTTP。
jonsam ng

jonsam ng

文章作者

海阔凭鱼跃,天高任鸟飞。

[网络] HTTP 协议和 HTTPS 协议的区别详解
本文讲解 HTTP 协议和 HTTPS 协议的关系和区别,内容包括 HTTP 和 HTTPS 的比较、HTTP 存在的问题、HTTPS=HTTP+加密+证书+完整性保护、对称加密、非对称加密、混合加密、证书、完整性保护…
扫描二维码继续阅读
2021-05-15