羅風春
【摘 要】 隨著計算機網絡的發展,計算機軟件的應用日益廣泛,但隨之而來的軟件問題也越發的不容忽視,各種用戶信息泄露事件層出不窮,為保障用戶信息安全,在軟件開發的過程中使用相應手段降低安全漏洞勢在必行。
【關鍵詞】 軟件生命周期
一、 軟件安全開發的研究背景
計算機網絡的發展一日千里,與之匹配的軟件的功能也是日新月異,人們通過使用軟件可以任意觀看視頻、聊天交友、處理工作以及完成各種事務, 但與此同時, 軟件的安全開發問題也逐漸暴露出來。尤其是當前我國盜版軟件猖獗、軟件自身安全漏洞較多,并且已經逐漸威脅到人們的財產和人身隱私等安全,因而研究軟件安全開發關鍵技術及其具體應用有著極其重要的現實意義。
二、網絡信息安全事件層出不窮的原因分析
網絡信息安全事件的發生有兩個方面的原因,一個是軟件脆弱性導致,在軟件開發的過程中,沒有或很少進行安全方面的考慮和管理,導致開發出來的軟件漏洞過多,比較脆弱,我們稱之為內因;
(一)內因。1、軟件安全開發意識淡薄。傳統軟件開發更傾向于對軟件功能的實現,而不注重對軟件安全風險的管理。軟件開發公司工期緊、任務重,為爭奪客戶資源、搶奪市場份額常倉促發布軟件。軟件開發人員將軟件功能視為頭等大事,對軟件安全架構、安全防護措施認識不夠,只關注是否實現需要的功能,很少從“攻擊者”的角度來思考軟件安全問題。2、軟件規模日益龐大,功能紛繁多樣,架構趨于復雜?,F代軟件功能越來越強,功能組件越來越多,軟件也變得越來越復雜。如操作系統的代碼量相當驚人,而且隨著版本的更新,代碼量迅速增加。如現在基于網絡的應用系統更多地采用了分布式、集群和可擴展架構,軟件內部結構錯綜復雜。軟件應用向可擴展化方向發展,成熟的軟件也可以接受開發者或第三方擴展,系統功能得到擴充,如Firefox和Chrome瀏覽器支持第三方插件,Windows操作系統支持動態加載第三方驅動程序。Word和Excel等軟件支持第三方腳本和組件運行等,這些可擴展性在增加軟件功能的同時,也加重了軟件的安全問題。研究表明,軟件漏洞的增長通軟件復雜性、代碼行數的增長成正比,即“代碼行越多,缺陷也就越多”。 3、軟件開發者缺乏安全知識。軟件開發公司中,項目管理和軟件開發人員缺乏軟件安全開發知識,不知道如何更好地開發安全的軟件。
三、軟件安全開發的方法
(一)軟件安全開發定義
軟件:軟件是與計算機系統操作有關的計算機程序、規程、規則,以及可能有的文件、文檔及數據。
軟件安全: 我們說的軟件安全,是指因為軟件本身的問題,被有意或無意攻擊后會造成數據泄露、系統崩潰等情況發生。
早期,人們在發現應用系統使用中存在問題,所以出現了一些列安全防護工具例如殺毒軟件、病毒庫更新,防火墻以及操作系統加固等,但這些都不是軟件安全,這些是屬于對應用安全的縱深防御。
(二)軟件安全開發目標。軟件安全開發的目標是使軟件能夠按照開發者的意圖執行,并且受到惡意攻擊的情形下依然能夠繼續正確運行。網絡信息安全認為軟件開發最重要也是最低的三個目標是:機密性、完整性、可用性。
這三個目標統稱為C.I.A(Confidentiality,Integrity,Availability),人們普遍認為,在軟件開發生中,開發者通過公認有效的方法對C.I.A進行保證、增強、保護,就認為代碼是最高可信和安全的。
(三)軟件安全開發方法。軟件安全開發生命周期管理是軟件開發項目安全管理的普遍方法,通過在軟件開發生命周期各階段采取必要的、相適應的安全措施來避免絕大多數的安全漏洞,軟件安全開發過程是指在傳統軟件開發過程的各個階段添加安全措施和安全手段,防止因設計、開發、提交、升級或維護中的缺陷而產生不該有的軟件漏洞和脆弱性。
四、軟件安全開發生命周期的劃分
(一)軟件需求階段。需求分析階段是軟件開發第一個階段,也是基礎的階段,需求分析也稱為軟件需求分析,是開發人員經過深入細致的調研和分析,準確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化為完整的需求定義,從而確定系統必須做什么的過程。
安全需求分析在軟件安全開發過程中是非常重要的一個階段,安全需求分析的好壞直接影響著安全開發過程中的后續階段。
據研究發現,在軟件開發生命周期中,后面的階段改正錯誤開銷比前面的階段要高出數倍,在軟件發布以后進行修復的代價是在軟件設計和編碼階段即進行修復所花代價的30倍。故軟件發布前期的準備工作至關重要。需求這一階段可能出現的風險主要為需求不明確,沒有準確的需求描述和需求分析文檔。所以我們在需求分析階段就需要安全人員的介入,通過專業的安全人員提出安全方面的需求。
(二)軟件設計階段。軟件設計是將客戶的需求進行軟件重現的過程,它是需求分析與編碼的中間階段,也是一個翻譯的過程。與需求分析階段一樣,該階段最后產生一份設計報告。該階段的安全目標最小風險設計,其中風險包括軟件缺陷產生的風險,用戶操作產生的風險,費用風險和進度風險。
設計階段的控制措施:軟件設計階段安全管理原則。具體如下:1、最小特權原則,2、權限分離原則,3、最少共享機制原則,4、完全中立原則,5、心理可接受度原則,6、默認故障處理保護原則,7、縱深防御原則。
(三)軟件開發階段。程序實現就是常說的編碼階段,是軟件開發的重要階段,此階段的目標是:將設計完整、準確的轉換為代碼,正確處理程序結構。編寫出符合內部、外部不同使用要求的文檔等。
(四)軟件測試階段。程序測試是上線前對產品最后的驗證,也是發現和排除程序安全問題漏洞的重要手段。
軟件測試過程中的風險:測試覆蓋面不完善;僅考慮軟件出錯時的處理,沒有考慮對軟件的故意攻擊;軟件測試中自動測試工具不能完全發現問題,需要進行人工測試,由于人員的安全技能差別,導致測試結果也不完全一致。
(5)軟件發布階段。經過軟件設計和軟件開發兩個階段之后,基本上大部分工作都已經做完了,剩下的就是應用軟件上線,給客戶一個可以正常使用的系統。
涉及軟件安全的部分,是上線前的安全測試,在前期,開發軟件的過程中,加入了安全管理概念和流程,上線前,我們仍需要對系統進行再次的安全檢查,并形成檢查報告,沒有問題方可進行上線。
五、總結
通過在軟件開發的生命周期中增加安全管理內容,能夠有效的提高軟件的安全性,降低軟件出故障的概率,節約企業的經濟開支。