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