Android 权限

By Jake Edge
June 2, 2011
Phones and permissions

翻译:刘晓佳

对应用而言,Android 权限系统采用的是一种非此即彼的机制;要么授予应用所有要求的权限,要么就无法安装。现在我们已经可以在安装的时候了解到应用都需要哪些权限,但对于非常在意隐私和安全的用户来说,能够选择否决某些权限——那些没有和该 app 正常应用有明显关联的权限,是一个更有用的功能。五月中旬以来,基于Android的CyanogenMod固件在其git tree中已经有了这项功能,然而令人惊讶的是,基于这项功能的一个新补丁遇到了一些阻力。

加入权限撤销特性的原始补丁是由Plamen K. Kosseff提供的,但该补丁解决了某些应用程序没有获得期望权限而崩溃的问题。另外,是否启用权限撤销功能可以在 CM 的“Performance Settings”菜单中选择,即使这个功能有 bug 用户也可以简单的 disable 之。现在 Kosseff 基于这个早期工作又提交了一个补丁,它允许用户“欺骗性”地授予 apps 某些权限。一个例子是,应用要求获取 IMEI 的时候提供一个假串号——这让包括CM创建者Steve Kondik在内的某些开发者很难接受。

如果没有伪造 IMEI 串号这个功能的话,也许该补丁早就被接受。Kosseff 的补丁里还有不少在隐私方面争议更小的特性。在补丁的注释中他描述了其它的方法,包括限制联系人列表中哪些信息可以传递给应用程序,或者仅仅显示SD卡的一部分内容给应用程序。不管哪种方法,都明显提高了隐私性,而且应该不会给应用开发者带来任何问题。

返回一个假IMEI值(或者返回一个假SIM ID和手机号码)主要令人争议的是,通常应用开发者都需要该信息来进行数据收集。尽管数据收集可能会被用在恶意企图,但从社区中大伙这个补丁的评论中很明显感觉到,大部分应用开发者是善意的使用该信息统计使用状况。Kondik和其他人都认为,把 CM 弄成一个对应用开发者“有敌意的环境”是会导致整个生态圈的排斥,包括应用开发者、Google、手机制造商、移动服务运营商。

但是,正如Kosseff所问到的,难道最终用户不应该为让应用程序访问哪些信息而做出决定吗?对于IMEI和相关信息,现在看来从CM开发者那里得到的答案是“不”。对于一个以解锁所有硬件潜力为目标的固件版本而言,这样做有点违背它的理念。其它项目,比如 Guardian,对这种补丁很可能就接受了。

争议的一部分在于作为使用它们代码的代价,程序开发者有权"拥有"什么并不清晰。对付费的应用来说,再清楚不过了,因为比起付费来没有更好的方式让应用开发者得到更多了。对免费应用来说,情况变得有些模糊。如果某休闲游戏获得了通讯录访问的授权,那么收回该权限或者提供一个空通讯录,这是否合理呢?此外,许多免费应用使用网络权限来抓取广告并显示在它们的应用中,这也是一种开发者使用来为开发程序提供经费的一种收费方式。此时收回权限对开发者来说是否公平呢?另一方面,如果应用发现(无法访问网络所以)无法播放广告,是否就该拒绝运行呢?

对于这些问题,并没有些简单的答案。对该问题的一种解决方案就是避免应用程序请求比它们需要的更多的权限,但是这些权限实际上并没有划分的足够细来阻止滥用。如果某人授予电子书阅读器使用SD卡的权限(假定SD存储了所需要阅读的电子书),这是否意味着可以延伸到获得其它电子书应用存储的资源的权限呢?这也假定需要网络权限来从不同地方抓取内容,那么也能使用该权限从手机中复制一份用户的阅读习惯吗?

对大多数消费者来说,这些保护措施大都没有意义。在我们看到的消费者的PC世界里,如果用户在获得最新款游戏,鼠标,或视频内容时需要安装某些东西的话,用户将会安装几乎任何东西,甚至会忽略来自系统的安全警告。但是对于我们来说,可能仅仅关心我们存在手机上的数据是否安全,而对授权给应用程序的权限进行更多的控制来解决这方面的问题却还需要走很长的路。一个免费应用程序的健康生态系统需要走的更远才行。

Topic: sohulinux