一种构建动态异构冗余架构的方法与流程

文档序号:18248585发布日期:2019-07-24 09:32阅读:645来源:国知局
一种构建动态异构冗余架构的方法与流程

本发明涉及计算机网络安全,尤其涉及对网络攻击的主动防御。



背景技术:

网络攻击指的是利用网络存在的漏洞和安全缺陷对网络系统的硬件、软件及其系统中的数据进行的攻击,其可能会扰乱系统的运行、盗窃系统资料、破坏系统的数据,从而影响网络空间的安全。随着网络攻击的持续性、不确定性越来越高(如:高级持续威胁(APT)攻击),如何提供安全可靠的网络空间成为了本领域日益关注的焦点。

目前绝大多数的防御体系均是基于已知的威胁进行准确的防御。然而,这样的被动防御方式只有在了解了攻击来源、攻击特征、攻击行为和攻击机制的基础上,才能进行有效的防御。对于用于操作系统的被动防御,往往是通过发现漏洞或后门,有针对性地进行打补丁、杀毒等被动方式以对操作系统进行自我完善。显然,这样的被动防御的方式无法应对未知的威胁。并且,可以理解网络空间信息系统架构和防御体系本质上说都是“静态的、相似的和确定的”,这意味着操作系统的缺陷会持续地暴露并且使得操作系统易于受到攻击。

在邬江兴于2016年11月发表于信息安全学报上的文章《网络空间拟态防御研究》中,提出了一种可用于实现主动防御的异构冗余体制——非相似余度构造(Dissimilar Redundancy Structure,简称DRS)。其提出,独立开发的装置或模块发生共性设计缺陷导致共模故障的情况属于小概率事件。若是采用异构的算法来提供给定的功能,则从攻击者的视角来观察目标对象的视在功能与结构之间的映射关系不再是唯一的或确定的,防御方可以利用这一性质来实现主动防御。并且,由于仅在小概率的情况下,异构的算法之间会存在相同的错误表达,使得在动态异构冗余(Dynamic Heterogeneous Redundancy,DHR)的架构下攻击很难从多模裁决机制下实现成功逃逸。

上述DHR架构为实现主动防御提供了理论依据,然而如何具体地部署DHR架构以提供一种能够实现的主动防御的方案仍需要探讨和研究。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种构建动态异构冗余架构的方法,包括:

1)针对操作系统中的一项任务,确定对应的至少一个异构构件,所述异构构件为可用于完成所述任务的进程;

2)采用随机算法针对所述至少一个异构构件中的每一个异构构件设置进程参数,获得用于完成所述任务的动态异构冗余架构的执行体的集合。

优选地,根据所述方法,其中步骤2)包括:

2-1)针对每一个异构构件,采用随机算法生成随机数,将与所述随机数对应的进程参数作为针对所述异构构件的进程参数;

2-2)将设置了进程参数的异构构件作为一个执行体,获得用于完成所述任务的执行体的集合。

优选地,根据所述方法,其中所述随机算法为基于进位加发生器的随机选择算法。

优选地,根据所述方法,其中步骤2-1)包括针对每一个异构构件:

2-1-1)确定待选进程参数的总数K,并且根据对随机数周期的需要,确定针对进位加发生器的第一延迟因子p、以及第二延迟因子q,p>q;

2-1-2)使用Fisher Yates随机数表随机地确定针对前p个异构构件的参数编号x1,x2,...xp,其中xk表示针对第k个异构构件的参数编号,k=1,2,…p;

2-1-3)基于获得的x1,x2,...xp以及进位加发生器的以下随机数生成规则计算针对其余异构构件的参数编号,以将针对各个异构构件所获得的参数编号作为针对所述异构构件的随机数:

xi=(xi-p+xi-q+ci-1)modK,(i=p+1,p+2,...),

其中,ci-1为进位加发生器针对第i-1个异构构件的进位,cp=0,若xi-p+xi-q+ci-1≥K,则ci=1,否则ci=0。

优选地,根据所述方法,其中所述异构构件为可用于完成所述任务的通信进程。

