?可靠性是評估軟體質量的重要屬性,關鍵安全系統(Safety Critical Systems,SCS)對可靠性的要求尤為嚴格,因其一旦失效,將可能對生命、財產或環境造成重大損害,以汽車為例,ISO26262中ASIL D要求相關系統失效率低于10 Fit(Failure in time),即每千件產品在10∧9小時內的故障數需低于10件,
測驗軟體可靠性的諸多方法中,較為常見的一種為故障注入測驗——根據選定的故障模型選擇故障注入工具,人為地將故障注入系統并采集系統反應行為資訊,從而進行可靠性分析,
學術上,故障注入技術可根據方式的不同分為基于硬體的故障注入、基于仿真的故障注入和基于軟體的故障注入三大類;實際應用中,可根據應用場景的不同分為基于仿真的故障注入與基于原型的故障注入兩大類,
本文將從學術領域與實際應用兩大角度出發,詳述各類故障注入技術的方法與工具,
一、學術領域
*學術領域將故障注入劃分為基于硬體、基于仿真與基于軟體三大類,由于實際應用中也有仿真類別的分類,本章節僅針對軟體與硬體類展開敘述,

▲故障注入系統
故障注入系統通常由目標系統和故障輸入系統組成,從物理上看,控制器是可以單獨在目標系統或計算機上運行的程式,故障注入器為定制的硬體或軟體,本身支持不同的故障型別、位置、時間和部分適配的硬體語意或軟體結構,注入的內容則來自故障庫,圖示中的故障庫是一個具備更大靈活性和可移植性的單獨組件,
軟體故障注入和硬體故障注入在前期選擇上,主要受故障型別影響,陷入類故障(如迫使軟體中某個點保持永久值),則最好選用硬體注入方法;資料損壞類的故障選用軟體注入方法足矣,其他諸如儲存單位中的位翻轉等故障則可采用任意一種方式進行故障注入,此類情況下,成本、準確性、可重復性等都會影響最終方法的選擇,
適合硬體故障注入的故障型別有:
- 開短路故障
- 橋接故障
- 固定型故障(電路中的某個信號不可控,永遠固定在同一值)
- 雜散電流故障(指在設計電路外,因泄漏導致流動的電流)
- 電涌故障(指電壓瞬間超過了正常作業電壓)
適合軟體故障注入的故障型別有:
- 存盤資料損壞(如暫存器、記憶體、磁盤)
- 通信資料丟失(如總線和通信網路)
- 軟體缺陷(機器級或更高級的軟體缺陷)
1.硬體故障注入
硬體故障注入需要使用額外的硬體將故障引入目標系統的硬體,通常可根據注入故障的型別及其注入位置,分為接觸式與非接觸式兩大類,
接觸式故障注入使用與電路引腳直接接觸目標系統硬體,通常也被稱為“引腳級注入”,是硬體故障注入最為常見的方法,可以使用有源探頭或插拔式技術來改變引腳處的電流和電壓,幾乎不對目標系統產生影響,
非接觸式故障注入通過產生重離子輻射將故障注入到目標硬體,重離子會穿過靶器件的耗盡區,雖然能夠模仿自然的物理現象,但因無法控制重離子發射或電磁場產生的準確時刻而很難準確控制故障注入的時間和位置,
常見的硬體故障注入工具有:
?法國圖盧茲大學的國家科學研究中心系統分析與架構實驗室(LAAC-CNRS)所研發的引腳級故障注入工具Messaline,已成功應用與鐵路控制系統的集中式聯鎖系統及“Esprit Delta-4”專案的分布式系統,

▲Messaline總體架構及環境
瑞典查爾姆斯理工大學開發的用于研究瞬時故障效應的故障插入系統FIST(Fault Injection System for Study of Transient Fault Effect),可同時使用非接觸式與接觸式方法來模擬目標系統內的瞬時故障,還支持放置MOS三極管控制電壓降幅來實作故障干擾,

▲FIST環境配置情況
維也納科技大學所研發的容錯分布系統MARS(Maintainable Real-Time System),除使用FIST所使用的重離子輻射外,還可使用電磁場進行非接觸式故障注入,
2.軟體故障注入
由于無需昂貴的硬體便可進行測驗,軟體故障注入在近年來受到了較大關注,尤其是其能夠針對應用程式及作業系統等硬體故障注入無法觸達的部分,雖然軟體故障注入的靈活性較強,但仍有訪問位置受限、加重系統作業負載及改變原始軟體結構的風險,
軟體故障注入可按注入時間分為編譯時故障注入與運行時故障注入,工具選擇上,通常有以下幾種:
德克薩斯大學奧斯汀分校所開發的Ferrari(Fault and Error Automatic Real-Time Injection)系統,能夠向CPU、記憶體與總線注入故障,由初始化與激活器、用戶資訊、故障注入器及資料收集分析器所組成,
伊利諾伊大學所開發的容錯與性能評估器Ftape(Fault Tolerance and Performance Evaluator),可將故障以逐位翻轉的方式注入至CPU、記憶體與磁盤子系統中的可訪問暫存器,

