在智能卡應(yīng)用日益廣泛的今天,智能卡應(yīng)用系統(tǒng)的安全問(wèn)題非常重要。通常認(rèn)為智能卡具有較高的安全性[1],但隨著一些專(zhuān)用攻擊技術(shù)的出現(xiàn)和發(fā)展,智能卡也呈現(xiàn)出其安全漏洞,導(dǎo)致整個(gè)應(yīng)用系統(tǒng)安全性降低。分析智能卡面臨的安全攻擊,研究相應(yīng)的防御措施,對(duì)于保證整個(gè)智能卡應(yīng)用系統(tǒng)的安全性有重大意義。下面分析目前主要的智能卡攻擊技術(shù)之一——邊頻攻擊技術(shù),并有針對(duì)性地提出相應(yīng)的安全設(shè)計(jì)策略。
1 智能卡簡(jiǎn)述
智能卡是將具有存儲(chǔ)、加密及數(shù)據(jù)處理能力的集成電路芯片鑲嵌于塑料基片上制成的卡片。智能卡的硬件主要包括微處理器和存儲(chǔ)器兩部分,邏輯結(jié)構(gòu)如圖1 所示。
智能卡內(nèi)部的微處理器多采用8位字長(zhǎng)的CPU(當(dāng)然更高位的微處理器也正在開(kāi)始應(yīng)用)。微處理器的主要功能是接收外部設(shè)備發(fā)送的命令,對(duì)其進(jìn)行分析后, 根據(jù)需要控制對(duì)存儲(chǔ)器的訪問(wèn)。訪問(wèn)時(shí),微處理器向存儲(chǔ)器提供要訪問(wèn)的數(shù)據(jù)單元地址和必要的參數(shù),存儲(chǔ)器則根據(jù)地址將對(duì)應(yīng)的數(shù)據(jù)傳輸給微處理器,最后由微處理器對(duì)這些數(shù)據(jù)進(jìn)行處理操作。此外,智能卡進(jìn)行的各種運(yùn)算(如加密運(yùn)算) 也是由微處理器完成的;而控制和實(shí)現(xiàn)上述過(guò)程的是智能卡的操作系統(tǒng)COS??▋?nèi)的存儲(chǔ)器容量由只讀存儲(chǔ)器ROM、隨機(jī)存儲(chǔ)器RAM和電擦除可編程存儲(chǔ)器 EEPROM組成。其中,ROM 中固化的是操作系統(tǒng)代碼,其容量取決于所采用的微處理器;RAM 用于存放操作數(shù)據(jù),容量通常不超過(guò)1 KB;EEPROM存儲(chǔ)智能卡的各種信息,如加密數(shù)據(jù)和應(yīng)用文件等,容量通常介于2 KB~32 KB之間(這部分存儲(chǔ)資源可供用戶開(kāi)發(fā)利用)。
2 對(duì)智能卡安全的威脅
對(duì)智能卡的攻擊可分為三種基本類(lèi)型:
① 邏輯攻擊——在軟件的執(zhí)行過(guò)程中插入竊聽(tīng)程序。智能卡及其COS中存在多種潛在的邏輯缺陷,諸如潛藏的命令、不良參數(shù)與緩沖器溢出、文件存取、惡意進(jìn)程、通信協(xié)議、加密協(xié)議等。邏輯攻擊者利用這些缺陷誘騙卡泄露機(jī)密數(shù)據(jù)或允許非期望的數(shù)據(jù)修改。
?、?物理攻擊——分析或更改智能卡硬件。用于實(shí)現(xiàn)物理攻擊的手段和工具包括化學(xué)溶劑、蝕刻與著色材料、顯微鏡、亞微米探針臺(tái)以及粒子束FIB等。
?、?邊頻攻擊——利用物理量來(lái)分析和更改智能卡的行為。通過(guò)觀察電路中的某些物理量,如能量消耗、電磁輻射、時(shí)間等的變化規(guī)律,來(lái)分析智能卡的加密數(shù)據(jù);或通過(guò)干擾電路中的某些物理量,如電壓、電磁輻射、溫度、光和X射線、頻率等,來(lái)操縱智能卡的行為。
智能卡攻擊方法的有效性以攻擊者所獲得的效益高于其耗費(fèi)的時(shí)間、精力、經(jīng)費(fèi)等作為標(biāo)準(zhǔn)。表1給出了上述三種攻擊類(lèi)型的情況對(duì)比。
物理攻擊成本過(guò)高,耗時(shí)費(fèi)力,較少被采用;邏輯攻擊雖然投入較少,容易實(shí)施,但也容易防范,成功率較低。近年來(lái),新興的邊頻攻擊技術(shù)因其較高的收益成本比而被廣泛使用。盡管智能卡業(yè)界對(duì)于邊頻攻擊的解決方案已有了越來(lái)越多的認(rèn)識(shí),然而許多智能卡對(duì)于這類(lèi)攻擊仍毫無(wú)免疫力。目前,應(yīng)用最為廣泛的邊頻分析和邊頻操縱技術(shù)包括:差分能量分析技術(shù)DPA(Differential Power Analysis)與能量短脈沖波形干擾(Power Glitching)技術(shù)。下面重點(diǎn)就這兩種邊頻攻擊的方法加以分析,并給出相應(yīng)的安全策略。
3 差分能量分析
3.1 DPA攻擊的分析
DPA(差分能量分析)攻擊是通過(guò)用示波鏡檢測(cè)電子器件的能量消耗來(lái)獲知其行為的。圖2為某智能卡用DES算法加密時(shí)的能量追蹤圖。
能量消耗是不連續(xù)的并呈現(xiàn)出某種模式。眾所周知,用DES算法對(duì)一個(gè)輸入數(shù)據(jù)加密時(shí)需要執(zhí)行16次循環(huán),因此可以在能量軌跡的16次重復(fù)模式中識(shí)別出這些循環(huán)。攻擊者只需知道算法的明文(輸入)或密文(輸出),通過(guò)分析和比較一系列的能量軌跡就可重現(xiàn)加密密鑰。DPA攻擊的基礎(chǔ)是假設(shè)被處理的數(shù)據(jù)與能量消耗之間存在某種聯(lián)系,換句話說(shuō),假設(shè)處理0比1所用的能量要少(反之亦然),那么對(duì)兩個(gè)不同數(shù)據(jù)執(zhí)行同一算法的兩個(gè)能量軌跡會(huì)由于輸入數(shù)據(jù)的不同而產(chǎn)生微小的差別。用計(jì)算機(jī)嚴(yán)格按時(shí)鐘計(jì)算兩條軌跡的差得到差分軌跡,差分軌跡中出現(xiàn)峰值的時(shí)刻即是輸入數(shù)據(jù)產(chǎn)生差別的時(shí)鐘周期。如此檢查加密算法的所有輸入以及每一對(duì)0和1產(chǎn)生的差分軌跡,就可以識(shí)別出它們出現(xiàn)在程序代碼中的確切時(shí)間,從而獲取加密密鑰。
DPA使得加密算法的內(nèi)部處理過(guò)程可以被研究,這一危險(xiǎn)性對(duì)智能卡安全提出了更高的要求。加密算法必須使用足夠長(zhǎng)度的全密鑰,以保證探索密鑰的過(guò)程因過(guò)于耗時(shí)而不可行。一個(gè)完整的算法通常在加密過(guò)程中分解成許多小步驟以使處理器可以實(shí)現(xiàn)。這些小步驟往往不使用全密鑰而是用其中的一部分。DPA可以獲取這些小步驟的輸出并探索出這些較短的密鑰值,因此,從理論上說(shuō),所有加密算法都可用DPA破解。雖然這種攻擊方法的開(kāi)發(fā)十分復(fù)雜,然而其應(yīng)用卻十分簡(jiǎn)單且只需很小的投資,所需的設(shè)備僅限于1臺(tái)PC及中等精度的示波鏡,因此解決DPA問(wèn)題成為智能卡制造商最急需面對(duì)的問(wèn)題之一。
3.2 DPA攻擊的安全策略
應(yīng)對(duì)DPA攻擊的安全策略基本分為三個(gè)層面:硬件、軟件和應(yīng)用層面。
(1) 硬件層面的反措施
① 采用平衡電路降低信號(hào)能量,以及設(shè)置金屬防護(hù)以抑制電磁發(fā)射。
② 執(zhí)行并行隨機(jī)處理來(lái)加大幅值噪聲水平。例如,內(nèi)部編程電壓產(chǎn)生電路可用作并行噪聲發(fā)生器。
③ 隨時(shí)處理中斷引入的時(shí)間噪聲和不同的時(shí)鐘頻率。對(duì)差分軌跡進(jìn)行計(jì)算機(jī)處理的基礎(chǔ)是軌跡可排列。在加入軌跡之前處理器的工作步驟應(yīng)是同步的。時(shí)間噪聲會(huì)防止或至少妨礙軌跡很好地排列。
硬件反措施的好處在智能卡對(duì)于側(cè)路攻擊的敏感性比較少地依賴于軟件的變化,但其弱點(diǎn)在于只能降低智能卡對(duì)于側(cè)路攻擊的敏感性而無(wú)法完全消除它。事實(shí)上,硬件防范措施只是將信號(hào)降低到噪聲水平從而使攻擊變得困難。
(2) 軟件層面的反措施
?、?采用隨機(jī)處理順序來(lái)減少相關(guān)的信號(hào)。例如,算法中的平行置換(諸如DES中的S盒)可依隨機(jī)的順序來(lái)完成,置換的數(shù)目重新排序,則可將一次置換產(chǎn)生的信號(hào)分解。
② 利用隨機(jī)延時(shí)和改變路徑來(lái)增加計(jì)時(shí)噪聲。計(jì)時(shí)噪聲會(huì)妨礙軌跡的排列,并降低差分軌跡的質(zhì)量。
③ 消除密鑰值及中間媒介值的時(shí)間依存性。當(dāng)處理過(guò)程取決于密鑰值時(shí),直接用肉眼觀察軌跡就可實(shí)現(xiàn)簡(jiǎn)單的能量分析;而在時(shí)間上連續(xù)的密鑰處理過(guò)程則可防止這種易行的攻擊。
?、?用隨機(jī)值來(lái)隱蔽中間媒介值。能量的泄露取決于一個(gè)數(shù)據(jù)中的位數(shù)。如果在實(shí)際數(shù)據(jù)上加上隨機(jī)數(shù)據(jù),處理完之后再減去,那么傳遞的路徑將不會(huì)泄露有用的信息。不過(guò),這種隱蔽將會(huì)導(dǎo)致傳遞函數(shù)的非線性并產(chǎn)生錯(cuò)誤的結(jié)果。因此,這些函數(shù)需要仔細(xì)地重新設(shè)計(jì),以補(bǔ)償由隨機(jī)數(shù)據(jù)引起的背離。
理論上來(lái)說(shuō),軟件對(duì)策完美地解決了DPA攻擊的問(wèn)題。然而這種方法必須針對(duì)某種算法定制且其設(shè)計(jì)相當(dāng)困難,因而非常昂貴且難以維持。
(3) 應(yīng)用層面的反措施
?、?重設(shè)計(jì)數(shù)器,用于限制攻擊者試探的次數(shù)。連續(xù)三次PIN校驗(yàn)失敗后自鎖是防范差分能量分析的有效方法。
?、?限制加密算法中輸入輸出的控制和可見(jiàn)度。如果只能選擇部分輸入,或只有部分算法的結(jié)果返回,攻擊者就無(wú)法完成差分能量分析。
以上是防范DPA攻擊的基本方法,其缺點(diǎn)是對(duì)可靠性的負(fù)面影響以及需要改變已有的協(xié)議。
4 能量短脈沖干擾
4.1 能量短脈沖干擾攻擊的分析
微處理器要求在穩(wěn)定的電壓下工作,能量供應(yīng)的中斷就好像突然沖擊程序運(yùn)行或復(fù)位電路。然而,一個(gè)短而巧妙的脈沖可以引起單步的程序錯(cuò)誤而微處理器仍能繼續(xù)執(zhí)行程序。例如, CPU讀取存儲(chǔ)單元的內(nèi)容,晶體管用一個(gè)閾值來(lái)檢測(cè)存儲(chǔ)單元的值,以確定所讀的是邏輯“0”或“1”。突然出現(xiàn)的能量短脈沖對(duì)存儲(chǔ)值和邏輯值都會(huì)產(chǎn)生影響。不同的內(nèi)部容量會(huì)使存儲(chǔ)值受到不同的影響,有可能會(huì)使真實(shí)的值被歪曲。如圖3所示,與邏輯“0”對(duì)應(yīng)的低電平在正常的操作狀態(tài)下可能低于閾值電平,然而由于短脈沖的能量下壓可能導(dǎo)致其高于閾值電平。
許多加密算法都易受這一類(lèi)故障注入的影響。采用差分故障分析DFA(Differential Fault Analysis )技術(shù)將正確的與錯(cuò)誤的密碼編碼相比較,從而析出秘藏的密鑰。有些算法僅當(dāng)一個(gè)精確的中間值被襲擊時(shí)才能被攻擊,而其他算法要求不那么苛刻,可以在處理過(guò)程的任何位置被攻擊。通常DFA要求有可能對(duì)同一個(gè)明文加密2次,產(chǎn)生一個(gè)正確的和一個(gè)錯(cuò)誤的密文。
故障注入的第二種應(yīng)用發(fā)生于安全處理過(guò)程關(guān)鍵的決定時(shí)刻。若某一應(yīng)用執(zhí)行一個(gè)諸如PIN校驗(yàn)的安全檢查,那么在器件決定是繼續(xù)還是中斷處理的那一刻進(jìn)行攻擊最為有效。攻擊者有可能將 PIN校驗(yàn)失敗轉(zhuǎn)為成功以欺騙處理器。更為嚴(yán)格的一種方式是,在處理器正要將校驗(yàn)失敗寫(xiě)入存儲(chǔ)器時(shí)完全關(guān)閉電源,從而避免PIN校驗(yàn)失敗計(jì)數(shù)器溢出。
短脈沖干擾的第三種應(yīng)用以操縱通信活動(dòng)為目標(biāo)。通信協(xié)議的設(shè)計(jì)是為了從智能卡存儲(chǔ)器中讀取幾個(gè)字節(jié)并傳送到終端。如果故障注入成功地攻擊了發(fā)送限制計(jì)數(shù)器,就可能導(dǎo)致整個(gè)存儲(chǔ)器內(nèi)容輸出到串行接口。
4.2 能量短脈沖干擾的安全策略
能量短脈沖干擾以及其他側(cè)路操縱技術(shù)都企圖改變智能卡的環(huán)境。通常防范這類(lèi)攻擊的策略是嚴(yán)格的電壓、頻率和溫度檢測(cè)。然而使用精確的傳感器也會(huì)影響可靠性,并在某些終端中導(dǎo)致潛在的故障。不僅如此,傳感器也不可能檢測(cè)到所有的誘導(dǎo)信號(hào)。電路對(duì)于通過(guò)感應(yīng)方式注入的信號(hào)或精心調(diào)整的能量短脈沖不可能完全免疫。重要的是,要運(yùn)用軟件或應(yīng)用的防范措施來(lái)偵查和恢復(fù)故障注入。
就軟件防范措施而言,可以通過(guò)檢查關(guān)鍵的程序流向以及加密運(yùn)算結(jié)果來(lái)實(shí)現(xiàn)故障監(jiān)測(cè)。求兩次運(yùn)算結(jié)果并加以比較是檢測(cè)結(jié)果有效性的方法之一,但若兩次都注入同樣錯(cuò)誤的則無(wú)法檢測(cè)出來(lái);因此最佳的方法是由結(jié)果反向運(yùn)算求出其輸入,并與原來(lái)的輸入進(jìn)行比較。反向運(yùn)算通常是不同的,并且反向操縱會(huì)更為困難。
5 結(jié)語(yǔ)
智能卡應(yīng)用系統(tǒng)是一個(gè)安全環(huán)境很復(fù)雜的系統(tǒng)。本文為分析這個(gè)系統(tǒng)面臨的安全攻擊提供了一個(gè)思路,為系統(tǒng)的安全設(shè)計(jì)提供了依據(jù)。下一步工作是量化各安全設(shè)計(jì)策略,在降低安全威脅與增加安全成本之間尋找最佳平衡點(diǎn)的方法。
評(píng)論
查看更多