相信大家对于HTTP都不陌生,但是HTTP在作为网络传输协议的时候,有以下几个缺点:
1. 数据采取明文传输
2. 无法确认发送者或是接收者的身份
3. 无法保证传输数据的完整性
首先,数据明文传输,是很危险的一件事情,在网络传输的过程中,所有的信息都可能被窃取,这时如果没有加密的话,那敏感的数据就会直接暴露出来。
然后,HTTP服务器对于请求是来者不拒的,不会去区分是否是合法来源的请求,一概接收,这时的请求有可能是伪装的。而接收者也不清楚得到的响应是否来自于目的服务器,还是其他来源。
最后,一份传输数据,在传输的过程中,可能会被修改或者替换,这就涉及到“中间人攻击”的知识。
所以总的来说,HTTP还是有一定的安全风险的。
而HTTPS相对于HTTP,可以说是安全以及认证的加强版。更通俗的说,HTTPS = HTTP + 加密 + 认证 +完整性检查
下面,我们分成以下几部分来阐述HTTPS的一些策略:
1. 加密
加密可以分为传输通道的加密以及数据的加密。
对于传输通道的加密,HTTPS使用了TLS和SSL作为加密的措施,首先与服务器进行SSL的通信握手,建立起一条安全的通信线路后再进行HTTP请求与响应。
另外一种是通信数据的加密。这种不像通道的加密,仍有被窃取的风险,客户端和服务端要有相对应的加密以及解密的方式。
在HTTPS中,采用的加密机制是 混合加密机制
在交换密钥阶段采用的是 公开密钥加密(非对称加密),而交换完密钥之后采取的是 共享密钥加密(对称加密)。
那么为什么要采取混合加密的方式,而不只用其中一种呢?对于非对称加密来说,虽然安全但是需要的时间和消耗会比较大;而对于对称加密来说,虽然时间快但是安全性不够,一旦密钥被窃取那就会引发安全问题。所以取其精华,去其糟粕,相互结合。
2. 认证
在HTTP协议下,你无法确定一个请求双方的身份。而在HTTPS协议下,可以通过证书的手段来认证对方的身份。
证书是由可信度高的网络协议机构颁发给服务端的,首先用私钥对服务端的公钥署数字签名,这样证书中就包含了数字签名+公钥,服务端将数字证书发送到客户端,因为数字证书机构的公钥早已经植入到客户端的浏览器中,所以可以对服务端进行认证,以确认身份。
3. 完整性
前面HTTPS的加密机制能够实现完整性的保证。