fenger_li
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-05-19 11:16
咱这个论坛不太热闹呀。
贴一段我的论文吧。呵呵!
      
     对于IKE的分析及改进
       。。。。。
摘要:本文介绍了IKE的协商过程,并对其进行了分析,然后提出了个人对相关方面的建议和改进,其中包括:对cookies的建议,签名验证主模式的改进,签名验证积极模式的改进,及预共享方式的改进。通过改进,协议会更加安全、实用。
关键词:密钥交换;虚拟专用网;IPSec;完美向前保密
文献标识码:A        中图分类号:TP309
Analysis and Improvement in Internet Key Exchange
。。。。。
【Abstract】We introduce and analyse the negotiation procedure of IKE, and then some suggestions for modificating relevant aspects are presented, including the suggestion for cookies, the improvement in main mode and aggressive mode which are authenticated with signatures and the improvement in the authentication with a pre-shared key. The protocol can be more practical and securer by modification.
【Key words】Key Exchange;Virtual Private Network;IPSec;Perfect Forward Secrecy (PFS)
 
1引言
随着internet的蓬勃发展,如何在internet上实现安全有效地的密钥交换已成为了一个非常重要的问题。为此,IETF指定的IPSec标准提供了一系列关于密钥交换的协议,其中包括:Oakley协议、ISAKMP协议、SKEME协议和IKE协议等。
Oakley描述了一系列被称之为模式的密钥交换,并详述了提供的各种服务,如密钥的完美向前保密,身份保护,以及验证等。ISAKMP提出了验证和密钥交换的结构框架,但没有给出具体定义,ISAKMP的设计目的是为了进行独立的密钥交换,即支持多种不同的密钥交换。SKEME中描述了一种通用密钥交换技术,这种技术支持快速密钥更新。
IKE是一种“混合型”协议,Oakley、ISAKMP和SKEME--这三个协议构成了它的基础。IKE沿用了ISAKMP的阶段、Oakley的模式以及SKEME的共享和密钥更新技术,从而定义出自己独有的验证加密材料的生成技术,以及协商共享策略。此协议已广泛应用于虚拟专用网等各个领域。
由于密钥交换重要性的日益突出,但现有版本的IKE仍然有一些不完善部分,所以IETF对现有版本的IKE的不合理部分正积极征集意见进行修改。本文就是在这种背景下提出的,通过对现有版本的IKE的介绍和分析,提出了自己对某些方面的改进建议。
----------------------------------
作者简介:。。。



2 IKE总体的介绍及分析
IKE是一种混合型协议,它沿用了Oakley中定义的模式,ISAKMP中定义的阶段,描述了在两个阶段中进行的不同的、称之为模式的交换。IKE交换的最终结果是产生一个通过验证的密钥以及双方都同意的安全服务――即IPSec SA(本文介绍的是IPSec上IKE的应用)。
IKE使用了两个阶段的ISAKMP。第一阶段建立ISAKMP SA,第二阶段利用这个既定的SA,为IPSec协商具体的SA。
第一阶段中两个ISAKMP实体之间建立了一个安全的、验证无误的通信信道,被称为ISAKMP SA。它可以由两种方式完成,即主模式和积极模式。不管是主模式还是积极模式,它们完成的任务是相同的:即建立ISAKMP SA,并建立验证过的密钥,为双方的IKE通信提供机密性、消息完整性以及消息源验证服务。IKE中定义的其它所有交换都要求以建立一个验证过的ISAKMP SA为首要条件。所以在进行其它任何交换之前必须完成一次第一阶段交换。
   第二阶段中完成了IPSec SA的协商,并且协商过程要受到第一阶段的ISAKMP SA 的保护。ISAKMP SA保护快速模式交换的方法是:对其进行加密,并对消息进行验证。
    分析:在IKE交换过程中之所以要分两个阶段交换是因为这样可以提高协商效率。因为一个第一阶段协商可以应用于多个第二阶段的协商,而一个第二阶段协商可以申请多个SA。由于这种优化,完成每个SA的传输往返,及DH幂运算都会减少。从而大大提高协商的效率。第一阶段中的主模式提供了身份保护。当身份保护不必要时,可以使用积极模式以进一步减少传输往返。  
3 IKE第一阶段的协商
3.1第一阶段的介绍
第一阶段协商的目的就是产生ISAKMP SA。参与通信的各方会生成四种秘密:SKEYID,后续的所有得密钥材料都建立在它的基础上;SKEYID_d用于为IPSec衍生出密钥材料;SKEYID_a的作用是保证IKE消息的数据完整性以及对数据源的身份进行验证;SKEYID_e用于对IKE消息进行加密。SKEYID的生成取决于协商好的是何种验证方法,而其它所有以SKEYID为基础的秘密都以相同的方式衍生出来。生成SKEYID需要通信每一方都要提供一个cookie和一个nonce:发起者cookie--CKY-I,它的nonce--Ni;响应者提供的是CKY-R和Nr。它们可作为一种在场的证据使用:每一方都向对方证明是由自己来处理对方的nonce和cookie,表示它现在正在处于“上场”状态,而非处于“候选”状态。作为Diffie-Hellman交换的一个结果,通信双方将共享Diffie-Hellman的共享密钥:g^xy--它也会在SKEYID的生成中用到。主模式或积极模式中都允许四种不同的验证方法――公钥签名的验证方法,公钥加密的两种验证方法,或者预共享密钥的方法。对每种验证方法要分别计算SKEYID值。
对于公钥签名:SKEYID = prf (Ni_b | Nr_b, g^xy)
对于公共密钥加密:SKEYID = prf (hash (Ni_b | Nr_b), CKY-I | CKY-R)
对于预共享密钥:SKEYID = prf (预共享密钥, Ni_b | Nr_b)
其中,PRF(亦即伪随机函数)通常是协商好的散列函数的一个HMAC版本。生成了SKEYID之后,SKEYID状态剩下的部分便可逐次生成:
   SKEYID_d = prf (SKEYID, g^xy | CKY-I | CKY-R | 0)
     SKEYID_a = prf (SKEYID, SKEYID_d | g^xy | CKY-I | CKY-R | 1)
     SKEYID_e = prf (SKEYID, SKEYID_a | g^xy | CKY-I | CKY-R | 2)
显然PRF函数的块长度决定了最终生成的SKEYID状态的长度。假如PRF的输出太小,不能作为一个加密密钥来使用,那么SKEYID_e便必须进行扩展。
    为了验证交换中的双方,协议的发起者产生HASH_I,响应者产生HASH_R,其中:
     HASH_I = prf (SKEYID, g^xi | g^xr | CKY-I | CKY-R | SAi_b | IDii_b )
     HASH_R = prf (SKEYID, g^xr | g^xi | CKY-R | CKY-I | SAi_b | IDir_b )
3.2 第一阶段的四种验证方式
第一阶段协商可由四种不同的验证方式来实现,它们是:用公钥签名的验证方式,用公钥加密的验证方式,修改后的公钥加密的验证方式和预共享的验证方式。
公钥签名验证方式是用协商的签名算法对身份进行验证。公钥加密验证方式是由对方的公钥对ID和nonce进行加密,由自己的私钥进行解密验证,共需要四个关于公钥的加解密运算。修改后的公钥加密验证只需一半的公钥运算。预共享方式则是用双方预先都知道得密钥进行加解密,它必须建立在知道对方IP的基础上。四种验证方式的详细过程见文献[2]。
不管使用哪种验证方式,它们的主模式都经过三个步骤,共用到了六条消息,最终建立ISAKMP SA的。这三个步骤分别是一次SA协商、一次Diffie-Hellman交换和一次nonce交换、以及对对方身份的验证。主模式的特点包括对身份保护和对ISAKMP协商能力的完全利用。其中,身份保护在对方希望隐藏自己的身份时显得尤为重要。它们的积极模式只用到了三条消息,速度更快,更加简单,但抗攻击能力比较差。
4 IKE第二阶段的协商
第二阶段的协商是通过快速模式来实现的。快速模式交换的信息必须由第一阶段协商的ISAKMP SA来保护――即除了ISAKMP报头外,所有的负载都要加密。在一个ISAKMP SA的保护下,可以进行多个快速模式交换。
   快速模式过程如下:

其中:
    HASH(1) = prf (SKEYID_a, M-ID | SA | Ni [ | KE ] [ | IDci | IDcr ])
    HASH(2) = prf (SKEYID_a, M-ID | Ni_b | SA | Nr [ | KE ] [ | IDci | IDcr ])
    HASH(3) = prf (SKEYID_a, 0 | M-ID | Ni_b | Nr_b)
    分析:基本的快速模式(没有KE负载)在更新第一阶段的求幂运算所衍生出来的密钥材料时,不提供完美向前保密(PFS)。如果需要PFS,则需交换KE负载,执行额外的求幂运算。
如果不需要PFS,并且没有KE负载交换,则新的密钥材料定义为:
   KEYMAT = prf (SKEYID_d, protocol | SPI | Ni_b | Nr_b)。
如果需要PFS且有KE负载交换,则新密钥材料定义为:
       KEYMAT = prf (SKEYID_d, g(qm)^xy | protocol | SPI | Ni_b | Nr_b)
其中快速模式中的g(qm)^xy是临时Diffie-Hellman交换的共享密钥。
当所需要的密钥材料的长度大于prf所提供的长度时,KEYMAT就不断的通过将prf的结果回填给自己,并将结果串联起来,直到满足需要的长度。即:
KEYMAT = K1 | K2 | K3 |…
    其中:
    K1 = prf (SKEYID_d, [ g(qm)^xy | ] protocol | SPI | Ni_b | Nr_b)
    K2 = prf (SKEYID_d, K1 | [ g(qm)^xy | ] protocol | SPI | Ni_b | Nr_b)
    K3 = prf (SKEYID_d, K2 | [ g(qm)^xy | ] protocol | SPI | Ni_b | Nr_b)
    等等。
5 分析及改进
。。。。。。
6结论
密钥交换问题已经成为网络通信安全中一个十分重要的问题。IKE已广泛应用在IPSec中,为IPSec协议生成密钥,对其它需要密钥的其它协议,亦可用IKE来进行密钥协商密钥。但现有版本的IKE仍然有一些不完善的地方。所以IETF也正积极对现有版本IKE协议的不合理部分征集建议进行修改。本文提出了个人对一些方面的改进建议,旨在使此协议更加安全、实用、有效。但在IKE中仍然还有许多问题,还需要进一步研究去解决。
实用、有效。但在IKE中仍然还有许多问题,还需要进一步研究去解决。

参考文献
。。。。。

   大家看着玩吧,不过,不要哪这当论文发呀。改进无就不说了,以防出现版权问题。
有点意思。。。 呵呵!
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-05-21 22:42
好好学习一下。
按第一贴的“给分”键,给分。
fenger_li
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-05-22 10:20
没什么技术含量,看看玩就行了。呵呵!
moqingsong:
 你怎么这莫多分,很厉害,不会是到灌水区搞得吧。
 我的分怎么这么少呀,富裕就给我加点吧,呵呵!
有点意思。。。 呵呵!
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-05-22 14:41
就是到灌水那里灌的。不好意思,你的贴子是最应该给分的,可惜我已经给完了,在开一个给分吧,不过我得问点问题了,要不然会被kill的。
按第一贴的“给分”键,给分。
上一页 下一页
游客

返回顶部