欧美日韩亚州综合,国产一区二区三区影视,欧美三级三级三级爽爽爽,久久中文字幕av一区二区不卡

你的位置:首頁 > 互連技術 > 正文

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施

發布時間:2020-05-26 來源:新唐MCU 責任編輯:lina

【導讀】微控制器產品在設計之初,就會設定相應的產品規格以規范產品的執行條件,確保產品可以完成默認的任務。然而,若執行條件可不完全依照產品規格的情況下,就有可能會讓系統無法如預期的方式運作,這樣的特性,經常被惡意攻擊者,運用做為尋找系統漏洞的工具,藉此繞過預設的安全機制或取得受保護的資料。
 
針對 M2351 系列故障注入攻擊的軟件防護措施

微控制器產品在設計之初,就會設定相應的產品規格以規范產品的執行條件,確保產品可以完成默認的任務。然而,若執行條件可不完全依照產品規格的情況下,就有可能會讓系統無法如預期的方式運作,這樣的特性,經常被惡意攻擊者,運用做為尋找系統漏洞的工具,藉此繞過預設的安全機制或取得受保護的資料。這方法之所以被攻擊者經常使用,其根本原因不外乎相關攻擊設備簡單、容易取得且成本低廉,并且其攻擊具有一定的效果。本篇文章將介紹常見的故障注入攻擊方式及其原理,并提出在不增加硬件成本下最有效益的軟件防護方法,來防護這些攻擊。

01 透過Fault Injection攻擊可以做到什么 以硬件加解密引擎運作為例

當產品的執行條件,超出了原本預設的規范,將使產品的運行出錯,如果能夠限縮這樣的執行條件出現在特定的時間,且只持續一段極短的時間,便足以能夠讓產品在執行特定指令的時候出錯,而其它指令又能夠正常的執行。也就是說,透過 Fault Injection,可以讓特定指令的執行失效,例如讓加密硬件系統錯誤的執行讀取密鑰的任務,使其加載空白密鑰 (zero key) 來加密數據,如此一來只要再使用空白密鑰,就能將密文還原成明文。
 

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施


Figure 1. Skip Instruction Attack

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 2. Zero Key Attack

02 常見且低成本的Fault Injection方式

Fault Injection 攻擊手段通常可區分為侵入式攻擊和非侵入式攻擊。
侵入式攻擊所影響的是產品功能永久性的故障和異常,這手段通常是透過高精密的儀器對產品內部電路或數據做修改和破壞,因此所需的硬件成本和技術門坎都很高。
非侵入式攻擊則是在產品運行中,注入攻擊,使其短暫的影響產品當下運作行為,造成異常或功能故障,這類攻擊手段常見的方式為攻擊產品輸入電壓和頻率。因為這樣的攻擊是針對電壓及頻率且持續時間短暫,我們稱之為 Voltage Glitch 攻擊與 Clock Glitch 攻擊。這兩種攻擊方式,只需具備可以產生對 voltage 和 clock 訊號干擾的硬設備即可達成,因此實現所需成本比侵入式攻擊低上許多,也更容易取得和實現。

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 3. Voltage Glitch Attack

因為 Voltage Glitch 和 Clock Glitch 的攻擊都可以造成產品執行時,跳過某些指令或是影響某些操作的輸出結果, 本章節接下來將以 Voltage Glitch 攻擊范例來說明常見的 Fault Injection 影響。

03 Voltage Glitch 對TrustZone 配置設定的攻擊

在具備 TrustZone® 技術的微控制器產品中,都會具有 Secure Attribution Unit (SAU) 控制單元,用來將微控制器的所有資源,設置為 Secure 和Non-secure 區域,目的是為了透過隔離 Secure與 Non-secure 區域的方式,來保護 Secure 區域中的資源。

在針對 TrustZone® 技術的攻擊中,攻擊者會企圖透過讓 SAU 的設置無效化,來瓦解這樣的隔離保護機制,此攻擊主要是在系統程序配置 SAU 屬性時進行 Voltage Glitch 的攻擊, 讓系統執行指令出現錯誤,造成 SAU 配置和系統原先規劃的不一致,以期在這當中尋找到可利用的漏洞。

我們以試圖攻擊 M2351 微控制器在配置 SAU 過程中設定 Non-secure 區域為例,整個 M2351 的 Flash 內存大小為 512 KB,如果規劃其中的 Secure 空間大小為 256 KB,那么剩下的 256 KB 空間,就屬于 Non-secure ,其在內存空間中的地址如下圖:

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 4. TrustZone® Secure, Non-secure Partition。

