IKE 协议

http://lulu1101.blog.51cto.com/4455468/817872


概述

Internet 密钥交换协议(IKE)用于在两个通信实体协商和建立安全相关( Security Association,SA),交换密钥。安全相关(SA)是 IPSec 中的一个重要概念。
一个安全相关(SA)表示 两个或多个通信实体之间经过了身份认证,且这些通信实体都能支持相同的加密算法,成功地交换了会话密钥,可以开始利用 IPSec 进行安全通信。
IPSec 协议本身没有提供在通信实体间建立安全相关的方法,利用 IKE 建立安全相关SA。IKE 定义了通信实体间进行身份认证、协商加密算法以及生成共享的会话密钥的方法。
IKE是一种混合型协议,由RFC2409定义,包含了3个不同协议的有关部分:ISAKMP、Oakley和SKEME。IKE和ISAKMP的不同之处在于: IKE真正定义了一个密钥交换的过程,而ISAKMP只是定义了一个通用的可以被任何密钥交换协议使用的框架。
Oakley:定义IKE提供了一个多样化,多模式的应用,让IKE可以用在很多场合,大学开发的。
SKEME:提供了IKE交换密钥的算法,方式;即,通过DH进行密钥交换和管理的方式,个人开发的。
ISAKMP:它是一个框架,在该框架以内,它定义了每一次交换的包结构,每次需要几个包交换,主模式6个包交换和主动模式3个包交换,它由美国国家安全处开发,在配置IPSEC VPN的时候,只能设置它,前两个协议不能被设置。
ISAKMP(Internet Security Association Key Management Protocol,Internet安全联盟密钥管理协议)由RFC2408定义,定义了协商、建立、修改和删除SA的过程和包格式。 ISAKMP只是为SA的属性和协商、修改、删除SA的方法提供了一个通用的框架,并没有定义具体的SA格式
ISAKMP没有定义任何密钥交换协议的细节,也没有定义任何具体的加密算法、密钥生成技术或者认证机制。这个通用的框架是与密钥交换独立的,可以被不同的密钥交换协议使用。
ISAKMP报文可以利用UDP或者TCP,端口都是500,一般情况下常用UDP协议。
ISAKMP双方交换的内容称为载荷(payload),ISAKMP目前定义了13种载荷,一个载荷就像积木中的一个“小方块”,这些载荷按照某种规则“叠放”在一起,然后在最前面添加上ISAKMP头部,这样就组成了一个ISAKMP报文,这些报文按照一定的模式进行交换,从而完成SA的协商、修改和删除等功能。
在配置IPSEC VPN的时候,只能设置它,前两个协议不能被设置。
IKE是以上三个框架协议的混合体。IP SEC强是因为他IKE强。
IKE为IPSec通信双方提供密钥材料,这个材料用于生成加密密钥和验证密钥。另外,IKE也为IPSec协议AH ESP协商SA。
IKE中有4种身份认证方式:
(1) 基于数字签名(Digital Signature),利用数字证书来表示身份,利用数字签名算法计算出一个签名来验证身份。
(2) 基于公开密钥(Public Key Encryption),利用对方的公开密钥加密身份,通过检查对方发来的该HASH值作认证。
(3) 基于修正的公开密钥(Revised Public Key Encryption),对上述方式进行修正。
(4) 基于预共享字符串(Pre?Shared Key),双方事先通过某种方式商定好一个双方共享的字符串。
IKE目前定义了4种模式:主模式、积极模式、快速模式和新组模式。前面3个用于协商SA,最后一个用于协商Diffie Hellman算法所用的组。主模式和积极模式用于第一阶段;快速模式用于第二阶段;新组模式用于在第一个阶段后协商新的组。


IPSec  的安全联盟(SA)可以通过手工配置的方式建立,但是当网络中节点增多时,手工配置将非常困难,而且难以保证安全性。这时就要使用 IKE(Internet Key Exchange,因特网密钥交换)自动地进行安全联盟建立与密钥交换的过程。
IKE 协议是建立在由 Internet 安全联盟和密钥管理协议 ISAKMP  (Internet   Security Association and Key Management Protocol )定义的框架上。它能够为IPSec 提供了自动协商 交换密钥、建立安全联盟的服务,以简化IPSec 的使用和管理。
IKE 具有一套自保护机制,可以在不安全的网络上安全地分发密钥、验证身份、建立 IPSec 安全联盟。 
 

2. IKE 的安全机制

DH (Diffie-Hellman)交换及密钥分发。Diffie-Hellman 算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥(对称密钥)。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。加密的前提是交换加密数据的双方必须要有共享的密钥。

IKE 的精髓在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥(这里应该是另一个密钥,不是预共享密钥)。即使第三者(如黑客)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。

完善的前向安全性(Perfect Forward Secrecy,PFS)。PFS 是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。PFS 是由 DH 算法保障的。

