沈雷 左蕓 解群 李翔
摘要:國產(chǎn)計算機(jī)系統(tǒng)的自主可控評價可從兩方面考慮,一是知識產(chǎn)權(quán)自主可控;二是運(yùn)行安全可靠。文章對國產(chǎn)計算機(jī)系統(tǒng)的自主可控評估方法開展研究。重點關(guān)注軟件自主可控度的評價,對軟件代碼克隆檢測、軟件演化分析及溯源分析等方法進(jìn)行分析,給出了軟件自主可控測試工具的設(shè)計方案。
關(guān)鍵詞:國產(chǎn)化;自主可控;軟件測試
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)02-0154-05
1 概述
隨著國家“自主可控”規(guī)劃的推進(jìn),近年來國產(chǎn)軟硬件得到快速發(fā)展。硬件方面,龍芯、申威、飛騰等國產(chǎn)處理器經(jīng)歷多個版本的改進(jìn)升級,性能穩(wěn)步提升,與國外主流處理器的差距越來越小。軟件方面,以中標(biāo)麒麟操作系統(tǒng)、銳華操作系統(tǒng)、達(dá)夢數(shù)據(jù)庫為代表的國產(chǎn)基礎(chǔ)軟件也在軍政各個行業(yè)得到廣泛應(yīng)用,自主可控計算機(jī)環(huán)境已經(jīng)逐漸形成。
本文通過分析國產(chǎn)計算機(jī)環(huán)境的特點,提出一種自主可控測試工具的設(shè)計方案,用于對國產(chǎn)計算機(jī)系統(tǒng)軟硬件自主可控程度進(jìn)行測試。
2 自主可控發(fā)展背景及現(xiàn)狀
數(shù)年前,我國軍事裝備的基礎(chǔ)設(shè)備及其核心技術(shù)基本靠進(jìn)口,無法從根本上保障信息的安全,國民經(jīng)濟(jì)和國防安全均存在安全隱患。因此,軟硬件自主可控的國產(chǎn)化改進(jìn)得到了國家的高度重視,隨著“自主可控”規(guī)劃的推進(jìn),國內(nèi)自主可控計算機(jī)環(huán)境已經(jīng)逐漸形成,國產(chǎn)關(guān)鍵軟硬件產(chǎn)品已開始得到應(yīng)用(表1)。
目前,國產(chǎn)計算機(jī)環(huán)境的應(yīng)用面、規(guī)模相對較小,應(yīng)對復(fù)雜裝備環(huán)境時,兼容性、綜合性能、可靠性驗證不充分,缺乏有效的診斷分析工具、測試評估環(huán)境。如何確保國產(chǎn)化軟硬件環(huán)境具有完全自主知識產(chǎn)權(quán),真正做到安全可控,這給測試工作帶來新的挑戰(zhàn)。
3 國產(chǎn)計算機(jī)自主可控評估方法
單一軟硬件的自主可控度主要由軟硬件的設(shè)計實現(xiàn)方案決定,同一型號產(chǎn)品的自主可控評價結(jié)果應(yīng)該是一個固定值。出于保密需要,測評人員往往無法獲取某產(chǎn)品的詳細(xì)設(shè)計實現(xiàn)方案,所以通常只能由廠商根據(jù)對應(yīng)軟硬件的評價模型計算結(jié)果,并發(fā)布到產(chǎn)品數(shù)據(jù)庫。在具體評估項目中只需獲取計算機(jī)中各軟硬件的唯一性特征標(biāo)識,包括型號+版本+其他唯一性標(biāo)識(比如CPU的串碼,軟件序列號等),再通過數(shù)據(jù)庫中查詢匹配對應(yīng)的自主可控結(jié)果。
對整機(jī)系統(tǒng)的自主可控評價(圖1),可由組成系統(tǒng)的軟硬件單品的自主可控度進(jìn)行加權(quán)計算后獲得。
本文第3節(jié)對軟件自主可控測試技術(shù)進(jìn)行了詳細(xì)說明,第4節(jié)提出了自主可控測試工具的實現(xiàn)方案,第5節(jié)對關(guān)鍵技術(shù)做了簡單介紹。
4 軟件自主可控測試技術(shù)研究
現(xiàn)有的軟件代碼分析技術(shù)主要包括以下幾類:
4.1 代碼克隆檢測與代碼相似性分析
國產(chǎn)化系統(tǒng)軟件很多源于Linux開源項目,代碼相似性分析對國產(chǎn)軟件評估有著十分重要的作用。
軟件克隆研究包括克隆定義與分類、相似性分析、克隆管理以及相關(guān)的實例研究與工具開發(fā)等。對于代碼克隆分類,較普遍認(rèn)可的是Roy等人分為四類的提議[1]: 第一類指除空白和注釋外完全相同的代碼片段,也稱為精確克隆; 第二類指除空白、注釋以及變量名及常量值的變化外,語法結(jié)構(gòu)完全相同的代碼片段; 第三類指除包含第二類克隆所涉及差異外,還存在少量語句增加、刪除、修改的代碼片段,也稱為近似克隆; 第四類指具有相同的語義,但采用不同語法形式的代碼片段。前三類克隆從文本相似的角度進(jìn)行劃分,第四類則從功能相似的角度劃分。
軟件克隆檢測包括兩方面研究內(nèi)容,即候選克隆片段的選取與候選克隆片段的相似性分析。候選克隆片段的選取是決定整體克隆檢測速度的關(guān)鍵因素之一,一般可基于編程語言的語法結(jié)構(gòu)選取克隆片段。候選克隆片段的相似性分析也是決定整體克隆檢測速度的關(guān)鍵因素,可使用后綴樹(suffix tree)和頻繁子序列挖掘(frequent subsequent mining)算法等進(jìn)行匹配檢測,對于有向標(biāo)記圖形態(tài)的模型規(guī)范化表示,可使用子圖同構(gòu)(subgraph isomorphism)、特征向量(characteristic vector)[2]等技術(shù)進(jìn)行檢測。以色列技術(shù)學(xué)院的Yaniv David和Eran Yahav提出針對二進(jìn)制代碼的相似性分析技術(shù),并成功應(yīng)用于二進(jìn)制代碼搜索中。該技術(shù)將二進(jìn)制代碼抽象成程序流圖,并通過流圖相似性以判別軟件相似性。有研究發(fā)現(xiàn),一個程序片段與另一個程序片段可能存在特殊關(guān)聯(lián),并提出規(guī)則制導(dǎo)的克隆同步方法來實現(xiàn)對“異型同義”的克隆代碼間的一致性維護(hù)。
4.2 軟件演化分析
經(jīng)過數(shù)年發(fā)展,國產(chǎn)化系統(tǒng)軟件在不斷改進(jìn)完善中也演化出針對不同平臺的多個版本。對演化歷史的分析同樣是一個值得關(guān)注的問題。
Harald Gall[3]等人提出一個三維直觀表示方法來檢測一個軟件版本的歷史信息。三維信息分別是:時間、軟件系統(tǒng)結(jié)構(gòu)、一種屬性值。每個結(jié)構(gòu)用版本序列號確定,并且擁有自己的屬性值,這些屬性值用顏色來表示,每個顏色模塊與抽象分解模塊連接。Tudor Girba[4]等人根據(jù)軟件在運(yùn)行過程中的一系列需求提出一個演化分析方法Hismo,其通過可視化的手段對軟件歷史行為進(jìn)行建模,以表示軟件演化的過程。Robbes[5]為軟件中操作和信息的變化進(jìn)行建模,以便從程序環(huán)境中快速找到影響系統(tǒng)的操作,這樣就能夠?qū)浖倪\(yùn)行進(jìn)行準(zhǔn)確地監(jiān)控,可以使開發(fā)者和研究者更好地利用和管理更為復(fù)雜的系統(tǒng)。
軟件演化的另一個研究熱點是在線演化。目前國產(chǎn)化軟件中還未出現(xiàn)大規(guī)模在線演化的實例,此處不展開贅述。
4.3 軟件溯源分析
4.3.1 基于軟件來源追蹤的軟件溯源分析
為提升開發(fā)效率,軟件構(gòu)造過程中開發(fā)人員常常簡單克隆互聯(lián)網(wǎng)上開源代碼,并作針對性修改。然而,上述軟件來源與軟件需求常常不能精確匹配,導(dǎo)致代碼與軟件需求間存在差異;軟件經(jīng)過反復(fù)修改后,其來源也常常變得不可追蹤。針對軟件來源追蹤問題,以開源軟件庫為數(shù)據(jù)源,通過代碼相似性搜索、機(jī)器學(xué)習(xí)等技術(shù)實現(xiàn)軟件來源追蹤框架,基于互聯(lián)網(wǎng)搜索進(jìn)行軟件溯源和差異分析。
4.3.2 基于軟件依賴關(guān)系的軟件溯源分析
開源軟件在為應(yīng)用提供海量可復(fù)用制品和群體開發(fā)支持的同時,亦為其引入了額外的依賴復(fù)雜性和配置動態(tài)性。軟件系統(tǒng)的可依賴性對可控性影響日益突出。同時開放環(huán)境下,軟件組件的不可控將被放大至整個軟件系統(tǒng)的不可控??梢詮能浖窘Y(jié)構(gòu)、構(gòu)造方法著手,研究軟件的多重復(fù)雜性、環(huán)境的不確定性及其對其它軟件資源的強(qiáng)依賴性,保障軟件可控地被開發(fā)、運(yùn)行與演化。
4.3.3 基于軟件演化歷史的軟件溯源分析
在開放、動態(tài)、難控的互聯(lián)網(wǎng)環(huán)境下,以用戶為中心的軟件應(yīng)用需要主動感知和適應(yīng)環(huán)境,并隨著開放用戶群體的需求變動而持續(xù)地演進(jìn)。這就需要從軟件的演化歷史進(jìn)行研究。通過搜集軟件演化歷史,闡明軟件持續(xù)演進(jìn)機(jī)理,發(fā)現(xiàn)軟件及其組件演進(jìn)規(guī)律,實現(xiàn)基于軟件演化歷史的軟件溯源分析。
5 軟件自主可控測試工具
5.1 源代碼分析工具
源代碼分析主要基于成熟的代碼靜態(tài)分析技術(shù)和運(yùn)行時追蹤技術(shù),對軟件關(guān)鍵代碼進(jìn)行靜態(tài)分析和動態(tài)測試,掌握代碼的基本質(zhì)量情況和特征值,并錄入進(jìn)基準(zhǔn)數(shù)據(jù)庫。組成圖如圖2所示。
靜態(tài)分析主要包含代碼復(fù)雜度分析,靜態(tài)拓?fù)浣Y(jié)構(gòu)特征分析,結(jié)構(gòu)穩(wěn)定性分析,系統(tǒng)基礎(chǔ)結(jié)構(gòu)分析等,同時,將發(fā)現(xiàn)的問題錄入進(jìn)缺陷庫。此外,支持對二進(jìn)制文件進(jìn)行反匯編來進(jìn)行特征值提取,并通過建立索引存入基準(zhǔn)數(shù)據(jù)庫,為溯源分析提供基準(zhǔn)數(shù)據(jù)。
動態(tài)測試主要是通過插樁技術(shù),在軟件運(yùn)行時檢測軟件行為。可借助insure++等工具完成動態(tài)測試。
源代碼分析的代碼質(zhì)量等度量數(shù)據(jù)將存入軟件度量庫,軟件代碼分析得出的缺陷存入軟件缺陷庫,為代碼缺陷管理提供支撐。
5.2 軟件溯源分析工具
主要從軟件來源追蹤、依賴關(guān)系和演化歷史三部分進(jìn)行溯源分析。如圖3所示。
來源追蹤主要通過代碼相似性搜索、機(jī)器學(xué)習(xí)等技術(shù)實現(xiàn)軟件來源追蹤框架,進(jìn)而設(shè)計并實現(xiàn)基于互聯(lián)網(wǎng)搜索的軟件來源發(fā)現(xiàn)和差異分析的支撐工具原型,形成FOSS(Free and Open Source Software)基準(zhǔn)數(shù)據(jù)庫;在上述研究進(jìn)展基礎(chǔ)上,形成基于互聯(lián)網(wǎng)搜索及代碼相似性分析技術(shù)的軟件溯源分析。
依賴關(guān)系,從軟件基本結(jié)構(gòu)、構(gòu)造方法進(jìn)行研究混源軟件的依賴復(fù)雜性和配置動態(tài)性,通過搜索商用軟件和第三方軟件,形成商用軟件基準(zhǔn)庫。研究軟件的多重復(fù)雜性、環(huán)境的不確定性及其對其它軟件資源的強(qiáng)依賴性,保障軟件可控地被開發(fā)、運(yùn)行與演化。
演化歷史將歷史項目構(gòu)件通過代碼分析后提取特征值和索引存入歷史項目構(gòu)件庫,通過搜集軟件演化歷史,闡明軟件持續(xù)演進(jìn)機(jī)理,發(fā)現(xiàn)軟件及其組件演進(jìn)規(guī)律,實現(xiàn)基于軟件演化歷史的軟件溯源分析。
5.3 可控性度量工具
建立一套軟件可控性度量指標(biāo)和分級準(zhǔn)則,從代碼知識產(chǎn)權(quán)可控(軟件來源、軟件復(fù)用程度、軟件依賴關(guān)系)、質(zhì)量可控、技術(shù)能力可控(軟件工程能力)等方面建立指示器和度量元,并提供度量采集和分析方法。用戶可通過對各項指標(biāo)的加權(quán)計算值獲得軟件最終的可控性度量級別。如圖4所示。
知識產(chǎn)權(quán)可控是軟件可控性的關(guān)鍵,需要依靠溯源分析技術(shù),對軟件知識產(chǎn)權(quán)進(jìn)行測試。利用代碼相似度分析技術(shù),解決與開源代碼有關(guān)的管理、合規(guī)和安全等方面的問題。
5.4 基準(zhǔn)數(shù)據(jù)庫及搜索引擎
基準(zhǔn)數(shù)據(jù)庫由FOSS基準(zhǔn)庫、商用軟件基準(zhǔn)庫、歷史項目構(gòu)件庫、軟件缺陷庫和軟件度量庫五個基本庫組成。如圖5所示。
利用網(wǎng)絡(luò)爬蟲技術(shù),從互聯(lián)網(wǎng)知名開源社區(qū)中搜索下載FOSS開源軟件,通過代碼相似性搜索、機(jī)器學(xué)習(xí)等技術(shù)實現(xiàn)軟件來源追蹤框架,進(jìn)而設(shè)計并實現(xiàn)基于互聯(lián)網(wǎng)搜索的軟件來源發(fā)現(xiàn)和差異分析的支撐工具原型,逐步建立FOSS基準(zhǔn)數(shù)據(jù)庫。在上述研究進(jìn)展基礎(chǔ)上,形成基于互聯(lián)網(wǎng)搜索及代碼相似性分析技術(shù)的軟件溯源分析。
商用軟件主要是針對COTS產(chǎn)品中提供的基礎(chǔ)軟件、中間件、第三方庫文件等二進(jìn)制分析,建立商用軟件基準(zhǔn)庫,同時,收集該類產(chǎn)品中可能存在的軟件缺陷,為商用軟件方案選型和成本估算提供支撐。
歷史項目構(gòu)件通過代碼分析后提取特征值并建立索引存入歷史項目構(gòu)件庫,通過搜集軟件演化歷史,闡明軟件持續(xù)演進(jìn)機(jī)理,為發(fā)現(xiàn)軟件及其組件演進(jìn)規(guī)律,實現(xiàn)基于軟件演化歷史的軟件溯源分析提供支撐。
6 關(guān)鍵技術(shù)
6.1 代碼相似度分析
代碼相似性進(jìn)行分析可考慮以下三個方面:
(1)基于簡單文本匹配算法的代碼相似性分析。代碼克隆檢測是常見的代碼相似性分析技術(shù),其主要利用字符串匹配算法,計算代碼間相似性,評判代碼間是否互為克隆。項目擬從基本的克隆分析入手,結(jié)合互聯(lián)網(wǎng)搜索引擎,搜索互聯(lián)網(wǎng)代碼并尋找高相似代碼。
(2)基于樹圖相似性的程序相似性分析。由于軟件在演化過程中常常被修改,導(dǎo)致克隆檢測技術(shù)無法廣泛應(yīng)用于代碼溯源過程中。為此,可以將程序抽象為語法樹或者程序流圖,并基于程序樹、圖相似性進(jìn)行程序相似性分析。進(jìn)一步的,研究將二進(jìn)制代碼抽象為程序流圖,實現(xiàn)在二進(jìn)制代碼層次上的軟件相似性檢測。
(3)基于程序行為相似性的相似性分析。項目擬進(jìn)一步拓寬相似性內(nèi)涵,通過研究軟件行為相似性發(fā)現(xiàn)軟件根源。特別是,對于基于不同平臺、采用不同語言開發(fā)的軟件,經(jīng)常也存在高度相似性。這里將抽象軟件行為,分析軟件相似行為及相似行為組合,從而確定軟件相似性。
6.2 基準(zhǔn)數(shù)據(jù)庫及搜索引擎
可以考慮從以下幾個方面建立基準(zhǔn)數(shù)據(jù)倉庫:
(1)從互聯(lián)網(wǎng)上搜索FOSS和可下載代碼;
(2)測評過程中被測系統(tǒng)樣本;
(3)測評過程中被測軟件關(guān)鍵模塊的代碼評估結(jié)果;
(4)基于資產(chǎn)庫中提取的缺陷和典型問題;
(5)COTS產(chǎn)品、第三方構(gòu)件庫等。
基于該基準(zhǔn)數(shù)據(jù)庫,設(shè)計數(shù)據(jù)結(jié)構(gòu),并建立索引機(jī)制,通過多重索引匹配定位技術(shù),設(shè)計高性能的大規(guī)模數(shù)據(jù)量的搜索引擎,為實現(xiàn)百萬級的代碼檢測提供支撐。
依據(jù)一定的相關(guān)度算法(如超鏈接算法)進(jìn)行大量計算,創(chuàng)建倒排序的索引庫。索引庫建好后用戶就可以通過提供的搜索界面提交關(guān)鍵詞進(jìn)行搜索,依據(jù)特定的排序算法返回搜索結(jié)果。因此,搜索引擎并不是對互聯(lián)網(wǎng)進(jìn)行直接搜索,而是對已抓取網(wǎng)頁索引庫的搜索,這也是能快速返回搜索結(jié)果的原因,索引在其中扮演了最為重要的角色,索引算法的效率直接影響搜索引擎的效率,是評測搜索引擎是否高效的關(guān)鍵因素。
7 結(jié)語
國產(chǎn)計算機(jī)的自主可控評價包括兩方面,一個是知識產(chǎn)權(quán)方面的自主可控;另一方面是運(yùn)行安全可靠。本文重點從知識產(chǎn)權(quán)的角度展開了分析。從運(yùn)行安全的角度,軟硬件的功能安全評價可參考GB20438(IEC61508),可以對軟硬件進(jìn)行失效分析,以及從實際應(yīng)用中獲取軟硬件的平均無故障工作時間,計算缺陷/失效率后給出一個合理的可靠性評分。
應(yīng)從系統(tǒng)開發(fā)生命周期的角度進(jìn)行功能安全和信息安全的評價,測試過程中發(fā)現(xiàn)的問題可以作為評價的主要參考依據(jù),如操作系統(tǒng)和數(shù)據(jù)庫軟件的常見漏洞是否提供補(bǔ)丁等。軟硬件單品的自主可控評價應(yīng)該結(jié)合知識產(chǎn)權(quán)和安全可靠兩方面進(jìn)行綜合評價,既有完全知識產(chǎn)權(quán)又運(yùn)行穩(wěn)定可靠的產(chǎn)品才是真正意義上的自主可控。
參考文獻(xiàn)
[1] 梁正平,程一群,譚佳加,馬驍馳,等.軟件克隆檢測技術(shù)研究[J].計算機(jī)應(yīng)用研究,2012,29(5):1623-1627.
[2] 舒翔.基于索引和序列匹配的代碼克隆檢測技術(shù)研究[D].杭州:杭州電子科技大學(xué),2015.
[3] Gall H,Jazayeri M, Riva C. The use of color and third dimension. Visualizing software release histories[J].Software Maintenance.IEEE Press,1999.792584:99-108.
[4] Grba T,Ducasse S.Modeling history to analyze software ecolution[J].Journal on Software Maintenance and Evolution: Research and Practice,2006,18(3):207-236.
[5] Robbes R,Lanza M. A change-based approach to software evolution[J].Electronic Notes in Theoretical Computer Science,2007,166:93-109.
The Design of Testing Tools in Self-controlled Domestically-made System
SHEN Lei, ZUO Yun, XIE Qun, LI Xiang
(China Electronics Technology Group Corporation Thirty-two Institute, Shanghai? 201808)
Abstract:The self-controlled domestically-made computer systems are evaluated in two aspects, the first is the self-controlled intellectual property right; the second is the safe and reliable operation. This paper focuses on the evaluation about domestically-made system. The evaluation mainly adopted the methods of software code cloning detection, software evolution and traceability analysis, and proposed the solution of self-controlled software testing tool.
Key words:domestically-made;self-controlled;software testing