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