Code前端首页关于Code前端联系我们

HTTPS 比 HTTP 更安全, 20 张图片让您全面了解为什么

terry 2年前 (2023-09-28) 阅读数 53 #Web安全

HTTPS 比 HTTP 更安全:对称加密、非对称加密、完整性哈希、数字证书和 SSL/TLS 握手等。推荐收藏!

1。不安全的HTTP

近年来,越来越多的网站使用HTTPS协议进行数据传输,因为HTTPS可以提供​​比HTTP更安全的服务。

许多浏览器会在使用HTTP协议的网站上添加“警告”信号来表明数据传输不安全,而使用HTTPS协议的网站会添加“锁定”信号以表明数据传输是安全的。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

为什么HTTP协议不安全?主要表现在以下三个方面:

  • 容易被窃听:通过HTTP传输的数据是明文。黑客使用嗅探技术来拦截消息。由于数据未加密,因此黑客可以理解其内容。比如:用户输入密码提款,那​​么黑客截获密码后就可以为所欲为!
  • 容易被操纵了:黑客可以拦截HTTP消息,修改消息,然后将其发送到目的地。例如:如果用户想给家人转账,而黑客将收款人改为自己,用户就会遭受损失!
  • 冒充容易:黑客可以欺骗HTTP消息,冒充用户真正想要访问的网站,然后与用户进行通信。例如:用户想要访问淘宝网站购物,黑客冒充淘宝网站,用户就可以在假冒的淘宝网站上购买东西,造成损失!

HTTPS是如何解决上述安全问题的?主要方式有:

  • 数据加密:HTTPS不再传输纯文本,而是使用加密算法传输♓cittext。即使黑客拦截了消息并且不理解内容!
  • 完整性摘要:HTTPS 通过哈希算法接收消息的摘要。如果黑客篡改了消息内容,重新生成的摘要将会发生变化。核实后,买家就会知道数据不再完整。他已经被操纵了!
  • 数字证书:HTTPS 使用数字证书来验证通信实体的身份。由于黑客没有正确的证书,当他们冒充其他网站时就会被发现!

2。加密算法

加密算法用于解决HTTP传输数据被窃听的问题。

为了防止传输的数据被黑客拦截,客户端和服务器之间的数据必须进行加密和解密

发送方对明文密文♓加密,而接收器使用适当的 解码算法 将文本 解密为明文 。黑客只能看到密文,因此无法获取有用信息。如下图所示: HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

一般来说,加密算法可以分为两类:对称加密❙❙非对称加密。

  • 对称加密:是指使用同一个密钥进行加密和解密,即图中密钥A等于密钥B;
  • 非对称加密:指使用不同的密钥进行加密和解密,即图中的密钥A不等于密钥B。

(1) 对称加密是加密算法,加密和解密的密钥是相同的,称为密钥

凯撒密码是一种相对简单的对称加密算法,可用于加密和解密英文文本。主要思想是将明文中的每个字母根据其在字母表中的位置右移K位得到密文(允许遍历)。

例如,如果我们假设 K = 2,那么在纯文本中,字母“a”将替换为字母“c”,字母“z”将替换为字母“b”。那么K=2就是对称加密算法中的密钥。

HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

这种方法的缺点是加密后每个字母只有唯一的密文。如果黑客收集大量数据并进行统计分析,很可能加密方法就会被破解。

更好的方法是使用多个凯撒加密的K查询进行加密。例如,奇数位置字母使用 K = 2 个密钥加密,偶数位置字母使用 K = 3 个密钥加密。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

但是,凯撒密码只能加密英文文本。如果要加密所有字符,可以使用分组密码

我们知道,计算机中实际存储的数据是0/1位的组合。 块加密的主要思想是将要加密的消息处理成K位组,每个组通过一一对应的映射表进行加密。

例如,假设K = 3,则映射表如下,则消息010110001111将被加密为101000111001。目前,K=3和映射表是对称算法加密的密钥。HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

类似于之前使用多个凯撒密码K作为密钥的方法,增加破解难度,更好的方法是使用多个映射表和查询来加密数据。

计算机网络中常用的对称加密算法有:DES、3DES、AES等,这些都是块加密算法。

(2) 非对称加密

