安全 - HTTPS - b

安全 - HTTPS - b

1.HTTPS

1.1 HTTP缺点

1.1.1 通信使用明文,内容容易被窃听

  • HTTP 本身不具有加密能力,无法对通信的请求或响应加密

  • TCP/IP 是可能被窃听的网络

    • 依照TCP/IP协议族的工作机制分析,通信内容在所有的通信线路都可能被窃听
    • 即使是加密过的通信,也会被窃取到通信内容(加密过的内容)
  • 窃听手段:获取互联网上的流动数据(帧)

  • 加密:

    • 通信加密:

      使用SSL(Secure Socket Layer,安全套接层)或TLS(TranSport Layer Security)

      与SSL组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)或HTTP voer SSL

      • 用SSL建立安全通信线路后进行HTTP通信
    • 内容加密:

      内容仍有被篡改的风险

      • 对通信内容本身加密后再发送请求(前提要求客户端和服务端同时具备加密和解密机制)

1.1.2 不验证通信双方的身份,可能遭遇伪装

  • 任何人可发起请求
    • 无法确定返回的是否是源服务器真正返回的内容
    • 无法确定客户端是否是真正接收响应的客户端
    • 无法确定通信对象是否具有权限
    • 无法确定请求的发送者,发送地
    • 服务器容易受到DoS(Denial of Service, 拒绝服务攻击)
  • 应对策略:
    • 查明对方的证书
      • SSL提供了称为证书的机制
      • 证书由可信任的第三方机构颁发,证明服务端客户端真实存在

1.1.3 无法证明报文的完整性,报文可能已被篡改

  • 接收到的内容可能有误

    MITM:中间人攻击,请求或响应传输过程中,遭到攻击者拦截并篡改内容的攻击

    • 无法证明通信报文的完整性
    • 传输过程中可能受到MITM(Man-in-the-Middle attack)攻击
  • 应对策略:

    • 数字签名:
      • MD5
      • SHA-1
      • PGP(Pretty Good Privacy, 完美隐私)

1.2 HTTPS (HTTP + 加密 + 认证 + 完整性保护)

  • 身披SSL外壳的HTTP:通信接口部分用SSL和TLS
  • 通信过程:(原)HTTP直接和TCP通信 =>(现)先和SSL通信,再由SSL和TCP通信
  • SSL 采用公开加密算法(Public-key cryptography)

1.2.1 共享秘钥加密

  • 共享秘钥加密:加密解密使用同一个秘钥
  • 发送时需要将秘钥给对方

1.2.2 公开秘钥加密

  • 使用非对称秘钥(私有秘钥(private key)+ 公开秘钥(public key))

1.2.3 混合加密

  • HTTPS加密方式:共享秘钥+公开秘钥

  • 证明公开秘钥正确性的证书

  • 证书由可信赖的第三方机构颁发

  • 证明组织真实性的证书

    • EV SSL(Extended Validation SSL Certificate)
  • 确认客户端的客户端证书

    • 获取了安装有客户端证书的终端使用权限,拥有了客户端证书的的使用权限
  • 认证机构的正确性

    • 若认证机构颁发的证书本身出了问题,那么使用证书的安全性便有待考究
    • 事故:2011年7月,荷兰DigiNotar遭到黑客入侵,颁发了伪造证书
  • 自签名证书

    并不能消除服务器被伪装的风险,加可信任的第三方认证相比于此可信度更高

    • 自己构件的认证机构颁发的证书
    • 方法:使用OpenSSL开源程序搭建自己的认证机构

1.2.4 HTTPS 通信流程

  • 通信流程图:
    在这里插入图片描述
  • 加密l流程
    图片来自图解HTTP

1.2.5 加入SSL后变慢

  • 和使用HTTP相比,网络负载会慢到2-100倍

  • 类别:

    • 通信慢:连接时需要先与SSL通信
    • 处理速度慢:大量消耗内存,进行加密运算等操作
  • 硬件加速服务器提高SSL的计算速度

2.确认认用户访问身份

