基于移动云计算的Android平台App风险评估方法与装置
技术领域
本发明涉及云计算技术,尤其涉及一种基于移动云计算的Android平台App风险评估方法。
背景技术
随着手机功能日益强大,它已成为生活中不可或缺的一部分。用户的频繁使用俨然使手机成为一个小型的个人隐私库,这些隐私包括照片,电子邮件,浏览记录,各种账号等。于是,用户的手机隐私安全成为了现下最大的安全问题之一。
2014年上半年,新增移动互联网恶意程序超过36.7万,移动恶意程序99%以上针对安卓平台,恶意扣费类程序占到62%以上,超过300家应用商店存在移动恶意程序。活跃的应用程序高达600万个。大量APP可以在用户未授权的情况下读取用户隐私,某些恶意APP获取某些不必要的敏感权限。安卓APP安全的核心问题在于难以知道APP拥有的权限是否合理,这是一个不确定性问题,读取手机电话本的权限在微信应用中合理,但是在手电筒APP中就不合常理。一个典型的场景是,用户下载手电筒APP时,面对上千个手电筒APP,无法知道哪个更安全。应用市场提供的APP权限列表,对于广大非专业用户而言,不具有参对价值,用户无法知道此类APP拥有这些权限是否合理。大量的隐私泄露事件频发,普通用户、政府、应用市场对APP安全评级具有迫切需求,具有巨大的市场前景和机会。
手机APP风险评估,需要监控和发现APP的行为,根据规则进行判定,需要实时、大量的计算,为了突破手机的性能约束,本项目研究一种基于Android手机APP风险评估***,能够对各种APP进行风险评估计算,并将结果实时推送到手机中,提醒用户进行安全防护。
由于Android的APP数量多,用户的APP的安装数量和类型不同,***的安全风险也是不同,就需要提出一种策略能够根据用户安装的APP,提供个性化的风险预警。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于移动云计算的Android平台App风险评估方法。
本发明解决其技术问题所采用的技术方案是:一种基于移动云计算的Android平台App风险评估方法,包括以下步骤:
1)采集安卓市场中所有的App,并获得各App的权限列表;将获取的权限列表数据上传至云端;
2)根据获得的各App的权限列表,根据权限列表中的App隐私权限和设置的隐私权限危险分值进行危险级别判断;
所述App列表、App隐私权限、隐私权限危险分值存放在云端存储器中;
所述App列表中包括不同App和同一App的不同版本;
所述App隐私权限为所有安卓权限;
所述隐私权限危险分值为预设恶意阀值,所述隐私权限危险分值的设置根据App的类别进行了分类处理;
所述危险级别包括正常、预警、危险和高危四个等级;
3)根据手机客户端的请求向云端请求数据,将从云端获得的相应App的危险级别判断结果和App调用的隐私权限发送给客户。
按上述方案,所述步骤1)中获得各App的权限列表采用以下方法:
静态分析法:采用词法分析,语法分析的技术手段来对App的程序文件进行扫描,从而生成程序的反汇编代码,然后阅读反汇编代码获得App的权限列表;静态分析法获取的是安装安卓应用程序时所申请的权限。
按上述方案,所述步骤1)中获得各APP的权限列表采用以下方法:
程序自动采集法;具体如下:
1.1)在手机上安装待采集权限的App,所述手机上已经安装了权限采集程序;
1.2)将待采集权限的App设为目的App;
1.3)创建一个packageManager对象pm;
1.4)调用pm的函数getPackageInfo,并将包名,权限两个量作为参数,构造出PackageInfo类对象info;
1.5)调用info对象的requestedPermissions函数,并用一个字符串数组存权限列表;
1.6)在屏幕上显示出所有权限,并在自己所在的包里创建一个txt文件存储权限列表;
提取的权限的存储和传输
由于在传输时需要尽可能的减少数据的大小,保证数据传输的可靠性和安全性,建立了一个结构体来存储传输的数据。这个结构体拥有两个属性:一个String类型的变量来存储目标App的包名,一个长为20的布尔型数组,来代表该App申请的隐私权限。例如:
结构体名A |
通过包名来确定结构体名 |
字符串型变量String appName; |
通过包名来确定 |
布尔型数组boolpermissions[20]; |
对隐私权限进行比较后按顺序 |
表1.1中的编号即为permissions数组里面的下标,将隐私权限与目标App的所有权限一一对比,若发现相同就将该权限对应的permissions[i]赋值为true,直到所有的隐私权限判定完全为止。
按上述方案,所述步骤2)中App的危险级别判断包括以下步骤:
2.1)提取需要危险级别判断的App的类别;
2.2)获得所有同类App的所涉及的最小权限集合;具体表示如下:
设G=(Class,Population,Permissions);
其中,Class为类别关键字;
最大权限集合Population为该同类别下所有App涉及的隐私权限集合;
最小权限Permissions为该同类别下每个App涉及的隐私权限的交集;
2.3)根据改进的欧氏距离算法,计算该App与最小权限集合的相似距离;采用以下公式:di=sqrt(Pi)=sqrt(p0 2+p1 2+…+pk 2),(p0,p1,…,pk∈Pi);
其中,设该App涉及的隐私权限为Ai,0<i<n;Pi={p|p∈Ai–Permission,0<i<n};
2.4)根据步骤2.3)计算的结果确定该App的危险级别。具体方式为符合最小权限集合的App为正常,危险的级别根据计算的欧式距离的进行阈值划分。由于不同类别的App可以有不同的最小权限集合,所以不同类别的App危险等级划分是动态的,危险等级划分阈值可以根据App种类、同类App权限分布规律等因素进行确定,并且根据时间等因素进行演化。
本发明还提供一种基于移动云计算的Android平台App风险评估装置,包括:
权限采集模块,用于采集安卓市场中所有的App,并获得各App的权限列表;将获取的权限列表数据上传至云端;
云端存储分析器模块,用于根据获得的各App的权限列表,根据权限列表中的隐私权限和设置的隐私权限危险分值进行危险级别判断;
所述App列表、App隐私权限、隐私权限危险分值存放在云端存储器中;
所述App列表中包括不同App和同一App的不同版本;
所述App隐私权限为所有安卓权限;
所述隐私权限危险分值为预设恶意阀值,所述隐私权限危险分值的设置根据App的类别进行了分类处理;
所述危险级别包括正常、预警、危险和高危四个等级;
风险评估接收客户端,用于根据手机客户端的请求向云端请求数据,将从云端获得的相应App的危险级别判断判断结果和App调用的隐私权限发送给客户。
本发明产生的有益效果是:本发明通过对海量App的权限特征进行分析,通过相似度计算的方法检测Android应用软件恶意倾向,为用户提供了一种可行且有效的App评估方法,通过提供安全分析,能有效减少用户隐私泄露的风险。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的结构示意图;
图2是本发明实施例的手电筒类App中涉及各隐私权限数量图;
图3是本发明实施例的手电筒类App相似度距离d值降序排列趋势图;
图4是本发明实施例的手电筒类App权限调用数量与相似距离d值关系图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种基于移动云计算的Android平台App风险评估方法,包括以下步骤:
1)采集安卓市场中所有的App,并获得各App的权限列表;将获取的权限列表数据上传至云端;
获得各App的权限列表可采用以下两种方法:
静态分析法:采用词法分析,语法分析的技术手段来对App的程序文件进行扫描,从而生成程序的反汇编代码,然后阅读反汇编代码获得App的权限列表;静态分析法获取的是安装安卓应用程序时所申请的权限;
程序自动采集法;具体如下:
1.1)在手机上安装待采集权限的App,所述手机上已经安装了权限采集程序;
1.2)将待采集权限的App设为目的App;
1.3)创建一个packageManager对象pm;
1.4)调用pm的函数getPackageInfo,并将包名,权限两个量作为参数,构造出PackageInfo类对象info;
1.5)调用info对象的requestedPermissions函数,并用一个字符串数组存权限列表;
1.6)在屏幕上显示出所有权限,并在自己所在的包里创建一个txt文件存储权限列表;
2)根据获得的各App的权限列表,根据权限列表中的app隐私权限和设置的隐私权限危险分值进行危险级别判断;
所述App列表、App隐私权限、隐私权限危险分值存放在云端存储器中;
所述App列表中包括不同App和同一App的不同版本;
所述App隐私权限为所有安卓权限;
所述隐私权限危险分值为预设恶意阀值,所述隐私权限危险分值的设置根据App的类别进行了分类处理;
所述危险级别包括正常、预警、危险和高危四个等级;
App的危险级别判断包括以下步骤:
2.1)提取需要危险级别判断的App的类别;
2.2)获得所有同类App的所涉及的最小权限集合;具体表示如下:
设G=(Class,Population,Permissions);
其中,Class为类别关键字;
最大权限集合Population为该同类别下所有App涉及的隐私权限集合;
最小权限集合Permissions为该同类别下每个App涉及的隐私权限的交集;
2.3)根据改进的欧氏距离算法,计算该App与最小权限集合的相似距离;采用以下公式:
di=sqrt(Pi)=sqrt(p0 2+p1 2+…+pk 2),(p0,p1,…,pk∈Pi);
其中,设该App涉及的隐私权限为Ai,0<i<n;Pi={p|p∈Ai–Permission,0<i<n};
2.4)根据步骤2.3)计算的结果确定该App的危险级别。
具体方式为:认为符合最小权限集合的App为正常,超过最小权限集合的App危险的级别根据计算的欧式距离的进行阈值划分。
由于不同类别的App可以有不同的最小权限集合,所以不同类别的APP危险等级划分是动态的,危险等级划分阈值可以根据APP种类、同类APP权限分布规律等因素进行预先设定,并且,进一步的,可以根据时间等因素进行演化。
在本申请中,云端分析器将众多App分为7类,工具类、手游类、社交类、商务类、生活类、新闻类和天气类;
项目选取了Android4.3版本的全部146个权限,如下表所示,表中权限危险分值为初始分值,分值为0表示该权限基本没有安全风险,分值越大风险越大,可以根据权限的重要程度、不同的App类别进行调整,也可以根据时间、Android***的版本等进行调整。
3)根据手机客户端的请求向云端请求数据,将从云端获得的相应App的危险级别判断结果和App调用的隐私权限发送给客户。
一个App风险评估实例:
我们利用Scrapy框架制作的爬虫工具在360手机市场抓取了725个手电筒应用并存储。利用ADB工具在Android4.1.2***上安装了所有抓取的手电筒类App。使用开发的APP权限获取工具获取了***上安装的所有手电筒App的权限信息。分析结果发现725个手电筒应用涉及95个权限。
实验一:获取手电筒类App中涉及有关的隐私权限。实验结果如图2:在图2中表明了725个手电筒类的App种群,绝大多数都含有CAMERA,INTERNET,ACCESS_NETWORK_STATE,ACCESS_POHONE_STATE隐私权限,而拥有权限不符合用户期望,并且由数据表明手电筒类的最小权限集合为空,这些权限都增加了App的恶意倾向。
实验二:根据改进的欧氏距离算法,计算各App与最小权限的相似度。图3中是相似度距离d值降序排列趋势图。
图3中节选数据表示com.sskj.flashlight相似距离d值为372.68,com.mika.flashlight相似距离d值252.49,com.htc.flashlight相似距离d值50;
相似距离d值越大,App恶意倾向越大。由图3可以了解到,欧式距离算法能够有效的区分App的恶意倾向性,体现了App分类风险评估体系的可操作性和实用性。
图4中反映了App权限调用数量与相似距离d值的联系
图4表明相似距离d值与App权限调用数量是非线性的,调用相同数量的权限d值也不一定相同。(这里的数据与权限预处理的危险值有极大相关性)
本发明还提供一种基于移动云计算的Android平台App风险评估装置,包括:
权限采集模块,用于采集安卓市场中所有的App,并获得各App的权限列表;将获取的权限列表数据上传至云端;
云端存储分析器模块,用于根据获得的各App的权限列表,根据权限列表中的隐私权限和设置的隐私权限危险分值进行危险级别判断;
所述App列表、App隐私权限、隐私权限危险分值存放在云端存储器中;
所述App列表中包括不同App和同一App的不同版本;
所述App隐私权限为所有安卓权限;
所述隐私权限危险分值为预设恶意阀值,所述隐私权限危险分值的设置根据App的类别进行了分类处理;
所述危险级别包括正常、预警、危险和高危四个等级;
风险评估接收客户端,用于根据手机客户端的请求向云端请求数据,将从云端获得的相应App的危险级别判断判断结果和App调用的隐私权限发送给客户。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。