IPsec体系
AH(Authentication Header)认证首部
提供如下3种服务:
- 数据完整性验证 通过哈希函数(如MD5)产生的校验来保证
- 数据源身份认证 通过在计算验证码时加入一个共享密钥来实现
- 防重放攻击 AH报头中的序列号可以防止重放攻击
格式、封装:……
运行模式
传输模式
AH插入到IP首部(包括IP选项字段)之后、传输层协议(如TCP、UDP)或者其它IPsec协议之前
AH验证区域是整个IP包(可变字段?除外),包括IP包首部,若源IP地址、目的IP地址修改,无法通过验证
数据包经过NAT网关时,源/目的IP地址会被改变,会造成到达目的地址后的完整性验证失败
结论:AH在传输模式下和NAT相互冲突,不能同时使用,即:AH不能穿越NAT
隧道模式
AH插入到原始IP首部之前,然后在AH之前再增加一个新的IP首部
ESP(Encapsulating Security Payload )封装安全载荷
比AH多提供两种服务:
- 数据包加密 可以对整个IP包,也可以只加密IP包的载荷部分,一般用于客户端计算机
- 数据流加密 一般用于支持IPsec的路由器,源端路由器并不关心IP包的内容,对整个IP包进行加密后传输,目的端路由器将该包解密后将原始包继续转发
加密是ESP的基本功能,而数据源身份认证、数据完整性验证以及防重放攻击都是可选的
格式、封装:……
运行模式
传输模式
加密不包括SPI、序号字段和验证数据
验证不包括IP首部,所以不存在与NAT冲突的问题
隧道模式
在隧道模式中,ESP插入到原始IP首部之前,然后在ESP之前再增加一个新的IP首部
IKE(Internet Key Exchange)
IKE协议负责密钥管理,定义了通信实体间进行身份认证、协商加密算法以及生成共享会话密钥的方法。
IKE将密钥协商的结果保留在安全关联(SA)中,供AH和ESP通信使用
IKE协议具有完善的前向安全性(PFS),即使第三方截获用于计算密钥的所有交换数据,也不足以计算出密钥。
IKE协议有两种模式:主模式和野蛮模式。主模式适用于安全通信双方之间存在安全通道的情况,而野蛮模式适用于安全通信双方之间不存在安全通道的情况。IKE协议通过交换密钥和身份验证信息,最终建立起一个安全的通信通道,用于后续的IPsec通信。
两个阶段
阶段一:通信双方彼此间建立一个已通过身份验证和安全保护的通道。此阶段的交换建立了一个ISAKMP安全关联,也可称为IKE SA
主模式
野蛮模式
阶段二:在IKE SA的保护下完成IPsec的协商(如AH SA、ESP SA)
DOI(Domain of Interpretation )
解释域,定义IKE没有定义的协商的内容,如:为使用IKE进行协商SA的协议统一分配标识符
共享一个DOI的协议从一个共同的命名空间中选择安全协议和变换、共享密码以及交换协议的标识符等
IPsec协议流程
外出处理
传输层的数据包流入IP层,以选择符检索SPD(安全策略库),判断是否需要Ipsec加密,
可能有以下几种情况:
- 丢弃:简单丢掉
- 绕过安全服务:为载荷增添IP头,然后分发IP包
- 应用安全服务:查询SAD(安全关联库),确定是否存在有效的SA
① 存在有效SA:取出相应参数,将数据报封装,然后发送
② 尚未建立SA:启动IKE协商,成功后按存在有效SA一样的步骤处理,不成功则将数据报丢弃
③ 存在SA但无效:请求协商新SA,成功后按存在有效SA一样的步骤处理,不成功则将数据报丢弃
进入处理
检查包内是否有IPsec头?
如果没有,则根据安全策略SP对包进行检查,决定如何处理:
- 丢弃:直接丢弃
- 应用安全服务:SA没有建立,包同样会被丢弃
- 将包传给上层协议处理
- 如果IP包中包含IPsec头:
I. 从IP包中提取三元组(SPI,目标地址,协议)并在SAD中检索。如果未建立SA或SA无效,直接丢弃,不再协商。
II. 根据协议值交给AH层或ESP层处理
III.协议载荷处理完之后,要在SPD中查询策略,验证SA使用是否得当。
SPD与SAD的关系
SPD(Security Policy Database,安全存策略数据库)
是IPsec协议中用于存储安全策略(SP)信息的数据库。SPD用于存储SP信息,以便在IPsec通信过程中快速查找和匹配SP。
SP(Security Policy,安全策略):
- 决定对IP数据包提供何种保护,并以何种方式实施保护
- 根据源IP地址、目的IP地址、入数据还是出数据等来标识
- IPsec还定义了用户能以何种粒度来设定自己的安全策略,不仅可以控制到IP地址,还可以控制到传输层协议或者TCP/UDP端口等
SAD(Security Association Database,安全关联数据库)
是IPsec协议中用于存储安全关联(SA)信息的数据库。SAD用于存储SA信息,以便在IPsec通信过程中快速查找和匹配SA。
SA(Security Association,安全关联)
- 两个IPsec实体(主机、安全网关)经过协商建立起来的一种协定或关联,是构成IPsec的基础
- 包括:采用何种IPsec协议(AH or ESP)、运行模式(传输模式 or 隧道模式)、验证算法、加密算法、加密密钥、密钥生存期、抗重放窗口、计数器等,从而决定了保护什么、如何保护以及谁来保护
- 使用AH还是ESP保护通信需要在SA配置,IKE则用于在通信双方间协商SA
- SA是单向的,分为进入SA和外出SA
每个SA由三元组(SPI,IP目的地址,IPsec协议)或(SPI, DST, Protocol),唯一标识
- SPI(Security Parameter Index,安全参数索引),32位,标识具有相同IP地址和相同安全协议的不同SA,放在AH或ESP的头部
- IP目的地址:SA的终端地址
- IPsec协议:采用AH或ESP
注:有时是四元组,加上源地址(SRC)
SAD中每个SA除了上述三元组之外,还包括:序列号、序列号溢出、抗重放窗口、存活时间/生存时间、模式、通道目的地、PMTU参数
关系
每当发出一个数据包时,根据SPD中对它的策略判断是否进行IPsec处理
- 如果是,从SAD中找到对应SA,然后根据SA提供的参数,对数据包进行加解密 、生成校验和、封装成AH/ESP等操作
- 如果否,则后续处理与SAD无关
每当接收到一个数据包时,判断是否包含IPsec头
- 如果是,从SAD中找到对应SA,提交给AH/ESP等操作。根据SPD判断处理是否符合安全策略。
- 如果否,按照丢弃、不用IPsec和使用IPsec(丢弃)判断处理。
IPsec的实现方式
主机实施
OS集成
作为网络层的一部分来实现
堆栈中的块
BITS(Bump-in-the-stack), 作为一个“楔子”插入网络层与数据链路层之间,
路由器实施
原始实施:等同于主机上的OS集成方案,集成在路由器软件,如Cisco
BITW(Bump-in-the-wire):等同于BITS,在设备中实施,直接接入路由器的物理接口,不运行路由算法,只保障数据包的安全