身份验证。身份验证确认通信双方的身份。对于 pre-shared key 验证方法,验证字用来作为一个输入产生密钥,验证字不同是不可能在双方产生相同的密钥的。验证字是验证双方身份的关键。

身份保护。身份数据在密钥产生之后加密传送,实现了对身份数据的保护。

 

3. IKE 的交换阶段

IKE 使用了两个阶段为 IPSec 进行密钥协商并建立安全联盟:第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP 安全联盟,即 ISAKMP SA  (也可称IKE SA。安全关联(SA)是实体间的关系,它表示通信方如何使用安全服务进行安全通信。IKE SA就是IKE之间如何使用安全服务进行通信;IPSec SA就是IPSec实体间如何使用安全服务进行通信。);第二阶段,用在第一阶段建立的安全通道为 IPSec 协商安全服务,即为 IPSec 协商具体的安全联盟,建立IPSec SA,IPSec SA 用于最终的 IP 数据安全传送。

从下图我们可以看出 IKE 和 IPSec 的关系。

IKE 协议_第1张图片

具体安全联盟的建立过程如下图所示:

IKE 协议_第2张图片

(1)  当一个报文从某接口外出时,如果此接口应用了IPSec,会进行安全策略的匹
配。
(2)  如果找到匹配的安全策略,会查找相应的安全联盟。如果安全联盟还没有建立,则触发 IKE 进行协商。IKE 首先建立阶段 1 的安全联盟,即IKE SA。
(3) 在阶段 1 安全联盟的保护下协商阶段2 的安全联盟,即IPSec SA。
(4)  使用 IPSec SA 保护通讯数据。

 

4. IKE 的协商模式

在 RFC2409  (The Internet Key Exchange)中规定,IKE 第一阶段的协商可以采用两种模式: 主模式(Main Mode)和野蛮模式(Aggressive Mode )。主模式被设计成将密钥交换信息与身份、认证信息相分离。这种分离保护了身份信息;交换的身份信息受已生成的 Diffie-Hellman 共享密钥的保护。但这增加了3 条消息的开销。
野蛮模式则允许同时传送与 SA、密钥交换和认证相关的载荷。将这些载荷组合到一条消息中减少了消息的往返次数,但是就无法提供身份保护了。
虽然野蛮模式存在一些功能限制,但可以满足某些特定的网络环境需求。例如:远程访问时,如果响应者(服务器端)无法预先知道发起者(终端用户)的地址、或者 发起者的地址总在变化,而双方都希望采用 预共享密钥验证方法来创建 IKE SA,那么,不进行身份保护的野蛮模式就是唯一可行的交换方法;另外,如果发起者已知响应者的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建 IKE SA。
 

相关配置: 

设置安全策略中引用的IKE Peer  (仅用于IKE 协商方式)
对于 IKE 协商方式,无需象手工方式那样配置对等体、SPI 和密钥等参数,IKE 将自动协商这些它们,因而仅需要将安全策略和IKE Peer 关联即可。
在安全策略中引用 IKE Peer    ike-peer peer-name
删除在安全策略中引用的IKE Peer  undo ike-peerpeer-name

配置IKE协商时的本地 ID 
 
在系统视图下进行下列配置
配置IKE协商时的本地ID   ike local-name router-name
删除本地ID    undo ike local-name

指定IKE对端属性
 
1. 创建 IKE Peer并进入 IKE Peer视图
 
通过 IKE Peer,可以定义了一系列属性数据来描述 IKE协商所需的参数,包括创建IKE提议、协商模式、ID类型、NAT穿越、共享密钥、对端地址和对端名称等。
请在系统视图下进行下列配置。
创建IKE Peer并进入IKE Peer视图   ike peer peer-name
删除指定的IKE Peer  undo ike peer peer-name
 
2.       配置 IKE协商模式
 
请在 IKE Peer视图下进行下列配置。
配置IKE协商方式  exchange-mode  { main | aggressive }
恢复缺省IKE协商方式  undo exchange-mode
缺省情况下,采用主模式进行 IKE协商。
 
3.       配置 IKE安全提议
 
请在 IKE Peer视图下进行下列配置。 
配置IKE安全提议  ike-proposal proposal-number
 
取消IKE安全提议  undo ike-proposal
缺省情况下,采用主模式时使用已配置的所有 IKE 安全提议,采用野蛮模式时使用
缺省的 IKE安全提议。
 
4. 配置对端 ID类型
 
当进行 IKE交换时,可以使用对端的 IP地址作为 ID,也可以使用对端名称作为 ID。 
请在 IKE Peer视图下进行下列配置。 
配置IKE Peer的ID类型  local-id-type { ip | name }
 
恢复缺省的ID类型  undo local-id-type
缺省情况下,IKE Peer采用的本端 ID类型为 IP地址形式。
 
5. 配置 IPSec是否需要 NAT穿越
 
请在 IKE Peer视图下进行下列配置。
使能IPSec的 NAT穿越  nat traversal
 
禁止IPSec的 NAT穿越  undo nat traversal
缺省情况下,禁止 NAT穿越功能。
 
