安卓获权获取的技术原理

描述

引言

安卓系统自诞生以来就以高度的开放性著称,安卓系统的开放性也帮助安卓系统在短时间内获得了巨大的市场份额。

安卓系统给予应用开发者比较宽松的系统权限获取环境,有效拓展了应用开发的灵活度,打破了一些不必要的局限,但安卓系统在权限管理的开放性也带来了一些安全问题。

一些恶意软件利用安卓系统在权限管理上的开放性通过获取大量非必要权限的方式收集用户个人信息、恶意吸费甚至传播病毒木马。

安卓应用超越必要限度获取系统权限将导致用户个人信息泄露,根据腾讯与DCCI互联网数据中心联合发布的《2017年度网络隐私安全及网络欺诈行为分析报告》显示,2017年下半年,安卓手机应用中有98.5%的应用都要获取用户隐私权限,其中越界获权的情况占比在9%。

媒体对安卓应用恶意获取系统权限多次报道,多地消费者保护委员会也尝试通过约谈等方式对任意获取非必要权限的情况进行曝光监督。

手机应用“越界获权”已经成为个人信息泄露的主要渠道之一,并由此衍生出规模庞大的网络黑产。

1、安卓获权获取的技术原理

(一)以Manifest文件为基础

安卓应用获取系统权限必须先在应用的AndroidManifest.xml文件中进行声明。Manifest文件位于应用软件根目录下,是安卓应用软件的全局配置文件,描述了安装包中的全局数据。

该文件提供了安卓系统所需要的关于该应用程序的必要信息。

比如:为应用软件指定唯一的名字;描述应用软件所包括的成分,如activities, services, broadcast receivers和content providers等内容;声明应用软件正常运行所需要的权限,如读写SD卡权限等;声明应用程序的安卓API级别,低于该级别的系统不能运行该程序;声明应用程序支持的分辨率等。

为获得保证正常运行的权限,安卓应用软件开发者需要在软件中的AndroidManifest.xml文件中写入确保正常运行和功能实现的所有权限,并向安卓系统进行权限声明。

安卓系统读取到安卓应用软件的AndroidManifest.xml后会按照系统规则向该应用软件开放所有其声明的权限;未向安卓系统声明的权限,安卓系统将不会向该应用软件开放,应用软件的相关功能将会受限。

例如当应用软件需要执行调整屏幕亮度的操作时,则需要在AndroidManifest.xml写入获得调整屏幕亮度的权限声明,否则应用软件中与调整屏幕亮度的代码将不能被执行。

(二)安卓系统权限授权管理的变化

▌1、安卓4.4之前,任意获取模式

在安卓4.4版本之前,安卓系统对应用的授权模式可以概括为:只要在Manifest文件中声明,开发者可以任意获取权限,用户无法对权限进行管理。

应用安装前,安卓系统会根据权限声明展示权限列表,用户查看并同意该权限列表后完成安装。安装完成后,该应用软件就可以成功获得所声明的全部权限。

安卓系统并不对权限进行分类,也不对应用软件开发者、应用软件获取权限的必要性进行审查。用户在安装过程中只能选择接受该应用声明的全部权限,否则就不能继续安装。

▌2、安卓4.4版本,隐藏的权限管理模式

在安卓4.4版本中,谷歌依旧保持了应用软件在安装时可以任意获取权限的做法。但是,在安卓系统中增加了权限管理的功能,只是该功能处于隐藏状态,需要用户安装App Permission才能进行管理。

国内的部分厂商在定制自己的安卓系统的过程中将该功能加入到系统设置中。用户可以在用户设置中对应用软件进行权限管理,关闭不需要的应用权限。

▌3、安卓5.0版本,明确的管理模式

在安卓5.0版本中,安卓系统增加了在应用安装过程中对应用软件的权限进行选择的功能。在应用安装环节,系统会弹出一个可勾选的权限设置项,用户可以根据需要关闭应用默认获取的权限。用户选择取消的权限,应用软件将不会获取。

▌4、安卓6.0版本,对权限进行分类管理的模式

由于安卓6.0之前的安卓系统存在“越界获权”的问题,为了更好地保护用户隐私,谷歌公司在安卓6.0版本中提出了新的权限管理机制,将权限分为两大类:

谷歌

安卓系统对危险权限进行了归类,并分为不同的权限组(Permission Group)。如果应用软件获取了权限组中某一个权限,则整个权限组下的权限均被授权,应用软件可以直接调用该权限组的权限并实施相应行为。安卓6.0版本中的危险权限分类如下:

▌5、安卓6.0之后,进一步强化权限的授权要求

在安卓6.0版本中,应用获得权限组中某一个权限后可以获得整组的权限,范围仍较广。

在安卓8.0版本中,安卓系统对此进行了调整,安卓系统将只向明确请求获取的权限进行授权,但对同一权限组中且明确向系统声明的权限都将被自动授权,不再额外提示;若没有请求相应的权限,该权限对应的操作将会失效。

谷歌公司表示,在安卓9.0版本中会细化权限保护,针对设备传感器权限、从Wi-Fi扫描中获取位置信息以及获取电话状态等相关权限规则进行调整,以便更好地保障用户隐私。

2、安卓权限获取中的法律合规要求

(一)遵守权限获取的原则

对于应用软件开发者而言,正确获取系统权限是运营合规的第一步,应用软件开发者应当审慎处理获取系统权限的问题。《网络安全法》第41条规定:“网络运营者收集、使用个人信息,应当遵循合法、正当、必要的原则,公开收集、使用规则,明示收集、使用信息的目的、方式和范围,并经被收集者同意”。