在這樣的內存配置下, Secure代碼與Non-secure代碼被遠遠的區隔開來,實現了TrustZone®的硬件隔離,而想要進行這樣的隔離配置,實際上所需要的設置有三個部分,一個是SAU的配置設定,一個是Flash Non-secure Boundary的設定,最后則是編譯代碼需要的設置。

SAU的配置,主要在指定Non-secure區域的起始地址與結束地址,這里設定的范圍是由0x10040000到0x1007FFFF,至于其它未定義的區域,則默認為Secure區域。

Flash Non-secure Boundary的設定,是指Flash內存空間中,由哪里開始要劃分給Non-secure使用,在這里其設定為0x40000,表示Flash后面的256KB,將劃歸給Non-secure使用,其余則是給Secure使用。Flash Non-secure Boundary的設定,是一出廠就設置好的,不會再改動 。

由Figure3可知,Secure區域跟Non-secure區域是分開的,因此在編譯時,Secure代碼與Non-secure 代碼的RO Base就必定不同,也就是Secure的RO Base必須落在0x0到0x3FFFF的范圍,而Non-secure的RO Base則是要落在0x10040000到0x1007FFFF的范圍內,這里我們設定Secure RO Base為0x0,Non-secure RO base為0x10040000。
 
上述的三種設置,其中只有SAU的設置,會在系統運作中進行,因而有機會被Voltage Glitch攻擊,如果系統在寫入SAU區域設置時,遭到攻擊,就有可能造成指令執行失敗,因而使得SAU的設置不正確,也就是設置 SAU Non-secure Region的起始地址 0x10040000這行指令執行失敗,這將造成SAU Non-secure Region的實際設定為 0x0,則系統的內存規劃將變成如下圖所示:

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 5. Secure, Non-secure Partition after Attack SAU Setting.

注意在Non-secure Region起始地址被竄改成0x0的情況下,0x0至0x0003_FFFF內存的屬性并不會真的被改成Non-secure,這是因為另一個固定的屬性設置單元Implementation Defined Attribution Unit (IDAU)所造成的影響,在SAU于0x0到0x0003_FFFF設置為Non-secure的情況下,最終的0x0到0x0003_FFFF的屬性將依照較嚴格的IDAU設置,這表示,即使成功的攻擊SAU,讓Non-secure 起始地址設定為0x0,仍然無法讓原來的Secure 區域改變為Non-secure區域,而是變成IDAU設置的Non-secure callable 區域,而Non-secure callable區域,其本質上仍是屬于Secure區域的一部分。

另外,雖然成功的攻擊SAU后,會讓大部分的Secure區域,轉變為Non-secure callable區域,但是因為這些區域缺乏SG (Secure Gateway)指令的緣故,Non-secure code是無法任意用Non-secure callable方式呼叫這區域的指令的。

值得注意的是,M2351微控制器SAU最多總共有8個區域可以設定, 可是這8個區域的范圍,是不允許重迭的,重迭區域的設定,將導致該重迭區域強制為Secure屬性,也就是說,若是原來的設定中,本來就有劃定0x3F000至0x3FFFF為Non-secure callable區域,而因為此區域跟被攻擊后的SAU區域0x0到0x1007FFFF重迭了,將使得0x3F000至0x3FFFF這個區域的設定直接成為Secure區域,這將造成所有的Non-secure callable API無法被Non-secure code呼叫。

因此,單純的攻擊SAU設置,并無法為Non-secure code取得額外的權限,甚至會失去原本可以呼叫Non-secure callable API權限,所以即使成功的攻擊了SAU的設置,也并無法形成一個有效的攻擊,不會有任何Secure區域信息的泄漏或被Non-secure code取得任何的Secure權限。

04 Voltage Glitch 對 AES 加密的攻擊

此攻擊方式主要是在代碼執行AES加密相關處理時,使用Voltage Glitch攻擊其運作,使其產生錯誤的密文。執行AES加密的基本流程如下圖所示, 最終會產生密文 : 

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 6. AES Encrypt Procedure.

例如在輸入 AES Key操作時被Voltage Glitch攻擊,可能出現輸入密鑰的動作被忽略或是輸入錯誤的密鑰值。如果是輸入密鑰的動作因為攻擊而沒有實際上的密鑰值輸入,那么接下來的加密過程,就會直接使用其緩存器內原來的值,通常這會是一組全部為0的密鑰值,所以對于最后加密過后的秘文,只要使用全0的密鑰來解密,就可以還原出正確的原文了。

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 7. Zero Key Fault Injection Attack.