6. 配置身份验证字
 
如果选择了 Pre-shared key验证方法。需要为每个对端配置预共享密钥。建
立安全连接的两个对端的预共享密钥必须一致。
请在 IKE Peer视图下进行下列配置。 
配置与对端共享的  pre-shared key  pre-shared-key key
 
删除身份验证字  undo pre-shared-key
 
7. 配置对端 IP地址
 
请在 IKE Peer视图下进行下列配置。
配置对端地址或地址段  remote-address low-ip-address [high-ip-address ]
删除配置的对端地址  undo remote-address
 
8. 配置对端名称
 
在野蛮模式下,可以使用 remote-name命令配置对端名称。
请在 IKE Peer视图下进行下列配置。
配置对端名称   remote-name name
 
删除配置的对端名称  undo remote-name
 
创建IKE安全提议
 
IKE提议定义了一套属性数据来描述 IKE协商怎样进行安全通信。配置 IKE提议包括创建 IKE提议、选择加密算法、选择验证方法、选择验证算法、选择 Diffie-Hellman组标识和设置安全联盟生存周期。
用户可以按照优先级创建多条 IKE 提议,但是协商双方必须至少有一条匹配的 IKE提议才能协商成功。
采用主模式时:若在协商发起方的 ike peer中指定 IKE提议,IKE协商时将只发送指定的 IKE提议,响应方在自己的 IKE提议配置中寻找与发送方指定的 IKE提议相匹配的 IKE提议,如果没有匹配的则协商失败;若发起方的 ike peer中不指定 IKE提议,IKE协商时将发送发起方所有的 IKE提议,响应方在自己的 IKE提议配置中依次寻找与发送方的 IKE提议相匹配的 IKE提议。
采用野蛮模式时:若在协商发起方的 ike peer中指定 IKE提议,同采用主模式的情况;若发起方的 ike peer中不指定 IKE提议, IKE协商时将只发送发送方默认的 IKE提议,响应方也会用默认的 IKE提议匹配。
 
IKE显示与调试
 
IKE 提供以下命令显示当前所有安全联盟的状态和每个 IKE 提议配置的参数。display 命令可在所有视图下进行下列操作,debugging 和 reset 命令只能在用户视图下操作。
显示当前已建立的安全通道  displ ay ike sa [ secp[ slot/card/port ] ]
查看IKE Peer的配置情况  display  ike  peer [  name  peer-name] [  secp [ slot/card/port  ] ]
删除当前已建立的安全通道  reset ike sa [  connection-id  ] [  secp[ slot/card/port  ] ]
显示每个IKE提议配置的参数   display ike proposal [ secp [ slot/card/port  ] ]  
打开IKE的调试信息  debugging  ike {  all | error |  exchange | message |  misc | transport  } [  secp[ slot/card/port  ] ]
关闭IKE的调试信息  undo  debugging  ike {  error |  exchange | message |  misc | transport } [  secp[ slot/card/port  ] ]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
IKE 协商过程

因特网密钥交换协议(IKE)是一份符合因特网协议安全(IPSec)标准的协议。它常用来确保虚拟专用网络VPN(virtual private network)与远端网络或者宿主机进行交流时的安全。对于两个或更多实体间的交流来说,安全协会(SA)扮演者安全警察的作用。每个实体都通过一个密钥表征自己的身份。因特网密钥交换协议(IKE)保证安全协会(SA)内的沟通是安全的。  

因特网密钥交换协议(IKE)是结合了两个早期的安全协议而生成的综合性协议。它们是:Oakley协议和SKEME协议。因特网密钥交换协议(IKE)是基于因特网安全连接和密钥管理协议ISAKMP(Internet Security Association and Key Management Protocol)中TCP/IP框架的协议。因特网安全连接和密钥管理协议ISAKMP包含独特的密钥交换和鉴定部分。Oakley协议中指定了密钥交换的顺序,并清楚地描述了提供的服务,比如区别保护行为和鉴定行为。SKEME协议说明了密钥交换的具体方法。尽管没有要求因特网密钥交换协议(IKE)符合因特网协议安全(IPSec)的内容,但是因特网密钥交换协议(IKE)内的自动实现协商和鉴定、否则重发服务(请参考否则重发协议)、凭证管理CA(Certification Authority)支持系统和改变密码生成方法等内容均得益于因特网协议安全(IPSec)。

Intenet密钥交换协议(IKE)是用于交换和管理在VPN中使用的加密密钥的.到目前为止,它依然存在安全缺陷.基于该协议的重要的现实意义,简单地介绍了它的工作机制,并对它进行了安全性分析;对于抵御中间人攻击和DoS攻击,给出了相应的修正方法;还对主模式下预共享密钥验证方法提出了新的建议;最后给出了它的两个发展趋势:JFK和IKEv2.

