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

网络层安全协议

协议栈与每一层的安全协议
协议栈与每一层的安全协议

IPsec

现有IP协议无认证、无完整性保证、无保密保证、访问控制不完备,可能面临窃听、伪造IP地址、篡改和重发等

而IPsec保障了IP级的安全性,包括:

  • 认证:确保收到的包是从包头标识的源端发出的,而且该包在传输过程中未被篡改
  • 保密:将报文加密后传输,防止第三方窃听
  • 密钥管理:密钥管理机制与密钥的安全交换相关

其用途包括:

  • 分支机构通过互联网安全互联(VPN)
  • 远程安全访问互联网
  • 与合作者建立外联网和内联网联系
  • 加强电子商务安全性

IPsec的实施方式非常多样:

  • 在主机上实施,与操作系统集成,对用户是透明的
  • 在防火墙上实施,不需要修改操作系统
  • 在路由器上实施,如VPN的实现

IPsec文档

重要的文档是1998年发布的RFC系列

  • RFC 2401:安全结构概述
  • RFC 2402:IP扩展的包认证描述(IPv4和IPv6)
  • RFC 2406:IP扩展的包加密描述(IPv4和IPv6)
  • RFC 2408:特定加密机制

IPv6必须支持这些特性而IPv4可选

  • 包认证的扩展报头成为认证头(AH),用于提供数据的源发认证和完整性保护
  • 包加密的扩展报头成为封装安全载荷(ESP),用于提供数据保密、源发认证和完整性保护
IPsec文档
IPsec文档

IPsec服务

IPsec服务
IPsec服务

安全关联SA

SA是IPsec通信双方之间对某些要素的一组安全信息参数集合,包括但不限于协议、操作模式、密码算法、认证算法、密钥、密钥生存期

关联是发送方和接收方之间的单向关系,如果需要是双向的,则需要两个SA

SA仅可由AH或ESP之中的一方提供

SA由三个参数唯一确定:

  • 安全参数索引SPI
    • 与SA相关的位串,仅在本地有意义
    • 由AH与ESP携带,使得接收方能够选择合适的SA
  • IP目的地址IPDA
    • 表示SA的目的地址
  • 安全标识协议
    • 表明是AH还是ESP

每一个IPsec的实施中都有一个数据库SADB,定义了与每个SA相关联的参数元组

对于需要处理的数据包,首先从其中解析出SPI、IPDA、Protocol,之后查找SADB:

  • DB命中,则比对SA的参数,一致则处理,不一致则丢弃
  • DB不命中,则根据数据包的方向,输入包丢弃,输出包创建新SADB并存入

而SA的使用有SPDB即安全策略数据库决定,其中的每一项定义了要保护的数据包及操作,操作包括:

  • Discard
  • bypass IPsec
  • apply IPsec

最后一种操作会认为接收的数据包已经经过安全服务

SA选择子

用于过滤输出流量,并将其映射到某个特定的SA,定义为IP集合与上层协议

对于每个要输出的IP包,首先在SPDB中比较相应域的值,寻找匹配的入口,如果存在对应的选择子,则通过对应的SA进行处理

SPDB的入口选择子包括:

  • 目的IP地址、源IP地址
  • 用户标识
  • 数据敏感性级别
  • 传输层协议
  • IPsec协议
  • 源端口和目的端口
  • IPv6报类
  • IPv6报流标签
  • IPv6报服务类型

SA参数

默认情况下,参数是两种协议都必须实现的

  • 序列号计数器:每用一次SA保护包自增1,溢出后重新协商
  • 序列号溢出标记:计数器溢出时置为1,阻止下一次发包并重新协商
  • 反重放窗口:决定输入报文是否是重放,32位计数器
  • AH信息组(AH需要实现):认证算法,密钥,密钥生存期和AH的相关参数
  • ESP信息组(ESP需要实现):加密和认证算法,密钥,初始值,密钥生存期和ESP的相关参数
  • SA生存期:计时器,生存期结束的时候必须终止
  • 协议模式:隧道模式或传输模式
  • Path MTU:任何遵从的最大传送单位路径和迟滞变量

SA组合

