王 娟
(合肥工业大学 计算机与信息学院,安徽 合肥 230009;池州学院 数学与计算机科学系,安徽 池州 247000)
一种基于无证书公钥密码学思想的Kerberos认证方案的改进
王 娟
(合肥工业大学 计算机与信息学院,安徽 合肥 230009;池州学院 数学与计算机科学系,安徽 池州 247000)
本文全面总结了国、内外许多文献中对Kerberos认证方案的各种改进,分析了各改进方案存在的局限性。最后基于无证书公钥密码思想,结合Elgamal算法对混合Kerberos认证协议进行了改进。本改进方案较好地解决了原协议中共享会话密钥需要托管、存在中间人攻击等缺陷,在网络身份认证中,具有一定的安全性和实用性。
Kerberos;安全性;无证书公钥思想;ElGamal算法
Kerberos是目前应用较为广泛的一种身份认证协议,起初是麻省理工学院为MIT Athena项目而开发。Kerberos的核心构成是认证中心KDC,KDC又由认证服务器AS和票据发放服务器TGS构成。其基本原理是:用户如果要访问某个应用服务器,必须先到KDC进行身份认证,取得访问应用服务器的票据凭证;应用服务器对持有访问凭证的用户直接提供服务。本文在分析比较国、内外许多文献中对Kerberos协议改进方案的基础上,指出了各改进方案的不足。并以无证书公钥密码学理论思想为基础,结合Elgamal算法,对混合Kerberos认证协议进行了改进,从而使Kerberos认证协议更加完善。
传统Kerberos协议的认证过程分为三个阶段,每一阶段包括两个过程,如图1
图1 传统Kerber的认证
第一阶段(1,2):用户向AS发出申请,从AS处获得访问TGS的许可票据。
第二阶段 (3,4):用户持有AS发放的许可票据,向TGS发出申请,从TGS处获得访问服务器的服务票据。
第三阶段(5,6):用户凭借TGS发放的服务票据访问应用服务器,从而获得服务。
传统的Kerberos协议采用的是对称数据加密体制DES。存在时钟难于同步、口令猜测攻击、密钥的存储和管理复杂、不提供数字签名和不可否认机制等局限性,协议的安全性较差。
基于传统Kerberos协议本身存在的局限性,在国、内外许多文献中都采用了公钥加密体制RSA对其进行了改进,简称Kerberos RSA协议,这在一定程度上解决了传统Kerberos存在的局限性。但是RSA本是也不是尽善尽美的,它存在着加解密速度较慢、效率不高的缺点,在实际应用中一般不直接使用其来加密传输的数据。如果在传输数据的过程中都使用公钥体制加、解密,势必会影响认证的效率。
为了弥补对称密钥体制安全性较差和公钥体制执行效率低的缺陷,有关文献中又采用了对称加密体制DES和非对称加密(公钥)体制RSA相结合的方法对Kerberos协议进行了改进,简称混合体制Kerberos认证协议。此种改进主要是利用对称加密密钥来加密要交换的重要信息,而使用公钥来加密用于双方通信的会话密钥。用公式符号化描述和解释混合体制Kerberos认证协议如下:
本文有关符号说明:E表示加密算法,D表示解密算法;KUx、KRx分别表示X的公钥、私钥;例如:EKUx(M)表示用X的公钥对信息M进行加密,DKRx(M)有两种含义:一种含义是用X的私钥对信息M进行解密,另一种含义是用X的私钥对信息M进行数字签名。IDx、CERT-x分别表示X的身份和数字证书;Kx.y表示X与Y之间的共享会话密钥。
步骤一:
(1)C->AS:IDc||CERT-c||IDtgs||DKRc(R1)
客户C向AS发出一个访问TGS的请求信息,该信息包括C的身份信息、数字证书和TGS的身份信息,另外还包括一个用客户C的私钥签名的随机数R1,该随机数用来代替传统Kerberos协议中的时间戳T1,用于向AS说明这一访问请求是新的。
(2)AS->C:CERT-as||EKUc (Kc.tgs||R1’||IDtgs||ADtgs||DKRas(IDc||TGT))
AS验证C的身份后,向C发送自己的数字证书CERT-as、C与TGS的共享会话密钥Kc.tgs以及用AS的私钥签名,再用TGS的公钥加密的票据TGT, 即 TGT=EKUtgs[DKRas(IDc,ADc,Lifetimes1,R1’,Kc.tgs)]。
通过上述两个过程,C与AS完成了双向身份认证,并且C从AS处获得了访问TGS的票据TGT。
步骤二:
(3)C->TGS:TGT||Authenticator_c1
客户C向TGS出示TGT,并向TGS提交认证单 Authenticator-c1=EKc.tgs[DKRc(IDc||IDs||R2’)],C先用自己的私钥对Authenticator-c1进行签名、再用与TGS的共享会话密钥对其加密。
(4)TGS->C:EKc.tgs(Kc.s||IDtgs||DKRtgs(ST||Kc.s)||R2’)
TGS生成票据ST=EKUs[DKRtgs(IDc||ADc||IDs||Lifetimes2||Kc.s)],TGS用自己的私钥对其签名,再用S的公钥加密。然后向C发送ST、C与S之间的共享会话密钥Kc.s。
通过以上两个过程,C从TGS处成功获得访得应用服务器的服务票据ST。
步骤三:
(5)C->S:ST,Authenticator-c2
客户C向应用服务器S提交TGS发放的服务票据 ST和身份认证单 Authenticator-c2=EKc.s(EKRc(IDc||IDs||R3’))。
(6)S->C:EKc.s(R3’)
S向C返送R3’。
以上两步实际完成了C和S之间的双向身份认证,这时,两者通过共享会话密钥Kc.s就可以交换信息了。
以上改进中,主要利用了对称加密体制安全性较低但执行效率高、公钥加密体制执行效率低但安全性较高的特点,两者相结合,取长补短,在一定程度上缓解了传统Kerberos和Kerberos RSA存在的局限性。
但笔者通过对混合体制Kerberos认证协议的分析发现:该协议虽然解决了Kerberos固有的一些安全缺陷,但又产生了新的问题:密钥需要托管,存在中间人攻击等,也是不安全的。这是因为,用户和应用服务器经过双向身份认证后进行通信,所采用的会话密钥Kc.s是Kerberos产生的,并由Kerberos托管。也就是说,用户C、应用服务器S、Kerberos三者都知道Kc.s,这就无法保证在客户C和应用服务器S之间的通话是绝对保密的。假设C向S发送信息M时,C先用共享密钥Kc.s加密M,形成密文EKc.s(M),发至S,如果在发送过程中被Kerberos截获,由于Kerberos知道Kc.s,就能用Kc.s轻松解密该密文,而不被举证。
为堵住以上漏洞,我们需要对上述协议进行再次改进:在客户C和应用服务器S进行双向身份认证后,临时产生仅为C和S知晓的共享会话密钥,来实现双方的绝对保密通信。本文基于无证书公钥密码思想,结合Elgamal算法对上述协议进行改进。
Elgamal是一个比RSA更为安全的公钥密码体制,既可用于信息加解密又可用于数字签名,其安全性基于计算离散对数的困难性,加上它只需解密一次,其效率明显优于其它公钥体制,因此该算法在密码学中应用十分广泛。该算法简述如下:
先选择一个素数p,两个随机数整数g、x (且g<p,x<p),计算 y=gx(mod p)。 y、g、p 可作为公钥,x 可作为私钥。
(1)要加密信息M时,须进行如下步骤:
——先选取一个与p-1互质的随机整数k;
——计算a=gkmod p,b=gkM mod p,则(a,b)为加密过的密文。
(2)解密信息M时,可计算公式:M=b/ax(mod p)。
(3)用户A对消息M数字签名时,须进行如下步骤:
——先选取一个与p-1互质的随机整数k;
——计算a=gkmod p;
——根据方程M=xa+kb(mod(p-1)),求解b。则对M的签名就是(a,b),此时丢弃随机数k。
——要验证签名 (a,b)可用ya*ab(mod p)=gM(mod p)式子进行验证。为防止签名被伪造,同时還要验证1<=a<p是否成立。
无证书公钥密码学是基于这样的一种思想:A和B之间要传递秘密信息,通信双方先自行产生自己的私钥,然后在自己私钥的基础上通过计算生成公钥,最后通信双方通过秘密通道交换公钥。这样,不但解决了公钥系统中的密钥托管问题,而且通信双方利用对方的公钥加密信息,在信息传输过程中,即使被第三者截获,也不会被破译。因为通信双方的私钥只有本人知道。
假设A和B希望通过密钥协商产生公钥进行安全通信,根据无证书公钥密码学思想,结合Elgamal算法。A、B按照如下步骤进行获得对方的公钥:
(1)密钥生成中心首先选择两个大的素数p和g(g<p)作为部分公钥,发送给用户 A 和 B。
(2)A、B 分别选取随机整数 x1、x2(x1<p,x2<p)作为各自的私钥,并分别计算y1=gx1 mod p、y2=gx2 mod p作为各自的公钥。
(3)A、B 交换公钥。 y1→B,y2→A。
这样,A、B之间如果要传递秘密信息,就可以使用新交换的公钥加密信息,接收方再用各自的私钥解密。
(4)A向B传送秘密信息 M。Ex1(M)→B,则 B就可用A的公钥y1解密M,Dy1(M)。反之亦然。
根据以上无证书公钥密码学思想,我们对Kerberos协议进行改进。客户C和应用服务器S分别和KDC进行双向身份认证后,KDC通过秘密安全信道将部分公钥pkdc、gkdc(pkdc<gkdc)发至 C和S。C和S分别生成KDC所不知道的私钥Xc、Xs,各自再结合KDC发来的部分公钥,生成各自的公 钥 Yc=gkdc Xc mod pkdc、Ys=gkdc Xs mod pkdc。 C和S通过秘密安全通道交换彼此的公钥。
由此我们对混合Kerberos协议步骤三改为步骤三、四:
步骤三:
(5)KDC→C:EKRkdc(pkdc||gkdc)
(6)KDC→S:EKRkdc(pkdc||gkdc)
步骤四:
(7)C→S:ST||Authenticator-C||EKc.s(Yc)
(8)S→C:EKc.s(Ys)
在本文新改进的协议中,基本解决了原混合Kerberos协议中共享会话密钥需要托管、存在中间人攻击的缺陷,其安全性是显而易见的。因为在C和S进行双向身份认证后,传递秘密信息,不是使用Kerberos产生的共享密钥Kc.s,而是用通信双方新交换的无证书公钥对信息进行加密,接收方再用各自的私钥解密,也就是说,此时在C和S之间通信,是绝对不会被包括Kerberos在内的第三者劫获了。
本文基于无证书公钥密码学思想对混合Kerberos认证协议进行了改进,经分析表明,本改进方案较好地解决了混合Kerberos认证协议中共享会话密钥需要托管,以及第三者可能对秘密信息进行的无举证窃听问题,提高了系统的安全性,具有较强的实用性。但本方案也存在一定的不足,那就是比原协议多了一步,增加了系统的计算量,随着进一步研究的深入,会采取相应的优化措施进一步改进,以适应复杂网络环境中,人们对身份认证技术安全性、实用性的更高要求。
[1]莫燕,张玉清,李学干.对Kerberos协议的攻击及对策研究[J].计算机工程,2005,31(10):66-69.
[2]汤卫东,李为民,周永权.利用 ElGamal算法改进 Kerberos协议[J].计算机工程与设计,2006(6):2063-2065.
[3]胡宇,王世伦.基于混合体制的Kerberos身份认证协议的研究[J].计算机应用,2009(6):1659-1661.
[4]柳毅,郝彦军,庞辽军.基于ElGamal密码体制的可验证秘密共享方案[J].计算机科学,2010(8):80-82.
[5]陈家琪,冯俊,郝妍.无证书密钥协商协议对跨域Kerberos的改进[J].计算机工程,2010(10):150-152.
TP393
A
1674-1102(2011)03-0016-03
2011-03-14
王娟(1977-),女,安徽霍邱人,池州学院数学计算机科学系讲师,合肥工业大学计算机与信息学院在读硕士,主研方向为网络信息安全,计算机基础教育。
[责任编辑:曹怀火]