优选地,根据所述方法,其中所述异构构件为TCP/IP进程和/或UDP进程,并且所述进程参数选自以下至少一项:

带宽参数、信道参数、功率参数、时延参数。

一种基于动态异构冗余架构实现对操作系统的主动防御的方法,包括:

A1)确定与操作系统当前需要执行的任务对应的执行体的集合,所述执行体的集合为通过权利要求1-6中任意一项所述方法所生成的动态异构冗余架构中的执行体的集合;

A2)采用随机算法从所述执行体的集合中选择一个执行体作为用于执行所述任务的进程。

优选地,根据所述方法,其中所述步骤A2)包括:基于进位加发生器的随机选择算法选择所述执行体。

优选地,根据所述方法,其中步骤A2)包括:

A2-1)根据与所述任务对应的执行体的集合中执行体的总数N以及对随机数周期的需要,确定针对进位加发生器的第一延迟因子m、以及第二延迟因子n,m>n;

A2-2)确定编号为前m个用于执行所述任务的执行体的信息y1,y2,...ym,其中yk表示第k个被选择用于执行所述任务的执行体的编号,k=1,2,…m;

A2-3)基于获得的y1,y2,...ym以及进位加发生器的以下随机数生成规则计算当前第i个所选择的用于执行所述任务的执行体的编号yi:

yi=(yi-m+yi-n+ci-1)modN,(i=m+1,m+2,...),

其中,ci-1为进位加发生器针对第i-1个执行体的进位,cm=0,若yi-m+yi-n+ci-1≥N,则ci=1,否则ci=0。

一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。

与现有技术相比,本发明的优点在于:

提供了一种具体的动态异构冗余架构的实现方法。其针对操作系统中的任务,对用于完成所述任务的进程进行差异化处理,以作为动态异构冗余架构的执行体,通过调度执行体作为完成所述任务的进程来实现主动防御。异构元素池中的每个异构构件以一个普通进程的方式而实现,通过随机地为这些非核心构件配置等参数,使得各个构件之间存在差异。为操作系统提供了性能正常且可以正常使用的执行体,各个执行体之间彼此存在的差异并不会影响最终获得的构件体的正常运行。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是现有的动态异构冗余即DHR架构的结构示意图;

图2是根据本发明的一个实施例在通用操作系统的内核中以普通进程的方式实现DHR架构的异构构件和执行体的示意图;

图3是根据本发明的一个实施例构建用于操作系统的动态异构冗余架构的方法流程图;

图4根据本发明的一个实施例基于图3的方法生成的动态异构冗余架构实现对操作系统的主动防御的方法流程图;

图5是本发明仿真测试中在单次实验时各参数编号被选择的频率;

图6是本发明仿真测试中在100000次实验时各执行体被选择的频率。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

如背景技术中所介绍地,DHR架构通过动态地随机配置异构元素的参数,得到功能等价的异构执行体,然而这种方式并不是在所有领域都具有可操作性。

图1示出了现有的DHR架构的结构示意图。参考图1,该体制包括输入代理、异构构件集合、采用随机参数的动态选择算法、执行体集、表决器,其中输入代理和表决器构成了一个“拟态括号”,由该拟态括号限定的保护范围是一个存在未知漏洞、后门或病毒、木马等软硬件代码的“有毒带菌”异构执行环境。在使用时,由标准化的软硬件模块可以组合出m种功能等价的异构构件集合E,按动态选择算法动态地从集合E中选出n个构件作为一个执行体集合(A1,A2,…An),系统输入代理将输入转发给各执行体,这些执行体的输出矢量提交给表决器进行表决,得到系统输出。

不难看出,DHR架构的抗攻击能力源自于DRS构造,其不确定性机制上则受惠于动态性、随机性和多样性的引入,在攻击者利用特定漏洞发起攻击时,任意k个互异执行体Ai存在共同漏洞的概率极低,使得针对该特定漏洞的攻击成功率极低。

