作者:Yaseng&獨抒@伏宸安全實驗室
公眾號:伏宸安全實驗室
前言
傳統基于窮舉或純數學理論層面的分析,對于現代高強度加密算法而言,算力有限導致無法實現窮舉,算法的復雜性也無法通過數學工具直接破解,根據近代物理學發展出來的理論,電子設備依賴外部電源提供動力,設備在運行過程中會消耗能量,同時會跟外界環境存在聲、光、電、磁等物理交互現象產生,設備本身也可能存在設計薄弱點,通過這些物理泄露或人為進行物理層的修改獲取數據,然后運用各類數學工具和模型實現破解。
然而在做物理攻擊時,往往需要昂貴的設備,并要具備數學、物理學、微電子學、半導體學、密碼學、化學等等多學科的交叉理論知識,因此其技術門檻和攻擊成本都很高,目前在剛剛結束的 Blackhat 2018 上,展臺上展示了多款 ChipWhisperer 硬件工具,作為親民型的物理攻擊平臺,獲得了一致的好評。
ChipWhisperer Lite 版官方商店售價 $250 ,不管是實驗學習,還是實戰入門,都是極具性價比的,本文主要介紹主流的一些物理攻擊手段,以及對 ChipWhisperer 的初步認知,后續將會據此從理論、原理、實驗以及實戰等角度詳細介紹該平臺。
物理攻擊
真正的安全研究不能凌駕于真實的攻防場景,對于物聯網安全而言,其核心目標是真實物理世界中的各種硬件設備,真實的攻擊場景往往發生在直接針對硬件設備的攻擊,因此物聯網安全的基石在于物理層的安全,而針對物聯網物理攻擊手段,是當前物聯網面臨的最大安全風險之一。
物理攻擊就是直接攻擊設備本身和運行過程中的物理泄露,根據攻擊過程和手段可以分為非侵入攻擊、半侵入式攻擊和侵入式攻擊。ChipWhisperer 平臺主要用做非侵入式攻擊,包括側信道和故障注入攻擊等。
傳統密碼分析學認為一個密碼算法在數學上安全就絕對安全,這一思想被Kelsey等學者在1998年提出的側信道攻擊(Side-channel Attacks,SCA)理論所打破。側信道攻擊與傳統密碼分析不同,側信道攻擊利用功耗、電磁輻射等方式所泄露的能量信息與內部運算操作數之間的相關性,通過對所泄露的信息與已知輸入或輸出數據之間的關系作理論分析,選擇合適的攻擊方案,獲得與安全算法有關的關鍵信息。目前側信道理論發展越發迅速,從最初的簡單功耗分析(SPA),到多階功耗分析(CPA),碰撞攻擊、模板攻擊、電磁功耗分析以及基于人工智能和機器學習的側信道分析方式,側信道攻擊方式也推陳出新,從傳統的直接能量采集發展到非接觸式采集、遠距離采集、行為側信道等等。
故障攻擊就是在設備執行加密過程中,引入一些外部因素使得加密的一些運算操作出現錯誤,從而泄露出跟密鑰相關的信息的一種攻擊。一些基本的假設:設定的攻擊目標是中間狀態值; 故障注入引起的中間狀態值的變化;攻擊者可以使用一些特定算法(故障分析)來從錯誤/正確密文對中獲得密鑰。
使用故障的不同場景: 利用故障來繞過一些安全機制(口令檢測,文件訪問權限,安全啟動鏈);產生錯誤的密文或者簽名(故障分析);組合攻擊(故障+旁路)。

ChipWhisperer
簡介
本系列使用的版本是 CW1173 ChipWhisperer-Lite ,搭載 SAKURA-G 實驗板,配合一塊 CW303 XMEGA 作為目標測試板。

CW1173 是基于FPGA實現的硬件,軟件端基于 python,具有豐富的擴展接口和官方提供的各類 API 供開發調用,硬件通過自帶的 OpenADC 模塊可以實現波形的捕獲,不需要額外的示波器。

