1.4 軟件安全的研究內容
軟件安全涉及的主要方法和技術是本書的主要研究內容,本節先來做一概要介紹。
1.4.1 軟件安全是信息安全保障的重要內容
1.信息保障的概念
1996年,美國國防部(DoD)在國防部令《DoD Directive S-3600.1:Information Operation》中提出了信息保障(Information Assurance,IA)的概念。其中對信息保障的定義為:通過確保信息和信息系統的可用性、完整性、保密性、可認證性和不可否認性等特性來保護信息系統的信息作戰行動,包括綜合利用保護、探測和響應能力以恢復系統的功能。
1998年1月30日,美國國防部批準發布了《國防部信息保障綱要》(Defense Information Assurance Program,DIAP),認為信息保障工作是持續不間斷的,它貫穿于平時、危機、沖突及戰爭期間的全時域。信息保障不僅能支持戰爭時期的國防信息攻防,而且能夠滿足和平時期國家信息的安全需求。
由美國國家安全局NSA提出的,為保護美國政府和工業界的信息與信息技術設施提供的技術指南《信息保障技術框架》(Information Assurance Technical Framework,IATF),提出了信息基礎設施的整套安全技術保障框架,定義了對一個系統進行信息保障的過程及軟硬件部件的安全要求。該框架原名為網絡安全框架(Network Security Framework,NSF),于1998年公布,1999年更名為IATF,2002年發布了IATF3.1版。
IATF從整體和過程的角度看待信息安全問題,其核心思想是“縱深防護戰略(Defense-in-Depth)”,它采用層次化的、多樣性的安全措施來保障用戶信息及信息系統的安全,人、技術和操作是3個核心因素,包括主機、網絡、系統邊界和支撐性基礎設施等多個網絡環節中,如何實現保護(Protection)、檢測(Detection)、響應(Reaction)和恢復(Restore)有機結合的動態技術體系,這就是所謂的PDRR(或稱PDR2)模型,如圖1-3所示。

