安卓应用程序中非权限相关隐私数据的识别方法_2

文档序号:9249430阅读:来源:国知局
一 定是由用户的特定操作触发的。因此只有满足下述信息流分析条件的元素才有可能属于隐 私相关界面元素。
[0030] 判定条件;界面元素存在WfindViewBWdO为起始,getTextO为终点的完整调 用链。同时调用链中含有化ClickO等事件触发函数,表明该元素与用户存在直接交互关 系。即可认为此元素接受了用户输入。
[0031] 图4是图1中在获取用户信用卡信息时所对应的后台代码逻辑。该段代码的关键 点为: (1) 输入框对象IB是通过调用findViewBWdO获得的; (2) 当用户点击了"Addyourcard"按钮后,触发了事先通过 submi1:Btn.setOnClickListenerQ注册的系统回调,从而触发OnClickQ函数; (3) 最终应用通过调用IB.getTextO获取用户输入的内容; 对于每一个通过分类器获得的敏感界面元素,本发明都对其进行静态信息流分析,检 测是否存在上述代码特征。通过静态信息流分析,对于符合过滤条件的界面元素,其ID集 合即对应了界面上接收非权限相关的隐私数据的界面元素集合。
[003引本发明的有益效果是:本发明将机器学习技术与传统静态信息流分析技术相结合,能有 效识别出界面中的非权限相关隐私数据源,并将其标记为敏感数据源,从而使得传统静态信息流 分析、动态污点检测跟踪都能够对此类隐私数据进行追踪和保护,提高了用户隐私数据的安全性。
【附图说明】
[0033] 图1 ;检测系统整体架构图。
[0034] 图2 ;资源文件内容示例。
[003引 图3 ;经过文本预处理前后的文本内容。
[0036] 图4 ;从交互界面获取用户输入的代码样例。
【具体实施方式】
[0037] 本发明设计并实现了上述的基于机器学习技术和静态信息流分析技术的非权隐 私检测系统,本节对该框架的具体实施作一个详细的介绍。
[0038] (1)数据预处理 本发明采用Apktool对An化oid应用程序进行逆向工程,Apktool是Google公司提供 的Amlroid应用程序编译软件,能够对应用程序进行反编译,且在反编译时能够获取应用 程序内部的各种资源文件,对于资源文件的完整性有所保证。因此本发明选取其W实现资 源文件提取模块。
[0039] 对于提取后的资源文件,本发明使用Python的化TK工具包对其进行文本预处理。 化TK工具包是自然语言处理中最为常用的工具包之一,其中所提供的停用词过滤、词干提 取算法,均很好的契合了本发明的需求。故选取其实现文本预处理模块。
[0040] (2)隐私相关文本的分析 本发明自行编写了Python脚本,实现了上述设计中的XML文件解析、模式检测、卡方检 验W及噪声过滤功能。
[0041] 针对每一个种子词,我们都进行一轮的卡方检测,之后收集结果中排名前80的单 词;在对7个种子词完成总共7轮的卡方检测后,共收集不重复的单词273个。之后我们人 工去除了 45个噪声词。最终从13392个不同单词中挑选出了 228个隐私相关的单词。该 些单词将在下一步的识别中作为特征。实现所选取的种子词和最终获取到的敏感词列表如 表3所示。
[004引表3
(3)非权隐私相关界面元素的识别 对于Financial相关的正样本,我们人工标注了含有6459个界面元素的训练集作为补 充。最终,我们的训练集中含有24291个正样本(其中24021个通过i吨utType属性获得, 270个通过人工标注获得)W及数量相等的负样本。
[0043] 对于分类器的参数设置,我们选用支撑向量机SVM作为我们的分类器,通过实验, 核函数选用次数为3的线性函数,gamma值设为50。
[0044] 本发明选取python的scikit-learn工具包实现机器学习相关的功能。 scikit-learn中包含了对于主流数据预处理算法和主流机器学习算法的开源实现,具有 API结构清晰、实现高效等特点。故选取其实现本发明中的机器学习模块。
[0045] (4)基于代码静态信息流分析的结果过滤 本发明选取FlowDroid工具对Amlroid应用程序进行静态信息流分析。FlowDroid是基 于Soot框架实现的静态信息流分析工具,其中包含了信息流图构建功能。由于FlowDroid能够处理基于系统事件的回调W及界面元素,故其分析结果是准确且完备的。我们将 FlowDroid的layout模式设置为"ALL"W获得WfindViewBWdO为起始,getTextO为终 点的完整调用链。对每个界面元素而言,若其调用链中含有化ClickO函数,即可认为此元 素接受了用户输入。
【主权项】
1. 一种安卓应用程序中非权限相关隐私数据的识别方法,将用户隐私数据分为三类: 账户相关的认证信息以及用户数据、地理位置数据、金融支付类隐私数据;其特征在于识别 的具体步骤分为四个阶段: 一、 数据预处理,包括:提取资源文件、文本预处理;其中: 提取资源文件:首先采用Apktool对Android应用程序进行逆向工程,提取得到描述界 面的资源文件; 对于逆向工程后的Android应用程序,其描述界面的XML文件散布于不同的文件夹中; 其中,用以描述用户交互界面(UI)的布局文件位于(文件夹下;界面元素和其16 进制ID的对应关系存储于res/Wwe/OTWic. Zffl/文件中;界面中所展示的文本即界面文 本位于/Zffl/文件中; 文本预处理:使用Python的NLTK工具包进行文本预处理,包括文本分词、文本过滤、词 干提取;其中: 文本分词:对于上述获得的资源文件中,以变量名形式存在的文本,根据其分隔符或大 小写对其进行分词;对于一些文本常量是由几个单词简单拼接而成的,从WordNet上获取 词表,并不断从文本中切分出词表中所能匹配到的最长词; 文本过滤:对于处理后的资源文件,去除其中的数字和符号,仅保留单词;同时去除其 中的停用词; 词干提取:通过Porter词干提取算法,剔除时态、词性的影响,减小单词形态变化; 二、 隐私相关文本的分析 通过设定少量"种子词",借助卡方检验,提取训练集文本中与其相关度较高的词,从而 扩展敏感词列表,获取更加完整的隐私相关文本: 种子词是指定一系列能够准确描述用户隐私的词汇;由于每个界面布局样本文件中都 包含了界面文本,在界面文本当中,通过判断是否包含种子词,以及下面的约束条件来判定 一个界面布局样本文件是为隐私相关的界面: (1) 存在"动词+种子词"的模式; (2) 存在"物主代词+种子词"的模式; 满足上述两个条件之一的界面布局样本文件,将其标记为隐私相关界面即正样本,同 时由于Android系统允许界面布局文件相互嵌套,将其中所嵌套的其他界面布局文件也标 记为正样本;反之,若界面布局样本文件未满足这两个条件,则标记其为非隐私相关界面即 负样本; 对于正样本中出现的所有单词进行卡方检验,并将结果按数值从高到低进行排序;单 词具有高数值意味着其能够更好的表征其所在的界面或元素是隐私相关的; 噪声过滤:卡方检验能够拓展隐私相关的词表,却不可避免的引入噪声,为此,在噪声 过滤阶段引入少许人工干预,通过遍历卡方检验结果剔除与隐私无关的词汇; 三、 非权隐私相关界面元素的识别 使用机器学习的方法,基于对界面元素的文本语义分析,实现非权隐私相关界面元素 的自动识别;通过训练集训练获得分类器,对于给定的未分类界面元素,判定其文本语义是 否是与隐私相关;其中包括: 特征选取:选取隐私相关文本分析中所挑选出的隐私相关单词作为特征;并通过多个 单词的组合,有效地评判一个界面是否为与隐私相关;对于每个界面元素,其特征向量的长 度为词表的长度,特征向量的每一维度为对应单词的词频,此处的词频为元素自身和其前 后兄弟节点的词频之和; 训练集:对于Android应用而言,Android系统提供了 android: inputType属性;在 android: inputType的取值范围中,有一些属性值表征了对应输入框将接收所关注的隐私 数据; 对于那些具有 inputType 属性,且属性值包含"password","email ","postaladdress" ,"phonenumber "的元素,将其标记为训练集中的正样本;同时,人工选取部分Financial相 关隐私输入元素作为正样本的补充;负样本选取与正样本等量,包含任意敏感词但是不属 于隐私相关的界面元素;; 分类器选择:选用支持向量机SVM作为本发明的分类器; 四、基于代码静态信息流分析的结果过滤 对于上一步中获得的所有界面元素,通过静态信息流分析确定其是否真正接受用户输 入,进一步剔除只具有隐私相关语义,但不具备隐私获取能力的静态界面元素; 过滤条件: 对于步骤三中分析得出的任意界面元素,以其唯一元素ID作为信息流分析源点,查看 其在Android生命周期中的相应代码特征;如果该元素存在以getText O函数为终点之 一,且处在包含Onclick O函数的下游,即可判断为该元素确实接受了用户的数据输入; 经过过滤后,所获取到符合上述代码特征的界面元素ID集合即对应于界面上接收非 权限相关的隐私数据的界面元素集合。2. 根据权利要求1所述的安卓应用程序中非权限相关隐私数据的识别方法,其特征 在于采用Python的Scikit-Iearn工具包实现机器学习相关的功能。3. 根据权利要求1所述的安卓应用程序中非权限相关隐私数据的识别方法,其特征 在于基于FlowDroid信息流分析工具,构建界面元素所处的安卓生命周期上下文信息,对 Android应用程序进行静态信息流分析; 其中,将FlowDroid的layout模式设置为"ALL",以获得以findViewByldO为起始, getText ()为终点的完整调用链。
【专利摘要】本发明属于程序信息安全检测技术领域,具体为安卓应用程序中非权限相关隐私数据的识别方法。本发明方法分为数据预处理、隐私相关文本的分析、非权隐私相关界面元素的识别、基于代码静态信息流分析的果过滤四个阶段,主要针对处于Android系统的权限模型的保护范围之外的Android应用程序中非权限相关的隐私数据,将机器学习技术与传统静态信息流分析技术相结合进行识别。通过对此类隐私数据识别,能够将其标记为敏感数据源,进一步结合传统静态信息流分析检测技术或者动态污点信息跟踪检测技术,为此类隐私数据的监控和保护提供基础,从而降低用户隐私数据的泄露风险。
【IPC分类】G06F21/62, G06F17/30, G06F17/27
【公开号】CN104966031
【申请号】CN201510374683
【发明人】杨珉, 杨哲慜, 南雨宏, 周顺帆, 张源
【申请人】复旦大学
【公开日】2015年10月7日
【申请日】2015年7月1日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1