軟體安全性保障框架研究論文
軟體安全性保障框架研究論文
近幾年網際網路的大量普及,軟體安全問題開始愈加突顯。因為網際網路上的病毒和攻擊者引起的身份竊取、資料丟失以及一般性的混亂事件已經隨處可見。單單2008年第一季度,就有1474個不同的軟體脆弱點報告上來,只有64個釋出了相應的解決方案。也就是說解決率大約只有4%。應用軟體安全將成為資訊系統安全的下一個熱點。
軟體安全一般分為應用程式級別的安全性和作業系統級別的安全性。應用程式級別的安全性,包括對資料或業務功能的訪問,在預期的安全性情況下,操作者只能訪問應用程式的特定功能、有限的資料等。作業系統級別的安全性是確保只有具備系統平臺訪問許可權的使用者才能訪問,包括對系統的登入或遠端訪問。
1基於軟體工程的軟體安全性保障框架
1.1傳統開發方法在安全方面的不足
在傳統面向物件專案開發過程中,在安全性方面存在以下不足:
1)設計階段,由於以類為單位組織建模,因此它不能全面地反映軟體系統的安全需求。
2)編碼階段,將資料和方法封裝到類中的思想增強了資料的安全性和軟體的模組化,但是有一些資料和方法是特定於應用的,對於系統安全方面的考慮比較少。
3)維護階段,一般是系統在使用過程中發現了漏洞再去修補,不僅效率低而且工作量大。
2.2基於軟體工程原理的軟體安全性保障框架
本文依據系統安全工程的原理,將軟體安全引入到軟體開發生命週期之中。為了開發出安全的應用軟體,提出一個軟體安全性保障框架,將軟體安全保障實施到軟體開發的各個模組當中。
該框架具體分為:軟體安全需求分析、軟體安全設計與編碼、軟體安全檢測與評估、漏洞響應和維護階段。首先分析軟體開發中可能出現的安全問題,瞭解專案的安全需求,之後再要保證程式設計和編碼過程中的安全性,開發完成後對軟體進行安全性檢測和評估,最後進行產品的維護,對產品中存在的漏洞問題進行響應和處理。
2.2.1軟體安全需求分析
軟體安全分析開始於專案開發初期並貫穿於整個系統生命週期的始終。在完成專案需求分析的同時,也要建立安全需求。在這個階段主要完成兩個任務:
1)軟體需求危險分析計劃制定
在系統需求分析階段,首先建立軟體安全需求定義,確保軟體安全需求定義的正確性,然後制定一個危險分析計劃。
2)寫出初步的軟體安全需求文件
安全分析的結果應寫成軟體安全需求文件,應用到軟體需求文件、軟體設計文件、軟體測試計劃、軟體維護計劃中去。
2.2.2軟體安全設計和編碼階段
安全從設計開始。設計階段如果出了安全問題,那下一步的測試維護工作會更加困難而又低效。這個階段主要有三個任務:
1)進行軟體設計危險分析
明確在設計階段有哪些安全方面的目標需要達到,識別軟體可能會遇到的攻擊和一些安全隱患,劃出安全邊界、哪些資料是比較可信的、哪些輸入介面較易成為攻擊目標、列出潛在的.攻擊方式等,確保設計的完整性和正確性。
2)軟體安全設計
進行安全分析之後,還必須進行軟體安全設計。設計時要注意儘量降低危險發生率,對可能發生危險的地方要提供警告,危險發生後採取有效措施進行控制,同時還要注意所額外增加的複雜度。
3)基於編碼的軟體安全分析
在軟體程式碼編寫階段,也要注意編碼過程中是否會引入新的危險,因為編碼人員可能會不小心使用一個不安全的函式。除了要求編碼人員提高程式質量之外,還可以使用第三方的安全編譯來提高編碼階段的安全水平。
2.2.3軟體安全檢測與評估階段
軟體安全性測試是軟體安全開發生命週期不可缺少的一個組成部分,測試中的投入要遠遠小於專案完成後再進行的漏洞修補和安全維護。
安全性測試和普通的功能性測試的測試目的是不同的。軟體安全測試的目的是確保軟體不會去完成沒有預先設計的功能,而且所有預料到的危險已經被消除或減輕。如程式碼執行過程中系統是不是處於安全的狀態,系統執行風險是否可以接受,操作人員的失誤包括極端環境在內的各種異常和故障是否被妥當控制,儘可能找到軟體中的所有漏洞,減少軟體遭到攻擊的可能性。
軟體的安全檢測通常包括一下幾個方面:靜態檢測、動態檢測、文件檢查、出錯處理和異常情況檢測。
1)動態檢測
選擇合適的測試用例,實際執行待測程式,透過分析程式執行時的記憶體、變數、內部暫存器等中間結果來檢測程式執行時的正確性。
2)靜態檢測
靜態檢測是在程式沒有執行的情況下,靜態分析程式的資料流和控制流,然後給出相應的測試分析報告。
3)檢查文件
檢查需求說明書、概要設計說明書、詳細設計說明書中是否有對安全性的設計和描述,對安全性的描述是否和需求一致,還有使用者文件是否有安全性注意事項等。
4)出錯處理和異常情況檢測
保證各種出錯和異常情況都被處理,提示給使用者的出錯資訊不會涉及到程式設計的細節,而且軟體的異常情況不能導致程式進入不可知的危險情況。
2.4.4漏洞響應和維護階段
即使我們在需求分析,軟體設計,程式碼編寫,以及軟體測試過程中都加入了安全因素的考慮,最終的軟體產品還是可能會存在漏洞,所以漏洞響應和維護是很重要的一個環節,軟體的維護和跟蹤,響應、修復漏洞是很重要的。漏洞發現後要在第一時間採取措施,確保客戶的利益不被侵害。這個階段大致可分為以下兩個階段:
1)漏洞響應
發現漏洞,首先通知客戶收到漏洞報告,聯絡相關的開發部門進行技術細節的分析,為漏洞進行風險評估。
2)修復漏洞
開發部門和安全響應部門協商進行解決方案的制定,對修復漏洞的補丁進行嚴格測試之後對外公佈安全補丁,釋出安全簡報。
3結論
真實有效的安全解決方案能為開發安全的關鍵軟體提供好的思路。本文運用系統安全工程的原則,對軟體安全工程進行詳細分析,提出初步的軟體安全性保障框架,詳細論述了框架各階段的安全分析工作,並結合實際提出一些實用的改進方法,有一定的參考價值,希望在大量的實際應用中逐步完善成為使用有效的軟體安全性保障方案。
參考文獻:
[1]軟體安全速成課企業系統有多脆弱?[EB/OL]. [2]軟體系統的安全必須能夠經受住正面的攻擊
[3]於東輝.基於面向方面的軟體安全框架的研究[D].大連:大連理工大學,2005.
[4]蔡霞,陳基熊.軟體安全及有關技術淺析[J].計算機應用,1999(11).
[5]崔丹丹,張二峰.軟體安全問題初探[J].商場現代化,2009(2).
[6]餘勇,林為民.軟體安全開發模型的研究[J].計算機安全,2005(4).