首页 / 专利库 / 电脑安全 / 计算机病毒 / 使用密码散列法的病毒定位

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

阅读:1023发布:2020-06-14

专利汇可以提供使用密码散列法的病毒定位专利检索,专利查询,专利分析的服务。并且提供了用于使用完整性检查技术来标识和 定位 计算机病毒 的方法。提供了用于三种类型的 病毒感染 中的每一种的病毒定位的方法,所述方法包括以下步骤:计算文件 块 序列,计算来自宿主文件的文件块序列的散列和计算来自受感染的文件的相同或相关的文件块序列的散列,并将来自宿主文件的散列与来自受感染的文件的相同或相关的文件块序列的散列进行比较,以使得在所述第一散列和所述第二散列的某一些不匹配时,输出病毒的 位置 。提供了取决病毒感染的类型来计算文件块序列的方法,和使用抗冲突散列函数、数字签名方案、消息认证码或伪随机函数来计算散列的方法。,下面是使用密码散列法的病毒定位专利的具体信息内容。

1.一种用于病毒定位的方法,包括:
依据病毒感染的类型来计算文件序列;
计算来自被认为无感染的宿主文件的所述文件块序列的第一散列,所述第一散列的大小取决于被认为无感染的宿主文件的所述文件块序列的文件块个数; 计算来自作为所述宿主文件的受感染版本的受感染文件的相同或相关文件块序列的第二散列,所述第二散列的大小取决于所述受感染文件的所述文件块序列的文件块个数;
以及
比较来自所述宿主文件的所述文件块序列的所述第一散列和来自受感染文件的相同或相关文件块序列的所述第二散列,
其中当发现所述第一散列和所述第二散列不匹配时,输出病毒在受感染文件中的大概位置
2.如权利要求1所述的方法,其特征在于,所述计算第一散列和计算第二散列是使用抗冲突散列函数、数字签名方案、消息认证码以及伪随机函数中的一个来执行的。
3.如权利要求1所述的方法,其特征在于,所述病毒包括来自所述宿主文件的被修改的内容。
4.如权利要求1所述的方法,其特征在于,所述病毒的所述位置至多在所述宿主文件的受感染文件的所述文件块序列两倍大小的区域内。
i+1
5.如权利要求1所述的方法,还包括:通过将所述宿主文件循环旋转n/2 个块并重新应用用于第一序列和第二序列的划分而获得第三序列和第四序列,其中n表示文件块个数且为2的幂,i=1,2,…,log2n-1。
6.如权利要求1所述的方法,还包括通过排除一半候选块来发现病毒的位置,其中,所排除的块是以下四种之一:文件中还没有被排除的块的第一半或第二半,或文件中还没有被排除的块的适当的循环移位的第一半或第二半。
7.如权利要求1所述的方法,还包括:从文件的开头处开始,通 过在独立于目标文件的长度的序列上计算散列来排除候选块。

说明书全文

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

[0001] 相关申请的交叉引用
[0002] 本发明要求2006年10月31日提交的美国临时专利申请第60/855,710号的优先权,其所有内容和公开通过引用结合于此。
发明领域
[0003] 本发明一般涉及软件安全,并且尤其涉及用于使用完整性检查技术来标识和定位计算机病毒的方法。
[0004] 发明背景
[0005] 病毒检测是一个对经常被要求采取如购买和运行防病毒软件等防病毒的预防性措施的任何计算机用户有着惊人地广泛影响的问题。病毒是文本、可执行代码等形式的数
据,其在没有用户授权并通常在不为该用户所知的情况下被添加至该用户的文件或重写该
用户的文件中的数据。病毒检测领域中的研究包括针对特定种类的病毒的各种试探式方
法。尝试解决该问题的最成功的现代技术中的一些落入签名检测和完整性检查的一般范
例中,例如E.Skoudis,“MALWARE:Fighting Malicious Code”(恶意软件:与恶意代码做斗争),Prentice Hall(2004),以及P.Szor,“The Art of Computer VirusResearch and Defense”(计算机病毒研究和防御的艺术),Addison Wesley(2005)。前一范例需要发现
已知病毒的受感染代码的片段、被调用的签名,存储该签名,并开发扫描计算机存储器以搜索这样的签名的软件。本发明所关注的后一范例是需要使用检测对文件的未授权改变的密
码散列函数,并可能揭示未知病毒的存在。后一范例的成功的重要示例是Tripwire,其是
UNIX环境的广泛可用的完整性检查程序。
[0006] 如在例如G.Di Crescenzo、A.Ghosh和R.Talpade的“Towards a Theory ofInstrusionDetection(入侵检测理论)”中所讨论的,签名和异常检测的入侵检测原理也
提供对病毒检测方法的洞察。签名病毒检测范例类似于入侵检测领域中的签名检测原理;
相反,完整性检查范例更类似于入侵检测领域中的异常检测原理。
[0007] 可用的防病毒软件通常使用三种用于检测病毒的主要技术:签名、试探法、和完整性验证。签名技术类似于入侵检测系统中的签名检测方法。首先,学习已知病毒并且存储它们的签名;接着在候选可执行文件中寻找这些签名的出现。尽管这是病毒检测的最流行
的方法,但它依赖于厂商快速更新签名数据库和用户快速更新他们的签名文件,并且它很
容易被多形和变形的病毒技术击败。
[0008] 其它两种技术,试探法和完整性验证,更类似于入侵检测系统中的异常检测方法。试探技术在尝试基于病毒可能展示的例如试图向可执行文件中写入、访问引导扇区、删除
硬盘驱动器内容等某些行为的基础上来标识病毒方面可能有点复杂。完整性验证技术尝试
在感染已经发生之后但可能在受感染的文件执行发生之前检测对文件的非预期修改,因此
仍然使得该感染无害。
[0009] 尽管试探法和完整性验证技术两者都具有捕获更多智能病毒的潜,例如具有多形和变形能力的那些病毒,但这些技术最多能够引起对特定文件的警觉,其随后将在受控
环境下在病毒诊断阶段被仔细仿真和分析,在该受控环境中需要导出潜在病毒的位置、特
性和后果的结论。由于实现用于仿真的精确受控环境的困难,所导出的后果的精确性可能
不可信。此外,在许多情况下,病毒对原始文件所作的修改非常微小,例如对位于存储器中某处的程序的子例程调用,并且因此拥有关于病毒自身的附加信息将会非常有用。
[0010] 此外,完整性验证技术或完整性检查原理仅检测对文件的改变,但不定位或指示该改变发生在文件中的什么地方。缺少关于病毒的定位信息,则它的检测是很耗资源且易
于失败的。这隐含地定义了软件安全领域的一个新问题,“病毒定位”。
[0011] 据发明者所知,病毒定位的问题之前从未被严格调查或甚至提出过。对数据应用密码散列法是用于数据完整性验证的一个公知范例,并且是像Tripwire等验证文件系统
完整性的程序的基础。文件的所有原子的密码散列法也是已知范例,并且已被用于通过
高等待时间、低带宽链路远程地更新文件或解决一次写入式档案数据存储目的的程序。然
而,所有这些程序都不解决病毒定位问题。
[0012] 发明简述
[0013] 本发明有利地提供一种用于三种类型的病毒感染中的每一种的病毒定位的方法。在一个实施例中,该方法包括以下步骤:计算来自宿主文件的块序列散列,将可疑的或损坏的文件划分成多个组,每组包含多个块序列,计算可疑文件中的所有这些多个块序列的散
列,并将来自宿主文件的散列与来自该可疑文件的散列进行比较,以使得如果没有发现不
匹配,则该可疑文件被宣布为“未损坏”,然而如果发现至少一个不匹配,则该可疑文件被宣布为“被损坏”,并且确定病毒在文件中的大概位置。
[0014] 用于病毒定位的方法可以包括以下步骤:计算文件块序列,计算来自宿主文件的文件块序列的散列并计算来自受感染的文件的相同或相关的文件块序列的散列,并将来自
宿主文件的散列与来自受感染的文件的相同或相关的文件块序列的散列进行比较,以使得
在所述第一散列和所述第二散列的某一些不匹配时,输出病毒的位置。提供了取决于病毒
感染的类型来计算文件块序列的方法,和使用抗冲突散列函数、数字签名方案、消息认证码或伪随机函数来计算散列的方法。
[0015] 附图简述
[0016] 通过参考本发明的非限制性的、说明性的各实施例的所注附图,在以下详细描述中进一步描述本发明,其中贯穿各附图,相同的附图标记表示类似的部件。应当理解,本发明不限于所示出的精确安排和手段。在附图中:
[0017] 图1是一个示意图;
[0018] 图2示出计算文件块序列和稍后被用来定位病毒的散列的散列算法的通用结构;
[0019] 图3示出在重写病毒感染的文件的情况下由散列算法Rew-pH所计算的文件块序列;
[0020] 图4a示出重写病毒定位算法Rew-Loc中的步骤;
[0021] 图4b示出算法Rew-RecLoc(由Rew-Loc使用)中的步骤;
[0022] 图5示出在追加病毒感染的文件的情况下由散列算法App-pH所计算的文件块序列;
[0023] 图6a示出追加病毒定位算法App-Loc中的步骤;
[0024] 图6b示出算法App-RecLoc(由App-Loc使用)中的步骤;
[0025] 图7示出在嵌入病毒感染的文件的情况下由散列算法Emb-pH所计算的文件块序列;
[0026] 图8示出嵌入病毒定位算法Emb-Loc中的步骤;
[0027] 图9是各种病毒定位技术的属性的概述;以及
[0028] 图10是各种病毒定位技术的性能评估。
[0029] 发明详细描述
[0030] 给出了使用病毒定位来提高软件安全性的方法。上述的完整性检查原理可以被扩展以使不仅可以检测到对文件的改变,而且还能在文件内部定位这些改变。
[0031] 可以为例如重写技术、追加和预加技术等每一种感染技术以及每一种插入或嵌入技术设计用于实现病毒定位的方法。本发明的方法是基于对根据感染技术所专用的代码
来选择的文件块集合的各种序列的密码散列的重复有效应用的。在所有情况下,这些方法
都获得令人满意的定位(即,在损坏的文件中标识至多是病毒的两倍大小的区域)和效率
(即,由定位散列函数返回的散列比由常规密码散列函数返回的那些散列最多长一个对数
系数)。输出效率是定位散列函数的关键属性,因为如以下讨论的,有一个平凡构造,其返回更长的散列,即按与输入文档的原子块的数量呈线性的系数来返回。
[0032] 以下检查对目标文件执行特定修改从而导致损坏的文件的病毒进行研究,其中修改的类型可根据具体的感染技术而变化。给出了(密码)抗冲突散列法的已知概念和正
式定义,例如B.Schneier,“Applied Cryptography:Protocols,Algorithms and Source Codein C(实用密码:用C编写的协议、算法和源代码)”,J.Wiley&Sons(1993),并描述了病毒行为的分类。
[0033] 抗冲突散列法概念
[0034] 经常用于密码中的被称为“冲突难处理的”散列函数,或“无冲突”、“抗冲突”以及有时被称为“密码”函数的数学工具通常用于若干应用中,包括那些需要对文件、消息等进行完整性验证的应用。这些工具或函数定义如下:它们将任意长度的二进制串(表示将被压缩的文件)作为输入,并且返回固定大小(例如,128或160位)的二进制串作为输出
(表示原始文件的散列或指纹)。当散列函数的输入远远长于160位时,散列函数的任何单
个输出的原像数目就非常大。然而,这些函数预期的惊人特性是看来对任何有效算法而言
即使只找到映射至同一输出的两个原像在计算上也是难以处理的,在任何算法都必须花费
不可行的时间(例如,几个世纪或更多)去成功做到这一点的意义上。
[0035] 抗冲突散列函数的正式定义
[0036] 设k是安全参数,并设H={Hw}k∈N是函数族Hw:{0,1}k×{0,1}a→{0,1}b,其中a>b并且w是函数索引,满足|w|=k。如果:
[0037] (1)存在为每个w计算Hw的概率多项式时间(以k)算法;
[0038] (2)对任意概率多项式时间算法A,存在可忽略的函数ε,使得当w被统一选择时,A(w)=(x1,x2)以使Hw(x1)=Hw(x2)的概率最多为ε(k);则我们说,H是抗冲突散列函数族。
[0039] 认识到抗冲突散列函数的下列特性:除可忽略概率,如果x1和x2由多项式时间算法计算得出,则对于|x1|≥k且|x2|≥k,当x1≠x2时Hw(x1)≠Hw(x2)。可以设计在其输
入上重复应用原子抗冲突散列函数的组合抗冲突散列函数的构造,使得组合函数的基于任
意两个输入的所得输出揭示关于输入相似性和/或差异的信息。
[0040] 病毒行为的分类:重写、预加、追加、嵌入:
[0041] 大多数因特网病毒可以被表征为遵循这些感染技术的其中之一:重写、预加、追加和嵌入,它们将在下面详细描述。
[0042] 重写感染技术
[0043] 在这种感染技术中,病毒通过替换宿主代码的一部分来感染宿主或目标可执行文件。一种可以实现这一点的方式是病毒如同打开常规数据文件一样简单地打开目标文件来
写入,并且接着将自己的一个复本保存到文件,从而造成了损坏的文件。当该损坏的可执行文件稍后由它的所有者启动时,操作系统将执行该病毒代码而不是原始的目标程序。这种
感染技术通常破坏目标文件,使其不可使用。
[0044] 预加感染技术
[0045] 在这种感染技术中,病毒将它的代码插入到它想感染的宿主或目标可执行文件的开头,从而创建了损坏的可执行文件。这种技术一般比重写技术更精细,并且已经被例如病毒Nimda使用。当该损坏的可执行文件稍后由它的所有者启动时,操作系统将首先执行该
病毒代码,因为它位于该可执行代码的开头,接着才是预期,即原始目标,程序。这种感染技术不仅表现为可能不破坏目标文件,而且可具有不被代码所有者容易地检测的效果。实际
上,这样一种病毒的存在可能不容易被检测到。
[0046] 追加感染技术
[0047] 在这种感染技术中,病毒将它的代码插入到它想感染的宿主或目标可执行文件的末尾,并且通常还在受感染或损坏的文件的开头插入一个到病毒代码的开头的跳转。当该
损坏的可执行文件稍后由它的所有者启动时,操作系统将首先跳转来执行该病毒代码,并
接着将控制返回到预期,即原始目标,程序。与预加技术一样,使用这种感染技术的病毒的存在可能不容易被检测到。这种技术例如由病毒Michelangelo使用。
[0048] 嵌入感染技术
[0049] 在这种感染技术中,病毒将一段代码或指向任意位置的分开的文件中的代码的命令插入到最终将被编译成常规可执行文件的一个或多个文件的外壳脚本、Perl脚本、Java
类文件或源代码中。尽管很少看到这种方式的示例,但它们作为包含可执行指令的每一程
序是病毒的潜在目标的提醒。
[0050] 基于密码散列法的完整性验证
[0051] 如上所述,完整性验证技术尝试在执行文件之前检测对该文件的非预期修改。基于密码散列法的完整性验证可以如下执行。
[0052] 给定任意的抗冲突散列函数族H={Hw}k∈N(为便于表示,我们从Hw中删去索引w)和文件f,160位值hash=H(f)证明任意有效算法(可能创建f本身)都不能在可行的计
算时间内获得,或者已经得到与f不同的满足完整性验证测试H(g)=H(f)的g。
[0053] 可执行或源文件的完整性验证如下完成。在认为文件f无感染的预备阶段,例如当从其原始源下载该文件时,标签hash=H(f)被附加至该文件。之后,当对该文件执行合
法修改生成文件f′时,新值hash′=H(f′)代替之前的散列值。当该文件需要被执行
时,或需要被编译以供执行时,对文件的当前版本f′执行完整性验证测试,即检查hash′=H(f′)是否成立。如果该匹配被验证,则我们有证据表明只对该文件做了合法修改;否
则,已经发生了一些非预期的修改。由于这种修改可能是由感染引起的,所以该文件接着被发送至尝试各种诊断技术的分析器,包括在安全环境中仿真文件的执行,导出关于病毒的
有用信息并可能将文件f′修复成它之前的、未受感染的状态。
[0054] 使用密码散列法进行完整性验证的流行系统包括来自S.Quinlan和S.Dorward的Venti,Venti:a New Approach to Archival Storage(档案存储的新方法),发表在2002
年USENIX文件和存储技术(FAST)会议录中,以及G.H.Kim和E.H.Spafford的TheDesign
and Implementation of Tripwire:a File System Integrity Checker(Tripwire的设计
与实现:文件系统完整性检查器),发表在1994年第二届ACM计算机和通信安全会议(ACM
CCS)会议录中。
[0055] 密码散列法和病毒定位
[0056] 以上技术可以被扩展来不仅用于检查完整性,还可以用于揭示关于两个文件之间差异的附加信息。上述完整性验证技术的基本特性可以被重述如下。给定文件M(1)和文件
M(2),以及它们的散列hash(1)和hash(2),存在一个有效算法DIFF,其决定函数p(M(1),
M(2)),该函数被定义成在M(1)=M(2)时等于1,否则等于0。算法DIFF使用输入p、hash(1)和hash(2)来简单地检查hash(1)=hash(2)是否成立,并且当成立时返回1,否则返回
0。这种方法可以被概括为更广泛的函数,尤其是概括为用于检测关于M(1)和M(2)之间的
由例如重写、追加、预加和嵌入感染技术等上述感染技术所引起的差异的信息的函数。例
如,p-revealing抗冲突散列函数被正式定义为抗冲突散列函数,以使得对于返回两个文
件M(1)、M(2)的任何高效对手,存在有效算法Det,该算法在接收到M(1)和M(2)的两个散
列作为输入后,能够计算函数p(M(1),M(2)),其中p通常是返回关于这两个文件之间的差
异的一些信息的函数。尽管任意冲突难处理的散列函数似乎不能有助于揭示关于M(1)和
M(2)之间的差异的特性的有用信息,然而从常规的冲突难处理的散列函数演化而来的更复
杂的冲突难处理的散列函数可以被设计来获得有用信息。
[0057] 在所描述的所有发明方法中,每一文件M包括n个原子块M(1),M(2),...,M(n),其中可以适当地选择块大小;例如,它可以作为文件能被分解成的最小语义单元来确定,如源文件中的一行。在一种方法中,非常简单的散列函数是通过返回输入文件每一块的原子散列并接着返回先前所计算的所有散列的原子散列来获得的,其中原子散列是使用任意冲突
难处理散列函数来计算的。这种技术可与上述算法DIFF一起用于文件的每一块,从而导出
函数p所需要的任意感兴趣的信息。然而,明显的缺点是所返回的散列太长,因为它等于常规散列大小的n倍,而常规散列对于例如几千字节等相当小的文件已经是不切实际的了。
[0058] 然而,在一示例性实施例中,所返回的散列的大小(被称为构造的展开系数)被如下定义。设H是冲突难处理散列函数,且cH是调用H的散列函数的构造。则cH的展开系数
等于cH根据n位输入所返回的输出的大小除以H根据n位输入所返回的输出的大小。具
有最短的可能的展开系数(例如n的对数)的构造是最合乎需要的。这使得因附加的验证
和散列的生成所产生的计算和存储开销很小,因为所有构造被描述成散列函数的应用的数
目等于该展开系数。
[0059] 为获得这一性能,如在每种感染技术中所例示的,为仔细选择的消息位的序列计算基本的冲突难处理散列函数的多个应用。例如,对序列的选择可以根据适当的“编码方
案”来执行,而该“编码方案”稍后允许从多个散列中单独“解码”关于两个消息之间的差异的所需信息,其中编码/解码方案和所需信息都依赖于感染技术。
[0060] 另一感兴趣的度量将是最小化其中检测到病毒的定位区域。尤其是,对某定位系数ρ,返回包含最多为max(ρ·b(V),1)的多个块的块区间是合乎需要的,其中b(V)是病
毒V所包括的块的数目。
[0061] 本发明方法中的所有构造都达到定位系数ρ=2,展开系数为n的对数,并且仅需要不经常的、离线的散列计算,使得计算开销对整个系统的效率来说不是重要因素。
[0062] 图1是一个示意图,示出被通过处理技术修改而变成可疑文件12的目标文件10。图2示出散列算法的通用结构,例如,通用p-revealing散列函数,计算文件块的序列和之
后被用于定位病毒的散列。在步骤A1,计算块序列。在步骤A2,计算每个块序列的散列。在步骤A3输出散列。以下将更详细地描述用于每一感染类型(即,重写、追加/预加、以及嵌
入)的散列算法。
[0063] 重写感染的病毒定位
[0064] 如上所述,在重写感染技术中,病毒重写目标文件的某些块。在大多数情况下,损坏的文件即使在重写之后仍保持相同的大小并且所重写的块被相邻地放置。本发明方法计算尽可能多的来自文件的块序列的散列,以便能够稍后定位重写文件中任何位置的一段连
续块的病毒。因此,假定文件中的块的数目是n,则定位散列函数计算文件块的4(log2 n-1)个序列的散列,并因此得到4(log n-1)个散列,即,log n-1个组中的每一个组都有4个散
列。例如,当n=1024,计算4*(10-1)或36个散列。图3示出由文件块序列14、16、18、20
构成的、在用于重写感染的病毒定位散列法的示例性实施例中被散列的组22。注意在第i
i+1
组22,第三序列18和第四序列20是通过循环地将文件旋转n/2 个块并重新应用用于第
一序列14和第二序列16的划分而获得的。
[0065] 在一个实施例中,p-revealing抗冲突散列函数p被定义如下。根据n块的文件M1和M2的输入,函数p(M1,M2)等于:
[0066] -0,如果M1=M2;
[0067] -(a,b),如果b-a<n/4并且M1(a),M1(a+1),...,M1(b)和M2(a),M2(a+1),...,M2(b)是M1和M2仅有的不同的块;
[0068] -1,其它情况。
[0069] 因此,该分析被限制在最多重写n/4个块的病毒,因为当更大数量的块被重写时,定位问题由于定位散列函数不显著地比常规的散列函数更有用而失去相关性。
[0070] 因此,在每一步骤,使用原子抗冲突散列函数H来计算输入文件的某些块的散列。给定由于将M1修改成M2的重写病毒而不同的任意两个文件M1、M2,每一步骤中的散列应当
通过排除M2中的一半候选块来帮助发现病毒的位置。所排除的块是以下四种之一:文件中
还没有被排除的块的第一半或第二半,或,文件中还没有被排除的块的适当的循环移位的
第一半或第二半。这足以获得定位系数2,并且因为在每一步骤计算4个散列,所以输出展
开最多是4logn。
[0071] 以下是抗冲突散列函数的正式描述。我们的表示为Rew-pH的p-revealing抗冲突散列函数,将n块的消息M=M(0),...,M(n-1)作为输入,并对M的l个块的序列应用
4logn次原始抗冲突散列函数H,如下(为简单起见我们假定n是2的幂并且对数的底为
2):
[0072] 步骤1:
[0073] 在该第一步骤,M中的块被分组成4个序列,每一序列是通过连接n/2个块来得到的,定义为:
[0074] S1,1=M(0)|...|M(n/2-1),
[0075] S1,2=M(n/2)|...|M(n-1),
[0076] S1,3=M(n/4)|...|M(3n/4-1),以及
[0077] S1,4=M(0)|...|M(n/4-1)|M(3n/4)|...|M(n-1)
[0078] S1,3和S1,4中的块的索引是通过分别将S1,1和S1,2中的块的索引循环移位n/4而得到的。在该步骤中4个散列作为h1,i=H(S1,i)来计算,其中i=1,2,3,4。
[0079] 步骤j,对于j=2,...,log n-1:
[0080] 扩展步骤1,M中的块被分组成2*2j个序列,每一序列是通过连接n/2j个块来得到的,定义为:
[0081] Sj,i=M((i-1)*n/2j)|...|M(i*n/2j-1)以及
[0082] Sj,i+2j=M(((i-1)*n/2j+n/2j+1)mod n)|...|M((i*n/2j+n/2j+1-1)mod n),
[0083] 其中i=1,...,2j。(注意Sj,i+2j中的块的索引是通过将Sj,i中的块的索引循环j+1移位n/2 而得到的)。
[0084] 在该步骤中的4个散列如下计算:
[0085] 当i=1,2时
[0086] hj,i=H(Sj,i|.Sj,i+2|Sj,i+4|...|Sj,i+2j-2);
[0087] 以及,当i=3,4时
[0088] hj,i=H(Sj,i-2+2j|.Sj,i+2j|Sj,i+2j+2|...|Sj,i+2j+2j-4)。
[0089] 该函数的输出是h=((h1,i,h2,i,...,hlogn-1,i))i=1,2,3,4。
[0090] Rew-pH的原子散列的总体数目仅为4logn-4,其在每一散列揭示关于病毒区间的位置的信息中的一位的模型中基本上是最优的。
[0091] 为说明Rew-pH是抗冲突的,观察到在Rew-pH的输出中寻找冲突的算法找到两个不同的输入,它们由H映射至对于值j=0,1,...,logn以及i=1,2,3,4中至少一个相同的h(j|i),这暗示用于发现H的冲突的算法。
[0092] 为说明Rew-pH是p-revealing,我们构造使用pH和对于所有索引(j,i),j∈{1,...,logn-1},i∈{1,2,3,4}的散列hj,i的有效算法Loc,以在文件M的可疑的或可能损坏的版本M’中定位重写病毒。算法Rew-Loc,如在图4A中示出的,可被描述如下:
[0093] 1.根据输入M’计算Rew-pH的输出h′=((h′1,i,h′2,i,...,h′logn-1,i))i=1,2,3,4(步骤S1)
[0094] 2.对于所有索引(j,i),j∈{1,...,logn-1},i∈{1,2,3,4},如果hj,i≠h′j,i则计算tj,i=1或者如果hj,i=h′j,i则计算tj,i=0(步骤S2)
[0095] 3.设S={1,...,n},j=1并且根据输入对(S,j)输出由过程Rew-RecLoc(以下定义)所返回的块序列T。(步骤S3)
[0096] 步骤S4执行过程Rew-RecLoc。
[0097] 过程Rew-RecLoc(S,j)被定义如下,且在图4B中示出:
[0098] 1.对于所有索引i∈{1,2,3,4},如果tj,i=1(步骤S5),则返回:T=S并停止。
[0099] 2.设i*满足 (步骤S6)
[0100] 3.如果i*=1或2(步骤S7),则从集合S中移除所有来自集合Sj,i,Sj,i+2,Sj,i+4,...,Sj,i+2j-2的块(步骤S8)
[0101] 4.如果i*=3或4(步骤S9),则从集合S中移除所有来自集合Sj,i-2+2j,Sj,i+2j,Sj,i+2j+2,...,Sj,i+2j+2j-4的块(步骤S10)
[0102] 5.运行过程Rew-RecLoc(S,j+1)。(步骤S11)
[0103] 根据p的定义,鉴于仅考虑b-a<n/4的情况是足够的,则Rew-pH是p-revealingj
的证明是以下引理的推论。对于大小最多为n/(2·2)的任意病毒区间(a′,b′),根据输
入M’(M的遭受具有病毒区间(a′,b′)的重写感染的版本)和构造Rew-pH根据原始文件
M的输入直到步骤j才获得的散列,算法Rew-Loc返回区间(a,b),这样a≤a′<b′≤b
j j
并且,如果n/2 ≥(b-a+1),则(b-a+1)≤n/2。
[0104] 追加/预加感染的病毒定位
[0105] 追加感染技术和预加感染技术可以用对称的方式来处理。如上所述,在追加感染技术中,病毒被附加至目标文件10的末尾,而在预加感染技术中,病毒被添加至目标文件
10的开头。因而,在这两种技术中,所得的破坏的或可疑的文件12的文件大小增加了,并
且在追加或预加病毒之后,先前的文件大小可能丢失。本发明方法计算来自宿主文件10
的块序列的多个散列,以稍后定位将一段连续块追加到该文件末尾的病毒(或在开头预加
一段)。假定未损坏的目标文件10中的块的数目为n,且损坏的文件12中的块的数目为
n′。则,根据l块的消息的输入,构造最多返回log4/3l/4个文件块序列并且因而最多返回log4/3l/4个散列;即,log4/3l/4个阶段的每一个都有一个散列。例如,如果l=1024,则有
20个散列。
[0106] 图5示出将在用于追加/预加感染的病毒定位散列法的示例性实施例中进行散列的文件块序列24。
[0107] 对于本发明病毒定位方法,可以设计p-revealing抗冲突散列函数,其中p如下定义。根据不必等长的输入M1和M2,函数p(M1,M2)等于:
[0108] -0,如果M1=M2;
[0109] -x,如果|M2|≤2|M1|并且对于i=1,...,x-1,M1(i)=M2(i)且对于i=x,M1(i)≠M2(i);
[0110] -1,其它情况。
[0111] 如上述重写感染的情况一样,该分析可被限制在最多追加n块的病毒,即,假设M2中的块的数目最多是2n,其中n是M1中的块的数目。因此,在每一步骤,原子抗冲突散列函数H被用来计算输入文件的某些块的两个散列。给定由于将M1修改成M2的追加病毒而不同的任意两个文件M1、M2,在每一步骤中这两个散列应当通过排除M2中的大约一半候选块
来帮助发现病毒的位置。
[0112] 追加和预加病毒的一个主要难题是文件M2的长度可能与目标文件的长度M1不同,并且因此不能使用‘长度依赖’技术,如上描述的用于重写病毒的那些技术。相反,从文件的开头处开始,通过在独立于目标文件的长度的序列上仔细计算散列来排除候选块。
[0113] 设H表示一个抗冲突散列函数。我们表示为App-pH的p-revealing抗冲突散列函数,将l块的消息M=M(1),...,M(l)作为输入,并对M的这l块的序列最多应用logl
次原始函数H,如下:
[0114] 1.设j←1并且Mj=M;
[0115] 2.计算最大正整数k使得2k<l/2,并从Mj获得序列Sj=Mj(1),...,Mj(2k),并计算散列hj=H(Sj);
[0116] 3.如果l-2k+1+1≥1,则在Mj+1=Mj(2k+1+1)|...|Mj(l)上,递归地重复步骤2直到新输入Mj+1具有0或1个块时递归结束,并设j=j+1;
[0117] 4.返回所有所计算的散列(h1,h2,...,hm),其中m=log4/3l/4。
[0118] 如果n表示目标文件M的块数目且n′表示损坏的文件M′的块数目,则最多有logl个递归步骤,并且因此App-pH所返回的全部散列的数目是
≤log4/3l/4≤log4/3n′/4≤log4/3n-1,因为我们假定n′≤2n。这一展开系数在每一散
列揭示关于病毒区间的位置的信息的一位的模型中基本上是最优的(高达某倍增常数)。
[0119] 为说明App-pH是抗冲突的,观察到在App-pH的输出中寻找冲突的算法找到两个不同的输入,它们由H映射至对于j=1,...,log n以及i=1,2中至少一个相同的
h(j|i),这暗示用于发现H的冲突的算法。
[0120] 为说明App-pH是p-revealing,我们构造使用App-pH和对于所有的索引j∈{1,...,m},其中m=log4/3n/4的散列hj的有效算法App-Loc,以在文件M的可能损坏
的版本M′中定位追加病毒。算法App-Loc,如在图6A中示出的,可被描述如下:
[0121] 1.设j←1并且Mj=M(步骤S12)
[0122] 2.计算最大正整数k使得2k<n′/2,并从Mj获得下面两个块序列Sj,1=k-1 k
Mj(1),...,Mj(2 )以及Sj,2=Mj(1),...,Mj(2);并计算散列h1,i=H(Sj,i)其中i=1,
2(步骤S13)
[0123] 3.如果l-2k+1+1≥1,则在Mj+1=Mj(2k+1+1)|...|Mj(l)上递归地重复步骤2直到新输入Mj+1具有0或1个块时递归结束(步骤S14),并设j=j+1(步骤S15)
[0124] 4.设(h1,i,h2,i,...,hm′,i)i=1,2,对于m′=log4/3n′/4表示所有所计算的散列(步骤S15)
[0125] 5.如果m′=m(步骤S16),则设i=2(步骤S17),否则设i=1(步骤S18)
[0126] 6.设h′=(h′1,h′2,...,h′m′)=(h1,i,h2,i,...,hm′,i)(步骤S19)[0127] 7.对于所有索引j∈{1,...,m′},如果hj≠h′j则计算tj=1,或者如果hj=hj′则计算tj=0(步骤S20)
[0128] 8.设S={1,...,n},j=1并且输出过程App-RecLoc(以下定义)根据输入对(S,j)所返回的对(步骤S21)。
[0129] 步骤S22执行过程App-RecLoc。
[0130] 过程App-RecLoc(S,j)被定义如下,且在图6b中示出:
[0131] 1.如果tj,i=1则返回:T=S并停止(步骤S23)。
[0132] 2.从块序列S中移除所有来自块序列Sj,i的块(步骤S24)
[0133] 3.运行过程App-RecLoc(S,j+1)(步骤S25)。
[0134] App-pH是p-revealing的证明是下列引理的推论。对于至少具有l-sj+1个块的任意病毒区间(s,l),根据等于目标文件M上追加了区间(s,l)的l块的损坏的文件M′
的输入,以及在构造App-pH中的递归的前j-1个步骤中获得的散列,算法App-Loc返回值
x使得x≤s(即,算法定位病毒)并且x≥2s-n-1,即App-pH的定位系数最多为2。
[0135] 嵌入感染的病毒定位
[0136] 如上所述,在嵌入感染技术中,病毒被插入到目标文件10中间的某一位置,且不在开头或末尾,从而创建大小大于目标文件10的可疑文件12。本发明方法计算来自目标
文件10的块序列的多个散列,以稍后定位将一段连续块嵌入在损坏的文件12中的任意地
方的病毒。假定目标文件10中的块的数目为n,且损坏的文件12中的块的数目为n′。
则,根据l块的消息的输入,该构造最多返回8(log2 l-1)个文件块序列,并且因而最多返
回8(logl-1)个散列;即,logl个阶段的每一个有8个散列。例如,如果l=1024,则有
8*(10-1)=72个散列。
[0137] 图7示出将在用于嵌入感染的病毒定位散列法的示例性实施例中进行散列的文件块的子集26、28、30、32。由于病毒被嵌入在受感染的或损坏的文件12中,因此有必要找到病毒的开头和结尾。
[0138] 对于本发明病毒定位方法,可以设计p-revealing抗冲突散列函数,其中p如下定义。根据不必等长的输入M1和M2,函数p(M1,M2)等于:
[0139] -0,如果M1=M2;
[0140] -(a,b),如果b-a<n/2并且对于i=1,...,a-1,M1(i)=M2(i)且对于i1=b+1,...,n以及i2=i1+b-1+1,M1(i1)=M2(i2);
[0141] -1,其它情况。
[0142] 该分析可被限制在最多嵌入n个块的病毒,即,假设M2中的块的数目最多是2n,其中n是在目标文件M1中的块的数目。
[0143] 用于嵌入感染情况的p-revealing散列函数的构造是用于重写和追加感染情况的构造的组合。该组合包括使用如追加感染构造中的文件块序列‘长度无关’、使用如用
于重写感染构造中的序列结构来利用该技术。所得构造的定位系数为2并且展开系数为
8logl,其中l是输入文件的大小。
[0144] 函数的正式描述如下。设H表示抗冲突散列函数。我们表示为Emb-pH的p-revealing抗冲突散列函数,,将n块的消息M=M(0),...,M(l-1)作为输入,并对M的
这l块序列应用8(logl-1)次原始函数H,通过在输入M=M(0),...,M(l-1)上和输入反
向文件rM=M(l-1),...,M(0)上运行一次下列步骤(为简单起见我们假定l是2的幂并
且对数的底为2):
[0145] 步骤1:
[0146] 计算最大正整数k使得2k<l/2。在该第一步骤,M中的块被分组成4个序列,每一序列是通过连接l/2个块来得到的,定义为:
[0147] S1,1=M(0)|...|M(2k-1),
[0148] S1,2=M(2k)|...|M(l-1),
[0149] S1,3=M(2k-1)|...|M(l-1-2k-1),以及
[0150] S1,4=M(0)|...|M(2k-1-1)|M(l-1-2k-1)|...|M(n-1)
[0151] S1,3和S1,4中的块的索引是通过分别将S1,1和S1,2中的块的索引循环移位2k-1而得到的。在该步骤中,4个散列作为h1,i=H(S1,i),其中i=1,2,3,4来计算。
[0152] 步骤j,其中j=2,...,log l-1:
[0153] 扩展步骤1,M中的块被分组成2*2j个序列,每一序列是通过连接n/2j个块来得到的,定义为:
[0154] Sj,i=M((c-1)*2k/2j)|...|M(c*2k/2j-1)|M(2k+(d-1)*(l-2k)/2j)|...|M(2k+d*l/j j2-1)),其中c,d=1,...,2,并且Sj,i+2j被类似地定义,除它的块的索引是通过将Sj,i中k j
的块的索引循环移位2/2 而获得的之外。
[0155] 在该步骤中,4个散列如下计算:
[0156] 当i=1,2时
[0157] hj,i=H(Sj,i|.Sj,i+2|Sj,i+4|...|Sj,i+2j-2);
[0158] 以及,当i=3,4时
[0159] hj,i=H(Sj,i-2+2j|.Sj,i+2j|Sj,i+2j+2|...|Sj,i+2j+2j-4)。
[0160] 该函数的输出为h=((h1,i,h2,i,...,hlogn-1,i))i=1,2,3,4,5,6,7,8(在此对于i=1,2,3,4,hj,i涉及M并且对于i=5,6,7,8,hj,i涉及rM)。
[0161] Emb-pH的原子散列的全部数目仅为8logn-8,其在每一个散列揭示关于病毒区间的位置的信息的一位的模型中基本上是最优的。
[0162] 类似于之前构造的散列函数,可以看到Emb-pH是抗冲突的。为说明Emb-pH是p-revealing,构造使用Emb-pH和对于所有的索引(j,i),j∈{1,...,logn-1},
i∈{1...8}的散列hj,i的有效算法Emb-Loc(在图8中示出),以在文件M的可能损坏的
版本M′中定位嵌入的病毒。该算法包括运行算法Rew-Loc两次:一次使用文件M和对于
所有索引(j,i),j∈{1,...,logn-1},i∈{1,...,4}的散列hj,i(步骤S26),并且一次使用文件rM和对于所有索引(j,i),j∈{1,...,logn-1},i∈{5,...,8}的散列hj,i(步骤S27)。设S1和S2是由此获得的输出。算法Emb-Loc返回集合S1和S2的交集(步骤
S28)。
[0163] 性能分析
[0164] 图9和图10呈现和描绘了上述的本发明技术与两种已知技术相比的适用性和性能总结。
[0165] 如上所述,“检测构造”表示仅计算其整个输入文件的单个散列的构造,而“平凡构造”表示计算输入文件的每个块的单个散列的构造。回想在重写感染的病毒定位一节、追加/预加感染的病毒定位一节、嵌入感染的病毒定位一节中的构造分别被表示为Rew-pH、
App-pH、Emb-pH,且n是文件中的块的数目。尽管检测和平凡构造适用于上述给定特征中的任意感染技术,但是这三种散列函数构造Rew-pH、App-pH、Emb-pH中的每一个被特制来用
于特定的感染技术。
[0166] 另外,在这些构造Rew-pH、App-pH、Emb-pH中对病毒长度的限制基本上不失一般性,因为一旦不满足这个限制,则病毒定位问题就失去了意义。
[0167] 图10概括了下列性能系数。对于定位系数,检测构造实际上没有定位,而平凡构造由于其定位所有受感染的块而具有最可能的定位。构造Rew-pH、App-pH、Emb-pH定位最
多仅是感染区域的两倍大小的区域。对于展开系数,平凡构造具有太大的展开,而检测构造实际上没有展开并且构造Rew-pH、App-pH、Emb-pH仅有散列的对数(以n)展开。
[0168] 最后,对于时间性能,平凡和检测构造对于单个散列计算基本上没有时间爆炸,而构造Rew-pH、App-pH、Emb-pH仅计算对数(以n)次散列。
[0169] 尽管在具体实施例中描述了本发明,但应当理解,本发明不应被解释为受这些实施例的限制,而相反应根据所附权利要求来解释。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