硬體形式化驗證技術調研

Mark_Lee131發表於2021-09-21

硬體形式化驗證技術調研

硬體安全問題頻頻發生,造成的後果日益嚴重,例如伊朗核電站震網事件,攻擊者通過網路啟用事先植入的硬體木馬使電機轉子超負荷運轉燒燬。然而,現今硬體設計仍缺乏有效的安全驗證方法檢測,導致硬體設計中存在潛在的安全漏洞、木馬、惡意程式等。

現有的安全驗證技術主要包含模擬和形式化驗證技術,但是模擬技術存在覆蓋率難以保證的問題。
形式化驗證技術採用嚴格的數學定義描述電路規範,形式化檢查硬體行為特徵.現有的形式化驗證技術包括模型檢驗定理證明

  • 模型檢驗(Model Checking)
    採用搜尋演算法驗證設計是否滿足設計規範,但會因設計規模的增大導致狀態空間爆炸。雖然引入符號執行後解決了狀態空間爆炸問題,但仍可能導致路徑爆炸。

  • 定理證明(Theorem Proving)
    採用形式化語言描述程式規範和性質,用演繹的方法互動式地驗證程式的規範和性質。

1.模型檢驗(Model Checking)

模型檢驗(model checking)是一種被廣泛應用的驗證有限狀態系統滿足規範的形式化方法,主要針對具有邏輯性質的有限狀態系統,由 Clarke等人最早提出。

在這裡插入圖片描述

將待驗證系統建模為有限狀態機,如Kripke結構狀態-遷移系統(State Transition system)自動機等,將系統期望的性質描述為時序邏輯公式;然後,自動化窮舉搜尋系統行為以確定待驗證系統是否滿足期望的性質。
若不滿足,根據反饋資訊判斷具體系統中是否確實存在違反此屬性的執行路徑(即反例路徑)。

由於模型檢驗器在演算法支援下可以自動執行,並能在系統不滿足性質時提供反例路徑,因此備受工業界關注。

模型檢驗的思想基於窮盡搜尋,這也就造成了其最大缺點是不能解決推理問題,極易發生狀態爆炸(state explosion),這已經成為影響模型檢驗應用的重要瓶頸1

1.1 模型檢驗步驟2

模型檢驗大致可分為以下三個步驟:
(1)系統建模
在此階段需要把系統的Kripke結構用形式化語言描述出來,即將系統的狀態集合及狀態遷移關係進行形式化描述。具體使用哪種描述語言要根據模型檢驗工具來確定,每個不同的模型檢驗工具都有各自的建模語言。系統建模的關鍵在於正確地描述好系統的狀態遷移關係,這是進行規範驗證的前提條件,因為遷移關係描述有誤則不能保證規範驗證的結果是可靠的。此外,還要注意儘量使用精簡的方式來描述系統,避免因為引入過多變數而造成的系統狀態爆炸問題。

(2)建立規範
通常將需要驗證的系統性質表示為時態規範,即時態邏輯(temporal logic)表示式。對硬體或軟體系統,時態邏輯能夠斷言系統隨著時間演變的行為變化。不同的模型檢驗工具對規範的描述有不同的要求。如SPIN中的規範必須使用LTL來描述,SMV則能同時接受LTL和CTL描述的規範。雖然建立規範能驗證系統是否滿足某個規範,但由於模型檢驗方法是基於語義推導的,因此並不能確定給定的規範是否涵蓋了系統應滿足的所有性質。

(3)系統驗證
在理想情況下,系統驗證過程是由模型檢驗工具自動進行的。然而在實際應用中常常需要人工參與,這通常涉及到對驗證結果的分析。如果系統不滿足規範,模型檢驗工具往往會把出錯的路徑呈現給設計者,並能幫助設計者跟蹤到出錯的地方。產生錯誤也可能是因為不正確的系統建模或是不正確的規範要求所導致,而錯誤路徑可用於發現和修補這兩類問題。此外,驗證任務可能會非正常終止,這是因為模型規模太大以致於不能裝進計算機記憶體。在這種情況下,通常需要更改模型檢驗工具的引數或調整模型後重新進行驗證。

1.2 狀態爆炸的優化技術

目前常用的一些減少和壓縮狀態空間的方法主要有:二叉決策圖、符號模型檢驗、偏序規約、抽象技術組合邏輯等。這些方法也是目前在模型檢驗中抑制狀態爆炸的主要技術。

1.2.1 二叉決策圖(Binary Decision Diagram, BDD)

二叉決策圖(BDD)是一種有根無環圖,最初由 Bryant 提出,用來儲存布林表示式。該技術極大地減少了儲存布林公式所需的空間,使模型檢驗工業應用成為可能。二叉決策圖是一種表示布林函式的高效方法,它首先是作為一種簡單的形式,即二值判定樹(BDT)被提出來的。二叉決策圖可通過對二值判定樹進行優化(如對一些計算進行短路、規約)得到。

1.2.2 符號模型檢驗(Symbolic Model Checking, SMC)

符號模型檢驗(Symbolic Model Checking)最早由 Carnegie Mellon University 在讀博士生McMillan 提出,其主要思想是使用狀態集相關的屬性來表示集合,用布林公式來刻畫屬性,並用二叉決策圖在計算機內實現這些布林公式及其運算。該方法自上個世紀 90 年代出現以來已經普遍應用於大規模積體電路系統的設計中,它能驗證的狀態規模已經達到 \(10^{120}\),從而能很好地抑制狀態爆炸問題。

1.2.3 偏序規約(Partial Order Reduction)

一個系統可以由多個程式組成, 併發執行使得不同程式的動作可以有許多不同的次序。基於對這一問題的認識, 我們可以將某些狀態的次序固定, 以減少重複驗證本質上相同的路徑,這種方法被稱為偏序歸約。
最初,偏序規約是為解決因併發非同步模型交替執行導致的空間爆炸而提出的一種技術,由 Overman 首先提出。併發系統的一次執行可以看作是各事件按執行順序“插入”得到的一個插入序列,這樣,對 \(n\) 個事件可產生 \(n!\) 個插入序列。有些事件可能與執行次序無關,若把這些事件預先插入到序列中的固定位置,便可避免驗證一批本質上相同的路徑。
一般來說,能夠減少搜尋空間的方法能同時節省時間和記憶體空間的需求。由於記憶體空間在某些情況下比時間更為重要,該偏序規約便是以時間換空間的典型例子。

1.2.4 抽象技術

抽象技術是另一種除符號模型檢驗方法外有效抑制狀態爆炸的重要手段。傳統的模型檢驗方法主要適用於面向控制的系統, 而不太適合與資料路徑有關的電路系統或具有複雜資料結構的反應系統。符號模型檢驗方法雖然可以處理一些與資料處理有關的系統,但其驗證的複雜性往往較高。因此,對於這類系統的驗證, 常常需要採用抽象技術, 即在系統的精確資料值和一個小的抽象資料值之間建立一個對映關係, 通過擴充套件狀態和轉換之間的對映, 產生一個比實際系統小得多的抽象系統。
此外,狀態合併是另一種重要的抽象技術, 為了壓縮狀態空間, 它通過消除一些不影響規範的變數狀態, 得到簡化的自動機模型,通過驗證簡化模型的性質來降低模型檢驗的複雜性。

1.2.5 其他的優化技術

其他一些優化技術, 如組合推理是一種基於檢測區域性狀態空間的方法。對於大型系統的驗證, 組合推理方法利用“分而治之”策略, 根據系統模組結構, 先分別驗證系統各個區域性模組的性質, 再由區域性模組的性質推斷整個系統的性質。如果系統滿足每一區域性性質, 並且區域性性質的合取蘊涵了整個規範, 那麼完整的系統也必定滿足這個規範。總而言之,組合推理是藉助分治策略,從本地屬性推匯出全域性屬性,從而減小狀態空間。
由於在多程式組成的系統中,某些程式可能完全類似, 併發執行的結果可能產生許多相同或相似的路徑。此時,我們可以只搜尋在對稱關係中等價的一種情形, 以避免重複搜尋對稱或相同的系統狀態。這種方法被稱為對稱模型檢驗(Symmetry Model Checking)
對稱模型檢驗通過劃分等價類來達到簡化狀態空間的目的。它只考慮等價類中的一種情形,以此為基礎,類推同類的其他情形。
值得一提的是,在實際應用中,針對不同驗證物件(包括待驗模型和待測屬性),選取的優化措施也不同。即使是同一種優化技術,在不同工具中實現的策略和方法也不盡相同。

1.3 總結

  • 現有模型檢驗方法大多基於顯式狀態空間描述和操作,即便使用動態狀態空間構建偏序規約等優化技術,可驗證系統的規模仍然十分有限。在實際設計中系統模型的大小往往隨著併發元件的數目呈現指數級增長,這一問題構成了將模型檢驗技術應用於實際設計的主要瓶頸。
  • 此外,模型檢驗的形式化規範語言(如CTL和LTL等 )的表達能力不足,描述順序、併發和迴圈等性質較為困難,或者根本無法描述這些性質。3

2.定理證明

它需要形式刻畫系統模型及待測性質,再通過公理或推理規則來證明系統具有該性質,並可使用歸納推理來驗證無窮狀態系統。但是該測試方法應用需要很專業的數學知識,雖有相關工具支援(如PVS),但自動化程度低,驗證週期長,難以被工業界接受。

參考文獻

[1] E.M.Clarke, O.Grumberg, D.A.Peled. Model Checking[M], The MIT Press, Cambridge Massachusetts, 1999.
[2] 王飛明,胡元闖,董榮勝. 模型檢測中狀態爆炸及其優化策略研究[A]. 廣西計算機學會.廣西計算機學會2008年年會論文集[C].廣西計算機學會:廣西計算機學會,2008:6.
[3]逄濤. 命題投影時序邏輯符號模型檢測及其應用研究[D].西安電子科技大學,2014.

相關文章