一、HTTP的不足:
1、通信使用明文(不加密),内容可能会被窃听;HTTP本身不具有加密功能,所以无法做到对通信整体进行加密。
TCP/IP是可能被窃听的网络,即使是已经加密处理的通信,也能够窃取到加密处理后的报文信息。
可以将HTTP与SSL(Secure Socket Layer,安全套接层)或TLS(TRansport Layer Security,安全层传输协议)组合使用,加密HTTP的通信内容。SSL与HTTP组合使用被称为HTTPS(超文本传输安全协议)
内容加密,将参与通信的内容本身加密的方式,不同于SSL或TLS将整个通信线路加密处理,内容仍有被篡改的风险。
二、不验证通信方的身份,因此有可能遭遇伪装;
1、 任何人都可以发起请求,服务器只要接收到请求,不管对方是谁都会返回一个响应(但也仅限于发送端的IP地址和端口号没有),因此会存在以下各种隐患:
无法确定请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器,即可能是已伪装的web服务器。
无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端,即可能是已伪装的客户端。
无法确定正在通信的对方是否具备访问权限。
无法判断请求是来自何方,出自谁手
即使是无意义的请求也会照单全收
2、使用SSL进行加密处理,使用了一种被称为证书的手段,可用于确定通信方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。伪造证书从技术角度是异常困难的一件事。
三、证明报文的完整性,所以有可能已遭篡改。
HTTP无法证明报文的完整性,所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。
请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack,MITM)
四、HTTP+加密+认证+完整性保护=HTTPS
1、SSL采用一种叫做公开密钥加密的加密处理方式。
2、近代加密方法中加密算法是公开的,而密钥是保密的,加密和解密都会用到密钥,没有密钥就无法对密码解密。
3、加密和解密同用一个密钥的方式称为共享密钥加密(Common Key crypto system),也叫做对称密钥加密。
4、公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥保密,公开密钥可以随意发布,任何人都可以获得。发送密文的一方使用对方的公开密钥进行加密处理。对方收到被加密的信息后,在使用自己的私有密钥进行解密。无需发送私有密钥,也就断绝了被盗走的可能。
5、HTTPS采用共享密钥和公开密钥加密两者并用的混合加密机制。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。公开密钥加密处理起来比共享密钥加密方式更为复杂,因此若在通信时使用公开密钥加密方式,效率就很低。
6、采用证书来证明公开密钥的正确性。
7、EV SSL证书能够证明作为通信一方的服务器是否规范,同时也可以确认对方服务器背后运营的企业是否真实存在。
8、客户端证书,用于证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。