IPSec协商分为两个阶段:第一阶段协商对对方的身份进行认证,并且为第二阶段的协商提供一条安全可靠的通道。第二阶段主要对IPSEC的安全性能进行协商,产生真正可以用来加密数据流的密钥。
第一阶段主模式(IKE SA 阶段):
发送cockie包,用来标识唯一的一个IPSEC会话。
IKE阶段一(主模式):发送消息1 initiator====>responsor
isakmp header sa payload proposal payload transform payload 定义一组策略:
加密方法:DES 认证身份方法:预共享密钥 认证散列:MD5 存活时间:86400秒 Diffie-Hellman group:1 IKE阶段二(主模式):发送消息2 initiator<====responsor
同上 IKE阶段三(主模式):发送消息3 initiator====>responsor
通过DH算法产生共享密钥 KE(Key Exchang) Payload nonce(暂时) Payload DH算法:
A: P(较大的质数) B: P(较大的质数) G G PriA(随机产生) PriB(随机产生) PubA=G^PriA mod P PubB=G^PriB mod P 交换PubA和PubB Z=PubB^PriA mod P Z=PubA^PriB mod P Z就是共享密钥,两个自我产生的Z应相同,它是用来产生3个SKEYID的素材。 IKE阶段四(主模式):发送消息4 initiator<====responsor
同上 主模式第3、4条消息其实就是DH算法中需要交换的几个参数,然后路由器再通过DH算法计算出的公共密钥计算出以下3个参数(这是在发送第5、6个消息前完成的): SKEYID_d:留在在第二阶段用,用来计算后续的IKE密钥资源; SKEYID_a:散列预共享密钥,提供IKE数据完整性和认证; SKEYID_e:用来加密下一阶段的message,data, preshared key,包括第二阶段。 IKE阶段五(主模式):发送消息5 initiator====>responsor
Identity Payload:用于身份标识 Hash Payload:用来认证 以上2个负载都用SKEYID_e加密 IKE阶段六(主模式):发送消息6 initiator<====responsor
同上 消息5、6是用来验证对等体身份的。至此IKE协商第一阶段完成。 第二阶段快速模式(IPSec SA 阶段):
首先判断是否启用了PFS(完美转发安全),若启用了则重新进行DH算法产生密钥,若没有启用则是用第一阶段的密钥。
IPSec阶段一(快速模式):发送消息1 initiator====>responsor
同样定义一组策略,继续用SKEYID_e加密:
Encapsulation— ESP
Integrity checking— SHA-HMAC
DH group— 2
Mode— Tunnel
IPSec阶段二(快速模式):发送消息2 initiator<====responsor
同上,主要是对消息1策略的一个确认。
在发送消息3前,用SKEYID_d,DH共享密钥,SPI等产生真正用来加密数据的密钥。
IPSec阶段三(快速模式):发送消息3 initiator====>responsor
用来核实responsor的liveness。
至此,整个IPSec协商的两个过程已经完成,两端可以进行安全的数据传输 总结如下: 9个包的来回,前6个为主模式,后3个为快速模式. 相关参数---相关参数----DH算法----DH算法(产生3个SKEYID的素材)-----身份认证-----身份认证-----组策略-------组策略确认------核实responsor的liveness 因特网密钥交换协议(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)。 ESP、AH用来对IP报文进行封装、加/解密、验证以达到保护IP报文的目的,而IKE和ISAKMP/Oakley/SKEME则是通信双方用来协商封装形式、加/解密算法及其密钥、密钥的生命期、验证算法的。 ISAKMP/Oakley/SKEME是为IKE的协商提供服务的,它提供了实现IKE的框架、密钥交换模式和方法、密钥的更新方法。ISAKMP是“Internet安全关联和密钥管理协议”的简称,即Internet Security Associationand Key Management Protocol。ISAKMP对验证和密钥交换提出了结构框架,但没有具体定义。ISAKMP被设计用来独立的进行密钥交换,即被设计用于支持多种不同的密钥交换。Oakley描述了一系列被称为“模式”的密钥交换,并详述了每一种提供的服务。SKEME描述了一种提供匿名,否认,和快速密钥更新的通用密钥交换技术。IKE是使用部分Oakley,部分SKEME,并结合ISAKMP的一种协议,它使用ISAKMP来得到已验证的用于生成密钥和其它安全联盟(如AH,ESP)中用于IETE IPsec DOI的材料。IKE协议是Oakley和SKEME协议的一种混合,并在由ISAKMP规定的一个框架内运作。Oakley和SKEME定义了通信双方建立一个共享的验证密钥所必须采取的步骤。IKE利用ISAKMP语言对这些步骤以及其它信息交换措施进行表述。 IKE的用途就是在IPSec通信双方之间,建立起共享安全参数及验证过的密钥,亦即建立“安全关联”关系。 图12.9 IKE的用途 IKE是一种常规用途的安全交换协议,可用于策略的磋商,以及验证加密材料的建立,适用于多方面的需求椚?/FONT>SNMPv3、OSPFv2等等。IKE采用的规范是在“解释域(DomainofInterpretation,DOI)”中制订的。针对IPSec存在着一个名为RFC2407的解释域,它定义了IKE具体如何与IPSecSA进行协商。如果其它协议要用到IKE,每种协议都要定义各自的DOI。为正确实施IKE,需遵守三份文件(文档)的规定,它们分别是:基本ISAKMP规范(RFC2408)、IPSec解释域(RFC2407)、IKE规范本身(RFC2409)。 IKE主要完成两个作用:安全关联的集中化管理,减少连接时间、密钥的生成和管理。 Oakley和SKEME各自定义了建立经过验证的密钥交换的方法。其中包括负载的构建,信息负载的运送,它们被处理的顺序以及被使用的方法。Oakley定义了“模式”,ISAKMP定义了“阶段”。两者之间的关系非常直接,IKE描述了在两个阶段中进行的不同的、称为模式的交换。 IKE建立SA分两个阶段。第一阶段,协商创建一个通信信道(IKE SA),并对该信道进行认证,为双方进一步的IKE通信提供机密性、数据完整性以及数据源认证服务,IKE定义了两个第一阶段的协商(Main Mode-主模式和Aggressive Mode-积极模式) 第一阶段协商(主模式协商)步骤: 主模式交换提供了身份保护机制,经过三个步骤,六个消息,头两个消息协商策略;下两个消息交换Diffie-Hellman的公共值和必要的辅助数据;最后的两个消息验证Diffie-Hellman交换。 图12.10 使用签名验证的主模式 策略协商交换。IKE以“保护组(Protectionsuite)”的形式来定义策略。每个保护组都至少需要定义采用的加密算法(选择DES或3DES)、散列算法(选择MD5或SHA)、Diffie-Hellman组以及验证方法(数字签名,公共密钥加密的两种验证,或者共享密钥认证)。IKE的策略数据库则列出了所有保护组(按各个参数的顺序)。由于通信双方决定了一个特定的策略组后,它们以后的通信便必须根据它进行,所以这种形式的协商是两个IKE通信实体第一步所需要做的。 Diffie Hellman共享值、nonce交换交换。虽然名为密钥交换,但事实上交换的只是一些DH算法生成共享密钥所需要的基本材料信息。在彼此交换过密钥生成材料后,两端主机可以各自生成出完全一样的共享“主密钥”,保护紧接其后的认证过程。Diffie-Hellman交换以及一个共享秘密的建立是IKE协议的第二步。 身份验证交换。IKE交换的下一个步骤便是对Diffie-Hellman共享秘密进行验证,同时还要对IKESA本身进行验证。DH交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。“主密钥”结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的“主密钥”提供机密性和完整性保证。一或多个证书负载在传递中是可选的。 在野蛮模式下,总共三个信息被交换。第一个信息由SA、nonce和身份组成。第二个信息是,在验证发起方并接受SA后,应答方发送nonce 和身份信息给发起方。第三个信息是,发起方验证应答方的身份以及进行被提议的信息的交换。 图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交换以及求幂运算。但是必须支持使用快速模式的密钥交换负载成为可选的。 第二阶段协商(快速模式协商)步骤: 12.12 快速模式 快速模式交换通过三条消息建立IPsec SA:头两条消息协商IPsec SA的各项参数值,并生成IPsec 使用的密钥。包括使用哪种IPSec协议(AH或ESP)、使用哪种hash算法(D5或SHA)、是否要求加密,若是,选择加密算法(DES或3DES)。在上述三方面达成一致后,将建立起两个SA,分别用于入站和出站通信。第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据。 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阶段一存在两种模式: 第三次交换 用于验证对方的身份。身份值是以加密的IPSec对等体的IP地址。 IKE SA为IKE指定下列参数值: 认证方法{Pre-Share|RSA签名|RSA加密} 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 工程任务组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均可以各自独立设置 |
|