Internet key exchange (IKE) is the protocol used to set up a security association in the IPsec protocol suite, which is in turn a mandatory part of the IETF IPv6 standard, which is being adopted (slowly) throughout the Internet. IPsec (and so IKE) is an optional part of the IPv4 standard. But in IPv6 providing security through IPsec is a must.

Internet密钥交换(IKE)解决了在不安全的网络环境(如Internet)中安全地建立或更新共享密钥的问题。IKE是非常通用的协议,不仅可为IPsec协商安全关联,而且可以为SNMPv3、RIPv2、OSPFv2等任何要求保密的协议协商安全参数。

一、IKE的作用

当应用环境的规模较小时,可以用手工配置SA;当应用环境规模较大、参与的节点位置不固定时, IKE可自动地为参与通信的实体协商SA,并对安全关联库(SAD)维护,保障通信安全。

二、IKE的机制

IKE属于一种混合型协议,由Internet安全关联和密钥管理协议(ISAKMP)和两种密钥交换协议OAKLEY与SKEME组成。IKE创建在由ISAKMP定义的框架上,沿用了OAKLEY的密钥交换模式(顺序)以及SKEME的共享和密钥更新技术,还定义了它自己的两种密钥交换方式。

IKE使用了两个阶段的ISAKMP:第一阶段,协商创建一个通信信道(IKE SA),并对该信道进行验证,为双方进一步的IKE通信提供机密性、消息完整性以及消息源验证服务;第二阶段,使用已建立的IKE SA建立IPsec SA(如图1所示)。 

IKE 协议_第3张图片

IKE共定义了5种交换。阶段1有两种模式的交换:对身份进行保护的“主模式”交换以及根据基本ISAKMP 文档制订的“野蛮模式”交换。阶段2 交换使用“快速模式”交换。IKE 自己定义了两种交换:1为通信各方间协商一个新的DiffieHellman 组类型的“新组模式”交换;2在IKE 通信双方间传送错误及状态消息的ISAKMP信息交换。

1.主模式交换

主模式交换提供了身份保护机制,经过三个步骤,共交换了六条消息。三个步骤分别是策略协商交换、DiffieHellman共享值、nonce交换以及身份验证交换(如图2所示)。

IKE 协议_第4张图片

2.野蛮模式交换

野蛮模式交换也分为三个步骤,但只交换三条消息:头两条消息协商策略,交换DiffieHellman公开值必需的辅助数据以及身份信息;第二条消息认证响应方;第三条消息认证发起方,并为发起方提供在场的证据(如图3所示)。 

IKE 协议_第5张图片

3.快速模式交换

快速模式交换通过三条消息建立IPsec SA:头两条消息协商IPsec SA的各项参数值,并生成IPsec 使用的密钥;第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据(如图4所示)。 

IKE 协议_第6张图片

4.新组模式交换

通信双方通过新组模式交换协商新的Diffie-Hellman组。新组模式交换属于一种请求/响应交换。发送方发送提议的组的标识符及其特征,如果响应方能够接收提议,就用完全一样的消息应答(如图5所示)。 

IKE 协议_第7张图片

5.ISAKMP信息交换

参与IKE通信的双方均能向对方发送错误及状态提示消息。这实际上并非真正意义上的交换,而只是发送单独一条消息,不需要确认(如图6所示)。 

IKE 协议_第8张图片

 三、IKE的安全

1.机密性。保护IKE使用DiffieHellman组中的加密算法。IKE共定义了五个DiffieHellman组,其中三个组使用乘幂算法(模数位数分别是768、1024、1680位),另两个组使用椭圆曲线算法(字段长度分别是155、185位)。因此,IKE的加密算法强度高,密钥长度大。

2.完整性。保护及身份验证在阶段1、2交换中,IKE通过交换验证载荷(包含散列值或数字签名)保护交换消息的完整性,并提供对数据源的身份验证。IKE列举了四种验证方法:1预共享密钥;2数字签名;3公钥加密;4改进的公钥加密。

3.抵抗拒绝服务攻击。对任何交换来说,第一步都是cookie交换。每个通信实体都生成自己的cookie,cookie提供了一定程度的抗拒绝服务攻击的能力。如果在进行一次密钥交换,直到完成cookie交换,才进行密集型的运算,比如DiffieHellman交换所需的乘幂运算,则可以有效地抵抗某些拒绝服务攻击,如简单使用伪造IP源地址进行的溢出攻击。

4.防止中间人攻击。中间人攻击包括窃听、插入、删除、修改消息,反射消息回到发送者,重放旧消息以及重定向消息。ISAKMP的特征能阻止这些攻击成功。

5.完美向前保密(PFS)。指即使攻击者破解了一个密钥,也只能还原这个密钥加密的数据,而不能还原其他的加密数据。要达到理想的PFS,一个密钥只能用于一种用途,生成一个密钥的素材也不能用来生成其他的密钥。我们把采用短暂的一次性密钥的系统称为“PFS”。如果要求对身份的保护也是PFS,则一个IKE SA只能创建一个IPsec SA。

四、IKE的实现