在上述《网络空间拟态防御研究》中,提供了针对DHR架构的理论分析,然而在具体实现上述DHR架构时,还需要考虑如何选择异构构件集合以供建立恰当的执行体集合。在该现有技术中,采用了web服务器拟态防御和路由器拟态防御这两种验证系统,然而其并未具体公开应当以何种方式来确定符合可以组合出具有相互等价的功能、且彼此互异这一标准的多个异构构件,也没有公开在针对一种特定的主动防御的方案时这样的等价功能应当是何种具体的功能。

对此,发明人在研究现有技术的基础上,提出了一种具体的基于DHR架构的针对操作系统的执行体随机调度方法。其将异构元素池中的每个异构构件以一个普通进程的方式来实现,通过随机地为这些异构构件配置参数,例如为TCP/IP、UDP等进程配置带宽参数,使得各个构件之间存在差异。通过这样的方式,为操作系统提供了性能正常且可以正常使用的执行体,各个执行体之间彼此存在的差异并不会影响最终获得的构件的正常运行。

下面将通过具体的实施例来介绍根据本发明的技术方案。

图2示出了根据本发明的一个实施例在通用操作系统的内核中以普通进程的方式实现DHR架构的异构构件和执行体的示意图。如前文中所述,在本发明中异构元素池中的每个异构构件以一个普通进程的方式来实现,执行体也以进程的方式通过DHR架构来实现调度和使用,因此为了实现根据本发明的用于操作系统的执行体随机调度方法,异构构件和执行体均需要作用于操作系统的内核中。这是由于内核起到资源分配和调度的作用,其尤其适合于构建用于实现执行体的异构构件、以及执行随机选择算法以从执行体集合中选择恰当的执行体以作为当前所使用的进程。

在本发明中,可以预先收集操作系统的一系列普通进程作为异构构件集合中的元素,在操作系统需要执行任务时,从异构构件集合中找出能够用于完成所述任务的一个或多个异构构件。通过对这些异构构件进行差异化处理,例如修改构件的参数,来获得针对所述任务的执行体的集合,从而完成对DHR架构的构建。然后,可以从执行体的集合中随机选择一个以作为用于完成所述任务的进程,利用DHR架构所具有的异构算法之间会存在相同的错误表达的性质属于小概率事件的这一性质来实现针对操作系统的主动防御。

下面将参考图3,具体介绍根据本发明的一个实施例构建用于操作系统的动态异构冗余架构的方法,包括:

步骤1.针对操作系统中的一项任务,确定可被用于完成所述任务的至少一个进程,所述进程为系统的非核心进程,将所确定的至少一个进程作为至少一个异构构件。

如前文中所述,在可选的实施例中,本发明也可以预先收集操作系统的一系列普通进程作为异构构件集合中的元素,在需要执行某一项任务时从所述异构构件集合中选择能够用于完成该任务的一个或多个异构构件。在另一实施例中,也可以省略构建异构构件集合的步骤,在线地判断存在哪些可用于实现所述任务的进程。

在本发明中,存在许多可被用作异构构件的进程,例如守护进程中的作业规划进程crond、打印进程lqd、httpd,通信进程中的TCP/IP进程、UDP进程,用户进程中的zygote、media、console,系统进程中的Windows壳进程、本地安全权限服务、多媒体支持进程等,这里不针对每一种可选的进程进行穷举。

可以理解,在操作系统的许多任务的执行过程中需要对数据进行传输,而数据传输的过程往往是攻击者的重点攻击的目标,例如基于对数据传输协议的了解发起攻击、窃取或篡改数据。因此,在实施本发明时,优选地针对所述任务将用于通信的进程作为异构构件。例如,对于某一项任务而言其需要对数据进行传输,并且为了完成所述任务中的数据传输,既可以采用TCP/IP进程也可以采用UDP进程,则可以将TCP/IP进程以及UDP进程分别作为针对所述任务的异构构件E1和异构构件E2。

步骤2.采用随机算法针对所述至少一个异构构件中的每一个异构构件设置进程参数,获得用于实现所述任务的动态异构冗余架构的多个执行体。通过对每一个异构构件设置不同的进程参数,可以获得相应的多个不同执行体,可以理解,该执行体也是进程。