在非对称加密算法中,加密和解密所使用的密钥是不同的,分别称为 公钥和 ❕♓❀ 或特点:

  • 如果用公钥加密,则只能用私钥解密。目前,公钥无法解密。
  • 如果使用私钥加密,则只能使用公钥解密。目前,私钥无法被解密。
  • 公钥是公开的,任何人都可以获得;私钥只有您自己知道,不会泄露。

为什么对称加密之后又出现非对称加密?

原因是,对称加密的前提是:通信双方必须协商一个密钥,协商好密钥后,就传输明文。如果密钥被黑客抓住,即使是下面的消息被加密,黑客也可以用这个密钥解密!

HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

非对称加密的特点之一:公钥加密,只能用私钥解密。在这种情况下,不需要像对称加密那样提前协商密钥。通信双方可以直接将各自的公钥发送给对方。即使黑客知道这个公钥也没有关系。当一方使用该公钥对消息进行加密时,即使黑客拦截了该消息,他们也无法使用该公钥来解密该消息。只能使用私钥。只有对方才能成功解码! HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

计算机网络中常用的非对称加密算法有:RSA、ECDHE等。衬衫。如果对具体算法感兴趣,可以阅读阮一峰的两篇文章:《RSA算法原理(一)》和《RSA算法原理(二)》。

https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html()混合加密

前面提到,对称加密算法需要事先协商密钥,并且协商过程使用明文(因为还没有密钥)。如果黑客掌握了明文密钥,即使后来对其进行了加密,黑客也会这样做。你也可以使用密钥来解密,这样的话就没有安全性了!

非对称加密算法解决了这个问题,但是涉及大量的指数运算,加密速度非常慢!对称加密算法的加密速度非常快,通常是非对称加密算法的100-10000倍!

两者能否结合起来,让数据传输既安全又高效?答案是肯定的! HTTPS采用混合加密方式,同时使用对称加密和非对称加密。

对称加密算法的弱点是协商密钥时使用明文不安全,存在密钥泄露的可能性。那么我们是否可以不使用明文,而使用非对称加密算法来协商然后传输密钥呢?数据使用对称加密算法进行加密。

采用非对称加密算法传输密钥,采用对称加密算法传输实际数据。 此密钥通常称为『会话密钥』

  • 会话密钥通过非对称加密算法传输,非常安全
  • 通过对称加密算法传输大量数据(多次),而会话密钥只需要传输一次,非常高效

HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

3。提取算法

提取算法用于解决操纵HTTP传输数据的问题。哈希算法

也称为散列算法。 的输入是任意数据,输出是固定长度的字符串(称为extract)。主要特点如下:

  • 不可逆,即输入不能通过输出反转。
  • 相同的输入产生相同的输出。
  • 不同的输入很可能会导致不同的输出。
  • 无论输入数据有多长,输出摘要的长度都是固定的。

例如:如果数据比特流按8位分组(缺失的零被填充),那么所有组都按位进行异或,那么生成的结果可以称为Source Summary,这个算法是一个简单的求和算法。HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

如果两个输入数据的哈希算法得到的输出提取一致,那么我们就说发生了哈希冲突。好的哈希算法发生哈希冲突的概率非常低,并且很难从输出中猜测输入内容!

计算机网络中常用的哈希算法:MD5、SHA-1、SHA-256等。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

为了防止传输数据的违规。发送方在发送实际数据时,还使用哈希算法获得数据

的摘要,并将该摘要一起发送。

接收方收到数据后,使用相同的哈希算法再次得到摘要,并与摘要进行比较。如果两者不一致,则说明数据被篡改,否则则不然。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

朋友们,容易可以看出,上述方法有明显的缺陷。如果黑客不仅篡改了数据,还篡改了摘要,那客户岂不是无法判断数据是否被篡改了? HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

为了防止这种情况发生,发送者和接收者必须拥有只有他们自己知道而黑客无法知道的东西,例如对称加密的会话密钥。但是,为了提高安全性,当前使用新密钥,即 身份验证密钥 来代替会话密钥。获取此密钥与获取部分密钥相同。

有了认证密钥,哈希算法的输入就不仅仅是数据的传输,而是数据和认证密钥的传输!由于黑客不知道身份验证密钥,因此他无法再欺骗输入,被篡改的哈希值将不正确,从而保证安全!将数据

HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

与认证密钥结合后,哈希算法生成的提取物有一个特殊的名称,称为消息认证码或简称为

C。

