非接觸式智能卡安全協(xié)議改進(jìn)研究
文章出處:http://m.compasssalessolutions.com 作者:馮靜 許勇 人氣: 發(fā)表時(shí)間:2011年09月28日
1 引言
隨著智能卡技術(shù)的發(fā)展,智能卡可獨(dú)立運(yùn)行密碼運(yùn)算的自包容特性,使其在高安全性要求的場合得到了廣泛的應(yīng)用。目前,智能卡已廣泛應(yīng)用于身份合法性鑒別、數(shù)據(jù)存儲(chǔ)或傳輸?shù)乃矫苄耘c完整性、信息交互的抗抵賴性以及移動(dòng)計(jì)算等信息處理和信息安全領(lǐng)域。隨著身份認(rèn)證技術(shù)向硬件解決方案發(fā)展和智能卡的廣泛應(yīng)用,圍繞著智能卡應(yīng)用安全開展的理論和策略研究、芯片設(shè)計(jì)和產(chǎn)品開發(fā)既是學(xué)術(shù)界研究的熱點(diǎn),也是產(chǎn)業(yè)界關(guān)注的焦點(diǎn)。
非接觸式智能卡作為智能卡技術(shù)的一個(gè)重要發(fā)展方向,卡與讀卡器間的通信安全無疑是非接觸式智能卡應(yīng)用系統(tǒng)安全中的重中之重。非接觸式智能卡通常含有用戶的身份識(shí)別標(biāo)示,通過特定的密碼協(xié)議來保障其和讀卡器間的安全交互。目前,非接觸式智能卡存在的安全威脅主要包括如下幾個(gè)方面:①智能卡的成本限制與協(xié)議安全強(qiáng)度之間的矛盾導(dǎo)致部分廠家為節(jié)約成本而舍棄安全性;② 設(shè)計(jì)者對(duì)智能卡的自包容特性盲目信任,對(duì)克隆攻擊威脅認(rèn)識(shí)不足;③智能卡的唯一身份標(biāo)示容易泄露用戶隱私。
非接觸式智能卡與讀卡器間的信息安全包括了以下特性,即認(rèn)證性、機(jī)密性和完整性。其安全應(yīng)用的本質(zhì)可總結(jié)為:構(gòu)建安全終端(智能卡和讀卡器之間的身份合法性鑒別)和搭建安全通道(在智能卡和讀卡器之間搭建可信的智能卡信息交易通道)。
本文通過分析和利用現(xiàn)有的認(rèn)證協(xié)議和密碼算法,針對(duì)非接觸式智能卡與讀卡器問的通信提出了一種改進(jìn)的安全協(xié)議。
本文所使用的符號(hào)如下:
A:讀卡器;B:智能卡;P:消息明文;Ei:i的公鑰;Di:i的私鑰;Ki:秘密密鑰,i代表密鑰所有者;Ks:會(huì)話密鑰:Ri:i產(chǎn)生的隨機(jī)數(shù);P(R):由隨機(jī)數(shù)R指向的身份信息;SSC:序列計(jì)數(shù)器。
2 認(rèn)證協(xié)議
身份認(rèn)證是指通信雙方可靠地驗(yàn)證對(duì)方的身份。用以確保數(shù)據(jù)的真實(shí)性,阻止對(duì)手的主動(dòng)攻擊,如篡改或冒充等。認(rèn)證往往是智能卡應(yīng)用中安全保護(hù)的第一道防線。由于非接觸式智能卡與讀卡器間信道開放性的特點(diǎn),使得身份信息在傳遞的過程中非常容易被泄露。因此一個(gè)安全的認(rèn)證協(xié)議是非常重要的。
目前智能卡上的身份認(rèn)證一般都已經(jīng)使用了動(dòng)態(tài)鑒別,但其安全性完全依賴于密鑰的私密性,一旦密鑰泄漏,系統(tǒng)就會(huì)處于危險(xiǎn)中。對(duì)此本文提出了以下改進(jìn)。在非接觸式智能卡中一般都存在著卡的唯一身份標(biāo)識(shí)信息(如卡序列號(hào),生產(chǎn)商代碼等),在本協(xié)議中,
圖1 身份認(rèn)證協(xié)議
對(duì)卡的身份標(biāo)識(shí)信息進(jìn)行擴(kuò)展,使其成為一個(gè)唯一的身份標(biāo)識(shí)數(shù)據(jù)塊圖D(當(dāng)然不能太大導(dǎo)致超出卡的存儲(chǔ)范圍)。當(dāng)每次卡與讀卡器間進(jìn)行相互認(rèn)證時(shí),只使用其中的一部分進(jìn)行傳輸,具體協(xié)議如圖1。在本協(xié)議中A、B預(yù)先知道了對(duì)方的公鑰,并共享一個(gè)主秘密密鑰Kab。協(xié)議描述如下:
(1)A產(chǎn)生一個(gè)位置隨機(jī)數(shù)R ,并用B的公鑰Eb對(duì)其進(jìn)行加密后傳輸給B,B收到后用自己的私鑰Db進(jìn)行解密得到Ra,R 經(jīng)過一個(gè)位置置換函數(shù)T(位置的范圍包括整個(gè)身份標(biāo)識(shí)數(shù)據(jù)塊圖)得出D 中相應(yīng)的數(shù)據(jù)信息位置,并讀出該數(shù)據(jù)。
(2)B用共享密鑰Kab使用2-DES算法加密得出的身份信息,再產(chǎn)生一個(gè)位置隨機(jī)數(shù)Rb,用A的公鑰E 加密Rb,最后一起傳送給A。
(3)A用共享密鑰K a b對(duì)消息2解密,將Ra輸入與B中相同的位置置換函數(shù)T得出對(duì)應(yīng)的數(shù)據(jù)信息位置,將K ab解密后得出的身份信息與A得出的信息進(jìn)行對(duì)比,一致則認(rèn)為B是合法的。再用A的私鑰Da對(duì)Ea(Rb)進(jìn)行解密得出Rb,將Rb經(jīng)過位置置換函數(shù)T得出對(duì)應(yīng)的數(shù)據(jù)信息位置,讀出該數(shù)據(jù),用kab使用2-DES算法加密該數(shù)據(jù)并傳送給B,B解密后對(duì)其進(jìn)行驗(yàn)證,一致則認(rèn)為A是合法的,完成了A與B的相互認(rèn)證。
在這里,位置置換函數(shù)T起著非常重要的作用,它的任務(wù)是將接收到的隨機(jī)數(shù)通過一系列的安全運(yùn)算最終輸出一個(gè)位置數(shù),且要求這一過程只有A、B雙方可以完成。我們可以使用2-DES算法生成MAC值的方法得出這一位置數(shù),以位置隨機(jī)數(shù)作為輸入,使用共享密鑰K ab得出一個(gè)函數(shù)值,即為所需的位置數(shù)??紤]到非接觸式智能卡的硬件成本限制和認(rèn)證的速度,大部分的數(shù)據(jù)流量都是用2-DES來加密的,而現(xiàn)在的智能卡大部分都添加了加密協(xié)處理器,可以加快加密速度。協(xié)議中的非對(duì)稱算法使用的是ECC(橢圓曲線加密)算法,且只對(duì)兩個(gè)隨機(jī)數(shù)進(jìn)行了加密,不會(huì)造成系統(tǒng)太大負(fù)擔(dān)。
3 信道安全
在本協(xié)議中,每次通信都將使用一個(gè)新的隨機(jī)選取的會(huì)話密鑰,這樣就使得利用用戶的秘密密鑰和公鑰來發(fā)送的流量降低到最少,從而也減少了入侵者可能得到的密文數(shù)量。當(dāng)會(huì)話建立后,所有的永久密鑰都將退出通信過程,即使會(huì)話密鑰暴露了,也可以將損害降到最低。
下面介紹基于Diffie—Hellman密鑰交換協(xié)議的會(huì)話密鑰的產(chǎn)生。
(1)A產(chǎn)生兩個(gè)大隨機(jī)數(shù)n和g,即D—H參數(shù)。這里要求n是一個(gè)素?cái)?shù),(n-1)/2也是一個(gè)素?cái)?shù),g是n的一個(gè)原根。這兩個(gè)數(shù)可以公開的傳送給B。
(2)A選擇一個(gè)大隨機(jī)數(shù)X,x<n,X是保密的, 計(jì)算 ya=g x modn,將(n,g,Ya)發(fā)送給B。同樣地,B 也選擇一個(gè)秘密的大隨機(jī)數(shù)Y,計(jì)算 =gYmodn,并 將Yb作為對(duì)A 的回應(yīng)。
(3)A通過計(jì)算K= yax modn得到了共享密鑰Ka,B也通過計(jì)算K=ybx modn得到了共享密鑰Kb。根據(jù)模算術(shù)定理,雙方的計(jì)算結(jié)果是相同的。這樣A、B就共享了一個(gè)秘密密鑰K=Ka =Kb。
因?yàn)閄和Y是保密的,一個(gè)入侵者可以利用的參數(shù)只有n、g、Ya和Yb。因而入侵者被迫取離散對(duì)數(shù)來確定密鑰。例如,要獲取B的秘密密鑰,入侵者必須先計(jì)算Y,然后再使用B采用的同樣方法計(jì)算其秘密密鑰K。Diffie—Hellman密鑰交換算法的安全性依賴于這樣一個(gè)事實(shí):雖然計(jì)算以一個(gè)素?cái)?shù)為模的指數(shù)相對(duì)容易,但計(jì)算離散對(duì)數(shù)卻很困難。對(duì)于大的素?cái)?shù),計(jì)算出離散對(duì)數(shù)幾乎是不可能的。
同時(shí)為了防止中間人攻擊,發(fā)送n、g、Y a和Yb時(shí),使用主密鑰K ab對(duì)其進(jìn)行加密。具體協(xié)議如圖2。
圖2 會(huì)話密鑰生成協(xié)議
當(dāng)然得到的K并不能直接用于會(huì)話密鑰,因?yàn)檫@時(shí)的K只是長度不定的秘密數(shù)據(jù)串,而卡在進(jìn)行加解密計(jì)算時(shí)所需的密鑰長度是固定的。可以使用下面提到的Hash算法將可變長度的信息轉(zhuǎn)化為固定長度的信息,而這個(gè)固定長度的數(shù)據(jù)串就是雙方共享的會(huì)話密鑰Ks。
另外,在卡與終端進(jìn)行通信時(shí),若每次會(huì)話都重新生成一組D—H參數(shù)并執(zhí)行相應(yīng)的協(xié)商步驟,會(huì)造成通信的效率低下。因此,協(xié)議中建議采用同一組D—H參數(shù)來協(xié)商會(huì)話密鑰,以保證執(zhí)行效率。
4 數(shù)據(jù)完整性
由于非接觸式智能卡與終端的通信是曝露在公開環(huán)境下的,雙方在進(jìn)行信息交換的時(shí)候,很容易遇到以下攻擊:① 篡改通信數(shù)據(jù);②使用偽造的消息,刪除或使用之前發(fā)送的消息進(jìn)行重放攻擊。
為了防止攻擊者篡改A、B雙方的通信數(shù)據(jù),同時(shí)考慮到非接觸式智能卡的運(yùn)算效率,本協(xié)議使用MD5哈希算法計(jì)算數(shù)據(jù)的消息摘要得到固定長度的Hash值,附在密文后發(fā)送到接收方,接收方只需在解密密文后用MD5算法得出相應(yīng)Hash值,并與接受到的Hash值相比較,結(jié)果相同則說明消息沒有被篡改。
圖3 消息傳輸協(xié)議
而針對(duì)第二種情況,可以通過發(fā)送序列計(jì)數(shù)器機(jī)制保證信息的實(shí)時(shí)性和真實(shí)性,即在會(huì)話密鑰的有效期內(nèi)加入一個(gè)時(shí)間序列號(hào)。
在安全通信中使用發(fā)送序列計(jì)數(shù)器機(jī)制不是由于它本身是安全方法,只有把發(fā)送序列計(jì)數(shù)器和安全協(xié)議結(jié)合起來才有意義,否則攻擊者對(duì)計(jì)數(shù)器的任何修改都將難于察覺。序列計(jì)數(shù)器的工作原理是每個(gè)消息中含有一個(gè)依賴于它被發(fā)送的時(shí)間的序列號(hào),這使得在過程中若去掉或插入一個(gè)消息時(shí)能立即被注意到,使得接受方可采取適當(dāng)?shù)膶?duì)策。
本協(xié)議中,每次會(huì)話都會(huì)產(chǎn)生一個(gè)唯一的共享密鑰K,它可以用于對(duì)序列計(jì)數(shù)器(ssc)進(jìn)行初始化。每發(fā)送一次消息計(jì)數(shù)器就被增量。計(jì)數(shù)器的長度可以根據(jù)需要通過哈希函數(shù)進(jìn)行設(shè)定。具體協(xié)議如圖3。
5 安全性分析
實(shí)際上不可能建立起一個(gè)具有完善的安全性能而不被任何人所滲透的完整系統(tǒng),即使智能卡也是一樣。為了保證雙方通信的認(rèn)證性、機(jī)密性和完整性,協(xié)議中針對(duì)這三方面進(jìn)行了具體設(shè)計(jì),希望使得它們之間的安全性可以相互疊加,即以邏輯或的關(guān)系結(jié)合在一起,當(dāng)某一環(huán)節(jié)被攻擊了,協(xié)議的后續(xù)操作能夠有效的抵制和處理這些攻擊。以下通過常見的攻擊方法對(duì)本協(xié)議進(jìn)行安全性分析。
(1)在身份認(rèn)證階段,本協(xié)議不僅使用了非對(duì)稱算法進(jìn)行身份認(rèn)證,同時(shí)加入了身份信息的動(dòng)態(tài)認(rèn)證,安全性不只緊緊依賴于密鑰的保密性,同時(shí)也依賴于用戶的身份標(biāo)識(shí)信息的私密性,攻擊者即使通過截獲的大量信息分析出一方或雙方私鑰,也無法完成認(rèn)證。因?yàn)楣粽邿o法通過截獲的信息來獲得完整的身份標(biāo)識(shí)數(shù)據(jù)塊圖,因?yàn)楣粽卟⒉恢乐脫Q函數(shù)的具體過程(它被秘密的存儲(chǔ)在卡和終端內(nèi),并不出現(xiàn)在信道內(nèi)),無法分析位置隨機(jī)數(shù)所真正對(duì)應(yīng)的位置號(hào)。有效抵制了猜測攻擊。
(2)本協(xié)議基于Diffie—Hellman算法,使用一次一密的方法來構(gòu)建安全的通信信道。在會(huì)話密鑰的生成過程中,通過加密公開數(shù)據(jù)防止了中間人攻擊。同時(shí)即使本次會(huì)話密鑰泄露了并不會(huì)導(dǎo)致之前會(huì)話密鑰的泄漏,保證了密鑰的前向安全性。
(3)通過使用消息摘要的方式,有效防止了攻擊者對(duì)消息的篡改。而在消息中加入序列計(jì)數(shù)器,則有效抵制了通過刪除或使用之前發(fā)送的消息進(jìn)行重放攻擊。
(4)為了防止基于已知明文一密文對(duì)的攻擊,在本協(xié)議的通信過程中,避免了出現(xiàn)對(duì)應(yīng)的明文一密文對(duì)。
6 性能分析
考慮到非接觸式智能卡對(duì)實(shí)時(shí)性的要求較高,協(xié)議的實(shí)現(xiàn)過程需要具有較高的速率。在本協(xié)議中只有在身份認(rèn)證的位置隨機(jī)數(shù)傳遞和會(huì)話密鑰生成時(shí)分別使用了ECC和Diffie—Hellman這兩種非對(duì)稱密鑰算法。協(xié)議中的其他部分都使用了對(duì)稱加密算法,計(jì)算速度很快。為了驗(yàn)證本協(xié)議的運(yùn)算效率,模擬時(shí)鐘頻率為4.9MHz,帶有DES協(xié)處理器的智能卡,在實(shí)驗(yàn)中對(duì)各步驟的耗時(shí)進(jìn)行了測試。ECC密鑰采用1 35b,Diffie—HelIman密鑰采用1 28b,對(duì)稱加密算法使用2-DES。在①②③節(jié)對(duì)協(xié)議的描述中,我們把安全協(xié)議分為3部分:①身份認(rèn)證;②會(huì)話密鑰生成:③雙方的安全通信。在第一步耗時(shí)為0.742 s左右;第二步耗時(shí)為O.041 S左右,在此階段D—H參數(shù)的生成和傳遞只需要一次,所以計(jì)算和通信時(shí)間不作考慮;第三步為雙方的安全通信過程,由于使用了DES協(xié)處理器,每條消息的處理時(shí)間為0.25ms左右。在第一步中耗時(shí)較長,這是因?yàn)槭褂昧朔菍?duì)稱算法,且進(jìn)行了多重置換。第二步由于使用了Diffie—Hellman算法進(jìn)行密鑰協(xié)商,耗時(shí)也較長。但總速度不超過1 S,可以認(rèn)為協(xié)議能夠滿足實(shí)時(shí)性的要求。
7 結(jié)束
本文通過分析和利用現(xiàn)有的認(rèn)證協(xié)議和密碼算法,針對(duì)非接觸式智能卡與讀卡器間的通信提出了一種改進(jìn)的安全協(xié)議。通過幾種攻擊方法對(duì)提出的協(xié)議進(jìn)行驗(yàn)證,表明本協(xié)議可以有效抵抗重放攻擊和中間人攻擊;由于使用臨時(shí)會(huì)話密鑰,降低了密鑰泄漏的概率;使用動(dòng)態(tài)的身份信息,減少了密鑰泄漏的危害。
然而攻擊的方法多種多 樣,本協(xié)議仍然存在安全隱患,還需要通過更有效的方法對(duì)其進(jìn)行分析和改進(jìn)??紤]到非接觸式智能卡的特性,本文的認(rèn)證協(xié)議并沒有引入可信的第三認(rèn)證方,只是在卡與讀卡器上完成獨(dú)立的相互認(rèn)證。
(文/桂林電子科技大學(xué)計(jì)算機(jī)與控制學(xué)院 馮靜 許勇)