羸彩彩票

深圳市組創微電子有限公司
銷售部:158 1687 4032采購部:0755-8299 4126行政部:0755-8299 4126
咨詢電話
0755-8299 4141

軟件開發

軟件安全開發流程

2020-03-21

軟件工程的出現是為了應對因為軟件的需求量大量增加而出現軟件開發的“軟件危機”而產生的。所謂的軟件工程就是借鑒傳統工程的方法進行軟件開發,軟件工程中經典的軟件開發流程包含幾個階段,分別是需求分析、概要設計、詳細設計、編碼、測試、運行和維護。

軟件工程的出現,使得研發出質量過關、成本合算的軟件產品成為常態,“軟件危機”的問題得到了解決,但是隨著軟件使用的進一步廣泛,軟件產品在人們生產和生活中所占的地位越來越重要,出現了新的問題,就是軟件安全。而原有的軟件開發的工程流程無法很好地解決軟件安全問題。

以原有的軟件工程中的軟件開發流程為基礎,并參考已有的軟件安全開發流程SDL,進行適當的改造,提出一種新的軟件安全開發流程。

一、現有的軟件安全開發流程

1、SDL介紹

隨著軟件使用的普及,已經有一些有識之士對軟件安全問題有所研究,并有一些可以使用的成果,在這之中,軟件安全開發流程也應運而生。迄今,最為普及的軟件安全開發流程是微軟提出的軟件安全開發周期—-SDL,這個流程的典型之處在于它把安全工作貫穿于整個軟件開發的生命周期中,而且,即使僅僅是對其中的一個過程進行安全工作,也能大大提高軟件的安全性。下面對SDL進行簡單的說明。在一個完整的軟件SDL實施過程中,一共可以分為13個階段。

(1)安全教育和提高安全意識;(2)項目啟動;(3)定義并遵從設計最佳實踐;(4)產品風險評估;(5)產品風險分析;(6)為客戶創建安全文檔,工具;(7)安全編碼策略;(8)安全測試策略;(9)安全推動活動;(10)產品最終安全評審;(11)安全響應計劃;(12)產品發布;(13)執行安全響應。

SDL可以有效地提高軟件安全性,降低軟件安全問題。據微軟提供的相關數據顯示,使用SDL進行開發的WindowsVista所發現的安全漏洞比沒有使用SDL的Windows Xp減少45%;使用SDL開發流程的sQLServer2005發現的安全漏洞比沒有使用SDL的SQL Server2000減少91%。

SDL具有一些明顯的優勢,它既可整體使用也可以在某一個階段使用,靈活性高,而且它與一般的開發流程比較匹配,所以實用性很高。另外,SDL不僅僅適合微軟的平臺,還適用于多種平臺;SDL有比較充分的工具支持,例如威脅建模和靜態源代碼分析工具;SDL屬于微軟開發,所應有的文檔非常詳細。

2、SDL應用現狀

通過2010年在美國舊金山的RSA會議上對軟件開發流程與安全結合的調查數據發現,目前的軟件公司已經開始關注軟件的安全問題,而且其中超過50%的調查參與者表示對SDL進行關注。但是進一步的調查數據顯示,在開發過程中真正應用了SDL的參與者僅僅13%。

沒有使用軟件安全開發流程的調查參與者也給出了自己的理由,主要是其時間成本、資源成本以及暫時的安全意識。由此看來,即使對軟件安全開發流程的關注度越來越高,但是其實際使用情況仍不夠理想。通過調查發現,企業規模是影響是否使用安全開發流程的重要因素之一。大企業可以承擔更大的資源投入,保證安全工具和安全活動的費用,而一些中小企業對投入有一定的擔憂。

二、對SDL的改進

有大量的數據證明,軟件安全測試介入的時間越晚,所需要的付出越多。在軟件發布后對安全漏洞的修復所需的成本至少是在軟件設計和編碼階段就進行修復的30倍。

SDL的出現正是為了解決上述問題,但是現有的SDL具有一定的限制性,為了提高SDL的適用對象,降低其經濟要求,將SDL進行了適當的改造。經過改造的軟件安全開發流程的核心是安全知識庫,安全知識庫在軟件生命周期中一直有效,并起到不同的作用。為了將軟件開發流程變得更加靈活,將軟件開發周期簡化為需求、設計、測試、維護4個階段。在這4個階段中,采取不同的活動來提高軟件安全性。

1、軟件安全知識庫

在所改造的軟件開發流程中,安全知識庫是最核心的存在,它可以包含很多內容,包括產品風險庫,軟件安全漏洞庫,軟件安全開發設計規則,安全工具,甚至包括一些相應的安全知識培訓。

產品風險庫:包括在項目開展之初的需求風險和已經評估的風險。安全工具:包括網絡安全測試工具以及白盒安全測試工具。例如AppScan,Sninffer;白盒安全測試工具包括Fortify或者CheckMarx。安全知識文檔:項目累積的安全經驗文檔或者培訓文檔。安全漏洞庫:能夠收集到的相關的產品安全漏洞,包括網絡和代碼級。安全設計規則:安全開發基礎知識,例如編碼規則。安全知識庫在軟件安全開發流程中的地位極其重要,在每一個開發階段都可以使用安全知識庫中的內容。

