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