IKE是一个用户级的进程。启动后,作为后台守护进程运行。在需要使用IKE服务前,它一直处于不活动状态。

可以通过两种方式请求IKE服务:1当内核的安全策略模块要求建立SA时,内核触发IKE。2当远程IKE实体需要协商SA时,可触发IKE。

1.IKE与内核的接口。内核为了进行安全通信,需要通过IKE建立或更新SA。IKE 同内核间的接口有:1、同SPD通信的双向接口。当IKE得到SPD的策略信息后,把它提交给远程IKE对等实体;当IKE收到远程IKE对等实体的提议后,为进行本地策略校验,必须把它交给SPD。2、同SAD通信的双向接口。IKE 负责动态填充SAD,要向SAD发送消息(SPI请求和SA实例),也要接收从SAD返回的消息(SPI 应答)。

2.IKE 对等实体间接口。IKE为请求创建SA的远程IKE对等实体提供了一个接口。当节点需要安全通信时,IKE与另一个IKE对等实体通信,协商建立IPsec SA。如果已经创建了IKE SA,就可以直接通过阶段2 交换创建新的IPsec SA;如果还没有创建IKE SA,就要通过阶段1、2交换创建新的IKE SA及IPsec SA。




ESPAH用来对IP报文进行封装、加/解密、验证以达到保护IP报文的目的,而IKEISAKMP/Oakley/SKEME则是通信双方用来协商封装形式、加/解密算法及其密钥、密钥的生命期、验证算法的。

ISAKMP/Oakley/SKEME是为IKE的协商提供服务的,它提供了实现IKE的框架、密钥交换模式和方法、密钥的更新方法。ISAKMP是“Internet安全关联和密钥管理协议”的简称,即Internet Security Associationand Key Management Protocol

ISAKMP对验证和密钥交换提出了结构框架,但没有具体定义。ISAKMP被设计用来独立的进行密钥交换,即被设计用于支持多种不同的密钥交换。

Oakley描述了一系列被称为“模式”的密钥交换,并详述了每一种提供的服务。定义IKE提供了一个多样化,多模式的应用,让IKE可以用在很多场合。

SKEME描述了一种提供匿名,否认,和快速密钥更新的通用密钥交换技术。提供了IKE交换密钥的算法,如:通过DH进行密钥交换和管理的方式

IKE是使用部分Oakley,部分SKEME,并结合ISAKMP的一种协议,它使用ISAKMP来得到已验证的用于生成密钥和其它安全联盟(如AHESP)中用于IETE IPsec DOI的材料。IKE协议是OakleySKEME协议的一种混合,并在由ISAKMP规定的一个框架内运作。OakleySKEME定义了通信双方建立一个共享的验证密钥所必须采取的步骤。IKE利用ISAKMP语言对这些步骤以及其它信息交换措施进行表述。

IKE的用途就是在IPSec通信双方之间,建立起共享安全参数及验证过的密钥,亦即建立“安全关联”关系。

IKE 协议_第9张图片

图12.9 IKE的用途

IKE是一种常规用途的安全交换协议,可用于策略的磋商,以及验证加密材料的建立,适用于多方面的需求SNMPv3、RIPv2、OSPFv2等等。IKE采用的规范是在“解释域(DomainofInterpretationDOI)”中制订的。针对IPSec存在着一个名为RFC2407的解释域,它定义了IKE具体如何与IPSecSA进行协商。如果其它协议要用到IKE,每种协议都要定义各自的DOI。为正确实施IKE,需遵守三份文件(文档)的规定,它们分别是:基本ISAKMP规范(RFC2408)、IPSec解释域(RFC2407)、IKE规范本身(RFC2409)。

IKE主要完成两个作用:安全关联的集中化管理,减少连接时间、密钥的生成和管理。

OakleySKEME各自定义了建立经过验证的密钥交换的方法。其中包括负载的构建,信息负载的运送,它们被处理的顺序以及被使用的方法。Oakley定义了“模式”,ISAKMP定义了“阶段”。两者之间的关系非常直接,IKE描述了在两个阶段中进行的不同的、称为模式的交换。

IKE建立SA分两个阶段。第一阶段,协商创建一个通信信道(IKE SA),并对该信道进行认证,为双方进一步的IKE通信提供机密性、数据完整性以及数据源认证服务,IKE定义了两个第一阶段的协商(Main Mode-主模式和Aggressive Mode-积极模式)

第一阶段协商(主模式协商)步骤:

主模式交换提供了身份保护机制,经过三个步骤,六个消息,头两个消息协商策略;下两个消息交换Diffie-Hellman的公共值和必要的辅助数据;最后的两个消息验证Diffie-Hellman交换。


IKE 协议_第10张图片

图12.10 使用签名验证的主模式