本发明所选择的异构构件为操作系统中的进程,通过修改进程中的相应参数,可以在不改变进程原本功能的情况下,获得实质上不同的多个执行体。例如,对于作为异构构件E1的TCP/IP进程和作为异构构件E2的UDP进程而言,他们同属于用于通信的进程,通过为它们配置不同的参数,例如配置不同的带宽、信道、使用功率、时延等,则可以获得不同执行体。

这里为进程配置参数以获得执行体的原因在于,对攻击者而言,进程类型和进程参数是操作系统的特征,攻击者可以通过进程类型和进程参数来判断操作系统类型,从而采取有针对性的攻击方式。一旦某类进程的参数发生了改变,变得和正常的参数有差异,就会混淆攻击者对操作系统类型的判断,从而抵御攻击。因此,可以通过为进程配置不同的参数来获得能够用于抵御攻击的执行体。

假设针对异构构件E1配置了30种具有不同参数的进程,则可以将其中每一种进程作为一个执行体,并且类似地,若针对异构构件E2配置了40种具有不同参数的进程,则可以将其中每一种进程作为一个执行体,总共针对所述任务获得了70个不同的执行体。所述执行体的集合中的每一个执行体均可以单独地用于完成所述任务。

根据本发明的一个实施例,采用以下方式来实施此步骤,包括:

步骤2.1.针对所述异构构件中的每一个,采用随机算法生成随机数,将与所述随机数对应的进程参数作为针对所述异构构件的进程参数。

可以理解,在以实施防御为目的时,调度进程的随机程度越高,则攻击难度越高。因此,在选择此步骤的随机算法时,优先考虑具有较长周期的随机算法。

根据本发明的一个优选实施例,采用Marsaglia-Zaman在1991年提出的基于进位加发生器的随机选择算法来生成针对异构构件的随机数。

首先,根据对随机数周期的需要,确定针对进位加发生器的第一延迟因子p、以及第二延迟因子q。在基于进位加发生器的随机选择算法中,其周期等于Kp+Kq-2,其中K为待选参数的数量,在此实施例中K为待选进程参数的总数。由于该算法的周期取决于K的指数,因此具有极长的周期。并且,考虑到第一延迟因子p被用于进位加发生器工作的历史信息,因此可以使得p>q以保证该算法具有较大的周期。

随后,设置用于进位加发生器的前p个异构构件的参数编号x1,x2,...xp,其中xk表示针对第k个异构构件的参数编号,k=1,2,…p。这里设置前p个异构构件的参数编号的原因在于进位加发生器的使用必须依赖于历史信息,在本示例中需要获得前p个异构构件的参数编号。因此,在此步骤中,可以使用Fisher Yates随机数表随机地确定参数编号x1,x2,…xp,然而应当理解这里还可以采用其他方式来确定初始的参数编号。

根据本发明的一个实施例,采用Fisher Yates随机数表随机地确定参数编号x1,x2,…xp。采用此种方式的优点在于,不需要像采用其他随机数生成器一样依靠已知的数字序列,按某种规律生成,可以直接利用随机数表生成随机数。具体做法如下:

i)确定随机数表号(随机数表中的副表号,共5个副表)与初始点:首先在第一张副表上随机指定一个数字,以它为起点依次向右读取5个数字(第1位:副表号,第2~3位:初始点所在的行数,第4~5位:初始点所在的列数),第一个数字若小于5(副表总数为5),则取该数作为选定的随机数表号,若第一个数字大于或等于5,则将该数减去4,得到随机数表副表号,第2~3位和4~5位组成两个两位数,若两位数小于50,则加上1,若两位数大于50(副表中的行数和列数都为50),则减去49,最后所得的数表示初始点所在的行数和列数。

ii)获得x1,x2,…xp:找到初始点,并依次向下读取p位数得到所需的随机数。在读取的过程中,若读到该页的最后一行则转到第一行依次读取后p列,若最后剩下的几列不足p列则从下一号表的第一列开始依次补上。

最后,基于获得的x1,x2,...xp以及进位加发生器的以下随机数生成规则计算针对其余异构构件的参数编号,以将针对各个异构构件所获得的参数编号作为针对所述异构构件的随机数:

