CN111338942B - 一种软件多样性的评估方法及系统 - Google Patents

一种软件多样性的评估方法及系统 Download PDF

Info

Publication number
CN111338942B
CN111338942B CN202010107522.7A CN202010107522A CN111338942B CN 111338942 B CN111338942 B CN 111338942B CN 202010107522 A CN202010107522 A CN 202010107522A CN 111338942 B CN111338942 B CN 111338942B
Authority
CN
China
Prior art keywords
software
attribute
complexity
weight
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010107522.7A
Other languages
English (en)
Other versions
CN111338942A (zh
Inventor
韩首魁
张高举
李昂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Angshi Information Technology Co ltd
Original Assignee
Zhengzhou Angshi Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Angshi Information Technology Co ltd filed Critical Zhengzhou Angshi Information Technology Co ltd
Priority to CN202010107522.7A priority Critical patent/CN111338942B/zh
Publication of CN111338942A publication Critical patent/CN111338942A/zh
Application granted granted Critical
Publication of CN111338942B publication Critical patent/CN111338942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种软件多样性的评估方法及系统,方法包括:确定N个度量指标,其中,N大于等于1;建立度量值矩阵,建立归一化矩阵;计算软件复杂度属性的信息熵及发散度;基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;基于第i个软件复杂度属性的权重,计算软件多样性。本发明能够基于信息熵和软件复杂度对软件的多样性进行评估。

Description

一种软件多样性的评估方法及系统
技术领域
本发明涉及网络安全技术领域,尤其涉及一种软件多样性的评估方法及系统。
背景技术
类似于动植物的多样性,软件多样性可以加强软件生态系统的安全性。软件多样性使得攻击者对目标难以预测,从而使得攻击者难以获得所需的恶意行为。大多数多样化软件是由不同的开发人员组独立开发的,因此不太可能引入相同的错误以及漏洞。由于云计算服务发展迅速,以及多核处理器的普及,采用软件多样化技术对软件实施防护也比较经济和现实。软件多样化旨在扩大攻击面,可以为MTDmoving target defense,移动目标防御技术)、CMD(cyberspace mimic defense,网络空间拟态防御技术)等主动防御技术提供有力的支撑。软件多样化技术引入了攻击目标的不确定性,提供了概率保护,是一种较为有效防御攻击的软件保护技术。
通常来说,软件多样性越强,系统安全性也就越大。然而目前缺乏量化与分析软件多样性的适当方法及相应的理论支撑,难以进一步通过正比例关系评估软件多样性提升的安全效果。同时难以在工程实践中指导软件部署工作,以较低的成本达到较大的多样性进而得到较高的安全性,因此需要对软件多样性有更为客观的评估准则和模型。在所有软件多样性的评估研究中,香农-维纳(Shannon-Wiener)多样性指数被运用得最为广泛,与信息理论中熵的概念密切相关。
准则的重要性是对评估人员的主观偏好以及准则本身的客观特征的反映。现有工作主要从单一软件复杂度属性指标的量化评估出发,缺乏对不同多样化方法之间综合、客观的评价体系和准则,难以运用到工程实践中对多样化方法的比较选择与多样化软件的部署提供指导。
因此,如何有效的对软件的多样性进行评估,是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种软件多样性的评估方法,能够基于信息熵和软件复杂度对软件的多样性进行评估。
本发明提供了一种软件多样性的评估方法,包括:
确定N个度量指标,其中,N大于等于1;
建立度量值矩阵;
建立归一化矩阵;
计算软件复杂度属性的信息熵及发散度;
基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
基于第i个软件复杂度属性的权重,计算软件多样性。
优选地,所述度量指标包括:程序长度μ1、循环复杂度μ2、扇入复杂度μ3、扇出复杂度μ4、数据结构复杂度μ5
优选地,所述计算软件复杂度属性的信息熵及发散度包括:
基于公式
Figure BDA0002388901660000021
计算属性μi的信息熵ei,每个软件复杂度属性的发散度di则可计算为di=1-ei,其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例。
优选地,所述基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重,包括:
根据软件复杂度属性μi的发散度di,计算得到第i个软件复杂度属性的客观权重为:
Figure BDA0002388901660000022
将用于调节多样性的主观权重ωsi和数学计算得到的客观权重相结合,基于公式ωi=λωsi+(1-λ)ωoi,λ∈[0,1]计算出第i个软件复杂度属性的权重ωi,其中,参数λ用来平衡主观权重和客观权重的比例。
优选地,所述基于第i个软件复杂度属性的权重,计算软件多样性包括:
基于公式
Figure BDA0002388901660000031
计算软件多样性。
一种软件多样性的评估系统,包括:
确定模块,用于确定N个度量指标,其中,N大于等于1;
第一建立模块,用于建立度量值矩阵;
第二建立模块,用于建立归一化矩阵;
第一计算模块,用于计算软件复杂度属性的信息熵及发散度;
第二计算模块,用于基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
第三计算模块,用于基于第i个软件复杂度属性的权重,计算软件多样性。
优选地,所述度量指标包括:程序长度μ1、循环复杂度μ2、扇入复杂度μ3、扇出复杂度μ4、数据结构复杂度μ5
优选地,所述第一计算模块具体用于:
基于公式
Figure BDA0002388901660000032
计算属性μi的信息熵ei,每个软件复杂度属性的发散度di则可计算为di=1-ei,其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例。
优选地,所述第二计算模块具体用于:
根据软件复杂度属性μi的发散度di,计算得到第i个软件复杂度属性的客观权重为:
Figure BDA0002388901660000033
将用于调节多样性的主观权重ωsi和数学计算得到的客观权重相结合,基于公式ωi=λωsi+(1-λ)ωoi,λ∈[0,1]计算出第i个软件复杂度属性的权重ωi,其中,参数λ用来平衡主观权重和客观权重的比例。
优选地,所述第三计算模块具体用于:
基于公式
Figure BDA0002388901660000041
计算软件多样性。
综上所述,本发明公开了一种软件多样性的评估方法,当需要对软件的多样性进行评估时,首先确定N个度量指标,其中,N大于等于1,建立度量值矩阵,建立归一化矩阵,然后计算软件复杂度属性的信息熵及发散度,基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重,基于第i个软件复杂度属性的权重,计算软件多样性。本发明能够基于信息熵和软件复杂度对软件的多样性进行评估。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种软件多样性的评估方法实施例1的方法流程图;
图2为本发明公开的一种软件多样性的评估系统实施例1的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实现需要挑选合适的评估指标,为了保证软件安全及追求软件部署成本较低,软件开发者应该选择合适的软件多样化方法。针对软件复杂度强度评估,可以提取相应的程序属性来衡量有效性。在软件编写过程中应尽量减小这些属性值,而在软件多样化过程中则应追求尽量增大这些属性值。
本发明为了较为全面地从不同角度度量软件多样性,并且根据反汇编工具实际功能采用衡量软件复杂性的度量指标如下:
(1)程序长度μ1
程序长度μ1是源代码中运算符和操作数的数量,直接与程序的代码长度相关联,随着程序中运算符和操作数的增加而增加。
(2)循环复杂度μ2
程序的控制流程被转换为有向图。程序复杂度通过在强连通图中计算线性无关路径的数量来测量。记控制流循环复杂度为V(G),根据程序相关的控制流图(CFG,controlflowgraph)给出控制流循环复杂度计算公式为:
V(G)=e-n+2 (1)
其中e代表控制流图CFG中边的数量,n是控制流图CFG中的顶点数。
(3)扇入复杂度μ3和扇出复杂度μ4
扇入复杂度μ3和扇出复杂度μ4随着形式参数的数量增加而增加,也随着读取或写入的全局数据结构的数量增加而增加。模块M的扇入μ3指的是进入模块M的数据流之和。模块M的扇出μ4指的是模块M输出的数据流之和。
(4)数据结构复杂度μ5
数据结构复杂度μ5随着程序中声明的静态数据结构的复杂性增加而增加。标量的复杂性不变。数组的复杂性随着维度的增加和元素类型的复杂性增加而增加。记录的复杂性随着字段的数量和复杂性增加而增加。μ5复杂度的常规定义是该变量的维数(如矢量的μ5复杂度为1,矩阵的μ5复杂度为2)。
μ5=L*D (2)
其中L表示数据结构中的条目数,D表示数据结构中的深度。
以上五个不同度量指标相互补充,分别从不同角度对软件的复杂性进行了研究,进而能够全面地体现软件的复杂程度。
进一步的,为便于后续描述,给出本发明所用到的符号定义,其中,μi表示软件复杂度属性,S表示多样化软件集,U表示指标度量值矩阵,Uj表示某一多样化软件的度量值向量,P表示指标度量值的归一化矩阵,ei表示软件复杂度属性的信息熵,di表示软件复杂度属性的发散度,ωoi表示软件复杂度属性的客观权重,ωsi表示软件复杂度属性的主观权重,ωi表示软件复杂度属性的权重,O(j)表示软件多样性度量函数。
由于软件多样性可以由多个软件复杂度综合表示,选取在软件复杂度中常见的静态属性来表征系统特性,作为软件多样性的衡量指标。对于一组功能相近的多样化软件,选取一组特征用于表示某一多样化软件集合。这些可量化的评估指标可通过计算构成一个指标度量值矩阵,进而用来表示一个多样化软件集合。矩阵中每个元素表示某一多样化软件的一个独立特征。
其中,多样化软件集S,是一组可在不改变软件功能的前提下改变软件结构的软件有限集合。功能相同是指对于任意给定的输入完全相同时,所有软件的输出也相同。结构不同是指软件的形态特征存在差异,即对于某一软件适用的漏洞对于其它软件则不适用。常用的软件多样化技术有指令替换(instructions substitution,sub)、控制流扁平化(control flow flattening,fla)、虚假控制流(bogus control flow,bcf)、字符串加密(string obfuscation,sobf)等。
指标度量值矩阵U,由一组可量化评估的指标值组成的向量构成。在描述软件时可以采用多个软件复杂度静态属性指标作为其特征,利用若干个可量化评估的指标来综合反映多样化软件的特征。根据各项评估指标对多样化软件集合进行量化评估,即可得到指标度量值矩阵U。假设选取m个特征来表示由n个软件组成的系统,那么软件集S的指标度量值矩阵可以进一步形式化描述为:
Figure BDA0002388901660000061
其中,μij为表示第i个软件复杂度静态属性下第j个软件的指标值,m为选取作为软件特征的软件复杂度的数量,n则为系统软件集中不同多样化软件的数量。矩阵每一行数字代表在同一特征下不同软件的不同度量值。矩阵每一列代表了同一个软件的度量值向量,某一多样化软件的度量值向量即为:
Uj=(μ1j,…,μmj)T (4)
指标度量值归一化矩阵P,由于不同的软件复杂度具有不同的数据类型,而不同软件复杂度的数据类型存在不同的数据范围。为了便于进行多样性量化评估,本文将对度量值矩阵做规范化处理,针对每个软件复杂度属性,采用线性归一化的方法将不同范围的度量值转换为取值范围都是[0,1]的值。
Figure BDA0002388901660000071
其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例。经过线性归一化处理之后,度量值矩阵被转换为归一化矩阵,矩阵中的每一行值之和为1,pij不全为0且
Figure BDA0002388901660000072
依据上述定义,那么软件集S的指标度量值归一化矩阵可以进一步形式化描述为:
Figure BDA0002388901660000073
信息熵ei,是一个参数。它描述相对于某个属性μi的熵值越大,熵权重越小,则该特定属性μi提供的信息越少,此属性μi在量化评估过程中的重要性就越小。计算信息熵ei的公式可以表示如下:
Figure BDA0002388901660000081
其中,k是一个常数,令
Figure BDA0002388901660000082
以保证每一个信息熵ei的取值范围在[0,1]之间。ei代表第i个软件复杂度属性的信息熵,其含义是所有多样化软件第i个软件复杂度属性值的相似度。
发散度di,每个软件复杂度属性的发散度di则可计算为
di=1-ei (9)
其中,值di表示软件复杂度属性μi的固有对比度强度。软件复杂度属性的度量值之间的差异越大,固有对比度强度di越高,软件复杂度属性对于区分各个多样化软件所起到的作用越大。如果所有多样化软件对该软件复杂度属性都具有相近的评估值,则该软件复杂度属性对于区分各个多样化软件所起到的作用越小。除了信息熵理论外,还有其他方法可以用来确定目标权重,标准偏差方法,平均权重方法。
软件复杂度属性的权重反映了该属性的相对重要性。由于对标准的评估需要有不同的意见和含义,所以不能假设每个评估标准都具有同等的重要性。属性加权方法可以分为主观和客观两类方法。主观加权方法基于评估人员的专业知识和判断力,仅根据评估人员的偏好、经验或判断来确定权重。主观加权方法然后应用一些数学方法,例如特征向量法,加权最小二乘法和数学规划模型,来计算每个评估人员的整体评价。而客观加权方法则基于数学计算,通过自动求解数学模型来确定权重,无需考虑评估人员的偏好,例如采用信息熵理论测量属性的相对对比度强度。
基于上述描述,如图1所示,为本发明公开的一种软件多样性的评估方法实施例1的方法流程图,所述方法可以包括以下步骤:
S101、确定N个度量指标,其中,N大于等于1;
本发明从软件复杂度的角度出发,首先确定若干个度量指标,并根据反汇编工具实际功能采用的指标体系为:程序长度μ1、循环复杂度μ2、扇入复杂度μ3、扇出复杂度μ4、数据结构复杂度μ5
S102、建立度量值矩阵;
然后,利用反汇编工具计算出每一软件对应评估指标的具体数值。每个多样化软件的所有指标值组成一个度量值向量Uj=(μ1j,…,μmj)T,并将一组多样化软件的度量值向量构成指标度量值矩阵U。
S103、建立归一化矩阵;
计算各度量值在所在类指标的度量值中占据的比例,将指标度量值矩阵U处理转换为指标度量值归一化矩阵P。
S104、计算软件复杂度属性的信息熵及发散度;
将指标度量值矩阵U归一化后,以指标度量值归一化矩阵P的行向量为依据,基于公式
Figure BDA0002388901660000091
逐行计算软件复杂度属性μi的信息熵ei,以及根据公式di=1-ei计算每个软件复杂度属性的发散度di,其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例。
S105、基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
根据软件复杂度属性μi的发散度di,计算得到第i个软件复杂度属性的客观权重为:
Figure BDA0002388901660000092
计算得到的客观权重ωoi越高,软件复杂度属性μi对于软件多样性量化评估就越重要。在基于数学理论计算得到客观权重之后,考虑到评估人员对不同软件复杂度有不同的偏好和重视程度,本文将用于调节多样性的主观权重和数学计算得到的客观权重相结合来共同计算软件复杂度属性μi的权重ωi值。参数λ用来平衡两种权重的比例,λ值越大,评估人员的主观权重影响就越大,计算公式如下:
ωi=λωsi+(1-λ)ωoi,λ∈[0,1] (11)
其中,ωi代表第i个软件复杂度属性的权重。
S106、基于第i个软件复杂度属性的权重,计算软件多样性。
将指标度量值归一化矩阵P中某一软件对应列向量Pj=(p1j,…,pmj)T分别与每个软件复杂度属性的权重相乘并累加求和,得到某一软件的多样性量化评估值,计算公式如下:
Figure BDA0002388901660000101
其中,m为选取系统特征的数量,j为某一多样化软件编号。
为进一步的说明采用本发明所提供的技术方案达到的技术效果,下面采用具体的实例进行说明。
根据上文提出的基于软件复杂度的软件多样性量化评估模型及算法实现,选取冒泡排序(bubblesort)的c语言实现程序作为测试用例,分别利用指令替换(sub)、控制流扁平化(fla)、虚假控制流(bcf)、字符串加密(sobf)等方法对程序进行多样化变换。
采用静态反汇编工具IDAPro对上述代码所生成的二进制文件进行相关评价指标的统计分析,提取程序中的循环复杂度、扇入复杂度、扇出复杂度、数据结构复杂度、指令序列长度作为度量程序的软件复杂度属性指标集。其中,表1所示为冒泡排序属性指标度量值。
表1冒泡排序属性指标度量值
Figure BDA0002388901660000102
Figure BDA0002388901660000111
利用本发明提供的方法量化评估软件多样性如下(以冒泡排序为例):
指标度量值矩阵U为:
Figure BDA0002388901660000112
转换计算指标度量值归一化矩阵P为:
Figure BDA0002388901660000113
计算软件复杂度属性的发散度过程为:
Figure BDA0002388901660000114
Figure BDA0002388901660000115
Figure BDA0002388901660000116
Figure BDA0002388901660000121
Figure BDA0002388901660000122
计算软件复杂度属性的客观权重:
Figure BDA0002388901660000123
Figure BDA0002388901660000124
Figure BDA0002388901660000125
Figure BDA0002388901660000126
Figure BDA0002388901660000127
与原程序相比,多样化方法对度量值不变的软件复杂度属性不敏感。当软件复杂度属性度量值增加的幅度越大或度量值呈现递增的软件复杂度属性越多,则显示该多样化方法的对源程序的多样化程度越强。从上面的客观权重计算结果可以清楚地看出循环复杂度μ2是最重要的标准,扇出复杂度μ4次之。由于扇入复杂度μ3、数据结构复杂度μ5以及指令序列长度μ1没有显著变化,因此在度量软件多样性的时候贡献为0。
假设主观权重为0,即此时权重仅由客观权重确定,即取λ=0,ωi=ωoi。通过本文的方法计算冒泡排序程序集的软件多样性得:
Figure BDA0002388901660000128
Figure BDA0002388901660000131
Figure BDA0002388901660000132
Figure BDA0002388901660000133
Figure BDA0002388901660000134
由以上结果可以看出,控制流扁平化(fla)方法的多样性大于虚假控制流(bcf),虚假控制流(bcf)方法则大于字符串加密(sobf),以及字符串加密(sobf)方法大于指令替换(sub),而指令替换(sub)方法的多样化效果并不明显。可见,本发明提供的方法通过对多个软件复杂度属性指标进行综合,能够针对不同的软件多样化方法进行量化比较,即对于不同的软件多样化方法,能够给出具体的多样化效果评估结果。用本发明提供的方法得到的评估结果具有较明确的区分度,能够更直观地区分若干种多样化软件的多样性,能够对不同软件多样化方法的优劣进行综合评价。
如图2所示,为本发明公开的一种软件多样性的评估系统实施例1的结构示意图,所述系统可以包括:
确定模块201,用于确定N个度量指标,其中,N大于等于1;
第一建立模块202,用于建立度量值矩阵;
第二建立模块203,用于建立归一化矩阵;
第一计算模块204,用于计算软件复杂度属性的信息熵及发散度;
第二计算模块205,用于基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
第三计算模块206,用于基于第i个软件复杂度属性的权重,计算软件多样性。
本实施例提供的软件多样性的评估系统的工作原理与上述软件多样性的评估方法的工作原理相同,在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种软件多样性的评估方法,其特征在于,包括:
确定N个度量指标,其中,N大于等于1,所述度量指标包括:程序长度μ1、循环复杂度μ2、扇入复杂度μ3、扇出复杂度μ4、数据结构复杂度μ5
建立度量值矩阵;
建立归一化矩阵;
基于公式
Figure FDA0003777586870000011
计算属性μi的信息熵ei,每个软件复杂度属性的发散度di则可计算为di=1-ei,其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例;
基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
基于第i个软件复杂度属性的权重,计算软件多样性。
2.根据权利要求1所述的方法,其特征在于,所述基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重,包括:
根据软件复杂度属性μi的发散度di,计算得到第i个软件复杂度属性的客观权重为:
Figure FDA0003777586870000012
将用于调节多样性的主观权重ωsi和数学计算得到的客观权重相结合,基于公式ωi=λωsi+(1-λ)ωoi,λ∈[0,1]计算出第i个软件复杂度属性的权重ωi,其中,参数λ用来平衡主观权重和客观权重的比例。
3.根据权利要求2所述的方法,其特征在于,所述基于第i个软件复杂度属性的权重,计算软件多样性包括:
基于公式
Figure FDA0003777586870000013
计算软件多样性。
4.一种软件多样性的评估系统,其特征在于,包括:
确定模块,用于确定N个度量指标,其中,N大于等于1所述度量指标包括:程序长度μ1、循环复杂度μ2、扇入复杂度μ3、扇出复杂度μ4、数据结构复杂度μ5
第一建立模块,用于建立度量值矩阵;
第二建立模块,用于建立归一化矩阵;
第一计算模块,用于计算软件复杂度属性的信息熵及发散度;
第二计算模块,用于基于确定软件复杂度属性的主观权重和客观权重,计算出第i个软件复杂度属性的权重;
第三计算模块,用于基于第i个软件复杂度属性的权重,计算软件多样性;
所述第一计算模块具体用于:
基于公式
Figure FDA0003777586870000021
计算属性μi的信息熵ei,每个软件复杂度属性的发散度di则可计算为di=1-ei,其中,pij表示第i个软件复杂度静态属性下第j个指标值在同一属性下所占的比例。
5.根据权利要求4所述的系统,其特征在于,所述第二计算模块具体用于:
根据软件复杂度属性μi的发散度di,计算得到第i个软件复杂度属性的客观权重为:
Figure FDA0003777586870000022
将用于调节多样性的主观权重ωsi和数学计算得到的客观权重相结合,基于公式ωi=λωsi+(1-λ)ωoi,λ∈[0,1]计算出第i个软件复杂度属性的权重ωi,其中,参数λ用来平衡主观权重和客观权重的比例。
6.根据权利要求5所述的系统,其特征在于,所述第三计算模块具体用于:
基于公式
Figure FDA0003777586870000023
计算软件多样性。
CN202010107522.7A 2020-02-21 2020-02-21 一种软件多样性的评估方法及系统 Active CN111338942B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010107522.7A CN111338942B (zh) 2020-02-21 2020-02-21 一种软件多样性的评估方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010107522.7A CN111338942B (zh) 2020-02-21 2020-02-21 一种软件多样性的评估方法及系统

