本发明涉及网络安全技术领域,尤其涉及一种异构编译算法可行性评估方法及系统。
背景技术:
随着国家对网络空间安全的越发重视,更多的安全防御技术逐渐崭露头角。作为一种创新型安全防御技术,网络空间拟态防御技术采用“动态异构冗余”(dhr,dynamicheterogeneousredundancy)的核心架构,在保证各执行体在功能等价和计算结果大概率是正确的前提下,降低系统因设计缺陷(或不希望的多余功能或“暗功能”)而出现共模故障的概率,进一步提高系统的安全性。
拟态构造的web服务器作为拟态防御技术的典型工程实现,其包含着一定数量的异构web服务执行体。通常情况下,这些执行体采用不同厂商、不同版本型号的cots级组件或者借助多样化编译算法来实现自身的异构性和冗余性。例如,在服务器软件层面,拟态构造的web服务器采用了nginx、apache、lighttpd以及iis等多种容器组件来实现异构性。此外,如果执行体池中服务器软件存在一定的重复性,将进一步借助多样化编译的方法来保障异构性。
然而,多样化编译算法作为软件多样性的一种实现方式,其主要目的是尽最大的可能改变软件自身的结构特性以增加攻击者逆向成功的概率,实际不曾考虑复杂的软件结构对软件运行性能的影响。而在现网环境下,不仅要重视拟态构造的web服务器带来的安全增益,同时也要保障其自身的运行性能。
因此,如何有效的对异构编译算法的可行性进行评估,是一项亟待解决的问题。
技术实现要素:
有鉴于此,本发明提供了一种异构编译算法可行性评估方法,能够通过量化系统中服务器软件的异构性,以及多样化编译前后服务器软件的性能损耗值,定量地评估每种异构软件编译算法所能产生的实际效益,为进一步选择异构服务器软件组建拟态构造的web服务器提供了数据支撑。
本发明提供了一种异构编译算法可行性评估方法,包括:
确定异构服务器软件的异构性;
确定异构服务器软件的性能损耗值;
基于所述性能损耗值与所述异构性的比值计算得到异构服务器软件的异构费效比;
基于所述异构费效比得出异构编译算法可行性的评估结果。
优选地,所述确定异构服务器软件的异构性包括:
计算异构服务器软件的复杂性;
计算异构服务器软件的差异性;
根据公式
优选地,所述计算异构服务器软件的复杂性,包括:
构造复杂性指标矢量
对复杂性指标进行主成分分析,得到每个复杂性指标的计算权重
根据公式
优选地,所述计算异构服务器软件的差异性包括:
计算异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性edai;
对异构服务器软件ei和未异构服务器软件e0之间的二进制文件进行差异性评估,得到评估结果edbi;
根据公式edi=μ1·edai+μ2·edbi,采用加权计算的方式对异构服务器软件ei和未异构服务器软件e0的差异性进行量化,得到异构服务器软件的差异性edi,其中,μ1和μ2为设定的权值。
优选地,所述确定异构服务器软件的性能损耗值包括:
根据公式
一种异构编译算法可行性评估系统,包括:
第一确定模块,用于确定异构服务器软件的异构性;
第二确定模块,用于确定异构服务器软件的性能损耗值;
计算模块,用于基于所述性能损耗值与所述异构性的比值计算得到异构服务器软件的异构费效比;
评估模块,用于基于所述异构费效比得出异构编译算法可行性的评估结果。
优选地,所述第一确定模块包括:
第一计算单元,用于计算异构服务器软件的复杂性;
第二计算单元,用于计算异构服务器软件的差异性;
第三计算单元,用于根据公式
优选地,所述第一计算单元具体用于:
构造复杂性指标矢量
对复杂性指标进行主成分分析,得到每个复杂性指标的计算权重
根据公式
优选地,所述第二计算单元具体用于:
计算异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性edai;
对异构服务器软件ei和未异构服务器软件e0之间的二进制文件进行差异性评估,得到评估结果edbi;
根据公式edi=μ1·edai+μ2·edbi,采用加权计算的方式对异构服务器软件ei和未异构服务器软件e0的差异性进行量化,得到异构服务器软件的差异性edi,其中,μ1和μ2为设定的权值。
优选地,所述第二确定模块具体用于:
根据公式
综上所述,本发明公开了一种异构编译算法可行性评估方法,当需要对异构编译算法可行性进行评估时,首先确定异构服务器软件的异构性,确定异构服务器软件的性能损耗值;然后基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比,基于异构费效比得出异构编译算法可行性的评估结果。本发明能够通过量化系统中服务器软件的异构性,以及多样化编译前后服务器软件的性能损耗值,定量地评估每种异构软件编译算法所能产生的实际效益,为进一步选择异构服务器软件组建拟态构造的web服务器提供了数据支撑。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种异构编译算法可行性评估方法实施例1的方法流程图;
图2为本发明公开的一种异构编译算法可行性评估方法实施例2的方法流程图;
图3为本发明公开的一种异构编译算法可行性评估系统实施例1的结构示意图;
图4为本发明公开的一种异构编译算法可行性评估系统实施例21的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种异构编译算法可行性评估方法实施例1的方法流程图,所述方法可以包括以下步骤:
s101、确定异构服务器软件的异构性;
当需要对异构编译算法可行性进行评估时,首先量化异构服务器软件的异构性ehi。
s102、确定异构服务器软件的性能损耗值;
同时,量化多样化编译前后服务器软件的性能损耗值psri。
s103、基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比;
在确定出异构服务器软件的异构性ehi和异构服务器软件的性能损耗值psri后,根据公式hproi=psri/ehi计算得到异构服务器软件的异构费效比hproi。
s104、基于异构费效比得出异构编译算法可行性的评估结果。
按照性能损耗值psri和异构性ehi的取值状态,服务器软件的异构费效比呈现三种极端状态。当psri=0但ehi≠0时,hproi=0,本发明称之为正极态;当psri≠0但ehi=0时,hproi→∞,本发明称之为负极态;当psri=0但ehi=0时,本发明称之为无效态。
当异构费效比处于正极态时,表示该异构服务器软件对应的编译算法在实际应用中能够产生极高的效益,比较适合用于生成拟态构造web服务器中的异构执行体。当异构费效比处于负极态时,表示该异构服务器软件对应的编译算法在实际应用中产生的效益极低,不适合用于生成拟态构造web服务器中的异构执行体。此外,在构造异构web服务执行体时,应偏向于正极态与无效态之间对应的编译算法。
另外,对于两个异构服务器软件ei和ej,如果存在前提条件psri=psrj,那么hproi与hproj相差越大,则异构服务器软件ei和ej之间的异构性越大。此时,对应的两种编译算法更适合为不同的执行体池构造异构web服务执行体。
综上所述,在上述实施例中,当需要对异构编译算法可行性进行评估时,首先确定异构服务器软件的异构性,确定异构服务器软件的性能损耗值;然后基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比,基于异构费效比得出异构编译算法可行性的评估结果。能够通过量化系统中服务器软件的异构性,以及多样化编译前后服务器软件的性能损耗值,定量地评估每种异构软件编译算法所能产生的实际效益,为进一步选择异构服务器软件组建拟态构造的web服务器提供了数据支撑。
如图2所示,为本发明公开的一种异构编译算法可行性评估方法实施例2的方法流程图,所述方法可以包括以下步骤:
s201、计算异构服务器软件的复杂性;
当需要对异构编译算法可行性进行评估时,首先计算异构服务器软件的复杂性eci。在计算异构服务器软件的复杂性eci时,本发明首先通过选取程序容量、jcc指令数量、call指令数量、控制流基本块数量、边数量以及圈复杂性等指标构造复杂性指标矢量,记作
s202、计算异构服务器软件的差异性;
然后,计算异构服务器软件的差异性edi。在计算异构服务器软件的差异性edi时,本发明基于软件二进制文件和软件所用编译算法两个方面的差异性进行量化。不同的二进制文件意味着攻击者逆向操作的不一致性,不同的编译算法给软件提供的异构也可能体现在不同层面。结合攻击和自身两个角度,能够比较全面的说明异构服务器软件之间的差异性。
其中,对于编译算法差异性而言,对于给定的服务器软件,在进行多样化编译时可以采用一种或者多种多样化编译算法组合后的算法进行异构,将异构服务器软件ei采用的编译算法形式化表示为编译算法矢量
若aij=1,则意味着在对应用程序进行多样化编译过程中采用了编译算法ρj,反之,若aij=0,则意味着未采用编译算法ρj。在服务器软件之间编译算法差异性的计算过程中,ai,(i=0,1,…,n)可作为每个软件的特征矢量进行计算。
本发明基于服务器软件之间编译算法矢量的余弦相似度来衡量其编译算法差异性,而且主要针对异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性进行量化。
假设每种编译算法给软件提供的复杂性保持稳定值,且相互之间互不干扰,则具体的计算公式如下所示:
其中,edai是异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性,且0≤edai≤1。
进一步地,本发明借助反汇编工具ida与bindiff对异构服务器软件ei和未异构服务器软件e0之间的二进制文件进行差异性评估,并将评估结果记作edbi。
最终,根据公式edi=μ1·edai+μ2·edbi,采用加权计算的方式对异构服务器软件ei和未异构服务器软件e0的差异性进行量化,得到异构服务器软件的差异性edi,其中,μ1和μ2为设定的权值,权值可以设定为μ1=0.17,μ2=0.83,且0≤edi≤1。
s203、根据公式
在计算出异构服务器软件的复杂性eci和异构服务器软件的差异性edi后,根据公式
s204、根据公
为了更好地评估服务器软件经过多样化编译之后的性能变化,本发明提出了软件性能损耗值的概念。以服务器软件的未异构版本为基准,计算每个多样化编译后的服务器软件的性能损耗。为了降低各性能指标的分布对性能损耗值计算结果的影响,本发明采用标准化欧氏距离对异构服务器软件的性能损耗值进行量化。异构服务器软件ei的性能损耗值的计算公式如下所示:
其中,psri是异构服务器软件ei的性能损耗值,
s205、基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比;
在确定出异构服务器软件的异构性ehi和异构服务器软件的性能损耗值psri后,根据公式hproi=psri/ehi计算得到异构服务器软件的异构费效比hproi。
s206、基于异构费效比得出异构编译算法可行性的评估结果。
按照性能损耗值psri和异构性ehi的取值状态,服务器软件的异构费效比呈现三种极端状态。当psri=0但ehi≠0时,hproi=0,本发明称之为正极态;当psri≠0但ehi=0时,hproi→∞,本发明称之为负极态;当psri=0但ehi=0时,本发明称之为无效态。
当异构费效比处于正极态时,表示该异构服务器软件对应的编译算法在实际应用中能够产生极高的效益,比较适合用于生成拟态构造web服务器中的异构执行体。当异构费效比处于负极态时,表示该异构服务器软件对应的编译算法在实际应用中产生的效益极低,不适合用于生成拟态构造web服务器中的异构执行体。此外,在构造异构web服务执行体时,应偏向于正极态与无效态之间对应的编译算法。
另外,对于两个异构服务器软件ei和ej,如果存在前提条件psri=psrj,那么hproi与hproj相差越大,则异构服务器软件ei和ej之间的异构性越大。此时,对应的两种编译算法更适合为不同的执行体池构造异构web服务执行体。
在具体的应用中,本发明根据异构软件的异构费效比划分不同的阶段。当异构费效比数值处在0~2范围内时,认为异构服务器软件处于正常状态,对应的多样化编译算法可用于构建异构web服务执行体;当异构费效比数值处在2~4范围内时,认为异构服务器软件处于不稳定状态;当异构费效比数值处在4以上时,认为异构服务器软件处于不可用状态,对应的多样化编译算法不能用于构建异构web服务执行体,会严重影响拟态构造的web服务器的性能,同时响应超时会导致系统产生较多的误报,对系统的表决机制造成了一定的干扰。
综上所述,本发明通过对编译后软件的异构性以及性能损耗值进行量化,对编译算法的异构费效比进行计算,最后提出异构费效比的计算公式,能够直观地评估多样化编译策略产生的实际效益,同时具有一定的通用性,不仅可以应用于拟态构造的web服务器,而且也可以应用于其他具备异构冗余特性的安全系统。
如图3所示,为本发明公开的一种异构编译算法可行性评估系统实施例1的结构示意图,所述系统可以包括:
第一确定模块301,用于确定异构服务器软件的异构性;
当需要对异构编译算法可行性进行评估时,首先量化异构服务器软件的异构性ehi。
第二确定模块302,用于确定异构服务器软件的性能损耗值;
同时,量化多样化编译前后服务器软件的性能损耗值psri。
计算模块303,用于基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比;
在确定出异构服务器软件的异构性ehi和异构服务器软件的性能损耗值psri后,根据公式hproi=psri/ehi计算得到异构服务器软件的异构费效比hproi。
评估模块304,用于基于异构费效比得出异构编译算法可行性的评估结果。
按照性能损耗值psri和异构性ehi的取值状态,服务器软件的异构费效比呈现三种极端状态。当psri=0但ehi≠0时,hproi=0,本发明称之为正极态;当psri≠0但ehi=0时,hproi→∞,本发明称之为负极态;当psri=0但ehi=0时,本发明称之为无效态。
当异构费效比处于正极态时,表示该异构服务器软件对应的编译算法在实际应用中能够产生极高的效益,比较适合用于生成拟态构造web服务器中的异构执行体。当异构费效比处于负极态时,表示该异构服务器软件对应的编译算法在实际应用中产生的效益极低,不适合用于生成拟态构造web服务器中的异构执行体。此外,在构造异构web服务执行体时,应偏向于正极态与无效态之间对应的编译算法。
另外,对于两个异构服务器软件ei和ej,如果存在前提条件psri=psrj,那么hproi与hproj相差越大,则异构服务器软件ei和ej之间的异构性越大。此时,对应的两种编译算法更适合为不同的执行体池构造异构web服务执行体。
综上所述,在上述实施例中,当需要对异构编译算法可行性进行评估时,首先确定异构服务器软件的异构性,确定异构服务器软件的性能损耗值;然后基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比,基于异构费效比得出异构编译算法可行性的评估结果。能够通过量化系统中服务器软件的异构性,以及多样化编译前后服务器软件的性能损耗值,定量地评估每种异构软件编译算法所能产生的实际效益,为进一步选择异构服务器软件组建拟态构造的web服务器提供了数据支撑。
如图4所示,为本发明公开的一种异构编译算法可行性评估系统实施例2的结构示意图,所述系统可以包括:
第一计算单元401,用于计算异构服务器软件的复杂性;
当需要对异构编译算法可行性进行评估时,首先计算异构服务器软件的复杂性eci。在计算异构服务器软件的复杂性eci时,本发明首先通过选取程序容量、jcc指令数量、call指令数量、控制流基本块数量、边数量以及圈复杂性等指标构造复杂性指标矢量,记作
第二计算单元402,用于计算异构服务器软件的差异性;
然后,计算异构服务器软件的差异性edi。在计算异构服务器软件的差异性edi时,本发明基于软件二进制文件和软件所用编译算法两个方面的差异性进行量化。不同的二进制文件意味着攻击者逆向操作的不一致性,不同的编译算法给软件提供的异构也可能体现在不同层面。结合攻击和自身两个角度,能够比较全面的说明异构服务器软件之间的差异性。
其中,对于编译算法差异性而言,对于给定的服务器软件,在进行多样化编译时可以采用一种或者多种多样化编译算法组合后的算法进行异构,将异构服务器软件ei采用的编译算法形式化表示为编译算法矢量
若aij=1,则意味着在对应用程序进行多样化编译过程中采用了编译算法ρj,反之,若aij=0,则意味着未采用编译算法ρj。在服务器软件之间编译算法差异性的计算过程中,ai,(i=0,1,…,n)可作为每个软件的特征矢量进行计算。
本发明基于服务器软件之间编译算法矢量的余弦相似度来衡量其编译算法差异性,而且主要针对异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性进行量化。
假设每种编译算法给软件提供的复杂性保持稳定值,且相互之间互不干扰,则具体的计算公式如下所示:
其中,edai是异构服务器软件ei和未异构服务器软件e0之间的编译算法差异性,且0≤edai≤1。
进一步地,本发明借助反汇编工具ida与bindiff对异构服务器软件ei和未异构服务器软件e0之间的二进制文件进行差异性评估,并将评估结果记作edbi。
最终,根据公式edi=μ1·edai+μ2·edbi,采用加权计算的方式对异构服务器软件ei和未异构服务器软件e0的差异性进行量化,得到异构服务器软件的差异性edi,其中,μ1和μ2为设定的权值,权值可以设定为μ1=0.17,μ2=0.83,且0≤edi≤1。
第三计算单元403,用于根据公式
在计算出异构服务器软件的复杂性eci和异构服务器软件的差异性edi后,根据公式
第二确定模块404,用于根据公
为了更好地评估服务器软件经过多样化编译之后的性能变化,本发明提出了软件性能损耗值的概念。以服务器软件的未异构版本为基准,计算每个多样化编译后的服务器软件的性能损耗。为了降低各性能指标的分布对性能损耗值计算结果的影响,本发明采用标准化欧氏距离对异构服务器软件的性能损耗值进行量化。异构服务器软件ei的性能损耗值的计算公式如下所示:
其中,psri是异构服务器软件ei的性能损耗值,
计算模块405,用于基于性能损耗值与异构性的比值计算得到异构服务器软件的异构费效比;
在确定出异构服务器软件的异构性ehi和异构服务器软件的性能损耗值psri后,根据公式hproi=psri/ehi计算得到异构服务器软件的异构费效比hproi。
评估模块406,用于基于异构费效比得出异构编译算法可行性的评估结果。
按照性能损耗值psri和异构性ehi的取值状态,服务器软件的异构费效比呈现三种极端状态。当psri=0但ehi≠0时,hproi=0,本发明称之为正极态;当psri≠0但ehi=0时,hproi→∞,本发明称之为负极态;当psri=0但ehi=0时,本发明称之为无效态。
当异构费效比处于正极态时,表示该异构服务器软件对应的编译算法在实际应用中能够产生极高的效益,比较适合用于生成拟态构造web服务器中的异构执行体。当异构费效比处于负极态时,表示该异构服务器软件对应的编译算法在实际应用中产生的效益极低,不适合用于生成拟态构造web服务器中的异构执行体。此外,在构造异构web服务执行体时,应偏向于正极态与无效态之间对应的编译算法。
另外,对于两个异构服务器软件ei和ej,如果存在前提条件psri=psrj,那么hproi与hproj相差越大,则异构服务器软件ei和ej之间的异构性越大。此时,对应的两种编译算法更适合为不同的执行体池构造异构web服务执行体。
在具体的应用中,本发明根据异构软件的异构费效比划分不同的阶段。当异构费效比数值处在0~2范围内时,认为异构服务器软件处于正常状态,对应的多样化编译算法可用于构建异构web服务执行体;当异构费效比数值处在2~4范围内时,认为异构服务器软件处于不稳定状态;当异构费效比数值处在4以上时,认为异构服务器软件处于不可用状态,对应的多样化编译算法不能用于构建异构web服务执行体,会严重影响拟态构造的web服务器的性能,同时响应超时会导致系统产生较多的误报,对系统的表决机制造成了一定的干扰。
综上所述,本发明通过对编译后软件的异构性以及性能损耗值进行量化,对编译算法的异构费效比进行计算,最后提出异构费效比的计算公式,能够直观地评估多样化编译策略产生的实际效益,同时具有一定的通用性,不仅可以应用于拟态构造的web服务器,而且也可以应用于其他具备异构冗余特性的安全系统。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。