李雪飛 李海峰
(中國航空綜合技術(shù)研究所,北京 100028)
軟件安全性設(shè)計的分析驗證要求研究
李雪飛 李海峰
(中國航空綜合技術(shù)研究所,北京 100028)
立足軟件設(shè)計階段,對關(guān)鍵軟件進(jìn)行安全性分析驗證,提出了軟件安全性設(shè)計的分析驗證模型,并依據(jù)模型明確安全性設(shè)計的分析驗證要求,最終給出了安全性檢查單。為后續(xù)的綜合分析驗證提供驗證目標(biāo),從而提高軟件和系統(tǒng)的整體安全性。
軟件安全性;安全性設(shè)計;分析驗證要求;檢查單
計算機應(yīng)用范圍的快速擴展導(dǎo)致研制系統(tǒng)復(fù)雜度激增,軟硬件密切耦合,軟件的規(guī)模、復(fù)雜度及其在整個系統(tǒng)中的功能比重急劇上升,導(dǎo)致軟件安全性問題日益突出[1]。
引起系統(tǒng)安全的軟件問題的原因可分為如下4種:1)軟件自身設(shè)計/編碼沒有按照需求正確實現(xiàn)系統(tǒng)要求的功能或是采用了錯誤的設(shè)計參數(shù)、運行數(shù)據(jù)等;2)軟件需求錯誤/遺漏;3)軟件運行支撐環(huán)境出現(xiàn)故障;4)與軟件輸入信號相關(guān)的傳感器、傳輸線路或硬件輸入接口等發(fā)生故障[1]。其中1)的一個重要因素就是軟件的設(shè)計錯誤。目前針對軟件需求階段有很多方法和技術(shù)保證其安全性需求的完整和準(zhǔn)確[2~7],如何將獲取到的安全性需求完整、一致并準(zhǔn)確的在設(shè)計階段得到實現(xiàn),是我們面臨的又一重要難題。
本文從軟件分析驗證的模型入手,明確軟件安全性設(shè)計分析驗證的整體范圍,全面、系統(tǒng)的闡述了軟件安全性設(shè)計的驗證要求,為后續(xù)針對安全性設(shè)計的綜合驗證打下基礎(chǔ)。
1986年美國軟件安全性領(lǐng)域著名學(xué)者Nancy G.Leveson給出了軟件安全性的定義:“軟件安全性涉及確保軟件在系統(tǒng)環(huán)境中運行而不產(chǎn)生不可接受的風(fēng)險,軟件安全性是軟件運行不引起危險和災(zāi)難的能力”[8]。這是業(yè)內(nèi)公認(rèn)的經(jīng)典定義。
除此之外,GJB/Z 102A-2012《軍用軟件安全性設(shè)計指南》中對軟件安全性定義為:“軟件運行不引起系統(tǒng)事故的能力”[9]。
NASA-STD-8719.13B《軟件安全性標(biāo)準(zhǔn)》[10]認(rèn)為軟件安全性分析是指在整個軟件生存周期中應(yīng)用系統(tǒng)安全性工程技術(shù),以確保那些可能降低系統(tǒng)安全性的錯誤得到消除或者控制到某個可接受的風(fēng)險級別。
GJB/Z 142-2004《軍用軟件安全性分析指南》認(rèn)為軟件安全性分析是對和軟件安全性相關(guān)的特定信息進(jìn)行的系統(tǒng)而有序的獲取和評價過程[11]。在此,軟件安全性分析驗證主要針對的是評價。
軟件安全性設(shè)計分析驗證實際就是在軟件的設(shè)計階段進(jìn)行安全性分析驗證。
GJB/Z 142-2004《軍用軟件安全性分析指南》[11]將設(shè)計分為結(jié)構(gòu)設(shè)計和詳細(xì)設(shè)計。并指出軟件結(jié)構(gòu)設(shè)計安全性分析是將全部軟件安全性需求綜合到軟件的結(jié)構(gòu)設(shè)計中,確定結(jié)構(gòu)中與安全性相關(guān)的部分,并評價結(jié)構(gòu)設(shè)計的安全性,以保證軟件安全功能的安全完整性的過程;軟件詳細(xì)設(shè)計安全性分析則是分析軟件的設(shè)計和實現(xiàn)是否能以相應(yīng)的軟件安全性級別滿足軟件安全性需求,并保證設(shè)計和實現(xiàn)是可分析、可驗證,同時能夠安全修改的一個過程。
如同測試驗證實施前首先要明確測試需求一樣,對航空關(guān)鍵軟件進(jìn)行安全性分析驗證,首先應(yīng)明確分析驗證的要求,也可稱之為安全性分析驗證的任務(wù)。
IEEE Std 1012-2004《IEEE軟件驗證與確認(rèn)標(biāo)準(zhǔn)》(IEEE Standard for Software Verification and Validation)[12]是由軟件工程標(biāo)準(zhǔn)化協(xié)會發(fā)布的隸屬系統(tǒng)工程學(xué)科的一個技術(shù)標(biāo)準(zhǔn),作為一個過程標(biāo)準(zhǔn),它貫穿了整個軟件壽命周期(獲取、供應(yīng)、開發(fā)、運行和維護(hù)),并且能夠與所有的生命周期模型相兼容。通過IEEE Std 1012-2004,可以明確以下內(nèi)容:
● 建立起驗證與確認(rèn)(Verif ic ation and Validation,V&V)過程、活動和任務(wù)的一個通用框架,來支持包括獲取、供應(yīng)、開發(fā)、運行和維護(hù)在內(nèi)的軟件全壽命周期過程;
● 定義V&V任務(wù),所需的輸入和輸出;
● 識別與軟件完整性級別(共4級)相匹配的最小V&V任務(wù)集;
● 定義一個軟件V&V計劃的應(yīng)有的內(nèi)容。
忙的目的往往是:享受生活、回報父母、滿足愛人,想無私;忙的結(jié)果往往是:享受不了生活、遠(yuǎn)離了父母、冷落了愛人,成自私?!降诪楹味?/p>
在IEEE Std 1012-2004中,V&V模型(或者V&V框架)包含3個維度,即過程維、活動維以及任務(wù)維。過程維是指軟件生存周期的各個過程,包括獲取、供應(yīng)、開發(fā)、運行與維護(hù)。每個過程維都有相對應(yīng)的活動維,即相應(yīng)的V&V活動。不同的V&V活動又有相對應(yīng)的V&V任務(wù),不同的V&V任務(wù)構(gòu)成了任務(wù)維。
其中,過程維中的開發(fā)過程包含與軟件產(chǎn)品有關(guān)的需求分析、設(shè)計、編碼等活動。V&V活動被劃分為概念V&V、需求V&V、設(shè)計V&V、實現(xiàn)V&V等。不同的V&V活動又包含各自的V&V任務(wù)。
圖1是對標(biāo)準(zhǔn)中設(shè)計V&V模型的總結(jié),從圖1中可以看出,設(shè)計V&V活動包含的V&V任務(wù)有可追蹤性分析、關(guān)鍵性分析、接口分析、軟件設(shè)計評價等。設(shè)計V&V的目標(biāo)是要表明設(shè)計是軟件需求的正確、準(zhǔn)確和完整的轉(zhuǎn)化,并且在這過程中沒有引入非預(yù)期的特征。為了保證這些目標(biāo)的實現(xiàn),IEEE Std 1012-2004對每個V&V任務(wù)都提出了相應(yīng)的正確性、完備性、一致性、準(zhǔn)確性、可測試性等任務(wù)要求。由此可以發(fā)現(xiàn),在確定設(shè)計V&V的任務(wù)維后,通過目標(biāo)分解(如正確性、一致性、完備性等,為了簡化圖形未對所有任務(wù)及目標(biāo)展開)可以提出不同目標(biāo)下的驗證要求。參照圖1軟件設(shè)計驗證模型中的任務(wù)框架及驗證要求分解思路,可以制定適合軟件安全性設(shè)計的任務(wù)維,并根據(jù)目標(biāo)分解獲得軟件安全性設(shè)計的分析驗證要求。
通過對軟件驗證模型(圖1)進(jìn)行分析可知,構(gòu)建軟件安全性設(shè)計的分析驗證模型應(yīng)首先明確其任務(wù)維。由于安全性設(shè)計分析驗證屬于軟件驗證的范疇,其任務(wù)維的制定必須覆蓋軟件驗證任務(wù)維中對安全性的考慮,因此可以根據(jù)安全關(guān)鍵軟件開發(fā)過程的特點從軟件驗證任務(wù)維中確定安全性相關(guān)的任務(wù)維,從而保證設(shè)計階段安全性驗證任務(wù)維的完整性與獨特性。
根據(jù)IEEE Std 1012-2004,軟件設(shè)計可以分為軟件結(jié)構(gòu)(概要)設(shè)計和軟件詳細(xì)設(shè)計,表1分別對兩個設(shè)計階段的安全性分析從所需輸入、輸出以及各自任務(wù)維3個方面進(jìn)行了比較。
表1 結(jié)構(gòu)設(shè)計與詳細(xì)設(shè)計安全性分析對比
參照設(shè)計V&V驗證模型中驗證要求的分解過程,對以上2個階段的每類任務(wù)都從正確性、一致性、完整性、準(zhǔn)確性、可測試性等任務(wù)目標(biāo)出發(fā)進(jìn)行分解,進(jìn)而可以獲得軟件安全性設(shè)計分析驗證的要求。最終,本文提出了軟件安全性設(shè)計分析驗證模型,如圖2所示。
模型明確了安全關(guān)鍵軟件開發(fā)過程(過程維)中軟件安全性設(shè)計驗證(活動維)的任務(wù)維、任務(wù)目標(biāo)以及分析要求。本文后續(xù)會描述依據(jù)圖2所示模型建立起來的分析驗證總體要求與詳細(xì)要求。
在軟件安全性分析驗證模型中,對2個設(shè)計階段中每類安全性設(shè)計分析驗證任務(wù)分別從正確性、一致性、完整性、準(zhǔn)確性、可測試性、可讀性6個目標(biāo)角度提出分析驗證要求,即形成了軟件安全性設(shè)計分析驗證要求。由于任務(wù)特點各異,不同的分析任務(wù)具有不同的驗證目標(biāo),本文參照IEEE Std 1012-2004,結(jié)合各個安全性設(shè)計分析驗證任務(wù)的特點,確立了如表2和表3所示的軟件結(jié)構(gòu)設(shè)計和軟件詳細(xì)設(shè)計2個階段的安全性分析驗證要求。
表2 軟件結(jié)構(gòu)設(shè)計安全性分析驗證要求
表3 軟件詳細(xì)設(shè)計安全性分析驗證要求
在軟件結(jié)構(gòu)(概要)設(shè)計階段,考慮安全性應(yīng)重點進(jìn)行的分析驗證包括但不限于[10]:
定時、吞吐量和規(guī)模的余量設(shè)計的分析驗證。確保有關(guān)軟件模塊的存儲量、輸入輸出通道的吞吐能力以及處理時間要求,并保證滿足系統(tǒng)規(guī)定的余量要求;要結(jié)合具體的被控對象確定各種周期,當(dāng)各種周期在時間軸上安排不下時,應(yīng)采用更高性能的CPU或多CPU并行處理來解決,以保證軟件的工作時序之間留有余量。
硬件失效引起的軟件失效的分析驗證。應(yīng)充分分析接口的各種可能故障,包括軟硬件之間的接口,并確保有相應(yīng)的應(yīng)對措施。例如,軟件應(yīng)能識別合法的及非法的外部中斷,對于非法的外部中斷,軟件應(yīng)能自動切換到安全狀態(tài)。
在軟件詳細(xì)設(shè)計階段,考慮安全性應(yīng)重點進(jìn)行的分析驗證包括但不限于[10]:
對容錯和容失效設(shè)計的分析驗證。應(yīng)驗證安全關(guān)鍵的部件完全獨立于非安全關(guān)鍵的部件,還應(yīng)能夠既檢測出自身內(nèi)部的錯誤,又不允許將錯誤傳遞下去。
除此之外,還應(yīng)該驗證軟件必須有對異常保護(hù)的設(shè)計。應(yīng)確保設(shè)計中有相應(yīng)的保護(hù)措施來應(yīng)對軟件運行過程中各種可能的異常情況;并保證異常處理措施可以使軟件和系統(tǒng)轉(zhuǎn)入安全狀態(tài),保存異常出現(xiàn)的現(xiàn)場信息。
本文的研究目的不僅在于構(gòu)建軟件安全性設(shè)計驗證模型與明確分析要求,也希望通過制定合理的、可操作的分析流程來驗證分析要求,從而在實際工程中真正推動安全性分析驗證工作。為了能夠表述分析要求,同時借助分析要求確定分析流程以及引導(dǎo)安全性分析,本文建立了基于分析驗證要求的安全性檢查單,如圖3所示。
安全性檢查單不僅描述了本文提出的分析驗證要求,同時,為后續(xù)安全性分析驗證流程的制定以及分析工作的實施提供了指導(dǎo)思路。最終,依據(jù)分析驗證要求,設(shè)計了6份安全性檢查單。表4給出了其中一份安全性分析驗證檢查單。
使用如表4所示的安全性分析驗證檢查單來引導(dǎo)分析可以保證分析過程能夠覆蓋本文提出的所有分析要求,可見,安全性檢查單在分析要求與分析流程間構(gòu)建起一座橋梁。分析要求、安全性檢查單與分析流程的關(guān)系可以表示如圖4所示。
表4 安全性分析驗證檢查單
軟件安全性設(shè)計的分析驗證是整個安全性分析驗證過程中不可或缺的一步,而明確其分析要求又是進(jìn)行安全性分析驗證的提前條件。本文首先介紹了軟件設(shè)計安全性分析驗證的相關(guān)概念,并以軟件驗證模型為基礎(chǔ),建立了軟件安全性設(shè)計的分析驗證模型,從而明確了安全性設(shè)計分析驗證的整體范圍;依據(jù)此模型,進(jìn)一步明確安全性設(shè)計分析驗證的要求;最后,給出了分析驗證要求的一種表現(xiàn)形式,即安全性檢查單。檢查單的建立,不僅使得分析驗證更加容易操作,而且還可以引導(dǎo)后續(xù)分析工作的實施流程。
明確軟件安全性設(shè)計的分析驗證要求只是一個開始,后面還要依據(jù)這份要求對不同的分析驗證方法和技術(shù)進(jìn)行分類、整理和選取,最終得到一套完整的軟件安全性設(shè)計的分析驗證方法,從而保證軟件在設(shè)計階段的安全性,提高軟件和系統(tǒng)的整體安全性。
[1] 周新蕾,宋星,林佳等. 軟件安全性分析在運載火箭上的應(yīng)用[C]. 第7屆國際可靠性、維修性、安全性學(xué)術(shù)會議論文集. 北京:中國宇航出版社,2007.
[2] D G Firesmith. A Taxonomy of safety-related requirements [J]. Requirements Engineering,2004,23(4):327~331.
[3] 李震. 軟件安全性需求形式化建模和驗證[D].北京:北京航空航天大學(xué),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網(wǎng)的需求形式化驗證[J]. 系統(tǒng)工程與電子技術(shù),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 軍用軟件安全性設(shè)計指南[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
(編輯:勞邊)