智能卡攻擊技術(shù)與安全策略的研究
文章出處:http://m.dipdnbxp.cn 作者:毛豐江, 溫希東 人氣: 發(fā)表時間:2011年09月29日
0 引言
近年來智能卡市場呈現(xiàn)出以幾何級數(shù)增長的態(tài)勢,智能卡以其特有的安全可靠性,被廣泛應(yīng)用于從單個器件到大型復(fù)雜系統(tǒng)的安全解決方案。然而隨著智能卡的日益普及,針對智能卡安全漏洞的專用攻擊技術(shù)也在同步發(fā)展。分析智能卡面臨的安全攻擊,研究相應(yīng)的防御措施,對于保證整個智能卡應(yīng)用系統(tǒng)的安全性有重大的意義。本文首先分析了目前主要的智能卡攻擊技術(shù),并有針對性地提出相應(yīng)的安全設(shè)計策略。
1 智能卡的軟硬件結(jié)構(gòu)
智能卡是將具有存儲、加密及數(shù)據(jù)處理能力的集成電路芯片鑲嵌于塑料基片上制成的卡片,其硬件主要由微處理器和存儲器兩部分構(gòu)成,加上固化于卡中的智能卡操作系統(tǒng)(COS)及應(yīng)用軟件,一張智能卡即構(gòu)成了一臺便攜和抗損的微型計算機。
智能卡的硬件構(gòu)成包括:CPU、存儲器(含RAM、ROM 和EEPROM 等)、卡與讀寫終端通訊的I/O 接口以及測試與安全邏輯,如圖1 所示。作為芯片核心的微處理器多采用8 位字長的CPU(更高位的CPU 也正在開始應(yīng)用),負責(zé)完成所有運算和數(shù)據(jù)交換功能??▋?nèi)的存儲器容量一般都不是很大,其中,ROM 中固化的是操作系統(tǒng)代碼及自測程序,其容量取決于所采用的微處理器,典型值為32 KB;RAM 用于存放臨時數(shù)據(jù)或中間數(shù)據(jù),例如短期密碼、臨時變量和堆棧數(shù)據(jù)等,容量通常不超過1 KB;EEPROM 中則存儲了智能卡的各種應(yīng)用信息,如加密數(shù)據(jù)和應(yīng)用文件等,有時還包括部分COS 代碼,容量通常介于2 KB 到32 KB 之間,這部分存儲資源可供用戶開發(fā)利用。
智能卡操作系統(tǒng)COS 的主要功能是控制智能卡和外界的信息交換,管理智能卡內(nèi)的存儲器并在卡內(nèi)部完成各種命令的處理??ㄖ械臄?shù)據(jù)以樹型文件結(jié)構(gòu)的形式組織存放。卡與終端之間通過命令響應(yīng)對的形式交換信息。
CPU 與COS 的存在使智能卡能夠方便地采用PIN 校驗、加密技術(shù)及認證技術(shù)等來強化智能卡的安全性,但這并不意味著智能卡是絕對安全的。在智能卡的設(shè)計階段、生產(chǎn)環(huán)境、生產(chǎn)流程及使用過程中會遇到各種潛在的威脅。攻擊者可能采取各種探測方法以獲取硬件安全機制、訪問控制機制、鑒別機制、數(shù)據(jù)保護系統(tǒng)、存儲體分區(qū)、密碼模塊程序的設(shè)計細節(jié)
以及初始化數(shù)據(jù)、私有數(shù)據(jù)、口令或密碼密鑰等敏感數(shù)據(jù),并可能通過修改智能卡上重要安全數(shù)據(jù)的方法,非法獲得對智能卡的使用權(quán)。這些攻擊對智能卡的安全構(gòu)成很大威脅。
2 智能卡攻擊技術(shù)分析
對智能卡的攻擊可分3 種基本類型:邏輯攻擊、物理攻擊和邊頻攻擊。下面就這3 種攻擊技術(shù)的具體實施方式加以分析。
2.1 邏輯攻擊技術(shù)分析
邏輯攻擊的主要方法是對處理器的通信接口進行分析,以期發(fā)現(xiàn)智能卡協(xié)議、密碼算法及其實現(xiàn)過程中所潛藏的邏輯缺陷,包括潛藏未用的命令、不良參數(shù)與緩沖器溢出、文件存取漏洞、惡意進程、通信協(xié)議和加密協(xié)議的設(shè)計與執(zhí)行過程等。邏輯攻擊者在軟件的執(zhí)行過程中插入竊聽程序,利用這些缺陷誘騙卡泄露機密數(shù)據(jù)或允許非期望的數(shù)據(jù)修改。從所需的設(shè)備來看,邏輯攻擊的成本可以說是相當(dāng)?shù)偷?,攻擊者只需具備智能卡、讀寫器和PC 機即可。其另一優(yōu)點在于非入侵式的攻擊模式以及可輕松地復(fù)制。
2.2 物理攻擊技術(shù)分析
雖然智能卡的所有功能似乎都封閉在單個的芯片中,然而仍然有可能對其實施反向工程。用于實施物理攻擊的主要方法包括:
(1)微探針技術(shù):攻擊者通常使用發(fā)煙硝酸去除包裹裸片的環(huán)氧樹脂;用丙酮/去離子水/異丙醇完成清洗;氫氟酸超聲浴進一步去除芯片的各層金屬。在去除芯片封裝之后,通過金絲鍵合恢復(fù)芯片功能焊盤與外界的電氣連接,最后可以使用亞微米級微探針獲取感興趣的信號,從而分析出智能卡的有關(guān)設(shè)計信息和存儲結(jié)構(gòu),甚至直接讀取出存儲器的信息進行分析。
(2)版圖重構(gòu):利用高倍光學(xué)及射電顯微鏡研究電路的連接模式,跟蹤金屬連線穿越可見模塊(如ROM、RAM、EEPROM、ALU、指令譯碼器等)的邊界,可以迅速識別芯片上的一些基本結(jié)構(gòu),如數(shù)據(jù)線和地址線。
(3)聚離子束(FIB)技術(shù):采用鎵粒子束攻擊芯片表面,在不破壞芯片表面電路結(jié)構(gòu)的情況下,用含有不同氣體的粒子束,可在芯片上沉積出導(dǎo)線、絕緣體甚至半導(dǎo)體。采用這種方法可重新連接測試電路的熔斷絲,或?qū)⒍鄬有酒猩畈卦趦?nèi)部的信號連到芯片的表面,或加粗加強過于纖細脆弱無法置放探針的導(dǎo)線,從而形成一個新的“探針臺”。技術(shù)人員可利用激光干涉儀工作臺觀察芯片單個晶體的微細結(jié)構(gòu)以及其它的電路結(jié)構(gòu)。
物理攻擊是實現(xiàn)成功探測的強有力手段,但其缺點在于入侵式的攻擊模式,同時需要昂貴的高端實驗室設(shè)備和專門的探測技術(shù)。
2.3 邊頻攻擊技術(shù)分析
邊頻攻擊是通過觀察電路中的某些物理量如能量消耗、電磁輻射、時間等的變化規(guī)律來分析智能卡的加密數(shù)據(jù);或通過干擾電路中的某些物理量如電壓、電磁輻射、溫度、光和X射線、頻率等來操縱智能卡的行為。邊頻攻擊方法主要包括以下兩種方式:
(1)差分能量分析(differential power analysis,DPA)差分能量分析(DPA)攻擊是通過用示波鏡檢測電子器件的能量消耗來獲知其行為。攻擊者只需知道算法的明文(輸入)或密文(輸出),通過分析和比較一系列的能量軌跡就可重現(xiàn)加密密鑰。
DPA攻擊的基礎(chǔ)是假設(shè)被處理的數(shù)據(jù)與能量消耗之間存在某種聯(lián)系,換句話說,假設(shè)處理0 比1 所用的能量要少(反之亦然),那么對兩個不同數(shù)據(jù)執(zhí)行同一算法的兩個能量軌跡會由于輸入數(shù)據(jù)的不同而產(chǎn)生微小的差別。用計算機嚴格按時鐘計算兩條軌跡的差得到差分軌跡,差分軌跡中出現(xiàn)峰值的時刻即是輸入數(shù)據(jù)產(chǎn)生差別的時鐘周期。如此檢查加密算法的所有輸入以及每一對0 和1 產(chǎn)生的差分軌跡,就可以識別出它們出現(xiàn)在程序代碼中的確切時間,從而獲取加密密鑰。
(2)能量短脈沖干擾
微處理器要求在穩(wěn)定的電壓下工作,能量供應(yīng)的中斷就好像突然沖擊程序運行或復(fù)位電路。然而,一個短而巧妙的脈沖可以引起單步的程序錯誤而微處理器仍能繼續(xù)執(zhí)行程序。例如,CPU讀取存儲單元的內(nèi)容,三極管用一個閾值來檢測存儲單元的值以確定所讀的是邏輯0 或1。突然出現(xiàn)的能量短脈沖對存儲值和邏輯值都會產(chǎn)生影響。如圖2 所示,與邏輯0對應(yīng)的低電平在正常的操作狀態(tài)下可能低于閾值電平,然而由于短脈沖的能量下壓可能導(dǎo)致其高于閾值電平。許多加密算法都易受這一類故障注入的影響。采用差分故障分析(differentialfault analysis,DFA)技術(shù)將正確的與錯誤的密碼編碼相比較從而析出秘藏的密鑰。
短脈沖干擾的第2 種攻擊方式是將PIN 校驗失敗轉(zhuǎn)為成功以欺騙處理器。更為嚴格的一種方式是在處理器正要將校驗失敗寫入存儲器時完全關(guān)閉電源,從而避免PIN 校驗失敗計數(shù)器溢出。
短脈沖干擾的第3種應(yīng)用是攻擊發(fā)送限制計數(shù)器,從而導(dǎo)致整個存儲器內(nèi)容輸出到串行接口。
3 智能卡的安全設(shè)計策略
某些信息安全系統(tǒng)采用了智能卡來提高系統(tǒng)的安全性卻無視其弱點,導(dǎo)致系統(tǒng)安全解決方案有著其自身的安全漏洞,甚至于更不安全。針對上述智能卡攻擊技術(shù),本節(jié)為設(shè)計者提供相應(yīng)的安全設(shè)計策略。
3.1 邏輯攻擊的安全設(shè)計策略
系統(tǒng)對邏輯攻擊的敏感性很大程度上取決于軟件的復(fù)雜程度,然而竊聽程序的數(shù)目也會隨著程序代碼的增加而增長。對付竊聽程序以及軟件缺陷的安全策略包括:①結(jié)構(gòu)化設(shè)計:以小的功能模塊構(gòu)建軟件,使程序易于理解和校驗;②正規(guī)的校驗:使用數(shù)學(xué)模型來檢驗功能;③測試:對軟件的運行進行。
在智能卡領(lǐng)域,接口與應(yīng)用的標(biāo)準化、應(yīng)用Java卡操作系統(tǒng)以及評估實驗室的普及已成為幾大趨勢。即便如此,智能卡仍遠未能對邏輯攻擊免疫,軟件復(fù)雜程度的提高總是會帶來引入新漏洞的危險。
3.2 物理攻擊的安全設(shè)計策略
僅在數(shù)年前智能卡芯片是使用常規(guī)芯片制造中的“退役設(shè)備”來生產(chǎn)的,這是因為芯片的功能要求低,相應(yīng)價格也低。今天智能卡市場的巨大增長及功能復(fù)雜程度的迅速提高使得廠商能夠負擔(dān)先進的設(shè)備和精細的設(shè)計。應(yīng)對物理攻擊的關(guān)鍵在于提高芯片設(shè)計的復(fù)雜程度和芯片制造的精細程度,具體措施包括:
(1)減小形體尺寸:過去5 年來芯片上的晶體管與導(dǎo)線已由1 m 降至小于200 nm,這么小的尺寸已無法使用光學(xué)顯微鏡來分析,也使放置探針變得極為困難,但高倍顯微鏡與FIB技術(shù)仍能得手。
(2)多層電路設(shè)計:不僅是增加電路的層數(shù),而且將包含敏感數(shù)據(jù)線的層(掩埋層)隱藏在較不敏感的層之下,使微探針技術(shù)的使用受到一定限制。
(3)頂層的傳感器保護網(wǎng):在芯片的表面加上一層格狀的帶有保護信號的激活網(wǎng)絡(luò),當(dāng)入侵行為發(fā)生時,該信號中斷,使內(nèi)存的內(nèi)容清零。這種技術(shù)能夠有效地防止激光切割及探針類的探測技術(shù)。然而技術(shù)嫻熟的入侵高手仍可繞過傳感器保護網(wǎng)探測被保護層。因此增強型的傳感器保護網(wǎng)使用大量表面上無關(guān)且頻繁變化的信號,這將大大降低FIB 技術(shù)探測內(nèi)部電路層的成功率。
(4)鎖存電路:在智能卡的處理器中設(shè)置鎖存位。當(dāng)出現(xiàn)異常情況,如溫度、壓力、電壓、電流等出現(xiàn)不安全的情況并對芯片內(nèi)的敏感數(shù)據(jù)產(chǎn)生威脅時,它會發(fā)出解鎖電平,同時立即清除芯片中的敏感數(shù)據(jù)。注意此項功能的設(shè)置與用戶所采用的安全策略有關(guān),否則容易引起用戶不滿。
(5)隨機多線程:設(shè)計多線程處理器結(jié)構(gòu),由硬件控制處理器,在每一個指令組隨機有N 個或多個線程在執(zhí)行。這樣的處理器由多組寄存器、程序計數(shù)器、指令寄存器等組成,組合邏輯采取隨機改變的方式。
(6)自毀技術(shù):在芯片的最外層沉積一層薄薄的金屬膜,并在其上可加5 V 的電壓,然后在最外面用塑料封裝起來。這樣,芯片就好像穿了一層導(dǎo)電的衣服。當(dāng)攻擊者用精密機械探針插入芯片內(nèi)企圖探測里面的密碼時,將會引起短路從而燒毀芯片。
3.3 邊頻攻擊的安全設(shè)計策略
近年來,新興的邊頻攻擊技術(shù)因其非入侵式的攻擊模式及較高的收益成本比而大行其道。盡管智能卡業(yè)界對于邊頻攻擊的解決方案已有了越來越多的認識,然而許多智能卡對于這類攻擊仍毫無免疫力。應(yīng)對邊頻攻擊的安全策略基本分為3 個層面:硬件、軟件和應(yīng)用層面。
3.3.1 硬件級的反措施
(1)采用平衡電路降低信號能量以及設(shè)置金屬防護以抑制電磁發(fā)射。
(2)執(zhí)行并行隨機處理來加大幅值噪聲水平。例如,內(nèi)部編程電壓產(chǎn)生電路可用作并行噪聲發(fā)生器。
(3)隨處理中斷引入時間噪聲和不同的時鐘頻率。對差分軌跡進行計算機處理的基礎(chǔ)是軌跡可排列。在加入軌跡之前處理器的工作步驟應(yīng)是同步的。時間噪聲會防止或至少妨礙軌跡很好地排列。
(4)嚴格的電壓、頻率和溫度檢測以防止能量短脈沖干擾改變智能卡的環(huán)境。然而使用精確的傳感器也會影響可靠性,并在某些終端中導(dǎo)致潛在的故障。
3.3.2 軟件層面的反措施
(1)采用隨機處理順序來減少相關(guān)的信號。例如,算法中的平行置換(諸如DES 中的S-盒)可依隨機的順序來完成,置換的數(shù)目重新排序,則可將一次置換產(chǎn)生的信號分解。
(2)利用隨機延時和改變路徑來增加計時噪聲。計時噪聲會妨礙軌跡的排列,并降低差分軌跡的質(zhì)量。
(3)消除密鑰值及中間媒介值的時間依存性。
(4)用隨機值來隱蔽中間媒介值。能量的泄露取決于一個數(shù)據(jù)中的位數(shù)。如果在實際數(shù)據(jù)上加上隨機數(shù)據(jù),處理完之后再減去,那么傳遞的路徑將不會泄露有用的信息。不過,這種隱蔽將會導(dǎo)致傳遞函數(shù)的非線性性并產(chǎn)生錯誤的結(jié)果。因此,這些函數(shù)需要仔細地重新設(shè)計以補償由隨機數(shù)據(jù)引起的背離。
(5)通過檢查關(guān)鍵的程序流向以及加密運算結(jié)果來實現(xiàn)故障監(jiān)測。求兩次運算結(jié)果并加以比較是檢測結(jié)果有效性的方法之一,但若兩次都注入同樣的錯誤的則無法檢測出來。因此最佳的方法是由結(jié)果反向運算求出其輸入,并與原來的輸入進行比較。
3.3.3 應(yīng)用級的反措施
(1)重設(shè)計數(shù)器,用于限制攻擊者試探的次數(shù)。連續(xù)3 次PIN 校驗失敗后自鎖是防范差分能量分析的有效方法。
(2)限制加密算法中輸入輸出的控制和可見度。如果只能選擇部分輸入,或只有部分算法的結(jié)果返回,攻擊者就無法完成差分能量分析。
4 結(jié)束語
智能卡應(yīng)用系統(tǒng)是一個安全環(huán)境很復(fù)雜的系統(tǒng),智能卡攻擊方法的有效性以攻擊者所獲得的效益高于其耗費的時間、精力、經(jīng)費等作為標(biāo)準,防范措施的技巧多在于增加攻擊成功的難度和成本。然而這些防范措施將增加設(shè)計的復(fù)雜程度和成本。因此在具體應(yīng)用時必須根據(jù)系統(tǒng)所要求的安全級別,來探索在降低安全威脅與增加安全成本之間尋找最佳平衡點的安全設(shè)計策略。
(文/深圳職業(yè)技術(shù)學(xué)院電子信息工程學(xué)院,毛豐江, 溫希東)