- HTTP的缺点;
- HTTPS:HTTP和SSL/TLS的组合;
- HTTPS证书 ;
- SSL;
-
疑问:
HTTP和HTTPS到底有什么区别?
- 答:HTTPS是HTTP和SSL/TLS的组合,HTTP是HTTPS的一部分。
- 既然HTTP那么多缺点,为什么不直接用HTTPS,还要继续用HTTP?
- 答:HTTPS又慢又贵。HTTPS比HTTP消耗更大,且使用HTTP通信可以节省购买证书的开销,因此非敏感信息建议使用HTTP通信。
- HTTPS证书和HTTPS公钥证书的区别?
- 答:一回事
支付宝不需要客户端证书么?
易窃听:使用明文。
- 易伪装:不验证通信方身份。
-
易窃听
为什么不加密是因为TCP/IP协议族的工作机制
- 窃听非常容易,常用的 窃听工具有抓包工具(如WireShark)和嗅探器工具。
解决方案
任何人都可以发出请求,服务器也都会响应。
- 无意义的请求也照单全收,无法阻止海量请求下的Dos(Denial of Service)攻击
解决方案
- 使用SSL
- SSL不但提供加密,而且使用了 证书,证书足以证明客户端和服务端是存在的。
- 证书由值得信任的第三方机构颁发,伪造证书十分困难。
- 证书的工作机制
- HTTPS证书相关分享:
- 使用SSL
HTTP无法证明通信报文的完整性。
- 通信报文可能在中途遭到拦截与篡改:中间人攻击(MITM,Man-in-the-Middle attack)
- PGP、MD5
- 一些加密方案
- 需要用户本人亲自查证下载的文件,浏览器无法自动检查
- 本身被改写依然存在篡改问题
-
SSL
共享密钥/对称密钥加密(common key crypto system)的困境
-
SSL加密方案:公开密钥加密(Public-key cryptography)
- 私钥无需发送,不存在被窃取的风险。
存在问题:公开密钥可能被替换,中间人再次介入
- 解决方案:数字证书认证机构(CA,Certificate Authority)颁发的 公开密钥证书
- 发送公钥的时候,把公钥和证书绑在一起发送。
- 相当于给公钥配了一个“身份证”,这个公钥是真实存在的!不是中间人伪造的!
- 公开密钥数字证书相关分享:https://shimo.im/docs/xwxrR69qqyKgv8Kj/read
证书
证明组织真实性的证书:EV SSL(Extended Validation SSL Certificate)证书
- 防止用户被钓鱼攻击(小时候玩热血江湖的时候,遇到过仿造的网站,骗子真可恶,祝天下的骗子不孕不育子孙满堂)
- 用以确认客户端的客户端证书
- 实际上客户端证书的使用不广泛,“让知识层次不同的用户安装证书,这本身也充满了挑战”
- 客户端证书只能证明客户端存在,并不能证明“我是我”。
- 小孩刷爆父母卡打赏主播。
- 现状:只有少数使用了客户端证书,如网上银行。
- 还记得上大学那会办过网银,有个U盾啥的像U盘一样的东西,那会还没有支付宝,这东西还有有效期,应该就是客户端证书。
- 现在还有人用网银么?steam switch都能用支付宝/微信了。
认证机构
使用HTTPS通信时,不再使用http://,而是使用https://
- 浏览器访问https有效的网站时,会出现小锁
- 并不是应用层的新协议,而是HTTP协议的通信接口部分用SSL和TLS代替,是身披外壳的HTTP协议
-
加密通信流程
HTTPS通信流程,详见【154-156】
- 使用SSL时速度下降
- 通信慢
- 通信量增加
- 网络负载可变慢2到100倍
- 处理慢
- 加密解密处理需要消耗额外的CPU资源
- 综上,HTTPS采用混合加密机制
- 公开密钥加密比共享密钥加密处理速度慢
- 可以在交换密钥环节使用公开密钥加密,在交换报文阶段使用共享密钥加密。