HTTPS 比 HTTP 更安全, 20 张图片让您全面了解为什么
HTTPS 比 HTTP 更安全:对称加密、非对称加密、完整性哈希、数字证书和 SSL/TLS 握手等。推荐收藏!
1。不安全的HTTP
近年来,越来越多的网站使用HTTPS协议进行数据传输,因为HTTPS可以提供比HTTP更安全的服务。
许多浏览器会在使用HTTP协议的网站上添加“警告”信号来表明数据传输不安全,而使用HTTPS协议的网站会添加“锁定”信号以表明数据传输是安全的。 ![]()
为什么HTTP协议不安全?主要表现在以下三个方面:
- 容易被窃听:通过HTTP传输的数据是明文。黑客使用嗅探技术来拦截消息。由于数据未加密,因此黑客可以理解其内容。比如:用户输入密码提款,那么黑客截获密码后就可以为所欲为!
- 容易被操纵了:黑客可以拦截HTTP消息,修改消息,然后将其发送到目的地。例如:如果用户想给家人转账,而黑客将收款人改为自己,用户就会遭受损失!
- 冒充容易:黑客可以欺骗HTTP消息,冒充用户真正想要访问的网站,然后与用户进行通信。例如:用户想要访问淘宝网站购物,黑客冒充淘宝网站,用户就可以在假冒的淘宝网站上购买东西,造成损失!
HTTPS是如何解决上述安全问题的?主要方式有:
- 数据加密:HTTPS不再传输纯文本,而是使用加密算法传输♓cittext。即使黑客拦截了消息并且不理解内容!
- 完整性摘要:HTTPS 通过哈希算法接收消息的摘要。如果黑客篡改了消息内容,重新生成的摘要将会发生变化。核实后,买家就会知道数据不再完整。他已经被操纵了!
- 数字证书:HTTPS 使用数字证书来验证通信实体的身份。由于黑客没有正确的证书,当他们冒充其他网站时就会被发现!
2。加密算法
加密算法用于解决HTTP传输数据被窃听的问题。
为了防止传输的数据被黑客拦截,客户端和服务器之间的数据必须进行加密和解密。
发送方对明文密文♓加密,而接收器使用适当的 解码算法 将文本 解密为明文 。黑客只能看到密文,因此无法获取有用信息。如下图所示: ![]()
一般来说,加密算法可以分为两类:对称加密和 凯撒密码是一种相对简单的对称加密算法,可用于加密和解密英文文本。主要思想是将明文中的每个字母根据其在字母表中的位置右移K位得到密文(允许遍历)。 例如,如果我们假设 K = 2,那么在纯文本中,字母“a”将替换为字母“c”,字母“z”将替换为字母“b”。那么K=2就是对称加密算法中的密钥。 这种方法的缺点是加密后每个字母只有唯一的密文。如果黑客收集大量数据并进行统计分析,很可能加密方法就会被破解。 更好的方法是使用多个凯撒加密的K查询进行加密。例如,奇数位置字母使用 K = 2 个密钥加密,偶数位置字母使用 K = 3 个密钥加密。 但是,凯撒密码只能加密英文文本。如果要加密所有字符,可以使用分组密码。 我们知道,计算机中实际存储的数据是0/1位的组合。 块加密的主要思想是将要加密的消息处理成K位组,每个组通过一一对应的映射表进行加密。 例如,假设K = 3,则映射表如下,则消息010110001111将被加密为101000111001。目前,K=3和映射表是对称算法加密的密钥。 类似于之前使用多个凯撒密码K作为密钥的方法,增加破解难度,更好的方法是使用多个映射表和查询来加密数据。 计算机网络中常用的对称加密算法有:DES、3DES、AES等,这些都是块加密算法。 在非对称加密算法中,加密和解密所使用的密钥是不同的,分别称为 公钥和 ❕♓❀ 或特点: 为什么对称加密之后又出现非对称加密? 原因是,对称加密的前提是:通信双方必须协商一个密钥,协商好密钥后,就传输明文。如果密钥被黑客抓住,即使是下面的消息被加密,黑客也可以用这个密钥解密! 非对称加密的特点之一:公钥加密,只能用私钥解密。在这种情况下,不需要像对称加密那样提前协商密钥。通信双方可以直接将各自的公钥发送给对方。即使黑客知道这个公钥也没有关系。当一方使用该公钥对消息进行加密时,即使黑客拦截了该消息,他们也无法使用该公钥来解密该消息。只能使用私钥。只有对方才能成功解码! 计算机网络中常用的非对称加密算法有: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采用混合加密方式,同时使用对称加密和非对称加密。 对称加密算法的弱点是协商密钥时使用明文不安全,存在密钥泄露的可能性。那么我们是否可以不使用明文,而使用非对称加密算法来协商然后传输密钥呢?数据使用对称加密算法进行加密。 即采用非对称加密算法传输密钥,采用对称加密算法传输实际数据。 此密钥通常称为 3。提取算法 提取算法用于解决操纵HTTP传输数据的问题。哈希算法 也称为散列算法。 的输入是任意数据,输出是固定长度的字符串(称为extract)。主要特点如下: 例如:如果数据比特流按8位分组(缺失的零被填充),那么所有组都按位进行异或 如果两个输入数据的哈希算法得到的输出提取一致,那么我们就说发生了哈希冲突。好的哈希算法发生哈希冲突的概率非常低,并且很难从输出中猜测输入内容! 计算机网络中常用的哈希算法:MD5、SHA-1、SHA-256等。 为了防止传输数据的违规。发送方在发送实际数据时,还使用哈希算法获得数据 接收方收到数据后,使用相同的哈希算法再次得到 朋友们,容易可以看出,上述方法有明显的缺陷。如果黑客不仅篡改了数据,还篡改了摘要,那客户岂不是无法判断数据是否被篡改了? 为了防止这种情况发生,发送者和接收者必须拥有只有他们自己知道而黑客无法知道的东西,例如对称加密的会话密钥 有了认证密钥 与认证密钥结合后,哈希算法生成的提取物有一个特殊的名称,称为消息认证码或简称为 为了进一步提高安全性,客户端和服务器实际上有不同的 4。数字证书 数字证书用于解决HTTP协议中的身份篡改问题。 如前所述,HTTPS 使用非对称加密算法来传输 但是如果服务器的公钥被黑客伪造了怎么办?例如,经典的“中间人攻击”问题: 目前,客户端和服务器之间的通信不再安全!中介不仅可以监听消息内容,还可以对其进行操作! 客户如何知道他们拥有的公钥是来自正常网站而不是来自中介机构?您目前需要数字证书! 数字证书的概念就像我们的身份证,专门用于验证通信实体的身份。我们的身份证必须到警察局要,数字证书地址认证中心(认证机构,CA),需要付费! 通过数字证书解决中间人攻击的具体流程如下: 浏览器如何获取CA的公钥?如果这个公钥是伪造的怎么办?为了防止婴儿嵌套,这些认证中心的公钥都内置在实际计算机操作系统中!因此,无需担心证书颁发机构的公钥被伪造。 当Chrome浏览器发现某个网站的数字证书无效时,会生成如下界面进行提问。如果用户强制访问,则存在一定的风险。 5。 SSL/TLS握手 根据以上,总结一下: 那么 HTTPS 到底是如何工作的呢?通信双方何时协商会话密钥 HTTPS 多于 HTTP 的“S”指的是 SSL/TLS 协议。 在HTTPS协议中,客户端和服务器通过三向握手建立TCP连接时,数据并不是直接传输,而是先经过SSL/TLS握手协商会话密钥 让我们通过Wireshark抓包并详细讨论SSL/TLS 1.2四次握手过程。 第一次握手 客户端向服务器发起加密通信请求。内容主要包括: 第二次握手 服务器收到客户端的加密通信请求后,向客户端发送响应。内容主要包括以下内容: 第三次握手 客户端收到服务器的响应后,检查自己的数字证书是否合法(验证方法在数字证书章节中有说明)。如果证书合法,则会发生第三次。握手主要包括: 第四次握手 服务器收到客户端的消息后,使用自己的 之后,进行第四次握手,主要包括以下内容: 至此,整个SSL/TLS握手阶段就结束了! 为什么我们需要在第三次和第四次握手时发送所有握手消息的摘要? 主要原因是防止握手信息被篡改。例如,在客户端支持的加密包列表中,有的加密算法较弱,有的加密算法较强。然而,该密码套件以明文形式传输。如果黑客修改了这个密码列表,那么只有少数密码仍然更安全。如果加密算法较低,服务器只能在这些安全性较低的加密算法中进行选择,安全性显着降低。因此,需要防止通过发送哈希来操纵握手信息。 为什么不直接发送主密钥,而是使用两个随机数和之前的主密钥再次生成主密钥? 主要原因是阻止连接重播。如果没有前两个随机数,客户端只生成一个主密钥,通过服务器的公钥 如果服务器是购物网站,重播此连接会导致客户再次下单,造成损失。 而如果你有前两个随机数,即使黑客冒充客户端想要重新连接并玩,由于随机数不同,生成的密钥也不同和重发的内容黑客将无效。 (服务器不理解,完整性摘要错误)。 最后用一张图总结一下TLS四次握手过程。 作者亦风说代码❙❙非对称加密。 的摘要 (1) 对称加密是加密算法,加密和解密的密钥是相同的,称为密钥 。
![]()
![]()
![]()
(2) 非对称加密
![]()
![]()
『会话密钥』。 安全; 高效! ![]()
,那么生成的结果可以称为Source Summary,这个算法是一个简单的求和算法。![]()
![]()
,并将该摘要一起发送。 摘要,并与摘要进行比较。如果两者不一致,则说明数据被篡改,否则则不然。 对其进行加密,并将其发送给客户端进行验证。 ![]()
![]()
。但是,为了提高安全性,当前使用新密钥,即 身份验证密钥 来代替会话密钥。获取此密钥与获取部分密钥相同。 ,哈希算法的输入就不仅仅是数据的传输,而是数据和认证密钥的传输!由于黑客不知道身份验证密钥,因此他无法再欺骗输入,被篡改的哈希值将不正确,从而保证安全!将数据![]()
C。
会话密钥和♻身份验证密钥,也就是说总共有四个密钥:❙ 会话密钥 a 用于从客户端发送到服务器的数据; ,然后服务器解密私钥得到会话密钥 从服务器发送到客户端的数据的会话密钥; 为从客户端发送到服务器的数据; 身份验证密钥 用于从服务器发送到客户端的数据。 会话密钥。通常,服务器对外公布公钥,客户端用这个公钥加密会话密钥。目前双方正在洽谈中。用于传输数据的对称加密的密钥。 。 并发送给中介者。 1。同时,他冒充客户端,用正常网站的公钥1加密会话密钥(与会话密钥1相同)并发送给合法网站。 1加密数据并将其发送给中介。 会话密钥1对数据进行解码,得到明文数据! (窃听成功)2对数据进行加密(可能被篡改)并发送给合法网站。 ![]()
私钥生成摘录的加密。加密文本,也称为数字签名。数字证书包含此数字签名和 .csr 格式的明文信息。 CA 将此证书返回给请求者。 公钥解密组织签名和CA签名。 extract 1 ,然后使用提取算法得到明文信息的extract 2 。比较摘录 1 和摘录 2。如果匹配,则说明该证书是合法的,即证书中的公钥是正确的。否则,说明该证书不合法。 ![]()
![]()
。 。 证书。 和身份验证密钥 以及何时检查证书’ 的有效性?答案是在 SSL/TLS 协议握手期间。 ![]()
、认证密钥及验证证书等,即可安全传输数据! ![]()
![]()
会话密钥和身份验证密钥传输会话密钥的非对称密码算法如ECDHE、RSA; 用于验证数字证书的非对称加密算法 对称加密算法如ECDHE、RSA; 用于数据传输的对称加密算法,例如AES_128_GCM、AES_128_CBC; 提取算法用于验证消息完整性,例如SHA256、SHA384; ![]()
和认证密钥 。 ![]()
公钥加密使用。客户端根据随机数1、随机数2和之前的主密钥计算主密钥(MS),然后将主密钥拆分得到两个会话密钥和两个♝。 会话密钥加密。 对其进行加密,并将其发送到服务器进行验证。 ![]()
私钥和随机主数1来解密之前的随机密钥2。主密钥。密钥计算主密钥,然后将其分割为两个 会话密钥 和两个 身份验证密钥 会话密钥![]()
加密并发送到服务器。然后,当黑客嗅探完服务器和客户端之间的所有消息后,他再次冒充客户端,可以向服务器发送相同的消息(尽管黑客不知道内容是什么),因为这些信息消息中都是以前的客户和客户之间的。服务器已经验证了它,因此服务器认为客户端正在与其通信,从而产生另一个连接。 ![]()
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
