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