IPSecVPN(Internet Protocl Security):是一组基于网络层的,应用密码学的安全通信协议族。与TCP/IP协议簇一样,IPSec不是指具体的哪个协议,而是一个开放的协议簇。
IPSec协议的设计目标:是在IPV4和IPV6环境中为网络层流量提供灵活的安全服务(综合了密码技术,和协议安全机制)
IPSec V皮N:是基于IPSec协议簇构建的在IP层实现的数据安全虚拟专用网。通过在数据包中插入一个预定义头部的方式,来保障OSI上层协议数据的安全,主要用于保护TCP,UDP,ICMP和隧道的IP数据包(如:GRE over IPSec后面会有文章介绍在思科设备上的配置方法)。V皮N只是IPSec协议簇的一种应用方式,V皮N也不知IPSec一种实现方式,还有2层(数据链路层),第四层(传输层)等实现方式
IPSec提供的服务:
数据完整性(Confidentiality)、数据机密性(Integrity)、数据源鉴别(Authentication)、
重传攻击保护(Anti-replay)、不可否认性(Non-repudiation)
注:其中的加密算法、鉴别算法、解释域和密钥管理都是IKE进行协商。
加密算法:
DES算法:56位加密算法
3DES:168位加密算法
密钥交换算法:
DH(Diffie-Hellman密钥协议)
RSA(不对称密钥算法)
验证算法:
MD5(消息摘要)
SHA-1(安全哈希算法)
IKE(internet Key Exchange)
用于验证IPSec的对端体,协商IKE SA和IPSec SA的安全策略,验证加密材料的建立。
SA(Security Association)
两个通信实体经协商建立起来的一种协定,规定了通信实体将如何利用安全服务来实现安全的通讯。
IKE定义了安全参数如何协商,以及共享密钥如何建立,但它没有定义的是协商内容。这方面的定义是由"解释域(doi)"文档来进行的
IPSec V皮N体系结构主要由AH、ESP和IKE协议套件组成。
IPSec通过ESP来保障IP数据传输过程的机密性,使用AH/ESP提供数据完整性、数据源验证和抗报文重放功能。
ESP和AH定义了协议和载荷头的格式及所提供的服务,但却没有定义实现以上能力所需具体转码方式,转码方式包括对数据转换方式,如算法、密钥长度等。
为简化IPSec的使用和管理,IPSec还可以通过IKE进行自动协商交换密钥、建立和维护安全联盟的服务。具体介绍如下:
AH协议:AH是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能。然而,AH并不加密所保护的数据报。
ESP协议:ESP是封装安全载荷协议。它除提供AH协议的所有功能外(但其数据完整性校验不包括IP头),还可提供对IP报文的加密功能。
IKE协议:IKE协议用于自动协商AH和ESP所使用的密码算法。
1.IPSec协议定义了两种通信保护机制:封装安全载荷(ESP,Encapsulating Security Payload)和鉴别头(AH,Authentication Header)。其中ESP机制为通信提供机密性和完整性;AH机制为通信提供完整性保护。ESP机制和AH机制都能为通信提供抗重放(Anti-replay)攻击。
2.IPSec协议可以设置成在两种工作模式下运行:一种是隧道(tunnel)模式,另一种是传输(transport)模式。
3. IPSec协议使用IKE协议实现安全协议的自动安全参数协商。IKE协商的安全参数包括加密与鉴别算法、 加密与鉴别密钥、通信的保护模式(传输或隧道模式)、密钥的生存期等。IKE将这些安全参数构成的集合称为安全关联(SA,security Association),还负责这些安全参数的刷新。
4.两个数据库:安全策略数据库SPD,安全关联数据库SAD 5.DOI将所有的IPSec小组的文献捆绑在一起。它可以被认为是所有IPSec安全参数的主数据库。 IKE定义了安全参数如何协商,以及共享密钥如何建立,但它没有定义的是协商内容。这方面的定义是由"解释域(doi)"文档来进行的
再说IPSec两种工作模式之前,先说明他们的“作用范围”
传输模式:保护上层协议
隧道模式:保护整个IP数据包
应用场景:经常用于主机和主机之间端到端通信数据保护。
封装方式:不改变原有的IP包头,在原数据包头后面插入IPSec包头,将原来的数据封装成被保护的数据。
Ipsec工作模式即ipsec协议封装模式,主要用于定义在不同工作模式下,数据包交互的封装格式 这里的IPSEC包头就是下面介绍的AH头或者ESP头部 在传输模式下,IPSec协议处理模块会在IP报头和高层协议报头之间插入一个IPSec报头。
在这种模式下,IP报头与原始IP分组中的IP报头是一致的,只是IP报文中的协议字段会被改成IPSec协议的协议号(50或者51) ,并重新计算IP报头校验和。传输模式保护数据包的有效载荷、高层协议,IPSec源端点不会修改IP报头中目的IP地址,原来的IP地址也会保持明文。传输模式只为高层协议提供安全服务。
应用场景:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道。
与传输模式不同,在隧道模式下,原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPSec报头,原IP地址被当作有效载荷的一部分收到IPSec的保护。另外,通过对数据加密,还可以隐藏原数据包中的IP地址,这样更有利于保护端到端通信中数据的安全性。
1、无连接数据完整性:通过哈希函数(如MD5、SHA1)产生的校验来保证;
2、数据源认证:通过在计算验证码时加入一个共享密钥来实现;
3、抗重放服务:AH报头中的序列号可以防止重放攻击。
不论是传输模式还是隧道模式下,AH提供对数据包的保护时,它保护的是整个IP数据包(易变的字段除外,如IP头中的TTL和TOS字段)。
注:AH分配到的协议号是51。也就是说,使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。AH头比ESP头简单得多,因为它没有提供机密性。由于不需要填充和一个填充长度指示器,因此也不存在尾部字段。另外,也不需要一个初始化向量。
(在传输模式和隧道模式下的封装方式,在下面与ESP的封装方式进行统一对比)
1、无连接数据完整性:通过哈希函数(如MD5、SHA1)产生的校验来保证;
2、数据源认证:通过在计算验证码时加入一个共享密钥来实现;
3、抗重放服务:AH报头中的序列号可以防止重放攻击。
4、数据保密
5、有限的数据流保护
注:包含AH提供的服务,并比AH多出两种安全服务。
保密服务通过使用密码算法加密 IP 数据包的相关部分来实现。
数据流保密由隧道模式下的保密服务提供。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
注:ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头。 并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
SA(安全联盟)
定义:是通信对等体间对某些要素的约定,通信的双方符合SA约定的内容,就可以建立SA。
SA由三元组来唯一标识,包括:
安全参数索引 目的IP地址 安全协议号
IPSec是在两个端点之间提供安全通信,端点被称为IPSec对等体。
IPSec能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用AH和ESP进行保护,并使用3DES(Triple Data Encryption Standard)进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用ESP保护,并仅使用DES加密。通过SA(SecurityAssociation),IPSec能够对不同的数据流提供不同级别的安全保护。
安全联盟是IPSec的基础,也是IPSec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种安全协议、协议的操作模式(传输模式和隧道模式)、加密算法(DES和3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。
安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。入站数据流和出站数据流分别由入站SA和出站SA进行处理。同时,如果希望同时使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。
安全联盟由一个三元组来唯一标识,这个三元组包括安全参数索引(SPI, Security Parameter Index)、目的IP地址、安全协议号(AH 或ESP)。SPI 是为唯一标识SA而生成的一个32 比特的数值,它在IPSec头中传输。 IPSec设备会把SA的相关参数放入SPD(Security Policy Database)里面,SPD里面存放着“什么数据应该进行怎样的处理”这样的消息,在IPSec数据包出站和入站的时候会首先从SPD数据库中查找相关信息并做下一步处理。
IKE的产生背景:
用IPSec保护一个IP包之前,必须先建立安全联盟(SA)
IPSec的安全联盟可以通过手工配置的方式建立。但是当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。这时就可以使用IKE(Internet Key Exchange)自动进行安全联盟建立与密钥交换的过程。Internet密钥交换(IKE)就用于动态建立SA,代表IPSec对SA进行协商
IKE的用途:
IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。
在IPSec通信双方之间,动态地建立安全关联(SA:Security Association),对SA进行管理和维护
IKE是UDP之上的一个应用层协议,是IPSec的信令协议。IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。AH协议和ESP协议有自己的协议号,分别是51和50。 SA(Security Association):是两个IPSec通信实体之间经协商建立起来的一种共同协定,它规定了通信双方使用哪种IPSec协议保护数据安全、应用的算法标识、加密和验证的密钥取值以及密钥的生存周期等等安全属性值。 通过使用安全关联(SA) , IPSec能够区分对不同的数据流提供的安全服务。
KE经过两个阶段为IPSec进行密钥协商并建立安全联盟:
第一阶段交换:通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即ISAKMP SA(也可称为IKE SA)。 第一阶段交换有两种协商模式:
主模式协商
野蛮模式协商
一般情况下,IKE的主模式适用于两设备的公网IP固定、且要实现设备之间点对点的环境。 对于例如ADSL拨号用户,其获得的公网IP不是固定的,且可能存在NAT设备的情况下,采用野蛮模式做NAT穿越,同时,由于IP不是固定的,用name作为id-type,总部采用模板的方式接收分支的IPSEC 接入。
第二阶段交换:用已经建立的安全联盟(IKE SA)为IPSec协商安全服务,即为IPSec协商具体的安全联盟,建立IPSec SA,产生真正可以用来加密数据流的密钥,IPSec SA用于最终的IP数据安全传送。
下一篇分析:IKE 两种模式的对比和有关IPSec的一些知识补漏。