王 娟
(合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230009;池州學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)系,安徽 池州 247000)
一種基于無(wú)證書(shū)公鑰密碼學(xué)思想的Kerberos認(rèn)證方案的改進(jìn)
王 娟
(合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230009;池州學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)系,安徽 池州 247000)
本文全面總結(jié)了國(guó)、內(nèi)外許多文獻(xiàn)中對(duì)Kerberos認(rèn)證方案的各種改進(jìn),分析了各改進(jìn)方案存在的局限性。最后基于無(wú)證書(shū)公鑰密碼思想,結(jié)合Elgamal算法對(duì)混合Kerberos認(rèn)證協(xié)議進(jìn)行了改進(jìn)。本改進(jìn)方案較好地解決了原協(xié)議中共享會(huì)話密鑰需要托管、存在中間人攻擊等缺陷,在網(wǎng)絡(luò)身份認(rèn)證中,具有一定的安全性和實(shí)用性。
Kerberos;安全性;無(wú)證書(shū)公鑰思想;ElGamal算法
Kerberos是目前應(yīng)用較為廣泛的一種身份認(rèn)證協(xié)議,起初是麻省理工學(xué)院為MIT Athena項(xiàng)目而開(kāi)發(fā)。Kerberos的核心構(gòu)成是認(rèn)證中心KDC,KDC又由認(rèn)證服務(wù)器AS和票據(jù)發(fā)放服務(wù)器TGS構(gòu)成。其基本原理是:用戶如果要訪問(wèn)某個(gè)應(yīng)用服務(wù)器,必須先到KDC進(jìn)行身份認(rèn)證,取得訪問(wèn)應(yīng)用服務(wù)器的票據(jù)憑證;應(yīng)用服務(wù)器對(duì)持有訪問(wèn)憑證的用戶直接提供服務(wù)。本文在分析比較國(guó)、內(nèi)外許多文獻(xiàn)中對(duì)Kerberos協(xié)議改進(jìn)方案的基礎(chǔ)上,指出了各改進(jìn)方案的不足。并以無(wú)證書(shū)公鑰密碼學(xué)理論思想為基礎(chǔ),結(jié)合Elgamal算法,對(duì)混合Kerberos認(rèn)證協(xié)議進(jìn)行了改進(jìn),從而使Kerberos認(rèn)證協(xié)議更加完善。
傳統(tǒng)Kerberos協(xié)議的認(rèn)證過(guò)程分為三個(gè)階段,每一階段包括兩個(gè)過(guò)程,如圖1
圖1 傳統(tǒng)Kerber的認(rèn)證
第一階段(1,2):用戶向AS發(fā)出申請(qǐng),從AS處獲得訪問(wèn)TGS的許可票據(jù)。
第二階段 (3,4):用戶持有AS發(fā)放的許可票據(jù),向TGS發(fā)出申請(qǐng),從TGS處獲得訪問(wèn)服務(wù)器的服務(wù)票據(jù)。
第三階段(5,6):用戶憑借TGS發(fā)放的服務(wù)票據(jù)訪問(wèn)應(yīng)用服務(wù)器,從而獲得服務(wù)。
傳統(tǒng)的Kerberos協(xié)議采用的是對(duì)稱數(shù)據(jù)加密體制DES。存在時(shí)鐘難于同步、口令猜測(cè)攻擊、密鑰的存儲(chǔ)和管理復(fù)雜、不提供數(shù)字簽名和不可否認(rèn)機(jī)制等局限性,協(xié)議的安全性較差。
基于傳統(tǒng)Kerberos協(xié)議本身存在的局限性,在國(guó)、內(nèi)外許多文獻(xiàn)中都采用了公鑰加密體制RSA對(duì)其進(jìn)行了改進(jìn),簡(jiǎn)稱Kerberos RSA協(xié)議,這在一定程度上解決了傳統(tǒng)Kerberos存在的局限性。但是RSA本是也不是盡善盡美的,它存在著加解密速度較慢、效率不高的缺點(diǎn),在實(shí)際應(yīng)用中一般不直接使用其來(lái)加密傳輸?shù)臄?shù)據(jù)。如果在傳輸數(shù)據(jù)的過(guò)程中都使用公鑰體制加、解密,勢(shì)必會(huì)影響認(rèn)證的效率。
為了彌補(bǔ)對(duì)稱密鑰體制安全性較差和公鑰體制執(zhí)行效率低的缺陷,有關(guān)文獻(xiàn)中又采用了對(duì)稱加密體制DES和非對(duì)稱加密(公鑰)體制RSA相結(jié)合的方法對(duì)Kerberos協(xié)議進(jìn)行了改進(jìn),簡(jiǎn)稱混合體制Kerberos認(rèn)證協(xié)議。此種改進(jìn)主要是利用對(duì)稱加密密鑰來(lái)加密要交換的重要信息,而使用公鑰來(lái)加密用于雙方通信的會(huì)話密鑰。用公式符號(hào)化描述和解釋混合體制Kerberos認(rèn)證協(xié)議如下:
本文有關(guān)符號(hào)說(shuō)明:E表示加密算法,D表示解密算法;KUx、KRx分別表示X的公鑰、私鑰;例如:EKUx(M)表示用X的公鑰對(duì)信息M進(jìn)行加密,DKRx(M)有兩種含義:一種含義是用X的私鑰對(duì)信息M進(jìn)行解密,另一種含義是用X的私鑰對(duì)信息M進(jìn)行數(shù)字簽名。IDx、CERT-x分別表示X的身份和數(shù)字證書(shū);Kx.y表示X與Y之間的共享會(huì)話密鑰。
步驟一:
(1)C->AS:IDc||CERT-c||IDtgs||DKRc(R1)
客戶C向AS發(fā)出一個(gè)訪問(wèn)TGS的請(qǐng)求信息,該信息包括C的身份信息、數(shù)字證書(shū)和TGS的身份信息,另外還包括一個(gè)用客戶C的私鑰簽名的隨機(jī)數(shù)R1,該隨機(jī)數(shù)用來(lái)代替?zhèn)鹘y(tǒng)Kerberos協(xié)議中的時(shí)間戳T1,用于向AS說(shuō)明這一訪問(wèn)請(qǐng)求是新的。
(2)AS->C:CERT-as||EKUc (Kc.tgs||R1’||IDtgs||ADtgs||DKRas(IDc||TGT))
AS驗(yàn)證C的身份后,向C發(fā)送自己的數(shù)字證書(shū)CERT-as、C與TGS的共享會(huì)話密鑰Kc.tgs以及用AS的私鑰簽名,再用TGS的公鑰加密的票據(jù)TGT, 即 TGT=EKUtgs[DKRas(IDc,ADc,Lifetimes1,R1’,Kc.tgs)]。
通過(guò)上述兩個(gè)過(guò)程,C與AS完成了雙向身份認(rèn)證,并且C從AS處獲得了訪問(wèn)TGS的票據(jù)TGT。
步驟二:
(3)C->TGS:TGT||Authenticator_c1
客戶C向TGS出示TGT,并向TGS提交認(rèn)證單 Authenticator-c1=EKc.tgs[DKRc(IDc||IDs||R2’)],C先用自己的私鑰對(duì)Authenticator-c1進(jìn)行簽名、再用與TGS的共享會(huì)話密鑰對(duì)其加密。
(4)TGS->C:EKc.tgs(Kc.s||IDtgs||DKRtgs(ST||Kc.s)||R2’)
TGS生成票據(jù)ST=EKUs[DKRtgs(IDc||ADc||IDs||Lifetimes2||Kc.s)],TGS用自己的私鑰對(duì)其簽名,再用S的公鑰加密。然后向C發(fā)送ST、C與S之間的共享會(huì)話密鑰Kc.s。
通過(guò)以上兩個(gè)過(guò)程,C從TGS處成功獲得訪得應(yīng)用服務(wù)器的服務(wù)票據(jù)ST。
步驟三:
(5)C->S:ST,Authenticator-c2
客戶C向應(yīng)用服務(wù)器S提交TGS發(fā)放的服務(wù)票據(jù) ST和身份認(rèn)證單 Authenticator-c2=EKc.s(EKRc(IDc||IDs||R3’))。
(6)S->C:EKc.s(R3’)
S向C返送R3’。
以上兩步實(shí)際完成了C和S之間的雙向身份認(rèn)證,這時(shí),兩者通過(guò)共享會(huì)話密鑰Kc.s就可以交換信息了。
以上改進(jìn)中,主要利用了對(duì)稱加密體制安全性較低但執(zhí)行效率高、公鑰加密體制執(zhí)行效率低但安全性較高的特點(diǎn),兩者相結(jié)合,取長(zhǎng)補(bǔ)短,在一定程度上緩解了傳統(tǒng)Kerberos和Kerberos RSA存在的局限性。
但筆者通過(guò)對(duì)混合體制Kerberos認(rèn)證協(xié)議的分析發(fā)現(xiàn):該協(xié)議雖然解決了Kerberos固有的一些安全缺陷,但又產(chǎn)生了新的問(wèn)題:密鑰需要托管,存在中間人攻擊等,也是不安全的。這是因?yàn)?,用戶和?yīng)用服務(wù)器經(jīng)過(guò)雙向身份認(rèn)證后進(jìn)行通信,所采用的會(huì)話密鑰Kc.s是Kerberos產(chǎn)生的,并由Kerberos托管。也就是說(shuō),用戶C、應(yīng)用服務(wù)器S、Kerberos三者都知道Kc.s,這就無(wú)法保證在客戶C和應(yīng)用服務(wù)器S之間的通話是絕對(duì)保密的。假設(shè)C向S發(fā)送信息M時(shí),C先用共享密鑰Kc.s加密M,形成密文EKc.s(M),發(fā)至S,如果在發(fā)送過(guò)程中被Kerberos截獲,由于Kerberos知道Kc.s,就能用Kc.s輕松解密該密文,而不被舉證。
為堵住以上漏洞,我們需要對(duì)上述協(xié)議進(jìn)行再次改進(jìn):在客戶C和應(yīng)用服務(wù)器S進(jìn)行雙向身份認(rèn)證后,臨時(shí)產(chǎn)生僅為C和S知曉的共享會(huì)話密鑰,來(lái)實(shí)現(xiàn)雙方的絕對(duì)保密通信。本文基于無(wú)證書(shū)公鑰密碼思想,結(jié)合Elgamal算法對(duì)上述協(xié)議進(jìn)行改進(jìn)。
Elgamal是一個(gè)比RSA更為安全的公鑰密碼體制,既可用于信息加解密又可用于數(shù)字簽名,其安全性基于計(jì)算離散對(duì)數(shù)的困難性,加上它只需解密一次,其效率明顯優(yōu)于其它公鑰體制,因此該算法在密碼學(xué)中應(yīng)用十分廣泛。該算法簡(jiǎn)述如下:
先選擇一個(gè)素?cái)?shù)p,兩個(gè)隨機(jī)數(shù)整數(shù)g、x (且g<p,x<p),計(jì)算 y=gx(mod p)。 y、g、p 可作為公鑰,x 可作為私鑰。
(1)要加密信息M時(shí),須進(jìn)行如下步驟:
——先選取一個(gè)與p-1互質(zhì)的隨機(jī)整數(shù)k;
——計(jì)算a=gkmod p,b=gkM mod p,則(a,b)為加密過(guò)的密文。
(2)解密信息M時(shí),可計(jì)算公式:M=b/ax(mod p)。
(3)用戶A對(duì)消息M數(shù)字簽名時(shí),須進(jìn)行如下步驟:
——先選取一個(gè)與p-1互質(zhì)的隨機(jī)整數(shù)k;
——計(jì)算a=gkmod p;
——根據(jù)方程M=xa+kb(mod(p-1)),求解b。則對(duì)M的簽名就是(a,b),此時(shí)丟棄隨機(jī)數(shù)k。
——要驗(yàn)證簽名 (a,b)可用ya*ab(mod p)=gM(mod p)式子進(jìn)行驗(yàn)證。為防止簽名被偽造,同時(shí)還要驗(yàn)證1<=a<p是否成立。
無(wú)證書(shū)公鑰密碼學(xué)是基于這樣的一種思想:A和B之間要傳遞秘密信息,通信雙方先自行產(chǎn)生自己的私鑰,然后在自己私鑰的基礎(chǔ)上通過(guò)計(jì)算生成公鑰,最后通信雙方通過(guò)秘密通道交換公鑰。這樣,不但解決了公鑰系統(tǒng)中的密鑰托管問(wèn)題,而且通信雙方利用對(duì)方的公鑰加密信息,在信息傳輸過(guò)程中,即使被第三者截獲,也不會(huì)被破譯。因?yàn)橥ㄐ烹p方的私鑰只有本人知道。
假設(shè)A和B希望通過(guò)密鑰協(xié)商產(chǎn)生公鑰進(jìn)行安全通信,根據(jù)無(wú)證書(shū)公鑰密碼學(xué)思想,結(jié)合Elgamal算法。A、B按照如下步驟進(jìn)行獲得對(duì)方的公鑰:
(1)密鑰生成中心首先選擇兩個(gè)大的素?cái)?shù)p和g(g<p)作為部分公鑰,發(fā)送給用戶 A 和 B。
(2)A、B 分別選取隨機(jī)整數(shù) x1、x2(x1<p,x2<p)作為各自的私鑰,并分別計(jì)算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)。反之亦然。
根據(jù)以上無(wú)證書(shū)公鑰密碼學(xué)思想,我們對(duì)Kerberos協(xié)議進(jìn)行改進(jìn)??蛻鬋和應(yīng)用服務(wù)器S分別和KDC進(jìn)行雙向身份認(rèn)證后,KDC通過(guò)秘密安全信道將部分公鑰pkdc、gkdc(pkdc<gkdc)發(fā)至 C和S。C和S分別生成KDC所不知道的私鑰Xc、Xs,各自再結(jié)合KDC發(fā)來(lái)的部分公鑰,生成各自的公 鑰 Yc=gkdc Xc mod pkdc、Ys=gkdc Xs mod pkdc。 C和S通過(guò)秘密安全通道交換彼此的公鑰。
由此我們對(duì)混合Kerberos協(xié)議步驟三改為步驟三、四:
步驟三:
(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)
在本文新改進(jìn)的協(xié)議中,基本解決了原混合Kerberos協(xié)議中共享會(huì)話密鑰需要托管、存在中間人攻擊的缺陷,其安全性是顯而易見(jiàn)的。因?yàn)樵贑和S進(jìn)行雙向身份認(rèn)證后,傳遞秘密信息,不是使用Kerberos產(chǎn)生的共享密鑰Kc.s,而是用通信雙方新交換的無(wú)證書(shū)公鑰對(duì)信息進(jìn)行加密,接收方再用各自的私鑰解密,也就是說(shuō),此時(shí)在C和S之間通信,是絕對(duì)不會(huì)被包括Kerberos在內(nèi)的第三者劫獲了。
本文基于無(wú)證書(shū)公鑰密碼學(xué)思想對(duì)混合Kerberos認(rèn)證協(xié)議進(jìn)行了改進(jìn),經(jīng)分析表明,本改進(jìn)方案較好地解決了混合Kerberos認(rèn)證協(xié)議中共享會(huì)話密鑰需要托管,以及第三者可能對(duì)秘密信息進(jìn)行的無(wú)舉證竊聽(tīng)問(wèn)題,提高了系統(tǒng)的安全性,具有較強(qiáng)的實(shí)用性。但本方案也存在一定的不足,那就是比原協(xié)議多了一步,增加了系統(tǒng)的計(jì)算量,隨著進(jìn)一步研究的深入,會(huì)采取相應(yīng)的優(yōu)化措施進(jìn)一步改進(jìn),以適應(yīng)復(fù)雜網(wǎng)絡(luò)環(huán)境中,人們對(duì)身份認(rèn)證技術(shù)安全性、實(shí)用性的更高要求。
[1]莫燕,張玉清,李學(xué)干.對(duì)Kerberos協(xié)議的攻擊及對(duì)策研究[J].計(jì)算機(jī)工程,2005,31(10):66-69.
[2]湯衛(wèi)東,李為民,周永權(quán).利用 ElGamal算法改進(jìn) Kerberos協(xié)議[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(6):2063-2065.
[3]胡宇,王世倫.基于混合體制的Kerberos身份認(rèn)證協(xié)議的研究[J].計(jì)算機(jī)應(yīng)用,2009(6):1659-1661.
[4]柳毅,郝彥軍,龐遼軍.基于ElGamal密碼體制的可驗(yàn)證秘密共享方案[J].計(jì)算機(jī)科學(xué),2010(8):80-82.
[5]陳家琪,馮俊,郝妍.無(wú)證書(shū)密鑰協(xié)商協(xié)議對(duì)跨域Kerberos的改進(jìn)[J].計(jì)算機(jī)工程,2010(10):150-152.
TP393
A
1674-1102(2011)03-0016-03
2011-03-14
王娟(1977-),女,安徽霍邱人,池州學(xué)院數(shù)學(xué)計(jì)算機(jī)科學(xué)系講師,合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院在讀碩士,主研方向?yàn)榫W(wǎng)絡(luò)信息安全,計(jì)算機(jī)基礎(chǔ)教育。
[責(zé)任編輯:曹懷火]