專利名稱:使用密碼散列法的病毒定位的制作方法
技術領域:
本發(fā)明一船步及軟件安全,并且尤鄉(xiāng)及用于4頓完整性檢査技術來標辯啶位 計^l幾病毒的方法。
背景技術:
病毒檢測是一個對經(jīng)常被要求采取如購買和運行防病毒軟件等防病毒的預防性 措施的任何計穀幾用戶有著驚Ai也廣泛影響的問題。病毒是文本、可執(zhí)行代碼等形式 的數(shù)據(jù),其在沒有用戶授權(quán)并通常在不為該用戶所知的情況下被添加至該用戶的文件 或重寫該用戶的文件中的數(shù)據(jù)。病毒檢測領域中的研究包括針對特定種類的病毒的各 種i娥式方法。嘗i辦決該問題的最成功的現(xiàn)代技術中的一些落入簽名檢測和完整性 檢查的一般范例中,例如E.Skoudis, "MALWARE:Fighting Malicious Code"(惡意軟 件與惡意代碼做斗爭),Prentice Hall (2004),以及P.Szor, "The Art of Computer Virus Research and Defense"(計^|幾病#5開究和防御的就),Addison Wesley (2005)。前一 范例需要發(fā)現(xiàn)已知病毒的受感染代碼的片段、被調(diào)用的簽名,存儲該簽名,并開發(fā)掃 描計穀幾存儲器以搜索這樣的簽名的軟件。本發(fā)明所關注的后一范例是需要^ffi檢測 對文件的未授權(quán)改變的密碼散列函數(shù),并可能揭示未知病毒的存在。后一范例的成功 的,示例是Tripwire,其是UMX環(huán)境的廣泛可用的完整性檢査程序。
如在例如G Di Crescenzo、 A. Ghosh和R. Talpade的"Towards a Theory of Instrusion Detection (入侵檢測理論)"中戶7fi寸論的,簽名和異常檢測的入侵檢測原理也^i共對病 毒檢測方法的洞察。簽名病毒檢測范例對以于入侵檢測領域中的簽名檢測原理;相反, 完整性檢查范例更類似于入侵檢測領域中的異常檢測原理。
可用的防病毒軟件通常4頓三種用于檢湖!)病毒的主要技術簽名、i微法、和完整性驗i正。簽名技術類似于入侵檢測系統(tǒng)中的簽名檢測方法。首先,學習已知病毒并 且存儲它們的簽名;接著在候選可執(zhí)行文件中尋找這些簽名的出現(xiàn)。盡管這是病毒檢 測的最流行的方法,但它繊于廠商快速更親條名 庫和用戶決速更新他們的簽名 文件,并且它很容易被多形和變形的病毒技術擊敗。
其它兩種技術,i娥法和完整性魁正,更類似于入侵檢觀孫統(tǒng)中的異常檢測方法。 ^^技術在嘗試基于病毒可能展示的例如試圖向可執(zhí)行文件中寫入、訪問引導扇區(qū)、 刪除石M驅(qū)動器內(nèi)容等某些行為的基礎上來標識病毒方,能有點復雜。完整性Mi正 技術嘗i站感染已經(jīng)發(fā)生之后但可能在受感染的文4頓行發(fā)生之前檢測對文件糊雨 期修改,因此仍然使得該感染無害。
盡管U^法和完整性斷正技術兩者都具有捕獲更多智能病毒的潛力,例如具有多 形和變形能力的那醜毒,但這些技術最多能夠引^(寸特定文件的警覺,其隨后將在 受控環(huán)境下在病毒診斷階段被仔細仿真和分析,在該受控環(huán)境中需要導出潛在病毒的 位置、特性和后果的結(jié)論。由于實5細于仿真的精確受控環(huán)境的困難,所導出的后果 的精確性可倉環(huán)可信。此外,在許多情況下,病毒對原始文件所作的修改非常微小, 例如對位于存儲器中某處的程序的子例程調(diào)用,并且因此擁有關于病毒自身的附加信 息絵非常有用。
此外,完整性斷正技術^整性檢查原理僅檢測對文件的改變,但不定位或指示 該改變發(fā)生在文件中的什么地方。缺少關于病毒的定位信息,貝咜的檢測慰賺資源 且易于娜的。這隱含地定義了軟件安^W或的一個新問題,"病毒定位"。
據(jù)發(fā)明者所知,病毒定位的問^t前從未l,格調(diào)査或甚至提出過。對 應用 密碼散列法是用于M完整性衞正的一個公知范例,并且是像Tripwire等斷正文件系 統(tǒng)完整性的程序的基礎。文件的所有原子塊的密碼散列法也是已知范例,并且已被用 于艦高等待時間、低帶寬^5各遠程地更新文件鄉(xiāng)決一次寫入式檔案 存儲目的 的禾辨。然而,所有這些禾辨都不解鵬毒定位問題。
發(fā)明簡述
本發(fā)明有利地樹共一種用于三種類型的病毒感染中的每一種的病毒定位的方法。 在一個實施例中,該方法包括以下步驟計算來自宿主文件的±,列散列,將可疑的
或損壞的文件劃分成多個組,每組包含多個i^列,計算可疑文件中的所有這些多個土嬌列的散列,并將來自宿主文件的散列與來自該可疑文件的散列進行比較,以使得 如果沒有發(fā)現(xiàn)不匹配,則該可疑文件lfct布為"未損壞",然而如果發(fā)^S少一個不匹 配,則該可疑文件l體布為"被損壞",并且確定病毒在文件中的大概{體。
用于病毒定位的方法可以包括以下步驟計算文件±,列,計算來自宿主文件的
文件i娘歹啲散列并計算來自受感染的文件的相同或相關的文件i嬌列的散列,并將 來自宿主文件的散列與來自受感染的文件的相同或相關的文件i央序列的散列進行比
較,以使傳在戶腿第一散列和0M第二散歹啲某一些不匹配時,輸出病毒的位置。提 供了取決于病毒感染的類型來計算文件i娘歹啲方法,和使用抗沖突散列函數(shù)、數(shù)字 簽名方案、消息認證碼或偽隨機函 計算散列的方法。
附圖簡述
fflii參考本發(fā)明的非限帝勝的、說明性的各實施例的所注附圖,在以下詳細描述 中進一步描述本發(fā)明,其中貫穿各附圖,相同的附圖fei己^類似的部件。應當5M,
本發(fā)明不限于所示出的精確安排和手段。在附圖中
圖1是一個示意圖2示出計算文件i辨列和稍后l細來定位病毒的散列的散列算法的通用結(jié)構(gòu); 圖3示出在重寫病毒感染的文件的情況下由散列算法Rew-pH戶;fi十算的文件i,
列;
圖4a示出重寫病毒定位算法Rew-Loc中的步驟;
圖4b示出算法Rew-RecLoc (由Rew-Loc使用)中的步驟;
圖5示出在追加病毒感染的文件的情況下由散列算法App-pH戶;fi十算的文件i嬌
列;
圖6a示出追加病毒定位算法App-Loc中的步驟;
圖6b示出算法App-RecLoc (由App-Loc使用)中的步驟;
圖7示出在^A病毒感染的文件的情況下由散列算法Emb-pH im十算的文件i,
列;
圖8示出^A病毒定位算法EmWx)c中的步驟; 圖9是各種病毒定位技術的屬性的概述;以及 圖10是各種病毒定位技術的性齢ff古。發(fā)明詳細描述
給出了使用病毒定{ 提高軟件安全性的方法。,的完整性檢查原理可以被擴 展以使不僅可以檢測到X寸文件的改變,而且還能在文件內(nèi)部定位這些改變。
可以為例如重寫技術、追加和預加fe^等每一種感染技術以及每一種插A^^A
技術設計用于實現(xiàn)病毒定位的方法。本發(fā)明的方法是基于對根據(jù)感染技術戶;^用的代
碼鄉(xiāng)擇的文件i央集合的各種序列的密碼散列的重復有效應用的。在所有情況下,這 些方法都獲得令人滿意的定位(即,在損壞的文件中標識至多是病毒的兩倍大小的區(qū) 域)和效率(即,由定位散列函數(shù)返回的散列比由常規(guī)密碼散歹涵數(shù)返回的那些散列
最多長一個對數(shù)系數(shù))。輸出效率是定位散歹涵數(shù)的關鍵屬性,因為如以下討論的,有 一個平凡構(gòu)造,其返回更長的散列,艮啦與輸入文檔的原子塊的數(shù)量呈線性的系數(shù)來 返回。
以下檢査對^^^/微^灘定修6^人而導致銜,游文/糊病毒進行研究,其中修
改的類型可根據(jù)具體的感染技術而變化。給出了 (密碼)抗沖突散列法的已知概念禾口
正式定義,例如B.Schneier, "Applied Ciyptography:Protocols, Algorithms and Source Code inC (實用密碼用C編寫的協(xié)議、算法和源代碼)",J.Wiley&Sons(1993),糊述了
病截f為的分類。
抗沖突散列法概念
經(jīng)常用于密碼中的被稱為"沖突難處理的"散列函數(shù),或"無沖突"、"抗沖突" 以及有時被稱為"密碼"函數(shù)的數(shù)學工具通常用于軒應用中,包括那些需要對文件、 消息等進行完整性驗證的應用。這些工具或函數(shù)定義如下它們^f壬意長度的二進制 串(標粉贓縮的文件)作為輸入,并腿回固定大小(例如,128或160位)的 二進制串作為輸出(表示原始文件的散列或指紋)。當散列函數(shù)的輸Ai^長于160位 時,散列函數(shù)的任何單錯出的原像數(shù)目就非常大。然而,這些函數(shù)預期的驚人特性 是看 任何有效算法而言即使只找到鵬寸至同一輸出的兩個原像在計算上也^$以 處理的,在招可算法都必須花費不可行的時間(例如,幾個世鄉(xiāng)域更多)去成功做到這一 點的意義h
抗沖突散列函數(shù)的正式定義
設&是安全參數(shù),并設/7二(7/J^v是函i[^i^:(0,irx(0,ir4(0,ir,其中
6""并且W是函數(shù)索弓I,滿足M"。如果
(1) 存在為每個W計算i^的概率多項式時間(以k)算法;
(2) 對任意概率多項式時間算法A存在可忽略的函數(shù)S ,使得當W被統(tǒng)^t擇時, ^(W) = (x,,x2)以使/^(x》=//W(X2)的概率最多為f(A);
則我們說,//是抗沖突散列函數(shù)族。
認識到抗沖突散列函數(shù)的下歹游性除可忽略概率,如果X,和X,由多項式時間算 法計算得出,貝lj對于l Xl |2 A:且| x2 |2 A ,當JC! * x2時/^(xJ # //w(x2)??梢栽O計在其輸
入上重,用原子抗沖突散列函數(shù)的組合抗沖突散列函數(shù)的構(gòu)造,使得組合函數(shù)的基
于任意兩^hii入的所得輸出揭示關于輸入相似性和/廳異的信息。
病截亍為的分類重寫、預加、追加、駄
大多數(shù)因特網(wǎng)病毒可以被表征為激盾這些感染技術的其中之一重寫、予勛卩、追 加和RA,它們將在下面詳細描述。 重寫感染技術
在這種感染技術中,病毒M3i替換宿主代碼的一部分來感染宿主或目標可執(zhí)行文
件。 一種可以實現(xiàn)這一點的方式是病毒如同打開常規(guī) 文件一樣簡單地打開目標文 件來寫入,并且接著將自己的一個復本保存到文件,從而造成了損壞的文件。當該損 壞的可執(zhí)行文件稍后由它的所有者啟動時,操作系統(tǒng)將執(zhí)行該病毒代碼而不是原始的 目綺驕。這種感染技術通常破壞目標文件,使新可艦。 慟口感染技術
在這種感染技術中,病毒將它的代碼插入至咜想感染的宿主或目標可執(zhí)行文件的 開頭,從而創(chuàng)建了損壞的可執(zhí)行文件。這種技術一般比重寫技術更精細,并且已經(jīng)被
例如病毒Nimd^頓。當該損壞的可執(zhí)行文件稍后由它的所有者啟動時,操作系統(tǒng)將 首先執(zhí)行該病毒代碼,因為它位于該可執(zhí)行代碼的開頭,接著才是預期,即原始目標, 程序。這種感染技術不僅表現(xiàn)為可能不破壞目標文件,而且可具有不被代碼所有者容 易地檢測的文媒。實際上,這樣一種病毒的存在可能不容易被檢測到。 追加感染技術
在這種感染技術中,病毒將它的代5騙入到它想感染的宿主或目標可執(zhí)行文件的 末尾,并且通常還在受感染或損壞的文件的開頭插入一個到病毒代碼的開頭的跳轉(zhuǎn)。 當該損壞的可執(zhí)行文件稍后由它的所有者啟動時,操作系統(tǒng)將首先跳轉(zhuǎn)來執(zhí)行該病毒代碼,瓶劐維制返回到預期,即原始目標,禾辨。與預加技術一樣,〗頓這種感
染技術的病毒的存在可能不容易被檢測到。這種技術例如由病毒Mchelangelo使用。 駄感染技術
在這種感染技術中,病毒將一段代碼或指向任意4體的分開的文件中的代碼的命 令插入到最終^M編譯成常規(guī)可執(zhí)行文件的一個或多個文件的外殼腳本、Perl腳本、 Java類文件或源代碼中。盡管很少看到這種方式的示例,但它們作為包含可執(zhí)行指令 的每一禾聘是病毒的潛在目標的提醒。
基于密碼散列法的完整性衞正
如J^M,完整性魁正技術嘗縱執(zhí)行文件之離測對i紋件糊頓期修改?;?于密碼散列法的完整性魁正可以如下執(zhí)行。
給定任意的抗沖突散列函,矣// = {//丄£^ (為便于標,謝門從&中刪去索引
w)和文件/, 160位值/^"http://(/)證明任意有效算法(可能創(chuàng)建/本身)都不能在可 行的計算時間內(nèi)獲得,或者已經(jīng)得到與/不同的滿足完整性斷正觀賦Z/(g) = F(/)的g。
可執(zhí)行或源文件的完整性魁正如下完成。在認為文件/無感染的預備階段,例如 當從其原始源下載i紋件時,|礎/^"http://(/)被附加至該文件。之后,當對i紋4頓
行合溜彥改頓文件,時,新值/^/7' = //(/')代替之前的散列值。當該文件需要被執(zhí) 行時,或需要被編譯以{娥行時,對文件的當前版本,執(zhí)行完整性魁正測試,即檢査 to/Z = //(/')是否成立。如果該匹配被SME,則謝門有證據(jù)表明只對該文州故了合法 修改;否則,已經(jīng)發(fā)生了一些非預期的修改。由于這種修改可能是由感染弓胞的,所 以該文條著被發(fā)送至嘗試各種診斷技術的分析器,包括在安全環(huán)境中仿真文件的執(zhí) 行,導出關于病毒的有用信息并可能將文件/'修誠它之前的、未受感染的狀態(tài)。
4OT密碼散列法進行完整性^i正的流行系統(tǒng)包括來自S.Quinlan和S.Dorward的 Venti, Venti: a New Approach to Archival Storage (檔案存儲的新方法),發(fā)表在2002 年USEMX文件和存儲技術(FAST)會議錄中,以及GH.Kim和E.H.Spafford的The Design and Implementation of Tripwire:a File System Integrity Checker (Tripwire的設i十與
實現(xiàn)文件系統(tǒng)完整性檢查器),發(fā)表在腦年第二屆ACM計穀幾和通信安全封義
(ACMCCS)會i義錄中。
密碼散列法和病毒定位
以上技術可以被擴M^不僅用于檢査完整性,還可以用于揭示關于兩個文件之間差異的附加信I。 i^完整性衞正技術的基本特性可以ltt^如下。給定文件似(l)和 文件M(2),以及它們的散列/^我l)和/^/K2),存在一個有效算法DIFF,其決定函 數(shù)p(M(l),M(2)),該函數(shù)被定義成在M(1^M(2)時等于1,否則等于0。算法DIFF ^f頓輸入、 和toW(2)來簡單地檢査/ a^(1) = /^^(2)是否成立,并且當成立
時返回l,否則返回0。這種方法可以被概括為HT泛的函數(shù),尤其是概括為用于檢測 關于M(1)和M(2)之間的由例如重寫、追加、預加和ftA感染技術等,感染技術所 引起的差異的信息的函數(shù)。例如,p-^^/一抗沖突散列函數(shù)被正式定義為抗沖突 散列函數(shù),以使得對于返回兩個文件似(l)、 M(2)的招可裔^X寸手,存在有效算法Det, 該算法在接收到M(l)和M(2)的兩個散列作為輸入后,會,計算函數(shù)p(M(l),M(2》,
其中p通常是返回關于這兩個文件之間的差異的一些信息的函數(shù)。盡管任意沖^7隹處 理的散列函數(shù)似乎不能有助于揭示關于M(l)和M(2)之間的差異的特性的有用信息,
然而從常規(guī)的沖窮佳處理的散歹涵數(shù)演化而來的更復雜的沖^t處理的散列函數(shù)可以
被設計來獲^W用信息。
在所描述的所有發(fā)明方法中,每一文件M包括"個原子塊M(1),似(2),…,M("),
其中可以適當?shù)剡x擇塊大小;例如,它可以作為文件能被力,成的最小語義單元來確 定,如源文件中的一行。在一種方法中,非常簡單的散歹幅數(shù)題艦回輸入文件每 一塊的原子散列瓶著返回先前附十算的所有散歹啲原子散列來獲得的,其中原子散 列是f頓任意沖^i處理散列函M^計算的。這種技術可與±^算法DIFF —起用于文 件的每一塊,從而導出函數(shù)p所需要的任意感興趣的信息。然而,明顯的缺點^)5艦 回的散列太長,因為它等于常規(guī)散列大小的"倍,而常規(guī)散列對于例如幾千字節(jié)等相 當小的文件已經(jīng)是不切實際的了 。
然而,在一示例性實施例中,所返回的散列的大小(被稱為構(gòu)造的展,系教)被 如下定義。設//是沖^t處理散列函數(shù),且c//是調(diào)用的散列函數(shù)的構(gòu)造。則W
的展開系數(shù)等于d根據(jù)"位輸入阮逸回的輸出的大小除以根據(jù)"位輸入戶;m回的
輸出的大小。具有最短的可能的展開系數(shù)(例如"的對數(shù))的構(gòu)造是最合乎需要的。 這使得因附加的iME和散列的生^^產(chǎn)生的計算和存儲開銷很小,因為所有構(gòu)造被描 述成散列函數(shù)的應用的數(shù)目等于i繊開系數(shù)。
為獲得這一性能,如在每種感染技術中所例示的,為仔細選擇的消息位的序列計 算基本的沖窮隹處理散歹涵數(shù)的多個應用。例如,對序歹啲選擇可以根據(jù)適當?shù)?編碼方案"來執(zhí)行,而該"編碼方案"稍后允許從多個散列中與蟲"解碼"關于兩個消 息之間的差異的所需信息,其中編碼/解碼方案和所需信息都依賴于感染技術。
另一感興趣的度量將是最小化其中檢測到病毒的定位區(qū)域。尤其是,對某定位, 教p,返回包含最多為max(p.6(r),l)的多個塊的塊區(qū)間是合乎需要的,其中6(r)是病
毒V所包括的塊的數(shù)目。
本發(fā)明方法中的所有構(gòu)造都超院位系數(shù)p:2,展開系數(shù)為"的對數(shù),并且僅
需要不經(jīng)常的、離線的散列計算,使得計算開銷對旨系統(tǒng)的效率來說不是重要因素。 圖1是一個示意圖,示出被M31處理技術修改而^^可疑文件12的目標文件10。 圖2示出散列算法的通用結(jié)構(gòu),例如,通用p-^麗/一散列函數(shù),計算文件塊的序
列和之后被用于定位病毒的散列。在步驟A1,計ff^ff列。在步驟A2,計算旨土央 序列的散列。在步驟A3輸出散列。以下將更詳細地描述用于每一感染類型(即,重 寫、追力P/予勛B、以及駄)的散列算法。 重寫感染的病毒定l立
如上戶,,在重寫感染技術中,病毒重寫目標文件的某些塊。在大多數(shù)情況下, 損壞的文件即使在重寫之后仍保持相同的大小并且所重寫的i央被相鄰地放置。本發(fā)明 方法計算盡可能多的來自文件的i辨歹啲散列,以便能夠稍后定位重寫文件中任何位 置的一段連續(xù)塊的病毒。因此,假定文件中的塊的數(shù)目是",則定位散列函數(shù)計算文 件塊的4(log2"-l)個序歹啲散列,并因此得到4(log"-l)個散列,艮P, log"-l個組中 的每一個組都有4個散列。例如,當11=1024,計算4*(10-1)或36個散列。圖3示出 由文件i嬌列14、 16、 18、 20構(gòu)成的、在用于觀感染的病毒定位散列法的示例性實 施例中被散列的組22。注意在第i組22,第三序列18和第四序列20 ^ffiii循環(huán)地將 文件旋轉(zhuǎn)"/2'+1個±央并重新應用用于第一序列14和第二序列16的劃分而獲得的。
在一個實施例中,p-^^//"g抗沖突散列函數(shù); 被定義如下。根據(jù)"塊的文件 M和的輸入,函數(shù)p(Ml,M2)等于
-0,如果M1二M2;
- 0,6), 如果 6-a<"/4并且 AH(a),M10 + l),…,M1(6) 和 M2(a),M2(a + l),.,.,M2(6)是M和M2僅有的不同的塊; -1,其它情況。
因此,該分析被限制在最多重寫n/4個塊的病毒,因為當更大數(shù)量的塊被重寫時,定位問題由于定位散列函數(shù)不顯著地比常規(guī)的散列函數(shù)更有用而失去相關性。
因此,在每一步驟,j頓原子抗沖突散列函數(shù)"來計算輸入文件的某些塊的散列。 給定由于將M,修改成M,的重寫病毒而不同的任意兩個文件M, 、 M2,每一步驟中的
散列應當ffii^f除M,中的一半纟魏i姊幫助發(fā)現(xiàn)病毒的位置。所排除的i央是以下四種 之一文件中還沒有被排除的塊的第一半麟二半,或,文件中還沒有被排除的塊的 適當?shù)难h(huán)斷立的第一半麟二半。這足以獲得定位系數(shù)2,并且因為在每一步驟計 算4個散列,所以輸出展開最多是4 log "。
以下是抗沖突散列函數(shù)的正式描述。謝門的表示為^evt;-;7i7的P _ "w^"g抗沖 突散列函數(shù),將"塊的消息M:M(O),...,M("-l)作為輸入,并對M的/個塊的序列應 用41ogw次原始抗沖突散列函數(shù)壓如下(為簡單起見我們假定"是2的冪并朋數(shù) 的底為2):
步驟h
在 —步驟,M中的i央被分組成4個序列,每一序列^M31^接n/2個i^得
到的,定義為
<formula>formula see original document page 11</formula>
\3禾口\4中的塊的索引^Mil分別將^和\2中的塊的索引循環(huán)移位《/4而得到 的。在該步驟中4個散列作為 ,.=//(^,)來計算,其中i = 1,2,3,4 。
步驟/',對于片2,…,logn-l:
擴展步驟l,"中的塊被分組成2*2'個序列,每一序列^Iii^接"/2^個i姊
得到的,定義為
<formula>formula see original document page 11</formula> 其中/ = 1,...,27 。(注意^^中的塊的索引是通過將A,中的塊的索引循環(huán)移位
"/2川而得到的)。
在該步驟中的4個散列如下計算 當/=,2時以及,當/=3,4時
= "^0^,'-2+2j' I A',' + 2) I ^/,/ + 2_/+2 I…I ^/,, + 2_> + 2")。
該函數(shù)的輸出是/z = ((02,,,...,11——j,,)),^,,,。
^,-/7//的原子散歹啲總體數(shù)目僅為410§"-4 ,絲每一散列揭示關于病毒區(qū)間 的位置的信息中的一位的模型中基本上是最優(yōu)的。
為說明7 evi^//是抗沖突的,觀察到在i ew-;^的輸出中尋找沖突的算法找到兩 個不同的輸入,它們由i/鵬MX寸于值y,l,…,log"以及1=1,2,3,4中至少一個相同的 I /),這暗示用于發(fā)現(xiàn)的沖突的算法。
為說明i ew-; //是/7-^^//"^ ,我們構(gòu)造使用和對于所有索引 (_/ ,/),乂 e (1,…,1og" — 1},,' e {1,2,3,4}的散列 的有效算法丄oc,以在文件M的可疑的或
可能損壞的版本M'中定位重寫病毒。算法i ew-Zoc,如在圖4A中示出的,可被描述 如下
1. 根據(jù)輸入M'計算i ew-;^的輸出W= ,//2,," ")),=1,2 3 4 (步驟Sl)
2. 對于所有索弓I a,/), J' e (1,…,1og" -1},/ e {1,2,3,4},如果~, # ,則計算、=1或 者如果h」,=h'j,i則計算、=0 (步驟S2)
3. 設S^l,…,n"4并且根據(jù)輸A)(寸(S^輸出由過程i ew-^cZoc (以下定義)戶艦 回的±,列7。(步驟S3)
步驟S4執(zhí)做程i ew-i ecZoc。
過程i ew-^c丄oc(S^被定義如下,且在圖4B中示出
1. 對于所有索引/€{1,2,3,4},如果。,=1 (步驟S5),則返回r^并停止。
2. 設/*滿足,,,.,=0 (步驟S6)
3. 如果/*=1或2 (步驟S7),則從集合S中移除所有來自集合 \,,&,,+2,\,+4,...,S,,+2,2的塊(步驟S8)
4. 如果/*=3或4 (步驟S9),則從集合S中移除所有來自集合
5. 運微程腸-7 ec丄ocW+"。(步驟Sl 1)
根據(jù)/ 的定義,鑒于僅考慮b^a〈n/4的情況^^夠的,則i ew-p//是p -的證明是以下弓隨的推論。對于大小最多為"/(2.2勺的任意病毒區(qū)間("',6'),根據(jù)輸入M' (M的遭受具有病毒區(qū)間("'》')的重寫感染的版本)和構(gòu)造i ew-;^根據(jù)原始文 件M的輸入直到步驟乂才獲得的散列,算法i ew-Zoc返回區(qū)間(fl,6),這樣a S " 6 并且,如果"/ (6 _ + — a +1) S " / 2乂 。
追力將頁加感染的病毒定位
追加感染技斜時勵n感染技術可以用對稱的方式來處理。如上戶皿,在追加感染
技術中,病^l皮附加至目標文件io的末尾,而在予勵a感染技術中,病*|皮添加至目標
文件10的開頭。因而,在這兩種技術中,所得的破壞的或可疑的文件12的文件大小 增加了,并且在追加或預力喊毒之后,先前的文件大小可能丟失。本發(fā)明方法計算來 自宿主文件10的:t嬌列的多個散列,以稍后定位將一段遊封央追加到被件末尾的病 寧自開頭預加一段)。假定未損壞的目標文件IO中的塊的數(shù)目為",且損壞的文件 12中的塊的數(shù)目為W'。貝IJ,根據(jù)"央的消息的輸入,構(gòu)驢多返回1(^4/3《/4個文件±央 序列并且因而最多返回log,^/4個散列;即,1og化《/4個階段的每一個都有一個散列。 例如,如果《=1024,則有20個散列。
圖5示出將在用于追力P/預加感染的病毒定位散列法的示例性實施例中進纟豫列 的文件鵬列24。
X寸于本發(fā)明病毒定位方法,可以設計; -腳^/一抗沖突散列函數(shù),其中p如下 定義。根據(jù)不必等長的輸入M1和M2,函數(shù)p(Ml,M2)等于 -0,如果M1-M2;
-X ,如果|M2|S2|M1|并且對于z、l,…,x —1,M1(/) = M2(/)且對于/= jc , Ml(/) # M2。;
-1,其它情況。
如J^S寫感染的情況一樣,該分析可被限制在最多追加"塊的病毒,艮口,假設 旭中的塊的數(shù)目最多是2",其中"是M中的塊的數(shù)目。因此,在每一步驟,原子抗 沖突散列函數(shù)/^細來計算輸入文件的某些塊的兩個散列。給定由于將M,修改成i^ 的追加病毒而不同的任意兩個文件M, 、 M2,在每一步驟中這兩個散列應當艦排除 M2中的大約一半候選±誠幫助發(fā)現(xiàn)病毒的位置。
追加和預加病毒的一個主要難題是文件A^的長度可能與目標文件的長度M,不 同,并且因此不能l頓'長度^IT技術,如上描述的用于重寫病毒的那些技術。相反,從文件的開頭處開始,通過在獨立于目標文件的長度的序列上仔細計算散列來排 除候選塊。
設//標一個抗沖突散列函數(shù)。我們表示為傘i^i/的/ - wwa/,'"g抗沖突散列 函數(shù),將《塊的消息M = M(1),…,M④作為輸入,并X寸M的這《±央的序列最多應用log《
次原始函數(shù)/7,如下
1. 設7<~1并且似;=鉦;
2. 計算最大正纖"吏得2、《/2,并從M,得序列S,M,(l),…,M/2",并計 算散列~=卿;
3. 如果《-2"1 +121,則在M)+, = M;(2"' +1) I…I M/《)上,遞歸地重復步驟2直 至噺輸入M^具有0或1個土央時遞歸結(jié)束,并設y " +1 ;
4. 返回所有戶;fi十算的散列(、/^,…,/0 ,其中m = log4/3《/4 。
如果w標目標文件M的土纖目且w'標損壞的文件M'的i娥目,貝嘬多有 1og《個遞歸步驟,并且因此X/,p/f所返回的全部散列的數(shù)目是 S log4/3《/4 S log4/3"74S log4/3" — 1 ,因為我們假定"'《2"。這一展開系數(shù)在每一散列
揭示關于病毒區(qū)間的位置的信息的一位的模型中基本上是最優(yōu)的(高達某倍增常數(shù))。 為說明々p-;^是抗沖突的,觀察到在的輸出中尋找沖突的算法找至倆 個不同的輸入,它們由//日劃寸^^寸于』=1,...,1(^11以及1=1,2中至少一個相同的/7C/10 ,
這暗示用于發(fā)現(xiàn)if的沖突的算法。
為說明4^; i/是/ -潛e"/fwg ,我們構(gòu)造使用傘;^i/和對于所有的索引 _/ e {1,...,附},其中w = log4/3 "/4的散列、的有效算法^t^Zoc,以在文件M的可能損壞
的版本M'中趙Mt加病毒。算法4^丄oc,如在圖6A中示出的,可被描述如下
1. 設仨l并且Mj = M (步驟S12)
2. 計算最大正整數(shù)A使得2^〈w'/2,并從Mj獲得下面兩個塊序列 S,,M/l),…,M/2") 以及S;2=M;(1),...,M/2A); 并計算散列 氣,.=//C.)其中/ = 1,2 (步驟S13)
3. 如果《-2"1 +121,則在M^ = M7.(2*+1 +1) I... I M/《)上遞歸地重復步驟2直到 新輸入M川具有0或1個土央時遞歸結(jié)束(步驟S14),并設y" + l (步驟S15)
4. 設(、,/;2,."H2,對于m^log4,3"'/4標所有所計算的散列(步驟S15)
5. 如果柳'=附(步驟S16),則設/ = 2 (步驟S17),否則設/ = 1 (步驟S18)6. 設/ '= ,/7'2 ,…,/^,)=( ,,\,.,..人,,0 (步驟S19)
7. 對于所有索弓|乂£{1,...,附'},如果、"貝1針算。.=1,或者如果、"/則計算
^=0 (步驟S20)
8. 設^A…,"A/W并且輸出過程傘; ^ed:oc (以下定義)根據(jù)輸A^(S^戶艦回 的對(步驟S21)。
步驟S22執(zhí)行過程傘盧cZoc。
過程々;^ecIoc(S^被定義如下,且在圖6b中示出
1. 如果。,,=1則返回r^并停止(步驟S23)。
2. 從i,列S中移除所有來自塊序列S,,的塊(步驟S24) 3蹄過程4t^HocW+"(步驟S25)。
々/^//是p-,W/"g的證明是下列弓瞎的推論。對于至少具有《-^. +1個塊的 任意病毒區(qū)間(W),根據(jù)等于目標文件MJd^加了區(qū)間(W)的《塊的損壞的文件M' 的輸入,以及在構(gòu)造^^^中的遞歸的前川個步驟中獲得的散列,算法^^Zoc返 回值X使得x ^ (gp,算法定位病毒)并且;c 2 - " -1 ,即々;^i/的定位系數(shù)最多為 2。
^A感染的病毒定位
如i^f^,在KA感染技術中,病毒被插入到目標文件10中間的某一位置,且 不在開頭駄尾,從而創(chuàng)建大小大于目標文件10的可疑文件12。本發(fā)明方法計算來 自目標文件10的i嬌歹啲多個散列,以稍后定位將一段遊賣塊^A在損壞的文件12 中的任意地方的病毒。假定目標文件10中的塊的數(shù)目為n,且損壞的文件12中的塊 的數(shù)目為W'。貝U,根據(jù)"央的消息的輸入,該構(gòu)造最多返回8(logJ-l)個文件i,列, 并且因而最多返回8(logf-l)個散列;艮P, 1og《個階段的每一個有8個散列。例如, 如果£ = 1024,則有8*(10-1)=72個散列。
圖7示出將在用于駄感染的病毒定位散列法的示例性實施例中進行散列的文件 塊的子集26、 28、 30、 32。由于病毒被^A在受感染的或損壞的文件12中,因此有
必要找到病毒的開頭和結(jié)尾。
對于本發(fā)明病毒定位方法,可以設計/7-,^/一抗沖突散列函數(shù),其中p如下 定義。根據(jù)不必等長的輸入M和M2,函數(shù)p(Ml,M2)等于-0,如果M1^M2;
-0,6),如果6 —a<"/2 并且對于/ = 1, ,"—1,A/1(,') = M2('') 且 對于^ = 6 + 1,...,"以及/2 = ^ + 6 - 1 + 1 , Ml(z;) = M2(/2);
-1,其它瞎況。
該分析可被限制在最多i^A"個塊的病毒,即,假設旭中的塊的數(shù)目最多是2M, 其中M是在目標文件M中的塊的數(shù)目。
用于嵌入感染情況的;7-潛^/^散列函數(shù)的構(gòu)造是用于重寫和追加感染情況 的構(gòu)造的組合。該組合包括使用如追加感染構(gòu)造中的文件±,列'長度無關'、使用如 用于重寫感染構(gòu)造中的序列結(jié)構(gòu)來利用該獄。所得構(gòu)造的定位系數(shù)為2并且展開系 數(shù)為81og《,其中《是輸入文件的大小。
函數(shù)的正式描述如下。設//表示抗沖突散列函數(shù)。我們表示為的 "w"Z/"g抗沖突散列函數(shù),,將"塊的消息M^M(0),…,M(《-l)作為輸入,并對 M的這f塊序列應用8(1og《-1)次原始函數(shù)i/,通過在輸入M = M(0),…,M(《-1)上和 輸入反向文件rM = M(《-l),...,M(O) JJt行一次下列步驟(為簡單起見我們假定《是2 的冪并M數(shù)的底為2): 步驟l:
計算最大正 ^使得2、〃2。在i魏一步驟,M中的塊被分組成4個序列,
每一序列^M^接《/2個:t姊得到的,定義為 S^M^UM^-1),
《"M(2"1…IM("),
S13 = M(2") I…I M(《—1 — 2"),以及
SM = M(O) I... I M(2" -1) I M(" -2") I…I M(n -1)
\3禾口\4中的塊的索引^t過分別將^和^中的塊的索引循環(huán)移位2"i而得 到的。在該步驟中,4個敏U作為、其中i",2,3,4來計算。 步驟/',其中/=2,…,log
擴展步驟l, M中的±央被分組成2*2卩個序列,每一序列Mil^接"/2〃個i姊 得到的,定義為
5"" =M((c-l"2"20l...|M(c*2"2J-l)|M(2* + (d-1)*(《-2"/2。l…IM(2"+d"/2」-l)): 其中c,c/ = 1,,并且S, ,+2,被類船也定義,除它的塊的索弓1^fflii將S,,.中的塊的索弓I循環(huán)靴2"2J而獲得的之外。
在該步驟中,4個散列如下計算 當/=,2時
= i/(^ i i; i…u; 以及,當/=3,4時
該函數(shù)的輸出為/ = ((K,,h2,.,h一—' ,))i=1 2 3 4 5 67 8 (在此對于f = 1,2,3,4, ~,涉及 M并且對于/ = 5,6,7,8, ~,涉及rM)。
五m6-;^的原子散列的舒隞目僅為8 log " - 8 ,雜每一個散列揭示關于病毒區(qū) 間的位置的信息的一位的模型中基本上是最優(yōu)的。
類似于之前構(gòu)造的散列函數(shù),可以看到五m6-;^是抗沖突的。為說明五m^/Z是 ,構(gòu)造l頓五m6-;7i/和對于所有的索引(7,/),7e(l,…,log" —l},/e{L..8}的 散列、,的有效算法五m"oc (在圖8中示出),以在文件M的可能損壞的版本M'中
定位RA的病毒。該算^J蔬行算法i ew-Loc兩次 一次4OT文件M和對于所有索 弓Ia/),y e (1,…,1og" — 1},/e {1,...,4}的散列~,,(步驟S26),并且一次^f頓文件rM禾口對
于所有索引a/),j'e(l,…,log"-lh/e(5,…,8)的散列、,(步驟S27)。設S1和S2是由 此獲得的輸出。算法五m6-丄oc返回集合Sl和S2的交集(步驟S28)。
性能分析
圖9和圖10呈現(xiàn)和描繪了,的本發(fā)明技術與兩種已知技斜目比的適用性和性
倉g總結(jié)。
如上戶皿,"檢測構(gòu)造"表示僅計算其^l入文4牛的單個散列的構(gòu)造,而"平 凡構(gòu)造"表示計算輸入文件的*±央的單個散列的構(gòu)造。回想在重寫感染的病毒定位 一節(jié)、追力P/預加感染的病毒定位一節(jié)、^A感染的病毒定位一節(jié)中的構(gòu)造分別被^ 為7 ew-; //、傘;>/ //、 且"是文件中的塊的數(shù)目。盡管檢測和平凡構(gòu)it^
于上述給定特征中的任意感染技術,但是這三種散列函數(shù)構(gòu)造i ew i/、 4 ,/7//、 中的每一個被f賴採用^jt定的感染技術。
另夕卜,在這些構(gòu)造i ew-; //、 4^-/ //、五m6-; i/中對病毒長度的限制基本上不失 一般性,因為一旦不滿^3^個限制,則病毒定位問風就失去了意義。圖10概括了下列性能系數(shù)。對于定位系數(shù),檢測構(gòu)造實際上沒有定位,而平凡
構(gòu)造由于其定{妙萬有受感染的塊而具有最可能的定位。構(gòu)造i ew-;^、 4t7/7^//、五m&7/
定位最多僅是感染區(qū)域的兩倍大小的區(qū)域。對于展開系數(shù),平凡構(gòu)造具有太大的展開,
而檢測構(gòu)造實際上沒有展開并且構(gòu)造i ew-pi/、々;^//、五勵-; i/僅有散列的對數(shù)(以 n)展開。
最后,對于時間性能,平凡和檢測構(gòu)M于單個散列計算基本上沒有時間爆炸, 而構(gòu)造腸--、£咖//僅計算對數(shù)(以n)次散列。
盡管在具體實施例中描述了本發(fā)明,但應當理解,本發(fā)明不應被解釋 為受這些實施例的限制,而相反應根據(jù)所附權(quán)利要求來解釋。
權(quán)利要求
1、一種用于病毒定位的方法,包括以下步驟計算文件塊序列;計算來自宿主文件的所述文件塊序列的第一散列;計算來自受感染的文件的所述文件塊序列的第二散列;以及比較具有所述文件塊序列的所述第一散列和所述第二散列,其中當所述第一散列和所述第二散列的某一些不匹配時,輸出病毒的位置。
2、 如權(quán)利要求i戶皿的方法,其特征在于,戶;M計算第一散列和計算第二散列 的步驟是〗OT抗沖突散列函數(shù)、數(shù)字簽名方案、消息認證碼以及偽隨機函數(shù)中的一個 來執(zhí)行的。
3、 如權(quán)利要求1戶腿的方法,SW征在于,戶;M計算文件i,列是l頓重寫算 法、追加算法以及KA算法中的一個來完成的,各算法的輸出分別返回重寫、追加或 ^A病毒的位置。
4、 如權(quán)利要求i戶,的方法,欺寺征在于,戶;M病毒M自戶;M宿主文件的具 有被修改的內(nèi)容的所述文件±,列。
5、 如權(quán)利要求i戶腿的方法,欺寺征在于,戶;M病毒的〗體是不比戶;M病毒大 一小倍增量以上的戶艦文件±辨列。
全文摘要
提供了用于使用完整性檢查技術來標識和定位計算機病毒的方法。提供了用于三種類型的病毒感染中的每一種的病毒定位的方法,所述方法包括以下步驟計算文件塊序列,計算來自宿主文件的文件塊序列的散列和計算來自受感染的文件的相同或相關的文件塊序列的散列,并將來自宿主文件的散列與來自受感染的文件的相同或相關的文件塊序列的散列進行比較,以使得在所述第一散列和所述第二散列的某一些不匹配時,輸出病毒的位置。提供了取決病毒感染的類型來計算文件塊序列的方法,和使用抗沖突散列函數(shù)、數(shù)字簽名方案、消息認證碼或偽隨機函數(shù)來計算散列的方法。
文檔編號G06F7/04GK101641675SQ200780040571
公開日2010年2月3日 申請日期2007年10月30日 優(yōu)先權(quán)日2006年10月31日
發(fā)明者F·瓦基爾, G·迪克雷申佐 申請人:特爾科迪亞許可公司有限公司