使用密码散列法的病毒定位的制作方法

文档序号:6456372阅读:280来源:国知局
专利名称:使用密码散列法的病毒定位的制作方法
技术领域
本发明一船步及软件安全,并且尤鄉及用于4顿完整性检査技术来标辩啶位 计^l几病毒的方法。
背景技术
病毒检测是一个对经常被要求采取如购买和运行防病毒软件等防病毒的预防性 措施的任何计穀几用户有着惊Ai也广泛影响的问题。病毒是文本、可执行代码等形式 的数据,其在没有用户授权并通常在不为该用户所知的情况下被添加至该用户的文件 或重写该用户的文件中的数据。病毒检测领域中的研究包括针对特定种类的病毒的各 种i娥式方法。尝i辦决该问题的最成功的现代技术中的一些落入签名检测和完整性 检查的一般范例中,例如E.Skoudis, "MALWARE:Fighting Malicious Code"(恶意软 件与恶意代码做斗争),Prentice Hall (2004),以及P.Szor, "The Art of Computer Virus Research and Defense"(计^|几病#5开究和防御的就),Addison Wesley (2005)。前一 范例需要发现已知病毒的受感染代码的片段、被调用的签名,存储该签名,并开发扫 描计穀几存储器以搜索这样的签名的软件。本发明所关注的后一范例是需要^ffi检测 对文件的未授权改变的密码散列函数,并可能揭示未知病毒的存在。后一范例的成功 的,示例是Tripwire,其是UMX环境的广泛可用的完整性检査程序。
如在例如G Di Crescenzo、 A. Ghosh和R. Talpade的"Towards a Theory of Instrusion Detection (入侵检测理论)"中戶7fi寸论的,签名和异常检测的入侵检测原理也^i共对病 毒检测方法的洞察。签名病毒检测范例對以于入侵检测领域中的签名检测原理;相反, 完整性检查范例更类似于入侵检测领域中的异常检测原理。
可用的防病毒软件通常4顿三种用于检湖!)病毒的主要技术签名、i微法、和完整性验i正。签名技术类似于入侵检测系统中的签名检测方法。首先,学习已知病毒并 且存储它们的签名;接着在候选可执行文件中寻找这些签名的出现。尽管这是病毒检 测的最流行的方法,但它繊于厂商快速更亲條名 库和用户决速更新他们的签名 文件,并且它很容易被多形和变形的病毒技术击败。
其它两种技术,i娥法和完整性魁正,更类似于入侵检观孫统中的异常检测方法。 ^^技术在尝试基于病毒可能展示的例如试图向可执行文件中写入、访问引导扇区、 删除石M驱动器内容等某些行为的基础上来标识病毒方,能有点复杂。完整性Mi正 技术尝i站感染已经发生之后但可能在受感染的文4顿行发生之前检测对文件糊雨 期修改,因此仍然使得该感染无害。
尽管U^法和完整性斷正技术两者都具有捕获更多智能病毒的潜力,例如具有多 形和变形能力的那醜毒,但这些技术最多能够引^(寸特定文件的警觉,其随后将在 受控环境下在病毒诊断阶段被仔细仿真和分析,在该受控环境中需要导出潜在病毒的 位置、特性和后果的结论。由于实5細于仿真的精确受控环境的困难,所导出的后果 的精确性可倉环可信。此外,在许多情况下,病毒对原始文件所作的修改非常微小, 例如对位于存储器中某处的程序的子例程调用,并且因此拥有关于病毒自身的附加信 息絵非常有用。
此外,完整性斷正技术^整性检查原理仅检测对文件的改变,但不定位或指示 该改变发生在文件中的什么地方。缺少关于病毒的定位信息,贝咜的检测慰賺资源 且易于娜的。这隐含地定义了软件安^W或的一个新问题,"病毒定位"。
据发明者所知,病毒定位的问^t前从未l,格调査或甚至提出过。对 应用 密码散列法是用于M完整性衞正的一个公知范例,并且是像Tripwire等斷正文件系 统完整性的程序的基础。文件的所有原子块的密码散列法也是已知范例,并且已被用 于舰高等待时间、低带宽^5各远程地更新文件鄉决一次写入式档案 存储目的 的禾辨。然而,所有这些禾辨都不解鹏毒定位问题。
发明简述
本发明有利地樹共一种用于三种类型的病毒感染中的每一种的病毒定位的方法。 在一个实施例中,该方法包括以下步骤计算来自宿主文件的±,列散列,将可疑的
或损坏的文件划分成多个组,每组包含多个i^列,计算可疑文件中的所有这些多个土娇列的散列,并将来自宿主文件的散列与来自该可疑文件的散列进行比较,以使得 如果没有发现不匹配,则该可疑文件lfct布为"未损坏",然而如果发^S少一个不匹 配,则该可疑文件l體布为"被损坏",并且确定病毒在文件中的大概{體。
用于病毒定位的方法可以包括以下步骤计算文件±,列,计算来自宿主文件的
文件i娘歹啲散列并计算来自受感染的文件的相同或相关的文件i娇列的散列,并将 来自宿主文件的散列与来自受感染的文件的相同或相关的文件i央序列的散列进行比
较,以使傳在戶腿第一散列和0M第二散歹啲某一些不匹配时,输出病毒的位置。提 供了取决于病毒感染的类型来计算文件i娘歹啲方法,和使用抗冲突散列函数、数字 签名方案、消息认证码或伪随机函 计算散列的方法。
附图简述
fflii参考本发明的非限帝胜的、说明性的各实施例的所注附图,在以下详细描述 中进一步描述本发明,其中贯穿各附图,相同的附图fei己^类似的部件。应当5M,
本发明不限于所示出的精确安排和手段。在附图中

图1是一个示意图2示出计算文件i辨列和稍后l細来定位病毒的散列的散列算法的通用结构; 图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古。发明详细描述
给出了使用病毒定{ 提高软件安全性的方法。,的完整性检查原理可以被扩 展以使不仅可以检测到X寸文件的改变,而且还能在文件内部定位这些改变。
可以为例如重写技术、追加和预加fe^等每一种感染技术以及每一种插A^^A
技术设计用于实现病毒定位的方法。本发明的方法是基于对根据感染技术戶;^用的代
码鄉择的文件i央集合的各种序列的密码散列的重复有效应用的。在所有情况下,这 些方法都获得令人满意的定位(即,在损坏的文件中标识至多是病毒的两倍大小的区 域)和效率(即,由定位散列函数返回的散列比由常规密码散歹涵数返回的那些散列
最多长一个对数系数)。输出效率是定位散歹涵数的关键属性,因为如以下讨论的,有 一个平凡构造,其返回更长的散列,艮啦与输入文档的原子块的数量呈线性的系数来 返回。
以下检査对^^^/微^滩定修6^人而导致銜,游文/糊病毒进行研究,其中修
改的类型可根据具体的感染技术而变化。给出了 (密码)抗冲突散列法的已知概念禾口
正式定义,例如B.Schneier, "Applied Ciyptography:Protocols, Algorithms and Source Code inC (实用密码用C编写的协议、算法和源代码)",J.Wiley&Sons(1993),糊述了
病截f为的分类。
抗冲突散列法概念
经常用于密码中的被称为"冲突难处理的"散列函数,或"无冲突"、"抗冲突" 以及有时被称为"密码"函数的数学工具通常用于軒应用中,包括那些需要对文件、 消息等进行完整性验证的应用。这些工具或函数定义如下它们^f壬意长度的二进制 串(标粉赃縮的文件)作为输入,并腿回固定大小(例如,128或160位)的 二进制串作为输出(表示原始文件的散列或指纹)。当散列函数的输Ai^长于160位 时,散列函数的任何单错出的原像数目就非常大。然而,这些函数预期的惊人特性 是看 任何有效算法而言即使只找到鹏寸至同一输出的两个原像在计算上也^$以 处理的,在招可算法都必须花费不可行的时间(例如,几个世乡域更多)去成功做到这一 点的意义h
抗冲突散列函数的正式定义
设&是安全参数,并设/7二(7/J^v是函i[^i^:(0,irx(0,ir4(0,ir,其中
6""并且W是函数索弓I,满足M"。如果
(1) 存在为每个W计算i^的概率多项式时间(以k)算法;
(2) 对任意概率多项式时间算法A存在可忽略的函数S ,使得当W被统^t择时, ^(W) = (x,,x2)以使/^(x》=//W(X2)的概率最多为f(A);
则我们说,//是抗冲突散列函数族。
认识到抗冲突散列函数的下歹游性除可忽略概率,如果X,和X,由多项式时间算 法计算得出,贝lj对于l Xl |2 A:且| x2 |2 A ,当JC! * x2时/^(xJ # //w(x2)。可以设计在其输
入上重,用原子抗冲突散列函数的组合抗冲突散列函数的构造,使得组合函数的基
于任意两^hii入的所得输出揭示关于输入相似性和/廳异的信息。
病截亍为的分类重写、预加、追加、駄
大多数因特网病毒可以被表征为激盾这些感染技术的其中之一重写、予勋卩、追 加和RA,它们将在下面详细描述。 重写感染技术
在这种感染技术中,病毒M3i替换宿主代码的一部分来感染宿主或目标可执行文
件。 一种可以实现这一点的方式是病毒如同打开常规 文件一样简单地打开目标文 件来写入,并且接着将自己的一个复本保存到文件,从而造成了损坏的文件。当该损 坏的可执行文件稍后由它的所有者启动时,操作系统将执行该病毒代码而不是原始的 目綺骄。这种感染技术通常破坏目标文件,使新可舰。 慟口感染技术
在这种感染技术中,病毒将它的代码插入至咜想感染的宿主或目标可执行文件的 开头,从而创建了损坏的可执行文件。这种技术一般比重写技术更精细,并且已经被
例如病毒Nimd^顿。当该损坏的可执行文件稍后由它的所有者启动时,操作系统将 首先执行该病毒代码,因为它位于该可执行代码的开头,接着才是预期,即原始目标, 程序。这种感染技术不仅表现为可能不破坏目标文件,而且可具有不被代码所有者容 易地检测的文媒。实际上,这样一种病毒的存在可能不容易被检测到。 追加感染技术
在这种感染技术中,病毒将它的代5骗入到它想感染的宿主或目标可执行文件的 末尾,并且通常还在受感染或损坏的文件的开头插入一个到病毒代码的开头的跳转。 当该损坏的可执行文件稍后由它的所有者启动时,操作系统将首先跳转来执行该病毒代码,瓶劐維制返回到预期,即原始目标,禾辨。与预加技术一样,〗顿这种感
染技术的病毒的存在可能不容易被检测到。这种技术例如由病毒Mchelangelo使用。 駄感染技术
在这种感染技术中,病毒将一段代码或指向任意4體的分开的文件中的代码的命 令插入到最终^M编译成常规可执行文件的一个或多个文件的外壳脚本、Perl脚本、 Java类文件或源代码中。尽管很少看到这种方式的示例,但它们作为包含可执行指令 的每一禾聘是病毒的潜在目标的提醒。
基于密码散列法的完整性衞正
如J^M,完整性魁正技术尝縱执行文件之離测对i紋件糊顿期修改。基 于密码散列法的完整性魁正可以如下执行。
给定任意的抗冲突散列函,矣// = {//丄£^ (为便于标,謝门从&中删去索引
w)和文件/, 160位值/^"//(/)证明任意有效算法(可能创建/本身)都不能在可 行的计算时间内获得,或者已经得到与/不同的满足完整性斷正观赋Z/(g) = F(/)的g。
可执行或源文件的完整性魁正如下完成。在认为文件/无感染的预备阶段,例如 当从其原始源下载i紋件时,|礎/^"//(/)被附加至该文件。之后,当对i紋4顿
行合溜彦改顿文件,时,新值/^/7' = //(/')代替之前的散列值。当该文件需要被执 行时,或需要被编译以{娥行时,对文件的当前版本,执行完整性魁正测试,即检査 to/Z = //(/')是否成立。如果该匹配被SME,则謝门有证据表明只对该文州故了合法 修改;否则,已经发生了一些非预期的修改。由于这种修改可能是由感染弓胞的,所 以该文條着被发送至尝试各种诊断技术的分析器,包括在安全环境中仿真文件的执 行,导出关于病毒的有用信息并可能将文件/'修誠它之前的、未受感染的状态。
4OT密码散列法进行完整性^i正的流行系统包括来自S.Quinlan和S.Dorward的 Venti, Venti: a New Approach to Archival Storage (档案存储的新方法),发表在2002 年USEMX文件和存储技术(FAST)会议录中,以及GH.Kim和E.H.Spafford的The Design and Implementation of Tripwire:a File System Integrity Checker (Tripwire的设i十与
实现文件系统完整性检查器),发表在腦年第二届ACM计穀几和通信安全封义
(ACMCCS)会i义录中。
密码散列法和病毒定位
以上技术可以被扩M^不仅用于检査完整性,还可以用于揭示关于两个文件之间差异的附加信I。 i^完整性衞正技术的基本特性可以ltt^如下。给定文件似(l)和 文件M(2),以及它们的散列/^我l)和/^/K2),存在一个有效算法DIFF,其决定函 数p(M(l),M(2)),该函数被定义成在M(1^M(2)时等于1,否则等于0。算法DIFF ^f顿输入、 和toW(2)来简单地检査/ a^(1) = /^^(2)是否成立,并且当成立
时返回l,否则返回0。这种方法可以被概括为HT泛的函数,尤其是概括为用于检测 关于M(1)和M(2)之间的由例如重写、追加、预加和ftA感染技术等,感染技术所 引起的差异的信息的函数。例如,p-^^/一抗冲突散列函数被正式定义为抗冲突 散列函数,以使得对于返回两个文件似(l)、 M(2)的招可裔^X寸手,存在有效算法Det, 该算法在接收到M(l)和M(2)的两个散列作为输入后,會,计算函数p(M(l),M(2》,
其中p通常是返回关于这两个文件之间的差异的一些信息的函数。尽管任意冲^7隹处 理的散列函数似乎不能有助于揭示关于M(l)和M(2)之间的差异的特性的有用信息,
然而从常规的冲穷佳处理的散歹涵数演化而来的更复杂的冲^t处理的散列函数可以
被设计来获^W用信息。
在所描述的所有发明方法中,每一文件M包括"个原子块M(1),似(2),…,M("),
其中可以适当地选择块大小;例如,它可以作为文件能被力,成的最小语义单元来确 定,如源文件中的一行。在一种方法中,非常简单的散歹幅数题舰回输入文件每 一块的原子散列瓶着返回先前附十算的所有散歹啲原子散列来获得的,其中原子散 列是f顿任意冲^i处理散列函M^计算的。这种技术可与±^算法DIFF —起用于文 件的每一块,从而导出函数p所需要的任意感兴趣的信息。然而,明显的缺点^)5舰 回的散列太长,因为它等于常规散列大小的"倍,而常规散列对于例如几千字节等相 当小的文件已经是不切实际的了 。
然而,在一示例性实施例中,所返回的散列的大小(被称为构造的展,系教)被 如下定义。设//是冲^t处理散列函数,且c//是调用的散列函数的构造。则W
的展开系数等于d根据"位输入阮逸回的输出的大小除以根据"位输入戶;m回的
输出的大小。具有最短的可能的展开系数(例如"的对数)的构造是最合乎需要的。 这使得因附加的iME和散列的生^^产生的计算和存储开销很小,因为所有构造被描 述成散列函数的应用的数目等于i繊开系数。
为获得这一性能,如在每种感染技术中所例示的,为仔细选择的消息位的序列计 算基本的冲穷隹处理散歹涵数的多个应用。例如,对序歹啲选择可以根据适当的"编码方案"来执行,而该"编码方案"稍后允许从多个散列中與虫"解码"关于两个消 息之间的差异的所需信息,其中编码/解码方案和所需信息都依赖于感染技术。
另一感兴趣的度量将是最小化其中检测到病毒的定位区域。尤其是,对某定位, 教p,返回包含最多为max(p.6(r),l)的多个块的块区间是合乎需要的,其中6(r)是病
毒V所包括的块的数目。
本发明方法中的所有构造都超院位系数p:2,展开系数为"的对数,并且仅
需要不经常的、离线的散列计算,使得计算开销对旨系统的效率来说不是重要因素。 图1是一个示意图,示出被M31处理技术修改而^^可疑文件12的目标文件10。 图2示出散列算法的通用结构,例如,通用p-^丽/一散列函数,计算文件块的序
列和之后被用于定位病毒的散列。在步骤A1,计ff^ff列。在步骤A2,计算旨土央 序列的散列。在步骤A3输出散列。以下将更详细地描述用于每一感染类型(即,重 写、追力P/予勋B、以及駄)的散列算法。 重写感染的病毒定l立
如上戶,,在重写感染技术中,病毒重写目标文件的某些块。在大多数情况下, 损坏的文件即使在重写之后仍保持相同的大小并且所重写的i央被相邻地放置。本发明 方法计算尽可能多的来自文件的i辨歹啲散列,以便能够稍后定位重写文件中任何位 置的一段连续块的病毒。因此,假定文件中的块的数目是",则定位散列函数计算文 件块的4(log2"-l)个序歹啲散列,并因此得到4(log"-l)个散列,艮P, log"-l个组中 的每一个组都有4个散列。例如,当11=1024,计算4*(10-1)或36个散列。图3示出 由文件i娇列14、 16、 18、 20构成的、在用于觀感染的病毒定位散列法的示例性实 施例中被散列的组22。注意在第i组22,第三序列18和第四序列20 ^ffiii循环地将 文件旋转"/2'+1个±央并重新应用用于第一序列14和第二序列16的划分而获得的。
在一个实施例中,p-^^//"g抗冲突散列函数; 被定义如下。根据"块的文件 M和的输入,函数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个块的病毒,因为当更大数量的块被重写时,定位问题由于定位散列函数不显著地比常规的散列函数更有用而失去相关性。
因此,在每一步骤,j顿原子抗冲突散列函数"来计算输入文件的某些块的散列。 给定由于将M,修改成M,的重写病毒而不同的任意两个文件M, 、 M2,每一步骤中的
散列应当ffii^f除M,中的一半纟魏i姊帮助发现病毒的位置。所排除的i央是以下四种 之一文件中还没有被排除的块的第一半麟二半,或,文件中还没有被排除的块的 适当的循环斷立的第一半麟二半。这足以获得定位系数2,并且因为在每一步骤计 算4个散列,所以输出展开最多是4 log "。
以下是抗冲突散列函数的正式描述。謝门的表示为^evt;-;7i7的P _ "w^"g抗冲 突散列函数,将"块的消息M:M(O),...,M("-l)作为输入,并对M的/个块的序列应 用41ogw次原始抗冲突散列函数压如下(为简单起见我们假定"是2的幂并朋数 的底为2):
步骤h
在 —步骤,M中的i央被分组成4个序列,每一序列^M31^接n/2个i^得
到的,定义为
<formula>formula see original document page 11</formula>
\3禾口\4中的块的索引^Mil分别将^和\2中的块的索引循环移位《/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,中的块的索引循环移位
"/2川而得到的)。
在该步骤中的4个散列如下计算 当/=,2时以及,当/=3,4时
= "^0^,'-2+2j' I A',' + 2) I ^/,/ + 2_/+2 I…I ^/,, + 2_> + 2")。
该函数的输出是/z = ((02,,,...,11——j,,)),^,,,。
^,-/7//的原子散歹啲总体数目仅为410§"-4 ,絲每一散列揭示关于病毒区间 的位置的信息中的一位的模型中基本上是最优的。
为说明7 evi^//是抗冲突的,观察到在i ew-;^的输出中寻找冲突的算法找到两 个不同的输入,它们由i/鹏MX寸于值y,l,…,log"以及1=1,2,3,4中至少一个相同的 I /),这暗示用于发现的冲突的算法。
为说明i ew-; //是/7-^^//"^ ,我们构造使用和对于所有索引 (_/ ,/),乂 e (1,…,1og" — 1},,' e {1,2,3,4}的散列 的有效算法丄oc,以在文件M的可疑的或
可能损坏的版本M'中定位重写病毒。算法i ew-Zoc,如在图4A中示出的,可被描述 如下
1. 根据输入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并且根据输A)(寸(S^输出由过程i ew-^cZoc (以下定义)戶舰 回的±,列7。(步骤S3)
步骤S4执做程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)
根据/ 的定义,鉴于仅考虑b^a〈n/4的情况^^够的,则i ew-p//是p -的证明是以下弓隨的推论。对于大小最多为"/(2.2勺的任意病毒区间("',6'),根据输入M' (M的遭受具有病毒区间("'》')的重写感染的版本)和构造i ew-;^根据原始文 件M的输入直到步骤乂才获得的散列,算法i ew-Zoc返回区间(fl,6),这样a S " 6 并且,如果"/ (6 _ + — a +1) S " / 2乂 。
追力將页加感染的病毒定位
追加感染技斜时励n感染技术可以用对称的方式来处理。如上戶皿,在追加感染
技术中,病^l皮附加至目标文件io的末尾,而在予励a感染技术中,病*|皮添加至目标
文件10的开头。因而,在这两种技术中,所得的破坏的或可疑的文件12的文件大小 增加了,并且在追加或预力喊毒之后,先前的文件大小可能丢失。本发明方法计算来 自宿主文件10的:t娇列的多个散列,以稍后定位将一段遊封央追加到被件末尾的病 寧自开头预加一段)。假定未损坏的目标文件IO中的块的数目为",且损坏的文件 12中的块的数目为W'。贝IJ,根据"央的消息的输入,构驢多返回1(^4/3《/4个文件±央 序列并且因而最多返回log,^/4个散列;即,1og化《/4个阶段的每一个都有一个散列。 例如,如果《=1024,则有20个散列。
图5示出将在用于追力P/预加感染的病毒定位散列法的示例性实施例中进纟豫列 的文件鹏列24。
X寸于本发明病毒定位方法,可以设计; -腳^/一抗冲突散列函数,其中p如下 定义。根据不必等长的输入M1和M2,函数p(Ml,M2)等于 -0,如果M1-M2;
-X ,如果|M2|S2|M1|并且对于z、l,…,x —1,M1(/) = M2(/)且对于/= jc , Ml(/) # M2。;
-1,其它情况。
如J^S写感染的情况一样,该分析可被限制在最多追加"块的病毒,艮口,假设 旭中的块的数目最多是2",其中"是M中的块的数目。因此,在每一步骤,原子抗 冲突散列函数/^細来计算输入文件的某些块的两个散列。给定由于将M,修改成i^ 的追加病毒而不同的任意两个文件M, 、 M2,在每一步骤中这两个散列应当舰排除 M2中的大约一半候选±诚帮助发现病毒的位置。
追加和预加病毒的一个主要难题是文件A^的长度可能与目标文件的长度M,不 同,并且因此不能l顿'长度^IT技术,如上描述的用于重写病毒的那些技术。相反,从文件的开头处开始,通过在独立于目标文件的长度的序列上仔细计算散列来排 除候选块。
设//标一个抗冲突散列函数。我们表示为伞i^i/的/ - wwa/,'"g抗冲突散列 函数,将《块的消息M = M(1),…,M④作为输入,并X寸M的这《±央的序列最多应用log《
次原始函数/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个土央时递归结束,并设y " +1 ;
4. 返回所有戶;fi十算的散列(、/^,…,/0 ,其中m = log4/3《/4 。
如果w标目标文件M的土纖目且w'标损坏的文件M'的i娥目,贝嘬多有 1og《个递归步骤,并且因此X/,p/f所返回的全部散列的数目是 S log4/3《/4 S log4/3"74S log4/3" — 1 ,因为我们假定"'《2"。这一展开系数在每一散列
揭示关于病毒区间的位置的信息的一位的模型中基本上是最优的(高达某倍增常数)。 为说明々p-;^是抗冲突的,观察到在的输出中寻找冲突的算法找至俩 个不同的输入,它们由//日划寸^^寸于』=1,...,1(^11以及1=1,2中至少一个相同的/7C/10 ,
这暗示用于发现if的冲突的算法。
为说明4^; i/是/ -潛e"/fwg ,我们构造使用伞;^i/和对于所有的索引 _/ e {1,...,附},其中w = log4/3 "/4的散列、的有效算法^t^Zoc,以在文件M的可能损坏
的版本M'中赵Mt加病毒。算法4^丄oc,如在图6A中示出的,可被描述如下
1. 设仨l并且Mj = M (步骤S12)
2. 计算最大正整数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个土央时递归结束(步骤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 (以下定义)根据输A^(S^戶舰回 的对(步骤S21)。
步骤S22执行过程伞卢cZoc。
过程々;^ecIoc(S^被定义如下,且在图6b中示出
1. 如果。,,=1则返回r^并停止(步骤S23)。
2. 从i,列S中移除所有来自块序列S,,的块(步骤S24) 3蹄过程4t^HocW+"(步骤S25)。
々/^//是p-,W/"g的证明是下列弓瞎的推论。对于至少具有《-^. +1个块的 任意病毒区间(W),根据等于目标文件MJd^加了区间(W)的《块的损坏的文件M' 的输入,以及在构造^^^中的递归的前川个步骤中获得的散列,算法^^Zoc返 回值X使得x ^ (gp,算法定位病毒)并且;c 2 - " -1 ,即々;^i/的定位系数最多为 2。
^A感染的病毒定位
如i^f^,在KA感染技术中,病毒被插入到目标文件10中间的某一位置,且 不在开头駄尾,从而创建大小大于目标文件10的可疑文件12。本发明方法计算来 自目标文件10的i娇歹啲多个散列,以稍后定位将一段遊卖块^A在损坏的文件12 中的任意地方的病毒。假定目标文件10中的块的数目为n,且损坏的文件12中的块 的数目为W'。贝U,根据"央的消息的输入,该构造最多返回8(logJ-l)个文件i,列, 并且因而最多返回8(logf-l)个散列;艮P, 1og《个阶段的每一个有8个散列。例如, 如果£ = 1024,则有8*(10-1)=72个散列。
图7示出将在用于駄感染的病毒定位散列法的示例性实施例中进行散列的文件 块的子集26、 28、 30、 32。由于病毒被^A在受感染的或损坏的文件12中,因此有
必要找到病毒的开头和结尾。
对于本发明病毒定位方法,可以设计/7-,^/一抗冲突散列函数,其中p如下 定义。根据不必等长的输入M和M2,函数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"个块的病毒,即,假设旭中的块的数目最多是2M, 其中M是在目标文件M中的块的数目。
用于嵌入感染情况的;7-潛^/^散列函数的构造是用于重写和追加感染情况 的构造的组合。该组合包括使用如追加感染构造中的文件±,列'长度无关'、使用如 用于重写感染构造中的序列结构来利用该狱。所得构造的定位系数为2并且展开系 数为81og《,其中《是输入文件的大小。
函数的正式描述如下。设//表示抗冲突散列函数。我们表示为的 "w"Z/"g抗冲突散列函数,,将"块的消息M^M(0),…,M(《-l)作为输入,并对 M的这f块序列应用8(1og《-1)次原始函数i/,通过在输入M = M(0),…,M(《-1)上和 输入反向文件rM = M(《-l),...,M(O) JJt行一次下列步骤(为简单起见我们假定《是2 的幂并M数的底为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过分别将^和^中的块的索引循环移位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循环靴2"2J而获得的之外。
在该步骤中,4个散列如下计算 当/=,2时
= i/(^ i i; i…u; 以及,当/=3,4时
该函数的输出为/ = ((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 ,雜每一个散列揭示关于病毒区 间的位置的信息的一位的模型中基本上是最优的。
类似于之前构造的散列函数,可以看到五m6-;^是抗冲突的。为说明五m^/Z是 ,构造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呈现和描绘了,的本发明技术与两种已知技斜目比的适用性和性
倉g总结。
如上戶皿,"检测构造"表示仅计算其^l入文4牛的单个散列的构造,而"平 凡构造"表示计算输入文件的*±央的单个散列的构造。回想在重写感染的病毒定位 一节、追力P/预加感染的病毒定位一节、^A感染的病毒定位一节中的构造分别被^ 为7 ew-; //、伞;>/ //、 且"是文件中的块的数目。尽管检测和平凡构it^
于上述给定特征中的任意感染技术,但是这三种散列函数构造i ew i/、 4 ,/7//、 中的每一个被f賴採用^jt定的感染技术。
另夕卜,在这些构造i ew-; //、 4^-/ //、五m6-; i/中对病毒长度的限制基本上不失 一般性,因为一旦不满^3^个限制,则病毒定位问風就失去了意义。图10概括了下列性能系数。对于定位系数,检测构造实际上没有定位,而平凡
构造由于其定{妙万有受感染的块而具有最可能的定位。构造i ew-;^、 4t7/7^//、五m&7/
定位最多仅是感染区域的两倍大小的区域。对于展开系数,平凡构造具有太大的展开,
而检测构造实际上没有展开并且构造i ew-pi/、々;^//、五励-; i/仅有散列的对数(以 n)展开。
最后,对于时间性能,平凡和检测构M于单个散列计算基本上没有时间爆炸, 而构造肠--、£咖//仅计算对数(以n)次散列。
尽管在具体实施例中描述了本发明,但应当理解,本发明不应被解释 为受这些实施例的限制,而相反应根据所附权利要求来解释。
权利要求
1、一种用于病毒定位的方法,包括以下步骤计算文件块序列;计算来自宿主文件的所述文件块序列的第一散列;计算来自受感染的文件的所述文件块序列的第二散列;以及比较具有所述文件块序列的所述第一散列和所述第二散列,其中当所述第一散列和所述第二散列的某一些不匹配时,输出病毒的位置。
2、 如权利要求i戶皿的方法,其特征在于,戶;M计算第一散列和计算第二散列 的步骤是〗OT抗冲突散列函数、数字签名方案、消息认证码以及伪随机函数中的一个 来执行的。
3、 如权利要求1戶腿的方法,SW征在于,戶;M计算文件i,列是l顿重写算 法、追加算法以及KA算法中的一个来完成的,各算法的输出分别返回重写、追加或 ^A病毒的位置。
4、 如权利要求i戶,的方法,欺寺征在于,戶;M病毒M自戶;M宿主文件的具 有被修改的内容的所述文件±,列。
5、 如权利要求i戶腿的方法,欺寺征在于,戶;M病毒的〗體是不比戶;M病毒大 一小倍增量以上的戶舰文件±辨列。
全文摘要
提供了用于使用完整性检查技术来标识和定位计算机病毒的方法。提供了用于三种类型的病毒感染中的每一种的病毒定位的方法,所述方法包括以下步骤计算文件块序列,计算来自宿主文件的文件块序列的散列和计算来自受感染的文件的相同或相关的文件块序列的散列,并将来自宿主文件的散列与来自受感染的文件的相同或相关的文件块序列的散列进行比较,以使得在所述第一散列和所述第二散列的某一些不匹配时,输出病毒的位置。提供了取决病毒感染的类型来计算文件块序列的方法,和使用抗冲突散列函数、数字签名方案、消息认证码或伪随机函数来计算散列的方法。
文档编号G06F7/04GK101641675SQ200780040571
公开日2010年2月3日 申请日期2007年10月30日 优先权日2006年10月31日
发明者F·瓦基尔, G·迪克雷申佐 申请人:特尔科迪亚许可公司有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1