圖1-3 PDRR模型
IATF定義了對一個系統進行信息保障的過程,以及該系統中硬件和軟件部件的安全需求。遵循這些原則,可以對信息基礎設施進行縱深多層防護。縱深防護戰略的4個技術焦點領域如下。
●保護網絡和基礎設施:主干網的可用性;無線網絡安全框架;系統互連與虛擬專用網(Virtual Private Network,VPN)。
●保護邊界:網絡登錄保護;遠程訪問;多級安全。
●保護計算環境:終端用戶環境;系統應用程序的安全。
●支撐基礎設施:密鑰管理基礎設施/公鑰基礎設施(KMI/PKI);檢測與響應。
信息保障與之前的信息保密、網絡信息安全等階段的概念相比,它的層次更高、涉及面更廣、解決問題更多、提供的安全保障更全面,它通常是一個戰略級的信息防護概念。組織可以遵循信息保障的思想建立一種有效的、經濟的信息安全防護體系和方法。
2.網絡空間安全和信息保障
信息安全已經進入網絡空間安全階段,這已成為共識。網絡空間的安全問題得到世界各國的普遍重視。
網絡空間(Cyberspace)不再只包含傳統互聯網所依托的各類電子設備,還包含重要的基礎設施,以及各類應用和數據信息,人也是構成網絡空間的一個重要元素。
網絡空間安全(CyberSecurity)不僅關注傳統信息安全研究的信息的保密性、完整性和可用性,同時還關注構成網絡空間的基礎設施的安全和可信,以及網絡對現實社會安全的影響。
本章【案例1】中,以西門子數據采集與監控系統為攻擊目標的震網病毒神秘出現,伊朗境內包括布什爾核電站在內的5個工業基礎設施遭到攻擊,成為運用網絡手段攻擊國家電力能源等重要關鍵基礎設施的先例。當前,不少國家金融、能源、交通和電力等關鍵業務網絡已基本實現信息化、網絡化,但防護手段還不盡完善,能夠“震顫”伊朗核設施的病毒,同樣也可以“震顫”這些國家工業系統中的相關控制與采集系統,國家重要的戰略網絡面臨著平時被控、戰時被癱的巨大風險。
當前網絡空間信息存在的透明性、傳播的裂變性、真偽的混雜性、網控的滯后性,使得網絡空間信息安全面臨前所未有的挑戰。網絡戰場全球化、網絡攻防常態化等突出特點,使得科學高效地管控網絡空間,成為急需解決的重大課題。
3.軟件安全是信息安全保障的重要內容
軟件在網絡空間信息系統的運行、危險控制及關鍵安全功能實現等方面正發揮著越來越重要的作用,成為系統安全保障、避免重大人員傷亡和財產損失的一個重要環節。
信息安全保障是建立在傳統的系統工程、質量管理和項目管理等基礎之上的,廣義的信息安全保障涉及信息系統和信息系統安全保障領域所特定的技術知識及工程管理,它是基于對信息系統安全保障需求的發掘和對安全風險的理解,以經濟、科學的方法來設計、開發和建設信息系統,以便能滿足用戶在安全保障方面的需求。
在信息安全保障體系的建設中,首先進行科學規劃,以用戶身份認證和信息安全保密為基礎,以網絡邊界防護和信息安全管理為輔助,為用戶提供有效的、能為信息化建設提供安全保障的平臺。通過在信息系統生命周期中對技術、過程、管理和人員進行保障,確保信息及信息系統的機密性、完整性、可用性、可核查性、真實性、抗抵賴性等,包括信息系統的保護、檢測和恢復能力,以降低信息系統的脆弱性,減少風險。
降低系統脆弱性的最有效方法就是漏洞分析,因此,漏洞分析是信息安全保障的基礎,在信息安全保障中占據核心地位。整個信息安全保障模型是一個以風險和策略為基礎,包含保證對象、生命周期和信息特征三個方面的模型。主要特點是以安全概念和關系為基礎,強調信息系統安全保障的持續發展的動態安全模型,強調信息系統安全保障的要求和保證概念,通過風險和策略基礎、生命周期和保證層面,從而使信息系統安全保障實現信息技術安全的基本原則,達到保障組織結構執行使命的根本目標。總之,確保軟件安全是信息安全保障的主要內容。
1.4.2 軟件安全的主要方法和技術
1.軟件安全防護的基本方法
早期開發軟件的首要目標是在效率和成本優先的前提下構造出功能正確的系統,對于可信任性、可用性及安全性等問題的考慮相對較少,尤其在軟件構造理論與方法、構造過程、體系結構和運行環境等方面,沒有建立相應的安全支撐機制,使得軟件在規模增大以后,安全性問題越來越突出。
漏洞是引發信息安全事件產生的根源,軟件漏洞尤其如此。惡意代碼通常也是針對漏洞而編寫出來的,軟件侵權的成功往往跟軟件漏洞也有密切的關系。因此,軟件安全防護圍繞漏洞消除展開,目前有兩種基本方法。
1)采用多種檢測、分析及挖掘技術對安全錯誤或是安全漏洞進行發現、分析與評價,然后采取多種安全控制措施進行錯誤修復和風險控制,如傳統的打補丁、防病毒、防火墻、入侵檢測和應急響應等。
這種將安全保障措施置于軟件發布運行之時是當前普遍采用的方法。歷史經驗證明,該方法在時間和經濟上投入產出比低,信息系統的安全狀況很難得到有效改善。本章前面對于當前軟件安全問題的現狀分析表明了這點。
2)分析軟件安全錯誤發生的原因,將安全錯誤的修正嵌入到軟件開發生命周期的整個階段。通過對需求分析、設計、實現、測試、發布及運維等各階段相關的軟件安全錯誤的分析與控制,以期大大減少軟件產品的漏洞數量,使軟件產品的安全性得到有效提高。
該方法是將安全保障的實施開始于軟件發布之前,尤其強調從軟件生命周期的早期階段開始安全考慮,從而減少軟件生命周期的后期系統運行過程中安全運維的工作量,提高安全保障效果。實踐經驗表明,從系統開發需求階段就引入安全要素要比在系統維護階段才考慮安全問題所花費的錯誤修復成本要低很多。
2.軟件安全防護的主要技術
現有關于軟件安全的技術主要包含軟件安全屬性認知、信息系統安全工程及軟件安全開發三個方面。
(1)軟件安全屬性的認知
安全是一個整體性的概念。根據國家標準《軟件工程 產品質量 第1部分 質量模型》(GB/T 16260.1—2006),軟件安全既離不開它所存儲、傳輸、處理的數據的安全,也離不開相關文檔的安全,因此軟件安全應涵蓋數據及其信息處理過程本身的三個基本安全要素:保密性、完整性和可用性;同時軟件需要接收外界信息輸入才能實現預期的功能產生輸出結果,信息來源的安全性必然成為軟件安全重要的組成部分。基于這些分析,本書將保密性、完整性、可用性、認證性、授權和可審計性作為軟件安全的核心屬性;而軟件自身的實現質量,即軟件產品包含的漏洞情況也應該是軟件安全性的主要內容,因為這些漏洞會直接導致安全性問題,這也是傳統的軟件安全關注的問題;此外,站在不同的管理者視角,抗抵賴性、可信性、可控性、可靠性及軟件彈性等也成為軟件被關注的其他安全屬性。
(2)系統安全工程
系統安全工程是一項復雜的系統工程,需要運用系統工程的思想和方法,系統地分析信息系統存在的安全漏洞、風險、事件、損失、控制方法及效果之間復雜的對應關系,對信息系統的安全性進行分析與評價,以期建立一個有效的安全防御體系,而不是簡單的安全產品堆砌。
確切地說,系統安全工程是系統的安全性問題而不僅是軟件產品的安全性問題,是一種普適性的信息系統安全工程理論與實踐方法,可以用于構建各種系統安全防御體系。系統安全工程可以在系統生命周期的不同階段對安全問題提供指導,例如,對于已經發布運行的軟件,可以采用系統測試、風險評估與控制等方法構建安全防御體系;而對于尚待開發的系統,也可以應用系統安全工程的思想方法來提高目標系統的安全性。這是一項具有挑戰性的工作,也是本書的出發點。
(3)軟件安全開發
漏洞是引發信息安全事件的根源,而軟件漏洞又是在軟件開發的整個生命周期中引入的。軟件生命周期包括需求分析、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級、廢棄等多個階段,每個階段都要定義、審查并形成文檔以供交流或備查,以此來提高軟件的質量。雖然此類流程嚴格規范,但是由于開發過程中人員經驗不足、開發平臺客觀條件等方面的原因,依然會引入各種類別的安全漏洞。因此,在軟件開發的各個環節中進行漏洞的預防和分析,能夠快速、高效地發現軟件中的安全問題,減少其在后期帶來更大的危害。
一些軟件開發相關的機構和企業意識到了這一情況,紛紛在軟件開發過程的各個階段采取各種措施對開發的軟件進行漏洞分析。微軟、思科等公司推出的安全開發生命周期(Security Development Lifecycle,SDL)就是一套對軟件開發過程進行安全保障的方案,旨在盡量減少設計、代碼和文檔中與安全相關的漏洞的數量。微軟的實踐證明,從需求分析階段開始就考慮安全問題,可以大大減少軟件產品漏洞的數量,而不會增加成本。
軟件安全開發關注的是如何運用系統安全工程的思想,以軟件的安全性為核心,將安全要素嵌入軟件開發生命周期的全過程,有效減少軟件產品潛在的漏洞數量或控制在一個風險可接受的水平內,提高軟件系統的整體安全性。
軟件安全開發方法拋棄了傳統的先構建系統,再將安全手段應用于系統的構建模式,而是保留了采用風險管理、身份認證、訪問控制、數據加密保護和入侵檢測等傳統安全方法,將安全作為功能需求的必要組成部分,在系統開發的需求階段就引入安全要素,同時對軟件開發全過程的每一個階段實施風險管理,以期減少每一個開發步驟中可能出現的安全問題,最終提高軟件產品的本質安全性。
根據軟件開發生命周期的階段劃分,軟件安全開發涉及以下幾個方面的內容。
●軟件安全需求分析。
●軟件安全設計。
●軟件安全編碼。
●軟件安全測試。
●軟件安全部署。
本書將在后續章節中展開介紹以上技術。
小結
本節概述了保障軟件安全的主要方法和技術,它們各有側重和不同。對于軟件安全性的測試和評估主要基于產品的視角,描述產品是什么,它的安全性怎么樣;而系統安全工程與軟件安全開發是基于過程的視角,回答軟件的安全性是如何構建的,軟件安全開發是系統安全工程應用的最高階段,也是解決信息安全問題的最根本途徑。
- INSTANT Mock Testing with PowerMock
- Android Wearable Programming
- Vue.js設計與實現
- Visual Basic .NET程序設計(第3版)
- 零基礎學Java(第4版)
- C語言程序設計
- Drupal 8 Module Development
- Ext JS 4 Web Application Development Cookbook
- Learning Salesforce Einstein
- Oracle Exadata專家手冊
- Learning SciPy for Numerical and Scientific Computing(Second Edition)
- Windows Phone 7.5:Building Location-aware Applications
- Java面向對象程序設計
- C語言程序設計與應用實驗指導書(第2版)
- Java EE項目應用開發