关键词: 开发人员
Android安全(精选十篇)
Android安全 篇1
2007年11月5日Google公司正式发布基于Linux内核的开源手机操作系统Android。自发布以来,该系统以其开放、自由的特性赢得了各大厂商、开发人员、以及用户的青睐。经过四年的发展,Android已经从最初的智能手机领域进入教育、医疗、军事、汽车、家居等重要行业,并在2011年第一季度首次突破塞班成为全球市场占有份额最高的智能手机平台[6]。
正是由于Android在日常生活中扮演着越来越重要的角色,导致其逐渐成为大量恶意攻击者的首选目标之一。网秦《2011年中国大陆地区手机安全报告》[7]显示,自2011年10月以来,Android平台的恶意软件单月查杀次数已超过塞班,并以1880%的涨幅快速增长,使其成为安全威胁最严重的智能手机平台。这主要是因为平台的开放性导致恶意应用的开发成本和难易度大大降低,任何对Android开发感兴趣的人员都可通过简单的注册而成为Android Market的一员,并自由的发布自己的应用。同时,虽然Android本身已提供应用沙盒、权限、应用签名等安全机制,但是这种以开发者为中心、依托用户完成的粗粒度授权机制存在诸多问题和漏洞,导致平台安全性大大降低,特别是容易造成应用层权限提升攻击[8]。
鉴于Android巨大的发展潜力,为提高其可用性,自发布以来,学术界就对它的安全机制进行了诸多研究,核心是围绕如何完善系统访问控制机制、防止私密数据泄露的问题展开,并已取得许多有效的研究成果。本文首先介绍了Android原生的安全机制及其安全缺陷,然后按照硬件层、虚拟机监视器层、Linux内核层、应用框架层的层次化分类方式对已有的研究工作进行总结,最后根据现有工作存在的不足提出了几点未来的研究方向。
1 Android组件模型及安全机制
1.1 组件模型
Android是一个移动设备软件栈,其系统架构包含多个层次,主要有应用层、应用框架层、Android运行时和系统库以及Linux内核[9]。Android中的应用都是用Java语言编写,然后生成Dalvik虚拟机可执行的apk文件。
通常情况下,Android应用由一个或多个不同的组件构成,这些组件主要包括四种类型:Activity、Service、Broadcast Receiver、Content Provider。Activity是User Interface的容器,表现为可视化的用户接口。Service在后台运行,它没有可视化的用户接口,通常完成一些无需用户干预的操作。Broadcast Receiver用于接收和响应本应用关心的广播消息。Content Provider提供了一种应用间共享数据的方法,这些数据可以存放在文件中,也可以存放在SQLite数据库中。
1.2 安全机制
(1)权限机制
Android应用框架层提供了限制组件间访问的强制访问控制机制,系统中定义了一系列安全操作相关的权限标签,应用需要在配置文件(Manifest.xml)中利用这些标签声明自己所需的权限,当用户同意授权后,该应用下属的所有组件将会继承应用声明的所有权限。同时,组件也可以利用权限标签限制能够与其交互的组件范围。如图1所示,组件CC1要求P1权限,而应用程序B被用户授予了权限P1,因此CB1继承P1权限并因而具有访问CC1的能力。组件CA1则因为不具备P1权限而无法访问CC1。
Android支持普通(normal)、危险(dangerous)、签名(signature)以及签名或系统(signature Or System)四种权限保护级别。危险级别的权限在应用程序安装时会在屏幕上列出,而普通级别的权限是隐藏在折叠目录或屏幕上的。签名级别的权限只有在请求权限的应用程序与声明权限的程序是用相同的证书签名时才被授权。
(2)隔离机制
Android是基于Linux内核的,因此每个应用程序运行在自己的Linux进程中。通常每个应用程序被分配唯一的Linux用户ID,因此Linux的自主访问控制机制保证应用程序的文件对于其它应用程序是不可见的。特别的,Android应用程序运行在Dalvik虚拟机中,因此与其它应用程序的代码是隔离的。
1.3 安全缺陷
可以说,Android在诞生之初就拥有良好的安全机制。首先,它通过继承Linux 2.6内核的安全机制实现系统安全;其次,又通过自身的permission机制实现数据安全。但面对浩瀚复杂的安全环境,Android原生安全机制是远远不够的,更何况其本身还存在诸多问题。Android原生安全机制缺陷主要体现在以下几个方面:
(1)Android通过Package Installer在应用安装时检查应用所需的权限,并提示用户,由用户做出抉择。但是,如果用户想使用该应用的功能,就必须同意应用申请的全部权限,否则Package Installer将拒绝安装该应用。
(2)Android没有对已授予应用的权限的使用范围进行限制。比如应用申请了读联系人数据的权限,那么它就可以读取全部的联系人数据,而不能根据联系人分组区别对待。
(3)由于所有权限都是在安装时进行检查并授予的,所以资源的访问不能根据用户的位置、时间等不同而进行动态的限制。比如用户需参加一个秘密会议,那么此时用户应该可以设置应用不能访问摄像头、GPS、麦克风等资源,但传统的Android安全机制是做不到这一点的。
(4)用户撤销已授予某个应用权限的唯一方法就是卸载该应用。
以上安全缺陷不仅降低了Android平台的可用性,同时导致平台容易遭受应用层权限提升攻击,具体又可分为混淆代理人攻击和共谋。
混淆代理人攻击[3]是指恶意程序利用其它程序的未保护接口来间接获得特权功能,普遍存在于Android缺省程序(如电话、闹钟、音乐和设置程序)以及第三方程序中[4,10,11]。如图1所示,应用程序A没有P1权限,因此CA1无法访问被P1权限所保护的组件CC1。然而,由于组件CB1提供了未被P1保护的开放接口,因此CA1可以利用CB1间接地使用CC1的功能,这样就形成了混淆代理人攻击,也被称作权限机制的Re-delegation问题[11]。ASE(Android Scripting Environment)程序具有发送消息、打电话、读联系人、访问照相机等权限,Lucas Davi[3]就描述了利用ASE程序的漏洞进行的特权提升攻击。
恶意程序可以通过共谋来合并权限,从而执行超出各自特权的动作。例如,Soundcomber[4]通过拥有录音权限的程序和拥有互联网权限的程序共谋,从通话过程中捕获信用卡号并泄漏给远程敌手。共谋程序可以直接通信,也可以利用Android核心系统组件中的公开信道或隐蔽信道,甚至内核控制的信道来通信。
2 研究现状
Android的开放性吸引众多攻击者的同时也吸引了广泛的安全研究人员对其安全性增强工作展开了多方面的研究,并已有很多现实成果。按照系统组成层次,可以将Android安全增强工作分为硬件层、虚拟机层、操作系统内核层、应用框架层等,如图2所示。而对于应用层,则主要集中在对于软件的静态分析上。
2.1 硬件层安全增强
硬件层安全增强主要是通过对现有硬件进行改造,扩充一系列的安全机制,设计出可信的硬件设备,从系统最底层监测和控制系统的运行行为,从而实现整个系统的安全性增强。David Kleidermacher[12]就提出利用ARMTrust Zone?来提升Android设备的安全。Trust Zone允许基于硬件形式的系统虚拟化,它提供普通和可信/安全两个区域,用户经常使用的多媒体操作系统运行在普通区中,安全关键软件运行在安全区中。安全区管理软件可以访问普通区的内存,反之则不可能。与Intel VT等其它硬件虚拟化技术不同的是,普通区的客户操作系统与没有Trust Zone时相比并不产生额外的执行负载。Trust Zone技术已经基本成熟,大量的移动终端使用的ARM平台都支持该技术,可以在移动终端平台借助于该技术,实现安全支付、安全输入和安全显示。近来ARM宣布为Cortex-A15提供虚拟化支持[13],它能够与ARM的Trust Zone安全系统整合在一起。
2.2 虚拟机层安全增强
硬件层安全增强需要对现有硬件进行更改,所以改进成本高、难度大、周期长。因此,研究人员提出了基于虚拟化技术的安全增强方案。通过虚拟化技术,实现公私分离与平台整合,并且由于虚拟机监视器具有比操作系统更高的权限,所以可以利用它完成平台行为的监测和管控,从而提高整个系统的安全性。目前在移动终端领域的虚拟化产品主要有vmware、L4Android、OKL4、Xen等。其中,L4Android[14]是一个基于L4Linux的开源项目,支持在虚拟机上同时运行多个Android实例。文献[14]就提出了虚拟SIM卡用于近距离通信(Near Field Communication,NFC)、统一的公、私两用手机、移动Rootkit检测和硬件抽象层等应用。
2.3 操作系统内核层
Android本身是一个基于Linux内核的移动终端软件栈,所以Linux内核已有的安全增强方案同样适用于Android的底层操作系统内核。Linux内核安全增强工作普遍基于Linux安全模块LSM(Linux Security Module)实现。LSM在内核关键路径上插入了很多钩子(如文件类、进程间通信类和socket类操作)作为策略实施点。各种安全模块可以通过内核提供的接口挂接感兴趣的钩子。按照实现原理主要分为:基于标签的安全增强工作,如SELinux等;基于路径名的安全增强工作,如App Armor和TOMOYO Linux等。
(1)SElinux
SELinux起源于NSA的Flask研究项目,支持TE、RBAC和MLS等安全模型。基于用户态装入的策略来进行授权决策。将SELinux应用于嵌入式环境的主要难点在于:
策略配置困难,SELinux的参考策略中包含50多类客体,每种对应于20多个权限。
文件系统缺乏对扩展属性的支持:SELinux利用文件系统的扩展属性EA(Extended Attribute)来持久化存储文件的安全上下文,但嵌入式文件系统普遍缺少对扩展属性的支持。
Android默认情况下并未启用SELinux安全机制,Shabtai[15]通过以下工作实现了基于SELinux的Android保护:
重新配置Linux内核编译选项来支持SELinux。
交叉编译loadpolicy、chcon以及context工具,分别用于装入策略到内核、改变文件安全标签、以及为init启动的守护进程设置标签。通过对Android init程序以及初始化配置文件init.rc修改,完成策略的引导时装入和init进程标签。
使用上下文指针的方式显式标记进程。
(2)TOMOYO Linux
Trust Droid[8]是利用TOMOYO Linux来进行内核级的强制访问控制很好的例子。TOMOYO Linux包括一个Linux内核补丁(ccspatch)和一组访问控制策略管理工具(ccstools)。Android基于Linux的DAC机制来实现不同应用之间的数据隔离。TO-MOYO基于Android应用程序UID和数据文件/目录的UID来进一步确保应用程序的数据文件不被其它应用访问。
(3)其他
在Android平台与PC进行数据同步、程序员进行应用开发时,常会涉及ADB(Android Debug Bridge),这是一个数据同步与程序调试工具,PC通过ADB登陆Android手机,且可轻易获取root权限。ADB一旦从计算机以root身份登录Android手机,会给手机的应用程序和用户数据造成安全隐患。刘昌平等[16]就针对此类问题在Android手机的内核中增加访问控制模块,并根据手机用户定制的访问控制策略来控制计算机通过ADB daemon对文件及文件系统的访问。
2.4 中间软件层的安全增强
Android应用框架层的活动管理器负责管理应用程序的生命周期,它所包含的引用监视器负责验证组件间通信的调用者是否具备被调用者所要求的权限。软件包安装程序负责安装程序,而包管理器则负责维护系统中所有应用程序的信息。Android框架层的安全增强主要是对包管理器以及引用监视器等的改进。根据授权时间和权限检查基点可将应用框架层的安全增强又分为安装时权限机制扩展和运行时动态权限检测,以及隐私数据保护和完整性度量几个方面。
(1)安装时权限授权机制扩展
安装时权限授权机制扩展主要是针对2.3节中提到的授权缺陷,对包管理器进行改进,使得用户可以在只授予应用部分权限情况下正常使用应用的部分功能,或者可以根据用户的时间、地点、消费状况、短信发送情况等动态的授予和回收应用权限,从而增强用户对应用权限的可控性,进一步提高系统的安全性和可信性。这方面已有的工作主要包括Kirin[17]、Saint[18]、A-PEX[19]等。
Kirin主要是基于一组策略不变式来决定是否授予请求的权限,通过分析Android应用程序的Manifest文件来保证授予的权限符合系统策略。可用于检测要求危险权限组合的程序,例如要求电话状态、录音和互联网连接的权限组合被认为是危险的。Saint则可以控制应用程序安装时的权限分配,它允许声明权限P的应用根据应用签名、配置、以及运行上下文等条件,依据开发者自定义的安全策略,对本应用的对外接口实施保护,从而防止混淆代理人攻击。APEX通过对包管理器进行修改,使得用户可以根据特定的时间、地点、平台使用状况授予/撤销应用申请的权限。
(2)运行时动态权限检测
Android应用程序使用组件间通信(ICC)机制来检索资源和数据,与ICC相关的信息使用Intent来封装,它被传递给Context.start Activity()、Context.start Service()等方法。这些方法是由Application Context类实现的,它将控制信息又传递给ActivityManager Service类,在这里确定需要处理Intent的组件。然后,UID和访问组件所要求的权限被作为调用check Component Permission()的参数,这样就实现了基于权限的强制访问控制机制。然而,Android权限机制具有易受权限提升攻击的缺陷,并且对于上下文是不敏感的。在防止权限提升攻击方面,目前已有工作主要是XMan Droid[8]、IPC Inspection[20]和Quire[21];在感知上下文方面则主要有CRe PE[22]、Con UCON[23]等。
XMan Droid是一个基于系统策略检测和阻止应用程序运行时特权提升攻击的安全框架,可以有效检测通过Android系统服务或内容提供者建立的(隐蔽)信道。XMan Droid使用图来表示系统,图的节点表示应用程序,无向边表示被授权的组件间通信。策略检查算法判定新的组件间通信的边是否能够完成系统视图中的路径,路径就对应于策略规则。如果满足则拒绝建立组件间的通信链接,从而达到防止权限提升攻击的目的。IPC Inspection则将被调用者的有效权限减少为调用者与被调用者权限的交集。触发权限缩减的事件包括:启动服务,绑定服务,收到广播的Intent等。同时,通过为新的请求创建新的实例来防止被调用程序的有效权限缩减为空集。但IPC Inspection的机制与最小授权原则有冲突,例如条形码扫描程序拥有“照相机”权限来照相然后返回编码的文本串。通常调用条形码扫描程序的应用不需要“照相机”权限,也无需直接从相机读取数据。但如果采用IPC Inspection机制,那么就要求调用程序必须拥有“照相机”权限,因而违背了最小特权原则。
CRe PE是一个能实施细粒度策略的系统,策略可以在运行时依赖于智能手机的上下文变化。上下文可以根据某些变量的状态来定义(例如位置、时间、温度、噪声和光),或者其它设备的存在、用户与智能手机的特殊交互等。上下文敏感的使用控制模型Con UCON则利用上下文信息来实现细粒度的、灵活的智能平台数据保护和资源使用控制,它关注的上下文包括电池、设备位置和时间等。
(3)隐私数据保护
在平台安全增强方面,除了从权限着手来保护隐私数据外,还有一部分研究是将重点放到数据本身,通过监控隐私数据的动向来保护私密数据不被泄露。这方面的工作主要包含私密数据伪造和动态信息流追踪两方面。
(1)私密数据伪造
TISSA[24]在Android上实现了隐私模式,使用户能够细粒度地灵活控制应用程序可以访问的个人数据。授予的访问权限可以在运行时根据不同时间或位置等场景进行动态调整。根据对应用程序的隐私设置来提供匿名、信任或虚假数据。Mock Droid[25]可以实现虚假位置信息、空的联系人列表、虚假设备ID、无可用无线网络等功能。App Fence[26]将位置和电话ID替换为虚假数据。
(2)动态信息流追踪
Taint Droid[27]假设下载的第三方应用程序是不可信的,实时监控这些程序访问和操作的私人数据。主要目标是检测敏感数据通过不可信应用程序离开系统,以及辅助对程序行为的分析。Taint Droid自动为来自隐私敏感数据源的数据打标记(污点),并在数据通过程序变量、文件和进程间通信传播时维护标记的传播。当带有污点的数据通过网络传输或其它途径离开系统时,Taint Droid日志记录数据标记,传输数据的应用程序以及数据的目的地,实现了对多敏感数据源的同时追踪,对系统性能影响小于14%。
(3)完整性度量
隐私数据保护中采用的信息流追踪和数据伪造只能确保数据的私密性,对于数据完整性无法保证,平台完整性很可能遭到破坏,所以必须对平台完整性进行度量和验证。但是由于Android软件栈使用了Dalvik虚拟机,可信计算中的远程证明技术并不能直接部署在Android上。Mohammad Nauman[28]等就针对该问题提出了一种专门为Android定制的远程证明机制,可以在虚拟机层度量Android应用程序。主要是通过修改Android的类加载器Path Class Loader来实现的。由于现在手机上还没有任何TPM或MTM实现,因此Nauman实现了一个最小的TPM仿真器。
2.5 应用程序静态分析
硬件层、虚拟机层、操作系统内核层、应用框架层作的安全改进都是基于移动终端的。实际上,还有相当一部分Android安全研究工作是基于电子市场,对应用程序作静态分析,检测应用是否存在危险权限组合、是否违背最小特权原则、是否存在诸如缓冲区溢出这样的漏洞。例如,Enck设计并实现了Dalvik反编译工具ded[29],使用Fortify SCA静态分析套件对应用进行了控制流分析、数据流分析、结构化分析和语义分析。控制流分析对输入程序P的动作序列进行限制,将其中的一些归类为错误。数据流分析允许对输入程序的有问题数据流进行描述。结构化分析允许对输入源代码的抽象语法进行模式匹配。语义分析允许对输入程序所使用的数值进行一些限制描述。分析表明系统存在敏感信息泄漏、未保护的广播接收者、Intent注入攻击等安全问题和隐患。Com Droid[30]对Dedexer工具生成的反汇编DEX字节码进行分析,检查Intent的创建和传输来识别应用程序间通信的广播窃取、服务劫持、恶意广播注入、恶意服务启动等脆弱性。SCANDROID[31]是一个能自动推理Android应用程序安全的工具。它从Android应用程序的Manifest文件中提取安全规范,并检查应用程序间数据流与规范的一致性。SCan Droid是基于WALA Java字节码分析框架实现的,由于它是在反汇编工具ded之前提出的,因此只能评估开源的应用程序。Chaudhuri等[32]研究用形式化语言来描述Android应用程序,提出了一个类型系统用于推理数据流安全性质。但Chaudhuri的工作要求为组件增加复杂的类型注释,在实现中会给开发人员带来严重的负担。Woodpecker[33]基于开源反汇编程序baksmali实现静态分析,采用过程间数据流分析技术来系统地检查不可信程序非授权访问敏感数据或执行特权操作的权能泄漏问题。检测显式权能泄漏(利用公开接口,即混淆代理人攻击)和隐式权能泄漏(利用相同签名密钥所签名的其它程序的权限,即共谋攻击)。结果表明13个特权权限中有11个存在泄漏问题,可在不申请任何权限的情况下被恶意用于擦除用户数据、发送短信、记录用户通话和获取用户位置数据等。
研究表明,静态分析技术有助于识别Android应用程序申请了多余权限或提供未保护的开放特权接口等安全缺陷,但容易受到各种迷惑技术的影响。此外,Java反射机制是开发正确、完备的程序分析必须要解决的一个问题,因为反射机制允许在运行状态中对于任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。因此,解决反射调用仍是一个开放研究领域。
3 趋势与展望
随着智能手机的性能逐渐向计算机逼近,基于智能手机的业务处理也将向计算机逼近,智能手机将会成为真正的计算机;同时,政府、军队、企业的网络信息管理部门将会切断内网与社交网络的连接,员工以往的社交网络服务将会由他们的个人智能手机提供;此外,以往的安全站点将会因为智能手机的广泛接入新增许多安全隐患[34]。因此,针对智能手机(尤其是已成为主流平台的Android)的安全研究将会是一项长期而艰巨的任务。
虽然经过几年的研究,研究人员已取得诸多理论、实践成果,但还是存在诸多不足之处,主要体现在一下一个方面:
(1)安全策略多种多样,策略之间兼容性差:由于许多安全策略的侧重点不一样,导致需要对原生系统的更改点也不一样,从而使得各安全系统的版本多种多样,系统间的兼容性有待检验。
(2)粗粒度的授权控制机制,导致系统误报率高,可用性较差:鉴于移动平台资源受限的实际情况,为了降低系统性能的损耗,许多安全策略使用了粗粒度的控制方法。但是随着移动平台性能的提升,细化安全策略的控制粒度应该被提上议事日程。
(3)以用户为中心,依托用户完成授权工作,极大地降低了系统的安全性:虽然已有的安全工作理论上都有很高的安全性,但是它们大多是将授权与否的最终决定权交予没有专业知识的广大用户,这样无疑会将策略的安全性大打折扣。
综合考虑已有工作存在的缺陷以及智能平台未来的发展,针对Android的安全研究工作将来可能围绕以下几个方面展开:
(1)构建一种统一的通用的安全增强框架,如图3所示:借鉴Linux内核层的LSM框架模型,在Framework层同样构建一个通用的服务接口库,现有的安全策略可通过挂接服务接口直接启用,从而降低策略实现的难度和成本,并且可以增加策略间的兼容性。例如,在目前的大多数安全模型中,主要是更改Package Manager Service、Activity Manager Service等,前者可感知平台所有已安装应用的详细情况,后者负责应用间通信建立。在Package Manager Service中,可在install Package()中添加一个应用安装接口install Package Secure Hook(),该接口更具安全策略模块的不同建立不同的应用信息数据库;同时,由于应用建立通信或访问数据资源时,会通过Package Manager Service对应用的权限进行检查,所以可在其中添加check Permission Secure Hook()接口,更具具体策略,返回权限授予状态。此外,为了解决Framework层和Linux内核层的策略鸿沟问题,可在两者间建立一个桥接引擎,这个引擎既可以是一个策略决策引擎(如XMan Droid中的策略决策引擎),也可以是一个简单的数据共享文件或共享存储区。
(2)进一步细化策略控制粒度,提高系统可用性:将策略控制的粒度由应用沙盒细化到应用本身、由消息层细化到变量层、由数据读写细化到数据的读和写等;例如,Barrera使用神经网络算法SOM(Self Organizing Maps)分析了权限的使用情况[35],分析表明很少的一些权限被频繁使用,而大多数权限只被很少的程序使用。因此,对INTERNET等被频繁使用的权限可以进行进一步的细分,而对“安装/卸载”等很少被使用的权限可以进行合并。
(3)构建一种智能的策略决策引擎,将决策权交由系统完成:在XMan Droid中就提到,用户只需选择平台所处的安全级别,其余的工作全部交由系统完成,这样就可以在改善用户使用体验的同时提高策略的安全性。
(4)安全开发工具研究:由于Android的开放性使得应用开放人员层次差异较大,导致开发出的产品大多存在安全漏洞,尤其是权限保护方面。所以,为开发人员研究一种可自动检测权限申明是否符合最小特权原则等安全规则的开发工具是十分必要的。
4 结语
Android开源平台的流行吸引了众多攻击者和安全研究人员的广泛关注,本文首先介绍了Android原生系统的安全机制及缺陷,然后采用层次化的分类方法对已有工作进行了分析总结,最后从现有工作中存在的不足提出了一些未来的研究方向和重点,对Android的安全研究工作具有一定的指导意义。
Android安全机制之设备管理 篇2
Android除了给予用户进程以单独的uid外,给系统服务也分配了固定的uid,诸如system/core/include/private/android_filesystem_config.h文件中定义了这些固定的uid:
#define AID_SYSTEM1000
#define AID_RADIO1001
#define AID_BLUETOOTH1002
#define AID_GRAPHICS1003
#define AID_INPUT1004
#define AID_AUDIO1005
#define AID_CAMERA1006
#define AID_LOG1007
..........传统的做法是,出了root,其它全是普通用户,两类用户的权限在内核里是规定死的,这也保证了UNIX内核的安全性。比如dev目录下的设备文件,一般用户主是root,而且对其他用户不开放读写能力。用户使用设备一般通过系统调用如ioctl,而系统调用属于受信代码。
Android的问题是,引入的这些系统用户,实际上在权限方面是无法与普通uid区分的,如果系统用户能访问一个设备,那么一般用户也能。所以,Andoid没有别的选择,只能默认开启设备文件的全局读写。这在systemcore/init/device.c做了定义:
{ “/dev/urandom”,0666,AID_ROOT,AID_ROOT,0 },{ “/dev/ashmem”,0666,AID_ROOT,AID_ROOT,0 },{ “/dev/binder”,0666,AID_ROOT,AID_ROOT,0 },设备文件当然还是存放于/dev目录下,但dev目录的填充不是由udev做的,而是由Android的init进程做的。这个步骤由make_device函数完成,各个设备的权限来自于上述device.c文件的规定。
Android安全 篇3
在所有分析结果中最重要的发现是,虽然当前这些最受欢迎的移动设备操作系统在设计之初都将安全因素纳入考虑范围,但它们在保护定期传入移动设备中的企业敏感资产这一方面仍然做得不够。更为复杂的是,现在越来越多的移动设备可以随心所欲地与第三方基于云及桌面的服务生态系统进行同步连接,而这些均不受企业控制,并且很有可能让企业的重要资产面临更大的风险。
这份报告对苹果iOS和谷歌Android(安卓)操作平台的安全模式进行了详细分析,并根据当前主要安全威胁对每款产品的安全性都进行了评估。当前网络的主要安全威胁包括:
* 基于网站和网络的攻击
* 恶意软件
* 社会工程学攻击
* 网络可用资源和服务滥用
* 恶意和无意的数据丢失
* 对设备数据完整性的攻击
这份分析报告最后得出了一些重要结论:
* 与传统桌面操作系统相比,尽管iOS和Android(安卓)移动设备操作系统在安全性方面有所改进,但仍比较脆弱,无法抵御现有的很多类型攻击。
* iOS所用的安全模式能有力地抵御传统恶意软件的攻击,这主要得益于苹果公司拥有严格的应用程序认证程序及软件开发者认证程序,通过这些认证,每款软件的作者都有相应身份记录,有利于杜绝恶意攻击软件。
* 谷歌的认证程序则没有那么严格,它允许任何软件开发者在匿名状态下创建和发布应用程序,而无需接受检测。缺乏认证是导致现在针对Android(安卓)的恶意软件越来越多的原因。
* Android(安卓)和iOS用户经常将其移动设备与第三方云服务(如web日历)和家用台式电脑同步连接。这有可能会在缺乏企业监管的情况下,使储存在这些移动设备上的企业敏感数据存在外泄风险。
* 所谓的“越狱”设备,或者安全性能被禁用的设备,它们的安全性与传统电脑一样脆弱,从而常常成为恶意软件攻击的目标。
评论
Android安全技术分析 篇4
1 Android系统架构
Android系统架构由如下图所示的应用程序层、应用程序框架层、Android系统运行库层以及Linux内核层,四层结构。
2 Android安全机制
Android安全机制中由于传统的Linux安全机制、Dalvik虚拟机的安全机制和Goolge设计了Android特有的安全机制。
2.1 应用程序签名机制
2.1.1 签名的说明
开发者数字签名对每一个应用程序都必不可少。为了标志代码作者和监测应用程序的改变,开发者需要拥有私有秘钥。从而可以在应用程序之间安全的共享资源。不同的应用程序通过相同的签名可以相互授权访问API。可以相互访问代码和数据是因为程序共享UID,运行在同一进程。
2.2 沙箱
2.2.1 进程沙箱概述
一个操作系统级别的应用程序“沙箱”是UID不同的应用程序形成隔离,独立运行于各自的进程。Android将多用户操作系统的隔离机制运用于应用程序之上。
2.2.2 Linux安全中的UID
Linux中的每个进程都关联一个用户UID。Linux中的每个文件都有Read、Write和Execute三种权限,这三种权限划分为三组Owner、Group和Other用户属性。
因此,由于主用户组和补充用户组的存在,每一个进程除了有一个对应的UID之外,还对应有一个主GID,以及若干个Supplementary GIDs。
2.2.3 Android安全中的UID
(1)Android中UID的生成。
Android的APK都是运行在由init进程fork出来的Zygote进程,再由Zygote进程fork出来的独立的应用程序进程里面。Zygote进程的UID仍是ROOT。然而,他们的UID会被修改为APK的UID。
(2)Android中的UID的安全。
如果要让两个APK共享同一个UID,那么就需要在Android Manifest中配置android:shared User Id属性。
2.3 权限机制
2.3.1 权限机制简述
Android通过相当于Linux的安全机制的安全机制,采用为每一个应用程序分配不同的UID和GID,使得应用程序之间因为权限的不同产生隔离。此外Android还添加了特有的一种permission机制,可以针对具体操作进行权限细分和访问控制,同时提供了per-URI permission机制,用来提供对某些特定的数据块进行ad-hoc方式的访问。Permission本质上是一种访问控制机制。
权限主要包括以下信息:权限的名称;属于的权限组;保护级别。Android权限等级划分为normal,dangerous,signature,signature Or S ystem,system,development,不同的权限表示不同的认证方式。
2.3.2 权限申明源码分析
在linux启动成功后,init进程根据init.rc配置文件启动Android系统,启动了Service Manager。接下来启动创建了Dalvik虚拟机的Android程序的孵化器zygote,同时启动了systemserver。Systemserver启动Activity Manager和Package Manager等一系列的服务。Activty Manager会负责启动一个应用程序,安卓编程里start Activity就是通过Activty Manager来实现的。Package Manager会负责应用程序的安装。
Android权限机制的实现贯穿应用层、框架层、系统层。
Android Manifest.xml对应应用层。
/data/system/packages.xml对应框架层。
Android系统并不将应用程序的GIDS保存起来,而是在启动的时解析这些信息,并且保存到了静态变量里面。这个静态变量就是m Packages。
frameworks/base/data/etc/platforms.xml也对应于框架层。
2.4 组件的可访问性
应用程序组件可以被分为公共的和私有的,一个公共的组件可以被其他的应用程序访问,然而它仍然要求检查访问的应用程序是否具有要求的权限,才可以被应用程序访问。另一方面,一个私有的组件只能被包含它的应用程序访问。
3 总结及展望
Android安全研究的热点有手机与内核漏洞挖掘利用、Android应用与系统框架的漏洞挖掘、支付安全、和企业安全BYOD等。本文分析了Android系统提供了安全机制,然而在巨大利益的驱动下,Android系统已经暴露出了巨大的安全威胁,严重的威胁着用户的使用安全,并且随着Android系统市场份额的增加,安全威胁也必将进一步增强。
参考文献
[1]丁丽萍.Android操作系统的安全性分析[J].技术研究,2012(03).
Android安全 篇5
在此之前,你的理解安卓应用程序中的组件是何方神圣。安卓组件是构成安卓应用的基础,这些组件都可以在安卓manifest.xml文件中去配置。这里我们简单的介绍其中四种相对来说较为重要的组件。
组件描述
Activities控制用户UI,处理用户在智能手机屏幕上的交互
Services无须可视化界面,提供后台长时运行的功能
Broadcast Receivers处理安卓应用程序与安卓系统之间的通信
Content Providers处理数据与数据库之间的管理问题
Activities
一个Activity组件代表一个简单的用户界面。举例子说,Email应用可能有一个Activity组件用来显示新邮件列表,一个Activity组件用来写邮件,再有一个Activity组件用来读取邮件。一个Activity是一个界面,多个Activity表示多个界面。
一个Activity作为Activity class的子类执行,如下
public class MainActivity extends Activity {
}
Services
Services是一个提供后台长时间运行的组件。比如当你在听音乐的时候你依旧可以正常使用其他应用,再或者你也能够打开网络连接上网,而不影响用户的交互行为。
一个Services作为Services Class的子类执行,如下
public class MyService extends Service {
}
Broadcast Receivers
广播只是回应来自系统或者其他应用的广播消息。比如,应用程序可以启动广播告知其他应用设备中已经存在的数据,以及可以使用的数据等等。
一个Broadcast Receivers作为Broadcast Receivers Class的子类执行,如下
public class MyReceiver extends BroadcastReceiver {
}
Content Providers
Content Providers组件存储和取得数据,以及让它对所有应用程序可见。Android整理了一大堆content provider给公共数据类型(音频、视频、图像、联系人信息等等)。
一个Content Providers作为Content Providers Class的子类执行。必须使用一个标准的API,这样其他应用程序才能执行协议
public class MyContentProvider extends ContentProvider {
}
附加组件
以下这些组件可能我们也会用到,这里暂且简单的介绍一下。
组件介绍
FragmentsFragment表现Activity中用户界面的一个行为或者是一部分,
Views是最基本的UI类,基本上所有的高级UI组件都是集成子View类的实现。
LayoutsLayout 是一个可横向和纵向排列布局的一个容器,布局组件。
IntentsIntent本身为一个数据载体,可以描述想要执行的操作以及用于这个操作的数据和其它属性
Resources外部元素,比如字符串,常量,图片等等。
Manifest应用配置文件
Android:exported
组件的中最重要的属性就是android:exported,以下文字来自于安卓官方文档
这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。
这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。
因此,如果一个Activity属性为exported,那么他就可以调用外部应用程序。为了测试InsecureBank应用中的Activity,我们首先打开Genymotion模拟器中的InsecureBank应用并启动后端服务。
一旦我们启动这个应用,我们就可以看到这个登录界面。如果登录成功过后activity的属性为exported,我们就可以直接调用activity
接着我们来看看manifest文件,或许我们能够找到相关的activity。如下图所示,首先使用apktool解压应用
下面就是manifest文件的样子咯。正如你看到的,有一个名为.PostLogin的Activity组件属性为exported
我们可以在模拟器中使用activity manager工具直接调用这个activity,我们来看看吧
使用am tool启动一个activity,命令如下
adb shell
am start -n com.package.name/com.package.name.ActivityName
在这个例子中,我们可以在manifest文件中看到这个包的名字为com.android.insecurebankv2
所以,我们使用如下所示命令来调用PostLogin activity
在这个应用中,你可以看到你已经成功绕过了登录页面
你也可以使用drozer调用Activity或者其他组件,下一节我们来介绍drozer。
这里有几个方法可以防止这类漏洞。
首先,除非真的有必要,请将android:exported 属性设置为FALSE
其次,如果应用需要调用特定的外部应用程序,你可以为activity组件增加自定义权限,仅仅允许应用程序请求权限调用activity组件。
Android安全 篇6
对于这项拟议中的收购,我有两个问题。第一,我们为什么要考虑批准这项协议?第二,什么时候以及出于什么样的原因我们停止了对于垄断权力的担忧?
先说第一个问题,宽带互联网和有线电视都已经是高度集中的行业,少数几家公司拥有大多数的客户。
曾几何时,反垄断机构看到这种情况,极有可能会采取行动,削减康卡斯特的规模,不可能任其扩张。
康卡斯特的首席执行官表示不必担心,“因为我们的公司之间没有业务重叠,也不存在相互竞争,所以不会降低任何相关市场的竞争。”然而,这种说法明显是虚伪的。对于康卡斯特扩张的担忧并非是它减少了当地市场的客户竞争。
首先,当地市场几乎没有任何有效竞争。真正的问题在于,康卡斯特对内容提供商在使用其数字管道的条款方面,具有比现在更大的规定权力—这种迫使其业务上游达成苛刻协议的能力,将使业务下游的潜在竞争对手挑战其当地的垄断公司变得更加艰难。
关键的问题在于康卡斯特完全符合对旧时强盗式垄断者的描述。就像中世纪的军阀,镇守城堡,俯瞰莱茵河,向所有过路者征费。事实上,收购时代华纳会让康卡斯特增强其防御能力,这当然是一个坏主意。
有趣的是,在人们为支持这项收购而引用的陈词滥调中,似乎缺少了一个经常挂在嘴上的说法:我还没看到有人说,这笔交易能促进创新。也许是因为这样说会遭到嘲笑。
实际上,许多专家—本杰明·N·卡多佐法学院的苏珊·克劳福德在其新书《被俘获的观众》中直击这一案例,就提出巨型电信公司已经扼杀了创新,让美国越来越落后于其他发达国家。
而且,我们有充分的理由相信,不仅电信行业如此,垄断权力已经严重拖累了整个美国经济。
过去两党在支持强硬的反垄断执法上有着共识。然而,在里根时代,反垄断政策走向没落,并且从那时起,衡量垄断权力的各种指数,比如任意指定行业的销售集中在少数大公司的程度,一直在快速攀升。
起初,反对控制垄断权力的观点认为,兼并会带来经济效益上的所谓好处。后来,它成为了一种普遍的论调,世界已经发生了改变,那些关于垄断的旧式的担忧已经无足轻重。
难道我们不是生活在全球化竞争的时代吗?新技术的创造性破坏不是在不断推倒旧的工业巨头,创造新的巨头吗?但事实却是,许多商品和服务并不存在国际竞争:新泽西州的家庭不会成为韩国的宽带用户。同时,创造性的破坏已经被过分推销:微软可能是个走下坡路的帝国,但是它仍在依靠几十年前建立起来的垄断地位获得巨大的利润。
此外,垄断本身就是一个创新障碍。克劳福德很有说服力地论证了,电信巨头不受制约的权力已经消除了对于进步的激励:当你的客户无处可去的时候,为何还要升级你的网络或者提供更好的服?务?
同样的现象在阻碍整个经济的发展。人们对美国经济最近的表现感到不解,其中一个便是利润和投资的脱节。利润在GDP中的占比达到创纪录的高度,而公司没有利用这些利润进行再投资。相反,它们要么在回购股票,要么在积累大量资金。如果这些创纪录的利润中的很大部分代表垄断租金,人们就会看到这种情况。
换句话说,是到了要重新担心垄断权力的时候了,其实我们本该一直如此。而回归正轨的第一步就是,对康卡斯特的收购说“不”。
马克提要求了。
2月24日,西班牙巴塞罗那。身穿深灰色T恤的马克·扎克伯格(Mark Zuckerberg),出现在全球最大的通信展MWC的开幕演讲台上。“运营商该自己选择一部分基础服务免费提供给用户。我们正试着打造一个对互联网以及运营商更好的商业模式。”他对着台下数百位媒体记者和参展商说,试图说服运营商让全球2/3未联网人口用上互联网—特别是Facebook。
这是扎克伯格和他创建的社交网络王国,第一次出现在一个被通信运营商和手机硬件厂商所主导的展会上。三星租下了这里最大的场馆,操着一口浓重英国口音的主持人站在40台平板电视组成的巨幕前做着介绍。说着各种语言的媒体和参展商人员挂着印有华为字样的胸牌,在闷热的会场里穿梭。比起CES,硬件商更加重视MWC。在扎克伯格之前,另一些互联网及软件巨头也在这里出现过,比如Google、微软和Twitter。
这位即将过30岁生日的CEO有资格提出自己的要求,马克·扎克伯格现在已经成为移动产业的领袖级人物。Facebook1月发布的财报显示,截至2013年第四季度,全球共有9.45亿用户每月通过手机使用Facebook,占这个社交网络所有用户的3/4。移动广告也随之成为Facebook最大的收入来源,占其全部广告收入的53%。
但21个月前,这个全球最大的社交网络公司刚上市时,它并不被认为是一个重要的移动服务,它当时的移动广告收入也基本可以忽略不计。
移动互联网,本来是Google的天下。
Google从2003年起就开始部署移动市场,它不仅拥有一个让手机硬件世界变平的Android系统,还在不断尝试将自己的社交网络Google+塞进每一部Android手机。在Google一手建立起的移动世界,它占据了48%的移动广告市场份额。这个操作系统所向披靡,就在这次巴塞罗那通信展上微软和诺基亚推出了Android操作系统手机—这本来应该是这次会展中最大的新闻,但因为Facebook的出现而黯然失色。
就在扎克伯格抵达西班牙前的一周,这家公司宣布以190亿美元的惊人价格收购WhatsApp,一个轻量级手机通信应用。Facebook为此支付的现金和股票约合公司市值的1/10。为了在手机上获得一个重要入口,Facebook表现得不顾一切。
nlc202309021122
Facebook通过收购WhatsApp得到的东西也很可观:它拥有4.5亿活跃用户,其中七成以上每天都用它收发消息。除信息以外,这些用户平均每天还通过WhatsApp收发超过5亿张照片、2亿条语音信息和1亿段视频。创办五年的WhatsApp正随智能手机的普及而高速增长,其用户的半数是在过去一年里加入的,并且每天新增超过100万注册用户。收购后WhatsApp将会独立存在,而不是整合进Facebook现有的通信服务。
与Google通过Android平台最大化移动广告的收益不同,Facebook的移动战略是在主应用以外推出不同的独立应用—用一些看似分散的应用及服务来构建一个生态系统。在1月底的营收电话会议上,扎克伯格提到,将成立创意实验室,并支持小团队实践自己的想法。扎克伯格说,他这么做是因为“要想连接所有人”,就意味着让他们能在不同群体里分享不同内容。
Facebook工程总监乔斯林·戈德法因(Jocelyn Goldfein)今年年初接受采访时说,她根据应用反馈的数据发现“用户打开Facebook更多会去看别人更新的照片和状态。而打开独立的消息应用则会相互用短信联系”。多应用的移动社交应用策略同样被应用于Facebook之前的收购。分享社区Instagram以10亿美元加入Facebook以后依然保持独立运作。用户每天上传大量加了滤镜的照片,唯一区别是他们可以通过Facebook帐号来登录了,并且现在可以拍视频。Facebook现在可以通过帐号关联每个用户在不同服务上的数据,更准确地判断用户的喜好,从而为广告客户提供更精确的投放。照片和视频的加入也为Facebook提供了更丰富的广告载体。在刚刚过去的一年,Facebook拿下了全球移动广告市场15.8%的市场份额,这个数字超过了市场研究公司此前12.9%的预测,位居全球第二。虽然和排在第一的Google(48.76%)仍有较大差距,但Facebook显示出惊人的增长速度。Facebook在2012年正式进入这个市场,当时份额仅为5.34%,Google为52.25%。在Android官方应用商店Play Store全球下载前5名的应用里,有3个属于Facebook,还有1个是利用Facebook网络的社交游戏。
微软也打算这么干。
就在马克·扎克伯格准备发布开场演讲的那个早上,另一群媒体记者和参观者则涌向诺基亚展厅。诺基亚还能得到如此追捧的原因是它们将发布诺基亚Android手机。新推出的三款Android手机被称为诺基亚X。该系列手机配置不高,海外售价在89至109欧元之间。它们延续了诺基亚的聚碳酸酯外壳和重视色彩的视觉设计,不论硬件配置还是产品定位都和最低端的诺基亚Windows Phone手机Lumia 520相当。
已经没有多少人感慨诺基亚的命运了,只有一位Google Android软件工程师在Twitter上嘲讽说:“记得我们刚拿出Android的时候,鲍尔默还嘲笑说Android是个永远不可能成真的笑话。”
这句话也可以用来嘲笑微软。一家打出“Windows无处不在”这句广告标语的公司去支持另一个操作系统确实有点讽刺,不过转型也不失为一种可行的策略。不管是微软还是诺基亚,都曾试图以自有的操作系统平台打败Android,经过两家公司三年的全力投入,Windows Phone平台在智能手机市场的占有率缺依然不足4%。
诺基亚前CEO、未来的微软设备业务负责人斯蒂芬·埃洛普(Stephen Elop)直白地在发布会上说诺基亚拿掉了全部的Google服务,以微软服务取而代之。X手机预装的微软服务包括Skype通信服务、OneDrive网盘、Bing搜索、Outlook. com邮件等。埃洛普承诺会继续增加更多微软服务。除了微软服务,Facebook、Twitter这两个社交网络以及BBM通信服务也被预装在X手机上。诺基亚在发布现场演示了植物大战僵尸2游戏。讽刺的是如果用户购买定位更高的Windows Phone手机,根本没法玩这个游戏。
兼容丰富的Android应用毫无疑问是X手机得以诞生的重要原因,埃洛普许诺说,诺基亚自己的应用商店会提供数以万计的应用,如果用户找不到自己想要的应用,诺基亚会自动指向第三方应用商店,比如国内的豌豆荚和东欧流行的Yandex。这款手机也将开启微软Office办公软件、Xbox Live联网游戏平台、Bing搜索等服务的潜在市场。
它们最终拥抱了Android,但同时,它们也甩掉了Google。
没人在意操作系统了,Google的打法好像突然间遇到了大问题。
Google的打法本来极其清晰,用开放的Android统一手机硬件,使得苹果iOS系统的市场份额逐渐缩小—在2013年推向市场的10亿部智能手机中,Android系统7.8亿部、iPhone1.5亿部,两个平台占据了九成以上的市场。Google希望庞大的市场占有率所产生的用户都使用Google系的应用,最终占领移动互联网。
在中国以外地区销售的Android手机都会预装十余个Google应用,包括Google地图、Play应用商店、Gmail邮件、YouTube视频、Google搜索等。这些应用延续了Google一贯的互联网产品逻辑,产品做到八成熟就发售,再根据用户反馈快速升级。当iPhone和Windows Phone的用户期待着一年一次的大变样的时候,Android用户每隔数周甚至数日就会看到Google应用越变越好。Google甚至将键盘作为一个应用独立出来快速升级,并且在中国、韩国等非拉丁语系地区推出独立的版本。
nlc202309021122
所有这些应用都没有开源,是Google的私有应用,只能在装有Google移动服务(Google Mobile Services)的设备上才能正常工作。而手机预装Google移动服务的一个基本前提是厂商不能用其他应用取代Google自己的应用。换句话说,如果手机厂商想要自己的产品使用备受用户欢迎的Google地图、或者Play商店里上百万应用的支持,就必须安装Google+、Google Newsstand新闻、Play Books电子书等不那么受欢迎的服务。第三方移动应用也需要仰赖Google的云服务,比如餐厅应用需要访问Google地图、聊天应用如果想省电就需要用到Google在2013年推出的云通信服务(GCM)。拿掉GMS就意味着开发者需要耗费更多时间。
在相当长的一段时间内,Google的控制策略被证明是行之有效的,特别是对小公司而言。一位曾参与北美业务拓展的前海豚浏览器工作人员早先在接受《第一财经周刊》采访时说:“我们没法说服运营商用我们的浏览器换掉Google的产品,它们不可能为了浏览器放弃Play商店。”
但开源的Android,最终也让硬件设备变得同质化,随着移动互联网的发展,利润中心开始向表层应用转移。
而Google一直通过预装Google应用来控制Android OEM制造商的做法,也最终让这个问题显现出来。
因为任何一个使用Android系统的厂商都可以拒绝预装Google应用。
最初是亚马逊。
2011年发布的7英寸平板Kindle Fire是Android设备中的异类。199美元的定价甚至比华为等中国厂商同期的产品定价更低。比价格更重要的是,不管亚马逊创始人杰夫·贝索斯在发布会上的演讲还是官方产品介绍,都不说平板用了Android操作系统,只说自己的平板可以运行Android应用。
Kindle Fire的操作系统被亚马逊称为Fire OS。官方介绍是:“源自Android,增加了亚马逊独有的服务。”点亮Kindle Fire的屏幕,你首先看到的是自己之前看过的书和电影、听的音乐、用过的应用。所有的Google服务都被取代。Kindle阅读器取代了Play Books和Play Newsstand、亚马逊Instant Video取代了Play视频。在自身不足的服务上,亚马逊选择与其他公司合作,因此你可以在Kindle Fire上看到来自诺基亚的地图数据、来自微软的Bing搜索。
不过亚马逊付出最大的还是它的应用商店Amazon App Store。为了让第三方应用开发者更愿意支持自己的平台,亚马逊一方面在云端搭建了自己的推送服务、游戏后台,另一方面还启用了近乎疯狂地促销活动—每天将一款付费应用免费提供给Kindle Fire用户。
根据IDC公布的数字,亚马逊去年第四季度共售出580万部Kindle Fire平板,占市场份额的7.6%,成为仅次于苹果和三星的平板供应商。伴随硬件产品的成长,Amazon App Store也已经成为开发者,特别是付费应用开发者认真考虑的渠道。去年4月,移动应用信息追踪平台Distimo在对美国市场数百个移动应用的下载数据进行追踪后发现,Google Play Store的规模在美国大约为Amazon App Store的9倍。但付费应用的情况大不相同。两个商店排名前1000名的付费应用下载数量,Google Play Store只有亚马逊的两倍。如果按营收金额来计算,Google只有1.7倍。
“亚马逊有超过2亿绑定了信用卡支付的账户,这使得它的用户平均付费高于Google的用户。”VisionMobile创始人康斯坦丁努告诉《第一财经周刊》。
Kindle Fire为亚马逊提供了丰厚的回报,根据Consumer Intelligence Research Partners去年年底公布的一份研究,Kindle Fire用户一年平均在Amazon网站上的消费1223美元,比非Kindle Fire用户高出50%。
“既然亚马逊可以订制Android来驱动生态圈,微软/诺基亚就没有任何理由做不到。”移动产业分析公司IHS Suppli分析师伊恩·福格(Ian Fogg)认为,X手机的成败更多取决于微软的支持力度。
“我们内部打赌猜,最后到底是新Android卖得好,还是Lumia 520卖得好。”一位诺基亚市场部的工作人员告诉《第一财经周刊》。被微软收购前的最后一季财报里,诺基亚称最便宜的Windows Phone Lumia 520是其智能手机业务的主要增长来源。
他未来的同事,负责Windows Phone系统的微软员工无疑也会考虑同一个问题。就在X系列手机发布前一天,微软召开了一场小型发布会。负责Windows Phone业务的副总裁乔·贝尔菲奥利(Joe Belfiore)宣布说微软将降低Windows Phone操作系统对手机硬件的要求、支持中国和东南亚市场热衷的双SIM卡设计,并宣布与金立、富士康、中兴、华为、联想等公司建立合作关系,不过这些公司并没有公布具体的产品计划。他们在移动世界大会的展馆所展出的也都是Android手机。
“诺基亚的一些举动让我们兴奋不已,但另外一些就不那么让人兴奋了。”贝尔菲奥利在发布会上回应诺基亚即将推出Android手机的消息。微软不同团队间针锋相对的形式作风显露无疑。
埃洛普仍强调说Windows Phone依然是诺基亚和微软最主要的智能手机,X手机只是定位低端。但现实是Windows Phone最成功的产品就是低端的Lumia 520系列,定价与X手机差距不大。换句话说,X手机与Windows Phone唯一有起色的产品直接冲突。但早已知情的微软最高管理层并未试图砍掉X手机。消息宣布当月,时任微软CEO史蒂夫·鲍尔默(Steve Ballmer)来到北京,和诺基亚低端产品线的研发人员开了一系列会议,X手机正是其最主要的未来项目。
有权决定是否砍掉X手机的埃洛普将在收购完成后主管微软的硬件业务,是微软四个最重要的研发团队负责人之一,未来将直接向微软CEO汇报。熟悉发布会准备工作的一位诺基亚工作人员告诉《第一财经周刊》,由于不能确定收购完成时间,他们为发布会准备了两套标识,一套微软、一套诺基亚。如果不是因为收购在中国和印度受阻,这三款手机本将以微软的名义发布。
所有人都在用Android系统,但Google面临的麻烦还远不止于此。
Facebook在移动广告业务上的突飞猛进证明绕过操作系统的层级—各种跟系统结合紧密的服务及应用成为未来竞争制高点—这还只是一个开始。
把强大的云服务落在移动生态圈上,这可能是更严峻的竞争。
技术新闻网站Re/Code报道称亚马逊计划在今年3月推出基于Android开发的电视盒子,将亚马逊的在线电影和电视剧投放到用户的电视上。同时亚马逊也在积极扩张自己的研发力量。过去两年里,负责Kindle Fire平板研发的亚马逊子公司Lab126多次派招聘团队前往芬兰招聘工程师。
至少数十位曾在诺基亚参与智能手机软件或硬件研发的工程师加入Lab126。整个Lab126有上千人在硅谷,大部分在进行Android相关的软件和硬件研发,一位熟悉情况的工程师告诉《第一财经周刊》。大部分Android手机厂商都没有如此规模的研发力量。
去年4月,亚马逊以2600万美元收购智能语音助手应用Evi,它的功能与苹果的Siri语音助手相近,更适合随身携带的手机而非平板电脑。早先亚马逊还曾收购过一家名为Ivona的语音识别公司。这一切都让《华尔街日报》去年关于亚马逊正在开发两款智能手机的消息变得更为可信。
上月刚刚取代鲍尔默的新CEO萨提亚·纳德拉(Satya Nadella)是一位愿意为在线服务牺牲眼前利益的管理者。他在管理微软云计算业务时曾放开技术限制,支持与微软自生业务直接冲突的开源操作系统、开发工具和数据库。
在一个碎片化的Android战场上,Facebook、微软和亚马逊对Google的挑战已经开始了。
Android安全 篇7
随着移动互联网的普及,越来越多的用户使用功能完善的智能手机(smart phone)。智能手机与传统的功能手机(feature phone)相比,具有更强 的数据处 理能力,允许用户根据自己的实际需要,自由地安装、卸载应用软件。 据全球著名调查分析机构Gartner发布的2013年第二季度全球智能手机操作系统终端销量数据显示:Android系统占据全球智能手机市场份额79%,在智能手机市场中处主导地位,而iOS与Microsoft系统分别 为14.2% 和3.3%。Android智能手机[1]凭借其开源性、可移植性强、 价格优势等赢得了广大用户的喜爱。Android智能手机存储的用户位置信息、IMEI号等隐私信息,其安全性非常重要。
1Android简介
2007年,Google公司发布基于Linux内核的开 源手机操作系统Android。Android系统采用 软件叠层(Software Stack)架构[1],如图1所示,最上层是各种应用软件, 直接与用户打交道;向下一层是应用程序框架,为应用程序开发提供丰富的API(Application Program Interface,应用程序编程接口);然后是系统运行库,提供库函数功能和保证沙箱机制;最底层以Linux内核为基 础,用于支持Android平台的设备驱动。
2Android系统安全机制
Android系统沿用Linux内核和Dalvik虚拟机提 供的安全机制,具有权限机制、签名机制和沙箱机制[1,2],如图2所示。
2.1Linux内核层安全机制
Linux内核的自主访问控制机 制通常由 文件访问 控制来实现,Linux文件系统 的权限控 制是由user、group、 other与读(r)、写(w)、执行(x)的不同组合来实现容许、 限制、拒绝用户、用户组和其他用户的访问[1]。
2.2权限机制
Android系统采用粗粒度的权限机制,限制应用程序的行为,保障安装过程的安全[3]。Android权限模型中,开发者必须在AndroidManifest.xml文件中声明所需权限。 例如开发者需要具有监听来自SMS消息的权限,就必须通过<uses-permission android:name=“android.permission.RECEIVE_SMS”/> 来完成。 在安装程 序时,Android系统把当前应用程序需要的权限列表提供给用户, 询问用户是否授予相应权限。如果用户同意授权,系统将该应用的用户ID加入到申请权限所对应的用户组中,使该应用获得访问系统资源的权限。在运行时,如某应用需要访问系统资源,Android系统会检 查用户ID是否属于 该系统资源对应的用户组。若属于,则同意应用访问系统资源。Android有大约134个内置的权限控制操作,用于保护系统资源的访问,例如应用程序执行电话、访问网络、 拍照片操作时需 要申请的 权限分别 是CALL_PHONE、 INTERNET、CAMER等。
2.3签名机制
Android系统使用数字 证书标识 应用程序 的作者和 应用程序之间的信任关系,要求每个应用程序都必须拥有一个独立数字证书。每个应用程序发布时,可利用Keytool生成数字证书,并利用Jarsinger为.apk文件进行 数字签名,在应用程序安装时验证,通过比对.apk文件的签名情况,判断.apk文件的来源是由官方发行还是被篡改过的盗版文件[3,4]。
2.4沙箱机制
Android系统使用内核层Linux的自主访问控制机制和运行时的Dalvik虚拟机来 实现沙箱 机制。Android系统使用沙箱机制实现应用程序之间独立运行功能,每个应用程序在各自独立的Dalvik虚拟机中 运行,拥有独立 的地址空间和资源。默认情况下,应用程序没有权限访问系统资源或其它应用程序资源。当某个应用出现故障时,可以消除Dalvik虚拟机实例来保障整 个系统的 安全运行, 从而提高系统的鲁棒性[1,3,4]。
3Android系统安全机制研究方向
根据未来智能手机的发展方向,针对Android智能手机的安全机制研究工作可以集中在以下几个方面:
(1)建立统一的 第三方应 用商店安 全审核和 监管机制,确保商店中的 每个应用 都是安全、可靠的。Android用户可以从官方 商店Google Play或第三方 商店 (Amazon、机锋、安卓网、豌豆荚等)浏览、下载及购买应用程序, 但是国内第三方Android市场缺乏安全审核以及监管机制,恶意程序开发者可以上传自己的APP到第三方应用商店混淆用户视线,导致很多流氓、恶意APP呈爆发式增长。2014年《中国互联网发展报 告》显示[5],移动互联 网环境中针对Android平台的恶意程序达699 514个,占移动互联网恶意总程序的99.5%,大部分恶意APP伪装成热门游戏和手机工 具类应用 服务进行 传播,恶意扣费 占71.5%,位居第一,资源消耗 类和系统 破坏类分 别占15.1%、3.2%。
(2)完善Android操作系统的授权机制,细化策略控制粒度,进一步增 强Android系统的安 全性和可 靠性。 Android系统采用“all or nothing”机制,即Android用户下载安装APP时,需要用户同意授予所有的申请权限才能安装APP,否则,若有任何一个权限申请 不被用户 授权, 安装就无法进行。安装APP之后,Android用户对应用程序使用权限如何便一无所知,不能根据所处的位置、时间等不同而进行动态的权限设置,使其容易受到恶意软件的攻击[4,6]。如用户在安装APP时,危险级别的权限会在屏幕上列出,允许用户只授予部分权限也能确保APP的正常工作,允许用户不必卸载程序也能限制应用程序访问敏感信息。
(3)搭建Android系统级别的智能决策支持,用户只需选择平台所处的 安全等级,其余的决 策工作由 系统完成。应用程序的安装授权完全依赖用户,而绝大数用户并不具备专业知识,这极大降低了系统的安全性[6,7]。中国互联网络信息中心的调查数据显示,44.4%的用户在下载安装应用软件的过程中会仔细查看授权说明,40.7%的用户不会仔细查看,14.9%的用户表示“不好说”,也就是说大部分人存在盲目授权的风险。金山手机毒霸的反病毒工程师李铁军认为,盲目授权成为用户信息泄露的主要原因。在Android用户信息泄露案例中,手机联系人是信息泄露的重点,一旦泄露就会遭遇垃圾短信、欺诈、骚扰电话等,甚至带来直接经济损失。
4结语
本文首先 介绍了Android系统的组 成 ;然后针对Android系统的安全机制重点介绍了Linux内核层安全机制、权限机制、签名机制和沙箱机制;最后对Android安全机制存在的问题和未来研究方向提出了展望,希望对Android智能手机的安全研究有一定的参考价值。
摘要:Android智能手机市场占有率大,其安全性越来越受到人们的重视。介绍了Android系统组成,分析了Android系统的安全机制,解析了Android智能手机安全机制存在的问题,提出了未来研究工作的方向。
Android安全 篇8
近年来,Android在国内的发展非常迅速,不仅是因为其相关产品的功能和丰富的应用,更是由于它优良的性能表现吸引着用户。自2011年开始,无论是手机生产商还是应用开发者都纷纷捧场,在短短几个月的时间,Android在国内异军突起,截止2012年3月份,其在国内的市场份额就超过了60%,将曾今风靡一时的塞班系统远远的推出了时代前沿,与此同时,它也带动了国内移动互联网行业的发展,而各种信息泄露、恶意扣费、系统破坏的事件也屡屡发生,所以,Android系统的安全也逐渐成为人们所关注的话题。
1 Android 系统手机的安全
Android系统安全涉及到不同的安全环节,首先就是用户环节,在这个环节,我们不能要求用户中规中矩的使用自己的手机,对于大多数手机用户来说,ROOT手机几乎是每个用户使用手机过程中必须要做的事情。
1.1 手机 ROOT
手机ROOT是指让手机在使用过程中能够获取最高管理员权限,大多数把手机root说成root手机、手机rooting或手机破解。通常,手机厂商为了手机的安全,出厂后的手机都是不具备root权限的,这样用户在使用过程中就有限制,比如一些随手机销售的捆绑软件,这些软件不仅占用手机的存储空间,并且由于是系统软件,用户无法删除,要想卸载这些软件,就必须获得手机的root权限。
1.2 root 手机的安全隐患
手机root后在方便用户的同时,也带来了许多安全隐患,如:
1.2.1 隐私数据泄露
当手机root后,软件中的所有私密数据都可以被可疑软件访问到,如QQ或微信的聊天记录、网银账户与密码,这些数据若泄露将会给用户的隐私带来巨大的威胁。
1.2.2 病毒攻击
手机root后,所有的安装软件都能获得手机的最高管理权限,这无疑给手机病毒打开了安全门。没有root的手机,用户可以检查软件使用的权限来判断其是否有恶意行为,而手机root后,恶意软件将不会申请需要的权限,造成病毒程序能轻易的在root后的手机完成攻击操作。
1.2.3 系统不稳
用户在手机root后,为了让手机运行的流畅,会对不常用系统的软件进行卸载,在这个过程中,就有可能误删系统重要的文件,导致系统运行不稳或损坏。所以目前很多手机厂商在销售时明确规定:root后的手机将不在保修范围中。
2 Android 系统手机安全解决方案
Android现在防御安全问题方案有两类:动态改变权限,入侵检测系统检测和控制恶意软件的危害,但这两个方案是一些缺陷:一是动态权限直接修改,因为用户不懂安卓方面的专业知识,也不知道是哪个软件修改的权限。入侵检测主要是发现恶意软件,所以对上述两种方案进行了分析和评估,充分吸收这两种方案的优点,提出了基于异常行为的动态管理权限方案。
动态管理权限方案原理:通过监控手机上运行的软件,若发现有危险的权限将要操作,就马上通知手机用户,修改该软件的权限,或者直接卸载掉该软件。
因此,基于异常行为的安卓权限动态管理模型可以分为:监测行为模块、修改权限模块和处理用户模块,其管理模型如图1:
2.1 监测行为模块
异常行为监测技术:即监测手机安装的软件操作,比如是否软件运行过程中没有提示,请求自动上传或下载、访问网站、发送收费短信、异常文件等等。通过捕捉这些异常行为以确定是否有任何收费,泄密、非法内容传播和其他恶意行为和操作。这个模块主要是在后台运行的Service服务,并且可以运行在后台,模型的入口即为异常行为监测,实时监控应用程序的操作在用户的手机上。监测应用程序请求的各种行为,并与数据的异常行为库进行比对,如果是数据库中定义的异常行为,将产生报警,警告这个软件正在使用一些危险的权限,并以消息的方式提醒用户。
2.2 用户处理模块
当手机上的软件进行异常动作时,异常行为监测模块将产生报警,并弹出一个警告对话框。用户在看到通知即可马上处理,打开处理Activity界面。并提供三个处理方案:第一是不做任何处理,继续运行软件和访问;第二是认为这个软件不好,有一定的危险,可以直接卸载软件;第三是可以根据提示警告,修改软件的运行权限,禁止这些软件的恶意行为,以保证手机的安全。
2.3 修改权限模块
经过用户处理模块,当用户要对软件修改权限时,马上就进行到修改权限模块,首先将该软件所有权限列表显示出来,然后选择软件运行所需要禁止的权限。最后在Apk文件中,找到Android Manifest.xml文件进行修改,由此可以达到禁止某些软件运行权限的目的。
3 结语
Android安全 篇9
二十一世纪全球信息化步入正轨,人们在日常生活中越来越离不开移动设备,智能手机与平板电脑不仅使人与人之间的沟通变得更加容易,而且还为用户提供了随时娱乐与办公的便捷。Android系统是于2007年由Google公司创立的以Linux为内核的操作系统,该系统目前占据了智能手机系统的大多数份额。但由于Android系统本身存在一些安全问题,所以其安全体系存在一定的风险。随着人们对移动设备的青睐,用户的各种隐私、多种利益被恶意窃取,恶意软件的危害性使人们遭受各种损失。当前社会中,恶意软件横行,Android系统必须进一步地改善安全体系以应对这种情况,确保用户的个人信息与利益等受到保护。
1 Android系统概述
Android系统是一款拥有极大的发展潜力的平台,它服务于移动终端。其具有开放性、易操作性、不受限制性等特点,因此受到了广大生产商、消费者以及开发工作者的喜爱。
1.1 Android系统架构
Android系统具有严格的分层,整体可分为四大部分,主要为:应用层、应用框架层、系统库层以及Linux内核层。应用层主要是为多种应用程序提供储存位置。它不仅含有系统本身的应用,如:浏览器、时钟、备忘录等必备应用。还包含使用者安装的第三方应用,如:游戏、视频播放器、音乐播放器等可下载的应用。应用框架层是应用程序的框架,服务于各种应用程序,它包含了使用各种核心功能应用时的API框架,使开发工作者可以通过API修改程序或者添加新程序。Android系统库主要包括C/C++库,主要作用是提供系统的一些基础性功能,Android运行环境含有JAVA核心库和Dalvik虚拟机,在核心库中可进行重要程序的运行,在Dalvik虚拟机中单个程序可以尝试运行,每个程序按部就班进行进程。Linux内核层服务于系统最基本的功能,它是整个系统的核心,主要承担了程序管理、网络管理等服务,操作的设备驱动程序主要为通话、音频、蓝牙等。
1.2 Android系统组件模型
Android系统主要有四种不同种类的组件组成,分别为:Activity、Service、Content Provider、Broadcast Receiver。Activity是用户界面,具有可视化的特点,是应用程序与用户互动的组件;Service是后台运行,无用户界面,一般作用是进行一些无用户操作的进程;Content Provider是内容提供器,主要服务于各个应用程序间的数据共享工作;Broadcast Receiver是广播接收器,它用于接收一些广播消息并对其做出不同的反应。
2 Android系统的安全体系简介
Android系统具有的开放性使得生产商和开发人员可以根据实际情况以及用户的需求对系统进行改善,因此,Android系统本身并不具备完整的代码检查体系。但随着开发人员的加入,Android系统的漏洞不断被修复,安全体系不断被完善,安全体系主要可分为三大部分:Android系统以Linux内核层为基础,所以其具有Linux内核层的安全机制,如:文件访问限制等;其次,Android系统还含有Android本地库和运行环境下的安全体系,如:移动设备安全和强制类型安全等;除此之外,其本身也具有特定的一些安全体系,如:签名机制、Dalvik虚拟机等。
2.1 Linux内核安全体系
Linux内核是Android系统操作的基础,它具有用户资源不共享的功能。首先,每个应用程序都拥有一个独有的Linux用户ID,使得每个应用程序在进程中不被其他应用影响,只在自己的沙箱中运行。其次,每个应用程序包含各自的文件,不允许其他应用程序进行访问,通过对文件进行权限设置使文件更加安全。最后,Linux内核具有内存管理机制,可以增加程序进行的速度,减少对内存的占用。程序沙箱、文件访问限制和内存管理机制使用户在使用程序过程中不受其他用户的影响,不能看到其他用户的文件,不会影响运行进度。
2.2 Android本地库与运行环境安全体系
Android系统中的应用主要采用Java语言,可以在自动存储管理和数组边界检查中发现问题从而确保类型方面的安全,即所谓的强制类型安全。移动设备安全是通过对SIM卡的管理,从而使其自动鉴别用户,储存用户的个人信息。
2.3 Android系统自身的安全体系
2.3.1 权限机制
权限机制在Android系统的安全体系中处于核心地位,它的原理是设置权限使得应用程序在限定的范围内进行访问。其中,Android ROOT权限属于最高的权限,它可以对应用、文件等随意处理。其次,Android应用程序权限机制受开发工作者和使用者联合的操作,在Android Manifest文件中由开发者做出选择,在应用安装时受用户的选择。其包含四种不同的权限保障阶段:normal、dangerous、signature、signature Or System。还有一种就是权限是对所有用户的限制,它与Android系统本身有关,不受用户与开发者的控制。
2.3.2 签名机制
Android应用程序只有具有签名过程,才能被使用在Android设备上。包含Android应用的.apk文件可以含有数字证书,数字证书内具有开发工作者的个人信息。签名机制建立了开发工作者与应用程序之间的联系,使开发者对该应用程序承担责任,还可应用于应用程序的更新工作中。
2.3.3 Dalvik虚拟机
Dalvik虚拟机是以寄存器为基础进行的改进,它的作用是管理移动设备的逻辑,如,生命周期、回收垃圾等,它是沙盒机制的重要组成部分。每一个Dalvik虚拟机可当做单独的一个Linux进程执行,每个进程之间相互并不影响,运行速率高。
3 Android系统的安全隐患及其措施
3.1 Android系统存在的安全隐患
虽然Android系统有较为合理的安全体系,但由于其本身具有的系统漏洞使其难以阻碍黑客和不法分子的入侵。该系统主要面临的威胁有杀毒软件、广告软件、监视软件等恶意软件的破坏,恶意软件不仅降低了系统的智能化,也盗取了用户的信息,使众多隐私泄露,不良信息广泛传播,甚至还会通过随意扣除费用损害使用者的利益;其次,一旦不法分子窃取用户手机的SD卡,就会导致用户个人文件的丢失,若其通过修改一些应用程序的密码,便可对用户个人财产及各种信誉造成损害。此外,黑客还可以对合法网站进行破坏,使其可以加载恶意软件,从而对打开该网站的用户带来危害。
3.2 针对Android系统的安全措施
3.2.1 优化Android系统的权限机制
在安装程序应用时应充分发挥用户的主动性,使用户自己决定该应用应具有哪些权限。用户应积极主动地学习移动设备的专业知识,彻底了解各种权限的引申意义及其潜在的问题,充分得到有用的信息,对多种权限做出筛选与判断。
3.2.2 加强对Android系统的异常检测
异常检测需要系统实时监测设备状态,随时判断设备的应用程序是否处于异常情况,是否对设备具有损害作用,这是动态的检测方法。恶意软件的入侵会使设备出现一些不常见的现象,如:电量使用时间短、CPU温度过高、运行的程序多等,我们主要依据这些指标可以去判断设备是否处于异常状态。常用的监测方式有:短信监测、电话监测、网络监测和性能监测等。
3.2.3 增强Android系统的杀毒引擎功能
杀毒引擎属于静态的检测方法,该方法可以对系统中的应用程序进行鉴定,判断程序是否可以安装,是否带有病毒,是否属于合法软件。该方法的主要依据是检查应用程序的名称、安装包的MD5值和数字证书等,主要的操作方式可以分为:快速扫描和全盘扫描。顾名思义,全盘扫描所需要的时间较长,但查询范围面积较广,包括内部存储中和SD卡上的所有应用程序;快速扫描时间短,主要是针对扫描的应用程序与已存在的病毒数据库进行对比,从而判断程序是否存在病毒。
4 结语
文章从Android系统的架构、基本组件、安全体系、安全问题及安全措施等方面介绍了目前Android系统的基本情况,但解决实际生活中Android系统存在的问题仍有很大的阻碍。因为理论上的方法并不一定适用于实际,所以必须一步一个脚印,把问题落到实处,把理论应用于实际。
智能手机的大范围使用,大大促进了Android系统的进步,目前Android系统已经具备了一套较为成熟的安全体系,虽然仍然存在一些不足,并容易产生一些安全隐患,使不法分子趁虚而入,但是这些不足依然还处在开发人员的改善之中。在未来的日子里,应用程序的开发工作者一定会着重改善不足,逐渐改善漏洞。接下来主要把注意力集中在如何实现更优质的异常检测服务,如何设置权限,修改权限,如何防止恶意软件的入侵,如何控制恶意软件的危害,保护用户的信息安全,财产安全。
参考文献
[1]丁丽萍.Android操作系统的安全性分析[J].信息网络安全,2012,12(3):28-29.
[2]蒋绍林.Android安全研究综述[J].计算机应用与软件,2012(10):20-21.
[3]姚一楠.Android平台的安全挑战及应对措施[J].现代电信科技,2012(9):16-21.
Android安全 篇10
随着Android系统的日益流行, 其安全问题受到了越来越多的关注。最近的研究[1,2]表明许多应用可以通过网络泄漏隐私数据。Android是一个权限分离的系统, 利用Linux已有的权限管理机制, 通过为每一个应用分配不同的UID和GID, 从而使得不同的Application之间的私有数据和访问 ( native以及java层通过这种sandbox机制) 都可以达到隔离的目的。与此同时, Android在此基础上进行扩展, 提供了permission机制, 它主要是用来对应用可以执行的某些具体操作进行权限细分和访问控制, 同时提供了per - URI permission机制, 用来提供对某些特定的数据块进行点对点方式的访问。
已有的研究主要集中在对应用程序申请的Permission权限进行静态分析上, 其分析过程一般为: 从大量的应用程序包中提取该程序的Permission声明, 分析应用程序的Permission特征, 为对应的安全策略研究提供依据。静态的应用程序Permission特征分析能够为Android的安全研究, 特别是应用层安全研究提供重要支持。文献[3]从Android Permission机制的实现出发, 对Android系统提供的Permission机制自身的安全特性进行了分析, Wook Shin等人研究分析了Permission的授权管理控制模型[4,5]。尽管这种机制能在一定程度上保证安全性, 但在实际应用中却缺乏灵活性, 权限在安装时被赋值而且在安装完成后不能更改。
更为重要的是, 用户在应用运行时没有控制权限, 这使得Android手机容易受到窃取隐私类恶意软件的攻击等问题。
2 相关工作
由于Android智能手机容易受到窃取隐私类恶意软件的攻击等问题使得恶意软件访问的权限研究已得到越来越多的重视。目前国内外研究者已通过不同的方法来 应对Android的隐私泄露问题。
Ongtang[6]等人就现有Android权限模型提出质疑, 指出当前Android权限模型无法涵盖某些特定场景下的安全性需求, 并对现有权限模型进行了扩展。然而这些安全性的扩展导致权限模型更加复杂, 降低了可用性。文献[7]通过对Android安全机制和AndroidManifest. xml文件的研究, 结合Android手机平台现存在的隐私泄漏的安全问题, 提出了一种适用于Android手机平台的权限检测系统。杨博[8]等人在STOWAWAY的基础上, 提出了一种优化的检测方法, 并开发了Brox检测工具。Brox用静态的方式扫描分析应用的代码, 进行数据流分析。但是Brox面向整个程序进行分析, 分析过程比较耗时而且采用过程内分析技术会影响分析结果的准确性。文献[9]基于静态信息流分析技术, 针对An- droid应用设计并实现了一个检测工具LogMiner, 用以检测应用中存在安全隐患的日志记录点, 以辅助应用商城在应用发布时的安全检测工作。但Log- Miner存在一定的失败率并且只针对日志系统作为信息泄漏通道。文献[10]提出了一种策略实施框架Apex。通过对Android权限框架代码作出修改, 针对不同的应用程序, 手机用户可以有选择性授予权限或撤销权限。Apex虽然允许用户有选择性的对应用程序进行权限的授予, 但是用户需要了解各种权限的含义而且当权限过多时会对用户的操作造成不便。
本论文在Apex的基础上提出了一种与Apex相兼容的静态分析方法。该方法主要针对Apex的安装程序包Poly。在Ploy安装程序之前先对应用程序和权限进行分析检测, 然后将检测分析后的权限呈现给用户。实验结果表明在造成一定性能损失的情况下, 新的框架可以有效减少用户所需设置的权限。
3 背 景
3. 1 Android 安全机制
Android的核心安全机制主要包括程序沙箱、应用签名和权限框架。默认情况下, 应用程序之间是不可以互相访问的, 但是android提供了一种权限机制, 可以实现应用程序之间数据和功能的安全访问。
Android的权限框架限制了应用程序对敏感数据 ( 如短信、通讯录等) 、资源 ( 如电量和日志文件) 及系统接口 ( 如Internet、GPS等) 的访问。程序所需权限列表在安装时必须被用户全部赋予, 安装完成后不可更改, 这种粗粒度的特性导致了潜在的安全缺陷。
Android原生安全机制缺陷主要体现在以下几个方面:
( 1) Android通过Package Installer在应用安装时检查应用所需的权限, 并提示用户, 由用户作出抉择。但是, 如果用户想使用该应用的功能, 就必须同意应用申请的全部权限, 否则Package Installer将拒绝安装该应用。
( 2) Android没有对已授予应用的权限的使用范围进行限制。比如应用申请了读联系人数据的权限, 那么他就可以读取全部的联系人数据, 而不能根据联系人分组区别对待。
( 3) 由于所有权限都是在安装时进行检查并授予的, 所以资源的访问不能根据用户的位置时间等不同而进行动态的限制, 比如用户需参加一个秘密会议, 那么此时用户应该可以设置应用不能访问摄像头、麦克风等资源, 但传统的安全机制是做不到这一点的。
( 4) 用户撤销已授予某个应用权限的唯一方法就是卸载该应用。
以上安全缺陷不仅降低了平台的可用性, 同时导致平台容易遭受应用层权限提升攻击。
3. 2 Apex
Apex[10]通过对原有的安装系统Packagelnstaller进行修改和扩展来支持用户对应用程序权限的限制, 并且用户在应用程序安装之后, 还可以对之前设置的限制条件进行修改, 以此来达到对应用程序权限进行动态约束的目的。
Apex的Packagelnstaller Poly有2点不足。1. Ploy只支持有限的约束条件, 并且用户需要自定义约束条件, 这使得用户需要对约束条件有一定的了解。2. Ploy将应用程序所需的所有权限呈现给用户, 这使得用户需要对所有的权限进行设置。
3. 3 Android 通信组件
Android主要由四种基本组件组成: 活动Activ- ity组件类似于一个用户界面的概念, 负责与用户的交互; 服务Service类似于Windows或其他平台中的服务, 可长时间运行在后台执行某个独立功能; 内容提供者Content Provider为应用程序定义了一种类似于URI访问的标准机制来共享数据而无需公开底层实现; 广播接收者Broadcast Receiver类似于注册 - 监听模式接收特定的广播事件并进行相应处理。
这些组件之间通过意图组件 ( Intent) 进行交互。Intent封装了几种概念, 在传递过程中被系统解析成特定的事件、特定的执行对象以及包含的一些额外数据。Intent将操作和操作处理程序松散地连接在一起, 成为Android各组件交互的主要形式。
4 策略模型的形式化及实现
4. 1 语法及形式化描述
定义: 用PERM表示权限, 权限之间的有序关系用≥表示, 组件用地址n来标识, n代表类名称或动作。值包括变量X以及常量CONS。
一个程序运行在名字与组件定义相匹配的环境中。在安卓中, 一个这样的环境是从安装在系统中的应用程序集合中提取的。根据文献[11], 环境语法可以表示为:
组件Activity ( LAUNCH, PERM, F. t, F. t') 描述了运行权限为PERM的一个Activity。它的调用者必须拥有权限LAUNCH。函数F. t和函数F. t'分别描述了该Activity的OnCreate和OnActivityResult方法。函数F. t的参数表示启动该Activity的传入参数, 函数F. t'为该Activity调用其他Activity之后的返回值。
组件Listener ( SEND, PERM, F. t) 描述了运行权限为PERM的一个listener。他的调用者必须拥有权限SEND。函数F. t表示该listener的onBind或者onReceive方法。函数F. t的参数表示传递给该listener的值。
组件Store ( READ, WRITE, v) 描述了一个访问权限为READ和WRITE的store ( 例如, Content- Provider) , 其当前内容的值为v。
程序语法:
函数Launch ( n, v) 检查n和组件Activity ( LAUNCH, PERM, F. t, F. t') 匹配, 并且当前上下文的权限是LAUNCH。如果满足条件, 一个新的窗口会被放入到堆栈中, 拥有权限PERM和值x的程序t会被启动。
函数Finish ( v) 会将当前窗口弹出栈并把控制权返还给调用的Activity。如果调用的Activity是Activity ( LAUNCH, PERM, F. t, F. t') , 那么程序t' 将会运行, 并且拥有权限PERM和值x。
函数RegLis ( SEND, n, F. t) 匹配n和组件Listener ( SEND, PERM, F. t) 。这里PERM是当前上下文的权限。
函数SendLis ( LISTEN, n, v) 检查n和组件Listener ( SEND, PERM, F. t) 匹配, 并且当前上下文的权限是SEND, 并且权限PERM包括LISTEN。如果满足条件, 拥有权限PERM和值x的程序t会被启动。
函数Read ( n) 检查n和组件Store ( READ, WRITE, v) 匹配, 并且当前上下文的权限是READ。返回值为v。
函数Write ( n ) 检查n和Store ( READ, WRITE, v') , 并且当前上下文拥有权限WRITE。然后n映射组件Store ( READ, WRITE, v) 。
函数E ( x, t, t') 先评估t, 然后用x和结果评估t'; x是一个局部变量。
函数Fork ( t) 创建一个运行t的子线程。Fork允许和后台服务建立连接。
函数Choice ( t, t') 选择t或t'。
4. 2 策略模型的实现
该策略模型的实现采用了WALA, 一个用于JAVA代码分析的开源组件, 但是WALA只能评估开源的应用程序。对于非开源的应用程序, 首先利用反汇编工具DED将字节码转换为源码。然后利用WALA进行分析。形式化描述简化了分析的流程。策略模型框架如图1所示。
在进行检测前, 如果不能得到应用程序的源代码, 则首先需要对应用程序的APK进行反编译。应用程序加载器会根据程序的类和Android提供的API解析并生成一个调用图。在Android中, 字符串可以被看成是标识符, Android中的权限和组件都可以用字符串来标识。对字符串和数据进行分析可以过滤掉不合法的权限。该策略模型是基于信息流的分析, 信息流的分析由流过滤器来完成。流过滤器采用了WALA内置的RHS分析器。Manifest加载器负责加载Manifest文件, 该Manifest文件是对当前程序运行环境的说明。检测器负责对信息流和当前环境进行检测。而且有可能需要其他附加信息和约束。
5 实验结果及分析
在Android操作系统平台上, 基于Apex扩展了Apex的Polly安装系统。使得Polly可以自动检测出软件不需要的权限。我们采用三星GT - S5830i对系统进行测试。测试分成2个部分, 一个是权限数目的测试, 另一个是系统性能测试。我们在Google play上下载了5款应用进行测试。表1给出了这5款应用在原Polly和扩展后Polly上所需设置的权限。
可以看到, 修改后的Polly可以有效的减少用户所需设置的权限。对于Gchord应用, 原Polly允许用户设置25个权限, 对用户来说极其不方便, 而且用户设置权限不合法会造成应用无法使用。采用修改后的Polly, 用户只需设置一些不重要的权限, 而且不会影响应用的使用。
图2给出了原Polly和扩展后Polly的时间开销。从图中可以看到, 虽然扩展后Polly的时间开销有明显增加, 但是相对于其能够有效减少用户设置应用权限来说, 这种损耗是值得的。
6 总 结
本文聚焦于Android安全研究, 提出一种基于信息流形式化描述Android通信流的方法, 并在此形式化描述上提出了一种策略框架, 可以对Android程序进行分析。并且此框架可以与Apex[10]进行融合, 扩展其安装包Polly。最后的实验结果分析表明虽然在性能上有损耗, 但是因其可以有效减少用户需要设置的权限数目, 这种损耗是值得的。未来的工作将进一步改进分析方法, 提高程序性能。
摘要:随着Android系统的日益流行, 其安全问题受到了越来越多的关注。尽管Android Permission机制能在一定程度上保证安全性, 但在实际应用中却缺乏灵活性, 基于此提出了一种与Apex相兼容的策略模型。该方法主要针对Apex的安装程序包Poly。在Ploy安装程序之前先对应用程序和权限进行分析检测, 然后将检测分析后的权限呈现给用户。实验结果表明在造成一定性能损失的情况下, 新的框架可以有效减少用户所需设置的权限。
关键词:Android,Android Permission,安全,策略模型
参考文献
[1]W.Enck, P.Gilbert, B.Chun, L.Cox, J.Jung, P.McDaniel, and A.Sheth.Taintdroid:An informationflow tracking nsystem for realtime privacy monitoring on smartphones[C].In Proc.9th USENIX Symposium on Operating Systems Design and Implementation, 2010.To appear.
[2]T.Vennon and D.Stroop.Threat analysis of the android market[EB/OL].2010.http://www.globalthreatcenter.com/wp-content/uploads/2010/06/Android-Market-Threat-Analysis-6-22-10-v1.pdf.
[3]张中文, 雷灵光, 王跃武.Android Permission机制的实现与安全分析[C].第27次全国计算机安全学术交流会论文集, 2012年.
[4]Wook Shin, Shinsaku Kiyomoto, Kazuhide Fukushima, Toshiaki Tanaka.A formal model to analyze the permission authorization and enforcement in the Android framework[C].In Proceedings of the 2010 IEEE Second International Conference on Social Computing, SOCIALCOM'10, 2010.944-951.
[5]Wook Shin, Sanghoon Kwak, Shinsaku Kiyomoto, Kazuhide Fukushima, Toshiaki Tanaka.A small but nonnegligible aw in the Android permission scheme[C].In Proceedings of the 2010 IEEE International Symposium on Policies for Distributed Systems and Networks, 2010.107-110.
[6]Machigar Ongtang, McLaughlin S, Willam Enck, et al.Semantically rich application-centric security in Android[C].In ACSAC'09:Proceeding of the 25th Annual Computer Security Applications Conference, 2009:340-349.
[7]闫梅, 彭新光.基于Android安全机制的权限检测系统[J].计算机工程与设计, 2013, 34 (3) :854-858.
[8]杨博, 唐祝寿等.基于静态数据流分析的Android应用权限检测方法[J].计算机科学, 2012, 39 (11) :16-18.
[9]彭智俊, 张源, 杨珉.用静态信息流分析检测Android应用中的日志隐患[J].小型微型计算机系统, 2013, 13 (6) :1276-1281.
[10]Mohammad Nauman, Sohail Khan, Xinwen Zhang.Apex:Extending android permission model and enforcement with user-defined runtime constraints[C].Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security.USA:ACM, 2010:328-332.
相关文章:
多Android设备01-06
资助新政策01-06
android开发培训01-06
Android测试01-06
android开发环境简介01-06
android外文翻译01-06
Android手机01-06
Android开发01-06
android应用学习总结01-06
中铁安全总结范文01-06