文章目录
HTTP的缺点
- 通信使用明文,内容可能被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
通信使用明文可能会被窃听
按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视.
为防止窃听并保护信息,有如下几种加密方式:
通信加密
HTTP协议没有加密机制,但可以通过SSL或TLS的组合使用,加密HTTP通信内容.
与SSL组合使用的HTTP被称为HTTPS.
内容加密
把HTTP报文所含的内容进行加密处理.
伪装
不验证通信方的身份就可能遭遇伪装,HTTP协议中的请求和响应不会对通信方进行确认.也就是说存在"服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端".
在HTTP中,由于不存在确认通信方的处理步骤,任何人都可以发起请求.服务器不管对方是谁都会返回响应.
不确认通信方带来的隐患如下:
- 无法确认请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器.有可能是已伪装的web服务器.
- 无法确定相应返回到的客户端是否是按真实意图接收相应的那个客户端.有可能是已伪装的客户端.
- 无法确定正在通信的对方是否具有访问权限.因为某些web服务器上保存着重要的信息.只想发给特定用户通信的权限.
- 无法判定请求来自何方,出自谁手.
- 即使是无意义的请求也会照单全收.无法阻止海量请求下的DOS攻击.
证明身份
我们可以使用SSL确认身份,SSL不仅提供加密处理,还使用了一种被称为证书的手段.证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的.
无法证明报文的完整性
接收的内容可能有误
HTTP无法证明通信的完整性,因此极易发生数据篡改.
请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM).
防止篡改
确认报文完整性的方法常用MD5和SHA-1等散列值校验.不论使用哪种方法都需要操作客户端的用户本人亲自检查验证下载文件.
但问题是如果MD5本身被改写的话,用户也是没有办法意识到的.
HTTPS的SSL提供认证和加密处理及摘要功能,能够防止篡改.
HTTPS
HTTP+加密+认证+完整性保护=HTTPS
HTTPS是身披SSL外壳的HTTP
HTTPS并非是应用层的一种新协议.只是HTTP通信接口部分用SSL和TLS协议代替而已.
通常,HTTP直接和TCP通信.当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信.
相互交换密钥的公开密钥加密技术
SSL采用一种叫做公开密钥加密的加密处理方式.
加密和解密都会用到密钥,没有密钥就无法对密码解密.
公共密钥加密的困境
加密和解密同一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密.
以共享密钥方式加密时必须将密钥也发给对方.可究竟怎样才能安全地转交?
在互联网上转发密钥时,如果通信被监听那么密钥就会落入攻击者之手,同时也就失去加密地意义.
证明公开密钥正确性地证书
公开密钥加密方式还是存在一些问题的:那就是无法证明公开密钥本身就是货真价实的公开密钥.
为了解决上述问题,可以使用由数字证书认证机构和其他相关机关颁发的公开密钥证书.
数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上.