另一種狀況是在原文已知道情況下,攻擊者利用Voltage Glitch造成輸入錯誤的密鑰,然后加密過后,得到對應的密文,以此重復多次,攻擊者就可以根據原文、正確密鑰加密后的密文、各種錯誤密鑰加密后的密文,經過Differential Fault Analysis (DFA) 差分故障分析方法,就可以還原出正確的密鑰。

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 8. Use Fault Injection to get N Encrypted Text for DFA.

05 如何透過軟件來防護這些攻擊

由上述幾個采用Voltage Glitch攻擊的例子可以發現,攻擊者需要在正確的時間點,進行Fault Injection攻擊,才有一些機會得到其想要達成的目的,因此讓攻擊者無法輕易的了解系統內部運作的時序,將會是一個有效的防護,最簡單的方法就是建立不可預測的系統時序和處理流程, 讓攻擊者不容易找到合適的攻擊時間點,也不容易持續攻擊到同一個關鍵運行點,而這可以透過隨機延遲和隨機變化處理流程的順序來實現。

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 9. Add Random Delay

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 10. Change Execution Procedure Randomly

但是只要無法擋住攻擊的來源,攻擊者總會達成他們所要的攻擊目的。如果軟件可以偵測到系統可能被攻擊, 則可透過對應的處里程序將攻擊損害程度降到最低。
本章節將依據前一章節提到的故障攻擊范例來說明軟件解決方案, 并實現可偵測出系統是否被攻擊以及對應的處理。

06 關鍵設置攻擊防護

在先前所舉TrustZone®設定攻擊的例子中,我們知道攻擊者企圖利用跳過SAU配置指令來影響Secure與Non-secure區域范圍的設置,企圖擴大Non-secure區域范圍,藉此取得存取Secure資源的機會。雖然在之前的描述中提到,因為Secure與Non-secure范圍設置,除了SAU,還需要搭配IDAU,所以單純的攻擊SAU,并無法取得有效的權限,但這里我們仍然為這樣的攻擊提出對應的策略,讓攻擊者連SAU的設置都無法攻擊成功。

這個防護最主要原理,是偵測異常的SAU配置,并做復原SAU配置的處理, 讓針對SAU設置的攻擊無效化。

首先要偵測出異常的SAU設置,可針對所有的SAU設置進行冗余檢查。

紀錄有效的系統SAU設定值:
1. 系統SAU設定值已預先被定義在partition_M2351.h內,需要將這些設定值預先記錄下來, 可供后續步驟的使用。
2. 計算出有效的系統SAU設定值總和 :
將有效的SAU相關設定例如: RBAR, RLAR和CTRL等設定值全部加起來做運算, 會得到一個Checksum值。
3. 將有效的SAU設定值寫入對應的SAU region :
將partition_M2351.h內定義有效的SAU設定值和屬性寫入各自的SAU區域內。
4. 讀出全部有被寫入SAU region的設定值, 并做加總運算
5. 判斷寫入SAU是否正確 :
在此比對Step 2和Step4計算出來的總和值是否一致,便可得知在寫SAU設定值是否因遭到攻擊而產生異常的設定結果。

上述步驟Step 1,2,4,5是針對偵測攻擊所加的步驟, 而Step 3則是原來沒有加防護代碼時的SAU設置。如下圖所示,

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 11. Fault Injection Countermeasure Flow.

接下來,偵測到錯誤后,必須要讓系統能夠自行回復,所以需要重復Step3的步驟再次寫入SAU設定。

07 防護Zero Key攻擊與AES加密攻擊

Zero Key攻擊與SAU設置攻擊類似,都是讓軟件寫入動作失效,也就是讓系統無法寫入正確地密鑰到運算單元中,因而使用默認的空白數據,據此產生使用 空白密鑰的效果。

對AES加密運算的攻擊, 目的是影響密鑰的加載使其加密出錯誤的密文,然后攻擊者透過分析大量不同的錯誤密文和正確密文的關系, 透過DFA分析方法推導出系統內使用的加密密鑰后, 再解密密文, 便可得到明文數據。
因此AES加密攻擊的防護重點是讓軟件可以知道AES加密運算過中有受到攻擊,避免使用到空白或錯誤的密鑰,并且不能將被攻擊后產生的密文回報給攻擊者,使其有機會進行DFA分析。
攻擊者再攻擊密鑰的加載前,需要先精確的定位到特定的時間點,因為配置密鑰與輸入明文的程序,是可以互換的,軟件可以在這個部分進行隨機的次序調換,如此可以增加攻擊者定位密鑰加載時間點的難度。

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 12. Random change the plaintext, Key input procedure.