xi=(xi-p+xi-q+ci-1)modK,(i=p+1,p+2,...),

其中,ci-1为进位加发生器针对第i-1个异构构件的进位,初始的进位cp=0,对于其他的进位,若xi-p+xi-q+ci-1≥K,则ci=1,否则ci=0。

由此,可以基于进位加发生器,获得针对每一个异构构件的随机数xi。为了方便表述,这里将进位写在xi的右上角,则可以得到的异构构件的参数编号如下所示:

在本发明中,可以设置随机数取值与进程参数之间的映射关系,根据该映射关系将与所述随机数对应的进程参数作为针对所述异构构件的进程参数。

通过上述基于进位加发生器的随机选择算法,可以为每个异构构件设置进程参数,该设定过程的最大周期是Kp+Kq-2。相较于常用的随机选择方式,其产生的随机序列的周期很长,难以预测规律性,同时由于它没有乘法运算,故产生随机参数编号的速度很快,尤其有利于实现本发明的针对操作系统的执行体的调度。

步骤2.2.将设置有进程参数的异构构件作为一个执行体,获得用于实现所述任务的执行体的集合。

通过上述步骤2.1,可以获得可被用于实现同一个任务、并且被配置了不同进程参数的许多异构构件。例如,配置了不同带宽、信道、使用功率、时延的TCP/IP进程以及配置了不同带宽、信道、使用功率、时延的UDP进程,这里可以将它们分别作为用于实现所述任务的一个执行体,以构成执行体的集合。

在获得了用于实现所述任务的执行体的集合之后,便完成了对动态异构冗余架构的构建过程,系统可以在执行所述任务时从执行体的集合中选择一个以作为所使用的进程。

可以理解的是,对于一些常用的、或是被频繁地执行的任务而言,也可以在实施了上述步骤1和2所提供的方案之后,反复地使用该动态异构冗余架构,以节省系统资源。

下面将参考图4,介绍根据本发明的一个实施例,基于通过上述方法获得的动态异构冗余架构来实现对操作系统的主动防御的方法,包括:

步骤A1.确定与操作系统当前需要执行的任务对应的执行体的集合。

如前文中所述,操作系统可以根据任务是否被频繁地执行来进行区分,例如若任务的执行频率超过设定的阈值则可以在确定了与该任务对应的执行体的集合之后多次使用相同的集合,而对于执行频率不超过所述阈值的任务则每次在需要执行所述任务之前实施如前述实施例中的步骤1和步骤2以在线地获得针对所述任务的执行体的集合。当然,对于系统资源没有限制等应用场景下,还可以无差别地针对每个任务在被执行之前实施如前述实施例中的步骤1和步骤2。

步骤A2.采用随机算法从所述执行体的集合中选择一个执行体作为用于执行所述任务的进程。

与前文中类似地,本发明优选采用具有较长周期的随机算法。例如,根据被选择用于执行所述任务的执行体的历史信息,基于进位加发生器的随机选择算法选择当前用于执行所述任务的执行体。

根据本发明的一个实施例,基于进位加发生器的随机选择算法选择当前用于执行所述任务的执行体,包括:

首先,根据与所述任务对应的执行体的集合中执行体的总数N以及对随机数周期的需要,确定针对进位加发生器的第一延迟因子m、以及第二延迟因子n,m>n。

随后,确定前m次被选择用于执行所述任务的执行体的历史信息y1,y2,...ym,其中yk表示第k次被选择用于执行所述任务的执行体的编号,k=1,2,…m。可以理解,这里的前m次的历史信息既可以是真实的信息,也可以是采用任意随机算法而获得的。这是由于y1,y2,...ym仅被用于使得进位加发生器能够正常工作,无论是否采用真实的历史信息,均不会影响进位加发生器的正常工作。因此,在此步骤中同样可以采用Fisher Yates随机数表随机地确定y1,y2,...ym。

最后,基于获得的y1,y2,...ym以及进位加发生器的以下随机数生成规则计算当前第i个所选择的用于执行所述任务的执行体的编号yi:

yi=(yi-m+yi-n+ci-1)modN,(i=m+1,m+2,...),

