http通信有一些什么问题
- 窃听 - 对称加密
- 传递密钥 - 非对称加密
- 安全速度 - 非对称加密 + 对称加密
- 中间人攻击 - 证书
- 证书伪造 - 消息摘要
- 摘要伪造 - 数字签名
可能被窃听
- http本身不具备加密功能,http报文使用明文方式发送
还可能存在验证问题
- 无法确认发送到的服务器就是真正的目标服务器(可能是伪装的服务器)
- 无法确定返回的客户端是否是按照真实意图接受的客户端(可能是伪装的客户端)
- 无法确定正在通信的对方是否具备访问权限,web服务器上某些重要的信息,只想发给特定用户即使是无意义的请求也会照单全手。无法阻止海量请求下的DoS攻击
- 可能被篡改,在请求或者响应的传输途中,遭攻击者拦截并篡改内容的攻击(中间人攻击)
对称加密
- 常见的有AES-CBC、DES、3DES、AES-GCM等,相同的密钥可用于信息的加密和解密,掌握密钥才能获取信息,能够防止信息窃听,这种方式是一对一的,对称加密需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和多个客户端通信需要维持多个密码记录,且缺少修改密码的机制;
- 优点:算法公开、计算量小、加密速度快,加密效率高。
- 缺点:双方使用同样的钥匙,安全性得不到保证。
非对称加密
- 常见的RSA算法,还包括ECC,DH等算法,算法特点是密钥成对出现,一般称为公钥和私钥,公钥加密的信息只能私钥解开,私钥加密的信息只能公钥解开,因此掌握公钥的不同客户端之间不能相互解密信息,只能和掌握私钥的服务器端解密,服务器可以实现1对多的通信,客户端也可以用来验证掌握私钥的服务器身份。
- 非对称加密的特点是信息传输1对多,服务器只需要维持一个私钥就能够对多个客户端进行加密通信,但服务器发出的信息能够被所有的客户端解密,且该算法计算复杂加密速度慢
完整性验证算法
- 常见的有MD5,SHA1、SHA256该函数的特点是单向不可逆,对输入非常敏感,输出长度固定,针对数据的任何修改都会改变散列函数的结果,用于防治信息篡改并验证数据的完整性;
- 在信息传输过程中,散列函数不能单独实现信息防篡改,因为明文传输,中间人可以修改信息之后重新计算信息摘要,因此需要对传输的信息以及信息摘要进行加密