由于對AES運算的攻擊,重點在于使其密鑰的加載出錯,無論是Zero Key或是大量錯誤的Key,所以只要在加載密鑰之后,再針對緩存器中的密鑰做檢查,即可保障密鑰輸入的正確性,而且如果運算中有使用到DMA的話,DMA的Source, Destination與Transfer  Count都應該也納入檢查。
而加密運算使用密鑰時的攻擊,則可在加密完成后,直接把密文用同一把密鑰解密,并與原來的明文做比對,即可驗證在加密過程中是否有任何出錯。
整個防護對策流程圖如下:

【技術干貨】針對M2351系列故障注入攻擊的軟件防護措施
Figure 13. AES Key Fault Injection Countermeasure Flow.

總結
對于微控制器產品而言,Fault Injection確實是一個簡單、有效又低成本的攻擊, 只是要能夠完整的取得有用的成果,攻擊仍然必須能夠精確的定位安全設定、密鑰加載、加密運算的關鍵時序,這對并不熟悉微控制器內部運行的程序的惡意攻擊已屬不易,而且軟件也可以利用隨機的延遲與程序交錯等方式,更加深定位的困難度。
即使攻擊者精確找到關鍵位置,只要軟件多一道自我校驗程序,就可以讓攻擊的難度急遽增加,因此對于系統中的關鍵設置、密鑰加載部分,增加相應的防護會是一個很值得做的事。
(來源:新唐MCU,作者:張紋碩 部經理  )
 
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。
 
 
推薦閱讀:
電子換向為交流和直流風扇應用提供更佳的節能效果
1+1>2!這樣同時實現高精度與高功率
矢量信號與射頻信號源的區別在哪?
DC-AC轉換器“逆變器”的幾種詳解
如何讓電路的心臟——“電源”更可靠
特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索

關閉

?

關閉

