李雪飛 李海峰
(中國航空綜合技術研究所,北京 100028)
軟件安全性設計的分析驗證要求研究
李雪飛 李海峰
(中國航空綜合技術研究所,北京 100028)
立足軟件設計階段,對關鍵軟件進行安全性分析驗證,提出了軟件安全性設計的分析驗證模型,并依據模型明確安全性設計的分析驗證要求,最終給出了安全性檢查單。為后續的綜合分析驗證提供驗證目標,從而提高軟件和系統的整體安全性。
軟件安全性;安全性設計;分析驗證要求;檢查單
計算機應用范圍的快速擴展導致研制系統復雜度激增,軟硬件密切耦合,軟件的規模、復雜度及其在整個系統中的功能比重急劇上升,導致軟件安全性問題日益突出[1]。
引起系統安全的軟件問題的原因可分為如下4種:1)軟件自身設計/編碼沒有按照需求正確實現系統要求的功能或是采用了錯誤的設計參數、運行數據等;2)軟件需求錯誤/遺漏;3)軟件運行支撐環境出現故障;4)與軟件輸入信號相關的傳感器、傳輸線路或硬件輸入接口等發生故障[1]。其中1)的一個重要因素就是軟件的設計錯誤。目前針對軟件需求階段有很多方法和技術保證其安全性需求的完整和準確[2~7],如何將獲取到的安全性需求完整、一致并準確的在設計階段得到實現,是我們面臨的又一重要難題。
本文從軟件分析驗證的模型入手,明確軟件安全性設計分析驗證的整體范圍,全面、系統的闡述了軟件安全性設計的驗證要求,為后續針對安全性設計的綜合驗證打下基礎。
1986年美國軟件安全性領域著名學者Nancy G.Leveson給出了軟件安全性的定義:“軟件安全性涉及確保軟件在系統環境中運行而不產生不可接受的風險,軟件安全性是軟件運行不引起危險和災難的能力”[8]。這是業內公認的經典定義。
除此之外,GJB/Z 102A-2012《軍用軟件安全性設計指南》中對軟件安全性定義為:“軟件運行不引起系統事故的能力”[9]。
NASA-STD-8719.13B《軟件安全性標準》[10]認為軟件安全性分析是指在整個軟件生存周期中應用系統安全性工程技術,以確保那些可能降低系統安全性的錯誤得到消除或者控制到某個可接受的風險級別。
GJB/Z 142-2004《軍用軟件安全性分析指南》認為軟件安全性分析是對和軟件安全性相關的特定信息進行的系統而有序的獲取和評價過程[11]。在此,軟件安全性分析驗證主要針對的是評價。
軟件安全性設計分析驗證實際就是在軟件的設計階段進行安全性分析驗證。
GJB/Z 142-2004《軍用軟件安全性分析指南》[11]將設計分為結構設計和詳細設計。并指出軟件結構設計安全性分析是將全部軟件安全性需求綜合到軟件的結構設計中,確定結構中與安全性相關的部分,并評價結構設計的安全性,以保證軟件安全功能的安全完整性的過程;軟件詳細設計安全性分析則是分析軟件的設計和實現是否能以相應的軟件安全性級別滿足軟件安全性需求,并保證設計和實現是可分析、可驗證,同時能夠安全修改的一個過程。
如同測試驗證實施前首先要明確測試需求一樣,對航空關鍵軟件進行安全性分析驗證,首先應明確分析驗證的要求,也可稱之為安全性分析驗證的任務。
IEEE Std 1012-2004《IEEE軟件驗證與確認標準》(IEEE Standard for Software Verification and Validation)[12]是由軟件工程標準化協會發布的隸屬系統工程學科的一個技術標準,作為一個過程標準,它貫穿了整個軟件壽命周期(獲取、供應、開發、運行和維護),并且能夠與所有的生命周期模型相兼容。通過IEEE Std 1012-2004,可以明確以下內容:
● 建立起驗證與確認(Verif ic ation and Validation,V&V)過程、活動和任務的一個通用框架,來支持包括獲取、供應、開發、運行和維護在內的軟件全壽命周期過程;
● 定義V&V任務,所需的輸入和輸出;
● 識別與軟件完整性級別(共4級)相匹配的最小V&V任務集;
● 定義一個軟件V&V計劃的應有的內容。
忙的目的往往是:享受生活、回報父母、滿足愛人,想無私;忙的結果往往是:享受不了生活、遠離了父母、冷落了愛人,成自私。——到底為何而忙
在IEEE Std 1012-2004中,V&V模型(或者V&V框架)包含3個維度,即過程維、活動維以及任務維。過程維是指軟件生存周期的各個過程,包括獲取、供應、開發、運行與維護。每個過程維都有相對應的活動維,即相應的V&V活動。不同的V&V活動又有相對應的V&V任務,不同的V&V任務構成了任務維。
其中,過程維中的開發過程包含與軟件產品有關的需求分析、設計、編碼等活動。V&V活動被劃分為概念V&V、需求V&V、設計V&V、實現V&V等。不同的V&V活動又包含各自的V&V任務。
圖1是對標準中設計V&V模型的總結,從圖1中可以看出,設計V&V活動包含的V&V任務有可追蹤性分析、關鍵性分析、接口分析、軟件設計評價等。設計V&V的目標是要表明設計是軟件需求的正確、準確和完整的轉化,并且在這過程中沒有引入非預期的特征。為了保證這些目標的實現,IEEE Std 1012-2004對每個V&V任務都提出了相應的正確性、完備性、一致性、準確性、可測試性等任務要求。由此可以發現,在確定設計V&V的任務維后,通過目標分解(如正確性、一致性、完備性等,為了簡化圖形未對所有任務及目標展開)可以提出不同目標下的驗證要求。參照圖1軟件設計驗證模型中的任務框架及驗證要求分解思路,可以制定適合軟件安全性設計的任務維,并根據目標分解獲得軟件安全性設計的分析驗證要求。
通過對軟件驗證模型(圖1)進行分析可知,構建軟件安全性設計的分析驗證模型應首先明確其任務維。由于安全性設計分析驗證屬于軟件驗證的范疇,其任務維的制定必須覆蓋軟件驗證任務維中對安全性的考慮,因此可以根據安全關鍵軟件開發過程的特點從軟件驗證任務維中確定安全性相關的任務維,從而保證設計階段安全性驗證任務維的完整性與獨特性。
根據IEEE Std 1012-2004,軟件設計可以分為軟件結構(概要)設計和軟件詳細設計,表1分別對兩個設計階段的安全性分析從所需輸入、輸出以及各自任務維3個方面進行了比較。

