陳波
摘要:隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,軟件在全社會(huì)各行業(yè)得到了廣泛的應(yīng)用,很大程度上也提高了企業(yè)的生產(chǎn)效率,但是軟件的安全問題也隨著軟件的廣泛應(yīng)用而漸漸地暴露出來,并且呈現(xiàn)出越來越緊急的態(tài)勢(shì),由于軟件存在的安全漏洞被利用最終導(dǎo)致的企業(yè)損失的利益問題也是越來越多?;诖?,本文提出了基于應(yīng)用軟件開發(fā)生命周期的安全策略,將安全策略應(yīng)用到軟件開發(fā)的各個(gè)階段中,盡可能減少最終軟件產(chǎn)品中存在的漏洞。
關(guān)鍵詞:軟件安全;生命周期;安全策略
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)08-0217-02
軟件的安全問題貫穿了軟件開發(fā)的整個(gè)過程,是軟件開發(fā)與維護(hù)生命周期的各個(gè)環(huán)節(jié)都必須解決的技術(shù)問題,本文從軟件開發(fā)的各個(gè)階段來提出對(duì)應(yīng)的安全策略。
1 基于生命周期的應(yīng)用軟件開發(fā)安全策略解析
1.1 需求分析階段的安全策略
需求分析階段主要是從系統(tǒng)的角度理解軟件并評(píng)審用于產(chǎn)生計(jì)劃估算的軟件范圍是否恰當(dāng),在這個(gè)階段我們需要通常需要跟業(yè)主方進(jìn)行當(dāng)面溝通,去傾聽和挖掘業(yè)主方的需求,然而站在業(yè)主方角度,業(yè)主方通常會(huì)使用平舌話的語言來描述需求,而站在技術(shù)人員的角度通常會(huì)用專業(yè)技術(shù)的語言來描述需求,這種情況可能會(huì)帶來雙方的理解偏差。我們的安全策略在這個(gè)階段是一定要考慮到人性化,用業(yè)主方聽得懂的語言來進(jìn)行溝通而不是采用技術(shù)化的語言,我們還可以采用問卷調(diào)查的方式。
1.2 系統(tǒng)設(shè)計(jì)階段的安全策略
系統(tǒng)設(shè)計(jì)是基于需求分析的成果,對(duì)系統(tǒng)做深層次的分析,從而得出一系列行之有效的系統(tǒng)實(shí)現(xiàn)方案,使整個(gè)項(xiàng)目在邏輯上和物理上能夠得以實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)的任務(wù)包括構(gòu)建系統(tǒng)框架,設(shè)計(jì)系統(tǒng)功能,描述系統(tǒng)流程,建立系統(tǒng)的數(shù)據(jù)模型、接口模型及界面模型,形成系統(tǒng)的邏輯結(jié)構(gòu),告訴程序員軟件系統(tǒng)應(yīng)該“怎么做”。
在設(shè)計(jì)階段引入的漏洞已經(jīng)成為軟件安全問題的一個(gè)主要來源,由于缺乏應(yīng)用的語義與語境信息,網(wǎng)絡(luò)和操作系統(tǒng)層次上提供的安全技術(shù)無法使得應(yīng)用系統(tǒng)免于攻擊。因此,需要在軟件設(shè)計(jì)階段盡早識(shí)別軟件面臨的威脅,提前評(píng)估其安全態(tài)勢(shì),并設(shè)計(jì)相應(yīng)的應(yīng)對(duì)方案,從而增強(qiáng)軟件系統(tǒng)的安全性。為此,我們提出威脅建模技術(shù)進(jìn)行安全架構(gòu)分析,依次執(zhí)行分解應(yīng)用程序,實(shí)行攻擊面最小化分析,確定面臨的威脅,進(jìn)行威脅評(píng)估,最后,我們?cè)龠M(jìn)行全面的安全架構(gòu)設(shè)計(jì)。
1.3系統(tǒng)開發(fā)階段的安全策略
軟件系統(tǒng)開發(fā)階段目標(biāo)是按照系統(tǒng)設(shè)計(jì)階段產(chǎn)生的文檔,進(jìn)行軟件系統(tǒng)功能開發(fā),整合各個(gè)功能模塊,實(shí)現(xiàn)系統(tǒng)的集成運(yùn)行,并滿足需求分析階段提出的性能要求,具體任務(wù)是將詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為用具體程序設(shè)計(jì)語言編寫的程序代碼。
1.3.1代碼靜態(tài)分析
代碼靜態(tài)分析,是對(duì)源代碼進(jìn)行分析,找出存在缺陷的代碼,一般會(huì)結(jié)合靜態(tài)程序分析工具使用,采用機(jī)器學(xué)習(xí),語義精簡(jiǎn)等技術(shù),來檢測(cè)類如死鎖、空指針、資源泄露、緩存區(qū)溢出等問題,在這里我們重點(diǎn)是要進(jìn)行軟件缺陷檢測(cè),挖掘軟件程序潛在的漏洞問題。
1.3.2代碼動(dòng)態(tài)分析
代碼動(dòng)態(tài)分析是與靜態(tài)分析技術(shù)相對(duì)而言的,動(dòng)態(tài)分析技術(shù)一般是通過觀察程序在運(yùn)行過程中的狀態(tài),如寄存器內(nèi)容,函數(shù)執(zhí)行結(jié)果,內(nèi)存使用情況等等,分析函數(shù)功能,明確代碼邏輯,挖掘可能存在的漏洞,代碼流和數(shù)據(jù)流通常是動(dòng)態(tài)調(diào)試分析技術(shù)關(guān)注的兩個(gè)方面。動(dòng)態(tài)調(diào)試常用的工具有Debug、WinDbg、Olydbg等。
1.3.3建立安全編碼規(guī)則
在編碼階段,開發(fā)人員的安全意識(shí)水平和安全編程能力將直接影響系統(tǒng)自身的安全性和健壯性。規(guī)范對(duì)開發(fā)人員的編碼提出統(tǒng)一的安全要求,我們提出以下幾種安全編碼原則:
1.3.3.1最小功能性原則
軟件應(yīng)該只包含那確實(shí)真正需要的功能:(1)只運(yùn)行明確定義的功能(2)系統(tǒng)調(diào)用只在確實(shí)需要的時(shí)候(3)只在確實(shí)需要的時(shí)候訪問數(shù)據(jù)。
1.3.3.2最小授權(quán)原則
應(yīng)采用適當(dāng)?shù)纳矸蒡?yàn)證和權(quán)限分配模式,確保程序功能實(shí)現(xiàn)嚴(yán)格遵循“最小權(quán)限”和“需要知道”安全原則。
1.3.3.3謹(jǐn)慎使用多任務(wù)和多進(jìn)程
應(yīng)盡量使用單任務(wù)的程序,如果軟件需要使用多任務(wù)和多進(jìn)程,應(yīng)同步所有的進(jìn)程和任務(wù)以避免沖突。
1.3.3.4界面輸出最小化
用戶界面應(yīng)只提供必需的功能,確保用戶不能通過用戶界面直接訪問數(shù)據(jù)或者直接訪問被保護(hù)對(duì)象。
1.3.3.5代碼應(yīng)盡量簡(jiǎn)單
盡量使用結(jié)構(gòu)化的編程語言,盡量避免使用遞歸和Go to聲明語句,應(yīng)盡量使用簡(jiǎn)單的代碼,清除不必要的功能,防止采用信息隱藏方式進(jìn)行數(shù)據(jù)保護(hù)。
1.3.3.6提供備份機(jī)制
為保證運(yùn)行數(shù)據(jù)的完整性和可用性,應(yīng)設(shè)計(jì)有效的備份策略,根據(jù)業(yè)務(wù)和系統(tǒng)維護(hù)需要提供定期或不定期、自動(dòng)或手動(dòng)方式的備份機(jī)制。
1.3.3.7其他編碼規(guī)則
其他涉及的安全編碼規(guī)則主要存在于輸入處理、輸出處理、數(shù)據(jù)庫訪問、文件操作、安全特征等方面。
1.4測(cè)試與驗(yàn)證階段安全策略
軟件測(cè)試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤,一個(gè)好的測(cè)試用例在于能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤,一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)錯(cuò)誤的測(cè)試。在測(cè)試階段我們著重提出軟件開發(fā)的環(huán)境分離,職責(zé)分離:生產(chǎn)環(huán)境對(duì)開發(fā)和測(cè)試只開放查詢權(quán)限;修改權(quán)限時(shí)需要經(jīng)過一定的機(jī)制來控制記錄,一般只在調(diào)試程序時(shí)開放修改權(quán)限;測(cè)試環(huán)境對(duì)開發(fā)只開放查詢權(quán)限;需要修改權(quán)限時(shí)要經(jīng)過確認(rèn),一般只在調(diào)試程序時(shí)開放修改權(quán)限;開發(fā)環(huán)境對(duì)測(cè)試人員只開放查詢權(quán)限;以上三個(gè)環(huán)境,都由專人負(fù)責(zé)升版(跑腳本)維護(hù)。
實(shí)際上,軟件的安全性測(cè)試,對(duì)測(cè)試人員有著極高的專業(yè)素質(zhì),不僅要有精湛的攻擊技術(shù),而且能夠具備黑客思維,能夠從軟件的各個(gè)方面設(shè)計(jì)方案來抵御有可能的黑客攻擊,排除有可能的漏洞
1.5發(fā)布與維護(hù)階段安全策略
發(fā)布階段是軟件由程序變成成品的階段,在這個(gè)階段實(shí)施人員應(yīng)該注重軟件的開發(fā)環(huán)境與生產(chǎn)環(huán)境一致,而在維護(hù)階段,我們的維護(hù)人員主要是處理系統(tǒng)漏洞,隨著新的黑客技術(shù)的不斷產(chǎn)生,任何系統(tǒng)都不會(huì)是絕對(duì)安全的,所以最終的產(chǎn)品總是會(huì)存在漏洞,但是漏洞一旦被發(fā)現(xiàn),我們必須要做出最快的響應(yīng),首先我們要確認(rèn)漏洞產(chǎn)生的原因,并及時(shí)的修復(fù)漏洞,以免企業(yè)的生產(chǎn)受到威脅,最嚴(yán)重甚至導(dǎo)致系統(tǒng)癱瘓,導(dǎo)致企業(yè)的利益受到侵占,一般漏洞被確認(rèn)后,通常要分為3個(gè)階段,首先,發(fā)現(xiàn)漏洞后通知廠商,并將漏洞報(bào)告給安全響應(yīng)中心,然后,確認(rèn)漏洞并進(jìn)行風(fēng)險(xiǎn)評(píng)估,最后修復(fù)漏洞并發(fā)布漏洞補(bǔ)丁,以及做出相應(yīng)的安全簡(jiǎn)報(bào)。
2結(jié)語
不難看出,安全問題涉及軟件開發(fā)的各個(gè)階段,軟件的安全運(yùn)行在企業(yè)生產(chǎn)過程中起著舉足輕重的作用,這就對(duì)軟件開發(fā)的過程提出了更高的要求,必須將安全性考慮到軟件開發(fā)的各個(gè)階段中,使得軟件開發(fā)能夠前后呼應(yīng),在軟件開發(fā)的初期將安全問題進(jìn)行全面的分析,在軟件開發(fā)的后期也能夠省出很大的人力和物力,也為軟件成品的安全性提高了堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn):
[1] 李昕陳,智李俐.開源軟件安全問題與對(duì)策[J].計(jì)算機(jī)安全,2008(4).
[2] 崔丹丹,張二峰.軟件安全問題初探[A].商場(chǎng)現(xiàn)代化,2009(2).
【通聯(lián)編輯:光文玲】