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