軟件開發(fā)
軟件安全開發(fā)流程
軟件工程的出現(xiàn)是為了應(yīng)對因為軟件的需求量大量增加而出現(xiàn)軟件開發(fā)的“軟件危機(jī)”而產(chǎn)生的。所謂的軟件工程就是借鑒傳統(tǒng)工程的方法進(jìn)行軟件開發(fā),軟件工程中經(jīng)典的軟件開發(fā)流程包含幾個階段,分別是需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試、運(yùn)行和維護(hù)。
軟件工程的出現(xiàn),使得研發(fā)出質(zhì)量過關(guān)、成本合算的軟件產(chǎn)品成為常態(tài),“軟件危機(jī)”的問題得到了解決,但是隨著軟件使用的進(jìn)一步廣泛,軟件產(chǎn)品在人們生產(chǎn)和生活中所占的地位越來越重要,出現(xiàn)了新的問題,就是軟件安全。而原有的軟件開發(fā)的工程流程無法很好地解決軟件安全問題。
以原有的軟件工程中的軟件開發(fā)流程為基礎(chǔ),并參考已有的軟件安全開發(fā)流程SDL,進(jìn)行適當(dāng)?shù)母脑欤岢鲆环N新的軟件安全開發(fā)流程。
一、現(xiàn)有的軟件安全開發(fā)流程
1、SDL介紹
隨著軟件使用的普及,已經(jīng)有一些有識之士對軟件安全問題有所研究,并有一些可以使用的成果,在這之中,軟件安全開發(fā)流程也應(yīng)運(yùn)而生。迄今,最為普及的軟件安全開發(fā)流程是微軟提出的軟件安全開發(fā)周期—-SDL,這個流程的典型之處在于它把安全工作貫穿于整個軟件開發(fā)的生命周期中,而且,即使僅僅是對其中的一個過程進(jìn)行安全工作,也能大大提高軟件的安全性。下面對SDL進(jìn)行簡單的說明。在一個完整的軟件SDL實施過程中,一共可以分為13個階段。
(1)安全教育和提高安全意識;(2)項目啟動;(3)定義并遵從設(shè)計最佳實踐;(4)產(chǎn)品風(fēng)險評估;(5)產(chǎn)品風(fēng)險分析;(6)為客戶創(chuàng)建安全文檔,工具;(7)安全編碼策略;(8)安全測試策略;(9)安全推動活動;(10)產(chǎn)品最終安全評審;(11)安全響應(yīng)計劃;(12)產(chǎn)品發(fā)布;(13)執(zhí)行安全響應(yīng)。
SDL可以有效地提高軟件安全性,降低軟件安全問題。據(jù)微軟提供的相關(guān)數(shù)據(jù)顯示,使用SDL進(jìn)行開發(fā)的WindowsVista所發(fā)現(xiàn)的安全漏洞比沒有使用SDL的Windows Xp減少45%;使用SDL開發(fā)流程的sQLServer2005發(fā)現(xiàn)的安全漏洞比沒有使用SDL的SQL Server2000減少91%。
SDL具有一些明顯的優(yōu)勢,它既可整體使用也可以在某一個階段使用,靈活性高,而且它與一般的開發(fā)流程比較匹配,所以實用性很高。另外,SDL不僅僅適合微軟的平臺,還適用于多種平臺;SDL有比較充分的工具支持,例如威脅建模和靜態(tài)源代碼分析工具;SDL屬于微軟開發(fā),所應(yīng)有的文檔非常詳細(xì)。
2、SDL應(yīng)用現(xiàn)狀
通過2010年在美國舊金山的RSA會議上對軟件開發(fā)流程與安全結(jié)合的調(diào)查數(shù)據(jù)發(fā)現(xiàn),目前的軟件公司已經(jīng)開始關(guān)注軟件的安全問題,而且其中超過50%的調(diào)查參與者表示對SDL進(jìn)行關(guān)注。但是進(jìn)一步的調(diào)查數(shù)據(jù)顯示,在開發(fā)過程中真正應(yīng)用了SDL的參與者僅僅13%。
沒有使用軟件安全開發(fā)流程的調(diào)查參與者也給出了自己的理由,主要是其時間成本、資源成本以及暫時的安全意識。由此看來,即使對軟件安全開發(fā)流程的關(guān)注度越來越高,但是其實際使用情況仍不夠理想。通過調(diào)查發(fā)現(xiàn),企業(yè)規(guī)模是影響是否使用安全開發(fā)流程的重要因素之一。大企業(yè)可以承擔(dān)更大的資源投入,保證安全工具和安全活動的費(fèi)用,而一些中小企業(yè)對投入有一定的擔(dān)憂。
二、對SDL的改進(jìn)
有大量的數(shù)據(jù)證明,軟件安全測試介入的時間越晚,所需要的付出越多。在軟件發(fā)布后對安全漏洞的修復(fù)所需的成本至少是在軟件設(shè)計和編碼階段就進(jìn)行修復(fù)的30倍。
SDL的出現(xiàn)正是為了解決上述問題,但是現(xiàn)有的SDL具有一定的限制性,為了提高SDL的適用對象,降低其經(jīng)濟(jì)要求,將SDL進(jìn)行了適當(dāng)?shù)母脑?。?jīng)過改造的軟件安全開發(fā)流程的核心是安全知識庫,安全知識庫在軟件生命周期中一直有效,并起到不同的作用。為了將軟件開發(fā)流程變得更加靈活,將軟件開發(fā)周期簡化為需求、設(shè)計、測試、維護(hù)4個階段。在這4個階段中,采取不同的活動來提高軟件安全性。
1、軟件安全知識庫
在所改造的軟件開發(fā)流程中,安全知識庫是最核心的存在,它可以包含很多內(nèi)容,包括產(chǎn)品風(fēng)險庫,軟件安全漏洞庫,軟件安全開發(fā)設(shè)計規(guī)則,安全工具,甚至包括一些相應(yīng)的安全知識培訓(xùn)。
產(chǎn)品風(fēng)險庫:包括在項目開展之初的需求風(fēng)險和已經(jīng)評估的風(fēng)險。安全工具:包括網(wǎng)絡(luò)安全測試工具以及白盒安全測試工具。例如AppScan,Sninffer;白盒安全測試工具包括Fortify或者CheckMarx。安全知識文檔:項目累積的安全經(jīng)驗文檔或者培訓(xùn)文檔。安全漏洞庫:能夠收集到的相關(guān)的產(chǎn)品安全漏洞,包括網(wǎng)絡(luò)和代碼級。安全設(shè)計規(guī)則:安全開發(fā)基礎(chǔ)知識,例如編碼規(guī)則。安全知識庫在軟件安全開發(fā)流程中的地位極其重要,在每一個開發(fā)階段都可以使用安全知識庫中的內(nèi)容。
2、軟件開發(fā)需求階段
需求階段的主要工作是需求收集和需求分析。在這個階段,可以根據(jù)安全知識庫的產(chǎn)品風(fēng)險庫對產(chǎn)品需求進(jìn)行分析,把隱含安全風(fēng)險的需求重新設(shè)計,或者計算針對某些功能或者過程不進(jìn)行安全活動將會有多大的損失。
3、軟件安全設(shè)計階段
設(shè)計階段分為概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計階段,將主要是對軟件架構(gòu)設(shè)計,軟件模塊功能定義,在這一階段需要參考產(chǎn)品風(fēng)險庫和漏洞庫,對一些已知的安全問題進(jìn)行預(yù)處理,尤其是一些網(wǎng)絡(luò)軟件,面對各種廣為人知的攻擊手段做出相應(yīng)的設(shè)計。
詳細(xì)設(shè)計階段的工作主要是代碼編寫,這時要根據(jù)漏洞庫---主要是白盒安全漏洞和安全設(shè)計規(guī)則進(jìn)行編碼。對于白盒安全漏洞,現(xiàn)在已經(jīng)有比較成熟的定義,例如fortify對白盒安全漏洞的分類和定義,參考這些漏洞分類,結(jié)合已經(jīng)比較成熟的保證編碼質(zhì)量的編碼規(guī)則進(jìn)行詳細(xì)設(shè)計工作。
4、軟件安全測試階段
軟件安全的測試工作,主要分為3種類型,第一種是模糊測試:這種測試的原理是向目標(biāo)系統(tǒng)發(fā)送非預(yù)期的輸入并觀察結(jié)果來發(fā)現(xiàn)軟件漏洞。一般是設(shè)置大量非正常形數(shù)據(jù)進(jìn)行解析,并包含了對網(wǎng)絡(luò)協(xié)議和不信任的訪問所產(chǎn)生的問題代碼的測試。第二種是滲透測試:這種測試是為了證明網(wǎng)絡(luò)防御按照預(yù)期設(shè)置正常運(yùn)行的一種機(jī)制。它主要用來測試網(wǎng)絡(luò)和主機(jī)系統(tǒng)的操作配置以及補(bǔ)丁的修復(fù)程度,較多的是使用模擬攻擊發(fā)現(xiàn)信息系統(tǒng)中的漏洞,發(fā)現(xiàn)系統(tǒng)的脆弱性。第三種是運(yùn)行時驗證:對運(yùn)行中的問題進(jìn)行驗證,用來完成常規(guī)運(yùn)行中的測試和對問題日志的分析??梢允褂萌毕莘诸惐砘蛘唢L(fēng)險分類表來對測試出的缺陷進(jìn)行統(tǒng)計,使用相應(yīng)的測試方法修復(fù)發(fā)現(xiàn)的缺陷。
在這一階段,可以大量的使用安全工具進(jìn)行測試,比如網(wǎng)絡(luò)軟件的安全,使用一些滲透性測試工具進(jìn)行測試(如Ac-tivePerl,Sniffer);代碼級的安全測試,主要依靠一些靜態(tài)測試工具和動態(tài)測試工具,比如專門代碼靜態(tài)安全測試的forti-fy,CheckMarx;還有一些對于軟件使用環(huán)境和整體軟件系統(tǒng)的安全測試,例如美國的安全軟件nessus?,F(xiàn)在,軟件安全測試工具越來越多,已經(jīng)涌現(xiàn)出許多成熟的或者有特點的商業(yè)的或者開源的軟件安全測試工具,國內(nèi)也有一些不錯的軟件安全工具,例如啟明星辰天鏡或者安華明鑒,這些都為實施軟件安全的測試工作提供便利。在這一階段,從成本考慮出發(fā),大量的開源工具是優(yōu)先考慮的。
5、軟件維護(hù)階段
維護(hù)階段的工作主要是處理已經(jīng)出現(xiàn)的安全問題并且將問題和處理方法搜集入安全知識庫,為以后的軟件安全開發(fā)提供知識儲備。
經(jīng)過簡化后的軟件安全開發(fā)流程僅僅包括了需求、設(shè)計、測試、維護(hù)4個階段,這4個階段都需要使用到安全知識庫,所以建立的這套流程核心仍然是安全知識庫。改造后的軟件安全開發(fā)流程更加靈活,可是適應(yīng)不同的開發(fā)流程,一旦建立安全知識庫后,也可以在不同的階段開展軟件安全開發(fā)工作,降低安全成本。
總結(jié)
軟件安全開發(fā)生命周期的應(yīng)用主要是為了減少安全漏洞和降低安全漏洞的影響。但是軟件開發(fā)僅僅是基于目前最優(yōu)的安全方案,新的攻擊手段層出不窮,所以安全問題和軟件漏洞是不可能被徹底消除的。
軟件安全工作現(xiàn)在更多的是體現(xiàn)在安全測試上,在軟件安全開發(fā)上進(jìn)行的工作仍然稀少,這與現(xiàn)有的軟件開發(fā)流程所需成本較高,流程復(fù)雜有一定關(guān)系。通過對現(xiàn)有的軟件安全開發(fā)流程SDL進(jìn)行簡化以適應(yīng)中小企業(yè)的需要,也可以作為一些敏捷開發(fā)或者流程簡單的開發(fā)使用。優(yōu)化后的軟件開發(fā)流程主要有這幾個優(yōu)點:開發(fā)時間更靈活,強(qiáng)調(diào)安全工具包括免費(fèi)工具的使用,流程進(jìn)行了簡化,成本有所降低。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的對軟件安全開發(fā)流程的研究。如果您有智能電子產(chǎn)品的軟硬件功能開發(fā)需求,可以放心交給我們,我們有豐富的電子產(chǎn)品定制開發(fā)經(jīng)驗,可以盡快評估開發(fā)周期與IC價格,也可以核算PCBA報價。我們是多家國內(nèi)外芯片代理商,有MCU、語音IC、藍(lán)牙IC與模塊、wifi模塊。我們的擁有硬件設(shè)計與軟件開發(fā)能力。涵蓋了電路設(shè)計、PCB設(shè)計、單片機(jī)開發(fā)、軟件定制開發(fā)、APP定制開發(fā)、微信公眾號開發(fā)、語音識別技術(shù)、藍(lán)牙wifi開發(fā)等。還可以承接智能電子產(chǎn)品研發(fā)、家用電器方案設(shè)計、美容儀器開發(fā)、物聯(lián)網(wǎng)應(yīng)用開發(fā)、智能家居方案設(shè)計、TWS方案開發(fā)、藍(lán)牙音頻開發(fā)、兒童玩具方案開發(fā)、電子教育產(chǎn)品研發(fā)。
- 返回頂部