
摘 要:近些年科學技術的不斷發展和提升,在我們日常生活中計算機軟件的使用范圍也越來越廣泛,深入到了很多國民經濟的領域中,隨著使用范圍的拓寬,相應的軟件安全問題也越來越多的受到了人們的關注。如果計算機軟件發生安全問題,其所帶來后果有的是無法預計的,有的是無法彌補的。因此,計算機軟件測試已經是軟件使用過程中不可缺少的一部分。下面我們就以計算機的安全檢測為主要的研究對象,對計算機軟件安全的檢測方法進行相應的討論和研究。
關鍵詞:計算機軟件;軟件安全問題;檢測方法;解決措施
1 計算機軟件安全測試的目的
隨著應用的廣泛,軟件的安全性也就成為軟件的關鍵質量指標。安全測試,在充分考慮軟件安全性問題的前提下進行的測試,普通的軟件測試的主要目的是:確保軟件不會去完成沒有預先設計的功能,確保軟件能夠完成預先設計的功能。但是,安全測試更有針對性同時可能采用一些和普通測試不一樣的測試手段,如攻擊和反攻擊技術。因此,實際上,安全測試實際上就是一輪多角度、全方位的攻擊和反攻擊,其目的就是要搶在攻擊者之前盡可能多地找到軟件中的漏洞.以減少軟件遭到攻擊的可能性。
2 計算機安全檢測技術主要內容
安全測試基于軟件需求說明書中關于安全性的功能需求說明,測試的內容主要是:軟件的安全功能實現是否與安全需求一致。通常情況下,軟件的安全需求包括:(1)數據保密和完整可用;(2)通信過程中的身份認證、授權、訪問控制;(3)通信方的不可抵賴;(4)隱私保護、安全管理;(5)軟件運行過程中的安全漏洞;等等。
以一個Web網站為例。軟件安全測試和一般的測試具有很大的區別。一般測試主要是確定軟件的功能能否達到,如果沒有達到,就進行修改,其任務具有一定的確定性。
但是,安全測試主要是檢查軟件所達到的功能是否安全可靠,需要證明的是軟件不會出現安全方面的問題,如:數據篡改、非授權訪問、遭受DOS攻擊等等。
3 軟件安全性測試的過程
軟件的安全測試,一般根據設計階段的威脅模型來實施。安全問題,應該從設計階段就開始考慮,設計要盡可能完善。并提出了采用威脅建模的方法來在軟件設計階段加入安全因素的考量。威脅建模過程一般如下:(1)在項目組中成立一個小組,該小組中的人員是項目組中對安全問題比較了解的人;(2)站在安全角度,分解系統的安全需求需求;(3)確定系統可能面臨的威脅,將威脅進行分類,可以畫出威脅樹;(4)選擇應付威脅或者緩和威脅的方法;(5)確定最終解決這些威脅的技術。既然在設計階段,就將系統可能出現的一些安全問題寫在文檔里面了,因此,安全性測試也應該是基于這些內容。因此,軟件安全測試的過程可以分為以下幾個步驟:
3.1 基于前面設計階段制定的威脅模型,設計測試計劃
該過程一般基于威脅樹,如下圖所示:測試計劃就可以基于口令安全所可能遭受的各個攻擊進行制定。
3.2 將安全測試的最小組件單位進行劃分,并確定組件的輸入格式
實際上,和傳統的測試不同,威脅模型中,并不是所有的模塊都會有安全問題,因此,我們只需將需要安全測試的某一部分程序取出來進行測試,將安全測試的最小組件單位進行劃分。
此外,每個組件都提供了接口,也就是輸入,在測試階段,測試用例需要進行輸入,這就必須將每個接口的輸入類型、輸入格式等都列出來,便于測試用例的制定。這些輸入如:Socket數據、無線數據、命令行、語音設備、串口、HTTP提交等等。
3.3 根據各個接口可能遇到的威脅,或者系統的潛在漏洞,對接口進行分級
在該步驟中,主要是確定系統將要受到的威脅的嚴重性,將比較嚴重的威脅進行優先的測試,這個嚴重性的判斷,應該來源于威脅模型。
可以通過很多方法對接口受到的威脅性進行分級,例如用積分制方法,對各個接口可能受到的各種威脅進行積分,最后累加,優先測試那些分數排在前面的接口。
3.4 確定輸入數據,設計測試用例
每一個接口可以輸入的數據都不相同,由于安全測試不同于普通的測試,因此還要更加精心地設計測試用例。有時候還要精心設計輸入的數據結構,如隨機數、集合等的設計,都要必須是為安全測試服務的。
在測試用例的設計過程中,必須要了解,安全測試實際上是對程序進行的安全攻擊,因此,不但數據本身需要精心設計,測試手段也要精心設計。如在對緩沖區溢出的測試中,必須精心設計各種輸入,從不同的方面來對程序進行攻擊。
3.5 攻擊應用程序,查看其效果
用設計的測試用例來攻擊應用程序,使得系統處于一種受到威脅的狀態,來得到輸出。
3.6 總結測試結果,提出解決方案
本過程中,將預期輸出和實際輸出進行比較,得出結論,寫出測試報告,最后提交相應的人員,進行錯誤解決。
4 計算機自動進行測試的幾種方法
4.1 用形式化方法進行安全測試
該方法用狀態遷移系統描述軟件的行為,將軟件的功能用計算邏輯和邏輯演算來表達,通過邏輯上的推理和搜索,來發現軟件中的漏洞。
4.2 基于模型的安全功能測試
在該方法中,首先對軟件的結構和功能進行建模,生成測試模型,然后利用測試模型導出測試用例。該方法的成功與否,取決于建模的準確性,對身份認證、訪問控制等情況下安全測試比較適用。常用模型有:UML模型、馬爾可夫鏈模型等等。
4.3 基于輸入語法進行測試
接口的輸入語法,定義了軟件接受的輸入數據的類型、格式等。該類方法中,首先提取被測接口的輸入語法,如命令行、文件、環境變量、套接字,然后根據這些語法,生成測試用例。此類測試方法比較適用于被測軟件有較明確的接口語法的情況,范圍較窄。
4.4 采用隨機方法進行測試
該方法又稱為模糊測試,將隨機的不合法數據輸入到程序中,有時候能夠發現一些意想不到的錯誤,在安全性測試中越來越受到重視。軟件測試本來是軟件工程中研究比較活躍的一個分支,針對安全測試的研究也受到較多學者的重視。
參考文獻
[1]趙妍.計算機軟件安全檢測方法探討[J].科技傳播,2010(8).
[2]朱巖.淺析計算機軟件安全檢測存在問題及方法[J].科技創新與應用,2012(6).
[3]潘博.淺談計算機軟件安全檢測方法[J].電腦知識與技術,2013(5).
作者簡介:張靜波(1979-),女,漢族,遼寧省錦州市人,本科,主要研究方向:計算機科學與技術,職稱:講師。