计算机网络安全技术 笔记 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服务

安全关联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载荷和报头的选中部分
传输模式通常用于主机之间的端到端通信

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

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



处理数据报的过程可能需要加入滑动窗口,以防范重放攻击
反重放攻击
避免攻击者反复发送经过认证的包,这个在发送方由报头中的序列号保证,但是由于IP是无连接的,因此接收方需要使用滑动窗口
窗口的右边界为最大的可接受的序号,窗口大小为
- 在窗口中且新包,则验证MAC,通过则标记位置
- 超过右边界且新包,则验证MAC,通过则更新右边界并标记位置
- 如果在左边界之外、该序列号已被标记或包未通过验证,则丢弃
ICV
完整性校验值,是一种MAC或MAC的截断
规范有:
- HMAC-MD5-96
- HMAC-SHA-1-96
计算MAC的过程中,我们令:
- 在IP报头中,传输过程中不变的部分和AH SA终点可预测的部分,其他部分全部置零
- AH报头不计算认证数据域,其被置零

协议模式
- 当服务器提供传输模式认证时,可以直接使用传输模式
- 反之,工作站向防火墙证明自己身份,可以使用隧道模式
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中会指定加密方式及加密参数,需要额外进行加解密的操作


IKE
即Internet Key Exchange,为IPsec提供了自动协商交换密钥、建立安全关联SA的服务,还可以扩展到其他网络保密协议的安全参数协商过程中
核心技术为DH密钥交换算法,使得IKE具备了完善的前向安全性(指一个密钥被破解,并不影响其他密钥的安全性,这些密钥间没有派生关系)
IKE的作用为:IKE不但可自动地为参与通信的实体协商安全关联SA,还可以维护安全关联数据库SADB
- 降低手工配置复杂度
- 安全关联SA定时更新
- 密钥定时更新
- 允许IPsec提供反重放服务
- 允许在端与端之间动态认证
报文格式
继承自ISAKMP,因此也称ISAKMP格式,利用UDP的500端口进行传输,每个ISAKMP报文由一个定长的报文头和不定数量的载荷构成

报文头包括:
- 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
不同类型的载荷为:
- SA载荷,用来协商安全属性,指明解释域和状态
- Proposal载荷,包含在SA载荷中
- Transform载荷,总是包含在Proposal载荷内
- Key Exchange载荷,传送密钥的各类信息,可为Oakley/DH等所用
- Identification身份认证载荷,传送身份信息
- Certificate证书认证载荷,传送证书和相关信息
- Certificate Request证书请求载荷,向对方要求证书和相关信息
- Hash载荷,传送Hash函数的结果
- Signature签名载荷,传送数字签名信息
- Nonce载荷,传送大随机数,可以防止重放攻击
- Notification通知载荷
- Delete删除载荷,通知对方删除某个或多个SA
- Vendor ID供应商载荷,提供了一种扩展手段
体系结构
使用了两个阶段的ISAKMP框架
- 创建一个通信信道,并进行验证,为IKE SA
- 主模式:6次交互
- 快速模式:3次交互
- 使用第一阶段的IKE SA建立IPsec SA
- 快速模式:3次交互
第一阶段
建立一个经过验证的安全通道,为后续的协商提供机密性和完整性保护
其中,主模式提供了对通信双方的身份保护,当身份保护不必要的时候,可以使用积极模式减少信息传输,提高效率

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

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

相当于将主模式重组为:(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的通信权