資料介紹
文章來源:
這篇文章是俄國人Sergei P.Skorobogatov就讀英吉利劍橋大學之博士論文,講解了各種MCU的攻防技術,堪稱一部小百科全書。對于志在研究MCU防護的筒子,能給你很多參考思路:但對于想當黑客的人,我們對后果概不負責!
C非侵入式攻擊不需要對元器件進行初始化。攻擊時可以把元器件放在測試電路中分析,也可單獨連接元器件。一旦成功,這種攻擊很容易普及,并且重新進行攻擊不 需要很大的開銷。另外,使用這種攻擊不會留下痕跡。因此,這被認為是對任意元器件的硬件安全最大的威脅。同時,通常需要很多時間和精力來尋找對特定元器件 的非侵入式攻擊方法。這通常對元器件進行反向工程,包括反匯編軟件和理解硬件版圖。
非侵入式攻擊可以是被動的或主動的。被動攻擊,也叫側面攻擊,不會對被攻擊元器件發生作用,但通常是觀察它的信號和電磁輻射。如功耗分析和時鐘攻擊。主動攻擊,如窮舉攻擊和噪聲攻擊,特點是將信號加到元器件上,包括電源線。
一個簡單的非侵入式攻擊可以是復制一個上電配置的基于SRAM的FPGA。接上配置芯片用的JATG接口,用示波器或邏輯分析儀,捕捉所有信號。然后可以通過分析波形并回復獨有的命令。
只使用到一半的FPGA資源時,可以輕微改變數據流來偽裝盜版的事實。配置時留下一點空間而不影響元器件的運行。JTAG接口在發送信號時序時也有一些自由,故盜版的波形可以設置成看上去與原始信號不一樣的。另外,破解者可以在上傳時交換行地址,給人的印象是完全不同的設計。
含糊與安全
半導體制造商給大客戶提供了增強產品防破解能力的措施:包裝上的客戶印字代替了標準的芯片型號。這給人的印象是產品是由定制的集成電路設計的。眾所周知,ASIC提供了很好地保護措施來防止多種攻擊,只有極少數經驗豐富且裝備精良的破解者才有可能成功破解。這會使很多潛在的破解者望而卻步。但一個信心堅定的破解者會嘗試用簡單的方法確定芯片是不是真的ASIC。最簡單的方法是觀察連接到電源,地,時鐘,復位,串口或別的接口的引腳。與數據庫中被懷疑的微控制器相比較,這種結果非常可靠,每種微控制器都有自己的引腳特點。一旦發現相似的,就把它放在通用燒寫器上嘗試讀出結果。
另一個簡單的方法是限制訪問程序存儲器。通常用在智能卡中,但一些微控制器中也用到。這不是很可靠且實用的方法。當然在智能卡中用得很好,所有的客戶被與芯片制造商迫簽署不擴散協議。但微控制器極少這樣,能被通用燒寫器燒寫的微控制器世界上很多公司都能提供。即使文件中沒有燒寫的規格,用低成本的示波器幾個小時就可以套出需要的波形。如果微控制器不被特殊通用燒寫器所支持,仍然可以通過從制造商購買開發板來獲得直接完整的協議。
時序攻擊(Timing attacks)
一些安全相關的操作使用輸入的值和密鑰,由半導體芯片執行不同的時間來比較。小心的時序測量和分析就能恢復出密鑰。這個方法最早在1996年的文獻上提到。稍后這種攻擊成功破解了實際的RSA簽名的智能卡。
為了攻擊成功,需要收集裝置的信息,與處理時間整合比較,如問答延遲(question-answer delay)。很多密碼算法容易受到時序攻擊,主要原因是軟件來執行算法。那包括執行適時跳過需要的分支和操作條件;使用緩存;不固定時間處理指令如倍頻和分頻;還有大量的其他原因。結果就是執行能力典型地取決于密鑰和輸入的數據。
為防止此類攻擊可以使用盲簽名(Blinding signatures)技術。這個方法是利用選定的隨機數與輸入數據混合來防止破解者知道輸入數據的數學運算法則。
時序攻擊可用在安全保護是基于密碼的微控制器,或使用確定數字的卡或密碼來進行訪問控制的系統,如達拉斯的iButton產品。這些系統中共有的風險是輸入的連續數字在數據庫進行再次校驗。系統需經常檢查輸入到數據庫的密鑰的每個字節,一旦發現不正確的字節就會立即停止,然后切換到下一個直到最后一個。所以破解者很容易測量出輸入最后一個密鑰倒請求另一個的時間,并得出發現的密鑰相似度。嘗試相對小的數字,有可能找到匹配的密鑰。
為防止這些攻擊,設計者需要小心計算處理器的周期。當密碼進行比較時確保正確和錯誤的時間是一樣的,例如有的微控制器的內部存儲器載入模塊在輸入正確的八字節密碼后可以訪問內部閃存。為達到正確和錯誤的密碼都處理相同的時間,程序中增加了額外的空操作指令。這對時序攻擊提供了很好的保護。一些微控制器有內部阻容振蕩器,那樣處理器的工作頻率與電壓和芯片的溫度相關。這使得時序分析很困難,攻擊時需要穩定元器件的溫度并減少電源線上的噪聲和電壓波動。一些智能卡有內部隨機時鐘信號使得攻擊時測量時間延遲無效。
窮舉攻擊(也稱暴力攻擊Brute force attacks)
暴力對于半導體硬件和密碼來說是另一種意思。對于密碼,暴力攻擊是對系統嘗試數量眾多的密鑰。通常是使用高速計算機來尋找匹配的密鑰。
一個例子是微控制器中的密碼保護設置。比如,微控制器密碼本身長度為32字節(256位),抵擋暴力攻擊已經足夠了。但密碼分配在與處理器中斷矢量相同的存儲器地址。那么,首先減少存儲器內矢量一直指向的區域。然后當軟件被更新時,只有小部分的密碼被修改,因為大部分中斷子程序指向的矢量是相同的地址。結果是,如果破解者知道早前密碼中的一個,就很容易做系統的搜索,在合理的時間內找到正確的密碼。
暴力攻擊也可用在ASIC或CPLD的硬件設計來實現。這種情況下,破解者使用所有可能的邏輯組合到元器件可能的輸入端并觀察所有輸出。這種方法也稱為黑箱分析(Black-box analysis),因為破解者不知道被測試元器件的情況。通過所有可能的信號組合,嘗試獲得元器件的功能。這種方法對相對小的邏輯器件很有效。另一個問題是破解者使用的ASIC或CPLD有觸發器,故輸出將可能是當前狀態或輸入的狀態。但如果預先檢查并分析信號,搜索的范圍可以顯著減少。例如,時鐘輸入,數據總線和一些控制信號是很容易認出的。
另一種可能的暴力攻擊,對很多半導體芯片有效,是將外部高壓信號(通常是兩倍于電源電壓)加到芯片引腳上,來試圖進入工廠測試或編程模式。事實上,這些引腳用數字萬用表很容易發現,因為它們沒有保護二極管到電源腳。一旦發現對高壓敏感的引腳,破解者就可以嘗試可能的邏輯信號組合來加到別的引腳上,找出用于進入工廠測試或編程模式的部分。
破解者也可用元器件的通信協議來找出設計者嵌入在軟件中的測試和更新用得隱藏功能。
芯片制造商經常提供給后期測試用得嵌入硬件測試接口。如果這些接口的安全保護沒有適當設計,破解者很容易利用它來讀寫片上存儲器。在智能卡中,這些測試接口通常位于芯片電路之外,并在測試后從物理上除去。
任何安全系統,不管軟件和硬件,在設計上都可能有缺陷,對于破解者來說都是機會,暴力攻擊有可能找到它。小心設計安全保護系統,進行適當的評估,可以避免很多問題,并使得這些攻擊事實上不可行。
功耗分析(Power analysis)
一個運算設備的功耗取決于它當前的狀態。依照CMOS晶體管的原理,各部分動態時的功耗比靜態的要大。當輸入電壓加到反向器上,會引起一個晶體管短路,這個晶體管電流的增加比靜態消耗的寄生漏電要大得多。在電源線上加個10-20歐的電阻,就可以測量電流的波動。為達到更好的效果,需要使用至少12位精度和50MHz采樣速度的模數轉換器。這些獲得的參數可以用來區別處理器的不同指令并估計總線上同時翻轉的位數。
通過平均多次重復同樣操作的電流,即使是沒有通過總線的很小信號也能區別開。有些信號如移位狀態特別有用,因為很多密碼的密鑰產生算法使用移位操作來逐一移出單個密鑰倒進位標志。即使狀態位的變化不能直接測量,它們通常會改變指令次序或微碼的執行,這會導致功耗的明顯變化。
不同指令導致不同級別的指令解碼和運算單元的活動,可被清晰地區別開,故運算部分能被推測出。處理器的不同單元在時鐘沿相關的不同時間里有獨有的開關狀態,能被高頻儀器分離出來。
有多種不同的功耗分析技術用在破解密碼算法上。整個分析過程是相對簡單的,只需要標準的現有的廉價儀器設備。
功耗分析技術主要有兩種:簡單功耗分析(SPA:Simple Power Analysis)和差分功耗分析(DPA:Difference Power Analysis)。SPA是在密碼或別的安全相關操作時直接觀察功耗,可以得知設備運行時的信息如密鑰資料。如果破解者知道密碼算法,很容易通過觀察處理器指令次序,特別是移位條件轉移,找到一些位的信息。如果算法或邏輯運算的結果很容易被看出,如進位狀態,零或負標志,就可以獲得更多的信息。DPA是種更有效的技術,因為破解者不需要知道密碼算法是如何執行的。它使用靜態分析和已知密碼運算的大量功耗跡線來獲取隱藏信息。用統計方法鑒別功耗的微小區別,可用來恢復密鑰中的單個的位信息。
功耗特性當然包括噪聲部分。額外的噪聲可以通過減少獲取信號的探針長度并小心使用測量儀器來降低它。測量接在地線上的電阻的功耗有一些優勢。首先,減少了噪聲電平。其次,可以用示波器的探頭直接測量信號,因為大部分探針站有公共的地線與外部電源地相連。為了增加信噪比,可以通過提高平均采樣數來獲得。
有源探頭能降低輸入電容,增加對輸入信號的帶寬。一種方法是用高速低噪聲的運放來構建相對簡單的探頭,另一種是用很短的同軸電纜直連到示波器的輸入端。在這些情況下,探頭的輸入電容顯著減少。
圖 左側是普通的無源探頭,右側是自制的有源探頭。
我們對現有的功耗分析步驟進行了改進。這是一種新的方法,尚未有類似的。我們用鐵芯變壓器來取代連到電源或地的電阻,那樣波形就有點不一樣,因為信號的直流成分丟失了,同時又有些有利條件。常用的方法對直流電流幾乎沒有什么限制。但對于10歐電阻來講100mA的電流意味著有1V的電壓降,那可能中斷微控制器的正常操作。減少這個電阻可以解決這個問題,但會使得難以識別功耗的微小變動。使用變壓器后,不需要使用昂貴的有源探頭,標準的無源探頭就可以給出幾乎相同的結果。如果信號太小,調節二次側的線圈就可以增加振幅。變壓器也擔當無源濾波器的角色,如波形,同樣的處理器指令對電阻和變壓器所測量到的波形有不同的影響。那可以通過對獲得的信號進行處理。為了攻擊獲得成功,需要采集數千的樣本,然后快速分析處理所展現的秘密。
最近,芯片設計上已考慮這種攻擊,并將使得這種攻擊方法更難獲得成功。
噪聲攻擊(Glitch attacks)
噪聲攻擊是快速改變輸入到微控制器的信號,以影響它的正常運行。通常噪聲是疊加在電源上或時鐘信號上,但噪聲也可以是外加的短暫電場或電磁脈沖。在離芯片表面數百微米處放置兩根金屬針,然后加上少于1微秒的數百伏電壓的窄脈沖,晶圓襯底會感應出一個電場,使得鄰近晶體管的閾值電壓發生變化。最近出現一種改進的方法:使用幾百圈金屬線繞在微探針的針尖構成一個小型電感。當電流進入線圈會產生磁場,針尖將集中磁力線。
每個晶體管和與它相連的線路構成有時延特性的RC電路。處理器的最大可用時鐘頻率取決于該電路的最大延遲。同樣的,每個觸發器在接收輸入電壓和由此引致的輸出電壓之間有個特征時間窗口。這個窗口由給定的電壓和溫度來確定。如果用時鐘噪聲(比正常的時鐘脈沖要短得多)或電源噪聲(電源電壓的快速波動)將會影響芯片里的某些晶體管,導致一個或多個觸發器進入錯誤狀態。通過改變參數,處理器會被導致執行許多完全不同的錯誤指令,有時甚至是不被微碼支持的。經管我們不會預先知道何種噪聲會導致何種芯片的何種錯誤,但它能相當簡單地進行系統的搜索。
時鐘噪聲攻擊(Clock glitches)
時鐘信號的噪聲攻擊在目前是最簡單的,且相當實用。實際應用中的噪聲通常用來取代跳轉條件并試驗先前的測試指令。可以在安全密碼問詢處理時創建一個攻擊窗口,簡單預防執行這些指令。指令噪聲也能用來擴大循環的時間。如,串口子程序在輸出緩沖后再讀更多的內容;或在密鑰操作時減少循環次數來傳一個弱的密碼。
為獲得噪聲,時鐘需要臨時增加一個或大于半個周期,有些觸發器在到達新狀態之前就獲得輸入。時鐘噪聲通常針對處理器的指令流。對硬件執行安全保護的微控制器沒有什么效果。實際中,僅使用時鐘噪聲來攻擊微控制器或智能卡的軟件程序接口。
這類保護的破解是相對容易的。如處理器在循環里只執行一個指令,攻擊時可用不同的時鐘噪聲導致處理器誤操作。不需要小心地與時鐘信號同步,只需要隨機制造噪聲就可在數次攻擊內成功。插入噪聲是相對容易的,無需使用外部發生器,瞬間短路晶振即可。當諧振器在不同的泛音上產生震蕩會發出很多噪聲。大部分情況下需要在確定的時鐘周期內獲得所需結果,在這種情況下用信號發生器更好。
使用時鐘噪聲來攻擊某些微控制器也許是很困難的。例如某微控制器在內部RC震蕩器工作的啟動模塊。很難與內部時鐘同步,攻擊時很難估計精確的時間。一些智能卡在處理器指令流里會隨機插入延遲,使得攻擊更為困難。使用功耗分析會有幫助,但要求非常昂貴的設備來實時獲得參考信號。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 醫療新革命,磁傳感技術應用細分揭秘!
- 時間服務器技術資料下載 9次下載
- EMI技術資料 76次下載
- iCoupler技術揭秘——隔離式RS-485資料下載
- 用于電池供電世界中的USB技術資料下載
- 藍牙低功耗技術資料下載
- AMOLED的幾種常規技術資料下載
- 物聯網的關鍵技術資料下載
- 可穿戴設備中的電源管理技術資料下載
- LPWA概述,以及物聯網的其他幾種常用技術資料下載
- 機械制造工藝--增材制造技術資料下載
- 藍牙文件推送技術資料下載
- 基于4G LTE的兩大物聯網技術資料下載
- 物聯網防火墻與機器學習技術資料下載
- 一文簡單分析MCU技術資料下載
- 【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明 (2)SWD/JTAG在線下載 231次閱讀
- 紅隊攻防之JS攻防 130次閱讀
- 關于ECU 和 MCU ,你了解多少? 2301次閱讀
- 單片機:微小卻強大的電子奇跡,揭秘其無限可能! 348次閱讀
- MCU芯片的分類及特點 958次閱讀
- 在MCU開發中如何充分利用各種類型的斷點? 525次閱讀
- 系統工程的起源與發展趨勢 1528次閱讀
- 什么是MCU?MCU基礎知識講解 10.5w次閱讀
- 什么是MCU?MCU市場現狀分析 9967次閱讀
- 對MCU破解技術做個簡單分析 6193次閱讀
- IOT時代談驅動/MCU軟件技術 2266次閱讀
- MCU數位控制技術助力變頻馬達性能大躍進 4294次閱讀
- 揭秘簡單PLD芯片的破解方法 6257次閱讀
- 現代無線充電技術大揭秘(圖文) 6585次閱讀
- 各種 IP Core和參考設計 5542次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多