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