HTTPS是如何确保Web安全的

HTTPS相较于HTTP到底做了哪些改进呢,在了解HTTPS是如何确保Web安全之前,先来梳理一下HTTP协议的缺陷。

HTTP协议的缺陷

众所周知,HTTP协议与其他协议一道,都是用于客户端和服务端之间的通信,在互联网中应用极其广泛。HTTP协议得以广泛运用在其优秀,方便使用,但是这样也有许多不可避免地缺陷,例如为了只负责数据地传输响应,HTTP是无状态的,不会保存会话信息。除此之外,HTTP主要有以下不足:

  • 通信使用明文,未加密,内容易被窃听
  • 不验证通信方的身份,因此可能遭遇伪装
  • 无法证明报文的完整性,可能内容已经遭到篡改而不自知

首先需要了解的是,按照TCP/IP协议族的工作机制,通信内容在所有的通信线路上都可能遭到窃取,即便通信内容加密,也有被窥视的可能,只是旁人无法破解内容的含义,加密过后的报文信息本身还是会被看到。

针对以上问题,HTTPS(HTTP Secure,超文本传输安全协议)应运而生,它通过和SSL(Secure Socket Layer)或TLS(Transport Layer Security)的组合使用,加密HTTP的通信内容。

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

HTTPS不是应用层的新协议,它仍旧建立在HTTP之上,只是HTTP通信接口部分用SSL和TLS协议代替而已。

​ 图源《图解HTTP》

采用SSL后,HTTP就有了HTTPS的加密、证书和完整性保护功能。那么SSL是如何进行加密的呢?

共享密钥加密(对称式加密)

即加密和解密使用的是同一个密钥,任何人拿到了密钥都能解密加密过的文本信息。但是这种方式缺陷也很明显,如何保证得到密钥的是服务端期望的接收端呢,因为通信本身并不安全,如果被盗取密钥,加密没有意义。

公开密钥加密(非对称式加密)

即加密和解密使用不同的密钥,公开密钥任何人都可以获得,私有密钥则只能自己知道。发送密文的一方使用对方的公开密钥进行加密处理,对方收到加密信息后使用自己的私有密钥进行解密,利用这种方式,避免了对称式加密的困境,不过相较于共享密钥加密,公开密钥加密更为复杂,处理速度更慢。注意,这里其实有一个隐性前提:加密算法无法(或需要极长时间)通过公有密钥反向破解。

HTTPS采用的是二者并用的混合加密方式,充分利用了二者的优势,既保证了安全又保证了速度。简单的说就是,交换密钥的时候使用公开密钥加密,之后建立的通信交换使用共享密钥加密。因为密钥安全送达,之后的通信就不用担心密钥被盗了。

可能出现的问题

仔细思考一下,不难发现,以上方法仍旧有漏洞,那就是无法证明公开密钥本身确实是真实的密钥,它可能在传输过程中被替换了。被替换的话可能会出现什么问题呢?

我的思考是:原本的发送方使用被更换的公开密钥进行加密,接收方接收到的加密信息是无法通过自己的私有密钥解密的,因为不是一对密钥,密钥已被更换;同时,盗取者获得了使用了自己替换的公开密钥加密的信息之后,可以使用自己的配对私有密钥对内容进行解密。如此一来,加密通信等于白干。

以上就牵涉到公开密钥正确性权威性的问题,为了解决这种问题,可以使用由数字证书机构和其相关机构颁发的公开密钥证书。数字证书机构是得到广泛认可的给密钥发放证书的,表示公开密钥是正确的,没有被替换的。但是,这里有一个但是,如果数字认证机构的证书发放系统被攻入,那么黑客可以轻易给自己的密钥颁布证书,其他人无法察觉,这种情况有真实案列!。

不难得出这样一个结论:没有绝对安全的系统或协议,人是最大的变量。

注:以上内容整理自《图解HTTP》以及自己的思考

本文已结束 ❤ 感谢阅读
觉得文章不错,赞赏站长一包辣条( •̆ ᵕ •̆ )◞ ❤
0%