摘要
本章主要介绍了从HTTP到HTTPS;
对称加密(共享密钥)和非对称加密(公开密钥);
以及身份认证方式;
未完待续额~
从HTTP到HTTPS
HTTP的缺点
- 通信使用不加密的明文传输,有可能会被监听
- 无法验证通信方身份,有可能遭遇伪装
- 无法验证传输信息的完整性,有可能内容遭到篡改
针对缺点1:通信使用不加密的明文传输,有可能会被监听
通信加密
HTTP协议没有机密机制,但是可以结合SSL(secure socket layer 安全套接层)或者TLS(transport layer security 安全传输层协议)
加密通信内容
与SSL组合使用的HTTP称为HTTPS(HTTP secure 超文本传输安全协议)
内容加密
由于HTTP协议不具有加密机制,因此可以对传输的内容主体进行内容加密
不同于通信加密,对整个通信线路
进行加密
仅仅对内容加密仍然存在内容被篡改的危险
针对缺点2:无法验证通信方身份,有可能遭遇伪装
由于HTTP机制实现本身非常简单,不管是谁发过来的请求,服务器能响应的都会响应
无法确定是不是真的接收请求的服务器
无法确定是不是真的接收响应的客户端
无法阻止海量请求下的DOS攻击(denial ofservice 拒绝服务攻击)
SSL使用证书
来验证信息
所谓证书是由可信赖的安全的第三方机构颁布的,以此验证身份(身份证
;许可证
)
针对缺点3:无法验证传输信息的完整性,有可能内容遭到篡改
MD5算法生成散列值作为数字签名*(不过散列值也可能被修改)
HTTPS
HTTP + 加密 + 通信方人证 + 文件完整性检验 = HTTPS
对称加密和非对称加密
对称加密
也被称为共享密钥加密
通信双方共享相同的密钥,进行加解密
对信息加密的算法是公开的,但是密钥是保密的
加密和解密信息都需要密钥
但是一方进行加密时需要将密钥转交给解密的一方,很难保证转交密钥的安全性(因为如果转交密钥安全,那么传递信息也就安全了)
非对称加密
公开密钥加密方式很好的解决了共享密钥(对称加密方式)
公开密钥使用一堆非对称的密钥,一把称作私钥,一把称为公钥
公钥任何人都可以获得,而密钥不能让任何人获得
流程
发送信息的一方使用对方的公钥进行加密
然后接收方收到之后,使用自己的密钥进行解密
这样就不需要将密钥进行发送
HTTPS采用两者混合的加密机制
非对称加密方式更加安全,但是处理速度更慢
在交换密钥环节使用更安全的非对称加密,之后建立起通信交换报文阶段就使用速度更快的对称加密方式进行数据传输
缺陷
即使是非对称加密,也存在缺陷,例如无法确认收到的公开密钥就是理想的服务器发布的公开密钥
为了解决这个问题,可以使用由数字证书认证机构和其相关机构颁布的公开密钥证书
这是可信赖的第三方组织,不过,如何转交安全的公钥依然存在风险,所以多数浏览器发布的版本内部会植入常用的公钥
并且HTTPS的加密通信会消耗更多的CPU资源及内存资源,比HTTP慢2到100倍
身份认证机制
HTTP1.1使用的认证机制主要有
- BASIC认证 基础认证
- DIGEST认证(摘要认证)
- SSL客户端认证
- FormBase认证(基于表单认证)
由于使用上的便携性和安全性问题,BASIC和DIGEST认证几乎不怎么使用,SSL认证虽然安全性足够,但是因为费用问题尚未普及
最常用的认证多半是基于表单认证,表单认证机制是通过服务器端的web应用,将客户端发送过来的ID和密码与注册的时候提交的数据进行匹配
基于表单认证的标准规范尚未有定论,一般会使用cookie来管理session(会话)