摘 要 文章以現有的軟件開發制程為基礎,加強制度、管理、技術等三個層面的安全措施,進而規劃出一套安全軟件開發制程,于軟件開發初期就能標示出階段性的安全缺失與漏洞,有效提升軟件系統的安全性,且提出一套安全開發制程品質量測模式,有效監控與不斷改善安全開發制程的問題與缺失,確保安全軟件開發制程能夠持續強化軟件系統的安全性。
【關鍵詞】軟件安全性 品質量測模式 安全軟件開發制程
1 前言
軟件系統安全性一般都被列為事后考慮的情況,當功能規格都能夠滿足需求,且軟件專案的時程與預算都在規劃的范圍內,軟件系統安全性才會被列入考量,使得軟件安全品質的問題愈加嚴重。造成軟件安全漏洞的原因很多,卻幾乎都與開發作業的疏忽及運作環境的缺失等問題密切相關,其中又以開發作業疏忽衍生遞延與擴大的影響最大且最久;可以歸納成兩大類:軟件開發過程的疏失所形成軟件安全漏洞;運作環境的規劃缺失導致維運環境的安全漏洞。為了降低安全漏洞的風險,必須強化軟件制程的安全機制,于開發初期就有效標示出安全缺失漏洞,且及時提出修補與改善作業。本文以現行的軟件制程為基礎,加強制度、管理、技術等層面的安全管制作業,進而提出一套安全軟體開發制程(Secure Software Development Process SSDP),于軟體開發初期即能找出階段性的安全漏洞與缺失,且提出具體的修訂與改善措施,有效提升軟件系統的安全性。此外為了確認SSDP的有效性,本研究以制度、管理與技術等三個層面為基礎,提出一套SSDP品質量測(SSDP Quality Measurement SSDPQM)模式,用以監控與持續改善SSDP執行上的問題與缺失。
2 安全軟件開發制程
文章以調整制度層面、搭配管理層面與提升技術層面的安全管制作業為依據,提出一套改善軟件安全性的安全軟件開發制程。
2.1 結合安全管制作業的軟件制程
為了解決軟件危機的問題,軟件工程的理念于1967年被提出,將近三十年的軟件工程演進過程中,許多軟件開發的方法與技術陸續被發表且提出,有效的改善軟件的品質且提升其生產力,對于解決軟件危機的問題帶來不少的助益。不過,對于軟件安全危害卻極少被提及,使得軟件安全問題成為軟件開發作業即將面臨的另一項重大危機。為了提升軟件系統的安全品質,本文從制度、管理與技術等三個層面來強化軟件開的安全管制作業,以下針對制度層面的調整、管理層面的配合與技術層面的提升說明之:
2.1.1 制度層面的調整
配合安全軟件的開發,制度層面必須具備下面四項的調整:(1)透過制度的規范,需求分析必須將使用單位的安全需求列為必要的需求項目。使用單位提出的安全需求項目將注重全盤性的考量如終止駭客入侵、杜絕病毒攻擊、確保儲存資料的安全等。(2)透過制度的規范,需求分析必須將安全運作環境需求列為必要的需求項目。安全運作環境是指系統運作的安全性如資料庫、儲存媒體或網絡傳輸等安全。(3)透過制度的規范,需求分析必須將安全介面設計需求列為必要的需求項目,安全介面設計是指整合作業的安全性如系統、功能模組及元件等介面之間的安全。(4)透過制度的規范,需求分析必須將安全程式撰寫需求列為必要的需求項目,安全程式撰寫是指程式碼的安全性如排除超出陣列定義范圍、除以零的運算式、檔案處理異常狀態等安全漏洞與缺失。
2.1.2 管理層面的配合
每一個軟件開發階段所完成的文件產品,都必通過嚴格的安全品質檢視作業,才能依程序要求交付建構管理(Configuration Management)進行管制,檢視作業若發現安全漏洞或缺失,必須立即找出原因且進行修訂與改善作業,最后還要配合后續的跟摧活動(Follow Up)來確認文件產品已完成缺失矯正與漏洞修訂,否則應持續進行修訂與改善作業,直到確認完成缺失矯正與漏洞修訂改善后,才能依程序將文件交付建構管理進行管制,成為后續開發階段引用的文件。下面以三項管理層面的執行品質來確認與判定管理層面的配合成效:
(1)安全文件完成后的核準與繳交等作業程序品質,安全文件漏洞或缺失修訂前后的確認、提領與繳交等作業程序品質。
(2)安全文件漏洞或缺失修訂前后的版本架構規劃程序品質、修訂前后內容差異存放程序品質。
(3)安全文件漏洞或缺失修訂的日期、修訂的內容、修訂的人員及歸屬的安全項目等作業程序品質。
2.1.3 技術層面的提升
軟件安全品質所強調的特性與ISO早期規劃的軟體品質特性有許多落差,為此本研究提出安全程式碼撰寫、例外處理(Exception Handling)機制、程式碼分析器、安全查核表及安全審核技巧等五個成熟度進行安全軟體開發的技術層面提升:
(1)以安全程式碼撰寫規則、程式模組之間的介面整合確認、程式模組之前置、后置條件確認等技術,提升安全程式碼撰寫成熟度。
(2)在程式碼中適當融入例外處理(Exception Handling)機制,可以避免發生超出陣列定義范圍、除以零的運算式、檔案處理異常狀態等安全漏洞與缺失,有效提升程式碼的安全品質。
(3)有效結合程式碼分析器協助找出的程式碼中隱含的安全漏洞與缺失,可以有效標示出運算式、輸出/輸入介面與模組元件整合介面的安全缺失。
(4)安全文件與產品查核表是內部或非正式審查采用的方式,將來至各方面的安全軟件相關信息匯整、剖析、分類且設定權重后,可以產生具高度修改彈性安全文件與產品查核表,可以協助于開發早期找出潛在的安全漏洞與缺失。
(5)萃取安全軟件專家與學者的知識與經驗、收集安全漏洞修補的記錄以及記取安全漏洞造成的慘痛經驗等是提升安全文件與產品審核技巧的關鍵。
2.2 安全軟件開發制程的關鍵優勢endprint
為了凸顯對軟件安全品質的重視,安全管制作業應該采取獨立運作,不過,受到人力不足與時程的壓力,也可以將安全管制作業融入軟件開發制程中,整合運作。無論是獨立運作或整合運作,每階段的任務除了依程序的要求完成階段性產品外,還必須依制度要求達成下面的工作內容:需求分析階段;初步設計階段;細部設計階段;程式制作階段;測試階段;建置移轉階段;標示軟件安全缺失的時段;改善軟件安全缺失的作業時段;各階段軟件開發安全管控的調整彈性;軟件安全改善作業的人力投入;軟件安全改善作業的時間花費;軟件安全缺失的影響范圍。當軟件系統開發計劃依SSDP完成安全軟件系統開發作業后,接著便是找出SSDP存在的問題與缺失,且針對這些問題與缺失進行剖析,再提出調整與修訂作業,持續不斷的改善SSDP,才能確認SSDP的有效性且維持SSDP的實用狀態。
3 安全軟件開發制程的品質量測模式與改善方式
一套完善的開發制程必須配合環境與需求不斷擴充與調整,以品質量測模式監控與持續改善SSDP執行上的問題與缺失,才能確認SSDP的有效性。
3.1 安全軟件開發制程的品質量測模式
個別的量度或量測值只能評量作業品質的某些特質,為了監控及評量軟體制程品質,必須將個別的量度或量測值做適當的結合。量度結合的方式可以分為線性結合與非線性結合,考量實用性、修改彈性、擴充性與簡單性,本文以線性結合方式建立品質量測模式。影響SSDP作業品質的三個關鍵項目分別為制度層面的調整、管理層面的配合及技術層面的提升,每個關鍵項目的影響指標則是由一些低階的品質因子所組成,透過線性結合公式,可以將高度相關性的基層因子結合成特定量測值,這些特定項目量測值可以進一步結合成高階項目量測值,最后再將高階項目量測值加以結合,而成為SSDP作業品質量測指標。
3.2 安全軟件開發制程改善方式
品質量測模式所估算出的SSDP品質量測指標,是找出SSDP潛在問題與缺失的依據,整合各個層面的品質因子、基層品質量度及高階品質量測值等三個層次,結合而成的品質量測指標是找出SSDP潛在問題與缺失的關鍵。因此,當品質量測指標落在「過低」的范圍時,便可以從品質量測模式的結合公式進行推導,判斷出相關的品質因子,再從品質因子對映剖析出SSDP的子工作項,進而找出SSDP實行過程中潛在的問題與缺失,依據問題與缺失可以提出具體的調整措施與監控作業。以下即針對SSDP「潛在問題與缺失」所提出的改善法則:
3.2.1
如果「SSDP品質量測指標」未能通過品質門檻,進一步分析「制度層面品質」、「管理層面品質」及「技術層面品質」等量測值是否落在過低狀態,且透過結合公式,對照找出屬于過低狀態的品質特性量測值。
3.2.2
如果「制度層面品質」量測值屬于「過低」狀態,可以進一步分析出那幾項基層品質不良造成「制度層面品質」量測值屬于「過低」狀態中,且透過結合公式,對照找出使用單位安全需求、安全運作環境需求、安全設計介紹需求及安全程式撰寫等品質量度值所對應的正確性、完整性及一致性等品質因子,再由品質因子配合找出制度層面相關子工作項潛在的問題與缺失,進行修正、改善與監控等措施。
3.2.3
如果「管理層面品質」量測值屬于「過低」狀態,可以進一步分析出那幾項基層品質不良造成「管理層面品質」量測值屬于「過低」狀態中,且透過結合公式,對照找出品質量度值所對應的安全文件存取監控、版本管制及修訂記錄等品質因子,再由品質因子配合找出安全文件存取監控、版本管制及修訂記錄等子工作項潛在的問題與缺失,進行修正、改善與監控等措施。
3.2.4
如果「技術層面品質」量測值屬于「過低」狀態,可以進一步分析出那幾項品質不良造成「技術層面品質」量測值屬于「過低」狀態中,且透過結合公式,對照找出安全程式撰寫、例外處理機制、弱點掃瞄工具、漏洞查核表及漏洞檢視技巧等品質量度值所對映的成熟度之品質因子,再由品質因子配合找出安全程式撰寫、例外處理機制、弱點掃瞄工具、漏洞查核表及漏洞檢視技巧等子工作項成熟度潛在的問題與缺失,進行修正、改善與監控等措施。
4 結論
本文從制度、管理與技術三個層面為基礎,結合安全檢視查核表與法則式安全知識庫,規劃出一套安全軟件開發制程(SSDP),從管理與技術層面對軟件開發制度進行調整,在軟件開發初期就能有效的標示出軟件安全缺失與漏洞,隨即以較低的人力、時間與成本進行安全缺失的改善作業,將安全品質融入產品中。此外為了確認SSDP的有效性,本文更提出一套SSDP品質量測(SSDPQM)模式,用以監控與持續改善SSDP執行上的問題與缺失,確保SSDP能夠持續強化軟件系統的安全性。SSDP品質量測模式以制度、管理與技術三個層面為基礎,采取線性的量度結合模式簡化了復雜的公式,具有高度的修改彈性與擴充能力,可以隨著SSDP的變動進行快速調整,持續確認SSDP的有效性與最佳狀態。
參考文獻
[1]施寅生,鄧世偉,谷天陽.軟件安全性測試方法與工具[J].計算機工程與設計,2008(01).
[2]仉俊峰,洪炳镕,喬永強.基于軟件方法故障注入系統[J].哈爾濱工業大學學報,2006(06).
[3]顏炯,王戟,陳火旺.基于模型的軟件測試綜述[J].計算機科學,2004(02).
[4]徐中偉,吳芳美.形式化故障樹分析建模和軟件安全性測試[J].同濟大學學報(自然科學版),2001(11).
作者簡介
褚岷昇(1973-),男,臺灣省臺南市人。 大學本科學歷,福州大學工商管理系(MBA)在讀?,F為冠捷電子有限公司RD部門經理。
作者單位
冠捷電子有限公司 福建省福清市 350301