计算机网络安全技术 笔记5


五、网络层安全协议 IPsec

IPsec: 网络层安全协议

  • IP 协议的安全特性:
    • 无连接, 不保证顺序到达.
    • 重复包, 丢失包.
    • 设备简单, 无状态.
    • 不提供认证, 完整性, 保密性.
    • 访问控制基于 IP 地址, 不完备.
  • IPsec 保障 IP 级安全:
    • 认证, 保密, 密钥管理.
    • 在 IP 层加密(或)认证所有流量.
    • 网络层实现端到端的安全性:
      • 数据源认证机制.
      • 数据加密机制.
      • 密钥管理.
  • IPsec 的应用:
    • 分支机构通过互联网虚拟专用网安全互联.
    • 终端用户远程安全访问互联网.
    • 与合作者建立外联网和内联网联系.
    • 加强电子商务安全性.
  • IPsec 的实施:
    • 主机实现 (与操作系统集成):
      • 保障端到端安全.
      • 对用户每个会话提供安全保障.
      • 对应用透明, 不必修改用户或服务器软件.
      • 对最终用户透明.
    • 防火墙实施:
      • 无须改变操作系统.
      • 为内部所有应用提供安全服务.
    • 路由器实施:
      • 虚拟专用网 VPN.
      • 对通过公用网络的两个子网的流动数据提供安全保护.

IPsec 体系结构

文档

  • 包认证和包加密在主 IP 报头中使用扩展报头 AH/ESP 实现安全性.

  • IPv6 必须支持这些特性, IPv4 可选.

  • IPsec 文档:

    • 体系结构: IPsec 技术一般性概念、需求和机制.
    • 认证头 AH: 扩展域, 提供数据源发认证和完整性保护.
    • 封装安全载荷 ESP: 扩展域, 提供数据保密、源发认证和完整性保护.
    • 加密算法: 描述 ESP 使用的加密算法.
    • 认证算法: 描述 AH 使用的认证算法和 ESP 认证选项.
    • 密钥管理: 描述密钥管理模式.
    • 解释域 (DOI): 其他文档彼此联系需要的值, 包括算法标识及操作参数.

服务

  • IPsec 安全服务:

安全关联

  • 安全关联 SA 是 IPsec 通信双方对要素的协商, 是安全信息参数集合.

    • 包括协议、操作模式、密码算法、认证算法、密钥、生存期.
    • SA 是发送方和接收方的单向关系, 为双方通信提供安全服务.
    • 双方安全交换需建立两个 SA.
    • 安全服务可由 AH 或 ESP 提供, 但不能两者都提供.
  • SA 确定参数:

    • 安全参数索引 SPI:
      • 和 SA 相关的位串, 仅在本地有意义.
      • 由 AH 和 ESP 携带, 接收方能选择合适 SA 处理包.
    • IP 目的地址 IPDA:
      • 单一地址, 表示 SA 目的地址.
      • 用户末端系统、防火墙或路由器.
    • 安全协议标识:
      • 标识关联是 AH 或 ESP 安全关联.
  • SA 安全参数:

    • 序列号计数器 (must):

      • 32 位整数, 用于生成 AH 或 ESP 头序列号域.
      • SA 保护包时增 1, 溢出后 SA 重新协商.
      • 防范重放攻击.
    • 序列号溢出标志 (must):

      • 值 1 时产生审查事件, 阻止该 SA 继续下发数据包.
    • 反重放窗口 (must):

      • 决定输入 AH 或 ESP 报文是否是重放的计数器.

    • AH 信息组 (AH must):

      • 认证算法, 密钥, 密钥生存期和 AH 的相关参数.
    • ESP 信息组 (ESP must):

      • 加密和认证算法, 密钥, 初始值, 密钥生存期和 ESP 的相关参数.
    • SA 生存期.

      • 生存期结束, SA 终止或用新 SA 替换.
    • IPsec 协议模式 (must):

      • 隧道模式或传输模式.
    • Path MTU (must):

      • 最大传送单位路径和迟滞变量.
  • 安全关联数据库 SADB: 定义 SA.

    • IP 数据包中, SA 由 IPv4 或 IPv6 报头中目的地址唯一标识.
    • SPI 封装在 AH 或 ESP 扩展头中.
    • 收到数据包, 解析三元组 [SPI - 目的地址 - AH/ESP], 并查找 SADB:
      • 匹配的条目: 将参数与 AH 或 ESP 头中相关域比较, 一致则处理该数据包, 不一致则丢弃.
      • 没有匹配的条目: 输入包—丢弃; 输出包—创建新 SA, 存入 SADB.
    • 定义与 SA 关联的参数, 决定进行何种安全操作.
  • 选择子:

    • 大粒度区分需要和不需要 IPsec 保护的流量.
    • 通过 SPDB 定义 IP 流量与特定 SA 相关.
    • SPDB 包括定义 IP 流量子集的入口, 指向该流量 SA 的指针.
      • 多个 SPDB 入口可与一个 SA 相连.
      • 多个 SA 可与一个 SPDB 入口相连.
    • 每个 SPDB 入口由 IP 集合和上层协议定义,称为选择子.
      • 过滤输出流量, 并映射到特定 SA.
        • SPDB 中比较相应域的值, 寻找匹配入口, 可能是零或多个.
        • 存在 SA, 则选定 SA 和关联的 SPI 执行 IPsec 处理.
  • 安全策略数据库 SPDB: 使用 SA.

    • 定义、标识、管理和维护安全策略:
      • Discard: 不让包进入或外发.
      • Bypass: 不对进入或外发包进行安全服务.
      • Apply: 对外发包提供安全服务, 认为接收包已进行安全服务.
    • 包括定义 IP 流量子集的入口, 指向该流量 SA 的指针.
    • 定义 IP 流量与特定 SA 相关, 决定对哪些出入数据包进行安全操作.

