2

HTTPS 作为安全的互联网通信协议,和 HTTP 有怎样的关系?是怎样实现的?

以前在博客或者公众号也读过一些关于 HTTPS 的文章,理解的不是很好。最近花时间读了一下《图解 HTTP》,对 HTTPS 有了更深层次的理解,写出来总结一下。

一、HTTP 协议的缺点

(1)通信时使用明文,内容可能会被窃取

HTTP 本身没有加密功能,无法对通信内容进行加密,只能以明文的方式发送。窃取通信的内容并非一件难事,只需收集在互联网上流动的数据包(帧)就行了。

对于收集来的数据包可以使用抓包工具(Wireshark)或者嗅探工具(Sniffer)进行解析。

(2)不验证通信方的身份,身份可能会被伪装

使用 HTTP 通信时,由于不需要确认通信方的身份,任何人都可以发起请求。另外,服务器只要接受到请求,不管接受方是谁都会返回一个响应。在这种情况下,接收请求的就有可能是伪造的服务器,当然客户端也可以伪造。

(3)不能保证报文的完整性,信息可能会篡改

在请求或者响应发出之后,在对方接收之前的这段时间内,请求或响应的报文可能会被篡改,协议本身无法知道这一点。

二、加密协议 SSL

HTTP 协议本身没有加密机制,但是可以使用 SSL(Secure Socket Layer)/TLS(Transport Layer Security)协议解决 HTTP 的安全性问题。

SSL 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议都可以配合 SSL 协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全技术。

使用 SSL 建立安全通信线路(对通信线路加密)之后,就可以在这条线路上进行 HTTP 通信了,内容不会被窃取和篡改。

SSL 不仅提供加密处理,还提供了一种证书机制,用于确定客户端或服务器。证书由值得信任的第三方机构颁发,用来证明客户端和服务端是真实存在的。

三、什么是 HTTPS

HTTP 加上加密处理方式和认证及完整性保护即是 HTTPS(HTTP Secure)。HTTPS = HTTP + 加密 + 认证 + 完整性保护 。

使用 HTTPS 通信时,不再用 http://,而是改用 https://。另外,当浏览器访问 HTTPS 通信有效的 Web 网站时,浏器的地址栏内会出现一个带锁的标记。

HTTPS 并不是应用层的一种新协议。它只是 HTTP 通信接口部分使用 SSL(Secure Socket Layer)和 TLS(TransportLayer Security)协议代替而已。

HTTPS 本身就是身披 SSL 协议外壳的 HTTP。在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。

四、加密方式

4.1 共享秘钥加密

所谓共享秘钥加密(Common key crypto system)就是加密和解密都使用相同的秘钥,因此也被称为对称秘钥加密。

使用共享秘钥加密时必须将秘钥也发送给对方 ,这样就存在一个问题,发送的秘钥可能会被攻击者窃听,如果不发送,对方又不能解密。

4.2 公开秘钥加密

公开秘钥加密使用一对非对称的秘钥,一把叫做私有秘钥(private key),另一把叫做公开秘钥(private key)。公开秘钥任何人都可以获得,但是私有秘钥是私有的。通过这种方式,可以很好的解决共享秘钥加密的安全性问题。

使用公开秘钥加密时,发送密文的一方使用公钥加密,对方收到加密的信息后,再使用自己的私钥进行解密。这样不需要发送用来解密的私钥,就不存在秘钥被窃取的风险了。

五、HTTPS 加密方式

HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。 使用公开密钥加密方式安全地交换在稍后使用的共享秘钥中的秘钥;确保秘钥是安全的前提下,使用共享秘钥加密方式进行通信。

如何保证公开密钥加密方式交换的秘钥是安全的呢? 将公钥放在数字证书中 ,数字证书由双方都可依赖的第三方机构颁发,因此只要证书是可信的,公钥就是可信的。

六、other

  • TSL 是以 SSL 为原型开发的协议,有时会统一称该协议为 SSL。当前主流的版本是 SSL3.0 和 TLS1.0
  • HTTPS 比起 HTTP 会更多地消耗服务器和客户端的硬件资源(加密处理),导致负载增强
  • 非敏感信息使用 HTTP 通信,只有在包含个人信息等敏感数据时,才利用 HTTPS 加密通信
  • 要进行 HTTPS 通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买,存在一定的开销

参考资料


留兰香
123 声望5 粉丝