鄒 萌, 張 敏, 陳儀香
華東師范大學(xué)軟件工程學(xué)院, 教育部軟硬件協(xié)同設(shè)計(jì)技術(shù)與應(yīng)用工程研究中心, 上海 200062
劉克等[1]指出軟件系統(tǒng)可信性是指軟件系統(tǒng)在規(guī)定的時(shí)間與環(huán)境內(nèi)可交付可信服務(wù)的能力.軟件可信性包含可用性、可靠性、防危性、安全性、可維護(hù)性等軟件屬性等特征.軟件可信度量是軟件可信性一個(gè)重要研究領(lǐng)域,文獻(xiàn)[2]對(duì)當(dāng)前軟件可信性度量評(píng)估進(jìn)行了詳細(xì)總結(jié),同時(shí)重點(diǎn)地介紹面向軟件產(chǎn)品以及開發(fā)過程的基于軟件多維屬性的可信度量評(píng)估方法和體系.本文從安全屬性來進(jìn)行探討軟件可信性度量模型.
安全本身是為了防止某些攻擊而慢慢演化出來的性質(zhì).隨后分成兩大類概念,一類稱為信息安全性,一類是失效安全性.從系統(tǒng)的角度來看,研究軟件系統(tǒng)某組件受到攻擊后對(duì)其它組件的可信性影響是關(guān)鍵的一步.
本文主要目的是探討了軟件系統(tǒng)組件之間的可信關(guān)聯(lián)性,以及某組件受到攻擊可信性度量指標(biāo)的下降對(duì)其關(guān)聯(lián)組件可信性度量指標(biāo)的影響, 從而建立組件可信依賴關(guān)系的量化模型.
國家自然基金委員會(huì)于2007年開始實(shí)施了“可信軟件基礎(chǔ)研究”重大研究計(jì)劃,經(jīng)過十年的項(xiàng)目實(shí)施,我國在軟件可信性研究取得了重大研究成果,為我國可信軟件開發(fā)奠定了堅(jiān)實(shí)基礎(chǔ)[3].軟件可信性與軟件質(zhì)量息息相關(guān)[4-6].可以說可信是軟件質(zhì)量的特殊表現(xiàn)形式,國內(nèi)外眾多團(tuán)隊(duì)在軟件可信屬性的定義上都沿用了軟件質(zhì)量屬性,并在此基礎(chǔ)上加以替換.最新的國際可信標(biāo)準(zhǔn)BS10754-2018《信息技術(shù)系統(tǒng)可信性》中對(duì)軟件可信屬性模型與ISO 9126質(zhì)量標(biāo)準(zhǔn)相比有所改變,最新版國家標(biāo)準(zhǔn)GB/T 37970-2019《軟件過程及制品可信度評(píng)估》中提到的可信屬性沿用了GB/T 25000系統(tǒng)標(biāo)準(zhǔn)中的軟件質(zhì)量屬性模型,將可信屬性分為了功能性、性能效率、兼容性、易用性、可靠性、信息安全性、維護(hù)性、可移植性這8大屬性.大部分對(duì)于可信的研究也都是基于GB/T 25000標(biāo)準(zhǔn)里提及的8大屬性來進(jìn)行度量.
文獻(xiàn)[3]建立了基于軟件可信屬性的軟件可信性量化評(píng)估方法和體系,其基本思路是在確定好可信屬性模型后,確定屬性、子屬性、證據(jù)以及度量元來進(jìn)行相關(guān)度量建模.
陳火旺院士[7]提出了高可信性質(zhì)的概念,認(rèn)為軟件安全性是軟件系統(tǒng)的一個(gè)重要可信屬性,包括了可靠安全性(又叫防危性)、保密安全性,其定義如表1所示.
表1 信息安全性屬性釋義Tab.1 Interpretation of information security attributes
在表2 GB/T25000.10-2016中對(duì)于系統(tǒng)以及軟件產(chǎn)品質(zhì)量模型中安全屬性給出了相關(guān)子屬性劃分,具體包括保密性、完整性、抗抵賴性、可核查性、真實(shí)性、依從性等.另一類則是指在系統(tǒng)發(fā)生故障后,軟件盡量避免災(zāi)難性后果發(fā)生的能力,也叫防危性.這里的防危性可以理解為失效安全性.也是表1中的可靠安全性.
表2 GB/T25000.10-2016安全性釋義Tab.2 GB/T25000.10-2016 information security attributes
雖然安全性與防危性是兩個(gè)不同的屬性,所包含的意義和危害性的流向以及著重點(diǎn)都不一樣.但是,兩者的關(guān)系緊緊相連.防危性也同樣需要安全性的支持.比如,航天飛行器主系統(tǒng)存在漏洞遭到外界非法入侵以致于被篡改數(shù)據(jù),這樣就有可能導(dǎo)致災(zāi)難的出現(xiàn).所以本文防危性也可以作為可信安全屬性的子屬性之一.
可信度量模型是為軟件可信性建立度量方法和公式,目的是給軟件可信性建立一個(gè)數(shù)值或一個(gè)級(jí)別,量化區(qū)分軟件質(zhì)量的差異[3,8-10].
本文以經(jīng)典的故障模型來探討軟件系統(tǒng)的可信安全性.首先引入五個(gè)概念:攻擊(attack)、錯(cuò)誤(error)、缺陷(defect)、故障(fault)、失效(failure).錯(cuò)誤源自于開發(fā)人員在軟件開發(fā)過程中所產(chǎn)生的失誤,而這些失誤則會(huì)導(dǎo)致軟件產(chǎn)品缺陷.這些缺陷是指代碼中存在的可導(dǎo)致一個(gè)或一個(gè)以上的錯(cuò)誤編碼等.從廣義上講,缺陷也可以描述為需求文檔中的不正確描述.在軟件運(yùn)行時(shí)缺陷會(huì)出現(xiàn)不可接受的內(nèi)部狀態(tài),這種狀態(tài)即為故障.最終由于故障的累積就會(huì)導(dǎo)致軟件失效.軟件失效指的是軟件脫離了原本的需求的動(dòng)態(tài)運(yùn)行結(jié)果.如死機(jī)、輸出與期望不符的結(jié)果.而安全性就是從錯(cuò)誤到故障的一道保護(hù)機(jī)制.如圖1所示.
圖1 軟件失信機(jī)理Fig.1 Software Loss of trust mechanism
需要考慮產(chǎn)生故障后軟件系統(tǒng)組件可信度的變化.如何計(jì)算這樣一個(gè)遭受不應(yīng)該有的“失信”帶來的可信度呢?本文定義e為軟件運(yùn)行時(shí)態(tài)的錯(cuò)誤或缺陷,定義PX為軟件系統(tǒng)或組件的可信度.
定義1(抗傷害率).PrX為組件X在出現(xiàn)故障的前提下正常工作的概率:
PrX={組件X正常工作|組件X出現(xiàn)故障}
定義2(組件可信度).設(shè)PX為組件X發(fā)生故障之前的可信度,PtX為組件X在產(chǎn)生故障后的正常工作可信度,則定義:
PtX=PX×PrX
(1)
也就是說,當(dāng)組件被“傷害”時(shí)的可信度為未被“傷害”前的可信度與“抗傷害率”的乘積.
組件之間相互依賴是現(xiàn)在大型軟件系統(tǒng)的一般開發(fā)方法,這種相互依賴會(huì)產(chǎn)生可信性相互影響:某組件可信度降低會(huì)導(dǎo)致與之依賴的組件可信度或多或少地受到影響.下面來介紹組件與組件之間的信任關(guān)系模型.
圖2 組件信任關(guān)系圖Fig.2 Components trust-diagram
如圖2所示B組件依賴于A組件,或者說組件A對(duì)組件B的可信影響.其中m是可信影響因子,表示組件間的可信依賴程度.當(dāng)組件A發(fā)生故障時(shí),組件A的可信度發(fā)生了變化,同時(shí)這種可信度發(fā)生變化也會(huì)影響到組件B的可信性.
假設(shè)當(dāng)A組件可信度下降至某一個(gè)值時(shí),(不引起混淆的情況下,不妨就設(shè)A和A*為可信度下降之前和下降之后的可信度),此時(shí)A組件可信度減少值d為A-A*.d與m的乘積d×m表示A可信度減少后對(duì)B的可信度影響值,進(jìn)而組件B可信度變化為B*=B-d×m.
基于以上分析,給出組件信任關(guān)系的可信度量模型:
B*=B-(A-A*)×m
(2)
注. 組件間可信依賴程度的值越大代表組件間的可信性影響也就越大,受影響的組件的可信度下降越快.
下面兩個(gè)性質(zhì)是容易驗(yàn)證的.
也就是說當(dāng)A組件可信度下降的越快,B組件可信度也隨之下降的越快.
也就是說當(dāng)A組件可信度下降,若可信影響因子m越大,則B組件可信度下降越快,說明A組件對(duì)B組件的影響越大;若m越小,說明A組件對(duì)B的影響越小,B組件可信度下降越慢.
此外在軟件系統(tǒng)中組件間可信依賴可能是多個(gè)路徑產(chǎn)生的,如圖3所示.
圖3 并聯(lián)組件信任關(guān)系圖Fig.3 Parallel components trust diagram
組件A可以通過組件B1也可以通過組件B2對(duì)組件C產(chǎn)生可信影響.依據(jù)可信影響計(jì)算式(2),當(dāng)組件A下降后的可信度為A*時(shí), 可計(jì)算出組件C的兩個(gè)可信度:
C-((A-A*)×m1)×m3
C-((A-A*)×m2)×m4
本文采取謹(jǐn)慎態(tài)度,取這兩個(gè)可信度最低者為組件C的可信度.一般情況定義為:
(3)
本文以文獻(xiàn)[11]中“航天電源管理設(shè)備”為例,驗(yàn)證本文所建立的組件可信性依賴度量模型的有效性和適用性.某航天電源管理設(shè)備由兩臺(tái)并聯(lián)工作的電源管理計(jì)算機(jī)和一個(gè)控制協(xié)調(diào)單元組成.每臺(tái)電源管理計(jì)算機(jī)的配置也是一樣的.其中有9大組件如圖4所示.
該系統(tǒng)的功能是實(shí)現(xiàn)對(duì)飛行器電源供電的集中管理控制.根據(jù)飛行器的特點(diǎn),只要有一臺(tái)供電設(shè)備正常供電,那么整個(gè)系統(tǒng)就能正常工作.所以在安全性這一塊,需要注意的故障為:設(shè)計(jì)缺陷、制造缺陷和單元故障,這些會(huì)影響可信安全性.
除了因?yàn)楣收?、漏洞、攻擊的出現(xiàn)導(dǎo)致可信度未能達(dá)到最大值以外,還可能因?yàn)樵谲浖到y(tǒng)設(shè)計(jì)之初就存在因人力物力等因素使之不到達(dá)到最佳可信度,如該系統(tǒng)的CPU模塊中不需要CPU的主頻達(dá)到最佳性能,所以評(píng)估出來的可信度不是滿分.但這絕不意味著該系統(tǒng)有故障.根據(jù)2.1節(jié)給出的可信評(píng)估模型,對(duì)該系統(tǒng)做出可信評(píng)估如表3所示.
由于代碼編寫時(shí)通信組件M3的接口處的變量類型定義不一致,致使在運(yùn)行期測得通信模塊中因?yàn)槟承┳兞恐涤捎陬愋筒灰恢聦?dǎo)致編譯器自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型而產(chǎn)生變數(shù).
實(shí)驗(yàn)1中本文假定通信組件M3的這個(gè)缺陷出現(xiàn)后造成故障仍能工作的概率為0.8,即抗傷害率PrM3=0.8.根據(jù)式(1)故整個(gè)通信M3組件的可信度為9.616×0.8=7.6928.現(xiàn)在知道了通信組件可信度發(fā)生了變化,依據(jù)這些軟件系統(tǒng)組件間可信依賴關(guān)系(表4),可以計(jì)算出各個(gè)組件的新可信度.
而組件M2又影響著組件M1與M9.根據(jù)上述計(jì)算模型可得到整個(gè)系統(tǒng)因M3產(chǎn)生的錯(cuò)誤導(dǎo)致系統(tǒng)每個(gè)組件的可信度發(fā)生或多或少的降低.可信度變化如表5所示.
表5 實(shí)驗(yàn)1通信組件遭受攻擊后組件可信度變化情況Tab.5 Changes of component trustworthiness after communication module is attacked in experiment 1
從折線圖5可以看出當(dāng)M3出現(xiàn)錯(cuò)誤導(dǎo)致故障時(shí)M2與M9的可信度變化最大,M4與M5組件因?yàn)闆]有任何來自其他組件的影響,故可信度保持不變.
圖5 實(shí)驗(yàn)一可信值變化折線圖Fig.5 Line chart of the change of trust value in experiment 1
實(shí)驗(yàn)2中當(dāng)M1與M4有兩個(gè)組件同時(shí)出現(xiàn)故障,且M1的PrM1值為0.7,M4的PrM4值為0.8時(shí)的可信度變化如圖6所示.
表6 實(shí)驗(yàn)2通信組件遭受攻擊后組件可信度變化情況Table 6 Changes of component credibility after communication module is attacked in experiment 2
注意當(dāng)M4可信度下降時(shí),由于M4對(duì)M1會(huì)產(chǎn)生一定影響,M1的可信度同樣會(huì)下降.但是由于M1在故障后量化得到的可信度已經(jīng)涵蓋了M4對(duì)于M1所造成的影響,故不考慮此刻M4對(duì)于M1的信任牽連度.
此外在M2與M3組件的計(jì)算上,M4到M2路徑的影響小于M1到M2路徑的影響,M4到M3路徑的影響大于M1到M3路徑的影響.根據(jù)式(3),M2組件與M3組件都選取最低可信度.圖6為可信度變化對(duì)比.
圖6 實(shí)驗(yàn)二可信值變化折線圖Fig.6 Line chart of the change of trust value in experiment 2
兩組實(shí)驗(yàn)都表明模型在判斷可信關(guān)系時(shí)精確度高,說明該模型可以很好地評(píng)估組件間信任關(guān)系導(dǎo)致的可信度變化.本文設(shè)計(jì)度量模型除了上述作用外,還可以通過對(duì)信任關(guān)系的度量選擇最優(yōu)改進(jìn)的組件,幫助軟件系統(tǒng)開發(fā)者最大程度地優(yōu)化提高軟件系統(tǒng)的可信性.
本文重點(diǎn)在于對(duì)安全屬性的可信依賴關(guān)系進(jìn)行探討,設(shè)計(jì)了軟件系統(tǒng)組件可信性發(fā)生改變后對(duì)其它組件可信性影響度量模型,給出當(dāng)一組件可信性發(fā)生變化,整個(gè)軟件系統(tǒng)各組件可信性度量發(fā)生變化的一種量化方法.