记住!在看小电影前一定要检查下域名是不是 HTTPS 的

      最后更新:2022-06-23 21:48:05 手机定位技术交流文章

      看一个小电影或浏览一个正常的网站,确保检查是否是HTTPS,否则后果很严重! 别相信你看到,我最近看到一个工人在工作时间上去了1024个网站,很糟糕,所以试用期还没有过。

      细思极恐!!!!

      为什么HTTPS是安全的?让我们看看HTTPS原则的细节,你会明白。

      HTTP 协议

      在谈论HTTPS协议之前,让我们首先回顾HTTP协议的概念。

      HTTP 协议介绍

      HTTP协议是一个基于文本的传输协议,它位于OSI网络模型的应用程序层中。

      HTTP协议用于通过客户端和服务器请求进行通信,目前的协议分为六个不同的协议规范(RFC 7230,RFC 7231,RFC 7232,RFC 7233,RFC 7234,RFC 7235)。通讯报文如下:

      请求

      响应

      HTTP中间人攻击

      HTTP协议非常方便使用,但它有一个致命的缺点:它不安全。

      我们知道HTTP协议中的消息是直接发送的,没有加密。这会造成什么问题?这里有一些例子:

      Xiao Ming in JAVA Post it, the contents for I love JAVA:

      它被中间人攻击,内容被修改为我喜欢PHP

      小明被群嘲

      在HTTP传输中,中间人可以查看和修改HTTP通信中的所有请求和响应,因此HTTP使用非常不安全。

      防止中间人攻击

      此时,有人可能想到,因为内容是明文,我已使用对称加密加密加密消息,使中间人不看到明文,所以做了以下修改:

      双方约定加密方式

      使用AES加密消息

      似乎中间人没有得到书面信息,但事实上在通信过程中仍然公开了加密方法和秘密密钥的书面方式,如果第一次通信被截获,那么秘密密钥将被披露给中间人,中间人仍然可以解密随后的通信:

      在这种情况下,我们将考虑加密秘密密钥,以便中间人不能看到它。答案是:是的,使用不对称加密,我们可以用RSA算法进行。

      当同意加密方法时,服务器会生成两个公共和私人密钥,服务器将公共键返回到客户端,客户端本地生成一套密钥(AES_KEY)用于对称加密,AES_KEY_SECRET用于加密由服务器发送的公共密钥。之后返回给服务端,服务器通过私钥向客户端发送的AES_KEY_SECRET消息解密以获取AEK_KEY,客户端和服务器最后通过AEK_KEY加密消息,改造如下:

      你可以看到,在这种情况下,中间人不能偷走AES加密的密钥,所以对于以后的通信是绝对不可能的解密,那么这样做是绝对安全的吗?

      所谓路高一英尺,魔鬼高一英尺,中间人提出了一种新的解密方案来抵制这种加密方法,既然我找不到AES_KEY,然后我将模拟自己作为客户端和服务器边绑定,在用户->中间人的过程中中间人模拟服务器的行为,这样,你可以得到用户请求的明确声明,在中间人->服务器的过程中中间人模拟客户端行为,所以你可以得到服务器的响应消息,这样,中间人就会攻击:

      这次通信再次被中间人截获,他自己伪造了一对公共和私人密钥,并将公共密钥发送给用户以偷取客户端生成的AES_KEY,AES_KEY收到后可以轻易解密。

      在制裁下,中间人不可能做任何类似的事情。当然他可以。接下来,让我们看看HTTPS如何解决通信安全问题。

      2.HTTPS协议

      2.1HTTPS简介

      HTTPS实际上是SSL+HTTP的缩写,当然现在SSL基本上由TLS取代,然后我们被SSL作为缩写统一,SSL协议实际上不仅适用于HTTP协议,它也被用于各种应用层协议中,例如: FTP, WebSocket。

      事实上,SSL协议与前节的不对称加密大致相同。在握手过程中,它主要用于交换钥匙,然后在通信过程中使用对称加密进行通信,过程大致如下:

      我只是在这里说明,真正的SSL握手比这更复杂,但性质基本相同,我们需要在这里集中注意的是HTTPS如何防止中间人攻击。

      如上图所示,服务器通过SSL证书提供公共密钥,客户端验证SSL证书,而证书认证系统是确保SSL安全的关键。接下来,让我们谈谈CA认证系统,并看它如何防止中间人攻击。

      2.2CA认证系统

      在前面的段落中,我们看到客户端需要验证服务器返回的SSL证书,所以客户端如何验证服务器的SSL证书的安全。

      • 权威认证机构
        在CA认证系统中,所有证书都是由权威发出的,而权威的CA证书已经嵌入到操作系统中。我们称这些证书为CA根证书:

      签发证书
      如果我们的应用程序服务器想使用SSL,证书必须通过授权的认证机构签发,我们将由服务器生成的公开密码和网站相关信息发送给CA签名机构,此外,CA发行机构通过服务器向CA发行机构发送相关信息,这给了我们应用程序服务器的证书,证书将生成证书内容的相应签名,签名将使用发证机构的私钥加密,以取得证书的指纹,它还生成了一个与高级证书的链接。

      下面我们下载 Baidu的证书来查看:

      • 你可以看到贝杜被GlobalSignG2接纳,同样的GlobalSignG2被发送到GlobalSignR1,当客户端(浏览器)检查证书时,将检查到第一级,直到最后的根证书,如果没有问题,可以信任服务器证书。
      • 如何验证服务器证书
        那么客户端(浏览器)如何验证服务器证书?首先您将通过层级关系找到顶层证书,签字是通过使用上证书中的公开密钥解密服务器的证书指纹,然后由签名算法计算服务器证书的签名(sign2)。通过比较1号和2号,如果等价,则表示证明书没有被修改或伪造。

      • 有趣的是,RSA被用来验证证书有效性,通过用私人密钥加密证书签名和解密公共密钥。

      这样,通过证书认证系统,我们可以避免中间人偷取AES_KEY来启动拦截和修改HTTP通信消息。

      总结

      首先先通过对 HTTP中间人攻击的来了解到 HTTP 为什么是不安全的,然后再从安全攻防的技术演变一直到 HTTPS 的原理概括,希望能让大家对 HTTPS 有个更深刻的了解。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28233.html

          热门文章

          文章分类