传输模式与隧道模式

  • 传输模式:

    • 为上层协议提供保护, 同时增加 IP 包载荷保护.
    • 典型: 两台主机间的端到端通信.

      • 传输模式 AH 认证 IP 载荷和报头选中部分.
      • 传输模式 ESP 加密(和认证) IP 载荷, 不包括报头.

  • 隧道模式:

    • 对整个 IP 包提供保护, 加上 AH/ESP 域后, 整个数据包和安全域当作新 IP 载荷, 并拥有一个新的外部 IP 报头.
    • 新 IP 包利用隧道在网络中传输, 路由器不能检查内部 IP 报头.

      • 隧道模式 AH 认证整个内部 IP 包和外部 IP 报头选中部分.
      • 隧道模式 ESP 加密(和认证)整个内部 IP 包, 包括内部 IP 报头.

认证头 AH

  • 数据完整性: 包传输过程中内容不可更改.

  • 认证: 末端系统或网络设备对用户者应用程序进行认证, 提供流量过滤功能, 防止地址欺诈攻击和重放攻击, 基于共享公钥的消息认证码 MAC.

  • 传输模式:

    • 不修改 IP 头, 只添加 AH 头.
  • 隧道模式:

    • 整个 IP 包作为数据, 增加一个新的 IP 头、AH 头.
  • 处理接收数据包:

    • 从端口收到输入数据包, 解析 SA 三元组, 查找 SADB.
      • 查找到匹配 SA 条目, 将参数与数据包域参数比较:
        • 一致则处理; 不一致则丢弃.
      • 没有查找到匹配 SA 条目, 丢弃该数据包
    • 使用滑动窗口, 检查序列号重放.
    • 计算 ICV, 和数据包中值比较:
      • 相等则恢复数据包, 转 IP 协议栈路由; 不相等则丢弃并审计事件.
  • 处理输出数据包:

    • 从 IP 协议栈收到转发数据包, 使用选择子查找 SPDB, 获取安全策略.
    • 确定实施 IPsec 处理, 查找 SADB.
      • SA 未建立, 调用 IKE 协商新的 SA.
      • SA 已建立, 直接进行下一步.
    • 产生序列号, 防止重放攻击.
    • 选取参数计算 ICV, 转发报文.

封装安全载荷 ESP

  • 保密性: 报文内容保密和流量限制保密.

  • 认证: 与 AH 相同.

  • 填充域功能:

    • 加密算法需要明文是倍数, 填充域扩展明文长度.
    • 填充长度和邻接头域为右对齐的 32 位字.
    • 隐藏载荷实际长度, 提供部分流量保护.
  • 传输模式:

    • 不修改 IP 头, 只添加 ESP 头与 ESP 尾, 可选添加 MAC.
  • 隧道模式:

    • 整个包为数据, 增加一个新的 IP 头、ESP 头、ESP 尾, 可选添加 MAC.
  • 处理接收数据包:

    • 从端口收到输入数据包, 解析 SA 三元组, 查找 SADB.
      • 查找到匹配 SA 条目, 将参数与数据包域参数比较:
        • 一致则处理; 不一致则丢弃.
      • 没有查找到匹配 SA 条目, 丢弃该数据包
    • 使用滑动窗口, 检查序列号重放.
    • 计算 ICV, 和数据包中值比较:
      • 相等则恢复数据包, 转 IP 协议栈路由; 不相等则丢弃并审计事件.
    • 根据 SA 指定的算法/密钥/参数, 解密数据, 重构原始 IP 包, 准备路由.
  • 处理输出数据包:

    • 从 IP 协议栈收到转发数据包, 使用选择子查找 SPDB, 获取安全策略.
    • 确定实施 IPsec 处理, 查找 SADB.
      • SA 未建立, 调用 IKE 协商新的 SA.
      • SA 已建立, 直接进行下一步.
    • 产生序列号, 防止重放攻击.
    • 选取参数加密数据报.
    • 选取参数计算 ICV, 分片并转发报文.

安全关联组合

  • 单个 SA 可实现 AH 或 ESP, 但不能都实现.
  • 例: 特定流量需在主机间提供 IPsec 服务, 安全网关间提供相同流量分离服务.
  • 安全关联组合:
    • 提供特定 IPsec 服务集所需的 SA 序列.
    • 传输邻接: 不使用隧道, 对一个 IP 包使用多个安全协议, 组合 AH 和 ESP 仅允许一级组合.
    • 隧道迭代: 通过隧道应用多层安全协议, 允许多层嵌套.

IKE: 为 IPsec 管理密钥

  • IPsec 支持两种密钥管理类型:
    • 手工: 系统管理员手动配置, SA 永远存在, 小规模、结构简单网络.
    • 自动: 大型分布系统中, SA 协商产生, 复杂拓扑和高安全性网络.
  • IKE 协议简介:
    • 为 IPsec 自动协商交换密钥, 建立 SA, 维护 SADB.
    • 在不安全网络环境中, 安全建立或更新共享密钥.
    • 通用协议, 可为 SNMPv3, RIPv2, OSPFv2 等保密协议协商参数.
    • 目前只在 IPsec 得到应用.
    • 精髓:
      • 不在不安全网络上直接传送密钥.
      • 通过一系列数据交换, 通信双方计算出共享密钥.
    • 核心技术:
      • DH 秘钥交换算法, 完善的前向安全性 PFS.
      • 一个密钥被破解, 不影响其他密钥安全性, 密钥没有派生关系.
    • 混合协议:
      • ISAKMP 协议的格式和阶段.
      • Oakley 协议的模式.
      • SKEME 协议的验证公钥加密方法, 定义两种密钥交换方式.

IKE 报文格式

  • 继承自 ISAKMP.
  • 在任何传输层或 IP 层上实现, UDP 协议端口 500 传输.
  • 交换信息形式: 定长报文头, 不定数量载荷.
  • 定义 13 种载荷 (SSL 握手协议定义了 10 种).

IKE 体系结构

  • 第一阶段:

    • 协商创建通信信道 IKE SA, 对信道进行验证.

    • 为进一步 IKE 通信提供机密性、完整性及消息源验证.

    • 主模式:

      • 6 个消息交互.
      • 对通信双方的身份保护.

    • 积极模式:

      • 3 个消息交互.
      • 适用于一方地址为动态的情况.
      • 身份保护不必要, 减少信息传输, 提高协商效率.

  • 第二阶段:

    • 使用建立的 IKE SA 建立 IPsec SA.
    • 快速模式:
      • 3 个消息交互.
      • 一个 IKE SA 协商可为多个 IPsec SA 协商提供服务.
      • 协商内容与协商安全协议相关.
      • 使用快速模式信息交换, 一个第二阶段协商可建立多个 SA.

IKE 工作模式

  • 传输模式:
    • 端节点到端节点, 均实现 IPsec.
    • IP 头与数据间插入 IPsec 头, 保护数据载荷.
  • 隧道模式:
    • 安全网关到安全网关.
    • 端系统无需实现 IPsec, 网络节点完成保护功能.
    • 内部 IP 头包含实际端节点 IP 地址.
  • 工作模式: 嵌套组合.
    • 端节点到安全网关模式.
    • 外部目的地址总是安全网关的地址.
    • 内部目的地址是数据包的最终地址.

IKE 工作过程

  • IKE 以守护进程方式后台运行.
  • 启动 IKE 服务:
    • 内核提交创建 IKE SA 请求.
    • 同级 IKE 守护进程提交协商 SA 请求.
  • 两个守护进程通过 UDP 协议 500 端口传递消息.
  • 使用 SADB 和 SPDB 数据库, 保存在操作系统内核.
  • 工作过程:
    • 首先查询 SPDB, SPDB 条目隐藏指针, 决定丢弃/绕过/应用.
    • IPsec 查询 SADB, 检查合适 SA:
      • 有则进行 IPsec 处理.
      • 没有则向 IKE 守护进程发出创建 SA 请求.
    • IKE 守护进程查询 SPDB, 得到协商参数, 向远程 IKE 进程发出协商请求.
      • 协商成功, 新协商 SA 增加到 SADB.
      • 协商未成功, IKE 进程提示管理员配置 SPDB 参数.
    • 管理员指示 IKE 守护进程不再使用某 SA, IKE 守护进程从 SADB 中删除 SA, 向远地 IKE 守护进程发送删除信息.
    • 远地 IKE 进程:
      • 删除相应 SA.
      • 忽略信息, 保留相应 SA, 但不允许使用其继续通信.

IKE 不足

  • IKE 是复杂混合协议集合, 局限于为 IPsec 建立安全关联 SA.
  • 标准定义复杂, 导致理解困难, 不同实现互操作困难.
  • 协商消息往返次数多, 消耗计算以网络带宽资源.
  • 容易受到拒绝服务攻击、中间人攻击、重放攻击.

文章作者: Chengsx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chengsx !
  目录