板上自帶有波形采集端口(MeaSure)和毛刺輸出(Glitch)端口,并自帶 MOSFET 管進行功率放大。

并提供多種接口觸發設置,基本滿足一般的攻擊需求。

能量攻擊
芯片物理結構為許多CMOS電路組合而成,CMOS 電路根據輸入的不同電信號動態改變輸出狀態,實現0或1的表示,完成相應的運算,而不同的運算指令就是通過 CMOS 組合電路完成的,但 CMOS電路根據不同的輸入和輸出,其消耗的能量是不同的,例如匯編指令 ADD 和 MOV ,消耗的能量是不同的,同樣的指令操作數不同,消耗的能量也是不同的,例如 MOV 1 和 MOV 2其能量消耗就是不同的,能量攻擊就是利用芯片在執行不同的指令時,消耗能量不同的原理,實現秘鑰破解。

常用的能量攻擊方式就是在芯片的電源輸入端(VCC)或接地端(GND)串聯一個1到50歐姆的電阻,然后用示波器不斷采集電阻兩端的電壓變化,形成波形圖,根據歐姆定律,電壓的變化等同于功耗的變化,因此在波形圖中可以觀察到芯片在執行不同加密運算時的功耗變化。

CW1173 提供能量波形采集端口,通過連接 板上的 MeaSure SMA 接口,就可以對能量波形進行采集,在利用chipwhisperer 開源軟件就可以進行分析,可以實現簡單能量分析、CPA攻擊、模板攻擊等。

毛刺攻擊
ChipWhisperer 提供對時鐘、電壓毛刺的自動化攻擊功能,類似于 web 滲透工具 Burpsuite ,可以對毛刺的寬度、偏移、位置等等參數進行 fuzz ,通過連接板上的 Glitch SMA 接口,就可以輸出毛刺,然后通過串口、web 等獲取結果,判斷毛刺是否注入成功。
時鐘毛刺攻擊是針對微控制器需要外部時鐘晶振提供時鐘信號,通過在原本的時鐘信號上造成一個干擾,通過多路時鐘信號的疊加產生時鐘毛刺,也可以通過自定義的時鐘選擇器產生,CW1173 提供高達 300MHZ 的時鐘周期控制,時鐘是芯片執行指令的動力來源,通過時鐘毛刺可以跳過某些關鍵邏輯判斷,或輸出錯誤數據。


電壓毛刺是對芯片電源進行干擾造成故障,在一個很短的時間內,使電壓迅速下降,造成芯片瞬間掉電,然后迅速恢復正常,確保芯片繼續正常工作,可以實現如對加密算法中某些輪運算過程的干擾,造成錯誤輸出,或跳過某些設備中的關鍵邏輯判斷等等 。

更多
隨著物理攻擊理論和技術的進步,針對硬件芯片的防護手段也隨之提高,芯片物理層的攻防一直在不斷角力 ,現實環境中,能量采集會受到各種噪聲因素的干擾,硬件廠商也會主動實施一些針對物理攻擊的防護,單純依靠 ChipWhisperer 平臺難以實現真實場景的攻擊,因此還需要結合電磁、聲波、紅外、光子等多重信息,以及對硬件進行修改,多重故障注入,引入智能分析模型等等組合手段,今后會進一步介紹一些基于 ChipWhisperer 的高級攻擊方式和實戰分析方法。
參考
- ChipWhisperer 官網 wiki https://wiki.newae.com/Main_Page
- 開源項目 https://github.com/newaetech/chipwhisperer
- ChipSHOUTER 電磁故障平臺 https://github.com/newaetech/ChipSHOUTER
- USB 附加模塊 https://github.com/scanlime/facewhisperer
- 深度學習側信道攻擊 https://www.riscure.com/publication/lowering-bar-deep-learning-side-channel-analysis/
- 使用毛刺攻擊提取汽車 ECU 固件 https://www.riscure.com/publication/fault-injection-automotive-diagnostic-protocols/
- 《物聯網安全百科》 https://iot-security.wiki
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.jmbmsq.com/674/