Publications (2)

Publication Number Publication Date
CN111338942A CN111338942A (zh) 2020-06-26
CN111338942B true CN111338942B (zh) 2022-09-09

Family

ID=71183999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010107522.7A Active CN111338942B (zh) 2020-02-21 2020-02-21 一种软件多样性的评估方法及系统

Country Status (1)

Country Link
CN (1) CN111338942B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112217838B (zh) * 2020-11-02 2021-08-31 福州大学 一种基于云模型理论的网络攻击面评估方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014121817A1 (en) * 2013-02-05 2014-08-14 Abb Technology Ltd Software diversity for industrial control systems
CN104933369A (zh) * 2015-05-29 2015-09-23 中国石油大学(华东) 一种复杂软件系统可信性评估集成方法
CN107102909A (zh) * 2017-03-17 2017-08-29 北京航空航天大学 一种面向复杂软件密集型系统的故障分类方法
CN108121656A (zh) * 2016-11-30 2018-06-05 西门子公司 一种软件评估方法和装置
CN110113365A (zh) * 2019-06-05 2019-08-09 中国石油大学(华东) 一种用于Web服务的移动目标防御系统协同控制方法
CN110134428A (zh) * 2018-02-09 2019-08-16 中兴通讯股份有限公司 一种安全防护方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019569B2 (en) * 2014-06-27 2018-07-10 Qualcomm Incorporated Dynamic patching for diversity-based software security
US10303861B2 (en) * 2017-01-26 2019-05-28 Immunant, Inc. Software diversification in external contexts

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014121817A1 (en) * 2013-02-05 2014-08-14 Abb Technology Ltd Software diversity for industrial control systems
CN104933369A (zh) * 2015-05-29 2015-09-23 中国石油大学(华东) 一种复杂软件系统可信性评估集成方法
CN108121656A (zh) * 2016-11-30 2018-06-05 西门子公司 一种软件评估方法和装置
CN107102909A (zh) * 2017-03-17 2017-08-29 北京航空航天大学 一种面向复杂软件密集型系统的故障分类方法
CN110134428A (zh) * 2018-02-09 2019-08-16 中兴通讯股份有限公司 一种安全防护方法及装置
CN110113365A (zh) * 2019-06-05 2019-08-09 中国石油大学(华东) 一种用于Web服务的移动目标防御系统协同控制方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Evaluating Software Diversity in Branch Prediction Analyses for static WCET Estimation;Joachim Fellmuth;《2019 IEEE 25th International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA)》;20191014;全文 *
代码混淆技术研究综述;张宇嘉;《信息工程大学学报》;20171031;635-640 *
基于稳定模型的软件多样性与安全初探;揭玮;《计算机工程与应用》;20040416;53-55 *