2、軟件開發需求階段

需求階段的主要工作是需求收集和需求分析。在這個階段,可以根據安全知識庫的產品風險庫對產品需求進行分析,把隱含安全風險的需求重新設計,或者計算針對某些功能或者過程不進行安全活動將會有多大的損失。

3、軟件安全設計階段

設計階段分為概要設計和詳細設計。概要設計階段,將主要是對軟件架構設計,軟件模塊功能定義,在這一階段需要參考產品風險庫和漏洞庫,對一些已知的安全問題進行預處理,尤其是一些網絡軟件,面對各種廣為人知的攻擊手段做出相應的設計。

詳細設計階段的工作主要是代碼編寫,這時要根據漏洞庫---主要是白盒安全漏洞和安全設計規則進行編碼。對于白盒安全漏洞,現在已經有比較成熟的定義,例如fortify對白盒安全漏洞的分類和定義,參考這些漏洞分類,結合已經比較成熟的保證編碼質量的編碼規則進行詳細設計工作。

4、軟件安全測試階段

軟件安全的測試工作,主要分為3種類型,第一種是模糊測試:這種測試的原理是向目標系統發送非預期的輸入并觀察結果來發現軟件漏洞。一般是設置大量非正常形數據進行解析,并包含了對網絡協議和不信任的訪問所產生的問題代碼的測試。第二種是滲透測試:這種測試是為了證明網絡防御按照預期設置正常運行的一種機制。它主要用來測試網絡和主機系統的操作配置以及補丁的修復程度,較多的是使用模擬攻擊發現信息系統中的漏洞,發現系統的脆弱性。第三種是運行時驗證:對運行中的問題進行驗證,用來完成常規運行中的測試和對問題日志的分析。可以使用缺陷分類表或者風險分類表來對測試出的缺陷進行統計,使用相應的測試方法修復發現的缺陷。

在這一階段,可以大量的使用安全工具進行測試,比如網絡軟件的安全,使用一些滲透性測試工具進行測試(如Ac-tivePerl,Sniffer);代碼級的安全測試,主要依靠一些靜態測試工具和動態測試工具,比如專門代碼靜態安全測試的forti-fy,CheckMarx;還有一些對于軟件使用環境和整體軟件系統的安全測試,例如美國的安全軟件nessus。現在,軟件安全測試工具越來越多,已經涌現出許多成熟的或者有特點的商業的或者開源的軟件安全測試工具,國內也有一些不錯的軟件安全工具,例如啟明星辰天鏡或者安華明鑒,這些都為實施軟件安全的測試工作提供便利。在這一階段,從成本考慮出發,大量的開源工具是優先考慮的。

5、軟件維護階段

維護階段的工作主要是處理已經出現的安全問題并且將問題和處理方法搜集入安全知識庫,為以后的軟件安全開發提供知識儲備。

經過簡化后的軟件安全開發流程僅僅包括了需求、設計、測試、維護4個階段,這4個階段都需要使用到安全知識庫,所以建立的這套流程核心仍然是安全知識庫。改造后的軟件安全開發流程更加靈活,可是適應不同的開發流程,一旦建立安全知識庫后,也可以在不同的階段開展軟件安全開發工作,降低安全成本。

總結

軟件安全開發生命周期的應用主要是為了減少安全漏洞和降低安全漏洞的影響。但是軟件開發僅僅是基于目前最優的安全方案,新的攻擊手段層出不窮,所以安全問題和軟件漏洞是不可能被徹底消除的。

軟件安全工作現在更多的是體現在安全測試上,在軟件安全開發上進行的工作仍然稀少,這與現有的軟件開發流程所需成本較高,流程復雜有一定關系。通過對現有的軟件安全開發流程SDL進行簡化以適應中小企業的需要,也可以作為一些敏捷開發或者流程簡單的開發使用。優化后的軟件開發流程主要有這幾個優點:開發時間更靈活,強調安全工具包括免費工具的使用,流程進行了簡化,成本有所降低。

以上就是我們深圳市組創微電子有限公司為您介紹的對軟件安全開發流程的研究。如果您有智能電子產品的軟硬件功能開發需求,可以放心交給我們,我們有豐富的電子產品定制開發經驗,可以盡快評估開發周期與IC價格,也可以核算PCBA報價。我們是多家國內外芯片代理商,有MCU、語音IC、藍牙IC與模塊、wifi模塊。我們的擁有硬件設計與軟件開發能力。涵蓋了電路設計、PCB設計、單片機開發、軟件定制開發、APP定制開發、微信公眾號開發、語音識別技術、藍牙wifi開發等。還可以承接智能電子產品研發、家用電器方案設計、美容儀器開發、物聯網應用開發、智能家居方案設計、TWS方案開發、藍牙音頻開發、兒童玩具方案開發、電子教育產品研發。

使用該技術的成功案例

使用該技術的解決方案

  • 返回頂部