HTTPS

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

1 HTTP的缺点

HTTP 主要有这些不足,例举如下。

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

这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。

除此之外,HTTP 本身还有很多缺点。而且,还有像某些特定的Web服务器和特定的Web浏览器在实际应用中存在的不足(也可以说成是脆弱性或安全漏洞),另外,用Java和PHP等编程语言开发的Web应用也可能存在安全漏洞。

1.1 通信使用明文可能会被窃听

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

1.1.1 TCP/IP 是可能被窃听的网络

按TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。

即使已经过加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是相同的。只是说如果通信经过加密,就有可能让人无法破解报文信息的含义,但加密处理后的报文信息本身还是会被看到的。

窃听相同段上的通信并非难事。只需要收集在互联网上流动的数 据包(帧)就行了。像使用GET方法发送请求、响应返回了200 OK,查看HTTP响应报文的全部内容等一系列的事情都可以做到。

1.1.2 加密处理防止被窃听

在目前大家正在研究的如何防止窃听保护信息的几种对策中,最为普及的就是加密技术。加密的对象可以有这么几个。

1.1.2.1 通信的加密

一种方式就是将通信加密。HTTP 协议中没有加密机制,但可以通过和SSL或TLS的组合使用, 加密HTTP的通信内容。

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

1.1.2.2 内容的加密

还有一种将参与通信的内容本身加密的方式。由于HTTP协议中 没有加密机制,那么就对HTTP协议传输的内容本身加密。

即把HTTP报文里所含的内容进行加密处理。在这种情况下,客户端需要对HTTP报文进行加密处理后再发送请求。

由于该方式不同于SSL或TLS将整个通信线路加密处理,所以内容仍有被篡改的风险。

1.2 不验证通信方的身份就可能遭遇伪装

HTTP 协议中的请求和响应不会对通信方进行确认。

1.2.1 任何人都可发起请求

在 HTTP 协议通信时,由于不存在确认通信方的处理步骤,任何 人都可以发起请求。另外,服务器只要接收到请求,不管对方是谁都会返回一个响应(若发送端IP未受限)。

会存在很多隐患,无法确定客户端信息,甚至DOS攻击。

1.2.2 查明证书

虽然使用 HTTP 协议无法确定通信方,但如果使用 SSL则可以。 SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。

证书由值得信任的第三方机构颁发,用以证明服务器和客户端是 实际存在的。通过使用证书,以证明通信方就是意料中的服务器。这对使用者个人来讲,也减少了个人信息泄露的危险性。另外,客户端持有证书即可完成个人身份的确认,也可用于对Web 网站的认证环节。

1.3 无法证明报文完整性,可能已遭篡改

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

1.3.1 接收到的内容可能有误

由于HTTP协议无法证明通信的报文完整性,因此,没有任何办法确认,发出的请求 / 响应和接收到的请求 / 响应是前后相同的。

 

请求或响应在传输途中,遭攻击者拦截并篡改内容的攻 击称为中间人攻击(Man-in-the-Middle attack,MITM)

为了有效防止弊端,有必要使用 HTTPS。SSL提供认证和加密处理及摘要功能。仅靠HTTP确保完整性是非常困难的,因此通过和其他协议组合使用来实现这个目标。

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

2.1 HTTPS是身披SSL外壳的HTTP

HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。

在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

2.2 为什么不一直使用 HTTPS

既然HTTPS那么安全可靠,那为何所有的Web网站不一直使用HTTPS?

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

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

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

要进行HTTPS通信,证书是必不可少的。而使用的证书必须向认 证机构(CA)购买。那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

posted @ 2022-03-11 18:16  邢韬  阅读(618)  评论(0编辑  收藏  举报