智能卡的攻擊技術(shù)分析及安全設(shè)計(jì)策略
文章出處:http://m.botanicstilllife.com 作者:中國一卡通網(wǎng) 收編 人氣: 發(fā)表時(shí)間:2011年09月28日
0 引言
在智能卡應(yīng)用日益廣泛的今天,智能卡應(yīng)用系統(tǒng)的安全問題非常重要。通常認(rèn)為智能卡本身具有較高的安全性 ,但隨著一些專用攻擊技術(shù)的出現(xiàn)和發(fā)展,智能卡也呈現(xiàn)出其安全漏洞,從而導(dǎo)致整個(gè)應(yīng)用系統(tǒng)安全性降低。分析智能卡面臨的安全攻擊,研究相應(yīng)的防御措施,對(duì)于保證整個(gè)智能卡應(yīng)用系統(tǒng)的安全性有重大的意義。本文首先分析了目前主要的智能卡攻擊技術(shù),并有針對(duì)性地提出相應(yīng)的安全設(shè)計(jì)策略。
1 智能卡設(shè)計(jì)簡述
智能卡是將具有存儲(chǔ)、加密及數(shù)據(jù)處理能力的集成電路芯片鑲嵌于塑料基片上制成的卡片,智能卡的硬件主要包括微處理器和存儲(chǔ)器兩部分,邏輯結(jié)構(gòu)如圖1 所示。
智能卡內(nèi)部的微處理器一般采用8 位字長的中央處理器,當(dāng)然更高位的微處理器也正在開始應(yīng)用。微處理器的主要功能是接受外部設(shè)備發(fā)送的命令,對(duì)其進(jìn)行分析后,根據(jù)需要控制對(duì)存儲(chǔ)器的訪問。訪問時(shí),微處理器向存儲(chǔ)器提供要訪問的數(shù)據(jù)單元地址和必要的參數(shù),存儲(chǔ)器則根據(jù)地址將對(duì)應(yīng)的數(shù)據(jù)傳輸給微處理器,最后由微處理器對(duì)這些數(shù)據(jù)進(jìn)行處理操作。此外,智能卡進(jìn)行的各種運(yùn)算(如加密運(yùn)算) 也是由微處理器完成的。而控制和實(shí)現(xiàn)上述過程的是智能卡的操作系統(tǒng)COS??▋?nèi)的存儲(chǔ)器容量一般都不是很大,存儲(chǔ)器通常是由只讀存儲(chǔ)器ROM、隨機(jī)存儲(chǔ)器RAM 和電擦除可編程存儲(chǔ)器EEPROM組成。其中,ROM 中固化的是操作系統(tǒng)代碼,其容量取決于所采用的微處理器;RAM 用于存放操作數(shù)據(jù),容量通常不超過1KB; EEPROM中則存儲(chǔ)了智能卡的各種信息,如加密數(shù)據(jù)和應(yīng)用文件等,容量通常介于2KB 到32KB 之間,這部分存儲(chǔ)資源可供用戶開發(fā)利用。
圖1 智能卡的硬件結(jié)構(gòu)
2 智能卡攻擊技術(shù)分析
在智能卡的設(shè)計(jì)階段、生產(chǎn)環(huán)境、生產(chǎn)流程及使用過程中會(huì)遇到各種潛在的威脅。攻擊者可能采取各種探測方法以獲取硬件安全機(jī)制、訪問控制機(jī)制、鑒別機(jī)制、數(shù)據(jù)保護(hù)系統(tǒng)、存儲(chǔ)體分區(qū)、密碼模塊程序的設(shè)計(jì)細(xì)節(jié)以及初始化數(shù)據(jù)、私有數(shù)據(jù)、口令或密碼密鑰等敏感數(shù)據(jù),并可能通過修改智能卡上重要安全數(shù)據(jù)的方法,非法獲得對(duì)智能卡的使用權(quán)。這些攻擊對(duì)智能卡的安全構(gòu)成很大威脅。
對(duì)智能卡的攻擊可分為三種基本類型:
(1) 邏輯攻擊:在軟件的執(zhí)行過程中插入竊聽程序bugs
(2) 物理攻擊:分析或更改智能卡硬件
(3) 邊頻攻擊:利用physical phenomena 來分析和更改智能卡的行為
2.1 邏輯攻擊技術(shù)分析
許多方面存在潛在的邏輯缺陷:
(1) 潛藏的命令:
(2) 不良參數(shù)與緩沖器溢出
(3) 文件存取
(4) 惡意進(jìn)程applet?
(5) 通信協(xié)議
(6) 加密協(xié)議,設(shè)計(jì)與執(zhí)行過程
2.2 物理攻擊
多種方法和工具可用于實(shí)現(xiàn)物理攻擊
(1) 化學(xué)溶劑、蝕刻和著色材料
(2) 顯微鏡
(3) 探針臺(tái)
(4) FIB聚離子束?
物理攻擊的安全對(duì)策在以下方面加以改進(jìn):
(1) 形體尺寸
(2) 多層化
(3) 保護(hù)層
(4) 傳感器
(5) 不規(guī)則總線?
(6) 封膠?邏輯
2.3 邊頻攻擊
1)差分能量分析(DPA)
差分能量分析(DPA)攻擊是通過用示波鏡檢測電子器件的能量消耗來獲知其行為。攻擊者只需知道算法的明文(輸入)或密文(輸出),通過分析和比較一系列的能量軌跡就可重現(xiàn)加密密鑰。
DPA攻擊的基礎(chǔ)是假設(shè)被處理的數(shù)據(jù)與能量消耗之間存在某種聯(lián)系,換句話說,假設(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í)間,從而獲取加密密鑰。
2)能量短脈沖干擾
微處理器要求在穩(wěn)定的電壓下工作,能量供應(yīng)的中斷就好象突然沖擊程序運(yùn)行或復(fù)位電路。然而,一個(gè)短而巧妙的脈沖可以引起單步的程序錯(cuò)誤而微處理器仍能繼續(xù)執(zhí)行程序。例如, CPU讀取存儲(chǔ)單元的內(nèi)容,三極管用一個(gè)閾值來檢測存儲(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)致其高于閾值電平。許多加密算法都易受這一類故障注入的影響。采用差分故障分析(DFA, Differential Fault Analysis )技術(shù)將正確的與錯(cuò)誤的密碼編碼相比較從而析出秘藏的密鑰。
圖3 讀存儲(chǔ)器時(shí)能量短脈沖干擾
短脈沖干擾的第二種攻擊方式是將PIN校驗(yàn)失敗轉(zhuǎn)為成功以欺騙處理器。更為嚴(yán)格的一種方式是在處理器正要將校驗(yàn)失敗寫入存儲(chǔ)器時(shí)完全關(guān)閉電源,從而避免PIN校驗(yàn)失敗計(jì)數(shù)器溢出。
短脈沖干擾的第三種應(yīng)用是攻擊發(fā)送限制計(jì)數(shù)器,從而導(dǎo)致整個(gè)存儲(chǔ)器內(nèi)容輸出到串行接口。
3 智能卡的安全設(shè)計(jì)策略
安全應(yīng)用的設(shè)計(jì)者使用智能卡而無視其許多的弱點(diǎn)(攻擊點(diǎn)?),可供選擇的解決方案有著其自己的安全漏洞,甚至于更不安全。本節(jié)為設(shè)計(jì)者提供一些應(yīng)用技巧,以達(dá)到適當(dāng)水平的安全。
3.1 攻擊者的商業(yè)狀況
大多數(shù)嚴(yán)重的威脅來自于尋求經(jīng)濟(jì)利益的攻擊者。這一類攻擊者會(huì)慎重考慮成本與收入之間的平衡。防范措施的技巧多在于增加攻擊成功的難度和成本。
3.2 設(shè)計(jì)步驟
智能卡應(yīng)用系統(tǒng)的設(shè)計(jì)者使用現(xiàn)成?的智能卡產(chǎn)品來設(shè)計(jì)系統(tǒng)、軟件和協(xié)議,實(shí)現(xiàn)系統(tǒng)應(yīng)用。盡管面臨重重威脅,他仍然需要交付一個(gè)足夠安全的系統(tǒng)。
以下是達(dá)成這一目標(biāo)所需要采取的步驟:
(1)確定應(yīng)用系統(tǒng)所需的安全程度及特殊的安全要求。同時(shí)還需要將技術(shù)上、商業(yè)上、公共關(guān)系上(品牌價(jià)值)潛在的安全成本考慮在內(nèi)。
(2)進(jìn)行風(fēng)險(xiǎn)分析并評(píng)估安全威脅。
(3)分析攻擊者的商業(yè)狀況,考慮從善意的黑客到犯罪組織等各種類型的攻擊者。
(4)選擇能達(dá)到所要求的安全級(jí)別的智能卡解決方案。
3.1 邏輯攻擊的安全策略
邏輯攻擊的安全對(duì)策
(1) 結(jié)構(gòu)化設(shè)計(jì)
(2) 正規(guī)的校驗(yàn)
(3) 測試
(4) 接口與應(yīng)用的標(biāo)準(zhǔn)化
(5) 集中?應(yīng)用JAVA卡操作系統(tǒng)
(6) 普及評(píng)估實(shí)驗(yàn)室
3.2 物理攻擊的安全策略
物理攻擊的安全對(duì)策在以下方面加以改進(jìn):
(7) 形體尺寸
(8) 多層化
(9) 保護(hù)層
(10) 傳感器
(11) 不規(guī)則總線?
(12) 封膠?邏輯
3.3 安全設(shè)計(jì)策略
面對(duì)上述種種攻擊手段,智能卡在設(shè)計(jì)時(shí)應(yīng)根據(jù)所要求的安全級(jí)別采用響應(yīng)安全設(shè)計(jì)策略,其基本思想是:增加芯片上集成電路的復(fù)雜性;提高電路的抗干擾能力;增加噪聲來掩蓋真正的電源功率的消耗;提高對(duì)異常信號(hào)的控制功能等等。具體預(yù)防措施如下:
(1)限制程序計(jì)數(shù)器技術(shù)
在上面所述的短脈沖攻擊中,由于攻擊者可以利用程序計(jì)數(shù)器來增加對(duì)內(nèi)存數(shù)據(jù)的訪問, 因此在智能卡程序設(shè)計(jì)時(shí)一定要限制程序計(jì)數(shù)器的使用, 以免被攻擊者所利用。
(2)隨機(jī)的時(shí)鐘信號(hào)
許多邏輯和邊頻攻擊技術(shù)是要攻擊者預(yù)見某條指令執(zhí)行的準(zhǔn)確時(shí)間。如果處理器在每一次復(fù)位后執(zhí)行一個(gè)相同的指令,很容易被攻擊者發(fā)現(xiàn)。推測處理器的行為也能簡化對(duì)協(xié)議的分析。因此預(yù)防措施是在可觀察和關(guān)鍵的操作之間插入隨機(jī)的時(shí)鐘,這樣可以有效地防止這種攻擊。
(3)低頻傳感器
當(dāng)智能卡芯片用低頻的時(shí)鐘電路驅(qū)動(dòng)時(shí),用電子流測試來觀察總線的技術(shù)日益簡單。因此芯片的設(shè)計(jì)者要對(duì)低于某一時(shí)鐘頻率的行為報(bào)警,以防止這種行為的發(fā)生。應(yīng)設(shè)計(jì)這樣一種電路:外部的復(fù)位信號(hào)不能直接作用到內(nèi)部復(fù)位線上, 只能引起一個(gè)外部分頻器來降低時(shí)鐘信號(hào)頻率,以激發(fā)低頻探測器,而它又可激發(fā)內(nèi)部復(fù)位線,最終停止分頻器,而處理器通過傳感器測試并開始正常的操作。這種設(shè)計(jì)的處理器在上電后沒有正常的內(nèi)部復(fù)位就不會(huì)運(yùn)行。其它防御非入侵式攻擊的傳感器也要嵌入到處理器的正常操作中去,否則可以通過破壞電路的方式繞過它們。
為了增加攻擊者的難度, 可以將電路設(shè)計(jì)為多個(gè)電路層。使微探針技術(shù)的使用受到一定限制,從而保證了一定的安全性。但同時(shí)也增加了電路設(shè)計(jì)的復(fù)雜性和提高了制造成本。
(5)頂層的傳感器網(wǎng)
在芯片的表面加上一層格狀的網(wǎng)絡(luò)能夠有效地防止激光切割及探針類的探測技術(shù)。這種技術(shù)也能有效地防止對(duì)低層電路的進(jìn)一步探測。這種傳感器網(wǎng)與一個(gè)寄存器的標(biāo)志位相關(guān)聯(lián),當(dāng)入侵行為發(fā)生的時(shí)候,寄存器的標(biāo)志位發(fā)生改變,使內(nèi)存的內(nèi)容清零。
(6)自毀技術(shù)
在芯片的最外層沉積一層薄薄的金屬膜, 并在其上可加UZ 的電壓,然后在最外面用塑料封裝起來。這樣,芯片就好像穿了一層導(dǎo)電的衣服。如攻擊者用精密機(jī)械探針插入芯片內(nèi)企圖探測里面的密碼時(shí), 會(huì)引起短路而燒毀芯片。
(7)抗電磁探測密碼技術(shù)
采用平衡電路降低信號(hào)能量以及設(shè)置金屬防護(hù)以抑制電磁發(fā)射。導(dǎo)電衣服對(duì)芯片內(nèi)發(fā)出的電磁輻射有一定的屏蔽或衰減作用,使其輻射出來的電磁波減弱。因此可以在芯片里面加上1個(gè)隨機(jī)數(shù)發(fā)生器, 其結(jié)果是使輻射出的電磁波更加混亂, 即便是靈敏的電磁探頭測到它的電磁輻射也無法分析到里面的真實(shí)密鑰。
(8)鎖存電路
在智能卡的處理器中設(shè)置鎖存位。當(dāng)出現(xiàn)異常情況,如溫度、壓力、電壓、電流等出現(xiàn)不安全的情況并對(duì)芯片內(nèi)的敏感數(shù)據(jù)產(chǎn)生威脅時(shí),它會(huì)發(fā)出解鎖電平,同時(shí)立即清除芯片中的敏感數(shù)據(jù)&注意此項(xiàng)功能的設(shè)置與用戶所采用的安全策略有關(guān),否則容易引起用戶不滿。
(9)隨機(jī)多線程
設(shè)計(jì)多線程處理器結(jié)構(gòu),由硬件控制處理器,在每一個(gè)指令組隨機(jī)有N 個(gè)或多個(gè)線程在執(zhí)行。這樣的處理器由多組寄存器、程序計(jì)數(shù)器、指令寄存器等組成,組合邏輯采取隨機(jī)改變的方式。
(10)破壞測試電路:在智能卡卡生產(chǎn)時(shí)一般會(huì)保留測試電路用以測試智能卡卡是否合格,而有些智能卡卡在發(fā)行時(shí)仍然保留了這些測試電路,從而為攻擊者提供了巨大的便利,因此,在智能卡檢測合格后,應(yīng)該破壞掉這些電路。
4 結(jié)論
智能卡應(yīng)用系統(tǒng)是一個(gè)安全環(huán)境很復(fù)雜的系統(tǒng),本文為分析這個(gè)系統(tǒng)面臨的安全攻擊提供了一個(gè)思路,為系統(tǒng)的安全設(shè)計(jì)提供了依據(jù)。下一步工作是量化各安全設(shè)計(jì)策略,探索在降低安全威脅與增加安全成本之間尋找最佳平衡點(diǎn)的方法。