1、HTTP的缺点:
HTTP的不足之处举例如下:
a.通信使用明文(不加密),内容可能会被窃听;
b.不验证通信方的身份,因此有可能被窃听;
c.无法验证报文的完整性,所以有可能遭篡改;
注:这些问题,不止在HTTP上会出现,在其他未加密的协议中也会存在。
1.1.通信使用明文可能会被窃听
由于HTTP本身不具备加密功能,所以也无法做到对通信整体(使用HTTP协议请求和响应的内容)进行加密。即HTTP报文以明文(未经加密的报文)的方式发送。
1.2.不验证通信方的身份有可能会遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。
1.3.无法验证报文的完整性可能已遭篡改
所谓的完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。
2.HTTP + 加密 + 认证 + 完整性保护 = HTTPS
2.1.HTTP加上加密处理和认证以及完整性保护就是HTTPS。
2.2.HTTPS是身披SSL外壳的HTTP。
HTTPS并不是应用层的一种新的协议,只是HTTP通信接口部分用SSL和TLS协议代替而已。
HTTP和HTTPS
2.3.相互交换密钥的公开密钥加密技术
SSL采用的是一种叫公开密钥加密的加密处理方式。
近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这种方式得以保持加密算法的安全性。
加密和解密都会用到密钥。没有密钥就没有办法对密码进行解密,反过来说,任何人只要持有密钥就可以解密了。如果密钥被攻击者获得,那么加密也就失去的了意义。
2.3.1.共享密钥加密的困境:
加密和解密同用一个密钥的方式称为共享密钥加密,也称为对称加密。
共享密钥加密的困境:
以共享密钥的方式加密,需将密钥发送给对方,可究竟怎样才能安全的转交?在互联网上,如果通信被监听,那么密钥可能会落入攻击者手中,同时也就失去了加密的意义。
2.3.2.使用两把密钥的公开密钥加密:
公开密钥加密很好的解决了共享密钥加密的困境。
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。顾名思义,私有密钥不能让其他人知道,而公开密钥可以随意发布,任何人都可以获取。
使用公开密钥加密的方式,发送密文的一方使用对方公开的密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不用担心密钥被攻击者窃听盗走。
另外,要想根据密文和公开密钥,恢复到信息原文是非常困难的,因为解密过程就是在对离散对数求值,这并不是轻易就可以做到。
2.3.3.HTTPS采用混合加密机制:
HTTPS采用共享密钥加密方式和公开密钥加密两种加密方式混合加密机制。若密钥可以能够实现安全交换,则使用共享密钥加密方式来通信。但是公开密钥加密方式比共享密钥加密方式处理速度要慢。2.4.证明公开密钥正确性的证书
公开密钥加密还是有问题,即无法证明公开密钥本身就是货真价实的密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输的过程中,真正的公开密钥已经被攻击者替换掉了。
为了解决以上问题,可以使用由数字证书机构和相关机关颁发的公开密钥证书。
2.5.HTTPS通信机制
HTTPS通信机制
2.6.为什么不一直用HTTPS?
因为和纯文本通信相比,加密通信会消耗更多的CPU及内存资源。
网友评论