策略协商交换。IKE以“保护组(Protectionsuite)”的形式来定义策略。每个保护组都至少需要定义采用的加密算法(选择DES3DES)、散列算法(选择MD5SHA)、Diffie-Hellman组以及验证方法(数字签名,公共密钥加密的两种验证,或者共享密钥认证)。IKE的策略数据库则列出了所有保护组(按各个参数的顺序)。由于通信双方决定了一个特定的策略组后,它们以后的通信便必须根据它进行,所以这种形式的协商是两个IKE通信实体第一步所需要做的。

Diffie Hellman共享值、nonce交换交换。虽然名为密钥交换,但事实上交换的只是一些DH算法生成共享密钥所需要的基本材料信息。在彼此交换过密钥生成材料后,两端主机可以各自生成出完全一样的共享“主密钥”,保护紧接其后的认证过程。Diffie-Hellman交换以及一个共享秘密的建立是IKE协议的第二步。

身份验证交换。IKE交换的下一个步骤便是对Diffie-Hellman共享秘密进行验证,同时还要对IKESA本身进行验证。DH交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。“主密钥”结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的“主密钥”提供机密性和完整性保证。一或多个证书负载在传递中是可选的。

在野蛮模式下,总共三个信息被交换。第一个信息由SAnonce和身份组成。第二个信息是,在验证发起方并接受SA后,应答方发送nonce 和身份信息给发起方。第三个信息是,发起方验证应答方的身份以及进行被提议的信息的交换。

IKE 协议_第11张图片

图12.11 带签名的野蛮模式

Aggressive模式下,两个在第一次交换发送的身份信息是没有加密的。Aggressive 模式的优点是信息交换快速,但加密被节省了。

第二阶段建立SA(快速模式)。

这一阶段协商建立IPsec SA,为数据交换提供IPSec服务。第二阶段协商消息受第一阶段SA保护,任何没有第一阶段SA保护的消息将被拒收。

快速模式本身并不是一次完整的交换(因为它和第一阶段交换相关联),但又作为SA协商过程(第二阶段)的一部分用来衍生密钥材料和协商非ISAKMP SA的共享策略。快速模式交换的信息必须由ISAKMP SA来保护棗即除了ISAKMP报头外,所有的负载都要加密。在快速模式中,HASH负载必须立即跟随在ISAKMP报头后,SA负载必须紧跟在HASH负载之后。HASH用于验证消息,同时也提供了参与的证据。

快速模式基本上是一次SA协商和提供重放保护的nonce交换。nonce用于产生新的密钥材料并阻止通过重放攻击产生虚假的安全联盟。可选的密钥交换(KE)负载可以经交换来实现通过快速模式产生附加的Diffie-Hellman交换以及求幂运算。但是必须支持使用快速模式的密钥交换负载成为可选的。

第二阶段协商(快速模式协商)步骤:

IKE 协议_第12张图片

12.12 快速模式

快速模式交换通过三条消息建立IPsec SA:头两条消息协商IPsec SA的各项参数值,并生成IPsec 使用的密钥。包括使用哪种IPSec协议(AHESP)、使用哪种hash算法(D5SHA)、是否要求加密,若是,选择加密算法(DES3DES)。在上述三方面达成一致后,将建立起两个SA,分别用于入站和出站通信。第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据。



ESP、AH用来对IP报文进行加/解密、验证以达到保护IP报文的目的,而IKE则是通信双方用来协商加/解密算法及其密钥、密钥的生命期、验证算法的。IKE协议是Oakley和SKEME协议的一种混合,并在由ISAKMP规定的一个框架内运作。

IKE阶段1的目的是鉴别IPSec对等体,在对等体间设立安全通道,以便IKE交换信息。主要功能如下:鉴别和保护IPSec实体的身份;协商IKE SA;执行D-H交换;建立安全通道以便协商IKE阶段2的参数。

IKE阶段1,IKE 在两个IKE对等体间创建一个认证过的安全通道,IKE SA。安全关联(SA)是实体间的关系,它表示通信方如何使用安全服务进行安全通信。IKE SA就是IKE之间如何使用安全服务进行通信;IPSec SA就是IPSec实体间如何使用安全服务进行通信。

IKE阶段一存在两种模式:
1、Main Mode
   双方存在3次双向交换:
   第一次交换 保证IKE通信安全的算法和Hash在匹配对等体间的IKE SA被商定
   第二次交换 用D-H交换来产生共享的、用户产生共享密钥的密钥材料,同事传送nonces,对他们进行签名并返回之以确认身份。

第三次交换 用于验证对方的身份。身份值是以加密的IPSec对等体的IP地址。

IKE SA为IKE指定下列参数值:

认证方法{Pre-Share|RSA签名|RSA加密}
加密和Hash算法
D-H组
IKE SA life time
加密算法的共享密钥


2、积极模式( [size=-1]Aggressive Mode) 
在一次交换中,该模式中几乎所有的需要交换的信息都被压缩到所建议的IKE SA参数值中了。该模式速度快,但是是不安全的。PIX可以对发起积极模式交换的IPSec对等体进行相应,在一般情况下不用积极模式发起IKE交换。

