顧濱兵 李海浩 王勇利
摘要 裝備軟件的安全性是裝備安全的重要內容。軍事裝備軟件運行在特殊的使用環(huán)境下,從其遇到的安全性問題入手,闡明了軍事裝備的軟件安全性和安全性測試,并分析軍事裝備軟件的相應安全需求。并著重在軟件測試階段,針對性提出測試需求分析、探索建立測試思路和研究具體的測試方法。
【關鍵詞】軟件安全性 安全性測試 需求分析軟件等級
隨著信息技術的不斷發(fā)展,軟件安全性的問題也日益突出。裝備軟件的安全性是裝備安全性的重要內容,安全性也是裝備軟件質量的重要特性。由于應用環(huán)境的特殊性,軍事裝備軟件經常處于應急狀態(tài),對軟件出現不可避免的隨意性、混亂性操作,這些特殊的運行特點,決定了裝備軟件中各種信息關系更為復雜,在安全性上要求更高、更為脆弱,如果程序處理不當,將極有可能導致安全問題的發(fā)生,因此裝備軟件的安全性測試顯得尤為重要。
因此必須研究軟件測試針對性的手段方法,解決目前軟件測試中安全性測試及評判理論缺乏等問題,形成系統(tǒng)成熟的對裝備軟件安全性的測試及評估方法,促進裝備軟件的安全性能力設計與實現水平的提高,來保證其能夠被“放心”地使用。
1 裝備軟件的安全性
(1) MicroSoft對軟件安全性的定義是:對應用程序及其數據提供安全的能力稱為安全性。
(2) GJB/Z 102A-2012中定義的軟件安全性采用了Nancy教授于1986年提出的:軟件運行不引起系統(tǒng)事故的能力。GJB5236-2004《軍用軟件質量度量》對其概念進行了細化:安全性是指軟件產品在指定使用周境下,達到對人類、業(yè)務、軟件、財產或環(huán)境造成損害的可接受的風險級別的能力。
(3)也有人從軟件實體可信屬性的角度將安全性定義為:指軟件系統(tǒng)對數據和信息提供保密性、完整性、可用性和真實性保障的能力,具體包括機密性,即軟件系統(tǒng)中的信息不被非法用戶所獲取;完整性,即軟件系統(tǒng)中的信息不被非法篡改。
軟件代碼本身不具備直接造成災難性事故或者重大損失的能力,但可通過系統(tǒng)的傳導產生較為嚴重的后果。定義1和定義3更偏重于軟件本身的能力和后果,而定義2雖然簡略,但更全面地表達出軟件的安全性所包含兩層含義:
(1)軟件自身運行避免出現失效,不引起系統(tǒng)事故的能力;
(2)軟件為了避免由于缺陷所導致不可接受風險的能力。
以直升機快速回收軟件舉2個例子:
(1)為了具有對重要數據(如回收參數)進行保護和備份的能力,避免非法訪問所做的密碼、權限等的設置,都是保證安全性的措施,但是對數據非法訪問不一定會造成人員傷害、直升機損壞,即使有這樣的風險,上面的安全性措施也不對這樣的風險進行處理;
(2)軟件運行不當,可能導致直升機駕駛員、相關艦面人員傷亡,直升機、相關保障設施損壞,為了避免這樣的風險所作的防護、保護、應急處理等是保證安全性的另一類措施。這樣的情況有可能是數據被非法訪問所導致的,也有可能是正常操作導致的。所以這兩類安全性的措施和具有的能力是不同的。
從以上的例子可以看出,相比于軟件應該做什么,軟件安全性更加關注軟件不應該做什么。程序開發(fā)者為了保證軟件的安全性,必須在正常功能外,加入額外的代碼來實現確保安全性的相關措施。
2 裝備軟件的安全性測試
實際上,在當前軟件工程思想中,軟件分析、設計和實現的過程,同時伴隨著軟件測試。MicroSoft對軟件安全性測試的定義是:有關驗證應用程序的安全服務和識別潛在安全性缺陷的過程。裝備軟件相關測試標準中的安全性測試是檢驗軟件中已存在的安全性、安全保密性措施是否有效的測試,是保證系統(tǒng)安全性的重要手段。
安全性測試并不最終證明應用程序是安全的,而是只用于驗證所設立對策的有效性,這些對策是基于威脅分析階段所做的假設而選擇的。還以上面的直升機快速回收軟件為例,如果該軟件從需求分析、設計到實現過程中沒有對重要數據進行保護和備份,而導致數據被非法訪問,這是需求不充分所導致的,但如果有這樣需求,安全性措施未設計實現或失效,這是安全性測試要發(fā)現的問題。
3 裝備軟件安全性測試的一般思路
對于軍事裝備來說,安全性測試主要面向的是安全性措施,而安全性措施來源于安全性需求。以下是從安全性需求到安全性測試需求的過程:
首先根據裝備的安全性、關鍵性要求確定裝備軟件等級,一般分為A、B、C、D四個等級。項目需求人員結合項目應用背景提出安全性要求,然后由軟件需求人員根據安全性要求,轉化為軟件安全性需求,這些提出的安全性要求及安全性需求一定要符合之前確定的軟件等級,如將軟件等級確定為A,就一定要提出防止人員死亡或系統(tǒng)報廢的安全性要求和需求。然后根據軟件應用領域所積累的安全防護經驗,完善軟件安全性需求,由設計人員根據軟件安全性需求,結合具體技術實現手段轉化為軟件安全性設計,最后由編碼人員完成最終的代碼編寫。
在軟件測試階段,測試人員對照系統(tǒng)及軟件技術文檔檢查軟件需求、軟件設計中的安全性描述,并據此進行安全性測試。
對照軟件安全性測試的定義,裝備軟件安全性測試的指導思想為:
(1)明確軟件需要保護什么東西,如操作的人、使用的電子設備、飛行器等;
(2)明確軟件要禁止哪種危險狀態(tài)發(fā)生,如程序失效、錯誤或意料外的輸出、非法侵入等。
明確了安全性測試的指導思想后,可以進一步明確軍事裝備軟件安全性測試的一般思路,即軟件為保證安全性所作的種種措施,安全性測試就是測試這些措施是否正確有效。
針對指導思想(1)的安全性措施:
1.防止對人的可能瞬間傷害,軟件采取的措施,如避免引發(fā)裝備爆炸、飛機墜落;
2.防止對人的長期損害,軟件采取的措施,如避免電磁長期照射、屏幕閃爍引發(fā)職業(yè)病;
3.防止對關聯(lián)系統(tǒng)的損壞,軟件采取的措施,如直升機回收設施軟件應盡量考慮避免可能造成對直升機的損壞;
4.對自身系統(tǒng)的破壞,軟件采取的措施,如為防止電流過大而燒毀自身電路所做的軟件設計;
5.用戶登錄及相關權限的處理來保護系統(tǒng),防止系統(tǒng)被蓄意或無意的破壞;
6.防止被非法侵入后竊取、篡改數據等所做的軟件數據安全處理;
7.確保重要數據的完整性、有效性所做的備份、恢復、管理等;
8.確保重要數據的機密不被泄漏而作的保密機制;
針對指導思想(2)的安全性措施:
1.禁止用戶非正常登錄或非法得到及使用權限;
2.防止程序非正常失效所作的監(jiān)視、檢測,以及失效后的處理(重啟、復位)等;
3.防止被非授權攻擊、漏洞攻擊、木馬植入等手段所做的軟件防范性處理;
4.為避免程序異常輸出而采取的軟件措施:
5.為確保不因程序意外故障而導致任務失敗的,軟件恢復、應急功能、降功能使用等臨時措施和應急手段;
6.為應付各種非法侵入、異常操作、快速操作而進行的軟件容忍、恢復處理;
7.為避免軟件或系統(tǒng)在異常條件、復雜環(huán)境下導致故障或非法輸出等而采取的相關措施;
8.對硬件受損后軟件的自我調整、恢復處理。
4 裝備軟件安全性測試的方法
軍事裝備的軟件測試一般分為四個階段,本文從這四個階段描述裝備軟件安全性測試方法及手段。
4.1 測試需求分析與策劃階段
根據軟件等級來考慮安全性需求,進行分析策劃。比如飛機起降引導的軟件就必須考慮由于軟件失效所導致飛機發(fā)生事故的風險,對這種風險回溯到軟件的需求分析、設計和實現階段,就是安全性需求。如果確實在所有的文檔中都沒有這方面的描述,那么有理由去質疑軟件需求分析、設計的合理性,應交由文檔審查強度測試或功能測試來解決,并不是安全性測試的范疇,安全性測試一定是要針對采取了安全性措施的。
4.2 測試設計階段
軟件安全性測試主要集中在以下三個方面:
(1)程序運行安全;
(2)網絡及通信環(huán)境安全;
(3)數據安全。
在這一階段要確定整個軟件中的安全性關鍵部件,重點加以測試,從以下三方面的因素綜合加以考慮:
(1)根據軟件的實際使用背景確定軟件的核心部件尤其是那些必須確保安全可靠的核心部件;
(2)根據對軟件設計、開發(fā)的掌握,分析軟件可能存在隱患和漏洞,梳理出防范隱患和漏洞處理的相關實現部分;
(3)評估安全風險,對安全風險高的處理代碼進行識別。
在這一階段,如果條件允許,可以先結合自身的安全性測試技術和工具對關鍵代碼進行靜態(tài)分析、代碼審查等先期工作,及早發(fā)現軟件安全性方面的問題。
在安全性測試中不要照搬軟件需求文檔中的安全性描述,文檔中不但存在需求不充分的問題,對安全性需求也常常描述不足,在這一階段最重要的是挖掘隱含的安全性需求,并對其開展測試設計。
比如:飛機降落時3個起落架都放下剎車(不滿足則不剎車,復飛)。在文檔描述中出現了未考慮的需求(如迫降)。
如描述:三個都放下、剎車;沒有都放下,不剎車。
而忽略了不正常的需求:前起落架沒放下;后起落架沒放下。
再舉兩個例子:
(1)對“O”、穿越“0”以及從兩個方向趨近于“O”的輸入值的測試。
首先要分析這個“0”是否是可能導致安全性隱患的關鍵點,是否進行了特殊處理。如果某電源控制器軟件能處理-10V到+10V電壓數據,該軟件處理的-10- 10的連續(xù)數據,ov不是一個關鍵點,也沒有特殊的安全性處理措施,就沒有必要進行安全性測試。對OV作這樣的測試是沒有意義的。
而又如對于飛機飛行管理中凌晨零點零分由于涉及跨天操作,是一個關鍵點,就需要對零點零分,穿越零點零分(從第一天到第二天),分別從第一天的23: 59和第二天的0:01分分別趨向于零點零分進行測試。
(2)對雙工切換、多機替換的正確性和連續(xù)性的測試。
比如雙網卡的切換,最起碼不能只關注軟件是否正常運行,最起碼要在大數據量傳輸的情況下,還要完成分析切換是否丟失數據、丟失多少數據,丟失的數據對功能有無影響等多項測試工作。對于在多機系統(tǒng)出現故障或數據備份切換時,要記錄并比較發(fā)生故障或切換前后軟件的功能、數據是否完整、一致,而不能只看軟件能夠正常運行。
4.3 測試執(zhí)行階段
在測試執(zhí)行階段,裝備軟件的安全性測試要采用實際的測試技術、測試工具和測試方法對軟件的安全性保密性措施是否有效進行測試。除了通用的黑盒測試方法和白盒測試方法,安全性測試方法還主要采用基于猜錯法的測試、基于故障樹的測試、基于接口語法的軟件安全性測試、基于安全漏洞的檢測技術、形式化安全性測試等。在此階段,可以在前期分析設計的基礎上根據被測軟件的實際情況和安全性需求綜合采用各種方法手段。
4.4 測試總結階段
按照指標體系來確定軍事裝備軟件安全性的評價需求、設計軍事裝備軟件安全性的評價規(guī)格說明模板,明確評價范圍,制定評價計劃模板,提出裝備軟件安全測試充分性評價的層次分析模型,結合裝備軟件的特性,定義了裝備軟件安全測試充分性評價函數。通過該模型對基于裝備軟件安全性測試效果進行評估,并對裝備軟件的安全性進行評價。
5 結束語
安全性是軍事裝備軟件質量的重要特性。經過多年的軟件工程實踐,軟件測試己成為驗證軟件功能性和安全性的重要手段。通過軍事裝備軟件的安全性測試可有效提升軟件的安全性。從安全性需求的提出、實現到安全性測試的分析設計,軍事裝備軟件的安全性測試是一個系統(tǒng)性、全壽命周期的質量活動,只有考慮軟件研制全過程,并將安全性分析和實際測試手段結合起來,才能從根本上提高軍事裝備軟件的安全性。
參考文獻
[1]總裝備部電子信息基礎部標準化研究中心,軍用軟件工程系列標準實施指南[M].北京:航空工業(yè)出版社,2006 (129).
[2] Haralambos Mouratidis編著,米磊,趙鎧譯,軟件安全性理論與實踐[M].北京:電子工業(yè)出版社,2015 (11).
[3]朱少民著.全程軟件測試[M].北京:電子工業(yè)出版社,2014 (25).
[4]何鑫,鄭軍,劉暢.軟件安全性測試研究綜述[J],計算機測量與控制,2011,19 (03): 493-496
[5] GJB/Z 102A-2012軍用軟件安全性設計指南,
[6] GJB/Z 141-2004軍用軟件測試指南.