▲Ferrari環境配置情況
密歇根大學所開發的Doctor(Integrated Software Fault Injection Environment),使用超時、陷阱與代碼修改三種方式實作故障注入的觸發,允許注入CPU、記憶體及網路通信故障,
科英布拉大學所開發的Xception,可通過現代處理器中的高級除錯及性能監控功能注入更為真實的故障,Xception故障是基于特定地址訪問來觸發的,因此更具可重復性,可通過以下事件觸發故障出入:
①從指定地址獲取操作碼或加載運算元
②運算元存盤到指定地址
③啟動后經過的指定時間
④上述故障觸發的組合,
3.軟硬體故障注入的比較

通過上表可以發現,硬體故障注入和軟體故障注入之間的差距主要在于可訪問的故障注入點、成本和干擾水平,
硬體方法可以將故障注入芯片引腳和內部組件,例如軟體故障注入無法尋址的組合電路和暫存器,可用于評估低級別的錯誤檢測和屏蔽機制,軟體故障注入可直接在軟體狀態級別(例如存盤器、暫存器)直接產生變化,更適合于測驗更高級別的機制,但需要注意直接在目標系統上運行所導致的更高額的干擾開銷,
二、實際應用
實際應用中,故障注入方法可根據應用場景的不同分為基于仿真的故障注入與基于原型的故障注入兩大類,
基于原型的故障注入:指向軟體或硬體注入故障,僅適用于研究模擬故障,對諸如汽車、航空、航天等領域龐大而又復雜的應用場景而言,其硬體與軟體的生產成本高昂,因此現下成本更低、效率更高的基于仿真的故障注入方法更受青睞,
基于仿真的故障注入:指通過建立目標系統的“數字孿生”模型,在模型中引入故障來得到故障注入的結果,這種方法無需特定的硬體設備,也不會對目標系統造成損傷,有助于評估容錯機制的有效性及系統可靠性,但大型復雜設備的仿真模型往往開發量龐大,眾多企業苦其久矣,
SkyEye,中文全稱天目全數字實時仿真軟體,能夠有效解決仿真故障注入的弊端,作為基于可視化建模的硬體行為級仿真平臺,SkyEye可輕松實作復雜模型的搭建,快速落實“數字孿生”模型,
基于SkyEye所搭建的全數字實時仿真模型,用戶可進行以下幾種模式的故障注入:
1.物理層故障模式
物理層故障模式主要包括斷路控制、短路控制、信號串擾、噪聲信號、串行以及并行阻抗控制等,用于模擬通信總線上常見的線路故障,
SkyEye中,總線設備被設計為獨立的模塊,并在虛擬目標硬體腳本中創建總線設備并與記憶體總線連接,斷路故障模式通過外部資料激勵軟體設計總線故障處理模塊,可以在總線設備模塊中實作與資料激勵軟體的通信介面,并使用總線故障處理模塊向總線設備發送斷路命令,設備接收到該命令后,即不會再接收處理任何來自記憶體總線發送的地址讀寫請求,
SkyEye的斷路故障模擬設計如下所示,

首先通過Python腳本提供的API介面呼叫上述的記憶體監視介面,實作記憶體監視功能,訪問該記憶體時便會執行注冊的回呼介面來完成相關功能,
可由此實作故障模擬:通過該API介面注冊故障模擬回呼介面,當設定該記憶體地址為斷開故障時,每當處理器訪問至該地址便會在該回呼介面中輸出故障資訊,用戶還可呼叫SkyEye運行控制介面來暫停運行工程,
2.電氣層故障模式
電氣層故障模式包括輸出幅度調節、占空比調節、信號延遲調節、上升下降沿調節及斜率調節、毛刺模擬等,
真實硬體中電氣層故障注入是通過總線信號發生器實作,由高速DAC芯片、SRAM、運算放大器組成,電氣層中的輸出電壓幅度調節可通過DAC和運算放大器實作,輸出信號占空比可以通過FPGA控制DAC來實作,輸出信號的延遲可以通過采樣資料進行快取來實作,
在SkyEye虛擬仿真環境下,用戶可通過配置總線暫存器來修改電平值、邊沿時間、占空比等,實作輸出電壓幅度的調節,
電氣層故障注入,包括暫存器故障注入和記憶體故障注入,

▲暫存器故障注入

▲記憶體故障注入
3.協議層故障模式
協議層故障模式包括命令字、資料字、狀態字奇偶校驗、編碼錯誤以及資料替換等,
協議層故障注入是基于不同的總線協議實作的,通過決議總線傳輸的資料來判斷傳輸資訊的型別以及不同型別所需要做的資料處理,可實作需要進行故障注入的通信協議資料分析,與物理層故障模式相似,也可使用SkyEye提供的資料激勵軟體注入總線的通信協議資料來實作故障注入,
參考文獻
[1] https://course.ece.cmu.edu/~ece846/docs/faultInjectionSurvey.pdf
[2] 車建華, 何欽銘, 陳建海, 等. 基于軟體模擬的虛擬機系統故障插入工具[J].浙江大學學報 (工學版), 2011, 4: 004.
[3] 徐仁佐. 軟體可靠性工程[M]. 北京:清華大學出版社,2007.
[4] 張玲玲,王林章.基于故障剖面的安全關鍵系統可靠性測驗與評估[J].計算機與數字工程,2014,42(12):2304-2310,2320.
[5] 麻彥東.面向虛擬化系統的故障注入平臺的研究與設計[D].哈爾濱:哈爾濱工業大學,2015.
?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550152.html
標籤:其他
上一篇:fastjson 1.2.24 反序列化漏洞(審計分析)
下一篇:內網穿透
