隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)安全、數(shù)據(jù)分析等成了人們關(guān)注的焦點。而數(shù)據(jù)增加的速度極快,增長量更是巨大的。因而,對于數(shù)據(jù)的分析不僅僅是掌握大量的數(shù)據(jù),而是對其進行針對性的處理。
對軟件進行同源性鑒別就是分析比較兩個軟件從源代碼到軟件功能之間的差別,找出它們之間的相似之處或者相同之處。在進行比較鑒別的時候,主要是查看軟件形成基礎(chǔ)的程序源代碼。在軟件系統(tǒng)的源代碼中,存在很多相同或者相似的代碼片段,我們把它們稱作克隆代碼,克隆代碼之間是具有同源性的。目前,國內(nèi)外的學者對源代碼同源性檢測的研究有很多,研究比較多的就是源代碼抄襲技術(shù)的檢測,也就是對克隆代碼的檢測。經(jīng)常使用的檢測源代碼同源性的方法包括文本相似和功能相似這兩種。其中,文本相似的檢測主要集中于對源代碼中聲明、標識符、文字、變量類型等的檢測;而功能相似檢測注重的是程序段之間結(jié)構(gòu)和語義的不同,而不關(guān)注程序段之間格式或者變量名的改變。在使用功能相似檢測的時候,如果兩個軟件的代碼段是由不同的句法或者變量編程實現(xiàn)的,但是它們實現(xiàn)的功能是相同的,就能夠通過該檢測識別出來。
最早研究檢測代碼中的克隆代碼是在20世紀90年代,是隨著軟件維護的問題出現(xiàn)的,而逐漸受到人們的關(guān)注。在90年代中期之后,對克隆代碼檢測工具的研究日益增多,并且在軟件研究領(lǐng)域變得很興盛。到目前為止,對于源代碼同源性的檢測技術(shù)主要包括四大類,分別是基于文本的鑒別技術(shù)、基于編程風格的鑒別技術(shù)、基于抽象語法樹的鑒別技術(shù)以及基于語義的鑒別技術(shù)。
基于文本相似性的鑒別技術(shù)有很多種,比較典型的包括基于子串匹配的方法、基于參數(shù)化的匹配方法,除此以外,應(yīng)用比較多的還包括詞頻統(tǒng)計法,它也經(jīng)常用于同源性的鑒別。該方法主要是對文本層次的檢測,而沒有考慮代碼本身的語義特征,這樣就使得該技術(shù)的局限性較大,在檢測的時候,很容易出現(xiàn)漏檢的現(xiàn)象,這樣就讓代碼抄襲者很輕松的逃過檢測。但是,該方法在檢測的時候,主要考慮的是文本序列和文本組合,因此,它的誤檢率較低,在網(wǎng)絡(luò)安全中的應(yīng)用還是比較多的。
基于編程風格的同源性鑒別技術(shù)在檢測的時候是根據(jù)編程人員的編寫風格來判斷軟件的同源性。采用該方法鑒別同源性的時候,主要分為兩個階段。第一階段要對了解文件的主要編碼風格特征,第二階段再對檢測代碼進行檢測,檢測時主要使用的是三種不同的模塊。這樣就能夠確定被克隆的位置。該方法在實現(xiàn)的時候需要耗費大量的人力和物力,很難實現(xiàn)自動化,可實施性也不強,因此,應(yīng)用的比較少。
基于抽象語法樹的鑒別技術(shù)最早是由Baxter等人提出的。抽象語法樹是一種類似于樹的存儲結(jié)構(gòu),它是經(jīng)過代碼段的語法分析后形成的,它保留了很多樹節(jié)點的信息。運用該技術(shù)對代碼段進行檢測的時候,主要是對比分析代碼段的語法結(jié)構(gòu),并對節(jié)點的值進行比較,根據(jù)節(jié)點的值判斷代碼文件是不是具有同源性。該方法的實現(xiàn)過程是一個相當復(fù)雜的過程,而且在檢測的時候也很容易出現(xiàn)誤檢的現(xiàn)象,因此,應(yīng)用該方法進行檢測的比較少。
目前有很多工具可以對源代碼進行語法分析,比如javacc,它是對java的一種優(yōu)化。另外,Lex和Yacc是兩種基于詞法分析和語法分析的軟件,它們能夠?qū)Y(jié)構(gòu)化的程序源代碼進行轉(zhuǎn)換,該工具在使用的時候效率較高。
基于語義的鑒別技術(shù)突破的傳統(tǒng)的思維,不再只關(guān)注代碼抄襲的形式,而是通過語義方面的判斷,來識別代碼段的同源性。該方法在進行檢測的時候,主要是運用程序依賴圖的方式,它將源代碼轉(zhuǎn)換成圖形的pdg格式,并使用子圖的同構(gòu)性來檢測代碼段之間的相似性。例如,有如下代碼:
我們得到的對應(yīng)的流程圖如下:
通過這個圖就能看出數(shù)據(jù)之間的依賴關(guān)系,而這些依賴關(guān)系中包含了所有的語義信息,然后就可以利用等價的方式進行同源性的匹配分析。
在分析大數(shù)據(jù)環(huán)境下的代碼同源性的時候,主要是分析它們之間的相關(guān)關(guān)系,并不是注重因果關(guān)系。對于大數(shù)據(jù)來說,它主要具有四個特征,即規(guī)模很大,多樣性,速度極快,且真?zhèn)坞y辨。大數(shù)據(jù)的起始計量單位是至少1000T,并且它的種類很多,包括網(wǎng)絡(luò)日志、圖片、地理位置信息等。除此之外,它的商業(yè)價值很高,并且處理速度極快。這就是大數(shù)據(jù)傳統(tǒng)數(shù)據(jù)挖掘本質(zhì)的不同。
目前,隨著互聯(lián)網(wǎng)的不斷發(fā)展,一些網(wǎng)站和應(yīng)用系統(tǒng)出現(xiàn)了漏洞,導(dǎo)致一系列的安全事故發(fā)生。在一些大數(shù)據(jù)的行業(yè)中,使用第三方數(shù)據(jù)庫和中間件的頻率很高,而這些系統(tǒng)存在的漏洞比較多,在進行修復(fù)的時候也很不及時。因此,我們需要對大數(shù)據(jù)進行分析,從中挖掘出新網(wǎng)站攻擊的特征以及一些網(wǎng)絡(luò)漏洞,從而分析同源的木馬病毒。通過大數(shù)據(jù)的分析,可以發(fā)現(xiàn)一些潛在的安全事件,通過各個事件之間的關(guān)聯(lián)性,就能夠找出完整的威脅。此外,通過對大數(shù)據(jù)的分析,可以將分散的信息整合在一起,這樣就能夠主動的采取安全防御措施,從而識別出更多的危險并阻止它。利用大數(shù)據(jù)進行分析的主要框架包括以下幾個部分:
我們需要在網(wǎng)絡(luò)中收集各類信息,包括來自瀏覽器拓展的信息、查毒網(wǎng)站的一些信息,還有從事數(shù)據(jù)收集的安全供應(yīng)商那里的信息,通過對這些數(shù)據(jù)以及一些網(wǎng)絡(luò)攻擊實例的研究,可以得到一個可用的數(shù)據(jù)庫,幫助我們進行鑒別和檢測。
對存儲的數(shù)據(jù)庫進行研究分析,并獲得它的提取碼。對關(guān)鍵主機存在的同源性漏洞進行分析,建立一個漏洞的知識庫,并對知識庫中的各種性能指標以及該網(wǎng)絡(luò)環(huán)境下的拓撲結(jié)構(gòu)進行分析研究,獲得一個網(wǎng)絡(luò)環(huán)境的知識庫。
獲得同源性漏洞知識庫之后,就能夠?qū)Π踩录挠行赃M行確認,可以通過多個渠道收集威脅網(wǎng)絡(luò)安全的信息以及數(shù)據(jù),包括惡意軟件的哈希值,惡意鏈接等,然后將它們存儲起來。當威脅源被數(shù)據(jù)化之后,就可以通過同源性分析判斷該威脅是新出現(xiàn)的,還是一直存在的,并且能夠識別出它的基本特征,然后自動的將這些值返回給系統(tǒng),以及時采取相應(yīng)的措施。
除此之外,通過對大數(shù)據(jù)的同源性安全分析,還能了解一些釣魚網(wǎng)站的信息并且判斷這些威脅的發(fā)展趨勢。這樣就可以對一些企圖攻擊網(wǎng)站的惡意軟件提前發(fā)出警告,以提高系統(tǒng)的防御性。
針對目前大數(shù)據(jù)的應(yīng)用現(xiàn)狀,在安全儲存時采用的是虛擬化海量存儲技術(shù),它能夠?qū)崿F(xiàn)對信息資源的存儲、傳輸、隔離、恢復(fù)等。在解決大數(shù)據(jù)的安全存儲問題時,首先可以考慮對數(shù)據(jù)進行加密處理。無論是在大數(shù)據(jù)的安全設(shè)計服務(wù)中,還是在信息的傳遞過程中,加密技術(shù)都可以實現(xiàn)對數(shù)據(jù)流的有效保護。目前,經(jīng)常使用的加密技術(shù)包括PGP和TrueCrypt等程序。另外,可以使用分離密鑰和加密數(shù)據(jù)對大數(shù)據(jù)進行保管分離,從而實施保護,同時,能夠?qū)崿F(xiàn)對密鑰管理生命周期的定義。除此之外,過濾器和數(shù)據(jù)備份都是有效的進行大數(shù)據(jù)安全儲存的方式。過濾器具有很強的監(jiān)控作用,當數(shù)據(jù)離開用戶的網(wǎng)絡(luò)時,它能夠?qū)崿F(xiàn)對數(shù)據(jù)的阻止,防止它再次傳出。數(shù)據(jù)備份則能夠保證在大數(shù)據(jù)被破壞之后,有備無患,實現(xiàn)對大數(shù)據(jù)的安全管控。
通過對大數(shù)據(jù)同源性的安全分析,可以有效的確認對網(wǎng)站進行威脅的事件,對數(shù)據(jù)以及網(wǎng)絡(luò)的安全起到了保護的作用。通過對軟件漏洞的快速定位,為網(wǎng)絡(luò)開發(fā)提供了技術(shù)性的支持,在大數(shù)據(jù)時代具有積極的現(xiàn)實意義。