国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

關(guān)于軟件安全性測試方法研究

2014-02-02 02:33李靜

李靜

【摘 要】軟件安全性測試是保證軟件安全性的重要手段。本文論述了軟件安全性測試的特點和主要內(nèi)容,重點研究了國內(nèi)外軟件安全性測試的主要方法,最后總結(jié)了當(dāng)前研究工作并指出了未來軟件安全性測試技術(shù)的研究重點與發(fā)展方向。

【關(guān)鍵詞】安全性測試;安全功能測試;語法測試;模糊測試

安全性是軟件質(zhì)量的一個重要屬性。傳統(tǒng)上國內(nèi)學(xué)者較多關(guān)注軟件的失效安全性,即軟件運行不引起系統(tǒng)事故的能力,強(qiáng)調(diào)的是一類安全關(guān)鍵軟件的安全性失效可能造成重大人員傷亡、財產(chǎn)損失、環(huán)境污染等危險事故。

1.軟件測試方法

1.1靜態(tài)測試

靜態(tài)測試在對軟件代碼進(jìn)行分析、檢查和測試時不實際運行被測試的程序,同時這種測試方法還可以用于對各種軟件文檔進(jìn)行測試。例如對需求文檔的驗證和確認(rèn),系統(tǒng)設(shè)計文檔的檢查以及程序代碼的檢查。

1.2動態(tài)測試

動態(tài)測試就是通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試的主要特征是計算機(jī)必須真正運行被測試的程序,通過輸入測試數(shù)據(jù),對其運行情況進(jìn)行分析。

1.3黑盒測試(功能測試)

在黑盒測試或功能測試中,測試條件主要是基于程序或者系統(tǒng)的功能,測試人員不需要了解程序是如何運作,只是關(guān)注程序的功能是否與規(guī)格說明書所描述的一致。

1.4白盒測試(結(jié)構(gòu)測試)

在此項測試中,測試條件是基于程序邏輯,測試人員查看程序或者系統(tǒng)的內(nèi)部機(jī)構(gòu)。測試人員需要了解內(nèi)部程序結(jié)構(gòu)和邏輯,關(guān)注生產(chǎn)出來的代碼,而不需理會其功能是否與說明書上的功能相同。

2.安全性測試主要方法

隨著軟件安全性受到人們的重視,安全性測試方法相關(guān)研究取得了一定進(jìn)展。

2.1形式化安全測試

形式化方法的基本思想是建立軟件的數(shù)學(xué)模型,并在形式規(guī)格說明語言的支持下,提供軟件的形式規(guī)格說明。形式化安全測試方法可分為兩類,即定理證明和模型檢測。定理證明方法將程序轉(zhuǎn)換為邏輯公式,然后使用公理和規(guī)則證明程序是一個合法的定理。模型檢測用狀態(tài)遷移系統(tǒng)S 描述軟件的行為,用時序邏輯、計算樹邏輯或演算公式F 表示軟件執(zhí)行必須滿足的性質(zhì),通過自動搜索S 中不滿足公式F 的狀態(tài)來發(fā)現(xiàn)軟件中的漏洞。

NASA(national aeronautics and space administration)的一個實驗室JPL(jet propulsion laboratory)開展過形式化安全測試方面的項目。主要思路是建立安全需求的形式化模型,例如狀態(tài)機(jī)模型。輸入輸出序列決定安全狀態(tài)轉(zhuǎn)換。安全測試即搜索狀態(tài)空間,看是否能從起始狀態(tài)找到一條路徑到達(dá)違反規(guī)約的不安全的狀態(tài)。隨著模型大小與復(fù)雜性增長,狀態(tài)空間呈指數(shù)增長,JPL 開發(fā)了一種使用SPIN 的形式化建??蚣埽╢lexible modeling framework,F(xiàn)MF)解決狀態(tài)爆炸問題,并開發(fā)了基于屬性的測試工具(property based tester,PBT)。

2.2基于模型的安全功能測試

基于模型的測試方法是對軟件的行為和結(jié)構(gòu)進(jìn)行建模,生成測試模型,由測試模型生成測試用例,驅(qū)動軟件測試[3]。常用的軟件測試模型有有限狀態(tài)機(jī)、UML 模型、馬爾可夫鏈等。

Mark Blackburn、Robert Busser 研究了基于模型的安全功能測試[4]。主要項目支撐是NIST CSD(computer security division)部門的項目Automated Security Functional Testing。主要思路是利用SCRModeling 工具對軟件的安全功能需求進(jìn)行建模,使用表單方式設(shè)計軟件的安全功能行為模型,將表單模型轉(zhuǎn)換為測試規(guī)格說明模型,利用T-VEC工具生成測試向量(由一組輸入變量,期望輸出變量組成),開發(fā)測試驅(qū)動模式和目標(biāo)測試環(huán)境的對象映射,將測試向量輸入測試驅(qū)動模式執(zhí)行測試。這種方法是一種一般的安全功能測試方法,它的適用范圍取決于安全功能的建模能力,特別適用于建模用與或子句表達(dá)邏輯關(guān)系的安全需求,對授權(quán)、訪問控制等安全功能測試比較適用。

2.3語法測試

語法測試是根據(jù)被測軟件的功能接口的語法生成測試輸入,檢測被測軟件對各類輸入的響應(yīng)。接口可以有多種類型,命令行、文件、環(huán)境變量、套接字等。語法測試基于這樣一種思想,軟件的接口或明確或隱含規(guī)定了輸入的語法。語法定義了軟件接受的輸入數(shù)據(jù)的類型、格式。語法定義可采用BNF或正則表達(dá)式。語法測試的步驟是識別被測軟件接口的語言,定義語言的語法,根據(jù)語法生成測試用例并執(zhí)行測試。