IKE阶段2,协商IPSec SA,还要生产IPSec所需要的密钥。发送端提供一个或多个变换集合(Transform sets),用于指定一个被允许的交换组合。IKE阶段2 执行以下功能:协商IPSec SA参数,建立IPSec SA,周期性的重新协商IPSec SA,可选的执行一次额外的D-H交换。IKE阶段2只有一种模式,快捷模式(Quick Mode)。快捷模式协商一个共享的IPSec策略,获得共享的、用于IPSec安全算法的密钥材料,并建立IPSec SA。快捷模式也用在IPSec SA life time 过期之后重新协商一个新的IPSec SA。如果在IPSec策略里指定了完美向前保密(Perfect Forward Secrecy,PFS),在快捷模式中将执行一次额外的D-H交换。

总的来说,IKE阶段一就是协商各种IKE SA参数,从而建立一个安全的通信通道以供IKE阶段二来建立Ipsec隧道,他们只是协商确认了一些参数,但是并没有具体的实施。

IKE阶段2则是在IKE阶段一的基础上协商IPSEC SA 从而建立安全的IPSEC 隧道,这个时候开始实施具体的协议来实现IKE阶段一协商的参数,比如使用ESP或者AH协议来实现阶段一的协商好的加密和认证方法,而在阶段一只是协商好要使用哪些参数来实现一个可靠安全的ipsec 隧道,但是没有指定用哪些协议来实现,二阶段二就是真正实施阶段




Internet密钥交换(IKE)

两台IPSec计算机在交换数据之前,必须首先建立某种约定,这种约定,称为"安全关联",指双方需要就如何保护信息、交换信息等公用的安全设置达成一致,更重要的是,必须有一种方法,使那两台计算机安全地交换一套密钥,以便在它们的连接中使用。见图七。


图七、Internet密钥交换

Internet 工程任务组IETF制定的安全关联标准法和密钥交换解决方案--IKE(Internet密钥交换)负责这些任务,它提供一种方法供两台计算机建立安全关联 (SA)。SA 对两台计算机之间的策略协议进行编码,指定它们将使用哪些算法和什么样的密钥长度,以及实际的密钥本身。IKE主要完成两个作用:

·安全关联的集中化管理,减少连接时间

·密钥的生成和管理

一、什么是SA?

安全关联SA(Security Association)是单向的,在两个使用 IPSec的实体(主机或路由器)间建立的逻辑连接,定义了实体间如何使用安全服务(如加密)进行通信。它由下列元素组成:1)安全参数索引SPI;2)IP目的地址;3)安全协议

SA是一个单向的逻辑连接,也就是说,在一次通信中,IPSec 需要建立两个SA,一个用于入站通信,另一个用于出站通信。若某台主机,如文件服务器或远程访问服务器,需要同时与多台客户机通信,则该服务器需要与每台客户机分别建立不同的SA。每个SA用唯一的SPI索引标识,当处理接收数据包时,服务器根据SPI值来决定该使用哪种SA。

二、第一阶段SA(主模式SA,为建立信道而进行的安全关联)

IKE建立SA分两个阶段。第一阶段,协商创建一个通信信道(IKE SA),并对该信道进行认证,为双方进一步的IKE通信提供机密性、数据完整性以及数据源认证服务;第二阶段,使用已建立的IKE SA建立IPsec SA。分两个阶段来完成这些服务有助于提高密钥交换的速度。 第一阶段协商(主模式协商)步骤:

1.策略协商,在这一步中,就四个强制性参数值进行协商:

1)加密算法:选择DES或3DES

2)hash算法:选择MD5或SHA

3)认证方法:选择证书认证、预置共享密钥认证或Kerberos v5认证

4)Diffie-Hellman组的选择

2.DH交换

虽然名为"密钥交换",但事实上在任何时候,两台通信主机之间都不会交换真正的密钥,它们之间交换的只是一些DH算法生成共享密钥所需要的基本材料信息。DH交换,可以是公开的,也可以受保护。在彼此交换过密钥生成"材料"后,两端主机可以各自生成出完全一样的共享"主密钥",保护紧接其后的认证过程。

3.认证 DH交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。"主密钥"结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的"主密钥"提供机密性和完整性保证。

三、第二阶段SA(快速模式SA,为数据传输而建立的安全关联)

这一阶段协商建立IPsec SA,为数据交换提供IPSec服务。第二阶段协商消息受第一阶段SA保护,任何没有第一阶段SA保护的消息将被拒收。

第二阶段协商(快速模式协商)步骤:

1.策略协商,双方交换保护需求:

·使用哪种IPSec协议:AH或ESP

·使用哪种hash算法:MD5或SHA

·是否要求加密,若是,选择加密算法:3DES或DES 在上述三方面达成一致后,将建立起两个SA,分别用于入站和出站通信。

2.会话密钥"材料"刷新或交换

