内容提要
Motivation(IP协议的安全缺陷、虚拟专用网)
IPSec概述(协议流程、SPD、SAD)
数据封装(IPSec:AH、IPSec:ESP)
安全参数协商(ISAKMP、IKE)
一、Motivation
1.1IP协议的安全缺陷
IP协议可能遭受欺骗攻击:伪造源IP地址
缺乏保密性和数据完整性保护
1.2虚拟专用网
二、IPSec概述
2.1IPSec安全服务:保密性、数据完整性、访问控制、数据源认证
2.2IPSec:根据安全策略对IP数据报进行安全处理
安全策略:针对安全需求给出的一系列解决方案,它决定了对什么样的通信实施安全保护以及何种安全保护。
安全处理:加密、消息认证码、重新封装
2.3IPSec的处理过程分为协商和数据交互两个阶段:
协商阶段:通信双方互相认证对方身份,并根据安全策略协商使用的加密、认证算法,生成共享的会话密钥。
数据交互阶段:通信双方利用协商好的算法和密钥对数据进行安全处理。
协商阶段:互联网密钥交换协议(IKE)
数据交互阶段:认证首部(AH)、封装安全载荷(ESP)
2.4应用IPSec,查询SAD
1.存在有效SA
根据对应参数,将数据报封装(加密、验证、添加IPSec头、IP头),然后送出
2.尚未建立SA
触发IKE协商,协商成功则走第1步,否则丢弃数据报
3.存在SA但无效
请求协商新的SA,协商成功则走第1步,否则丢弃数据报
进入处理:
收到一个数据报后,首先查询SAD。如果存在有效SA,则查询为该数据报提供的安全保护是否与安全策略要求相符。如果相符,则将还原后的数据报交给相应的高层协议模块处理或者转发;如果不相符,则丢弃该报文。
如果没有建立SA或者SA无效,则直接丢弃数据报,不会重新协商SA。
2.5安全策略(SP)
安全策略是针对安全需求给出的一系列解决方案,决定了对什么样的通信实施安全保护以及提供何种安全保护
安全策略通常以安全策略库(SPD)的形式表现,其中每条记录是一条安全策略。
SPD一般保存在一个策略服务器中,为域中的所有节点(主机和路由器)维护策略库。各节点可以将策略库复制到本地,也可以通过LDAP动态获取策略。
SPD
对于外出数据报,必须先检索SPD,确定对其应提供的安全服务。
对于进入数据报,IPSec引擎也检索SPD,判断为其提供的安全保护是否和策略规定的安全保护相符。
安全策略描述:对通信特性的描述、对保护方法的描述
SPD:通信特性描述
目的IP、源IP、名字、传输层协议、源、目的端口、数据敏感等级
以上对通信特性的描述称为:选择符
SPD:对保护方法的描述
每一份数据报,三种处理方式:丢弃、绕过、应用IPSec
如何应用IPSec?安全关联(SA)
2.6、IPSec:安全关联(SA)
2.6.1安全策略与安全关联的关系:
安全关联用于实现安全策略,是安全策略的具体化和实例化,详细定义了对一个数据报的具体处理方式。
如果安全策略是应用IPSec进行保护,则必须指向一个SA或者SA束。
6.2安全关联(SA)
6.2.1 SA是两个IPSec实体(主机或者路由器)之间的一个单工“连接”,用于规定保护数据报安全的具体安全协议、密码算法、密钥以及密钥的生存期。
SA是单向的,要么对数据报进行“进入(接收到的)“保护,要么对数据报进行”外出“(发送出去的)保护
6.2.2 每个SA用一个三元组来标识
其中,SPI:4字节的串,协商SA时指定,IPSec报文中包含SPI
其中,目的IP地址:单播、广播或者多播地址,可以为终端用户系统、防火墙或者路由器
序号计数器:32bit,用于产生AH或ESP头的序号
抗重放窗口:32bit,用于确定进入的AH或者ESP包是否为重放
密码算法及密钥:消息验证码计算算法及密钥、加密算法及密钥、初始化向量IV
安全关联的生存期:是一个时间间隔,超过这一间隔后,应建立一个新的SA或者终止通信。生存期可以用时间或者当前SA处理过的字节数为单位来计数
6.2.3IPSec协议模式
传输模式:提供对高层协议数据的保护
隧道模式:提供对整个IP报文的保护
6.3安全关联管理
安全关联管理的任务:创建SA,删除SA
手工方式:由管理员根据安全策略来维护,容易出错
自动方式:IKE,动态,适用于规模较大的情况
七、IPSec的封装:AH
7.1AH提供的安全服务
数据完整性:消息验证码
数据源发认证:消息验证码
抗重放性攻击:序列号
7.2AH的特点
不对传输的数据提供保密性,密码学运算开销小,两种工作模式:传输模式和隧道模式
7.3传输模式
如果要在两台主机之间以AH协议保护传输的数据,需要先在两台主机设置密钥,假设主机A的密钥为Key(A),主机B的密钥为Key(B)。因为AH协议使用对称加密,因此通信双方还需要对方的密钥。
AH:发送端报文封装
主机A的IPSec引擎会对要发送的数据包进行处理,在原有的IP头和高层协议(如TCP)头部之间插入一个AH头部。AH头部包含了原来IP报文的完整性校验值(ICV),封装好之后发给主机B。
此时,AH头中,next hdr=TCP
AH:接收端校验
主机B收到上述报文后,根据AH头部的信息,对数据包进行验证,以确定是否被篡改。
验证过程为:
主机B收到数据之后,根据对应SA的信息生成认证数据,并与认证头部中的认证进行比较
如果匹配,则验证成功
如果不匹配,则认为数据包无效,丢弃该数据包,并在audit log里面记录这个事件。
7.4AH头部格式
next hdr:8-bit字段,指明认证头部后面的一个首部对应的协议类型。
AH len:8-bit字段,指明认证头部的长度,以4个字节为计数单位。
Reserved:16-bit字段,保留为将来用,设置为0。
SPI:32-bit字段,IKE协商SA指定的安全参数索引,
Sequence Number:无符号32-bit、单调递增计数器值,用于防止重放攻击,该字段也是必须的。
Authentication Data:变长字段,必须是32-bit的整数倍,用于存储完整性校验值(ICV),用于进行数据源发认证和完整性校验。
AH保护数据:发送处理过程
1.查询SA,获取安全参数
2生成序列号
3.计算认证数据
4.构造IPSec报文并发送
AH保护数据:接受处理过程
1.根据<目标地址,安全协议,SPI>在SAD中查找相应的SA,如果没有找到,则丢弃该报文
2.使用滑动窗口机制验证序列号,防止重放攻击
3.验证认证数据,若通过验证,则还原数据并递交给相应的协议模块或者转发,否则丢弃。
7.4AH:隧道模式
在数据包从源主机发到局域网安全网关主机A,A会对该报文进行重新封装,在原IP头前加新IP头+AH头
此AH头中,next hdr=IP----------------判断报文是隧道模式的关键
7.5AH:ICV计算数据
IP头部中,在传输过程中不变的字段或者是在到达接收端其值可预测的字段。
AH头部,包括:Next Header,Rayload Len,Reserved,SPI,Sequence Number,和认证数据(在计算ICV值的时候置为0),及显示的填充字节(如果有的话)。
AH能和NAT一起部属吗?
NAT要修改的部分和AH认为在传输部分(用于计算ICV)冲突,那么接收端就无法通过完整性校验,从而导致数据包丢弃。因此不能一起部署。
7.6应用场景
公司有成都总公司和北京分公司,现在有两个员工分别在香港和纽约出差,为了工作都使用了VPN。
出差两员工通信:采用AH传输模式
出差员工和公司:采用AH隧道模式,员工为起点
两地公司员工通信:采用AH隧道模式
八、ESP
8.1安全服务:保密性,数据完整性,数据源发认证,抗重放攻击
8.2报文格式
8.3隧道模式
在IP头前加新IP头+ESP头,高层协议数据后面加ESP尾
8.4传输模式
在IP头后加ESP头
8.5ESP:发送数据处理过程
1.查询SAD,获取安全参数
2.报文加密
3.生成序号
4.计算认证数据
5.构造IPSec报文并发送
ESP:接收数据处理过程
1.根据<目的IP地址,安全协议,SPI>三元组查询SAD,若找不到有效SA,则丢弃报文
2.使用滑动窗口机制验证序号,防止重放攻击
3.验证认证数据,如果验证失败,则丢弃该报文
4.解密,并将还原后的报文递交给相应的协议模块,解密失败则丢弃该报文
九、安全参数协商
9.1IKE,Internet Key Exchange
IKE功能:协商SA,密钥生成,身份认证
应用层协议 UDP 端口:500
ISAKMP:交换时序和格式
Oakley:优化DH算法
SKEME:快速密钥更新的通用密钥交换技术
9.2ISAKMP
9.2.1协商过程
第一阶段,协商获得ISAKMP SA,用以保护第二阶段的协商过程
第二阶段,协商获取安全协议SA用于保护通信数据
9.2.2两个重要概念:
交换:规定了协议时序(5种协商时序:基本交换,身份保护交换、只有认证的交换、野蛮交换、通知交换)
载荷:规定了协议的语法和语义
9.2.3身份保护交换:
1.发起方发送第一个报文,包括首部和SA,SA是发起方给出的安全关联建议
2.回应方回复一个报文,包括首部和回应方选择的SA
3.发起方发送报文,包括首部、密钥交换信息和随机数
4.回应方响应一个报文,包括首部、密钥交换信息和随机数
5.发起方发送一个报文,包括首部、身份信息和认证信息,数据区受到加密保护
6.回应方回复一个报文,包括首部、身份信息和认证信息,数据区受到加密保护
9.2.4野蛮交换:
1.发起方发送一个报文,包括首部、SA、KE、Nonce和IDii
2.回应方回复一个报文,包括首部、选定的SA、KE、Nonce、IDir、AUTH
3.发起方发送一个报文,包括首部和认证信息,认证信息加密
9.2.5通知交换
用途:在ISAKMP交换过程中,如果某一方发现有差错发生,则用“通知交换”通告通信对端;用于SA管理,比如通知通信对端删除某个SA
通知交换报文用第一协商的安全参数进行保护
9.2.6报文及载荷
首部+数据区(取决于交换类型及报文类型,由载荷构成)
报文首部