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