生成的測試輸入應(yīng)當(dāng)包含各類語法錯誤,符合語法的正確輸入,不符合語法的畸形輸入等。通過察看被測軟件對各類輸入的處理情況,確定被測軟件是否存在安全缺陷。語法測試適用于被測軟件有較明確的接口語法,易于表達(dá)語法并生成測試輸入的情況。語法測試結(jié)合故障注入技術(shù)可得到更好的測試效果。

2.4基于故障注入的安全性測試

Wenliang Du將故障注入技術(shù)用于軟件安全性測試,建立軟件與環(huán)境交互(environment-application interaction,EAI) 的故障模型。故障注入針對應(yīng)用與環(huán)境的交互點,主要包括用戶輸入、文件系統(tǒng)、網(wǎng)絡(luò)接口、環(huán)境變量等引起的故障。相關(guān)項目有OUSPG(university of oulu,secure programming group)的項目PROTOS SecurityTesting of Protocol Implementations,該項目的目標(biāo)是測試協(xié)議實現(xiàn)的安全性。主要思路是通過構(gòu)造各類協(xié)議數(shù)據(jù)包測試目標(biāo)軟件是否能正確處理。實質(zhì)是在各類協(xié)議數(shù)據(jù)包中植入故障,如修改某些協(xié)議字段的值等,支持的協(xié)議有HTTP、SIP、WAP、SNMP等。故障注入可以有效地模擬各種各樣的異常程序行為,通過故障注人函數(shù)能夠強(qiáng)制性地使程序進(jìn)入到某些特定的狀態(tài),而這些狀態(tài)在采用常規(guī)的標(biāo)準(zhǔn)測試技術(shù)的情況下一般是無法到達(dá)的。

2.5 模糊測試

模糊測試是一種發(fā)現(xiàn)安全漏洞的有效的測試方法,在安全性測試中越來越受到重視。模糊測試將隨機(jī)的壞數(shù)據(jù)插入程序,觀察程序是否能容忍雜亂輸入。模糊測試是不合邏輯的,只是產(chǎn)生雜亂數(shù)據(jù)攻擊程序。采用模糊測試攻擊應(yīng)用程序可發(fā)現(xiàn)其它采用邏輯思維來測試很難發(fā)現(xiàn)的安全缺陷。

2.6 基于屬性的測試

描述了基于屬性的測試方法,采用TASPEC 語言對軟件的安全屬性進(jìn)行描述,生成安全屬性規(guī)格說明,利用程序切片技術(shù)抽取與這個安全屬性相關(guān)的代碼,并測試這部分代碼是否違反安全屬性規(guī)格說明?;趯傩缘臏y試有針對性的測試目標(biāo)軟件的特定安全屬性,可滿足安全屬性的分類和優(yōu)先級排序要求,且部分與具體軟件無關(guān)的屬性規(guī)格說明是可重用的。

3.結(jié)束語

軟件測試是所有工程學(xué)科的基本組成單元,是軟件開發(fā)的重要部分。軟件測試是為了發(fā)現(xiàn)故障而執(zhí)行程序的過程,其目的是以盡可能少的時間和人力發(fā)現(xiàn)并改正軟件中潛在的各種故障及缺陷。如何利用較少的測試用例,實現(xiàn)最大的測試覆蓋,最大限度地發(fā)現(xiàn)軟件瑕疵,是軟件測試的目標(biāo)之一;制定完善的測試計劃、測試方案、結(jié)果分析、文檔資料管理,亦是保證軟件測試功效的前提。軟件測試只能查找程序中的錯誤,不能證明程序中沒有錯誤。

未來軟件安全性測試技術(shù)主要發(fā)展方向包括:軟件授權(quán)、訪問控制等安全功能建模與測試研究;形式化安全測試方法研究;基于風(fēng)險的安全測試及其在軟件工程實踐中的應(yīng)用;故障注入、模糊測試、語法測試、基于屬性的安全測試方法研究;利用威脅模型與攻擊樹指導(dǎo)安全測試過程;漏洞發(fā)現(xiàn)過程的建模及利用模型定量預(yù)測安全漏洞。

另外近年來基于Web 服務(wù)的分布式軟件快速發(fā)展,如何對Web 服務(wù)開展安全性測試是分布式軟件安全性測試面臨的嶄新課題。 [科]

【參考文獻(xiàn)】

[1]陸璐,王柏勇.軟件自動化測試技術(shù)[M].北京:清華大學(xué)出版社,2006.

[2]郭群.軟件測試設(shè)計技術(shù)[J].電腦知識與技術(shù),2007,(17).

[3]周博文,杜山澤.社會管理創(chuàng)新:從倫理觀念、管理理念到思維方式的轉(zhuǎn)變.載于.行政管理改革,2012,(11).

博爱县| 乌海市| 鲁甸县| 阿拉善左旗| 太仓市| 昌平区| 青神县| 开化县| 甘泉县| 新余市| 华阴市| 武清区| 平顶山市| 新营市| 曲阳县| 积石山| 双鸭山市| 沾化县| 郁南县| 沈丘县| 西华县| 连城县| 句容市| 邮箱| 五原县| 志丹县| 慈利县| 绍兴县| 保德县| 博罗县| 张北县| 湘潭县| 卢龙县| 大竹县| 廊坊市| 民县| 德江县| 清涧县| 霍州市| 图木舒克市| 建昌县|