表1 結構設計與詳細設計安全性分析對比
參照設計V&V驗證模型中驗證要求的分解過程,對以上2個階段的每類任務都從正確性、一致性、完整性、準確性、可測試性等任務目標出發進行分解,進而可以獲得軟件安全性設計分析驗證的要求。最終,本文提出了軟件安全性設計分析驗證模型,如圖2所示。
模型明確了安全關鍵軟件開發過程(過程維)中軟件安全性設計驗證(活動維)的任務維、任務目標以及分析要求。本文后續會描述依據圖2所示模型建立起來的分析驗證總體要求與詳細要求。
在軟件安全性分析驗證模型中,對2個設計階段中每類安全性設計分析驗證任務分別從正確性、一致性、完整性、準確性、可測試性、可讀性6個目標角度提出分析驗證要求,即形成了軟件安全性設計分析驗證要求。由于任務特點各異,不同的分析任務具有不同的驗證目標,本文參照IEEE Std 1012-2004,結合各個安全性設計分析驗證任務的特點,確立了如表2和表3所示的軟件結構設計和軟件詳細設計2個階段的安全性分析驗證要求。

表2 軟件結構設計安全性分析驗證要求

表3 軟件詳細設計安全性分析驗證要求
在軟件結構(概要)設計階段,考慮安全性應重點進行的分析驗證包括但不限于[10]:
定時、吞吐量和規模的余量設計的分析驗證。確保有關軟件模塊的存儲量、輸入輸出通道的吞吐能力以及處理時間要求,并保證滿足系統規定的余量要求;要結合具體的被控對象確定各種周期,當各種周期在時間軸上安排不下時,應采用更高性能的CPU或多CPU并行處理來解決,以保證軟件的工作時序之間留有余量。
硬件失效引起的軟件失效的分析驗證。應充分分析接口的各種可能故障,包括軟硬件之間的接口,并確保有相應的應對措施。例如,軟件應能識別合法的及非法的外部中斷,對于非法的外部中斷,軟件應能自動切換到安全狀態。
在軟件詳細設計階段,考慮安全性應重點進行的分析驗證包括但不限于[10]:
對容錯和容失效設計的分析驗證。應驗證安全關鍵的部件完全獨立于非安全關鍵的部件,還應能夠既檢測出自身內部的錯誤,又不允許將錯誤傳遞下去。
除此之外,還應該驗證軟件必須有對異常保護的設計。應確保設計中有相應的保護措施來應對軟件運行過程中各種可能的異常情況;并保證異常處理措施可以使軟件和系統轉入安全狀態,保存異常出現的現場信息。
本文的研究目的不僅在于構建軟件安全性設計驗證模型與明確分析要求,也希望通過制定合理的、可操作的分析流程來驗證分析要求,從而在實際工程中真正推動安全性分析驗證工作。為了能夠表述分析要求,同時借助分析要求確定分析流程以及引導安全性分析,本文建立了基于分析驗證要求的安全性檢查單,如圖3所示。
安全性檢查單不僅描述了本文提出的分析驗證要求,同時,為后續安全性分析驗證流程的制定以及分析工作的實施提供了指導思路。最終,依據分析驗證要求,設計了6份安全性檢查單。表4給出了其中一份安全性分析驗證檢查單。
使用如表4所示的安全性分析驗證檢查單來引導分析可以保證分析過程能夠覆蓋本文提出的所有分析要求,可見,安全性檢查單在分析要求與分析流程間構建起一座橋梁。分析要求、安全性檢查單與分析流程的關系可以表示如圖4所示。

表4 安全性分析驗證檢查單
軟件安全性設計的分析驗證是整個安全性分析驗證過程中不可或缺的一步,而明確其分析要求又是進行安全性分析驗證的提前條件。本文首先介紹了軟件設計安全性分析驗證的相關概念,并以軟件驗證模型為基礎,建立了軟件安全性設計的分析驗證模型,從而明確了安全性設計分析驗證的整體范圍;依據此模型,進一步明確安全性設計分析驗證的要求;最后,給出了分析驗證要求的一種表現形式,即安全性檢查單。檢查單的建立,不僅使得分析驗證更加容易操作,而且還可以引導后續分析工作的實施流程。
明確軟件安全性設計的分析驗證要求只是一個開始,后面還要依據這份要求對不同的分析驗證方法和技術進行分類、整理和選取,最終得到一套完整的軟件安全性設計的分析驗證方法,從而保證軟件在設計階段的安全性,提高軟件和系統的整體安全性。
[1] 周新蕾,宋星,林佳等. 軟件安全性分析在運載火箭上的應用[C]. 第7屆國際可靠性、維修性、安全性學術會議論文集. 北京:中國宇航出版社,2007.
[2] D G Firesmith. A Taxonomy of safety-related requirements [J]. Requirements Engineering,2004,23(4):327~331.
[3] 李震. 軟件安全性需求形式化建模和驗證[D].北京:北京航空航天大學,2011.
[4] D Firesmith. Engineering safety requirements,safety constraints, and safety-critical requirements[J]. Journal of Object Technology, 2004,3(3):27~42.
[5] S R Koo,P H Seong,J Yoo,et al. An effective technique for the software requirements analysisof NPP safety-critical systems, based on software inspection, requirements traceability, and formal specification [J]. Reliability Engineering & System Safety,2005,89(3):248~260.
[6] 李震,劉斌,苗虹等. 基于劃分軟件安全Petri網的需求形式化驗證[J]. 系統工程與電子技術,2012,34(9):1966~1972.
[7] J Hill,S Tilley. Creating Safety Requirements Traceability for Assuring and Recertifying Legacy Safety-Critical Systems [M]. IEEE,2010. 297~302.
[8] N G Leveson. Safeware:System Safety and Computers [M]. Boston:Addison-Wesley,1995. 395~485.
[9] GJB/Z 102A-2012 軍用軟件安全性設計指南[S].2012.
[10] NASA-STD-8719.13B NASA Software Safety Standard[S].
[11] GJB/Z 142-2004 軍用軟件安全性分析指南[S].2004.
[12] IEEE Std 1012-2004,IEEE Standard for Software Verification and Validation[S].
T-65
C
1003-6660(2017)03-0041-06
10.13237/j.cnki.asq.2017.03.010
[收修訂稿日期] 2017-03-23
(編輯:勞邊)