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