为了进一步提高安全性,客户端和服务器实际上有不同的会话密钥和♻身份验证密钥,也就是说总共有四个密钥:❙ 会话密钥 a 用于从客户端发送到服务器的数据;

  • 从服务器发送到客户端的数据的会话密钥
  • 为认证密钥 为从客户端发送到服务器的数据;
  • 身份验证密钥 用于从服务器发送到客户端的数据。
  • 4。数字证书

    数字证书用于解决HTTP协议中的身份篡改问题。

    如前所述,HTTPS 使用非对称加密算法来传输会话密钥。通常,服务器对外公布公钥,客户端用这个公钥加密会话密钥

    ,然后服务器解密私钥得到会话密钥。目前双方正在洽谈中。用于传输数据的对称加密的密钥。

    但是如果服务器的公钥被黑客伪造了怎么办?例如,经典的“中间人攻击”问题:

    1. 客户端发送的请求被中介(黑客)劫持(例如通过DNS劫持),所有请求都发送给中介。 。
    2. 中介冒充正常网站(服务器),将自己的公钥2发回给客户端,请求正常网站的公钥1。
    3. 客户端使用中介者的公钥2加密会话密钥并发送给中介者。
    4. 中介使用自己的私钥2解密得到会话密钥1。同时,他冒充客户端,用正常网站的公钥1加密会话密钥(与会话密钥1相同)并发送给合法网站。
    5. 客户端使用会话密钥 1加密数据并将其发送给中介。
    6. 中介使用会话密钥1对数据进行解码,得到明文数据! (窃听成功)
    7. 中介使用会话密钥2对数据进行加密(可能被篡改)并发送给合法网站。

    目前,客户端和服务器之间的通信不再安全!中介不仅可以监听消息内容,还可以对其进行操作! HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    客户如何知道他们拥有的公钥是来自正常网站而不是来自中介机构?您目前需要数字证书

    数字证书的概念就像我们的身份证,专门用于验证通信实体的身份。我们的身份证必须到警察局要,数字证书地址认证中心(认证机构,CA),需要付费!

    通过数字证书解决中间人攻击的具体流程如下:

    • 服务器(正规网站)首先生​​成一对公私钥,然后将域名、请求者和公钥(注意不是私钥,私钥是在任何情况下都不能泄露)并整合其他信息创建.csr文件并将该文件发送给证书颁发机构的CA。
    • CA收到请求后,通过多种方式对申请人的数据进行检查。如果没有异常,使用哈希算法检索.csr文件中的明文信息的摘录,然后CA使用自己的私钥生成摘录的加密。加密文本,也称为数字签名。数字证书包含此数字签名和 .csr 格式的明文信息。 CA 将此证书返回给请求者。
    • 为了避免中间人攻击,客户端要求服务器发送其证书并进行验证。
    • 客户端验证证书时,提取证书中包含的签名和明文信息,然后使用公钥解密组织签名和CA签名。 extract 1 ,然后使用提取算法得到明文信息的extract 2 。比较摘录 1 和摘录 2。如果匹配,则说明该证书是合法的,即证书中的公钥是正确的。否则,说明该证书不合法。

    HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    浏览器如何获取CA的公钥?如果这个公钥是伪造的怎么办?为了防止婴儿嵌套,这些认证中心的公钥都内置在实际计算机操作系统中!因此,无需担心证书颁发机构的公钥被伪造。

    当Chrome浏览器发现某个网站的数字证书无效时,会生成如下界面进行提问。如果用户强制访问,则存在一定的风险。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    5。 SSL/TLS握手

    根据以上,总结一下:

    • HTTPS通过混合加密算法解决了HTTP传输数据被窃听的问题。此过程需要匹配会话密钥
    • HTTPS采用哈希算法来解决HTTP传输数据被篡改的问题。此过程需要协商身份验证密钥
    • HTTPS通过数字证书解决了HTTP协议中的身份篡改问题。对于此过程,客户端需要验证服务器的证书

    那么 HTTPS 到底是如何工作的呢?通信双方何时协商会话密钥 和身份验证密钥 以及何时检查证书’ 的有效性?答案是在 SSL/TLS 协议握手期间。

    HTTPS 多于 HTTP 的“S”指的是 SSL/TLS 协议。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    在HTTPS协议中,客户端和服务器通过三向握手建立TCP连接时,数据并不是直接传输,而是先经过SSL/TLS握手协商会话密钥 认证密钥及验证证书等,即可安全传输数据! HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    让我们通过Wireshark抓包并详细讨论SSL/TLS 1.2四次握手过程。HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    第一次握手

    客户端向服务器发起加密通信请求。内容主要包括:

    1. 客户端支持的SSL/TLS协议版本,例如TLS版本1.2。
    2. 客户端生成的随机数1用于进一步生成会话密钥身份验证密钥
    3. 客户端支持的密码套件列表,每个密码套件包括:
      1. 传输会话密钥的非对称密码算法如ECDHE、RSA;
      2. 用于验证数字证书的非对称加密算法 对称加密算法如ECDHE、RSA;
      3. 用于数据传输的对称加密算法,例如AES_128_GCM、AES_128_CBC;
      4. 提取算法用于验证消息完整性,例如SHA256、SHA384;
      5. 格式为:TLS_非对称加密算法_非对称加密算法_对称加密算法_摘要算法。如果两种非对称加密算法一致,则可以省略。

    HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    第二次握手

    服务器收到客户端的加密通信请求后,向客户端发送响应。内容主要包括以下内容:

    1. 确认SSL/TLS协议版本,如果双方支持的版本不同,则禁止加密通信。服务器生成的随机数2是会话密钥 和认证密钥
    2. 已确认的密码套件,例如 TLS_RSA_WITH_AES128_CBC_SHA。
    3. 服务器的数字证书。

    HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    第三次握手

    客户端收到服务器的响应后,检查自己的数字证书是否合法(验证方法在数字证书章节中有说明)。如果证书合法,则会发生第三次。握手主要包括:

    1. 客户端创建的另一个随机数3(Pre-Master Secret,缩写为PMS)。该随机数将由服务器公钥加密使用。客户端根据随机数1、随机数2和之前的主密钥计算主密钥(MS),然后将主密钥拆分得到两个会话密钥和两个♝。
    2. 加密通信算法变更通知,表示所有数据均由会话密钥加密。
    3. 客户端握手完成通知,表明客户端的握手阶段已经结束。客户端准备所有握手消息的摘要,使用会话密钥 对其进行加密,并将其发送到服务器进行验证。

    HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    第四次握手

    服务器收到客户端的消息后,使用自己的私钥和随机主数1来解密之前的随机密钥2。主密钥。密钥计算主密钥,然后将其分割为两个 会话密钥 和两个 身份验证密钥

    之后,进行第四次握手,主要包括以下内容:

    1. 加密通信算法变更通知,表明后续所有数据都将使用会话密钥
    2. 进行加密。
    3. 服务器握手完成通知,表示服务器握手阶段已结束。服务器准备所有握手消息数据的摘要,使用会话密钥
    对其进行加密,并将其发送给客户端进行验证。

    HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    至此,整个SSL/TLS握手阶段就结束了!

    为什么我们需要在第三次和第四次握手时发送所有握手消息的摘要?

    主要原因是防止握手信息被篡改。例如,在客户端支持的加密包列表中,有的加密算法较弱,有的加密算法较强。然而,该密码套件以明文形式传输。如果黑客修改了这个密码列表,那么只有少数密码仍然更安全。如果加密算法较低,服务器只能在这些安全性较低的加密算法中进行选择,安全性显着降低。因此,需要防止通过发送哈希来操纵握手信息。

    为什么不直接发送主密钥,而是使用两个随机数和之前的主密钥再次生成主密钥?

    主要原因是阻止连接重播。如果没有前两个随机数,客户端只生成一个主密钥,通过服务器的公钥加密并发送到服务器。然后,当黑客嗅探完服务器和客户端之间的所有消息后,他再次冒充客户端,可以向服务器发送相同的消息(尽管黑客不知道内容是什么),因为这些信息消息中都是以前的客户和客户之间的。服务器已经验证了它,因此服务器认为客户端正在与其通信,从而产生另一个连接。

    如果服务器是购物网站,重播此连接会导致客户再次下单,造成损失。

    而如果你有前两个随机数,即使黑客冒充客户端想要重新连接并玩,由于随机数不同,生成的密钥也不同和重发的内容黑客将无效。 (服务器不理解,完整性摘要错误)。

    最后用一张图总结一下TLS四次握手过程。 HTTPS 相较于 HTTP 更安全,20 张图全面了解原因所在

    作者亦风说代码

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    热门