2.1 概述

  • 认证(一般核对一下信息):
    • 密码:本人可知字符串信息
    • 动态密码:限本人持有的设备内显示的一次性密码
    • 数字证书:限本人(终端)持有的信息
    • 生物认证:指纹和虹膜等生理信息
    • IC卡等:限本人持有的信息
  • HTTP/1.1认证方式
    • BASIC认证(基本认证)
    • DIGEST认证(摘要认证)
    • SSL客户端认证
    • FormBase认证(基于表单认证)

2.2 BASIC 认证

  • 流程:
    • 1.请求资源需要认证,服务端=>401 Authorizatin Required
      • 响应带有WWW-Authenticate字段
      • 字段内包含认证的方式(BASIC)及Request-URI安全域字符串
    • 2.客户端—>带用户密码的字符串
      • 字符串内容:经过Base64编码处理的用户名+:+用户密码
    • 3.服务端响应
      • 认证通过=>含Request-URI的资源响应
  • 缺点:
    • 破译可能性极高
    • 使用上不够灵活

2.3 DIGEST认证

  • 流程:
    • 1.请求资源需要认证,服务端=>401 Authorizatin Required
      • 响应带有WWW-Authenticate字段
      • 字段内容:质询所需质询码(随机生成)
      • 首部字段必须包含:readlm, nonce(随机字符串)
    • 2.客户端—>认证字段
      • 首部字段包含内容:
        • username
        • realm(服务器上一步的回应值)
        • nonce(服务器上一步的回应值)
        • uri
        • response
    • 3.服务端响应
      • 认证通过=>含Request-URI的资源响应,首部字段Authorization-Info写入认证成功的信息

2.4 SSL 客户端认证

  • 流程:
    • 1.服务端接到对需认证自愿的请求=>Certificate Request,要求客户端提供证书
    • 2.客户端—>证书以Client Certificate报文方式发送给服务端
    • 3.服务器验证哭护短证书验证通过后领取证书内客户端的公开秘钥,并开始HTTPS加密通信
  • 双因素认证(提供基于表单的认证和证书的组合):
    • 表单信息
    • 证书

2.5 Cookie

  • 使用Cookie管理Session,实现对用户状态的记录

3.HTTP功能追加协议

3.1 SPDY消除HTTP瓶颈

SPDY - The Chromium Projects缩短Web加载性能50%

3.1.1 HTTP瓶颈

  • 一条连接上一条请求
  • 请求由客户端开始
  • 请求首部未经压缩便发送
  • 发送冗长的首部
  • 任意数据压缩格式

3.1.2 Ajax

  • 使用JavaScript和DOM操作达到局部加载页面的通信手段
  • 效果:未解决HTTP瓶颈

3.1.3 Comet

  • 服务器端内容更新,直接给客户端返回响应,延迟应答,模拟实现向服务器端向客户端推送的功能

3.1.4 SPDY

3.1.4.1 相关信息
  • 未完全改写HTTP协议TCP/IP 与 传输层间添加 会话层
  • SPDY规定通信使用SSL
  • 仍采用HTTP建立通信连接
4.1.4.2 添加给HTTP的功能
  • 多路复用流
    • 单一TCP处理多个HTTP
  • 赋予请求优先级
    • 并发处理请求,可通过添加请求优先级控制贷款
  • 压缩HTTP首部
    • 压缩HTTP请求和响应首部
  • 推送功能
    • 指出服务器主动向客户端推送
  • 服务器提示功能
    • 主动提示客户端请求所需资源
3.1.4.3 应用
  • 将单个IP的通路多路复用,单IP下有多个站点,改善效果有所下降

3.2 全双工通信WebSocket

  • 一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后的所有通信依靠此专用协议
  • 任意一方可直接向对方发送报文
  • 支持推送
  • 减少通行量
  • 建立WebSocket:HTTP连接建立后完成一次握手

3.3 WebDAV管理文件

Web-based Distributed Authoring and Versioning

  • 可对Web服务器上内容直接进行文件复制、编辑等操作的分布式文件系统



参考书籍:【日】上野宣.图解HTTP.北京.人民邮电出版社.2014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值