IPSec(Internet Protocol Security):是一组基于网络层的,应用密码学的安全通信协议族。IPSec不是具体指哪个协议,而是一个开放的协议族。
1992年,互联网工程任务组(IETF)成立了IP安全工作组,以规范对IP的公开指定的安全扩展,称为IPsec。1995年,工作组批准了NRL开发的IPsec标准,从RFC-1825到RFC-1827发布,NRL在1996年USENIX会议论文集中,描述 NRL 的开放源代码IPsec,由麻省理工学院在线提供,并成为大多数初始商业实现的基础。
网络传输中,数据被窃听、篡改、伪装的问题不断发生,IP网络安全性问题已经暴露出来。IETF在RFC2401中描述了IP的安全体系结构IPSec(Internet Protocol Security),用以保证在IP网络上传输数据的安全性。IPSec协议定义了如何在IP数据包中增加字段来保证IP包的安全性、私有性和真实性,以及如何加密数据包。IPSec不是具体指哪个协议,而是一个开放的安全标准构成。IPSec不受限于任何一种特定算法,而是引入多种加密算法、验证算法和密钥管理机制。
IPSec实现访问控制、机密性、完整性校验、数据源验证、拒绝重播报文等安全功能。IPSec是运行在IP网络层,其上层TCP、UDP以及依赖于这些协议的应用协议都受到隧道的保护。
IPSec虚拟专用网:就是利用开放的公众IP/MPLS网络建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。这个专用数据传输通道称为IPSec隧道,位于OSI模型的第三层,传送IP包。
IPSec的中间设备,在主机、路由器、防火墙硬件设备上实现。又称为"安全网关",安全网关之间可以利用IPsec对数据进行安全保护,保证数据不被偷窥或篡改。
IPSec虚拟专用网的缺点:配置复杂难以部署、消耗运算资源较多、增加延迟、不支持组播(只能对点到点的数据保护) 、不利于语音视频实时这种要求高的应用。
IPsec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构:
1、安全协议:
2、IKE(Internet Key Exchange,因特网密钥交换)密钥交换协议。
3、用于网络认证及加密的一些算法等。
AH或ESP安全服务的工作模式:
IPsec获取密钥的两种途径:
手工配置:管理员为通信双方预先配置静态密钥,这种密钥不便于随时修改,安全性低,不易维护。
通过IKE协商:IPsec 通信双方可以通过IKE动态生成并交换密钥,获取更高的安全性。
1、传输模式(Transport mode):
计算机终端之间的端对端传输,AH和ESP直接用于保护上层协议,OSI的第四层传输层。传输点也是加密点。
2、隧道模式(Tunnel mode):
用于站点到站点(site-to-site)之间的安全传输,运用AH或者ESP对这些数据进行保护。传输点不等于加密点。
IPSec对数据流提供安全服务通过SA(Security Association,安全联盟)来实现。SA是通信双方如何保障安全协商的一个结果,包含协议、算法、密钥等内容,具体确定了如何对IP报文进行处理。
每个IPSec SA都是单向的,具有生存周期的。一个SA就是两个IPSec系统之间的一个单身逻辑连接,入站数据流和出站数据流由入站SA与出站SA分别处理。两个对等体之间的双向通信,至少需要两个SA。
一个SA由一个(SPI安全参数索引,IP目的地址,安全协议标识符)三元组唯一标识。
安全联盟建立方式:手工方式和IKE自动协商方式。二者的主要区别为:
SA的生存时间(Life Time)一种是以时间进行限制,一种是以流量进行限制(达到多少字节进行更新)。
生存时间不同:
专业术语:
安全策略(Crypto Map):由用户手工配置,规定对什么样的数据流采用什么样的安全措施。对数据流的定义是通过在一个访问控制列表中配置多条规则来实现,在安全策略中引用这个访问控制列表来确定需要进行保护的数据流。一条安全策略由“名字”和“顺序号”共同唯一确定。
SPI(Security Parameter Index),安全参数索引,用于区分多个SA。
SPD(Security Policy Database,安全策略数据库)在RFC4301中定义,保存安全策略,在处理进入和外出包时,需查阅SPD,以判断为这个包提供哪些安全服务,具体策略包括丢弃、直接转发或应用安全服务处理等。理解为对哪些数据提供哪些服务。
SAD(Security Association Database,安全联盟数据库)维护IPSec协议中的所有SA。
举例:在出站口路由器A,首先与SPD中的策略作比较,有相应的安全服务项目,则对该数据对应的SA及算法进行加密。如不存相应的SA,系统就新建立一个SA。
(1)、查找SPD(安全策略数据库),有三种结果:丢弃、旁路安全服务、提供安全服务。
(2)、系统从SAD(安全联盟数据库)中查找 查找IPSec SA。如果找到,则利用此查找IPSec SA的参数对此数据包提供安全服务,并进行转发;如果没有找到,则系统需要创建一个查找IPSec SA。
(3)、系统转向IKE(因特网密钥交换)协议数据库,查找合适的IKE SA,以便为IPSec协商SA。如果找到,则利用此IPSec SA协商IPSec SA;如果没有找到,系统需要启动IKE协商进程,创建一个IKE SA。
路由器B收到隧道传送的IPSec数据包,系统会提取其SPI、IP地址、协议类型等信息,查找相应的IPSec SA,然后根据SA的协议标识符,选择合适的协议(AH或ESP)解封装,获得原IP包,再将IP包发送到对应IP地址的终端设备。
AH(Authentication Header,验证头)是报文验证头协议,主要提供数据源验证、数据完整性校验和有限的防报文重播功能。AH不能提供加密功能,因此不能保证机密性。标准RFC 2402(已被RFC 4302取代)。IP协议号51。
AH 协议通过使用带密钥的验证算法,对受保护的数据计算摘要。通过使用数据完整性检查,可判定数据包在传输过程中是否被修改;通过使用认证机制,终端系统或网络设备可对用户或应用进行认证,过滤通信流;认证机制还可防止地址欺骗攻击及重放攻击。
1、Next Header下一个报头 :长度为8位。使用IP协议 ID来标识IP负载。例如,值 6 表示 TCP。
2、Payload Length负载长度:长度为8位,用于指示AH长度减2,单位是"32位"。这里因为AH也是一个IPv6扩展头,根据RFC2460规定,所有IPv6扩展头必须把负载长度值减去一个“64位”。
3、Reserved保留:长度16位,为将来保留,现必须设置为0
4、SPI安全参数索引 :与目标地址及安全协议(AH 或 ESP)组合使用,以确保通信的正确安全关联。接收方使用该值确定数据包使用哪一安全(SA)关联标识。
5、Sequence Number Field序数 :为该数据包提供抗重播保护。序数是 32 位、递增的数字(从 1 开始),它表示通过通信的安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果一个已经被接收,则数据包被拒绝。
6、Authentication Data身份验证数据 :包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV 值并对照发送方计算的值校验它,以验证完整性。ICV 是通过 IP 报头、AH 报头与 IP 负载来计算的。 为兼容性考虑,AH强制实现HMAC-MD5-96和HMAC-SHA-1-96两种验证算法。
AH使用HMAC算法计算Authentication Data身份验证数据,为确保包括IP头、AH头和载荷在内的整个包的完整性和正确来源,AH的HMAC以IP头、AH头、载荷以及共享密钥作为算法的输入,并将其ICV走入Authentication Data字段。
在使用AH协议时,AH协议首先在原数据前生成一个AH报文头,报文头中包括一个递增的序列号(Sequence number)与验证字段(空)、安全参数索引(SPI)等。
AH 协议将对新的数据包进行离散运算,生成一个验证字段(Authentication Data),填入AH头的验证字段。
在数据转发过程中,IP头的一些部分是变化的(如ToS优先级和服务类型、Flags标识、Fragment Offset分片偏移、TTL生存时间、Header Checksum首部校验和等),因此在计算ICV之前,必须把这些字段设置成0。Authentication Data字段也加入了ICV计算,所以在计算时,此字段也设置0。
隧道模式,在整个原IP包将会以AH载荷的方式加入新建的隧道数据包,AH保护是整个原IP包。
RFC 2406 为IPSec定义了ESP(Encapsulating Security Payload,安全封装载荷) 协议。ESP协议将用户数据进行加密后封装到IP包中,以保证数据的私有性。同时作为可选项,用户可以选择使用带密钥的哈希算法保证报文的完整性和真实性。ESP的隧道模式提供了对于报文路径信息的隐藏。ESP用IP协议号50标识。
ESP协议保证数据的机密性、数据的完整性校验和源验证、一定的抗重播能力。
ESP包含ESP头和ESP尾两部分。
1、ESP报头
(1)、SPI安全参数索引:SPI是一个任意的32位值,与目标地址及安全协议(AH 或 ESP)组合使用时,确保通信的正确安全关联。接收方使用该值确定应该使用哪个安全相关联标识此数据包。
(2)、Sequence Number串行号:为该数据包提供抗重播保护。串行号是 32 位、递增的数字(从 1 开始),它表示通过通信的快速模式安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果有已被接收的数据包,则其将被拒绝,防御重放攻击。
2、Payload Data载荷:实际要传输的数据。可变长度,它的长度是字节的整数倍。如果用于加密载荷算法需要密码同步数据,比如初始向(IV),那么这个数据可以显式地装载在载荷字段中。ESP强制实现的基本加密算法是DES-CBC。
3、ESP尾端包含下列字段
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
与传输模式下报文封装不一样的是,隧道模式是对整个内部IP 报文进行加密。ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
安全特性 | AH | ESP |
---|---|---|
协议号 | 51 | 50 |
数据完整性校验 | 支持(验证整个IP报文) | 支持(不验证IP头) |
数据源验证 | 支持 | 支持 |
数据加密 | 否 | 支持 |
防报文重播攻击 | 有限支持 | 支持 |
IPSec NAT-T(NAT穿越) | 否 | 支持 |
IKE(Internet Key Exchange,因特网密钥交换)是由RFC2409中定义的。
IKE建立在由Internet安全联盟和密钥管理协议定义的一个框架上,沿用ISAKMP基础,Oakley模式和SKEME的共享和密钥更新技术。
IKE的精髓在于永远不在不安全的网络上直接传送密钥,而是通过一系列的数据交换,通信双方最终计算出共享密钥。其核心技术就是DH(Diffie Hellman)交换技术。
IKE使用两个阶段的ISAKMP。第一阶段建立IKE安全联盟。第二阶段利用这个安全联盟为其他协议(如IPSEC)协商具体安全联盟。
第一阶段定义了两种模式,主模式和野蛮模式。第二阶段快速模式。
IKE 是UDP 之上的一个应用层协议,是IPSEC 的信令协议。
IKE的作用:
IKE的包含主要内容:
IKE的三个组件:
IKE有两个版本:
IKEv2介绍:
ISAKMP(Internet Security Association and Key Management Protocol,安全密钥管理协议)
在 IKEv1 版本中为Cookie:在IKEv2版本中Cookie为IKE的SPI,标识唯一IKE SA。
Major Version:使用的 ISAKMP 协议的主要版本。原的IKE被称为IKEv1,改进后的IKE被称为IKEv2.
Minor Version: 使用的 ISAKMP 协议的次要版本。
Exchange Type:
IKE定义的交换类型。交换类型定义了 ISAKMP消息遵循的交换顺序,后面IKEv1中的主模式、野蛮模式、快速模式,IKEv2中的初始交换、子SA交换都属于IKE定义的交换类型。
Flags:为 ISAKMP 交换设置的各种选项。
Message ID:唯一的信息标识符,用来识别第2阶段的协议状态。
Next Playload:
标识消息中下一个载荷的类型。一个ISAKMP报文可能装载多个载荷,该字段提供载荷之间"链接"能力。若当前载荷时消息中最后一个载荷,则该字段为0。
Length:全部信息(头+有效载荷)长(八位)。
ISAKMP Payload(Type Payload): 载荷类型,ISAKMP报文携带的用于协商IKE SA 和 IPSec SA 的"参数包"。载荷类型由很多种,不同在和携带的"参数包"不同。
在出站口路由器A,首先IPSec网络安全体系首先在SPD安全策略数据库查询,有相应的安全服务项目,说明需要安全服务,就会在SAD安全联盟数据库查询,是否有相应的IPSec SA。SA的建立通过两种方式:手工方式建立的SA、IKE自动协商建立的SA。
IKE与IPSec的关系:
IKE经过两个阶段为IPSec进行密钥协商并建立安全联盟
IKE使用DH交换建立共享密钥,身份认证,在网络上建立一个IKE安全通道。
第一阶段交换有两种协商模式:
第一阶段协商建立IKE安全通道所使用的参数:
身份认证:身份认证确认通信双方的身份(对等体的IP地址或名称),包括预共享密钥PSK(pre-shared key)认证、数字证书RSA(rsa-signature)认证和数字信封认证。
预共享密钥PSK认证:认证字作为一个输入来产生密钥,通信双方采用共享的密钥对报文进行Hash计算,判断双方的计算结果是否相同。如果相同,则认证通过;否则认证失败。
数字证书RSA认证:通信双方使用CA证书进行数字证书合法性验证,双方各有自己的公钥(网络上传输)和私钥(自己持有)。发送方对原始报文进行Hash计算,并用自己的私钥对报文计算结果进行加密,生成数字签名。接收方使用发送方的公钥对数字签名进行解密,并对报文进行Hash计算,判断计算结果与解密后的结果是否相同。如果相同,则认证通过;否则认证失败。
数字信封认证:发送方首先随机产生一个对称密钥,使用接收方的公钥对此对称密钥进行加密(被公钥加密的对称密钥称为数字信封),发送方用对称密钥加密报文,同时用自己的私钥生成数字签名。接收方用自己的私钥解密数字信封得到对称密钥,再用对称密钥解密报文,同时根据发送方的公钥对数字签名进行解密,验证发送方的数字签名是否正确。如果正确,则认证通过;否则认证失败。
在阶段1建立的IKE SA的保护下完成IPSec SA的协商,建立IPSec SA。
阶段2的交换模式为快速模式(Quick Mode),其他交换模式:新组模式(New Grounp Mode)和信息交换(Informational Exchangs),前者用于协商新的DH交换组,后者用于通告SA状态和消息。
第二阶段IPSec SA的协商所使用的参数:
第一次协商可能都需要6个主模式消息,由于SA是有生存时间的,每次协商(更新)都会产生大量的协商消息,耗费资源,降低了网络的利用率。采用两阶段协商,只需要在网关间协商出一个IKE SA,然后用这个SA来为应用数据流协商IPSec SA,那么每个IPSec SA更新时可以节省资源,提高效率。
进行IKE交换双方在工交换开始时,初始信息都包含一个Cookie。Cookie是通过散列算法计算出的一个结果。这个Cookie是以本地秘密和对方标识(对方IP和端口号)、当前时间,作为基本参数。
Cookie的目的是保护处理资源受到DoS攻击时,不消耗过多的CPU资源去判断其真实性。在进行高强度运算的交换操作之前,需要有一个预先的交换,以使能够阻止一些拒绝服务的攻击。
主模式中,响应双方为对方生成一个Cookie,只有在收到包含这个Cookie的下一条消息时,才开始真正的DH交换过程。
野蛮模式下,通信双方在三条消息交换中完成协商,没有机会在DH交换之前检查Cookie。因此也就无法防止DoS攻击。
Cookie提供了一种容易操作的有限保护。发起方的Cookie和响应方的Cookie可以用标识一个IKE SA。
第一阶段协商建立IKE安全通道所使用的SA安全联盟各种参数:
Ci:发起方cookie
Cr:接收方cookie
SAi:发起方SA负载包含IKE的Hash算法、加密算法、DH算法、认证方法、身份认证方法、SA存活期。
SAr:发起方SA负载包含IKE的Hash算法、加密算法、DH算法、认证方法、身份认证方法、SA存活期。
Ni:发起方随机数
Nr:接收方随机数
K:公共的K值
Hashi:发起方哈希算法
Hashr:接收方哈希算法
IDi:发起方标识,通常是IP地址。
IDr:接收方标识,通常是IP地址。
1、第一包的作用是,协商发起发,发送IKE安全提议,给响应方。用于协商IKE SA很多参数。
2、响应方查找最先匹配的IKE安全提议,并将这个IKE安全提议回应给发起方。匹配的原则为协商双方具有相同的加密算法、认证算法、认证方法和Diffie-Hellman组标识。
3、对方发送密钥生成信息,对方用来生成IKE的秘钥。
4、协商相应方给协商发起方发送密钥生成信息,使得协议发起方能生成密钥。
5、发起方发送身份和验证数据。
6、协商响应方给发起方发送身份和验证数据。
注意:第5、6步信息已加密。
在预共享密钥的主模式IKE交换时,通信双方必须首先确定对方的IP地址。站点到站点在应用中都有固定IP地址,但对于拨号用户就出现很大问题,拨号用户的IP不是固定的,无法预先确定,这时就要用到IKEv1的野蛮模式。
IKEv1的野蛮模式只使用三条消息,前两条负责策略、交换D-H公共值及辅助数值和身份信息,第三条消息用于验证发起者。
1、发送方发起IKE安全提议、密钥生成信息和身份信息;
2、接收方查找匹配的安全提议、密钥生成信息和身份信息、发送密钥生成信息、身份信息和验证数据;
3、发送方接受提议和生成密钥、发送验证数据;
4、发送方接收验证数据。
主模式与野蛮模式的区别:
条目 | 主模式 | 野蛮模式 |
---|---|---|
交换的包 | 6个包 | 3个包 |
NAT支持 | 不支持 | 支持 |
对等体标识 | IP地址 | IP地址或Name方式 |
协商能力 | 强 | 弱 |
是否常用 | 常用 | 不推荐使用,推荐使用模板方式 |
该模式使用IKEv1协商阶段1中生成的密钥对ISAKMP消息的完整性和身份进行验证,并对ISAKMP消息进行加密,故保证了交换的安全性。
1、发送方发送IPSec安全提议、身份认证方法。
IPSec安全提议是指被保护的数据流和IPSec安全提议等需要协商的参数。身份认证方法指第一阶段计算出的密钥和第二阶段产生的密钥材料。
2、协商响应方发送确认的安全参数和身份认证信息并生成新的密钥。
IPSec SA数据传输需要的加密、验证密钥由第一阶段产生的密钥、SPI、协议等参数衍生得出,以保证每个IPSec SA都有自己独一无二的密钥。
3、发送方发送确认信息,确认与响应方可以通信,协商结束。
采用IKEv2协商安全联盟比IKEv1协商过程要简化的多。要建立一对IPSec SA,IKEv1需要经历两个阶段:“主模式+快速模式”或者“野蛮模式+快速模式”,前者至少需要交换9条消息,后者也至少需要6条消息。而IKEv2正常情况使用2次交换共4条消息就可以完成一对IPSec SA的建立,如果要求建立的IPSec SA大于一对时,每一对IPSec SA只需额外增加1次创建子SA交换,也就是2条消息就可以完成。
IKEv2定义了三种交换: