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