本条明确了网络运营者收集、使用个人信息,应当遵循合法、正当、必要的原则。虽然获取权限并不同于收集、使用用户的个人信息,但是获取权限潜在地会影响到用户个人信息和隐私,因此,获取权限也需要遵守合法、正当、必要的原则。

具体来说,(1)合法原则是指获取权限的过程中,需要遵守法律的规定,对于法律明确规定的需要获得用户同意的权限,需要遵守法律的规定;不得通过欺骗、诱骗等方式获取安卓系统权限。

(2)正当原则是指应用软件获取安卓系统相关权限需要具有正当目的,所获取的权限只能用于实现产品功能;不能将获取的权限使用在与产品功能无关的用途,如获得录音权限后,偷录用户的录音。

(3)必要原则是指获取的权限应当与实现产品功能有直接关联,若未获取该权限,则产品功能无法实现,不能超越范围索取与自身产品功能无关的权限,如手电筒应用获取读取通讯录的权限。

但是,一些应用开发者在开发过程中并不注意遵守权限获取的合法、正当、必要原则,甚至通过恶意获取大量非必要权限来收集用户个人信息,向第三方出售,甚至走上了犯罪的道路,受到了法律的惩罚。

(二)保障用户知情同意

谷歌

谷歌

谷歌

▌1、对危险权限的告知和同意

对于获取危险权限的情况,应当遵守法律的规定,履行告知义务并取得用户同意。在安装过程中,系统会提示应用获取的权限列表,用户可以在安装环节对特定权限执行开启、提示、关闭操作。

对于不同意开启的权限,用户可以对该权限进行关闭,与该权限相关的功能将会受到影响。在使用过程中,应用软件的功能需要使用到危险权限时,系统会弹出提示告知用户。

此外,按照《移动互联网应用程序信息服务管理规定》第七条的规定,应用软件在获取录音、摄像头、地理位置、通讯录等权限也需要自己弹框告知用户获取权限的目的,并获取用户的用意。即此时需要应用软件先弹窗告知用户,再由安卓系统动态授权。

基于安卓系统拥有比应用软件更高的权限,用户的同意权保障更多的是通过安卓系统的提示和设置来实现的。系统弹出提示告知用户后,用户有权进行选择是否同意应用软件获取该权限。

用户确认同意后,应用软件会获得该权限;如果用户事后需要管理权限的话,可以到系统设置中对应用获取的权限进行管理,保障用户的同意权。

▌2、对普通权限的告知

对于普通权限,安卓系统的权限管理机制要求应用软件开发者在AndroidManifest.xml文件中向系统声明,安卓系统即向应用软件开放其声明的权限,并且系统层不会明示向用户进行提示。

普通权限不涉及用户的个人信息,过多的弹窗和提示反而会增加用户的时间成本,给用户造成困扰,并且用户在使用普通权限的功能时(如调整屏幕亮度)能够明确知晓应用软件获取了安卓系统的该项权限。

因此,笔者认为对普通权限的获取,应用软件可以不单独告知用户。

(三)《服务协议》《隐私政策》的展示

基于告知用户,保障用户知情同意的合规性要求,需要在应用的相关文档中展示有关权限的内容。这些内容可以体现在《服务协议》或《隐私政策》中,也可以通过单独的方式告知。

用户在首次打开应用软件时,闪屏页面会出现展示《服务协议》《隐私政策》的链接,用户可以点击浏览服务协议和隐私政策的全部内容。

《服务协议》《隐私政策》是应用软件开发者与用户之间订立的格式合同。在来云鹏诉北京四通利方信息技术有限公司服务合同纠纷二审案中,法院认为,根据我国《合同法》规定,格式合同如果不存在法律规定的无效情形,应当自始有效。

安卓应用开发完成后,应当在应用软件安装和使用的过程中向用户展示《服务协议》《隐私政策》或提供查看的链接。《服务协议》《隐私政策》中展示的内容应当清楚明白,避免使用模糊的表述。

除此以外,应用软件中应当完整展示《服务协议》《隐私政策》的全部内容,注意超链接点击进入后的内容是否与正式版本一致。

一些应用会在形式上设置《隐私政策》的超链接入口,但是无法跳转或跳转后的内容与隐私政策无关。

在展示的方式上,在安装环节,可以在首次启动的闪屏也向用户进行展示;使用过程中,可以在应用软件的“设置-关于”界面中配置《服务协议》《隐私政策》的链接,供用户点击查看。从保障用户知情的角度,也可以通过弹框的方式告知用户。

(四)不得滥用获取的权限

在获取安卓系统授权的相关权限后,恶意应用会滥用获取的权限,给用户个人信息带来巨大的安全隐患。

一些恶意应用会读取设备中的联系人信息、照片等,造成用户个人信息泄露;恶意应用通过短信权限,来实施吸费、恶意扣费;收集到的联系人信息可以用来实施网络诈骗等。

还有的情况是,恶意应用在通过实时在线读取可以满足功能的前提下,强制将用户设备中的信息上传至自己的服务器;在信息传输的过程中,不采取加密措施,或者加密级别应当是易被破解的级别,增加了数据被截获而泄露的风险。

这些都是滥用获取的安卓权限的表现,从保护用户权益的角度,安卓应用应当避免滥用获取到的权限,做到有的放矢的获取和使用。

3、对完善安卓应用获取及使用系统权限的建议

谷歌

谷歌

谷歌

谷歌

谷歌

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分