其中,ci-1为进位加发生器针对第i-1个异构构件的进位,设置初始的进位cm=0,若yi-m+yi-n+ci-1≥N,则ci=1,否则ci=0。

可以看出,通过本发明的上述实施例,提供了一种具体的动态异构冗余架构的实现方法。其针对操作系统中的任务,对用于完成所述任务的进程进行差异化处理,以作为动态异构冗余架构的执行体,通过调度执行体作为完成所述任务的进程来实现主动防御。

为了验证本发明的效果,发明人还做了仿真实验,仿真所使用的参数详见表1。

表1仿真参数

在建立异构元素池时,共准备了n=20个尚未设定进程参数的异构构件,分别表示为E1,E2…E20。为待选的5个参数进行编号,分别为0,1,2,3,4。同时,确定延迟因子p=4和q=2,并令c4=0,这意味着第五个异构构件的参数编号是由进位加发生器生成的,之前四个个异构构件的参数编号需要由随机数表生成。使用Fisher Yates随机数表,抽出4个随机数1,8,0,9,由于待选参数总数K=5,故凡是抽到大于等于5的数都要减去5,得到随机选择的4个参数编号即x1到x4分别为1,3,0,4。由此可以确定,前四个异构构件对应的参数编号分别为1,3,0,4。

基于所述获得的x1到x4,使用进位加发生器采用下式计算x5到x20:

xi=(xi-4+xi-2+ci-1)mod5,(i=5,6,...20),

得到为各个异构构件随机选择的参数编号x1到x20分别为:

1,3,0,40,10,21,20,11,40,30,11,01,11,40,20,40,30,31,11,31

表示为第5个异构构件选择与编号1对应的进程参数,为第6个异构构件选择与编号2对应的进程参数,依次类推。

以10个执行体为例,其分别被编号为1,2,…10号执行体,每个执行体作为操作系统的一个进程可以等价地完成同一项任务。在调用执行体以作为完成所述任务所使用的进程时,确定延迟因子m=10和n=2,并令c10=0。接着,使用Fisher Yates随机数表,得到10个随机数,由于随机数取值范围为0~9,正好与执行体的编号范围一致,故可根据得到的随机数直接确定待选执行体的编号y1到y10分别为8,3,4,8,6,2,3,8,5,3,表示在第1个时刻选择编号为8的执行体来执行任务,在第2个时刻选择编号为3的执行体来执行任务,以此类推。

然后,使用进位加发生器确定y11,y12...:

yi=(yi-10+yi-2+ci-1)mod10,(i=11,12,...),

得到执行任务的执行体顺序为随机选择的执行体编号:

8,3,4,8,6,2,3,8,5,30,31,70,70,51,41,80,70,61,31,01...

表示第11个时刻随机选择3号执行体来执行任务,第12个时刻随机选择7号执行体来执行任务,……

图5示出了在单次实验时(即仅执行一次步骤2.1)用于进位加发生器作为异构构件x1到x4所选择的参数编号的各种可能的取值(即0到4)被选择的频率。在递推初始参数x1到x4不同的情况下,各个待选参数被选择的频率存在非常大的差异,使得为异构构件所配置的参数无法被预测。

在执行仿真时,还对根据本发明的方案所或的执行体调度了100000次(即执行步骤2.1 100000次,每次获得的递推初始参数x1到x4不相同),并统计了每个执行体被选择的频率,在这100000次调度过程中,每次的递推初始参数都是随机的。参考图6,当调度次数足够多时,每个agent被选到的频率几乎相等,这说明攻击者无法通过只攻击某个较容易被选中的执行体来达到有效攻击的目的。

基于本发明的上述实施例,提出了一种具体的基于DHR架构的针对操作系统的执行体随机调度方法。其将异构元素池中的每个异构构件以一个普通进程的方式来实现,通过随机地为这些非核心构件配置等参数,使得各个构件之间存在差异。通过这样的方式,为操作系统提供了性能正常且可以正常使用的执行体,各个执行体之间彼此存在的差异并不会影响最终获得的构件的正常运行。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1