• HTTP的缺点;
  • HTTPS:HTTP和SSL/TLS的组合;
  • HTTPS证书 ;
  • SSL;
  • HTTPS混合加密机制。

    疑问:

  • HTTP和HTTPS到底有什么区别?

    • 答:HTTPS是HTTP和SSL/TLS的组合,HTTP是HTTPS的一部分。
  • 既然HTTP那么多缺点,为什么不直接用HTTPS,还要继续用HTTP?
    • 答:HTTPS又慢又贵。HTTPS比HTTP消耗更大,且使用HTTP通信可以节省购买证书的开销,因此非敏感信息建议使用HTTP通信。
  • HTTPS证书和HTTPS公钥证书的区别?
    • 答:一回事
  • 支付宝不需要客户端证书么?

    • 答:方便至上,现在人的钱越来越好骗了,想当年办个网上银行还给个U盾,有个证书1年有效期来着,付钱啥的都要插U端,当时只觉得麻烦。用了支付宝还觉得神奇,哎?这东西真方便,还没有有效期哎!

      心得

      HTTP缺点

  • 易窃听:使用明文。

  • 易伪装:不验证通信方身份。
  • 易篡改:无法证明报文的完整性。

    易窃听

  • 为什么不加密是因为TCP/IP协议族的工作机制

  • 窃听非常容易,常用的 窃听工具有抓包工具(如WireShark)和嗅探器工具。
  • 解决方案

    • 将通信加密:HTTPS(HTTP Secure)
      • HTTP没有加密机制,但可以通过和SSL(Secure Socket Layer)或TLS(Transport Layer Security)组合使用,加密HTTP的内容。
      • 组合后的HTTP被称为HTTPS
    • 将内容加密
      • 仍有被篡改的风险。
      • 依然会被看到加密后的内容。

        易伪装

  • 任何人都可以发出请求,服务器也都会响应。

  • 无意义的请求也照单全收,无法阻止海量请求下的Dos(Denial of Service)攻击
  • 解决方案

  • HTTP无法证明通信报文的完整性。

  • 通信报文可能在中途遭到拦截与篡改:中间人攻击(MITM,Man-in-the-Middle attack)image.png
  • PGP、MD5
    • 一些加密方案
    • 需要用户本人亲自查证下载的文件,浏览器无法自动检查
    • 本身被改写依然存在篡改问题
  • 解决方案:SSL

    SSL

    共享密钥/对称密钥加密(common key crypto system)的困境

  • image.png

  • 发送密钥就有被窃听的风险

    SSL加密方案:公开密钥加密(Public-key cryptography)

  • image.png

  • 私钥无需发送,不存在被窃取的风险。
  • 存在问题:公开密钥可能被替换,中间人再次介入

    • 解决方案:数字证书认证机构(CA,Certificate Authority)颁发的 公开密钥证书
    • 发送公钥的时候,把公钥和证书绑在一起发送。
    • 相当于给公钥配了一个“身份证”,这个公钥是真实存在的!不是中间人伪造的!
    • image.png
    • 公开密钥数字证书相关分享:https://shimo.im/docs/xwxrR69qqyKgv8Kj/read

      证书

  • 证明组织真实性的证书:EV SSL(Extended Validation SSL Certificate)证书

    • 防止用户被钓鱼攻击(小时候玩热血江湖的时候,遇到过仿造的网站,骗子真可恶,祝天下的骗子不孕不育子孙满堂)
  • 用以确认客户端的客户端证书
    • 实际上客户端证书的使用不广泛,“让知识层次不同的用户安装证书,这本身也充满了挑战”
    • 客户端证书只能证明客户端存在,并不能证明“我是我”。
      • 小孩刷爆父母卡打赏主播。
    • 现状:只有少数使用了客户端证书,如网上银行。
      • 还记得上大学那会办过网银,有个U盾啥的像U盘一样的东西,那会还没有支付宝,这东西还有有效期,应该就是客户端证书。
      • 现在还有人用网银么?steam switch都能用支付宝/微信了。
  • 认证机构

    • 认证机构信誉第一
      • 荷兰的DigiNotar认证机构遭黑客入侵,颁布了google.com twitter.com等网站的伪造证书。
      • 贵有贵的好(但是贵的居然也翻车了,从根本上撼动了SSL的可信度)
    • 自签名证书
      • 由自认证机构颁发的证书
      • 使用openSSL开源程序,每个人都可以构建一套属于自己的认证机构(没什么用)
      • 自认证机构能够产生的作用顶多也就是自己 对外宣称“我是○○”的这种程度。
      • 熟悉的浏览器警报:
        • image.png

          HTTPS

          什么是HTTPS

  • 使用HTTPS通信时,不再使用http://,而是使用https://

  • 浏览器访问https有效的网站时,会出现小锁
    • image.png
  • 并不是应用层的新协议,而是HTTP协议的通信接口部分用SSL和TLS代替,是身披外壳的HTTP协议image.png
  • 使用SSL时,HTTP先和SSL通信,SSL再和TCP通信

    加密通信流程

  • HTTPS通信流程,详见【154-156】

    • image.png
  • 使用SSL时速度下降
    • image.png
    • 通信慢
      • 通信量增加
      • 网络负载可变慢2到100倍
    • 处理慢
      • 加密解密处理需要消耗额外的CPU资源
  • 综上,HTTPS采用混合加密机制
    • 公开密钥加密比共享密钥加密处理速度慢
    • 可以在交换密钥环节使用公开密钥加密,在交换报文阶段使用共享密钥加密。