有效的安卓应用软件可信性评估方法
2022-03-22周婧婧景小荣
晏 尧,王 丹,朱 玺,陈 涛,周婧婧,景小荣+
(1.国网重庆市电力公司 电力科学研究院,重庆 401123;2.重庆邮电大学 通信与信息工程学院, 重庆 400065;3.国网重庆市电力公司,重庆 400010)
0 引 言
移动互联网的飞速发展和互联网业务的日益繁荣,智能终端应用软件数量急剧上升,而安卓作为主流平台供应商,为移动终端用户提供了品类齐全且功能丰富的应用软件;然而由于软件开发和运行环境的开放性,导致移动终端正面临着严峻的信息安全挑战。因此,非常有必要对安卓智能终端应用软件的可信性展开深入研究。
软件可信性(software trustworthiness,ST)作为度量软件质量的依据,国际权威组织可信计算组织(trusted computing group,TCG)[1]将软件可信性定义为软件行为和结果满足用户预期的能力[2]。为了确保安卓应用软件的可信性,国内外许多学者对软件可信性评估技术展开了积极的研究。
为了评估软件可信性,文献[3]利用分布式软件的交互关联规则,采用伴随式分布式监控机制,并织入3类检查点来实现对软件的可行性评估。作者在文献[4]中给出一种基于检查点场景信息的软件可信性预测模型,该模型通过记录软件行为轨迹的场景信息,利用径向基函数(radial basic function,RBF)神经网络分类器根据当前检查点的状态来判断软件的可信度。利用不同系统调用所属安全域之间的无干扰关系,文献[5]则提出一种软件实时可信度量方法。针对开源软件,Okamura H等结合基于经典非齐次泊松过程的软件可靠性增长模型(software reliability growth model,SRGM)和广义线性模型,提出了统一的软件可信性评估框架[6]。文献[7]提出一种基于用户反馈信息的软件组件可信性度量方法。杨曦等提出一种基于社会学信任理论的软件可信性概念模型,通过实验论证了该模型的有效性[8];而Tao Hongwei等则采用数学规划,将软件可信性程度依据一定的度量准则分配给软件的各个子属性。文献[10]利用软件外在特征参数建立了一种基于隐马尔可夫模型的软件状态评估方法;文献[11]提出一种基于软件行为轨迹矩阵的可信性评估方法。尽管上述方法或者软件可信性评估模型对软件可信性策略进行了一定深入的研究,但其通常使用单一属性对软件可信性进行评估,而实际上,每一软件均包含多个属性;此外,有些评估策略过多地掺杂了主管人为因素。更为重要的,上述软件可信性评估研究大多针对嵌入式软件或PC端软件,无法直接迁移到安卓平台。
在对软件可信性评估研究现状分析的基础上,基于文献[12],该文利用支持向量机(support vector machine,SVM),并结合证据理论,提出一种面向安卓应用软件的可信性评估方法,其创新性包括:
(1)利用SVM分类算法和可信性理论中多属性思想,使所提方法不再依赖于专家人为主观因素;
(2)可信性评估阶段,基于改进证据理论,可对应用软件多属性证据的预测概率赋值进行合成,从而提高可信性评估的正确率;
(3)引入熵权法确定各属性的权重,使得对软件的评估更为全面,同时,在一定程度上减小了证据合成过程中高冲突问题对软件可信性评估的影响。
1 软件可信性的评估模型设计
1.1 评估模型
为了对安卓软件可信性进行分析和研究,设计如图1所示评估模型。该模型将对安卓软件可信性评估,分为训练和可信性评估两个阶段。训练阶段主要完成软件度量,以确定软件的4种本质属性证据,并将其用于SVM的训练数据集;可信性评估阶段首先根据训练好的分类模型确定与各属性证据对应的分类概率赋值函数,进而基于熵权法确定自适应权重,接着利用改进D-S证据理论实现各属性证据合成,最后基于此合成结果,完成对软件的可信性评估。
图1 软件可信性评估模型
1.2 软件可信性度量
软件度量涉及众多因素,为此,文中利用智能终端软件的基本特征来对软件的可信性属性进行度量。在众多基本特征中,运行行为和性能测试又是其中最重要的。于是,文中采用不同的方法对各应用软件进行软件度量,以得到软件的运行行为和性能测试的4种本质属性证据,将其作为各SVM的训练数据集。
1.2.1 软件行为属性
软件的不同运行行为特征属性代表软件的不同意图,而某些运行行为有可能导致恶意结果。这里采用DroidBox沙盒[13]来模拟安卓软件运行环境,以Json格式记录应用软件运行过程中的行为触发日志,然而通过解析其行为触发日志记录其行为属性,存入行为特征数据库,具体流程如图2上半部所示。下面给出软件的部分运行行为。
文件操作:终端软件如果频繁扫描和搜索本地用户文件,并新建非法外部文件,极易导致敏感信息被盗用等不良后果。
隐私泄露:某些应用软件会窃取用户隐私信息,造成用户隐私泄露,不法分子利用泄露的个人信息进行欺诈与骚扰等。
发送/接收短信:不可信软件运行时,很可能确认未经用户同意而订阅某些付费服务,或被动接收非法短信的行为,直接给用户带来经济损失。
动态加载:不可信安卓软件可通过动态加载包含有恶意行为的dex文件并解密,对用户安全造成威胁。
图2 软件4种属性度量流程
1.2.2 性能测试属性
1.3 机器学习训练
既然软件的运行行为、CPU变化、内存变化、网络流量变化等特征属性可用于对安卓软件的可信性进行评估。按照图1的评估模型,必须用不可信和可信软件样本集对各SVM进行训练,来确定有效的分类模型。为了适应有监督机器学习算法SVM的训练,必须对上述4种属性证据进行适当处理。
运行行为属性数据,其处理流程按照如图3(a)进行。具体来说,先利用DroidBox将样本集中所有软件行为保存到行为特征数据库,并将其与特征数据库匹配。对于各软件,如其软件行为具备对应特征,则标记为1,否则标记为0,即实现软件行为特征映射。对于内存变化、CPU变化和网络流量变化等性能测试属性,则通过标准化处理,使与之对应的信息矩阵满足正态分布,从而用于对各SVM实现训练,具体如图3(b)所示。利用训练好的分类模型,就可实现对待评估软件进行可信性评估,即将其分为不可信(即软件存在异常高风险)和可信(即软件隐含的风险非常小)两种状态。
图3 数据处理流程
然而,由于文中涉及4种具体属性用于软件可信性评估,如果评估时利用经典的D-S证据合成理论对4种属性证据进行处理,则非常有可能导致冲突证据组合问题。
2 利用改进D-S证据理论对安卓软件可信性进行评估
本节将对D-S证据理论进行改进,进而以此为基础,提出具体的软件可信性评估流程。
2.1 改进的D-S证据理论合成
2.1.1 D-S证据理论
D-S证据理论[14]由Dempster提出,后经Shafer改进。令Θ={θ1,θ2,…,θn} 表示识别框架,则对于Θ的子集A, 函数m为集合2Θ到[0,1]的一个映射。如果m满足下列条件
(1)
则将m定义为Θ的基本概率赋值(basic probability assignment,BPA)函数。这里m(A) 表示对命题A的支持度。假设m1、m2表示两个证据的BPA且相互独立,m1(A1),m1(A2),…,m1(Ai) 和m2(B1),m2(B2),…,m2(Bj) 分别为各自基本概率赋值,则根据D-S证据理论,其合成结果为
(2)
其中,系数
(3)
代表证据m1和m2的冲突程度。k越趋近1,两个证据越接近完全冲突,此时经典的D-S合成规则将不再适用。
为此,文献[15]和文献[16]对证据冲突问题分别进行有意义的探索,但其效果不甚明显。下面我们将结合熵权法,对D-S证据理论进行改进,从而降低证据合成过程中高冲突问题对软件可信性评估的影响。
2.1.2 基于熵权法的自适应权重调整
在多属性证据合成中,为防止某一属性证据占主导和证据间冲突问题,可通过调整各属性证据的权重来实现。在众多权重调整策略中,熵权法是一种非常有效的方法。为此,我们提出结合熵权法来调整各属性证据的权重,以便解决D-S证据理论合成中存在的缺陷。具体步骤如下:
令与n个证据对应的BPA函数为m1,m2,…,mn, 其对应的权重为w1,w2,…,wn:
步骤1 计算mi与mj的冲突系数
(4)
其中,i≠j且i,j=1,2,…,n。
(5)
其中
(6)
代表Pignistic概率函数。
步骤3 确定与第i个证据对应的互冲突矢量ki=(ki1,ki2,…kin), 按式(7)对其作归一化处理,生成互冲突系数矩阵D, 见式(8)
(7)
(8)
步骤4 按照式(9),计算D中各行矢量的信息熵
(9)
步骤5 计算各证据的不确定度
(10)
其中,Hmax=log2(n)。
步骤6 计算各证据权重
(11)
根据上述步骤确定的权重,对各属性证据的BPA函数进行修正,即
(12)
其中,m′i(A) 表示对mi证据修正后的BPA函数;m′i(Θ) 为不确定度。
在证据属性合成中,上述基于熵权法的自适应权重调整过程可根据冲突情况,自适应赋予4种证据属性权重。而对于D-S证据理论,当证据属性接近完全相似时,kij接近于0.5。为此,在步骤2中,当kij≥0.4时,D-S证据理论冲突系数计算方法被Pignistic概率距离计算所代替。表1中的算例可说明该问题。
表1 算例
2.2 基于SVM和改进证据理论的安卓应用软件可信性评估
在上述分析的基础上,表2给出基于SVM和改进证据理论的应用软件评估方法的具体流程。
3 实验及性能分析
3.1 实验条件
Inter(R) Core(TM) i5-7400 CPU@3.00 GHz,内存32 GB台式机,搭载Windows10操作系统,搭载VMware虚拟机及Ubuntu-16.04.3,作为仿真平台;利用Python3.6语言来实现编程。
表2 可信性评估方法的具体流程
样本集包括500个可信软件数据集,均来源于小米和Google应用平台;300个不可信软件数据集则由专业组织收集,且通过在线检测和VirusTotal[18]评估。采用Python脚本和MonkeyRunner工具来模拟用户点击操作。此外,为了避免软件启动时对各参数的影响,实验中仅选择中间段数据;设置各测试应用软件在DroidBox中运行时长均为3 min。
需要说明的是,本文提出的方法及测试过程主要针对安卓应用软件,主要表现为其软件状态参数及特性,对于其它系统软件还需做进一步分析与研究。
3.2 软件可信性评估
图4给出分别采用单一属性,经典D-S证据合成和改进D-S证据合成进行应用软件可信性评估的结果。同时,表3给出了与两种测量对应的部分评估结果的可信和不可信概率赋值对比,包括各属性证据对应的概率赋值与D-S证据理论合成。
图4 采用不同属性进行可信性评估结果对比
表3 软件各属性证据BPA对比
由图4和表3,可知:
(1)相比于使用单一属性,本文采用多属性度量进行软件可信性评估的效果更加全面和客观;同时,表3中对各属性的概率赋值对比进一步说明采用改进D-S证据合成的有效性。
(2)相比传统D-S证据合成,基于熵权的改进证据合成方法可明显地改善软件可信性评估的性能;同时,从侧面也说明,在多证据属性合成中,设置自适应权重,在一定程度上可规避高冲突证据合成带来的不利影响。
图5展示了检测准确率随证据属性数量变化的情况。在图5中,最低准确率和最高准确率分别表示不同数量的属性证据的对应组合结果。从图中可知,软件可信性评估的准确性随着软件属性证据数量的增加而提高;完全利用4个属性证据时,评估效果最佳。
图5 准确率随属性合成个数的变化
3.3 性能对比
3.3.1 定量对比
基于某一典型可信应用软件,对改进D-S证据合成理论的有效性进行定量分析,与该应用对应的4个属性证据的BPA(m1,m2,m3,m4) 见表4。
表4 某典型可信软件各属性证据BPA
根据表4,属性证据3显然存在高冲突。针对该典型可信应用软件,在不同属性证据组合(m1和m2、m1,m2和m3、m1,m2,m3,m4) 下,图6给出Yager组合规则[16]、Murphy组合规则[17]、经典D-S证据合成及改进D-S证据合成方法的可信识别结果。
由于属性证据m1和m2之间冲突较小,因此这4种证据合成规则具有相同的评估结果。对属性证据组合m1,m2和m3, 其中属性证据m3为高冲突证据,Murphy组合规则对冲突属性采用平均化处理,Yager组合规则将冲突属性赋予一不确定项,经典D-S方法直接进行合成,而本文方法则依据互冲突程度,给予属性证据m1,m2,m3不同的权重因子,使高冲突属性证据m3的影响得以降低,从而提高了评估的准确度。对于m1,m2,m3,m4组合,随属性证据m4的参与,高冲突证据m3的权重将更低,使其对评估结果的影响变得更小,因此,对于m1,m2,m3,m4组合,其可信度识别概率改善明显,但本文所提方法的可信度识别率最高。
图6 不同组合规则的对比
3.3.2 定性对比
在现有文献中,面向安卓应用软件的研究相对较少,因此,该小节结合PC软件部分相关文献,从软件属性、评估方法、数据处理形式及适应场合等4个方面,进行定性对比,结果见表5。
表5 软件可信性定性对比
由表5知,对于软件属性,文献[11]利用场景信息的时间点、CPU、内存和其各自的变化率,文献[19]则基于移植性、维护性和易操作性等方面的度量,总之,其仅基于软件的直观性能;而本文方法除此之外,还考虑了应用软件潜在行为等细粒度属性,因而对软件可信性的检测则更为细致。
由表5知,对于数据处理,文献[11]默认各属性权重相同;文献[19]则融合信息熵和模糊层次法赋予各属性权重,再与设定阈值相比较来决定软件可信性。也就说,文献[11]和文献[19]中方法依赖主管因素,而本方法却很好地规避了此缺点。
由表5知,对于可信性评估,文献[11]和文献[19]均采用与固定阈值对比,即由单个结果决定,因而,无法全面地反映应用软件的可信性。而文中方法则基于多属性训练,进而结合多属性融合与决策,能够全面且客观评估软件的可信性。
还有,对于适应场合,3种方法均需运行环境,然而本文方法融入了细粒度的软件运行行为分析,评估的范围则更全面。
4 结束语
本文结合SVM和改进证据理论,针对安卓软件平台,提出一种软件可信性评估方法。该方法首先利用样本软件集的4种属性证据,对SVM分类器进行训练,进而针对待评估软件,确定其不同属性的BPA;最后,结合基于熵权法的自适应权重和改进的证据合成理论,完成对待评估应用软件的可信性评估。该方法在实现过程中,由于基于机器学习类算法来确定BPA,因此有效地规避了认为因素的影响;同时,由于基于应用软件的多种属性证据,又融入了自适应权重调整,使得对软件的评估更为全面。大量的实验数据验证了本文方法的有效性。下一步工作将重点对软件属性进行更细粒度上的可信性划分。