本發(fā)明涉及源代碼數(shù)據(jù)檢測(cè)技術(shù)領(lǐng)域,具體涉及一種多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)方法及裝置。
背景技術(shù):
作為研發(fā)設(shè)計(jì)企業(yè),設(shè)計(jì)文檔、圖紙和源代碼等數(shù)據(jù)是企業(yè)的核心智慧資產(chǎn),也是企業(yè)的核心競(jìng)爭(zhēng)力所在,對(duì)這些核心數(shù)據(jù)進(jìn)行有效管控是企業(yè)信息安全工作的重中之重。其中源代碼數(shù)據(jù)由于以文本文件或文本片段的形式存在,更易混雜或嵌入在常規(guī)的文本文件中,進(jìn)而發(fā)生流失、泄密或非受控?cái)U(kuò)散等危害企業(yè)信息安全的情況。這些源代碼數(shù)據(jù)丟失的情況大多發(fā)生原因是企業(yè)內(nèi)部人員的無意操作,也有少數(shù)來自內(nèi)部人員的故意泄密和企業(yè)外部的惡意攻擊。這些數(shù)據(jù)丟失情況的發(fā)生,對(duì)于研發(fā)設(shè)計(jì)企業(yè)可能會(huì)帶來災(zāi)難性的后果。因此企業(yè)需要對(duì)源代碼數(shù)據(jù)的分布、存儲(chǔ)、流轉(zhuǎn)、外發(fā)進(jìn)行全方位的管控,而源代碼數(shù)據(jù)檢測(cè)方法是實(shí)現(xiàn)這些管控的基礎(chǔ)。
數(shù)據(jù)安全管控技術(shù)的發(fā)展經(jīng)歷了DSM(數(shù)據(jù)加密軟件)、DSA(數(shù)據(jù)安全隔離)、DLP(數(shù)據(jù)泄漏防護(hù))三個(gè)階段。在進(jìn)行源代碼數(shù)據(jù)的保護(hù)時(shí),因?yàn)樵创a的進(jìn)程調(diào)用十分復(fù)雜,如果進(jìn)行加密,極易損壞代碼或影響系統(tǒng)性能,所以DSM并不適用于源代碼數(shù)據(jù)的保護(hù)。目前主要采用的源代碼防護(hù)都是基于DSA或DLP的。DSA并不對(duì)源代碼進(jìn)行加密,而是保證源代碼僅在隔離出的數(shù)據(jù)安全區(qū)域中流轉(zhuǎn),在未獲審批允許時(shí),不能進(jìn)行任何形式的外發(fā)和外傳。DLP擺脫了DSM的敏感數(shù)據(jù)“全加密”和DSA的“全隔離”的囚籠式信息安全管控策略,通過對(duì)文件的分類分級(jí),實(shí)現(xiàn)了對(duì)敏感數(shù)據(jù)的網(wǎng)絡(luò)防護(hù)和終端防護(hù)。而DLP的核心功能是對(duì)文件或數(shù)據(jù)流的內(nèi)容進(jìn)行識(shí)別,通過識(shí)別來實(shí)現(xiàn)對(duì)數(shù)據(jù)丟失的防控?;谠创a數(shù)據(jù)檢測(cè)的結(jié)果,DLP的源代碼管控可以實(shí)現(xiàn)敏感代碼的隔離、外發(fā)代碼的阻截、內(nèi)部代碼和網(wǎng)絡(luò)公共代碼的區(qū)分等功能。
源代碼數(shù)據(jù)的檢測(cè)本質(zhì)上是文本數(shù)據(jù)檢測(cè),目前文本數(shù)據(jù)檢測(cè)技術(shù)包括基礎(chǔ)檢測(cè)技術(shù)和高級(jí)檢測(cè)技術(shù)。
基礎(chǔ)檢測(cè)技術(shù)包括文檔屬性檢測(cè)、關(guān)鍵字匹配、正則表達(dá)式等方法,這些檢測(cè)技術(shù)不涉及文檔的語(yǔ)義、結(jié)構(gòu)和邏輯特征,具有簡(jiǎn)單高效的特征,但是難以實(shí)現(xiàn)精確細(xì)致的分類。
高級(jí)檢測(cè)技術(shù)包括精確數(shù)據(jù)匹配(Exact Data Matching,EDM)、文檔指紋(FingerPrint,本質(zhì)是一種Index data matching,IDM方法)、機(jī)器學(xué)習(xí)(或稱作統(tǒng)計(jì)學(xué)習(xí))方法。其中數(shù)據(jù)精確匹配是基于對(duì)文件的邏輯和結(jié)構(gòu)特征進(jìn)行深入分析后,提取其模式特征進(jìn)行的匹配分類方法;文檔指紋是基于對(duì)文檔的語(yǔ)義分析,采用基于關(guān)鍵詞的散列算法獲得文檔指紋作為文件索引(或稱信息摘要),通過索引匹配檢測(cè)文檔或文檔片段是否相似的方法;而機(jī)器學(xué)習(xí)方法都是通過學(xué)習(xí)算法獲取文件內(nèi)部的數(shù)據(jù)或語(yǔ)義統(tǒng)計(jì)特征,從而進(jìn)行模式識(shí)別。
因?yàn)樵创a是依據(jù)一定程序設(shè)計(jì)語(yǔ)言書寫而成,具有詞法、語(yǔ)法、語(yǔ)義特征,所以可以利用精確數(shù)據(jù)匹配進(jìn)行源代碼數(shù)據(jù)的檢測(cè),但是必須設(shè)計(jì)出合理有效的精確匹配信息處理流程。本發(fā)明中提出的檢測(cè)方法,將上述文本數(shù)據(jù)檢測(cè)技術(shù)中的多種技術(shù)手段組合成一種多級(jí)過濾的信息處理過程,從不同信息粒度水平上進(jìn)行多次信息過濾,實(shí)現(xiàn)對(duì)源代碼數(shù)據(jù)的精確檢測(cè)。
現(xiàn)有技術(shù)中與本發(fā)明最接近的技術(shù)是一種現(xiàn)有專利技術(shù),它通過攔截網(wǎng)絡(luò)數(shù)據(jù)流,通過對(duì)所述網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行協(xié)議解析得到字符流;獲取預(yù)設(shè)的與程序語(yǔ)言對(duì)應(yīng)的檢測(cè)字符串和/或語(yǔ)法分析庫(kù)函數(shù);根據(jù)所述檢測(cè)字符串和/或語(yǔ)法分析庫(kù)函數(shù)判斷所述解析得到的字符流是否包含源碼,若是,則阻斷所述網(wǎng)絡(luò)數(shù)據(jù)流。
上述現(xiàn)有技術(shù)存在以下缺點(diǎn):
(1)上述專利所用方法僅對(duì)網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行攔截,并不適用于對(duì)于本地存儲(chǔ)文件是否包含源代碼數(shù)據(jù)進(jìn)行檢測(cè),無法獲知本地源代碼的分布情況。
(2)上述專利中判定字符流是否包含源代碼的依據(jù)是“預(yù)設(shè)的與程序語(yǔ)言對(duì)應(yīng)的檢測(cè)字符串和/或語(yǔ)法分析庫(kù)函數(shù)”,并未對(duì)字符流的文件類型、詞法記號(hào)屬性和語(yǔ)義內(nèi)容進(jìn)行分析,對(duì)源代碼數(shù)據(jù)檢測(cè)的精度有限。
(3)在軟件開發(fā)過程規(guī)范化程度不高的企業(yè)中,存在著開發(fā)工具眾多、代碼風(fēng)格各異、標(biāo)識(shí)符命名不規(guī)范、代碼標(biāo)注用詞復(fù)雜的特征。檢測(cè)這些源代碼,僅依靠文件屬性檢測(cè)、關(guān)鍵字匹配、正則表達(dá)式匹配等基礎(chǔ)檢測(cè)技術(shù)會(huì)存在著定位不夠準(zhǔn)確的問題(難以確定一篇普通文檔中包含源代碼數(shù)據(jù)片段的位置);采用文檔指紋、統(tǒng)計(jì)學(xué)習(xí)等方法又存在著由于樣本獲取的不完整而造成檢測(cè)方法通用性不足的缺陷。
(4)上述文本數(shù)據(jù)的高級(jí)檢測(cè)技術(shù)在對(duì)篇幅較長(zhǎng)的文本進(jìn)行語(yǔ)義分析時(shí),會(huì)對(duì)文本全文進(jìn)行計(jì)算,具有較大的計(jì)算量,會(huì)造成檢測(cè)結(jié)果輸出用時(shí)較長(zhǎng)。
技術(shù)實(shí)現(xiàn)要素:
名詞解釋:
源代碼:也指源程序,是指按照一定的程序設(shè)計(jì)語(yǔ)言規(guī)范書寫的、未經(jīng)編譯的文本文件或文本片段,是一系列人類可讀的計(jì)算機(jī)語(yǔ)言指令。將源代碼翻譯成計(jì)算機(jī)可以執(zhí)行的二進(jìn)制指令的過程即為編譯。
詞法分析:將字符串序列轉(zhuǎn)換為詞法記號(hào)(token)序列的過程。源程序中的詞法記號(hào)包括關(guān)鍵字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、界符等。
關(guān)鍵字:關(guān)鍵字是對(duì)不同編程語(yǔ)言編譯器具有特殊含義的單詞,僅用于表示數(shù)據(jù)類型或進(jìn)行程序流程控制,而不能作為其它用途使用(關(guān)鍵字不能用作標(biāo)識(shí)符來標(biāo)記常量名、變量名、方法名、函數(shù)名、程序名、類名、包名和參數(shù)名)。
標(biāo)識(shí)符:在編程語(yǔ)言中,標(biāo)識(shí)符是用戶進(jìn)行源代碼書寫時(shí)使用的名字,用來標(biāo)記變量、常量、函數(shù)、方法、類、對(duì)象、語(yǔ)句塊、文件、參數(shù)等。標(biāo)識(shí)符可以是字母、數(shù)字、下劃線、特殊符號(hào)(例如’$’)的組合。
常數(shù):是源代碼中固定不變的數(shù)值,包括整型、實(shí)型、布爾型等。
運(yùn)算符:是說明特定操作的符號(hào),用于連接不同的運(yùn)算對(duì)象形成表達(dá)式。包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、連接運(yùn)算符等。
界符:標(biāo)記源代碼語(yǔ)句塊范圍界限的特殊符號(hào)。界符一般都是成對(duì)出現(xiàn)(例如(){}[]""''等),源代碼中標(biāo)記語(yǔ)句結(jié)束的分隔符也可以作為界符來處理(如C和C++語(yǔ)言中的分號(hào))。
語(yǔ)法分析:將詞法記號(hào)序列根據(jù)運(yùn)算符和界符組成各類語(yǔ)法短語(yǔ),區(qū)別出相應(yīng)的語(yǔ)法范疇,同時(shí)進(jìn)行語(yǔ)法一致性檢查。
語(yǔ)義分析:語(yǔ)義是文本中對(duì)事物的描述和邏輯表示。語(yǔ)義分析就是對(duì)文本所包含的語(yǔ)義的識(shí)別,運(yùn)用統(tǒng)計(jì)分析或機(jī)器學(xué)習(xí)方法,建立一種計(jì)算模型,挖掘文本中深層次的概念。
LSH:Locality-Sensitive Hashing局部敏感哈希,一種將原始文本進(jìn)行散列運(yùn)算生成信息摘要(或稱索引)的方法。在進(jìn)行文本比對(duì)或檢索時(shí)采用信息摘要代替原始文本,可以顯著減少比對(duì)運(yùn)算量并提高檢索的效率。內(nèi)容相似的文本經(jīng)LSH轉(zhuǎn)換后生成的信息摘要也具有很高的相似度,因此LSH可以用于文本相似度檢測(cè)、網(wǎng)頁(yè)搜索等領(lǐng)域。
DSM:Data Security Manager數(shù)據(jù)安全管理,因?yàn)樽钤绮捎玫亩际菙?shù)據(jù)加密技術(shù)對(duì)企業(yè)中的數(shù)據(jù)安全進(jìn)行管理,所以在企業(yè)信息安全領(lǐng)域DSM目前一般是指數(shù)據(jù)加密軟件。
DSA:Data Security Area數(shù)據(jù)安全隔離,是目前數(shù)據(jù)防泄密技術(shù)的有效手段之一。通過物理(磁盤、存儲(chǔ)設(shè)備、網(wǎng)絡(luò))和軟件(劃分邏輯安全區(qū))隔離方法,構(gòu)建數(shù)據(jù)安全區(qū)域,使得源代碼、圖紙等包含敏感信息的文件只能在安全區(qū)內(nèi)進(jìn)行操作,允許敏感數(shù)據(jù)在不同終端的安全區(qū)內(nèi)進(jìn)行流轉(zhuǎn),對(duì)敏感數(shù)據(jù)外發(fā)進(jìn)行審核。
DLP:Data Loss Prevention數(shù)據(jù)丟失防護(hù),或稱數(shù)據(jù)泄漏防護(hù)(Data Leakage Prevention)是目前信息領(lǐng)域主流的企業(yè)信息安全和數(shù)據(jù)防護(hù)系統(tǒng)的名稱。DLP是通過一定的數(shù)據(jù)處理和分析方法,結(jié)合企業(yè)的信息安全管理策略,對(duì)企業(yè)中所有電子信息和數(shù)據(jù)進(jìn)行分類分級(jí)管控,防止企業(yè)中的信息資產(chǎn)或關(guān)鍵數(shù)據(jù)流失、泄密或非受控?cái)U(kuò)散。
為解決上述技術(shù)問題,本發(fā)明提出了并實(shí)現(xiàn)了一種多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)方法及裝置,該方法通過對(duì)輸入的文本或數(shù)據(jù)流的文件類型檢測(cè)過濾、文檔格式轉(zhuǎn)換、詞法分析過濾、可疑文本段截取、語(yǔ)法分析過濾、語(yǔ)義分析過濾這一系列信息處理過程,可以判別所輸入的文本或數(shù)據(jù)流中是否含有源代碼數(shù)據(jù),實(shí)現(xiàn)了對(duì)于源代碼文件或含有源代碼片段的文本文件的檢測(cè)功能。
為解決上述技術(shù)問題,本發(fā)明提供了一種多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)方法,該方法包括以下步驟:
(1)文件類型檢測(cè)過濾,包括:判斷輸入文件是否為指定文件類型,如果是,將該文件判定為包含源代碼數(shù)據(jù)的文件,轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(2);
(2)詞法分析過濾,包括:將所述文件統(tǒng)一轉(zhuǎn)換成標(biāo)準(zhǔn)文件,提取所述標(biāo)準(zhǔn)文件中的詞法記號(hào),并為不同詞法記號(hào)建立相應(yīng)的權(quán)重,根據(jù)所述權(quán)重計(jì)算所述文件中詞法記號(hào)的加權(quán)得分總和,判斷所述加權(quán)得分總和是否超過指定閾值,如果是,將該文件判定為包含源代碼數(shù)據(jù)的文件,轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(3);
(3)語(yǔ)法分析過濾,包括:從所述文件截取指定長(zhǎng)度的文本作為可疑文本,提取所述可疑文本中包含的語(yǔ)法短語(yǔ)和表達(dá)式。根據(jù)語(yǔ)法短語(yǔ)在語(yǔ)法樹中的層級(jí),判斷其重要程度;根據(jù)表達(dá)式的運(yùn)算復(fù)雜度判斷其重要程度。如果所述語(yǔ)法短語(yǔ)或表達(dá)式對(duì)于源代碼構(gòu)成的重要程度超過指定閾值,則將該文件判定為包含源代碼數(shù)據(jù)的文件,轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(4);
(4)語(yǔ)義分析過濾,包括:提取所述文本的語(yǔ)義特征,將其與指定核心源代碼的語(yǔ)義特征進(jìn)行相似性分析,如果相似,將該文件判定為包含源代碼數(shù)據(jù)的文件,轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(6);
(5)對(duì)包含源程序數(shù)據(jù)的文件做敏感數(shù)據(jù)保護(hù),結(jié)束檢測(cè);
(6)對(duì)所述文件做無源代碼標(biāo)記,結(jié)束檢測(cè)。
進(jìn)一步,所述步驟(1)中所述輸入文件為:本地進(jìn)行存儲(chǔ)或網(wǎng)絡(luò)外發(fā)的文件。
進(jìn)一步,所述詞法記號(hào)包括:特定程序設(shè)計(jì)語(yǔ)言中的關(guān)鍵字、標(biāo)識(shí)符、算符和界符。
進(jìn)一步,所述步驟(3)從所述文件截取指定長(zhǎng)度的可疑文本具體包括:根據(jù)執(zhí)行所述數(shù)據(jù)檢測(cè)方法的裝置性能,確定所述指定長(zhǎng)度,并截取所述權(quán)重大于指定閾值的詞法記號(hào)后所述指定長(zhǎng)度的文本作為可疑文本,截取的該可疑文本包含該詞法記號(hào)。
進(jìn)一步,所述步驟(3)中提取所述可疑文本中包含的語(yǔ)法短語(yǔ)和表達(dá)式具體包括:對(duì)所述可疑文本進(jìn)行語(yǔ)法分析,將相鄰的詞法記號(hào)組合成符合程序設(shè)計(jì)語(yǔ)言規(guī)則的語(yǔ)法短語(yǔ)和表達(dá)式。
進(jìn)一步,所述步驟(4)中利用關(guān)鍵字詞頻統(tǒng)計(jì)或LSH方法提取所述標(biāo)準(zhǔn)文件的語(yǔ)義特征,將所述指定核心源代碼的語(yǔ)義特征構(gòu)造成敏感信息摘要樣本庫(kù),對(duì)所述可疑文本進(jìn)行語(yǔ)義特征提取,獲得其信息摘要,將該信息摘要與敏感信息摘要樣本庫(kù)中的樣本進(jìn)行相似性分析,若所述可疑文本的所述信息摘要與所述信息摘要樣本庫(kù)中某一樣本近似,則將該文件判定為包含源代碼數(shù)據(jù)的文件。
為解決上述技術(shù)問題,本發(fā)明提供了一種多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)裝置,該裝置包括:
文件類型檢測(cè)過濾模塊,用于判斷輸入文件是否為指定文件類型;
詞法分析過濾模塊,將所述文件統(tǒng)一轉(zhuǎn)換成標(biāo)準(zhǔn)文件,提取所述標(biāo)準(zhǔn)文件中的詞法記號(hào)并為不同詞法記號(hào)建立相應(yīng)的權(quán)重,計(jì)算所述文件中詞法記號(hào)對(duì)權(quán)重的加權(quán)得分總和,判斷所述加權(quán)得分總和是否超過指定閾值;
語(yǔ)法分析過濾模塊,從所述文件截取指定長(zhǎng)度的文本作為可疑文本,提取所述可疑文本中包含的語(yǔ)法短語(yǔ)和表達(dá)式,判斷所述短語(yǔ)和表達(dá)式對(duì)構(gòu)成具有實(shí)際意義源代碼的重要程度;
語(yǔ)義分析過濾模塊,提取所述文本的語(yǔ)義特征,將其與指定核心源代碼的語(yǔ)義特征進(jìn)行相似性分析;
敏感數(shù)據(jù)保護(hù)模塊,對(duì)包含源程序數(shù)據(jù)的文件做敏感數(shù)據(jù)保護(hù);
無源代碼標(biāo)記模塊,對(duì)所述文件做無源代碼標(biāo)記。
進(jìn)一步,所述輸入文件為:本地進(jìn)行存儲(chǔ)或網(wǎng)絡(luò)外發(fā)的文件。
進(jìn)一步,所述詞法記號(hào)包括:特定程序設(shè)計(jì)語(yǔ)言中的關(guān)鍵字、標(biāo)識(shí)符、算符和界符。
進(jìn)一步,從所述文件截取指定長(zhǎng)度的可疑文本具體包括:根據(jù)所述檢測(cè)裝置的性能,確定所述指定長(zhǎng)度,并截取所述權(quán)重大于指定閾值的詞法記號(hào)后所述指定長(zhǎng)度的文本作為可疑文本,截取的該可疑文本包含所述詞法記號(hào)。
進(jìn)一步,所述提取所述可疑文本中包含的語(yǔ)法短語(yǔ)和表達(dá)式具體包括:對(duì)所述可疑文本進(jìn)行語(yǔ)法分析,將相鄰的詞法記號(hào)組合成符合程序設(shè)計(jì)語(yǔ)言規(guī)則的語(yǔ)法短語(yǔ)和表達(dá)式。
進(jìn)一步,所述語(yǔ)義分析過濾模塊利用關(guān)鍵字詞頻統(tǒng)計(jì)或LSH方法提取所述標(biāo)準(zhǔn)文件的語(yǔ)義特征,將所述指定核心源代碼的語(yǔ)義特征構(gòu)造成敏感信息摘要樣本庫(kù),對(duì)所述可疑文本進(jìn)行語(yǔ)義特征提取,獲得其信息摘要,將該信息摘要與敏感信息摘要樣本庫(kù)中的樣本進(jìn)行相似性分析,若所述可疑文本的所述信息摘要與所述信息摘要樣本庫(kù)中某一樣本近似,則將該文件判定為包含源代碼數(shù)據(jù)的文件。
本發(fā)明技術(shù)效果:
提高源代碼數(shù)據(jù)檢測(cè)的準(zhǔn)確程度,增強(qiáng)企業(yè)對(duì)于源代碼數(shù)據(jù)安全管控的能力。通過多級(jí)檢測(cè)過濾模塊的特定組合,可以實(shí)現(xiàn)對(duì)不同程序設(shè)計(jì)語(yǔ)言、不同設(shè)計(jì)風(fēng)格書寫的源代碼的檢測(cè),使得源代碼檢測(cè)方法具有通用性。利用可疑文本截取的設(shè)計(jì),有效地避免了語(yǔ)義分析階段計(jì)算量過大的缺陷,加快了檢測(cè)過程的信息處理速度。
附圖說明
圖1是本發(fā)明源代碼檢測(cè)實(shí)現(xiàn)流程圖。
具體實(shí)施方式
本發(fā)明中提出的多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)方法,針對(duì)企業(yè)數(shù)據(jù)安全管控中的源代碼數(shù)據(jù)檢測(cè)需求,解決了從大量文本文檔和數(shù)據(jù)流中判斷出其中哪些是源代碼文件、或包含了源代碼文件的問題。本方法從源代碼書寫的程序設(shè)計(jì)語(yǔ)言規(guī)范著手,根據(jù)源代碼文本的詞法、語(yǔ)法、語(yǔ)義和文件格式特征,采用了文件類型檢測(cè)、詞法分析、語(yǔ)法分析、語(yǔ)義分析的多級(jí)過濾數(shù)據(jù)處理結(jié)構(gòu),形成了一種新型的源代碼數(shù)據(jù)檢測(cè)解決方案。
第一級(jí)過濾:文件類型檢測(cè)過濾。對(duì)企業(yè)內(nèi)部存儲(chǔ)或網(wǎng)絡(luò)外發(fā)的文件進(jìn)行文件類型檢測(cè),通過文件后綴名匹配過濾,將具有源程序后綴名的文件判定為包含源程序數(shù)據(jù)。
第二級(jí)過濾:詞法分析過濾。從詞法分析層面,利用不同程序設(shè)計(jì)語(yǔ)言中關(guān)鍵字、算符、界符出現(xiàn)的規(guī)律,可以解決源代碼中代碼書寫風(fēng)格各異、標(biāo)識(shí)符命名不規(guī)范的檢測(cè)難題。首先將經(jīng)過第一級(jí)過濾后的文件或數(shù)據(jù)流統(tǒng)一轉(zhuǎn)換成txt格式;其次進(jìn)行詞法分析,檢測(cè)其中是否包含源程序的關(guān)鍵字、特殊標(biāo)識(shí)符、算符和界符;然后為不同詞法記號(hào)建立權(quán)重,計(jì)算txt文件中詞法記號(hào)的加權(quán)得分總和;最后設(shè)置判別閾值,若一篇txt文件中出現(xiàn)詞法記號(hào)的加權(quán)得分超過閾值,則判定為包含源程序數(shù)據(jù)。
第三級(jí)過濾:語(yǔ)法分析過濾。為避免對(duì)篇幅較長(zhǎng)的文本進(jìn)行語(yǔ)義分析而帶來的大量計(jì)算,在語(yǔ)法分析之前進(jìn)行可疑文本截取,僅對(duì)截取的文本段進(jìn)行分析,從而顯著減少了計(jì)算量。通過語(yǔ)法分析從文本中提取特定的語(yǔ)法短語(yǔ)和表達(dá)式,將其作為可疑文本段中是否包含源程序數(shù)據(jù)的判據(jù)。
第四級(jí)過濾:語(yǔ)義分析過濾。運(yùn)用詞頻統(tǒng)計(jì)和LSH(局部敏感哈希)等語(yǔ)義分析方法,提取可疑文本段的語(yǔ)義特征,將其與本企業(yè)的核心源代碼的語(yǔ)義特征進(jìn)行相似性分析,從而確定可疑文本中是否包含進(jìn)行局部改寫后的源代碼。
本發(fā)明提出的多級(jí)過濾的源代碼數(shù)據(jù)檢測(cè)方法信息處理過程如圖1所示,其中包括了文件類型檢測(cè)過濾、文檔格式轉(zhuǎn)換、詞法分析過濾、可疑文本截取、語(yǔ)法分析過濾、語(yǔ)義分析過濾、含源代碼數(shù)據(jù)保護(hù)操作、無源代碼標(biāo)記共8個(gè)處理模塊。通過這一系列的信息處理,可以實(shí)現(xiàn)對(duì)文件或數(shù)據(jù)流中是否包含源代碼數(shù)據(jù)的檢測(cè)。下面對(duì)這8個(gè)信息處理模塊逐一進(jìn)行介紹:
(1)文件類型檢測(cè)過濾
對(duì)于輸入檢測(cè)裝置的文件,檢測(cè)其后綴名是否為企業(yè)數(shù)據(jù)安全管控策略中所標(biāo)記的源代碼數(shù)據(jù)文件(例如*.c,*.cpp,*.h,*.hpp,*.py,*.vbs,*.java,*.jar等源代碼格式類型)。若是,則判定該文件為源代碼文件;否則進(jìn)入下一級(jí)信息過濾處理。
(2)文檔格式轉(zhuǎn)換
將輸入檢測(cè)裝置的文本文件(如doc、docx、pdf、rtf等格式)或文本數(shù)據(jù)流統(tǒng)一轉(zhuǎn)換為txt文本文檔格式,便于后續(xù)模塊進(jìn)行統(tǒng)一處理。
(3)詞法分析過濾
對(duì)經(jīng)過(2)模塊轉(zhuǎn)換后的文本文檔進(jìn)行詞法分析,從中提取特定程序設(shè)計(jì)語(yǔ)言中的關(guān)鍵字、標(biāo)識(shí)符、算符和界符。根據(jù)不同的詞法記號(hào)的重要程度建立權(quán)重(例如一些企業(yè)中關(guān)鍵的庫(kù)文件的標(biāo)識(shí)符應(yīng)當(dāng)賦予較高的權(quán)重,而在正常文本中也使用的“if”、“then”等關(guān)鍵字則應(yīng)賦予較低的權(quán)重),計(jì)算txt文件中詞法記號(hào)的加權(quán)得分總和。可以根據(jù)txt文件長(zhǎng)度設(shè)定動(dòng)態(tài)的判別閾值(一般文件長(zhǎng)度增大時(shí),此閾值相應(yīng)地增大)。若一篇txt文件中出現(xiàn)詞法記號(hào)的加權(quán)得分超過閾值,則判定為包含源程序數(shù)據(jù);否則進(jìn)入下一級(jí)信息過濾處理。
(4)可疑文本截取
根據(jù)執(zhí)行源代碼數(shù)據(jù)檢測(cè)裝置的內(nèi)存容量和計(jì)算速度,可以指定截取可疑文本的長(zhǎng)度。根據(jù)詞法分析結(jié)果,在高權(quán)重詞法記號(hào)出現(xiàn)位置后截取指定長(zhǎng)度文本作為可疑文本。(截取文本中包含該高權(quán)重詞法記號(hào))
(5)語(yǔ)法分析過濾
對(duì)可疑文本進(jìn)行語(yǔ)法分析,將相鄰的詞法記號(hào)組合成符合程序設(shè)計(jì)語(yǔ)言規(guī)則的語(yǔ)法短語(yǔ)和表達(dá)式。根據(jù)語(yǔ)法短語(yǔ)在語(yǔ)法樹中的層級(jí),判斷其重要程度;根據(jù)表達(dá)式的運(yùn)算復(fù)雜度判斷其重要程度。按照所述語(yǔ)法短語(yǔ)或表達(dá)式對(duì)于源代碼構(gòu)成的重要程度是否超過指定閾值,如果超過,則判定為包含源程序數(shù)據(jù);否則進(jìn)入下一級(jí)信息過濾處理。
(6)語(yǔ)義分析過濾
利用關(guān)鍵字詞頻統(tǒng)計(jì)或LSH等方法來提取文本文件的語(yǔ)義特征,將本企業(yè)的核心源代碼的語(yǔ)義特征構(gòu)造成敏感信息摘要樣本庫(kù)。對(duì)可疑文本進(jìn)行語(yǔ)義特征提取,獲得其信息摘要,將其與敏感信息摘要樣本庫(kù)中樣本進(jìn)行相似性分析。若可疑文本的信息摘要與樣本庫(kù)中某一樣本近似,則認(rèn)為該可疑文本中包含核心源代碼數(shù)據(jù);否則應(yīng)給可疑文本做無源代碼標(biāo)記。
(7)含源代碼數(shù)據(jù)保護(hù)操作
若一個(gè)輸入檢測(cè)裝置的文件或數(shù)據(jù)流中被判定為含有源代碼數(shù)據(jù),則應(yīng)對(duì)該文件或數(shù)據(jù)流的存儲(chǔ)、保存、傳輸、外發(fā)做敏感數(shù)據(jù)保護(hù)(如加密、阻斷、審批、記錄等)。
(8)無源代碼標(biāo)記
若一個(gè)輸入檢測(cè)裝置的文件或數(shù)據(jù)流中被判定為不含有源代碼數(shù)據(jù),則可以對(duì)該文件或數(shù)據(jù)流作無源代碼標(biāo)記,在該文件或數(shù)據(jù)流不做出編輯改動(dòng)的情況下,不必對(duì)其進(jìn)行源代碼數(shù)據(jù)保護(hù)操作。
具體實(shí)施例1
開發(fā)人員在企業(yè)代碼服務(wù)器上下載一個(gè)CPP源代碼文件到自己的客戶端計(jì)算機(jī),客戶端上的數(shù)據(jù)安全軟件對(duì)新增的文件進(jìn)行掃描。
經(jīng)本源代碼數(shù)據(jù)檢測(cè)裝置的文件類型檢測(cè)過濾模塊時(shí),發(fā)現(xiàn)該文件后綴為“.cpp”,因此將該文件判定為源代碼文件。根據(jù)此判定結(jié)果數(shù)據(jù)安全軟件僅允許此文件保存到客戶端計(jì)算機(jī)的安全區(qū)中。
具體實(shí)施例2
某開發(fā)人員在書寫用戶使用手冊(cè)時(shí),將多段源代碼程序粘貼到文本文檔中,并轉(zhuǎn)成pdf格式保存。該企業(yè)安裝的數(shù)據(jù)安全軟件進(jìn)行全盤掃描,將該文件輸入到本裝置中進(jìn)行檢測(cè)。
經(jīng)本源代碼數(shù)據(jù)檢測(cè)裝置的文件類型檢測(cè)過濾模塊檢測(cè),該文件非源代碼文件,但是屬于文本文件格式,因此將其進(jìn)行文檔格式轉(zhuǎn)換及后續(xù)處理。對(duì)轉(zhuǎn)換后的txt文件進(jìn)行詞法分析后,發(fā)現(xiàn)其中包含的詞法記號(hào)的加權(quán)得分總和超過判別閾值,因此被判定為包含源代碼數(shù)據(jù)。在得到此檢測(cè)結(jié)果后,該企業(yè)應(yīng)對(duì)此文件的傳播范圍進(jìn)行限定。
具體實(shí)施例3
某一準(zhǔn)備離職人員想要將一些企業(yè)核心源代碼外帶,為此批量修改了這些源代碼文件的后綴和其中的關(guān)鍵字,在將這些文件轉(zhuǎn)存到U盤時(shí),數(shù)據(jù)安全軟件將這些文件逐一輸入到本裝置中進(jìn)行檢測(cè)。
經(jīng)本源代碼數(shù)據(jù)檢測(cè)裝置的文件類型檢測(cè)過濾模塊檢測(cè),該文件非源代碼文件,但是屬于文本文件格式,因此將其進(jìn)行文檔格式轉(zhuǎn)換及后續(xù)處理。對(duì)轉(zhuǎn)換后的txt文件進(jìn)行詞法分析后,發(fā)現(xiàn)其中包含的詞法記號(hào)的加權(quán)得分總和未超過判別閾值,因此轉(zhuǎn)到進(jìn)行語(yǔ)法分析。在語(yǔ)法分析階段,發(fā)現(xiàn)該文件中包含多個(gè)表達(dá)式,因此判斷該文件包含源代碼數(shù)據(jù)。數(shù)據(jù)安全軟件在得到此檢測(cè)結(jié)果后,應(yīng)當(dāng)禁止該文件轉(zhuǎn)存到U盤。
具體實(shí)施例4
某開發(fā)人員在撰寫論文時(shí)將企業(yè)的核心源代碼轉(zhuǎn)用偽碼描述,通過郵件將論文外發(fā),企業(yè)郵件網(wǎng)關(guān)將該數(shù)據(jù)流輸入到本裝置中進(jìn)行檢測(cè)。
經(jīng)本源代碼數(shù)據(jù)檢測(cè)裝置的文件類型檢測(cè)過濾模塊檢測(cè),該數(shù)據(jù)流非源代碼文件,但是屬于文本格式,因此將其進(jìn)行文檔格式轉(zhuǎn)換及后續(xù)處理。對(duì)轉(zhuǎn)換后的txt文件進(jìn)行詞法分析后,發(fā)現(xiàn)其中包含的詞法記號(hào)的加權(quán)得分總和未超過判別閾值,因此轉(zhuǎn)到進(jìn)行語(yǔ)法分析。在語(yǔ)法分析階段,未發(fā)現(xiàn)敏感語(yǔ)法短語(yǔ)和表達(dá)式,因此轉(zhuǎn)入語(yǔ)義分析。在語(yǔ)義分析階段,因其偽碼描述中未重新命名標(biāo)識(shí)符,在經(jīng)過采用標(biāo)識(shí)符作為詞頻統(tǒng)計(jì)的語(yǔ)義分析后,發(fā)現(xiàn)該段文字與企業(yè)核心源代碼具有語(yǔ)義相似性,因此判斷該文件包含源代碼數(shù)據(jù)。企業(yè)郵件網(wǎng)關(guān)在得到此檢測(cè)結(jié)果后,應(yīng)禁止該郵件直接外發(fā)。
目前所知的源代碼檢測(cè)技術(shù)方案都是僅采用了文件類型檢測(cè)、詞法分析、語(yǔ)法分析、語(yǔ)義分析中的一種或兩種技術(shù)手段的組合,未見如發(fā)明中將多種技術(shù)手段綜合應(yīng)用構(gòu)成的多級(jí)過濾信息處理方案。
通過本發(fā)明提出的多級(jí)過濾的源代碼檢測(cè)技術(shù)解決方案,可以提高源代碼數(shù)據(jù)檢測(cè)的準(zhǔn)確程度,增強(qiáng)企業(yè)對(duì)于源代碼數(shù)據(jù)安全管控的能力。通過多級(jí)檢測(cè)過濾模塊的特定組合,可以實(shí)現(xiàn)對(duì)不同程序設(shè)計(jì)語(yǔ)言、不同設(shè)計(jì)風(fēng)格書寫的源代碼的檢測(cè),使得源代碼檢測(cè)方法具有通用性。利用可疑文本截取的設(shè)計(jì),有效地避免了語(yǔ)義分析階段計(jì)算量過大的缺陷,加快了檢測(cè)過程的信息處理速度。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)保護(hù)在本發(fā)明的保護(hù)范圍之內(nèi)。