劉湖平 曾紹軍 王欣
[摘要] 利用現代工程的概念、原理、技術和方法進行計算機軟件的開發、管理、維護和更新,即軟件工程的誕生,是計算機軟件生產的里程碑。隨著Internet的普及和快速發展,網絡安全矛盾日益突顯。只有改進傳統的軟件工程過程,提供更為安全可靠的軟件產品,才能減輕威脅,有效遏制網絡犯罪。
[關鍵詞] 安全開發; 生命周期; 軟件工程
[中圖分類號] TP311.5 [文獻標識碼] A [文章編號] 1673 - 0194(2013)07- 0065- 03
1968年NATO(北大西洋公約組織,North Atlantic Treaty Organization)在德國的加米施(Garmish)召開的計算機科學會議,是一次劃時代的會議,正是這次會議誕生了“軟件工程”。它不僅有效緩解了當時日益突出的“軟件危機”,同時為其后軟件生產的輝煌奠定了堅實的理論基礎。然而,在網絡高速發展的今天,傳統的軟件工程實踐已無法實現安全的軟件開發。只有引進新的開發機制,不斷改進傳統的軟件工程過程,才能生產出更為安全可靠的軟件產品。
1 軟件工程基本概念
計算機軟件:與計算機操作有關的程序、規程、規則及任何與之有關的文檔及數據。它由兩部分組成:一是機器可執行的程序及有關數據;二是機器不可執行的,與軟件開發、運行、維護、使用和培訓有關的文檔。
軟件危機:在計算機軟件開發和維護過程中所遇到的一系列嚴重問題。20世紀60年代末至20世紀70年代初的軟件開發,主要依賴個人的“才藝”,而軟件功能的需求越來越強,造成軟件質量(通用性、可移植性)差、維護困難。在一定時間內,人的智力和體力已無法承受。簡單增加開發人員已不能成比例地提高軟件開發能力。為開發和維護軟件而支付的費用已占到設備成本的40%~75%,開發大型軟件一再延時,因此而產生了“軟件危機”。
軟件工程:用工程、數學的原則和科學的方法,研制與維護計算機軟件的有關技術及管理方法。它由方法、工具和過程3部分組成。軟件工程方法是完成軟件工程項目的技術手段,它支持項目計劃與估算、系統與軟件需求分析、軟件設計、編碼、測試與維護。軟件工程使用的軟件工具自動或半自動地支持軟件的開發和管理,支持各種軟件文檔的生成。軟件工程的過程貫穿于軟件開發的各個環節,管理者要對軟件開發的質量、進度、成本進行評估、管理和控制,包括人員組織、計劃跟蹤與控制、成本估算、質量保證、配置管理等。
軟件生命周期:軟件產品從形成概念開始,經過開發、使用和維護,直到最后退役的全過程。它包括軟件定義、軟件開發、軟件使用與維護3個主要部分。對應軟件生命周期的軟件開發模型是經典的瀑布模型(如圖1所示)。它提供了軟件開發的基本框架,有利于大型軟件開發過程中人員的組織、管理,有利于軟件開發方法和工具的研究與使用,從而提高大型軟件項目開發的質量和效率。
2 網絡系統面臨的威脅
網絡時代的互聯互通給我們帶來了前所未有的體驗與便捷,無紙化辦公、電子商務、網絡通信等,正融入我們的日常生活與工作的各個領域。大量有價值的、敏感的數據存儲與流動,使得利益驅使下的犯罪充斥于網絡社會。早在1995年,安全專家Clark和Davis就定義了網絡犯罪成本效益比率:
MbPb > OcpOcmPaPc
Mb——攻擊者的貨幣收益;
Pb——攻擊者的心理收益;
Ocp——實施犯罪的成本;
Ocm——攻擊者的定罪成本;
Pa——攻擊者被緝拿和逮捕的可能性;
Pc——攻擊者被定罪的可能性。
當不等式的左邊大于右邊時,意味著實施攻擊的收益大于成本,犯罪即可能發生。
一方面,如前所述,隨著應用的普及,用戶必然會存儲、處理大量有價值的數據,使得不等式的左邊對攻擊者來說是“堆放金錢的地方”,其值(Mb)會愈來愈大;另一方面,攻擊者被發現和追捕的可能性(Pa)微乎其微,同時,網絡上黑客工具汗牛充棟、唾手可得,實施攻擊無需掌握高難的技術,使得犯罪成本(Ocp)愈來愈小。這樣,使得不等式左邊遠遠大于其右邊,導致網絡系統始終受到嚴重威脅。
據國家互聯網應急中心(CNCERT)發布的《2011年中國互聯網網絡安全報告》披露:
2011年境內木馬或僵尸程序控制服務器IP數量為253 684個,木馬或僵尸程序受控主機IP數量為8 895 123個。
2011年境內被篡改網站數量累計為36 612個。
2011年4-12月監測到境內12 513個網站被植入網站后門,其中政府網站1 167個。
2011年國家信息安全漏洞共享平臺(CNVD)共收集整理并公開發布信息安全漏洞5 547個,其中,高危漏洞2 164個。
2011年,CNCERT共接收國內外報告網絡安全事件15 366起。
2011年3-12月監測到仿冒境內銀行網站的域名有3 841個;仿冒境內銀行網站的服務器IP有667個。
《CNCERT互聯網安全威脅報告》2012年11月的月報稱,僅在1個月內:境內感染網絡病毒的終端數為近466萬個。境內被篡改網站數量為8 253個,其中被篡改政府網站數量為658個;境內被植入后門的網站數量為5 462個,其中政府網站有294個;針對境內網站的仿冒頁面數量為6 399個。
國家信息安全漏洞共享平臺(CNVD)收集整理信息系統安全漏洞729 個,其中,高危漏洞231個,可被利用來實施遠程攻擊的漏洞有686個。
據《瑞星2012年中國信息安全綜合報告》稱:
2012年1月至12月,瑞星“云安全”系統共截獲新增病毒樣本1 181萬余個。
2012年1月至12月,瑞星“云安全”系統截獲掛馬網站516萬個(以網頁個數統計)。
2012年1月至12月,瑞星共截獲釣魚網站597萬個(以URL計算),瑞星攔截掛馬網站攻擊的總數總計5 097萬次。
360安全中心發布的研究數據顯示:
2012年1月至6月,國內日均約2 835.3萬臺電腦遭到木馬病毒等惡意程序攻擊。
2012年上半年,360安全衛士共截獲新增釣魚網站350 149家(以host計算),攔截釣魚網站訪問量更是高達21.7億次。
2012年上半年,360安全衛士平均每月截獲46.3萬個掛馬網頁(以URL計算),攔截掛馬網頁訪問量419萬次。
從以上的數據分析可知,網絡攻擊真實存在,網絡犯罪令人觸目驚心,在攻擊者的定罪成本(Ocm)和攻擊者被定罪的可能性(Pc)不變的條件下,我們只有在采用技術的手段同時,增大Ocp以減少網絡攻擊犯罪。
3 基于安全的軟件開發生命周期
為了應對日益嚴重的網絡犯罪,我們必須更新與完善軟件工程的方法、工具和過程。
設計高質量的軟件和良好的安全系統,加大攻擊者實施攻擊的犯罪成本。引進軟件安全開發生命周期(Security Development Lifecycle,SDL)是目前最有效的手段之一。SDL由13個階段構成(如圖2所示),其目的一是減少軟件中安全漏洞與隱私問題的數量,二是降低殘留漏洞的嚴重性。
(1) 教育和意識。通過對設計師、開發人員、測試工程師、文檔專員等每一個與軟件開發有關的人員進行系統、持續的安全培訓與考試,結合閱讀安全書籍、發表安全文章等手段進行綜合度量,讓所有參與軟件開發的工作人員牢固樹立安全意識、夯實安全基礎。
(2) 項目啟動。該階段的主要工作是組建安全團隊、配置Bug跟蹤管理數據庫并建立Bug標準。
(3) 定義并遵從設計最佳實踐。采用安全設計原則(經濟機制、默認失效保護、完全中介、公開設計、權限分離、最小特權、最少公共機制、心理可接受度),枚舉軟件受攻擊面的構成,有效降低受攻擊面。
(4) 產品風險評估。該階段完成兩個方面的任務:一是進行軟件安全風險評估,二是對軟件涉及的隱私影響進行分級。安全風險評估一般以問卷調查的形式開展,涉及的問題主要包括:安裝問題、受攻擊面問題、移動代碼問題、安全特性相關問題、常規問題等。隱私影響通常分成3級。1級為最高,當處理敏感數據,如收集用戶個人信息、不間斷監控用戶行為等情況發生時定義為1級。產品風險評估的目的是確定在開發軟件時需要投入多大的資源。
(5) 風險分析。通過威脅建模,系統地挖掘應用中的威脅,對每種威脅的風險進行分級并決定適當的消減措施。
(6) 創建安全文檔、工具及客戶最佳實踐。該階段完成更為安全的文檔的創建和安全工具的開發。所謂更為安全的文檔就是充分納入了安全信息的文檔,這些文檔包括:①安裝文檔;②主線產品使用文檔;③幫助文檔;④開發人員文檔。安全工具,一般是小巧的工具,如生成器、向導等,主要目的是幫助用戶更為方便且安全地配置系統和使用軟件。
(7) 安全編碼策略。在代碼開發和分析時必須遵從的策略:①使用最新版本編譯器與支持工具;②使用編譯器內置防御特性;③使用源代碼分析工具;④切勿使用違禁函數;⑤減少潛在可被利用的編碼結構或設計;⑥使用安全編碼檢查清單。
(8) 安全測試策略。測試階段要求必須進行:①模糊測試;②滲透測試;③運行時驗證;④重審威脅模型;⑤重估受攻擊面。
(9) 安全推進活動。通過代碼評審,捕獲安全Bug、分類,并在工作完成時修復它。
(10) 最終安全評審。在產品交付給客戶之前所進行的最終安全評審,一般由安全團隊組織進行,其主要任務是:①與產品開發團隊協調;②對威脅模型進行評審;③對未修復的安全Bug進行評審;④對工具有效性驗證;⑤簽署對產品是否可發布給客戶的意見。
(11) 安全響應規劃。由于無法實現軟件產品的絕對安全,必須制訂相應的安全響應規劃,即制訂處置預案。該預案一般包括:①接收漏洞報告;②評估與分級;③創建修復;④多級測試;⑤發布安全更新等。該過程由安全團隊與開發團隊共同完成。
(12) 產品發布。以CD、DVD或網絡下載等方式發布產品。
(13) 安全響應執行。該階段的工作就是一旦有新的安全漏洞報告,即啟動在第11階段制訂的安全響應預案。
與軟件產品本身一樣,其開發方法也是一個動態的變化過程。再安全的方法也要由人來執行,保障軟件安全沒有一勞永逸的辦法,即使SDL也在不斷地改進和更新。像傳統的軟件工程帶來了軟件產業的繁榮一樣,不斷完善的、基于軟件安全開發生命周期的軟件工程,必將給軟件產業帶來質的提升與飛躍。
主要參考文獻
[1] 齊治昌,譚慶平,寧洪. 軟件工程[M]. 北京:高等教育出版社,2001.
[2] [美]Michael Howard ,Steve Lipner. 軟件安全開發生命周期[M]. 李兆星,譯. 北京:電子工業出版社,2008.
[3] 史濟民. 軟件工程:原理、方法與應用[M]. 第3版. 北京:高等教育出版社,2010.