网络基础(三) — HTTPS

一、概述

HTTP的不足

  1. 通信使用明文(不加密),内容可能会被窃听。
  2. 不验证通信方的身份,因此有可能遇到伪装。
  3. 无法验证报文的完整性,所以有可能已遭篡改。

二、问题对应的解决方案

下面我们来介绍一下 HTTP 存在问题的解决方法。

2.1 明文传输的问题

问题:

已知 HTTP 的通信是使用明文,信息在网络发送过程的任何一个节点都有可能被窃取,导致信息的不安全。

方案:

对发送的信息进行加密,从而达到了安全传输的目的。(加密后的信息仍可能被窃取,但用户需要破解秘钥才可以还原真实的数据信息。)
加密的策略有两种:一种是对通信进行加密;另一种是对内容进行加密。下面我们分别来介绍一下。

2.1.1 内容加密

下面是一个HTTP的报文格式,其包含两部分:报文首部、报文主体。内容加密只对报文主体进行加密。如下图所示:

在这里插入图片描述

常见的加密方法:对称加密(共享秘钥加密)、非对称加密(公开秘钥加密)。

对称加密(共享秘钥加密):

  1. 对称加密,其加/解密都使用同一个秘钥,加/解密效率相对非对称加密要高。
  2. 如果使用对称加密对内容进行加密,就需要将秘钥传递给客户端。但在将秘钥传递给客户端的时候无法保证其安全性,因此也就失去了加密的意义。

非对称加密(公开秘钥加密):

  1. 非对称加密,其有两把秘钥,一把公钥,一把私钥,公钥可以提供给客户端,私钥被服务端持有。
  2. 客户端使用公钥对数据进行加密时,需要服务端使用私钥进行解密。服务端使用私钥进行加密时,需要客户端使用公钥进行解密。
  3. 存在和对称秘钥一样的安全传递问题,即无法安全的将公钥传递给客户端,因此也就失去了加密的意义。

2.1.2 通信的加密

HTTP 协议中没有加密机制,但可以通过和 SSL (Secure Socket Layer,安全套接层) 或TLS (Transport Layer Security,安全层传输协议) 的组合使用,加密 HTTP 的通信内容。用SSL 建立安全通信线路后,就可以进行HTTP通信了。 SSL采用的也是 非对称加密(公开秘钥加密) 的加密处理方式。

2.2 通信方身份伪装的问题

问题:

不验证通信方的身份,存在各种隐患:

  1. 无法确定请求发送 目 的 Web 服务器是 是 实意图返回 响应的 台服务器。有可能是已伪装的 Web 服务器
  2. 无法确定正在通信的对方是否具备访问权限。
  3. 无法判断请求来自何方,出自谁手。
  4. 即使是无意义的请求也会照单全收,所以可能存在Dos攻击。

方案:

查看请求方的证书,证书需要第三方权威机构颁发 (即请求方的身份合法性由颁发证书机构保证)。SSL 提供了证书功能。

2.3 报文完整性的问题

问题:

HTTP 协议无法保证接收到的报文就是发送方请求的原始报文,也有可能在发送过程中被第三方劫持篡改过。如下图所示:
在这里插入图片描述

方案:

SSL 提供了摘要功能,可以验证信息的完整性。

三、HTTPS

HTTPS = HTTP + 加密+认证 + 完整性保护 = HTTP + SSL

由于 SSL 提供了 加密、认证、完整性保护 功能,因此 HTTPS 相当于是 HTTP + SSL

在这里插入图片描述

3.1 HTTPS 进行加密,解密,验证的流程

在这里插入图片描述

在开始之前,我们先来了解一些准备知识。

两对非对称加密秘钥。
服务端: 公钥A、私钥A
数字证书认证机构: 公钥B、私钥B

在使用数字证书前,服务端需要先向数字证书认证机构申请证书,具体流程如下:

服务端先将公钥A提交给 “数字证书认证机构”, “认证机构” 会使用它自己的私钥B对公钥A进行数字签名,并将公钥A放入公钥证书中(服务端下发给客户端时使用)。

共分为8个步骤:

  1. 客户端发起HTTPS请求。
  2. 服务端配置证书,证书其实就是一对公钥和私钥。
  3. 将服务端从机构申请来的公钥证书传送给客户端,证书中含有公钥。
  4. 客户端通过 TLS 对证书进行解析,如果证书没有问题,就生成一个随机值 Key(类似对称加密秘钥),然后用证书(公钥)对该随机值进行加密。
  5. 将加密后的随机值 Key 发送回服务端。
  6. 服务端使用私钥对接收到的加密信息进行解密,获取到客户端生成的随机值 Key。
  7. 使用获取到的随机值 Key 对发送的数据进行加密,并发送给客户端。
  8. 客户端接收到加密信息之后,使用之前证书生成的随机值Key对加密信息进行解密。

3.2 SSL 的劣势

会导致请求和响应变慢。

主要有两个原因:

  1. 通信慢:除了TCP连接、发送 HTTP 请求、响应HTTP 外,还得进行 SLL通信,流程变多了。
  2. 设备资源开销:使用 SSL 会对传输的内容进行加密处理,导致 CPU 和 内存消耗增加。

参考

《图解HTTP》
《网络是怎样连接的》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值