軟件系統造成災難性事故的可能性引起了國際上對軟件安全需求的高度重視。這類一旦發生故障就可能危及人類生命、財產和生存環境的軟件稱為“安全第一”軟件,這類軟件的安全需求的確保是至關重要的。為了保證“安全第一”軟件的安全需求得到滿足,人們提出多種法律和管理措施,制定保證軟件安全需求的生產、使用和維護規范與標準。
定義軟件安全需求首先要識別軟件可能引發的相關危險,其次要分析歷史安全數據和當下面臨的安全風險,對危險進行評估后,結合歷史安全數據,以最小化風險為原則,提出安全需求。具體的安全需求包括:對存在安全危險的系統組件、操作和資產提出隔離及監控需求,對危害人員生命安全提出風險最小化需求,對所有可能的意外狀況提出檢測與分析需求,對安全關鍵設備提出保護及冗余需求,對設計方案的提出可選與評估需求,以及對安全提出評審和分析的需求。
根據軟件故障導致損失的嚴重程度,安全需求按照四個等級進行定義。如果一個軟件控制的系統失敗會造成大量人員喪失生命,生產設備或交通設施的完全摧毀和造成巨大的經濟損失,那么,安全需求應定義為最高等級。如果安全事故會造成人員喪失生命和傷亡,部分生產設備嚴重損壞且造成大量的經濟損失,那么,安全需求應定義為重要等級。如果安全錯誤會造成人員受傷以及一定限度內的能夠盈利的生產設備和交通設施損失,那么,安全需求應定義為較高等級。如果沒有明確的安全損失描述,那么,安全需求可定義為較低等級。
信息安全(security)需求面向信息和信息系統,提出防止未經授權的訪問、使用、泄露、中斷、修改或破壞的目標和期望。信息安全需求的提出是由于計算機互聯程度持續提高,越來越多的組織和個人高度依賴信息技術和通信,在遭受攻擊和入侵后,造成信息泄密、篡改或銷毀。信息安全需求需要考慮如下三個方面:①安全攻擊。危及軟件利益相關組織信息安全的行為。②安全機制。用于檢測、提升或恢復安全性的機制。③安全服務。加強軟件利益相關組織能夠安全使用軟件、處理數據和傳送信息的服務。
信息安全需求是選擇安全產品和制訂安全策略的基礎,基于中斷、截獲、篡改和偽造等攻擊行為,信息安全需求定義為機密性、真實性、完整性、不可抵賴性、訪問控制及可用性。①機密性需求針對被傳輸的數據,提出免受被動攻擊的需求,要求一個計算機系統中的信息和被傳輸的信息僅能被授權方讀取。機密性需求的另一個方面是保護通信量免受分析,包括通信源、目的、頻度、長度等都不能被分析。②真實性需求關注通信雙方及通信信息的可信性需求,確保一個消息的來源或電子文檔被正確地標識,同時確保該標識沒有被偽造。③完整性需求要求接收到的信息沒有冗余、插入、篡改、重排序或延遲,且要求僅是被授權的各方才能修改信息的內容,修改包括寫、改變狀態、刪除、創建等。完整性需求與主動攻擊有關,所以,滿足完整性需求重點關注檢測而不關注預防。如果檢測到完整性破壞,則需要報告破壞,在其他軟件或人工干預下,從破壞中恢復。④不可抵賴性需求要求發送方和接受方都不能夠抵賴所進行的信息傳輸。當發送信息時,接收方能夠證實該信息的確是由所宣稱的發送方發送的。類似地,當接收信息時,發送方能夠證實該信息的確是由所宣稱的接收方接收的。⑤訪問控制需求要求對信息源的訪問必須是被限制的,每個試圖得到訪問的實體必須進行身份識別并基于訪問權進行訪問。⑥可用性需求要求資源在需要時可為授權各方使用,可用性需求的實現從加強信息保護及采取物理保護兩方面來防止可用性喪失或恢復可用性。