序言
當前隨著社會經濟的發展和科學技術的進步,計算機的應用日益廣泛,人們不但直接使用了從微型計算機、平板電腦、智能手機直到超級計算機的不同信息與計算工具,而且在生產裝備、運輸工具甚至家庭生活用具中也嵌入了各式各樣的計算裝置。互聯網的日益普及主要得益于計算機的應用,在現代生活和工作中人們享受著計算機帶來的巨大效益和便利,與此同時對計算機安全工作的依賴性也日益增加。計算機在安全方面的問題不但會影響到生產和生活的正常運行,有時候甚至造成人身傷亡、裝備損毀等重大事故,因此近年來人們對日益嚴重的計算機系統的安全問題開始密切重視。
在計算機系統的硬件和軟件兩個方面,人們歷來重視的是硬件方面的安全性和可靠性,而對比較隱蔽的軟件安全性卻關注得不夠。但是許多安全事故卻是出在軟件方面,發生在20世紀90年代的Ariane 5運載火箭、SOHO太空飛船等五起航天器事故的罪魁禍首就是軟件,而通過軟件安全事件每年給全球造成的經濟損失已經高達4500億美元。因此近年來人們開始以很大的注意力關注軟件的安全性問題,因為這不僅影響到個人或者企業自身,而且已經上升到國家安全的高度。
軟件的安全性可以理解為軟件在系統中運行不至于在工作中造成不可接受的風險(如人身傷亡、設備損壞、財產重大損失、嚴重污染環境等)的能力。為構建這種能力,人們采取了一系列的方法和技術,逐步形成了計算機軟件安全的理論。
為了提高軟件的安全性,在軟件的開發過程中就應該對安全問題加以認真考慮,由此近年來逐步形成了軟件安全開發的概念和方法。由于這是一個新的領域,有關的方法和技術還局限于某些具體應用,尚缺少比較系統介紹的著作,本書正是為了填補這一空白而撰寫的。
本書作者在書中一開始先介紹了軟件安全的基本概念,對軟件安全的基本屬性進行了深入細致的描繪,分析了軟件安全實現的基本方法,對屬性驅動的軟件安全開發方法的基本思想進行了闡述。然后利用系統工程思想將安全屬性嵌入軟件開發的整個生命周期。在回顧軟件開發方法的演化過程和對各種方法進行對比的基礎上,提出了屬性驅動的軟件安全開發的基本方法和過程。在總攬全局的基礎上,依次詳盡地探討了軟件安全需求分析、軟件安全保障設計、軟件安全編碼、軟件安全性測試問題。全書貫穿了系統工程整體性和有序性的理念和方法而又不失對技術細節的闡述,形成了本書的特點。
由于軟件安全開發方法涉及的學科比較多,涵蓋了多方面的技術細節,因此建立系統的開發理論和方法體系是一項艱苦的工作。深切希望本書作者能在這本著作的基礎上進一步深入探索,以滿足日益增長的軟件安全開發的要求。