最后更新:2022-06-23 21:48:05 手机定位技术交流文章
看一个小电影或浏览一个正常的网站,确保检查是否是HTTPS,否则后果很严重! 别相信你看到,我最近看到一个工人在工作时间上去了1024个网站,很糟糕,所以试用期还没有过。

细思极恐!!!!
为什么HTTPS是安全的?让我们看看HTTPS原则的细节,你会明白。
在谈论HTTPS协议之前,让我们首先回顾HTTP协议的概念。
HTTP协议是一个基于文本的传输协议,它位于OSI网络模型的应用程序层中。

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

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如何解决通信安全问题。
HTTPS实际上是SSL+HTTP的缩写,当然现在SSL基本上由TLS取代,然后我们被SSL作为缩写统一,SSL协议实际上不仅适用于HTTP协议,它也被用于各种应用层协议中,例如: FTP, WebSocket。
事实上,SSL协议与前节的不对称加密大致相同。在握手过程中,它主要用于交换钥匙,然后在通信过程中使用对称加密进行通信,过程大致如下:

我只是在这里说明,真正的SSL握手比这更复杂,但性质基本相同,我们需要在这里集中注意的是HTTPS如何防止中间人攻击。
如上图所示,服务器通过SSL证书提供公共密钥,客户端验证SSL证书,而证书认证系统是确保SSL安全的关键。接下来,让我们谈谈CA认证系统,并看它如何防止中间人攻击。
在前面的段落中,我们看到客户端需要验证服务器返回的SSL证书,所以客户端如何验证服务器的SSL证书的安全。

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



这样,通过证书认证系统,我们可以避免中间人偷取AES_KEY来启动拦截和修改HTTP通信消息。
首先先通过对 HTTP中间人攻击的来了解到 HTTP 为什么是不安全的,然后再从安全攻防的技术演变一直到 HTTPS 的原理概括,希望能让大家对 HTTPS 有个更深刻的了解。

本文由 在线网速测试 整理编辑,转载请注明出处。