Also Published As

Publication number Publication date
CN111338942A (zh) 2020-06-26

Similar Documents

Publication Publication Date Title
Shen et al. Automating performance bottleneck detection using search-based application profiling
Panichella et al. Improving multi-objective test case selection by injecting diversity in genetic algorithms
Di Nucci et al. A test case prioritization genetic algorithm guided by the hypervolume indicator
Wei et al. Singularity: Pattern fuzzing for worst case complexity
US20070061144A1 (en) Batch statistics process model method and system
Medeiros et al. Software metrics as indicators of security vulnerabilities
Rashedul et al. Data envelopment analysis of banking sector in Bangladesh
CN114365095A (zh) 用于评估软件开发者的代码贡献的系统和方法
CN111338942B (zh) 一种软件多样性的评估方法及系统
CN117376228B (zh) 一种网络安全测试工具确定方法及装置
Nayak et al. Analytic hierarchy process-based regression test case prioritization technique enhancing the fault detection rate
He et al. Breakthrough to adaptive and cost-aware hardware-assisted zero-day malware detection: A reinforcement learning-based approach
Alcaraz et al. Hardware counters’ space reduction for code region characterization
CN110011964B (zh) 一种网页环境检测方法和装置
Duque-Torres et al. Using source code metrics for predicting metamorphic relations at method level
CN112052166A (zh) 一种基于支配关系的测试用例生成方法与装置
CN115130887B (zh) 水库大坝环境影响评价方法和装置、电子设备和存储介质
US7590792B2 (en) Cache memory analyzing method
KR20200041288A (ko) 게임 어뷰저 검출 방법 및 장치
Tagharobi et al. Introducing a Framework for Code based Fairness Audits of Learning Analytics Systems on the Example of Moodle Learning Analytics.
Škvorc et al. A comprehensive analysis of the invariance of exploratory landscape analysis features to function transformations
Avros et al. Boosted decision trees for behaviour mining of concurrent programmes
Watson et al. Detecting software code vulnerabilities using 2d convolutional neural networks with program slicing feature maps
CN114372266A (zh) 基于操作码图的安卓恶意软件检测方法
KR20220097822A (ko) 비정형 기업 데이터를 이용한 기업성장 예측 시스템

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Han Shoukui

Inventor after: Zhang Gaoju

Inventor after: Li Ang

Inventor before: Han Shoukui

Inventor before: Liu Zhenwu

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant