-
网络信息技术的普适性、软硬件漏洞的客观存在性、数字复制技术的便捷性以及网络犯罪的高收益性,为计算机病毒进化提供了坚实的物质基础与内驱动力。当前,计算机病毒仍是网络空间所面临的主要安全威胁之一。据最新研究报告[1]称:2016年中国计算机病毒感染率为57.88%。其安全威胁[2-4]主要表现为:1)窃取敏感数据,威胁用户数据隐私安全;2)篡改系统配置、潜伏于目标系统中,威胁工业基础设施安全;3)传播网络谣言、勒索用户,威胁现实社会公共安全。
作为一种重要的网络空间安全威胁,计算机病毒的生存、适应、延续、发展等进化理论研究意义重大,且可促进如下技术发展:1)网络武器技术。作为一种高效的网络战武器,计算机病毒可为网络武器开发与利用提供技术与策略支撑;2)反病毒技术。从攻防博弈的角度,计算机病毒与反病毒技术之间的魔道之争,促使反病毒技术预测病毒未来进化趋势与发展方向,从而未雨绸缪、防患未然;3)漏洞修复技术。作为最佳的漏洞利用范例,计算机病毒可促使软件漏洞修复技术的应用与发展;4)软件演化技术。计算机病毒是一种能自我复制的程序代码,其进化模型能为软件代码进化提供理论与实践支撑;5)人工生命技术。作为一种绝佳的人工生命体,计算机病毒可为人工生命技术研究提供实验素材。
迄今,计算机病毒及其进化发展一直为信息安全界所关注,研究者从不同视角研究了计算机病毒及其进化规律[5],概括起来可分为4类:1)病毒自我复制性,如文献[6]从图灵机的可自我复制性的角度讨论了计算机病毒进行自我复制、自我演化的特性;2)人工生命体的自我复制性,如文献[7-9]从人工生命体的角度讨论了计算机病毒的演化特性;3)遗传算法,如文献[10-13]从遗传算法的角度研究了计算机病毒演化规律;4)协同进化论,如文献[14-15]从协同进化的角度研究了计算机病毒进化特性。
然而,上述研究未能有效的从病毒基因视角探索计算机病毒进化发展规律。本质而言,计算机病毒具有双重特性:1)算法特性。作为一种能自我复制的计算机程序,计算机病毒具有普通程序所具备的算法特性:按照编程者意图,通过所设计的算法逻辑完成相关操作;2)生命特性。计算机病毒还是一种人工生命体,通过编程者的“上帝之手”,具备自我繁衍、传播感染、适应环境等生命特性。由此可见,在计算机病毒代码世界,病毒基因蕴含着独特的进化意义,有助于洞悉病毒进化内涵,并借此揭开计算机病毒进化之谜:病毒基因的变化能使其更好地适应不断改变的外部环境,为病毒进化提供了独一无二的证据,也为病毒检测提供了明显的特征码支持。因此,如能从病毒基因视角,借助于病毒基因的独特进化内涵,通过算法和生命的双重特性去研究计算机病毒的进化模型,将有助于全面有效地理解计算机病毒进化逻辑。
鉴于此,本文提出一种基于基因理论的计算机病毒进化模型。首先,从生命特性的角度,通过借鉴生物学病毒相关机理与概念定义了计算机病毒及其相关概念;其次,从算法特性的视角,设计了计算机病毒的相关进化算子;最后,从病毒基因的角度,构建了计算机病毒进化模型。仿真实验表明,即使遭遇严酷的外部环境,具有算法和生命双重特性的计算机病毒仍具极强的进化能力。
HTML
-
基因理论[16]是研究生物体的遗传和变异的科学,是生物学的一个重要分支。基因理论认为:1)从载体的角度,基因是位于染色体的DNA上的遗传物质;2)从定义的角度,基因是指带有遗传信息的DNA片段;DNA是由4类不同的核苷酸组成的链状分子,DNA上的核苷酸序列就是生物体的遗传信息;染色体是细胞核内由核蛋白组成、能用碱性染料染色、有结构的线状体,其本质是脱氧核甘酸;3)从功能的角度,基因通过指导蛋白质的合成来表达自己所携带的遗传信息,从而控制生物体的性状表现;DNA用于长期性的遗传信息储存,以引导生物发育与生命机能运作;染色体是细胞核中载有遗传信息(基因)的物质,主要由DNA和蛋白质组成,是遗传物质的载体。
可知,生物病毒体是由细胞组成,细胞包括细胞核,细胞核内有染色体,染色体是DNA的载体,DNA包含多种基因。生物病毒的遗传结构可用集合代数描述为:$基因\subset \text{DNA}\subset 染色体\subset 细胞核\subset 细胞\subset 生物病毒$,其包含关系如图 1所示。
与生物病毒体类似,计算机病毒是一种能自我复制的人工生命体(程序代码)。从程序代码的角度,计算机病毒是编制者借助于计算机语言编写的能在计算机系统中运行的计算机程序代码,其最终表现为大量数字基因的有机组合。从程序结构的角度,计算机病毒包含:进程、过程(函数)、模块、指令等结构。
从抽象逻辑的角度,生物基因理论与计算机程序理论的映射关系[11-12]如表 1所示。两者的对应关系为:“基因”对应“特殊指令序列”,“DNA”对应“模块”,“染色体”对应“过程(函数)”,“细胞核”对应“内核进程”,“细胞”对应“应用进程”,“生物体”对应“程序”。
生物学基因理论 计算机程序理论 基因 特殊指令序列 DNA 模块 染色体 过程(函数) 细胞核 内核进程 细胞 应用进程 生物体 程序 -
计算机病毒是指一组能自我复制且具有表现(破坏)作用的计算机指令或程序代码。为完成相关功能,计算机病毒需要相关程序结构支撑,即计算机病毒功能决定其结构。因此,计算机病毒结构是其充分利用系统资源以完成相关功能的最佳体现。在功能结构上,计算机病毒通常由5个部分组成:初始化模块、感染标记、触发模块、表现模块和感染模块,如图 2所示。
由此,可得到计算机病毒的形式化定义如下。
定义1 计算机病毒是由5个功能模块组成的可自我复制的计算机指令或程序代码集合,表示为:$V{\text{ = (}}{V_1}{\text{, }}{V_2}{\text{, }}{V_3}{\text{, }}{V_4}{\text{, }}{V_5})$,其中${V_1}$为感染标记集,${V_2}$为初始化模块集,${V_3}$为触发模块集,${V_4}$为感染模块集,${V_5}$为表现模块集。
借鉴生物学病毒基因理论,可将计算机病毒结构表示为长度为5的染色体模式,即$V = ({V_{{\text{c}}1}}, {\text{ }}{V_{{\text{c}}2}}{\text{, }}{V_{{\text{c}}3}}, {\text{ }}{V_{{\text{c}}4}}, {\text{ }}{V_{{\text{c}}5}})$。由此可得计算机病毒在染色体、DNA、基因等3个层次上的形式化定义如下:
定义2 计算机病毒染色体是指计算机病毒中具有某些复杂功能的程序模块,表示为:${V_{{\text{C}}i}} = ({V_{{\text{c1}}i}}, {V_{{\text{c2}}i}}, \cdots , {V_{{\text{c5}}}}_i)$,$i = 1, 2, 3, 4, 5$。
定义3 计算机病毒DNA是指染色体中具有某一特定功能的程序小模块,表示为:${V_{{\text{DNA}}}}{\text{ = }}$ ${\text{(}}{V_{{\text{c1}}i}}_{{\text{DNA}}}, {V_{{\text{c2}}i}}_{{\text{DNA}}}, \cdots , {V_{{\text{c}}ni}}_{{\text{DNA}}})$,$i{\text{ = 1, 2, 3, 4, 5}}$。
定义4 计算机病毒基因是指病毒DNA中为实现某些微操作设计的计算机特殊指令序列,表示为:
${V_{\text{g}}}{\text{ = }}({V_{{\text{DNA1}}}}, {V_{{\text{DNA2}}}}, \cdots , {V_{{\text{DNA}}i}})$,$i = {\text{1, 2, 3, 4, 5}}$。
至此,计算机病毒可表示为n×5阶矩阵,即:。
-
依据基因理论,生物的不断进化得益于遗传与变异。生物的遗传与变异主要包括2类:1)基因突变与重组;2)染色体变异。基因突变是指某个基因上的某些碱基对的增添、缺失或替换,从而导致基因结构的改变,产生新的基因;基因重组是生物变异中最普遍的现象,是在有性生殖过程中才会发生的,主要是在减数分裂中染色体的重新组合,像积木推倒重建一样,没有产生新的基因,只是原有基因的重新组合;染色体变异是指因染色体片段的缺失,引起染色体上基因的数目或排列顺序发生改变,从而导致性状的改变。上述两类遗传变异,都会导致生物性状与功能的改变,适者生存,不适者淘汰。
计算机病毒的算法特性与生命特性决定了病毒的进化模式:即由低级到高级、从已知到未知、由简单到复杂的螺旋式上升。具体而言,计算机病毒编制者在编写新病毒时,通常采用如下步骤:首先,对已知病毒进行编码分析,并提取病毒各种模块(基因);其次,应用不同算法对已知病毒的模块(基因)进行修改利用或创新而得到新病毒;最后,新病毒将通过外部环境(运行环境与反病毒软件)考验,适者生存,不适者淘汰。
借鉴基因理论并结合计算机病毒的算法与生命特性,构建基于基因理论的计算机病毒进化模型(如图 3所示)。初始病毒群体在病毒进化算子的作用下,生成新生病毒群体。新生病毒群体在自然选择(反病毒软件)作用下,如成功存活则继续进化繁衍,否则淘汰。
鉴于计算机病毒的代码特殊性,本模型中的病毒进化算子将分别作用于基因、DNA、染色体等3个层次。因此,病毒进化算子可抽象为3类:1)基因算子;2) DNA算子;3)染色体算子。其中,基因算子用于计算机病毒基因层面的变异操作,主要包括:基因置换算子和基因插入算子;DNA算子则较基因算子更抽象,作用于计算机病毒DNA的变异,主要包括:DNA剪切算子、DNA拼接算子、DNA交叉算子;染色体算子只包含染色体替换算子,用于在计算机病毒染色体层面进行变异操作。
-
计算机病毒是一种能自我复制的程序代码,不论由何种计算机语言编写,最终生成的能在计算机系统上运行的只能是二进制形式的机器码。在二进制中,只有两个表示基元:0和1。由二进制基元构成的计算机病毒,将产生多种类型的病毒基因。因此,从数字基因的角度,计算机病毒是由诸多数字基因构建的、有特殊功能的、能自我复制、自动运行的人工生命体。
基因算子[17]将在计算机病毒基因层面进行操作,通过改变病毒某些关键基因而发生基因突变,从而改变其某些性状(特征码),以逃避反病毒软件查杀,更好适应外部运行环境、最大程度生存与繁衍自身。譬如,通过更换计算机病毒的部分寄存器(EAX、EBX、ECX、EDX等),或插入部分花指令,可导致其特征码(基因)的改变。基因算子主要包括两类:基因置换算子和基因插入算子,其数学模型分别如下。
1) 基因置换算子:
式(1)刻画了病毒群体通过基因置换算子的进化过程,其中Vinitial为初始病毒集,Vdel为被查杀而删除的病毒集,Vnew是病毒进行基因置换操作后生成的新病毒集。fadaption为病毒适应度,反映病毒的生存能力,如被查杀则其适应度为0,否则为1。式(5)模拟了借助基因置换算子生成新病毒的过程,即通过在病毒基因库里选择相关的等位基因,置换病毒相应基因座上的基因,从而模拟基因突变以产生新病毒。
2) 基因插入算子:
式(6)刻画了病毒群体通过基因插入算子的进化过程。式(9)模拟了借助基因插入算子生成新病毒的过程,即通过在病毒基因库里选择相关的等位基因,插入至病毒相应基因座上,模拟基因突变以产生新病毒。
-
由基因理论可知,基因重组是一种广泛存在的生物遗传机制,高等生物体、细菌、病毒、原核生物都存在基因重组。基因重组是指一个基因的DNA序列是由两个或两个以上的亲本DNA组合而成,是对基因的重新排列组合。从广义上讲,任何造成基因型变化的基因交流过程,都可视为基因重组。
借鉴生物基因理论,本文将在计算机病毒的DNA层面进行基因进化操作,以促进病毒基因交流与重组,形成具有不同特征码(基因)的计算机病毒,从而导致计算机病毒的多样性。譬如,通过同类计算机病毒之间的模块交换,或在模块中插入部分花指令,可生成功能相似而特征码(基因)不同的新型计算机病毒。DNA进化算子主要包括:DNA剪切算子、DNA拼接算子、DNA交叉算子,其数学模型分别如下。
1) DNA剪切算子:
式(10)刻画了病毒群体通过DNA剪切算子的进化过程。式(13)模拟了借助DNA剪切算子生成新病毒的过程,即通过剪切掉病毒基因座上的部分等位基因,实现基因重组以产生新病毒。
2) DNA拼接算子:
式(14)刻画了病毒群体通过DNA拼接算子的进化过程。式(17)模拟了借助DNA拼接算子生成新病毒的过程,即通过随机选择病毒DNA库中的DNA序列并将其拼接于病毒等位座上,实现基因重组以产生新病毒。
3) DNA交叉算子:
式(18)刻画了病毒群体通过DNA交叉算子的进化过程。式(21)模拟了借助DNA交叉算子生成新病毒的过程,即通过将一对病毒的等位DNA进行交叉,实现基因重组以产生新病毒。
-
由基因理论可知,染色体变异是指因染色体片段的缺失、重复、倒位、易位,引起染色体上基因的数目或排列顺序发生改变,遗传信息随之改变,从而导致生物体后代性状的改变。其中,易位是指一条染色体的某一片段移接到另一条非同源染色体上,可改变基因连锁群,造成染色体融合而改变染色体数目,从而引起变异的现象。
借鉴染色体变异理论,利用计算机语言(如Java、C++等)的函数多态性,借助编译时的重载机制或运行时的虚函数机制,通过修改函数参数或函数内部实现来达到更换函数功能与特征码(基因)的目的。本文将在计算机病毒染色体层面进行染色体易位操作,其数学模型如下:
式(22)刻画了病毒群体通过染色体易位算子的进化过程。式(25)模拟了借助染色体易位算子生成新病毒的过程,即通过从病毒染色体库中随机选取基因片段替换病毒的部分染色体,从而实现染色体变异以产生新病毒。