首先介绍HTTP的缺点
- 明文传输,内容会被窃听
- 没有验证对方的身份,可能遭遇伪装
- 无法证明报文的完整性, 可能被篡改
通信加密防止被窃听
HTTP协议中是没有加密的机制的
可以通过HTTP和 SSL 或者 TLS组合使用加密通信
SSL 或者 TLS 都是属于传输层的 SSL 是 TLS的前身,主流使用的就是 TLS
内容的加密
用于对HTTP报文的内容进行加密的方式
该方式不同于 SSL或 TLS 将整个通信线路加密 处理,所以内容仍有被篡改的风险
不验证通信方的身份可以遭遇伪装
HTTP请求其实是不会验证身份的,不管请求方是谁,服务端都会给响应内容的
存在以下几种问题
1. 无法确定客户端拿到的东西是指定的服务端响应的
2. 无法确定客户端是服务器需要返回数据的客户端, 可能是伪造的客户端发过来的请求
3. 无法确定正在通信方是否具有访问权限
4. 无法判定请求是来自何方、出自谁手
5. 即使是无意义的请求也会照单全收。
无法阻止海量请求 下的 DoS 攻击(Denial of Service,拒绝服务攻击)。
查明对手的证书
HTTP协议无法确定对方,但是SSL可以用于身份确认
SSL不仅可以用于加密,还可以使用一种叫证书的手段,用于身份确认
证书是由信任的第三方机构颁发的,证明客户端和服务端是实际存在的。 伪造起来很困难的
无法证明报文完整性,可能已遭篡改
请求报文和响应报文的完整性是无法确认的,是可能被篡改报文信息的。
比如你在一个网站下载文件, 你是无法确定你下载下来的这个文件是这个网站服务器里面的文件,
可能在中途被修改了。
利用HTTPS如何防止篡改
HTTPS = HTTP + 加密 + 证书认证 + 完整性保护
HTTPS 并非是一种新的协议 只是部分通信接口用SSL和 TLS协议代替而已
对称加密
加密和解密同用一个密钥的方式 , 这种做法也是有风险的。
非对称加密
非对称加密有两把秘钥 公钥和私钥 公钥就是可以告诉任何人的秘钥 私钥就是不可以告诉别人的秘钥
发送密文的一方使用对方的公开密钥进 行加密处理,
对方收到被加密的信息后,再使用自己的私有密钥 进行解密。
利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
混合加密方式
混合加密方式 就是把两者的优势相互结合 对称加密处理速度要比非对称加密快哦
非对称加密的缺陷
非对称加密的安全性很好,但是也有缺陷
不能确定这个公开秘钥在发给服务端的过程中有没有被篡改
为了解决这个问题就使用了证书
数字证书
1. 首先后端人员会拿自己的公开秘钥去数字证书认证机构,提出公开秘钥的申请。
2. 机构对已申请的公开密钥做数字签名,返回颁发公钥证书
3. 服务端也会将这个公钥证书发给客户端
4. 客户端拿到证书,使用机构的公钥,去机构验证服务端发来的证书的数字签名
5. 一旦验证通过,客户端便可明确两件事这个公开密钥是机构认证过的,这个公钥是值得信任的。
6. 客户端以后会用这个公钥加密
7. 服务端会用自己的密钥解密
|