在这一步中,将生成加密IP数据包的"会话密钥"。生成"会话密钥"所使用的"材料"可以和生成第一阶段SA中"主密钥"的相同,也可以不同。如果不做特殊要求,只需要刷新"材料"后,生成新密钥即可。若要求使用不同的"材料",则在密钥生成之前,首先进行第二轮的DH交换。

3.SA和密钥连同SPI,递交给IPSec驱动程序。

  第二阶段协商过程与第一阶段协商过程类似,不同之处在于:在第二阶段中,如果响应超时,则自动尝试重新进行第一阶段SA协商。

  第一阶段SA建立起安全通信信道后保存在高速缓存中,在此基础上可以建立多个第二阶段SA协商,从而提高整个建立SA过程的速度。只要第一阶段SA不超时,就不必重复第一阶段的协商和认证。允许建立的第二阶段SA的个数由IPSec策略属性决定。

  四、SA生命期

  第一阶段SA有一个缺省有效时间,如果SA超时,或"主密钥"和"会话密钥"中任何一个生命期时间到,都要向对方发送第一阶段SA删除消息,通知对方第一阶段SA已经过期。之后需要重新进行SA协商。第二阶段SA的有效时间由IPSec驱动程序决定

  密钥保护

  一、密钥生命期

  生命期设置决定何时生成新密钥。在一定的时间间隔内重新生成新密钥的过程称为"动态密钥更新"或"密钥重新生成"。密钥生命期设置决定了在特定的时间间隔之后,将强制生成新密钥。例如,假设一次通信需要1万秒,而我们设定密钥生命期为1千秒,则在整个数据传输期间将生成10个密钥。在一次通信中使用多个密钥保证了即使攻击者截取了单个通信密钥,也不会危及全部通信安全。密钥生命期有一个缺省值,但"主密钥"和"会话密钥"生命期都可以通过配置修改。无论是哪种密钥生命期时间到,都要重新进行SA协商。单个密钥所能处理的最大数据量不允许超过100兆。

  二、会话密钥更新限制

  反复地从同一个的"主密钥"生成材料去生成新的"会话密钥"很可能会造成密钥泄密。"会话密钥更新限制"功能可以有效地减少泄密的可能性。 例如,两台主机建立安全关联后,A先向B发送某条消息,间隔数分钟后再向B发送另一条消息。由于新的SA刚建立不久,因此两条消息所用的加密密钥很可能是用同一"材料"生成的。如果想限制某密钥"材料"重用次数,可以设定"会话密钥更新限制"。譬如,设定"会话密钥更新限制"为5,意味着同一"材料"最多只能生成5个"会话密钥"。

若启用"主密钥精确转发保密(PFS)",则"会话密钥更新限制"将被忽略,因为PFS 每次都强制使用新"材料"重新生成密钥。将"会话密钥更新限制"设定为1和启用PFS效果是一样的。如果既设定了"主密钥"生命期,又设定了"会话密钥更新限制",那么无论哪个限制条件先满足,都引发新一轮SA协商。在缺省情况下,IPSec不设定"会话密钥更新限制"。

三、Diffie-Hellman(DH)组

DH组决定DH交换中密钥生成"材料"的长度。密钥的牢固性部分决定于DH组的强度。IKE共定义了5个DH组,组1(低)定义的密钥"材料"长度为768位;组2(中)长度为1024位。密钥"材料"长度越长,所生成的密钥安全度也就越高,越难被破译。

DH组的选择很重要,因为DH组只在第一阶段的SA协商中确定,第二阶段的协商不再重新选择DH组,两个阶段使用的是同一个DH组,因此该DH组的选择将影响所有"会话密钥"的生成。

在协商过程中,对等的实体间应选择同一个DH组,即密钥"材料"长度应该相等。若DH组不匹配,将视为协商失败。

四、精确转发保密PFS(Perfect Forward Secrecy)

与密钥生命期不同,PFS决定新密钥的生成方式,而不是新密钥的生成时间。PFS保证无论在哪一阶段,一个密钥只能使用一次,而且,生成密钥的"材料"也只能使用一次。某个"材料"在生成了一个密钥后,即被弃,绝不用来再生成任何其他密钥。这样可以确保一旦单个密钥泄密,最多只可能影响用该密钥加密的数据,而不会危及整个通信。

PFS分"主密钥"PFS和"会话密钥"PFS,启用"主密钥"PFS,IKE必须对通信实体进行重新认证,即一个IKE SA只能创建一个IPsec SA,对每一次第二阶段SA的协商,"主密钥"PFS都要求新的第一阶段协商,这将会带来额外的系统开销。因此使用它要格外小心。

然而,启用"会话密钥"PFS,可以不必重新认证,因此对系统资源要求较小。"会话密钥"PFS只要求为新密钥生成进行新的DH交换,即需要发送四个额外消息,但无须重新认证。 PFS不属于协商属性,不要求通信双方同时开启PFS。"主密钥"PFS和"会话密钥"PFS均可以各自独立设置



http://www.360doc.com/content/12/0410/16/9523427_202515919.shtml

你可能感兴趣的:(ipsec与openswan)