HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

HTTP 和 HTTPS 是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的 。但是 , 它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面 。本文将从以下几个方面来介绍 HTTP 和 HTTPS 的区别,本文内容大纲如下:

HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

文章插图
图片
数据的安全性HTTP 协议是一种明文传输协议,它不对数据进行任何加密或验证 , 这意味着任何人都可以在网络上截获、查看或修改 HTTP 传输的数据,这就存在很大的安全风险,尤其是对于一些敏感的信息,如用户名、密码、银行卡号、身份证号等 。
HTTPS 协议是一种安全传输协议,它在 HTTP 的基础上增加了 SSL/TLS 层,SSL/TLS 是一种加密和认证技术,它可以对数据进行加密、解密、签名和验证,这样就可以保证数据的机密性、完整性和身份真实性,防止数据被第三方窃取或篡改 。
HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

文章插图
图片
图片来源 https://coolcao.com 2018/08/06/https/
如上图,HTTPS 流程包含握手和后续的数据传输 , 握手的目的是为了客户端与服务端协商加密算法等参数 。
HTTPS 协议的工作原理大致如下:
  1. 客户端首次请求服务器 , 告诉服务器自己支持的协议版本 , 支持的加密算法及压缩算法,并生成一个随机数(client random)告知服务器 。
客户端需要提供的信息:
  • 支持的协议版本,如 TSL1.0 版本
  • 客户端生成的随机数,用以稍后生成对称密钥
  • 支持的加密算法;支持的压缩方法等
  1. 服务器确认双方使用的加密方法,并返回给客户端证书以及一个服务器生成的随机数(server random)
服务器需要提供的信息:
  • 协议的版本
  • 加密的算法
  • 服务器生成的随机数
  • 服务器证书
  1. 客户端收到证书后,首先验证证书的有效性 , 然后生成一个新的随机数(premaster secret),并使用数字证书中的公钥,加密这个随机数,发送给服务器 。
客户端会对服务器下发的证书进行验证 , 验证通过后,客户端会再次生成一个随机数(premaster secret),然后使用服务器证书中的公钥进行加密,以及放一个 ChangeCipherSpec 消息即编码改变的消息,还有整个前面所有消息的 hash 值 , 进行服务器验证,然后用新秘钥加密一段数据一并发送到服务器,确保正式通信前无误 。
  1. 服务器接收到加密后的随机数后,使用私钥进行解密,获取这个随机数(premaster secret) 。
  2. 最后 , 服务器和客户端根据约定的加密方法,使用前面提到的三个随机数(client random, server random, premaster secret),生成对称密钥,用来加密接下来的整个对话过程 。服务端用对称密钥加密响应数据传给客户端,客户端用对称密钥解密响应数据,得到明文数据 。
传输性能要讨论传输性能,需要针对不同的 HTTP 版本做说明 , 
HTTPS VS HTTP 1.1在 HTTP 1.1 中,HTTP 1.1 的性能比 HTTPS 还要好一些,主要是因为 HTTPS 只是在 HTTP 1.1 协议上增加了 SSL/TLS 层,没有其他方面的修改 。
增加了 SSL/TLS 层后,需要额外的加密和解密的过程 , 这会增加数据的处理时间和传输时间,同时也会消耗更多的 CPU 和内存资源 。另外 HTTPS 协议还需要进行证书的验证和密钥的协商,这也会增加连接的建立时间 。
HTTP 1.1 连接建立过程只需要进行 TCP 的三次握手 , 而 HTTPS 协议的连接建立过程还需要进行 SSL/TLS 的握手,这会多出至少 6 次的往返时间(RTT) 。
因此,HTTPS 的连接建立时间要比 HTTP 1.1 的连接建立时间长得多 。


推荐阅读