欧美日韩亚州综合,国产一区二区三区影视,欧美三级三级三级爽爽爽,久久中文字幕av一区二区不卡
日韩久久一区二区| 亚洲综合清纯丝袜自拍| 国产精品三级电影| 午夜av区久久| 懂色av一区二区三区免费看| 欧美高清性hdvideosex| 中文字幕国产一区| 强制捆绑调教一区二区| 在线免费观看成人短视频| 2023国产精品视频| 午夜精品福利一区二区三区蜜桃| 国产伦理精品不卡| 制服丝袜一区二区三区| 亚洲精品乱码久久久久久久久| 国产精品自在在线| 日韩一区二区不卡| 日韩avvvv在线播放| 欧美三级中文字幕| 亚洲激情图片小说视频| 99精品久久只有精品| 中文字幕欧美激情一区| 国产乱码精品一区二区三区忘忧草 | 亚洲一区二区三区四区在线观看| 国产成人免费视频一区| 精品99999| 久久国产婷婷国产香蕉| 日韩欧美国产一区在线观看| 午夜精品久久久久久| 欧洲av在线精品| 亚洲午夜影视影院在线观看| 91久久人澡人人添人人爽欧美| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲国产精品一区二区久久| 色综合中文字幕国产 | 亚洲另类在线一区| 91一区二区三区在线观看| 国产精品拍天天在线| 成人精品亚洲人成在线| 国产婷婷精品av在线| 成人免费视频视频| 一区在线观看视频| 在线观看www91| 五月婷婷另类国产| 欧美一区二区三区精品| 喷水一区二区三区| 久久久久国色av免费看影院| 国产精品自拍av| 中文字幕一区二区三区在线观看| 成人高清免费观看| 亚洲午夜免费电影| 欧美电影免费观看高清完整版在线| 美美哒免费高清在线观看视频一区二区| 欧美理论在线播放| 国产呦精品一区二区三区网站| 国产亚洲成aⅴ人片在线观看 | 欧美伊人精品成人久久综合97| 香蕉影视欧美成人| 26uuu久久综合| 91丨九色丨尤物| 天天亚洲美女在线视频| 久久午夜老司机| 色婷婷av一区二区三区之一色屋| 天天操天天干天天综合网| 欧美精品一区二区三区蜜臀| 成人免费高清在线| 性做久久久久久免费观看| 欧美成人vps| 99久久婷婷国产| 日韩成人一区二区| 国产精品无圣光一区二区| 91福利在线看| 国产福利视频一区二区三区| 亚洲综合成人在线| 国产蜜臀av在线一区二区三区| 色婷婷综合中文久久一本| 久88久久88久久久| 亚洲精品久久久蜜桃| 欧美xxxxxxxx| 欧美日韩激情一区| jlzzjlzz国产精品久久| 麻豆91在线看| 一卡二卡三卡日韩欧美| 国产无遮挡一区二区三区毛片日本| 欧美亚洲国产一区二区三区| 国产99久久精品| 久久国产尿小便嘘嘘| 亚洲最快最全在线视频| 国产精品久久久久影院亚瑟| 精品捆绑美女sm三区| 欧美日韩在线精品一区二区三区激情| 国产91高潮流白浆在线麻豆| 蜜桃精品在线观看| 亚洲成a人片在线不卡一二三区| 国产精品国产三级国产aⅴ入口 | ...av二区三区久久精品| 精品乱码亚洲一区二区不卡| 欧美日韩三级一区| 色综合色综合色综合色综合色综合 | 99视频有精品| 国产成人精品亚洲777人妖 | 亚洲一区二区欧美日韩| 国产精品理论片| 国产日韩欧美精品在线| 久久久亚洲精品石原莉奈| 4438x亚洲最大成人网| 欧美日韩国产成人在线免费| 91国偷自产一区二区三区成为亚洲经典| 国产成人精品三级| 国产91丝袜在线观看| 国产成人自拍网| 国产一区二区三区国产| 国产伦精品一区二区三区免费| 免费看日韩精品| 青青草国产成人av片免费| 日韩在线观看一区二区| 午夜影视日本亚洲欧洲精品| 亚洲成人激情社区| 日本午夜精品视频在线观看| 亚洲精品国产高清久久伦理二区| 亚洲丝袜自拍清纯另类| 亚洲主播在线观看| 日韩专区一卡二卡| 日本成人中文字幕| 精品一区二区三区免费观看| 精品一区二区在线播放| 国产精品自在在线| 91啪亚洲精品| 欧美日韩高清不卡| 欧美大尺度电影在线| 久久久久久久久久电影| 国产精品久久久久影院色老大| 亚洲黄色尤物视频| 视频一区二区欧美| 国内一区二区在线| 99久久国产综合精品女不卡| 欧美伊人久久久久久午夜久久久久| 欧美久久一二区| 久久中文字幕电影| 亚洲男人电影天堂| 日韩精品成人一区二区在线| 狠狠色综合日日| 91丨九色丨黑人外教| 制服丝袜日韩国产| 欧美国产视频在线| 亚洲成va人在线观看| 国产激情精品久久久第一区二区 | 中文幕一区二区三区久久蜜桃| 亚洲免费色视频| 蜜桃久久av一区| av在线一区二区| 日韩欧美在线1卡| 国产精品福利一区二区三区| 污片在线观看一区二区| 成人综合激情网| 欧美丰满高潮xxxx喷水动漫| 国产欧美一区二区三区在线看蜜臀 | 一道本成人在线| 日韩欧美在线1卡| 夜色激情一区二区| 国产成人av网站| 日韩一二三四区| 亚洲女厕所小便bbb| 国产酒店精品激情| 欧美三电影在线| 国产精品初高中害羞小美女文| 图片区小说区区亚洲影院| 99re热这里只有精品免费视频| 日韩欧美国产高清| 亚洲一区二区三区中文字幕在线| 国产福利91精品| 精品国产一区久久| 亚洲超碰97人人做人人爱| 91在线视频观看| 欧美高清在线视频| 国产一区二区三区综合| 欧美一级免费观看| 亚洲国产一区二区三区青草影视| 波多野结衣亚洲| 国产日韩欧美激情| 精品亚洲porn| 精品久久久久一区| 久久草av在线| 91精品国产入口| 无吗不卡中文字幕| 欧美日韩卡一卡二| 亚洲综合在线视频| av一二三不卡影片| 中文字幕在线不卡| jvid福利写真一区二区三区| 国产人久久人人人人爽| 国产精品888| 国产日本一区二区| 成人h动漫精品一区二| 中文一区一区三区高中清不卡| 激情综合色丁香一区二区| 欧美mv和日韩mv的网站| 激情综合网天天干| 久久综合国产精品| 国产精品99久久久久久似苏梦涵| 久久久久久久精|