图解HTTP之确保Web安全的HTTPS(七)

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用HTTPS 通信机制可以有效地防止这些问题。

HTTP 的缺点:

缺点一:通信使用明文(不加密),内容可能会被窃听

由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。即,HTTP 报文使用明文(指未经过加密的报文)方式发送。

TCP/IP 是可能被窃听的网络 互联网上的任何角落都存在通信内容被窃听的风险

加密处理防止被窃听

通信的加密 SSL(Secure Socket Layer,安全套接层)TLS(Transport Layer Security,安全层传输协议)用 SSL 建立安全通信线路之后,就可以在这条线路上进行 HTTP通信了。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTP Secure,超文本传输安全协议)或 HTTP over SSL。

内容的加密 把HTTP 报文里所含的内容进行加密处理。

缺点二:不验证通信方的身份,因此有可能遭遇伪装

任何人都可发起请求

  • 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的 Web 服务器。

  • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。

  • 无法确定正在通信的对方是否具备访问权限。因为某些Web 服务器上保存着重要的信息,只想发给特定用户通信的权限。

  • 无法判定请求是来自何方、出自谁手。

  • 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)。

查明对手的证书

缺点三:无法证明报文的完整性,所以有可能已遭篡改

所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。

接收到的内容可能有误 中间人攻击(Man-in-the-Middle attack,MITM)

如何防止篡改 MD5和SHA-1

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

1、HTTP 加上加密处理和认证以及完整性保护后即是HTTPS

2、HTTPS 是身披 SSL 外壳的 HTTP

3、相互交换密钥的公开密钥加密技术

共享密钥加密的困境:解密和加密用同一个密钥 对称密钥加密

使用两把密钥的公开密钥加密:公开密钥加密 私有密钥解密

HTTPS采用混合加密机制:采用共享密钥加密和公开密钥加密两者并用的混合加密机制。

4、证明公开密钥正确性的证书

数字证书认证机构CA 威瑞信VeriSign

  • 可证明组织真实性的EV SSL证书

  • 用以确认客户端的客户端证书

  • 认证机构信誉第一

  • 由自认证机构颁发的证书称为自签名证书

5、HTTPS 的安全通信机制

1)、客户端通过发送Client Hello报文开始SSL通信

2)、服务器可进行SSL通信时,会以Server Hello报文作为应答

3)、服务器发送Certificate报文,公开密钥证书

4)、服务器发送Server Hello Done报文到客户端,最初SSL握手结束

5)、客户端以Client Key Exchange报文(被第三步中公开密钥加密)作为回应 Pre-master secret

6)、客户端发送Change Cipher Spec报文后,以后的报文用Pre-master secret密钥加密

7)、客户端发送Finished报文 连接至今全部报文验证正确性

8)、服务器发送Change Cipher Spec报文

9)、服务器发送Finished报文

10)、务器和客户端的 Finished 报文交换完毕之后,SSL连接建立完成。从此处开始进行应用层协议的通信,即发送 HTTP 请求

11)、应用层协议通信,即发送 HTTP 响应

12)、最后由客户端断开连接。断开连接时,发送 close_notify 报文。

在以上流程中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。

流程的图解

HTTPS 使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security)这两个协议。

SSL 的慢分两种。一种是指通信慢。另一种是指由于大量消耗CPU 及内存等资源,导致处理速度变慢。

为什么不一直使用 HTTPS?

其中一个原因是,因为与纯文本通信相比,加密通信会消耗更多的CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。

因此,如果是非敏感信息则使用 HTTP 通信,只有在包含个人信息等敏感数据时,才利用 HTTPS 加密通信。

想要节约购买证书的开销也是原因之一。

要进行 HTTPS 通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买。证书价格可能会根据不同的认证机构略有不同。通常,一年的授权需要数万日元(现在一万日元大约折合 600人民币)。

那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

猜你喜欢

转载自blog.csdn.net/csdn916865/article/details/85047144