域名不是HTTPs会发生什么……

域名不是HTTPs会发生什么……点击上方“大话coding”,选择“星标”公众号重磅干货,第一时间送达小明在一家公司上班,有一天突然被人事约谈,鉴于你最近表现,管理层讨论决定给你加薪了,按20%加?小明突然意识到自己前几……

小明在一家公司上班,有一天突然被人事约谈,鉴于你最近表现,管理层讨论决定给你加薪了,按20%加?

小明突然意识到自己前几天浏览了求职网站,难道被发现了?他用的域名是http。

为什么说https是安全的呢?下面先看看详细的https原理。

协议概念

7c0b71fb8df6c8a5a3d93b04bf2f80eb.png

1. HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。

2. HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

ea3bc29e07efa7a672383793b11c6f12.png

SSL和TLS是一种加密算法,这里不详细介绍SSL和TLS。

HTTP访问过程

466a425356ffa8c6f33f260dab2bbf4d.png

HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文(明文意思就是没有加密的信息,一眼就可以看出客户端和服务器端发送的内容)传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:

0196218918474e4a7dfebc6e0bb0f3f9.png

黑客能看到并且修改 HTTP 通讯中所有的请求和响应内容,所以使用 HTTP 是非常的不安全的。

防止访问进行攻击

对称加密

为了防止上述问题,那我们使用对称加密的方式将报文进行加密,这样黑客就看不到明文了。

948b5a346b6faa96c9265fcbb513afc5.png

如上图所示,此种方式属于对称加密,双方拥有相同的密钥,信息得到安全传输,但此种方式的缺点是:

  1. 不同的客户端、服务器数量庞大,所以双方都需要维护大量的密钥,维护成本很高。

  2. 因每个客户端、服务器的安全级别不同,密钥极易泄露。

上面的问题是在通讯过程中还是会以明文的方式暴露加密方式和秘钥,如果第一次通信被拦截到了,那么秘钥就会泄露给中间人,黑客仍然可以解密后续的通信。

那么我们考虑能不能将密钥进行加密,不让黑客看到呢?

非对称加密

2607cfce383700414c43760468311d64.png

客户端用公钥对请求内容加密,服务器使用私钥对内容解密。

但也存在缺陷:公钥是公开的(也就是黑客也会有公钥),所以第 ④ 步私钥加密的信息,如果被黑客截获,其可以使用公钥进行解密,获取其中的内容。

对称加密+非对称加密

1a83743b8b4f7ecd51105f945aa79dd5.png

如上图所示:

  1. 第 ③ 步时,客户端说:(咱们后续回话采用对称加密吧,这是对称加密的算法和对称密钥)这段话用公钥进行加密,然后传给服务器。

  2. 服务器收到信息后,用私钥解密,提取出对称加密算法和对称密钥后,服务器说:(好的)对称密钥加密。

  3. 后续两者之间信息的传输就可以使用对称加密的方式了。

也还存在缺陷:

  1. 客户端如何获得公钥。

  2. 如何确认服务器是真实的而不是黑客。

获取公钥和确认服务器的身份

409ddd8c21b07cd1e2515bf6d87ea037.png

如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端。

域名不是HTTPs会发生什么......

 

SSL是什么呢?

SSL使用数据加密、身份验证和消息完整性验证机制,基于TCP和其他的应用层协议提供可靠的连接安全保障。

真正的SSL 握手会比这个复杂的多,但是性质还是差不多,而且我们这里需要关注的重点在于 HTTPS 是如何防止中间人攻击的。

服务器是通过 SSL 证书来传递公钥,客户端会对 SSL 证书进行验证,其中证书认证体系(CA)就是确保SSL安全的关键。

上面会引入第三方,一个权威的证书颁发机构(CA)来解决。

证书包含如下信息:

0e341acbb4319906a21e0f05791eaaf7.png

为了便于说明,我们这里做了简化,只列出了一些关键信息。至于这些证书信息的用处,我们看看具体的通信流程就能够弄明白了。

流程如下:

1. 服务端首先把自己的公钥发给证书颁发机构,向证书颁发机构申请证书。

2. 证书颁发机构自己也有一对公钥私钥。机构利用自己的私钥来加密Key1,并且通过服务端网址等信息生成一个证书签名,证书签名同样经过机构的私钥加密。证书制作完成后,机构把证书发送给了服务端。

3. 当客户端向服务器端请求通信的时候,服务器端不再直接返回自己的公钥,而是把自己申请的证书返回给客户端。

4. 客户端收到证书以后,要做的第一件事情是验证证书的真伪。需要说明的是,各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥。所以客户端只需要知道是哪个机构颁布的证书,就可以从本地找到对应的机构公钥,解密出证书签名。

接下来,客户端按照同样的签名规则,自己也生成一个证书签名,如果两个签名一致,说明证书是有效的。

验证成功后,客户端就可以放心地再次利用机构公钥,解密出服务端服务器端的公钥Key1。

5. 像之前一样,客户端生成自己的对称加密密钥Key2,并且用服务端公钥Key1加密Key2,发送给服务器端。

6. 最后,服务器端用自己的私钥解开加密,得到对称加密密钥Key2。于是两人开始用Key2进行对称加密的通信。

证书的签名是由服务器端网址等信息生成的,并且经过机构私钥加密,中间人也无法篡改。

4f75c240a00971940ef64ff2c51bddc4.png

HTTPS在HTTP协议的基础上增加了SSL安全层。

综上所述,相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。所以在这个互联网膨胀的时代,其中隐藏着各种看不见的危机,为了保证数据的安全,维护网络稳定,建议大家多多推广HTTPS。

今天的文章域名不是HTTPs会发生什么……分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31546.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注