專利名稱:一種新型分析信息流的方法
技術(shù)領(lǐng)域:
本發(fā)明是屬于信息安全技術(shù)領(lǐng)域,涉及一種信息流分析技術(shù)應(yīng)用于系統(tǒng)進(jìn)行隱通 道分析的方案,具體地說涉及一種基于系統(tǒng)源代碼搜索隱通道的信息流分析方法。
背景技術(shù):
自隱通道問題提出以來,各國(guó)的信息安全專家,以及計(jì)算機(jī)、數(shù)學(xué)、通訊等方面的 相關(guān)學(xué)者通過廣泛地研究發(fā)現(xiàn),隱通道在信息安全方面特別是信息的機(jī)密性泄露方面具有 一定的危害性。搜索出系統(tǒng)中存在的隱通道是進(jìn)行隱通道分析工作的前提和基礎(chǔ)。在眾多 隱通道搜索方法中,信息流分析法較為弓I人關(guān)注。信息流分析法是最早提出的隱通道搜索方法,分為語(yǔ)法信息流方法和語(yǔ)義信息流 方法。Derming的信息流格模型是語(yǔ)法信息流方法的典型代表。此方法的核心思想是,任 何對(duì)系統(tǒng)安全策略的違反(包含隱通道),都將體現(xiàn)為對(duì)“格(Lattice)”定義的破壞。通 常,語(yǔ)法信息流分析方法的分析步驟是(1)將信息流附加在每條語(yǔ)句之后。以賦值語(yǔ)句a =b為例,產(chǎn)生由b到a的信息流,用a —b表示。(2)定義安全信息流策略,如果有信息 流a —b,則a的安全級(jí)必須支配b的安全級(jí)。(3)將流策略應(yīng)用于形式化頂級(jí)描述或源代 碼,生成信息流公式,例如a : = b語(yǔ)句的流公式為SL(a)彡SL(b),其中SL(a)和SL(b)分 別表示變量a和b的安全級(jí)。(4)證明信息流公式的正確性,如果無法證明某個(gè)流公式的正 確性,則需要進(jìn)一步對(duì)語(yǔ)句進(jìn)行語(yǔ)義分析。該方法的優(yōu)點(diǎn)在于不會(huì)漏掉可能產(chǎn)生隱通道的 非法信息流,但同時(shí)也產(chǎn)生大量的偽非法流,需要通過手工的語(yǔ)義分析消除偽非法流。此后,Tsai等人對(duì)信息流分析方法作了很大的改進(jìn),增加了語(yǔ)義分析,提出了一種 基于語(yǔ)義信息流分析的隱通道搜索方法,即一種語(yǔ)義信息流方法。此方法的核心思想是(1)分析編程語(yǔ)言的語(yǔ)義、代碼和內(nèi)核中使用的數(shù)據(jù)結(jié)構(gòu),發(fā)現(xiàn)變量的可見性和可修改性;(2)解決變量的別名問題,確定變量的間接可修改性;C3)對(duì)源代碼進(jìn)行信息流分析,確定 變量的間接可見性。改進(jìn)的語(yǔ)義信息流方法可以發(fā)現(xiàn)大量偽非法流。信息流分析法既可以應(yīng)用于系統(tǒng)形式化頂級(jí)描述,也可以應(yīng)用于系統(tǒng)源代碼進(jìn)行 隱通道分析。對(duì)于一些形式化語(yǔ)言,已經(jīng)有了成功的自動(dòng)信息流分析工具,能夠?qū)ο到y(tǒng)的 形式化頂級(jí)描述作比較完全的信息流分析。但形式化描述與具體實(shí)現(xiàn)的系統(tǒng)源代碼之間 總是有差別的,而目前比較有影響的應(yīng)用于系統(tǒng)源代碼的信息流自動(dòng)分析工具僅見He與 Gligor研制的工具。目前基于系統(tǒng)形式化頂級(jí)描述分析信息流的隱通道搜索方法缺陷為簡(jiǎn)化工作量、得到較高的工作效率,目前主要是基于系統(tǒng)頂級(jí)描述進(jìn)行系統(tǒng)中 的隱通道搜索工作。因?yàn)榕c系統(tǒng)源代碼相比較,系統(tǒng)頂級(jí)描述簡(jiǎn)單易懂,對(duì)分析人員的要求 相對(duì)較低,從而省去很多繁瑣的工作。然而,盡管這樣可以得到較高的工作效率,但由于系 統(tǒng)頂級(jí)描述并沒有真實(shí)地體現(xiàn)系統(tǒng)實(shí)現(xiàn)的細(xì)節(jié),所以搜索結(jié)果的精度并不高,會(huì)出現(xiàn)漏報(bào) 和錯(cuò)報(bào)的情況。目前基于系統(tǒng)源代碼分析信息流的隱通道搜索方法缺陷
由于源代碼復(fù)雜難懂,直接針對(duì)系統(tǒng)源代碼分析信息流的工作量很大,目前這類 搜索方法缺乏行之有效的自動(dòng)化工具,需要輔之以手工操作分析源代碼中的信息流,對(duì)分 析人員的要求相當(dāng)高,顯然對(duì)于較大規(guī)模的系統(tǒng)來說,工作效率低,容易出錯(cuò)。He與Gligor 研制的自動(dòng)化工具應(yīng)用了系統(tǒng)強(qiáng)制安全模型在源代碼中的解釋,不能區(qū)分偽非法流與真實(shí) 非法流。
發(fā)明內(nèi)容
本發(fā)明的目的是解決基于系統(tǒng)源代碼搜索隱通道的問題?;诔绦蛟O(shè)計(jì)語(yǔ)言語(yǔ) 義,設(shè)計(jì)一套系統(tǒng)源代碼中信息流的描述方法,結(jié)合共享資源矩陣法,提出一種基于系統(tǒng)源 代碼搜索隱通道的信息流分析方法。本發(fā)明方法利用二叉樹結(jié)構(gòu)來描述系統(tǒng)源代碼中的信息流,通過遍歷樹將這些信 息存放在直觀、易于理解的信息流向圖中,為搜索隱通道提供信息流分析結(jié)果,再以此作為 輸入,構(gòu)造共享資源矩陣,分析系統(tǒng)中的隱通道。本發(fā)明的技術(shù)方案是一種基于系統(tǒng)源代碼搜索隱通道的信息流分析方法,包括 下列步驟(1)掃描系統(tǒng)源代碼借助程序設(shè)計(jì)語(yǔ)言編譯系統(tǒng)中的詞法分析程序,掃描系統(tǒng)源代碼,分別識(shí)別出源 代碼中的函數(shù)和函數(shù)中的語(yǔ)句、變量;根據(jù)掃描程序識(shí)別出的函數(shù)以及函數(shù)調(diào)用語(yǔ)句,確定 函數(shù)間的調(diào)用關(guān)系,給出每個(gè)函數(shù)的函數(shù)依賴集。(2)構(gòu)造信息流樹根據(jù)掃描程序識(shí)別出的能產(chǎn)生信息流的語(yǔ)句和變量,作為信息流分析的輸入,對(duì) 語(yǔ)句中的信息流進(jìn)行分析,采用一種二叉樹結(jié)構(gòu)來存放語(yǔ)句中的信息流信息,稱之為“信息 流樹”。信息流樹的構(gòu)造方法如下針對(duì)能產(chǎn)生信息流的各類語(yǔ)句,依據(jù)語(yǔ)句信息流規(guī)則,分別給出各類語(yǔ)句樹段的 構(gòu)造規(guī)則,并且定義了由語(yǔ)句樹段生成函數(shù)信息流樹的規(guī)則;當(dāng)掃描程序識(shí)別出某類信息流語(yǔ)句時(shí),根據(jù)此類語(yǔ)句的信息流樹構(gòu)造規(guī)則,先生 成語(yǔ)句樹段,用來記錄此語(yǔ)句中的信息流;再根據(jù)函數(shù)信息流樹的構(gòu)造規(guī)則,由函數(shù)中各語(yǔ)句的信息流樹生成函數(shù)信息流 樹,從而獲得各個(gè)函數(shù)中的信息流。(3)信息流樹剪枝通過分析函數(shù)內(nèi)部信息流的特點(diǎn),結(jié)合信息流的傳遞性,給出信息流樹剪枝的依 據(jù);利用剪枝依據(jù),將函數(shù)中與隱通道分析無關(guān)的信息流樹枝剪掉,得到只記錄函數(shù) 中與共享變量相關(guān)的信息流信息。(4)生成信息流向圖根據(jù)遍歷算法,對(duì)函數(shù)信息流樹進(jìn)行遍歷,生成函數(shù)的信息流向圖,圖中記錄函數(shù) 中共享變量的可見性和可修改性信息,即信息流分析的結(jié)果。(5)生成共享資源矩陣并搜索隱通道根據(jù)函數(shù)的信息流向圖,以函數(shù)依賴集為單位,獲得依賴集中函數(shù)間的共享變量可見性和可修改性信息,并生成用于共享資源矩陣隱通道搜索方法進(jìn)行隱通道分析的矩陣 結(jié)構(gòu);然后再以共享資源矩陣作為輸入,搜索隱通道,輸出系統(tǒng)中存在的隱通道序列。為說明信息流樹結(jié)構(gòu),這里介紹幾個(gè)和信息流樹相關(guān)的定義。①結(jié)點(diǎn)信息流樹中的最小單位,對(duì)應(yīng)著函數(shù)各語(yǔ)句中的語(yǔ)句關(guān)鍵字(如if, while等)、運(yùn)算符(如“=”)及變量。為能描述出所有的信息流,我們定義了三種結(jié)點(diǎn) “stmt”結(jié)點(diǎn)為語(yǔ)句結(jié)點(diǎn);“var”結(jié)點(diǎn)為變量結(jié)點(diǎn),記錄信息流中源變量和目標(biāo)變量的信息 (如變量名,變量類型等信息);“nullstmt”結(jié)點(diǎn)沒有任何意義,僅用于嵌套控制語(yǔ)句中控 制語(yǔ)句緊鄰出現(xiàn)的情況,用此結(jié)點(diǎn)作為一個(gè)過渡結(jié)點(diǎn)。②語(yǔ)句樹段結(jié)點(diǎn)按照一定的規(guī)則所構(gòu)成的用來描述一條語(yǔ)句中信息流的二叉 樹,稱為語(yǔ)句樹段。對(duì)函數(shù)中每一條語(yǔ)句,都要構(gòu)造其語(yǔ)句樹段,用來描述語(yǔ)句中的信息流。③信息流樹也是一種二叉樹,由若干個(gè)語(yǔ)句樹段連接而成,用來描述一個(gè)函數(shù)中 的信息流。信息流樹對(duì)應(yīng)著函數(shù),而構(gòu)成信息流樹的這些語(yǔ)句樹段則分別對(duì)應(yīng)著函數(shù)中的 各條語(yǔ)句。對(duì)于上述系統(tǒng)源代碼掃描步驟,進(jìn)一步說明如下為實(shí)現(xiàn)一個(gè)基于系統(tǒng)源代碼的隱通道搜索工作的自動(dòng)化,首先要解決的是自動(dòng)掃 描并分析系統(tǒng)源代碼,根據(jù)掃描結(jié)果構(gòu)造出用于信息流分析的函數(shù)信息流樹,并且確定函 數(shù)間的相互調(diào)用關(guān)系,即函數(shù)依賴集。為達(dá)到這一目的,考慮到一個(gè)語(yǔ)言的編譯程序可以對(duì) 源代碼進(jìn)行掃描并分析,借助高級(jí)語(yǔ)言編譯系統(tǒng)中的詞法分析程序,來完成對(duì)系統(tǒng)源代碼 的掃描。詞法分析器以源程序作為輸入,將其轉(zhuǎn)化為記號(hào)輸出。記號(hào)是指從源程序讀入的 一組字符串(如變量名、關(guān)鍵字、常數(shù)),通過詞法分析器轉(zhuǎn)化輸出的形式,而讀入的這一組 字符串就稱為記號(hào)的一個(gè)詞素。程序設(shè)計(jì)語(yǔ)言中常把標(biāo)識(shí)符(包括變量名、數(shù)組名、函數(shù)名 等等)、關(guān)鍵字、操作符、常量、文字串和標(biāo)點(diǎn)符號(hào)作為記號(hào)處理。一個(gè)記號(hào)往往會(huì)對(duì)應(yīng)多個(gè) 詞素,例如,高級(jí)語(yǔ)言中常用id作為標(biāo)識(shí)符的記號(hào),如pi、D2這兩個(gè)不同的變量名,在以記 號(hào)形式輸出時(shí)都表示為id,這樣不足以區(qū)分不同的標(biāo)識(shí)符。因此,詞法分析器必須為這個(gè)記 號(hào)提供附加的信息,稱之為記號(hào)的屬性,與記號(hào)構(gòu)成一個(gè)二元式輸出。上述信息流樹構(gòu)造步驟進(jìn)一步包括如下步驟首先分類定義程序設(shè)計(jì)語(yǔ)言的語(yǔ)句信息流規(guī)則(以C語(yǔ)言為例),然后依據(jù)語(yǔ)句信 息流規(guī)則,給出各類語(yǔ)句樹段的構(gòu)造方法;在此基礎(chǔ)上,構(gòu)造函數(shù)信息流樹。(1)所述語(yǔ)句信息流規(guī)則在Tsai和Gligor給出的簡(jiǎn)單信息流規(guī)則的基礎(chǔ)上,針對(duì)高級(jí)語(yǔ)言中語(yǔ)句各自的 特點(diǎn),將語(yǔ)句分為賦值語(yǔ)句、函數(shù)返回值語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句和嵌套控制語(yǔ)句五 類,分別給出它們的信息流規(guī)則。①賦值語(yǔ)句信息流規(guī)則規(guī)則1. Iva = vb ;則有信息流vb_ > va ;規(guī)則1. 2va—或 va++ ;則有信息流va_ > va ;規(guī)則1. 3va = vb ;且va,vb均為指針,則有信息流vb_ > va, va- > vb ;規(guī)則1. 4va = &vb ;且 va 為指針,則有信息流vb_ > va, va- > vb ;規(guī)則1. 5va = vb op. ..op vn ;其中op代表運(yùn)算符,則有信息流vb_ > va,...,vn- > va0②函數(shù)返回值語(yǔ)句信息流規(guī)則規(guī)則2. Ireturn (va);則有信息流va_ > *,其中,*代表語(yǔ)句所在的函數(shù);規(guī)貝Ij 2. 2return (va op. . . op vn);貝Ij有信息、流:va- > 氺,...,vn_ > 氺。③函數(shù)調(diào)用語(yǔ)句信息流規(guī)則規(guī)則3. Iva = F (χ);其中F (χ)代表函數(shù),則有信息流x_ > va ;規(guī)則3. 2F(x);則有χ- > *,其中*代表語(yǔ)句所在的函數(shù);規(guī)貝丨J3. 3va = F(xl, . . . , xn);則有信息流:xl_ > va, . . . , xn- > va ;規(guī)貝丨J 3. 4F(xl,…,xn);則有 xl_ >*,···,xn- > *。④控制語(yǔ)句信息流規(guī)則規(guī)則4. 1對(duì)于下面四條語(yǔ)句if / while (va op-com K) vb=m; if / while (va op-com K) vb++;if / while (va op-com K) vb—;if / while (va op-com K) Vb=F(X)JiJ^thl: va->vb;規(guī)貝丨J 4. 2if/while(va op_com K) {vb = ml ;· . . ;vn = mn ;};則有信息流:va- > vb, . . . , va- > vn ;規(guī)貝Ij 4. 3switch (va) (case :vb = ml ;· . . ;default :vn = mn ;);貝Ij 有信息流 va- > vb, . . . , va- > vn ;規(guī)則 4. 4if/whi Ie (va op_com K) return ;則有信息流:va- > * ;規(guī)貝 1J 4. 5switch (va) (case :return ;. . . ;default :return ; );則有信息流va_ >氺;規(guī)貝丨J 4. 6if/while(va op_com K) {vb = ml ;…;return ;};則有信息流:va- > vb, . . . , va- > 氺;規(guī)貝Ij 4. 7switch (va) (case :vb = m ;. . . default :return ;);貝Ij有信息、流va_ > vb, . . . , va- > 氺;規(guī)貝丨J4. 8if/while(F (χ) op_com K) va = m ;則有信息流:x_ > va ;規(guī)則4. 9if/while(F (χ) op_com K) return ;則有信息流χ- > * ;規(guī)貝丨J4. 10 if/while (F (χ) op_com K) {va = ml ;. . . vn = mn ;};則有信息流:x_ > va, . . . , χ- > vn ;規(guī)則4· 11 if/while (F (χ) op_com K) {va = ml ;· · · return ;};則有信息流x_ > va, . . . , χ- > * ;規(guī)貝丨J4. 12if/while(F(xl,. . ·,xn)op_com K) {va = ml ;· · · };則有信息流:xl_ >va, xl_ >...,..., xn- > va, xn- > ...;
規(guī)貝丨J 4. 13if (va op_com K) {vb = m ;· vb, . . . ;va- > vc...; · } else {vc = η ;· · · };貝Ij有信息流va_ >
規(guī)則 4. 14if/while ((va op_com Kl)op_log. . . op_log(vn op一com Kn)) {vm = m ;. . . };則有信息流:va- > vm, va- >...,..., vn- > vm, vn- > · · ·。規(guī)貝Ij 4. 15va = (vb op. . . vn) ? vc :vd ;貝U有信息、流vb_ > va, . . . , vn- > va。⑤嵌套控制語(yǔ)句信息流規(guī)則規(guī)則5.權(quán)利要求
1.一種基于系統(tǒng)源代碼搜索隱通道的信息流分析方法,其特征在于,所述信息流分析 方法包括下列步驟(1)借助程序設(shè)計(jì)語(yǔ)言編譯系統(tǒng)中的詞法分析程序,掃描系統(tǒng)源代碼,分別識(shí)別出源代 碼中的函數(shù)和函數(shù)中的語(yǔ)句、變量;(2)根據(jù)掃描程序識(shí)別出的函數(shù)以及函數(shù)調(diào)用語(yǔ)句,確定函數(shù)間的調(diào)用關(guān)系,構(gòu)造語(yǔ)句 樹段,給出每個(gè)函數(shù)的函數(shù)依賴集;(3)根據(jù)掃描程序識(shí)別出的能產(chǎn)生信息流的語(yǔ)句和變量,作為信息流分析的輸入,構(gòu)造 函數(shù)信息流樹,并進(jìn)行剪枝;(4)遍歷函數(shù)信息流樹,輸出每個(gè)函數(shù)的信息流向圖;(5)根據(jù)函數(shù)依賴集和它的信息流向圖,以函數(shù)依賴集為單位,獲得依賴集中函數(shù)間的 共享變量可見性和可修改性信息,生成共享資源矩陣;(6)以共享資源矩陣作為輸入,搜索隱通道,輸出系統(tǒng)中存在的隱通道序列。
2.根據(jù)權(quán)利要求1所述的分析方法,其特征在于,所述掃描系統(tǒng)源代碼步驟中具體采 用詞法分析程序?qū)ο到y(tǒng)源代碼進(jìn)行掃描。
3.根據(jù)權(quán)利要求1所述的分析方法,其特征在于,所述語(yǔ)句信息流規(guī)則中,將語(yǔ)句分為 賦值語(yǔ)句、函數(shù)返回值語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句和嵌套控制語(yǔ)句五類,分別給出它們 的信息流規(guī)則。
4.根據(jù)權(quán)利要求1所述的分析方法,其特征在于,所述語(yǔ)句樹段構(gòu)造規(guī)則是語(yǔ)句信息 流的源變量信息始終記錄在左孩子變量結(jié)點(diǎn)中,而語(yǔ)句信息流的目標(biāo)變量信息始終記錄在 右孩子變量結(jié)點(diǎn)中。
5.根據(jù)權(quán)利要求1所述的分析方法,其特征在于,所述剪枝算法包括以下步驟(1)對(duì)函數(shù)中的語(yǔ)句,構(gòu)造語(yǔ)句樹段,若語(yǔ)句為簡(jiǎn)單語(yǔ)句,則按步驟(2)處理;若語(yǔ)句為 嵌套控制語(yǔ)句,則按步驟C3)處理;(2)對(duì)函數(shù)中簡(jiǎn)單語(yǔ)句樹段進(jìn)行遍歷,遍歷的過程中查看是否需要剪枝遍歷源變量 結(jié)點(diǎn)時(shí),按步驟⑷處理;遍歷目標(biāo)變量結(jié)點(diǎn)時(shí),按(5)處理;遍歷非變量結(jié)點(diǎn)時(shí),無需任何 處理;(3)函數(shù)中嵌套控制語(yǔ)句的信息流樹進(jìn)行遍歷,遍歷的過程中查看是否需要剪枝遍 歷目標(biāo)變量結(jié)點(diǎn)時(shí),按步驟(5)處理;遍歷源變量結(jié)點(diǎn)時(shí),查看以它為源變量的目標(biāo)變量結(jié) 點(diǎn)若有某一目標(biāo)變量結(jié)點(diǎn)與其記錄的變量相同,則無需任何處理;否則,按步驟⑷處理; 遍歷非變量結(jié)點(diǎn)時(shí),無需任何處理;(4)對(duì)源變量結(jié)點(diǎn),考察已生成的函數(shù)信息流樹中的每一個(gè)變量結(jié)點(diǎn),若其中某一變 量結(jié)點(diǎn)是它父結(jié)點(diǎn)的右孩子,且與該源變量結(jié)點(diǎn)記錄的是同一變量,則分以下兩種情況處 理①記錄的是局部變量,則將這一變量結(jié)點(diǎn)的父結(jié)點(diǎn)的左子樹復(fù)制,并替換該源變量結(jié)占.^ w\ ②記錄的是全局變量,則將這一變量結(jié)點(diǎn)的父結(jié)點(diǎn)的左子樹復(fù)制,并作為該源變量結(jié) 點(diǎn)的左子樹;(5)對(duì)目標(biāo)變量結(jié)點(diǎn),考察已生成的函數(shù)信息流樹中的每一個(gè)變量結(jié)點(diǎn),若其中某一變 量結(jié)點(diǎn)是它父結(jié)點(diǎn)的右孩子,且與該結(jié)點(diǎn)記錄的是同一變量,則分以下三種情況處理①這一變量結(jié)點(diǎn)有左子樹,則用“nullstmt”類型結(jié)點(diǎn)替換它;②這一變量結(jié)點(diǎn)無左子樹,且它的父結(jié)點(diǎn)和右孩子結(jié)點(diǎn)均為語(yǔ)句結(jié)點(diǎn),則將它所在的 語(yǔ)句樹段從樹中刪除;③這一變量結(jié)點(diǎn)無左子樹,且它的父結(jié)點(diǎn)或右孩子結(jié)點(diǎn)不是語(yǔ)句結(jié)點(diǎn),則僅將此變量 結(jié)點(diǎn)從信息流樹中刪除;(6)將經(jīng)過剪枝處理的語(yǔ)句樹段連到函數(shù)信息流樹中;(7)對(duì)函數(shù)中每一條語(yǔ)句,重復(fù)以上步驟,直到函數(shù)體結(jié)束;(8)對(duì)得到的函數(shù)信息流樹考察其所有變量結(jié)點(diǎn),若某一變量結(jié)點(diǎn)是它父結(jié)點(diǎn)的左孩 子,且結(jié)點(diǎn)中記錄的是局部變量,則將該變量結(jié)點(diǎn)從樹中刪除;(9)對(duì)得到的函數(shù)信息流樹考察其每一個(gè)語(yǔ)句樹段,對(duì)簡(jiǎn)單語(yǔ)句樹段,按步驟(10)處 理;對(duì)嵌套控制語(yǔ)句樹段,按步驟(11)處理;(10)對(duì)簡(jiǎn)單語(yǔ)句樹段,若其中某一變量結(jié)點(diǎn)是它父結(jié)點(diǎn)的右孩子,且它記錄的是局部 變量,則分以下兩種情況處理①這一變量結(jié)點(diǎn)的父結(jié)點(diǎn)和右孩子結(jié)點(diǎn)均為語(yǔ)句結(jié)點(diǎn),則將此樹段從信息流樹中刪除;②這一變量結(jié)點(diǎn)的父結(jié)點(diǎn)或右孩子結(jié)點(diǎn)是變量結(jié)點(diǎn),則僅將此結(jié)點(diǎn)從語(yǔ)句樹段中刪除;(11)對(duì)嵌套控制語(yǔ)句樹段,若其中某一變量結(jié)點(diǎn)是它父結(jié)點(diǎn)的右孩子,且它記錄的是 局部變量,則分以下兩種情況處理①這一變量結(jié)點(diǎn)的父親結(jié)點(diǎn)和右孩子結(jié)點(diǎn)都不是變量結(jié)點(diǎn),則用null類型結(jié)點(diǎn)代替 此結(jié)點(diǎn);②這一變量結(jié)點(diǎn)的父親結(jié)點(diǎn)或右孩子結(jié)點(diǎn)是變量結(jié)點(diǎn),則僅將此右子樹結(jié)點(diǎn)從語(yǔ)句樹 段中刪除。
6.根據(jù)權(quán)利要求1所述的分析方法,其特征在于,由函數(shù)信息流樹生成信息流向圖的 方法如下(1)信息流樹線索化在構(gòu)造語(yǔ)句樹段時(shí),令源變量結(jié)點(diǎn)的右子樹指針始終指向其后生成的目標(biāo)變量或null 類型結(jié)點(diǎn),并令目標(biāo)變量結(jié)點(diǎn)的右子樹指針也始終指向其后生成的結(jié)點(diǎn);(2)遍歷線索化的信息流樹,生成信息流向圖 ①遍歷語(yǔ)句樹段尋找目標(biāo)變量的過程a)對(duì)樹中某一語(yǔ)句樹段中的一個(gè)源變量結(jié)點(diǎn),設(shè)有一指針Q,令其指向該源變量結(jié)點(diǎn) 的右指針指向的結(jié)點(diǎn);b)如果Q指向結(jié)點(diǎn)是變量類型結(jié)點(diǎn),表示該結(jié)點(diǎn)記錄的是目標(biāo)變量,找到一條信息流, 將信息流信息寫入信息流向圖中;c)若此結(jié)點(diǎn)左指針不為空,則Q指向其左指針指向的結(jié)點(diǎn),跳至步驟b);若其左指針為 空,則Q指向其右指針指向的結(jié)點(diǎn)。若Q為空,或Q指向結(jié)點(diǎn)為語(yǔ)句結(jié)點(diǎn),或Q指向結(jié)點(diǎn)與 源變量結(jié)點(diǎn)不在同一語(yǔ)句結(jié)點(diǎn)下,則此次遍歷結(jié)束;d)如果Q指向結(jié)點(diǎn)是語(yǔ)句類型結(jié)點(diǎn),則Q指向它的右指針指向的結(jié)點(diǎn),跳至步驟b);e)如果Q指向結(jié)點(diǎn)是null類型結(jié)點(diǎn),表示則Q指向它的左子樹結(jié)點(diǎn),跳至步驟b);②尋找源變量結(jié)點(diǎn)過程設(shè)P為指向信息流樹中某一源變量結(jié)點(diǎn)的指針,假設(shè)根據(jù)上述遍歷語(yǔ)句樹段中目標(biāo)變 量結(jié)點(diǎn)的過程,已經(jīng)找出了所有以P指向結(jié)點(diǎn)為源變量的信息流的目標(biāo)變量結(jié)點(diǎn),接下來 要找到樹中下一個(gè)源變量結(jié)點(diǎn),進(jìn)行遍歷,則在樹中尋找下一個(gè)源變量結(jié)點(diǎn)的過程如下a)如果P的左指針不為空,則P指向它的左指針指向的結(jié)點(diǎn),此結(jié)點(diǎn)即為要找的下一個(gè) 源變量結(jié)點(diǎn),尋找過程結(jié)束;b)如果P的左指針為空,則P指向它的右指針指向的結(jié)點(diǎn);c)跳至第f)步,直至P的左指針不為空;d)指向它的左指針指向的結(jié)點(diǎn);e)如果P指向結(jié)點(diǎn)是語(yǔ)句結(jié)點(diǎn),則P指向它的左指針指向的結(jié)點(diǎn),此結(jié)點(diǎn)即為要找的下 一個(gè)源變量結(jié)點(diǎn),尋找過程結(jié)束。
全文摘要
一種基于系統(tǒng)源代碼搜索隱通道的信息流分析方法,在信息流分析過程中利用信息流樹結(jié)構(gòu)來描述系統(tǒng)源代碼中的信息流,通過遍歷信息流樹將這些信息存放在直觀、易于理解的信息流向圖中,從而為搜索隱通道提供信息流分析結(jié)果,再以信息流向圖作為輸入,構(gòu)造共享資源矩陣,搜索并分析系統(tǒng)中的隱通道。本發(fā)明方法可以提高隱通道搜索工作的精度。
文檔編號(hào)H04L29/06GK102043925SQ20091023388
公開日2011年5月4日 申請(qǐng)日期2009年10月23日 優(yōu)先權(quán)日2009年10月23日
發(fā)明者李驍淳, 鞠時(shí)光 申請(qǐng)人:鎮(zhèn)江雅迅軟件有限責(zé)任公司