應對智能卡硬件攻擊的軟件方法
文章出處:http://psychicreadingswithdeb.com 作者:陳士超 徐開(kāi)勇 陳光 李福林 人氣: 發(fā)表時(shí)間:2011年09月23日
1 引言
智能卡技術(shù)的發(fā)明與應用是計算機技術(shù)的一項重大革命,它作為個(gè)人身份標識和安全信息載體被廣泛地應用于金融、醫療、交通、電信等多個(gè)領(lǐng)域,深層次地影響:蕾人們的生產(chǎn)生活。單張智能卡要保護的資產(chǎn)價(jià)值可能不高,但整個(gè)智能卡領(lǐng)域涉及到的資產(chǎn)可能數額巨大;攻擊者攻破單張卡的獲利與其付出的努力可能無(wú)法相比,但是成功攻破之后所獲得的經(jīng)驗可能使得對同類(lèi)卡的攻擊變得容易,隨后的累計獲利將十分巨大。因此,近年來(lái)針對智能卡的硬件攻擊技術(shù)不斷得到發(fā)展,同時(shí)由于相對于其它昂貴的信息技術(shù)產(chǎn)品來(lái)說(shuō),智能卡價(jià)格低廉,通常在幾十到幾百元人民幣之間,所以攻擊者只需花費很少的代價(jià)就可以獲得多個(gè)智能卡來(lái)進(jìn)行攻擊性試驗。因此,智能卡所面臨的安全威脅越來(lái)越嚴峻,然而為保護智能卡而實(shí)施的硬件安全加固又較為昂貴,找到一種低廉而又有效的智能卡安全防護技術(shù)顯得尤為重要。
2 智能卡常見(jiàn)硬件攻擊方法
針對智能卡的硬件攻擊方法有很多,按照攻擊行為有無(wú)入侵智能卡硬件可以分為兩大類(lèi):主動(dòng)攻擊和被動(dòng)攻擊。
2.1主動(dòng)攻擊
針對智能卡常見(jiàn)的主動(dòng)攻擊行為有硬件分解、電磁干擾、永續變異等,它們的一個(gè)共同特點(diǎn)就是使用一定的工具,如蝕刻工具、光學(xué)顯微鏡、探針臺、激光切割機、掃描電子顯微鏡、聚焦離子束等,對智能卡的完整性均會(huì )造成不同程度的破壞。中介紹了一些其他的方便易行的攻擊技術(shù)。按照攻擊的時(shí)機不同,主動(dòng)攻擊又可以分為兩類(lèi)。一類(lèi)是靜態(tài)情況下獲取卡內存儲體內的數據和代碼,一類(lèi)是動(dòng)態(tài)運行情況下,攻破或者繞過(guò)智能卡的安全機制以獲取敏感信息。
2.2被動(dòng)攻擊
同主動(dòng)攻擊不同,利用被動(dòng)攻擊攝取智能卡信息時(shí)就沒(méi)有那么直接和精確了,但是它對智能卡的影響是可逆的。而且,被動(dòng)攻擊的種類(lèi)不僅僅局限在硬件攻擊一個(gè)方面.而是廣泛地存在于對通訊、接口、COS等多個(gè)方面的攻擊之中。
2.2.1信息泄露模型
最基本的被動(dòng)攻擊方法就是觀(guān)測法。觀(guān)測法是基于程序或者密碼算法在執行過(guò)程中的信息泄漏模型而來(lái)的,如圖1所示。
圖1 信息泄露模型
觀(guān)測的對象可以是一定時(shí)間段內電能的消耗、電壓的起伏,也可以是電磁輻射強度的變化等信息,進(jìn)而分析它們與時(shí)間的函數,找出其中的規律。根據觀(guān)測對象和角度的不同,大致可以分為以下幾種攻擊類(lèi)型:
2.2.2功率分析
1998年6月,Kocher等三人提出了功率分析的攻擊方法,即根據已知操作確定的功率值.直接分析密碼算法運行時(shí)所記 錄到的功率數據。常見(jiàn)的有簡(jiǎn)單功率分析(SPA)~1 率差分攻擊(DSA)。通過(guò)分析功率消耗信號得到處理器正在處理數據的漢明重量信息,利用這些信息可以構造出數據中的等價(jià)關(guān)系,進(jìn)而有可能破譯出密碼。
2.2.3電磁輻射分析
作為電子設備,計算機的組件在操作時(shí)常常會(huì )產(chǎn)生電磁輻射。攻擊者如果可以檢測到電磁輻射并且找到它們與底層計算和數據之間的關(guān)系,就可能獲得和這些計算和數據有關(guān)的相當多的信息。同功率分析相似,電磁輻射輻射攻擊fEMA1也可以分成兩大類(lèi):簡(jiǎn)單電磁輻射分析(SEMA)~ 分電磁輻射分析(DEMA)。
2.2.4耗時(shí)信息分析
由于性能優(yōu)化、分支和條件語(yǔ)句、RAM緩存的命中率或者處理器指令執行時(shí)問(wèn)的不固定等諸多原因,對于不同的輸入,一個(gè)加密系統所耗費的時(shí)問(wèn)會(huì )有略微的不同。耗時(shí)信息攻擊就是是基于對加密系統基本運算單元操作時(shí)間的測量而進(jìn)行的。這可能會(huì )導致與密鑰相關(guān)的信息的泄露。比如:通過(guò)精心測量完成私鑰導人操作所需的時(shí)問(wèn).攻擊者可以找到Diffie—Hell—man密鑰交換協(xié)議中同定的參數或者RSA算法中的密鑰因子,進(jìn)而破譯其他的密碼系統,給出了一個(gè)對RC5算法的耗時(shí)信息攻擊的實(shí)例。
3 基于軟件的應對策略
針對這些硬件攻擊手段.通常的防護措施是采用增加防護層、設置安全傳感器、芯片混亂布線(xiàn)、內存總線(xiàn)加密,內存訪(fǎng)問(wèn) 控制等硬件的防護手段。但是硬件防護手段具有成本高、靈活性差的缺點(diǎn).法國學(xué)者Xavier Leroy提出了一種使用軟件方法來(lái)防范硬件攻擊的思想.并從編程語(yǔ)言和靜態(tài)分析的角度進(jìn)行了研究。我們將這種思想稱(chēng)為“軟件防御”,根據這一思想,本文進(jìn)一步提出了幾種在智能卡嵌入式軟件設計中針對硬件攻擊的具體的策略和方法。
3.1“軟件防御”思想的基本內涵
Xavier Leroy在他的文章中指出:“使用軟件方法應對硬件攻擊的關(guān)鍵就是要看到一任何硬件攻擊都不能隨意改變硬件自身的運行方式”,這也是“軟件防御”思想的基本內涵。
比如拿第3部分所列舉出的各種類(lèi)型的硬件攻擊來(lái)說(shuō):主動(dòng)攻擊雖然具有準確高效的優(yōu)點(diǎn),但是卻會(huì )對智能卡硬件造成不可逆轉的損傷。這樣就會(huì )很容易被智能卡中存在的安全傳感器所發(fā)現,當然我們也可以采用軟件的方法來(lái)檢測,比如運行一個(gè)周期性自檢的程序:被動(dòng)攻擊雖然不會(huì )對硬件造成不可逆轉的影響,但是它對特定的敏感信息的影響是不精確的。比如使用聚焦離子束照射的方法可以在瞬問(wèn)將卡上存儲的數據變成全0或者是全1.但是卻很將存儲器上特定位置的數據改變?yōu)?或者1。
3.2“軟件防御”的具體方法
3.2.1數據冗余
為防止硬件攻擊行為修改智能卡存儲體上的靜態(tài)數據和程序代碼,可以在存儲數據f及程序代碼1的時(shí)候增加一定長(cháng)度的冗余數據,用來(lái)保證數據的完整性。一種簡(jiǎn)單的方法就是在每組數據的后面增加循環(huán)冗余碼。如果對于數據完整性有著(zhù)更加嚴格的要求,可以采用一個(gè)簡(jiǎn)單的哈希函數計算出每組數據的雜湊值。
通過(guò)數據冗余,還可以有效地防止主動(dòng)攻擊對智能卡內關(guān)鍵數據的修改(比如安全位、指令下載控制位等),并且由于僅僅是對數據存儲格式的變化,這種措施可以在不影響卡內原有程序結構的情況下,加固智能卡的安全性。
3.2.2控制冗余
針對對靜態(tài)數據或者關(guān)鍵代碼的篡改,我們可以通過(guò)數據冗余的方法進(jìn)行有效的防御。但是,在程序的動(dòng)態(tài)執行過(guò)程中,數據冗余策略就無(wú)能為力了,因此還必須增加程序執行時(shí)控制的冗余??刂迫哂嗟闹饕枷刖褪窃诎嘘P(guān)鍵代碼的函數中 添加多重控制, 以最大程度上保證程序執行是處于完全安全、可信的環(huán)境之中。比如,設置多個(gè)狀態(tài)位,在程序的執行過(guò)程中不斷檢查這些狀態(tài)位的狀態(tài),如果有一個(gè)發(fā)生了改變,程序馬上退出執行。
3.2.3執行冗余
不同于主動(dòng)攻擊,智能卡被動(dòng)攻擊利用了卡內程序(密碼算法1在執行過(guò)程中的信息泄露模型.不會(huì )對智能卡產(chǎn)生任何不可 逆的破壞.因此針對智能卡的被動(dòng)攻擊也必須從智能卡的信息泄露模型著(zhù)手。
為了便于理解,我們假設卡內程序f密碼算法1中有兩段獨立的f邏輯上沒(méi)有繼承關(guān)系、時(shí)問(wèn)上沒(méi)有先后關(guān)系1代碼段C1和C2,代碼段可以是不同層次的,既可以是大到獨立的功能函數,也可以是簡(jiǎn)單的0和1。不難理解,正是由于C1和C2的差異,最終導致了程序執行過(guò)程中各種信息的產(chǎn)生。為了避免信息的泄露,最根本的方法就是盡可能地減少這類(lèi)信息的產(chǎn)生。文獻介紹了在編碼層次減少信息產(chǎn)生的方法。本文給出了在程序功能函數這一級減少信息泄露的一種簡(jiǎn)單卻又有效的方法一執行冗余。
對于上文所述兩段獨立的功能函數C1、C2,我們在編寫(xiě)程序時(shí)就可以設計一個(gè)這樣的隨機函數發(fā)生器Random0。它的輸出是等概率分布的O和1。這時(shí)我們的代碼就可以這樣改造:
當然.這只是這一思想的一個(gè)簡(jiǎn)單的實(shí)現。如果是多個(gè)功能函數.我們就要適當改造我們的隨機數發(fā)生器和條件判斷結
構,如果程序中不存在這樣的獨立的功能函數,那么我們還需要對同一個(gè)功能構造多個(gè)不同但是等價(jià)的實(shí)現。
總之.軟件防御的具體方法都是針對智能卡硬件安全的具體薄弱環(huán)節,采用數據冗余、控制冗余或者執行冗余的方法,有 針對性地進(jìn)行安全加固。由于是軟件的方法進(jìn)行實(shí)現,同硬件安全加固相比,只需要簡(jiǎn)單的對代碼進(jìn)行修改,非常經(jīng)濟高效。
4 結束語(yǔ)
上面所講述的軟件防御技術(shù)雖然實(shí)現起來(lái)比較簡(jiǎn)單,但是往往需要在整個(gè)系統設計過(guò)程中集中規劃才能對程序執行進(jìn)
行足夠的控制進(jìn)而有效的抵抗各種硬件攻擊行為。而且無(wú)論是數據冗余、控制冗余還是執行冗余都會(huì )給系統功能的實(shí)現增加 一定程度的負擔,下一步的工作可以考慮通過(guò)綜合運用現代程序設計技巧來(lái)減少這些開(kāi)銷(xiāo)。
本文作者創(chuàng )新點(diǎn):總結出了一種智能卡的信息泄漏模型:基于“軟件防御”思想,提出了幾種抵抗智能卡硬件安全威脅的低開(kāi)銷(xiāo)、高效率的軟件防御措施和方法。
[1] Oliver K0mmerling and Markus Kuhn. Design Principles for Tamper-Resistant Smartcard Pmcessom. Chicago: Proceedings of USENIX Workshop on Smartcard Technology,1999:9-20.
[2]Thomas S.Messerges,Ezzy A.Dabbish,Robert H_Sloan.Eamining Smart-Card Security under the Threat of Power Analysi6 Attacks.IEEE Transactions on Computers,2002,(51):541—552.
[3]Paul Kocher,Joshua Jafe and Benjamin Jun.Introduction t!DDiferential Power Analysis an d Related Attacks. http’.//www.eryptography.com/dpa/technica1.
[4]Xavier keroy.Computer security from a programming languagean d static analysis perspective.http://pauillac.inria.fr/~xlemy/publL
[5] Ross Anderson, Markus Kuhn. Low Cost Attacks on Taml~?Resistan t Devices. Springer—Verlag :5th International Workshop,LNCS,1997(1361):125-136.
[6]Helena Handschuh,Howard M.Heys.A Timing Attack on RC5.http://www.engr.man.ca/-howard/PAPERS.2004
[7] Simon Moore,Ross Anderson,Robert Mullins.Balanced SeIf-Checking Asynchronous Logic for Smart Card Applications.http://WWW.c1.cam.a(chǎn)c.uk/-swml 1/research/papers.2002
[8]曹寧,馮曄.智能卡的安全和應用.微計算機信息.
作者簡(jiǎn)介:
陳士超(1982.10一),男(漢族),河南商丘人,解放軍信息工程大學(xué)碩士研究生,現主要從事公鑰基礎設施、智能卡系統研究;
徐開(kāi)勇(1963.4一),男(漢族),河南羅山人,解放軍信息工程大學(xué)碩士生導師,研究員,現主要從事軍隊信息安全系統設計、公鑰基礎設施研究;
陳光(1978.6一),男(漢族),河南駐馬店人,碩士,講師,現主要從事公鑰基礎設施、智能卡系統研究;
李福林(1980.2一),男(漢族),河北承德人,碩士,助教,現主要從事公鑰基礎設施、網(wǎng)絡(luò )信息安全研究。
通訊地址:(450004 河南鄭州商城東路l2號解放軍信息工程大學(xué)電子技術(shù)學(xué)院研究所)陳士超