关键词:
安卓
程序行为分析
信息流
隐私政策
分布式信息流控制
摘要:
Android操作系统的开放性吸引了众多开发者加入到Android应用程序开发的行列中,涵盖了从生产力工具到娱乐游戏的各个领域,Android也成为占据最大市场份额的移动端操作系统。现如今移动设备已经影响到我们生活的方方面面,成为个人的信息集中中心和处理中心。由于Android系统的开放性和其自身安全机制的不完善,一些应用程序窃取用户隐私信息的恶意行为频发,使得存储在移动设备的隐私信息受到威胁。信息流技术以保证信息的安全性为目标,在Android程序行为分析与控制方面有着广泛的应用。然而由于应用程序的日益复杂化和功能多样化,良性应用程序和恶意应用程序的行为越来越难以区分,传统的单条信息流特征描述来检测恶意软件的方法则可能会产生误报。例如良性应用和恶意应用均会在获取用户的隐私信息后通过同一个网络接口发送出去,但是良性应用在收集国际移动设备识别码(International Mobile Equipment Identity,IMEI)信息的同时,最多会伴随着对国际移动用户识别码(International Mobile Subscriber Identity,IMSI)的收集,恶意应用则会同时收集设备的IMEI、IMSI和地理位置等多个信息,如果不考虑敏感信息流之间的关系信息,那么它们在特征表述上便是一致的,即良性应用和恶意应用均存在获取多条敏感信息后通过网络发送出去的行为,所以便无法区分出这种情况,然而当前对信息流之间关系的分析鲜有研究;应用市场会对待上架的应用程序进行审核,且需要开发者上传隐私政策文档对其收集的敏感信息进行说明,但是存在监管不严的情况,而且用户在下载应用时一般都会忽略这些内容,即使阅读也很难直观明了的判断出应用实际的行为与声明的行为是否一致,当前针对应用敏感行为和隐私政策的一致性分析研究方面也存在不足,导致应用程序违规收集个人信息、收集个人信息告知不到位和超范围收集个人信息等行为广泛存在;Android应用程序集成了大量的第三方组件,而一些组件往往会超范围的获取系统资源,并存在敏感信息滥用的情况。组件内部的信息流十分复杂,其直接对系统资源的访问导致很难对其做高效的细粒度控制。而且在实际应用中,对于不同的组件,开发者和用户往往具有不同的功能需求和安全需求,需要保证其基本功能不受影响的情况下对敏感信息的使用与处理在安全的范围内,因此需要一种灵活的机制控制其对系统资源的访问,而传统的访问控制技术难以对组件的敏感行为进行细粒度动态信息流控制。针对这些亟待解决的问题,本文的主要工作如下:(1)针对传统的单条信息流特征描述难以刻画出良性应用程序和恶意应用程序不同的行为模式,且细粒度的信息流关系特征研究存在不足的问题,提出一种基于信息流关系特征的恶意软件检测方法。在敏感信息流分析阶段,该方法进一步挖掘信息流之间的关系特征,对敏感信息流之间的关系进行了详细的形式化描述,然后在此基础上设计了一种利用动态规划来分析敏感信息流之间关系的方法,分析出敏感信息流之间的关系共存在汇聚、分散、包含、串行和非特定交叉五种情况。例如上述良性应用便存在IMEI和IMSI到网络接口这两条流之间的汇聚关系,而恶意应用则存在IMEI、IMSI和位置信息到网络接口这三条流之间的汇聚关系,此时良性应用和恶意应用不同的行为模式和信息流关系特征便被刻画了出来;在特征构建阶段,将分析得到的关系特征表述为五元组,对连续公共子序列中的API进行分类后表述为六元组,然后将这两部分的特征进行融合;在检测阶段,利用卷积神经网络设计了恶意软件检测的机器学习模型。最后实验结果表明,在Mal Genome和Andro Zoo数据集下该方法分别达到了98.5%和97.6%的准确率,可以看出更加细粒度的敏感信息流之间关系特征表述对于良性应用和恶意应用的区分起着重要的作用。(2)针对应用市场中应用程序违规收集个人信息、收集个人信息告知不到位和超范围收集个人信息等行为广泛存在,但针对性的研究却存在不足的问题,提出一种Android应用敏感行为与隐私政策一致性分析方法。在隐私政策分析阶段,针对应用程序的隐私政策声明文档和包含其中的第三方信息共享清单,基于Bi-GRU-CRF神经网络从其中提取出关键信息并转化为隐私政策三元组,即实体、动作和数据类型;在敏感行为分析阶段,为了使得隐私政策分析结果与应用敏感行为分析结果的粒度相匹配,通过对敏感API调用进行分类、对输入敏感源列表中已分析过的敏感API调用进行删除以及对已提取过的敏感路径进行标记的方法对IFDS算法进行优化,降低分析结果冗余,从而提高分析效率,最后将提取出的敏感信息流转化为敏感行为二元组;在一致性分析阶段,我们对本体之间的语义关系进行了定义,分别为等价关系、从属关系和近似关系。针对这三种关系,我们定义了语义相似度,并据此将敏感行