由于单个SA只能实现AH或ESP中的一种,因此如果需要对曾读物,则需要指定一个SA序列,包括两种方式:

  • 传输邻接:对一个IP包使用多个安全协议,而组合AH与ESP的方法仅允许一级组合(因为传输模式不改变IP头)
  • 隧道迭代:通过隧道模式应用多层安全协议

协议模式

AH和ESP均支持传输模式和隧道模式

传输模式

对上层协议与IP包载荷提供保护

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

传输模式通常用于主机之间的端到端通信

IPsec传输模式
IPsec传输模式

隧道模式

对整个IP包提供保护

  • 整个数据包和安全域被当作一个新的IP载荷,并拥有一个新的外部IP报头
  • 途中经过的路由器不能检查内部IP报头
  • 隧道模式ESP加密和认证(可选)整个内部IP包,包括内部IP报头
  • 隧道模式AH=】认证整个内部IP包和外部IP报头的选中部分
IPsec隧道模式
IPsec隧道模式

AH

支持数据完整性与IP包的认证,认证是基于MAC码进行的

AH认证头包括:

  • Next header:标识数据载荷中的封装方式或者协议,8 bits
  • Payload length:有效载荷长度,8 bits
  • Reserved:16 bits
  • SPI:伪随机值,全0代表没有SA,32 bits
  • Seqence Number:计数器,防止重放攻击,32 bits
  • Authentication Data:变长,包含完整性校验值ICV或包的MAC,32*n bits
AH认证头
AH认证头
AH处理输入数据包
AH处理输入数据包
AH处理输出数据报
AH处理输出数据报

处理数据报的过程可能需要加入滑动窗口,以防范重放攻击

反重放攻击

避免攻击者反复发送经过认证的包,这个在发送方由报头中的序列号保证,但是由于IP是无连接的,因此接收方需要使用滑动窗口

窗口的右边界NN为最大的可接受的序号,窗口大小为WW

  • 在窗口中且新包,则验证MAC,通过则标记位置
  • 超过右边界且新包,则验证MAC,通过则更新右边界并标记位置
  • 如果在左边界之外、该序列号已被标记或包未通过验证,则丢弃

ICV

完整性校验值,是一种MAC或MAC的截断

规范有:

  • HMAC-MD5-96
  • HMAC-SHA-1-96

计算MAC的过程中,我们令:

  • 在IP报头中,传输过程中不变的部分和AH SA终点可预测的部分,其他部分全部置零
  • AH报头不计算认证数据域,其被置零
IPv4报头中的可变部分
IPv4报头中的可变部分

协议模式

  • 当服务器提供传输模式认证时,可以直接使用传输模式
  • 反之,工作站向防火墙证明自己身份,可以使用隧道模式

ESP

ESP报文头
ESP报文头

大部分与AH相同,其中Padding的作用是:

  • 保证明文长度与加密算法要求的一致
  • 保证对齐
  • 隐藏payload的实际长度

假设源报文为IP_head-payload,则:

  • 传输模式:IP_head-ESP_head-payload-ESP_tail-MAC
  • 隧道模式:new_IP_head-ESP_head-IP_head-payload-ESP_tail-MAC

对于数据包的处理也基本和AH相同,不同点在于SA中会指定加密方式及加密参数,需要额外进行加解密的操作

ESP处理输入数据包
ESP处理输入数据包
ESP处理输出数据报
ESP处理输出数据报

IKE

即Internet Key Exchange,为IPsec提供了自动协商交换密钥、建立安全关联SA的服务,还可以扩展到其他网络保密协议的安全参数协商过程中

核心技术为DH密钥交换算法,使得IKE具备了完善的前向安全性(指一个密钥被破解,并不影响其他密钥的安全性,这些密钥间没有派生关系)

IKE的作用为:IKE不但可自动地为参与通信的实体协商安全关联SA,还可以维护安全关联数据库SADB

  • 降低手工配置复杂度
  • 安全关联SA定时更新
  • 密钥定时更新
  • 允许IPsec提供反重放服务
  • 允许在端与端之间动态认证

报文格式

继承自ISAKMP,因此也称ISAKMP格式,利用UDP的500端口进行传输,每个ISAKMP报文由一个定长的报文头和不定数量的载荷构成

IKE报文格式
IKE报文格式

报文头包括:

  • Initiator Cookie:发起者Cookie,32 bits
  • Responder Cookie:应答者Cookie,32 bits
  • Next Payload:第一个载荷类型,8 bits
  • MjVer:主版本号,4 bits
  • MnVer:次版本号,4 bits
  • Exchange Type:密钥交换类型,8 bits
  • Flags:属性定义,只定义了最低三位,其余位全0,8 bits
    • [0]:加密位,表示载荷是否加密
    • [1]:约束位,用于同步密钥交换
    • [2]:认证位,表示载荷是否有认证
  • Message ID:标志第二阶段密钥协商对话,由对话发起者生成的随机数,32 bits
  • Total Message Length:报文总长度,32 bits

每一个载荷的载荷头包括:

  • Next Payload:后继载荷类型,最后一个载荷对应0,8 bits
  • Reserverd:保留字,置零,8 bits
  • Payload Length:包括头的载荷长,16 bits

不同类型的载荷为:

  1. SA载荷,用来协商安全属性,指明解释域和状态
  2. Proposal载荷,包含在SA载荷中
  3. Transform载荷,总是包含在Proposal载荷内
  4. Key Exchange载荷,传送密钥的各类信息,可为Oakley/DH等所用
  5. Identification身份认证载荷,传送身份信息
  6. Certificate证书认证载荷,传送证书和相关信息
  7. Certificate Request证书请求载荷,向对方要求证书和相关信息
  8. Hash载荷,传送Hash函数的结果
  9. Signature签名载荷,传送数字签名信息
  10. Nonce载荷,传送大随机数,可以防止重放攻击
  11. Notification通知载荷
  12. Delete删除载荷,通知对方删除某个或多个SA
  13. Vendor ID供应商载荷,提供了一种扩展手段

体系结构

使用了两个阶段的ISAKMP框架

  • 创建一个通信信道,并进行验证,为IKE SA
    • 主模式:6次交互
    • 快速模式:3次交互
  • 使用第一阶段的IKE SA建立IPsec SA
    • 快速模式:3次交互

第一阶段

建立一个经过验证的安全通道,为后续的协商提供机密性和完整性保护

其中,主模式提供了对通信双方的身份保护,当身份保护不必要的时候,可以使用积极模式减少信息传输,提高效率

IKE第一阶段主模式
IKE第一阶段主模式

消息1/2:双方就散列函数、加密算法、认证方法、IKE SA协商的时间限制等进行了协商
消息3/4:双方采用DH密钥交换算法计算共享密钥,计算方法见下图
消息5/6:双方发送自己的标识信息、IP地址与主机名,并对其DH密钥交换过程中得到的三个密钥进行hash,如果hash结果一样则认证成功

DH密钥交换算法
DH密钥交换算法

如果其中一方的IP地址是动态的,或者要求更高的效率,可以采用快速模式

IKE第一阶段快速模式
IKE第一阶段快速模式

相当于将主模式重组为:(1, 3) - (2, 4, 6) - (5)

最终建立了IKE SA

第二阶段

基于IKE SA建立IPsec SA,一个IKE SA可以为多个IPsec SA建立服务,一次第二阶段协商可以建立多个安全关联,需要协商的参数有:

  • 加密算法:包括DES、IDEA、Blowfish、3DES、CAST等
  • 哈希算法:包括MD5、SHA、Tiger等
  • 验证方法:包括共享密钥、RSA签名、DSS签名、RSA加密、RSA加密等
  • DH组
  • 存活周期类型及长度:包括秒、千字节等
  • 密钥长度

工作模式

  • 端到端通常使用传输模式
  • 网关到网关通常使用隧道模式
  • 其他情况可以采用这两种模式的组合,例如端到网关可以采用隧道模式包裹传输模式的方法

工作过程

以守护进程的方式在后台运行,两个守护进程通过500端口的UDP协议来传递消息,其使用SADB和SPDB,和IPsec的工作方式基本相同

当需要应用IPsec但是没有SA的时候,会向IKE守护进程发送创建SA请求,守护进程查SPDB得到参数之后发出请求,开始协商,协商完成则将新SA增加到SADB中,反之由管理员配置SPDB

当需要删除SA的时候,守护进程会从SADB中删除SA,并向远程守护进程发消息,远程守护进程可以:

  • 删除SA
  • 保留SA但是除去该SA的通信权