原生及类原生Android 如何对付软件层面的信息收集

如果你手机的操纵系统是基于AOSP的纯净系统,那么你基本上可以确定系统本身不会监守自盗,收集和上传你的个人信息。但是互联网巨头和政府监视民众的主要渠道并非只有操作系统这一种,另一条渠道则是通过人们所安装的软件间接的进行监视。也许在某些国家中,你不用安装巨头的App也能正常生活,但至少在中国,有些巨头的软件是不得不装的,例如微信支付宝学习通之类,工作需要它们,行商需要它们,上学需要它们,乘车需要它们,存款和结帐也需要它们,并且几乎所有的国产网络服务都在想方设法地砍掉网页端的功能,诱导和强迫用户安装App。可以说,在中国,要想正常生活的话,就不得不安装巨头的软件。新冠病毒更是加剧了一点,人们或多或少地从新闻中了解到,那些不会使用手机,不会使用微信、支付宝的老年人,在社会中可谓是寸步难行。因此,这些软件是我们必需面对的,但同时它们又都很流氓,像吸血鬼一样试图榨干用户的资源,性能和数据。面对这样的流氓软件,原生Android本身没有什么办法,即便是最新的Android R也是这样。因此,一些习惯于使于IOS和国内定制UI的人对原生Android的批评也不是没有道理。因为在默认条件下,原生Android的电量和性能会迅速地被这些流氓软件消耗,个人隐私也没有保障。相比之下,IOS和定制UI则更擅长应对它们,但这是有代价的,因为如果你授予一个大流氓绝对权力,让它来收拾一众小流氓,也许小流氓确实能被收拾掉,但是你拿这个大流氓怎么办呢?如果你要防范盗贼,你应该做的是给自家装上防盗门,而不是请一个土匪头子当保安。因此,合理的选择是在纯净Android的基础上,防范流氓软件。

那么应该怎么做呢?

两个思路,隔离与限制。

隔离,就是使个人资料与流氓软件隔开,使流氓软件收集不到什么信息。实现隔离的方式有两种:物理隔离和软件隔离,物理隔离就是同时使用两个或多个设备,比方说手机A和手机B,在手机A上只安装私人使用的软件,在手机B上只安装那些不得不安装的流氓软件,这样你可以避免微信和学习强国扫描和上传你的私人资料。有些人之所以翻墙被抓出,也许就是因为同时装了微信和shadowsocks。物理隔离是一种简单直接的办法,不过它有一个明显的缺陷,那就是你的口袋可能装不下这么多东西,你可以使用小屏手机解决这一缺陷。

软件隔离则是通过将流氓软件锁进"工作区间"来实现的,Shelter就可以做到这一点 (Isolate your Big Brother Apps / Multiple Accounts) - f-droid.org/packages/net.typeb 工作区间内的软件无法访问区间外的存储,也无法读取区间外的已安装软件列表,但依然能读取设备识别码,短信等,而且在工作区间内使用微信也许会导致封号。

限制主要指的是对权限和后台进行限制,我认为Android系统自带的权限管理是很不完善的,有一个名叫"Capabilities of a Zero Permission App" (一个零权限的App能干什么)就很能体现这一点,这个App不索取任何权限,就能获取到包括手机型号,处理器,运动感应器(重力,方向,加速度),系统版本号,认别码,广告ID,运营商,剪贴板,已安装程序列表在内的海量信息。这其实侧面反应了Android自带权限管理机制的缺陷,即便是最新的Android R或者吹得很神的MIUI12 也只是在剪帖版和应用列表做文章,加上了临时授权而已,有许多敏感信息的权限根本就没有开关,而是默认授予的。

著名的设备检测软件Aida64只要5个非敏感权限,就能对一个设备有相当全面的了解,而微信则索要75个权限,想象一下它能获取多少信息。用开源软件和模快来增强权限管理机制是一个很好的想法,但只有老版的Xprivacy才能做到相对完善的权限管理,而它已经不支最新系统了,至于新版的Xprivacy Lua,或是Appops,它们的作用还是过于有限。Appops不能禁止App读取已安装列表,Xprivacy Lua 能禁止App读取已安装列表,但不能禁止App访问运动感应器,同时它们都不能禁止App访问设备识别码,网络状态等信息。这里有必要提一下运动感应器这个经常被忽视又很重要的权限,现在的技术已经能够做到不靠GPS和网络,单单通过对感应器数据(重力,方向和加速度)的分析和计算就能记录一个人的行踪了,而你基本无法禁止这项权限。此外,Nakedsecurity有一篇报告专门介绍过流氓软件可以通过读取缓存,信息中转等方式绕过自带权限管理机制:nakedsecurity.sophos.com/2019/

可以这么说,在现有的条件下,单靠权限管理就想阻止流氓软件收集个人信息是不够的,这当然不是说Android的权限管理机制可有可无,或是说限制不限制权限没有什么区别,而只是说即使是被隔离和禁用所有权限,流氓软件也依然能获取足够
对用户进行识别和定位的信息。既然无法单靠权限就阻止流氓软件进行识别和定位,那就只好阻止流氓软件在后台运行,也就是说在不使用流氓软件的情况下将其冻结。

Shelter可以冻结工作区间的软件,Fdroid的另一款软件Disabler(f-droid.org/packages/com.servo) 则可以冻结主区间的软件。对于那些并不特别依赖流氓软件,不需要随时关注微信通知,但有时不得不用的人而言,这是不错的一个方案。对于那些必须时刻把微信等流氓软件挂后台的人而言,有必要把运动感应器关掉,Android Q的开发者选项中提供了禁用运动感应器的选项,之后的版本应该也有(androidpolice.com/2019/05/08/a)

综合考虑,我认为应该将基于AOSP的纯净系统的手机作为私人使用的设备,并且主要从FDroid安装软件,如果你打算从其它地方安装软件,应阅读其协议,确保它不会收集设备信息,或是只收集不重要的信息。你也可以通过ClassyShark3xodus (f-droid.org/packages/com.oF2pk)这一软件对其它App进行扫描,来帮助你做出判断。在此之外,如果你被迫要使用流氓软件的话,那么要么用软件隔离的方式将其限制在工作区间,要么在第二设备上使用它,如果要让流氓软件常驻后台的话,除了要禁止其它敏感权限,也要禁用运动感应器。当然,如果嫌麻烦的话,可将iPhone作为第二设备,搭载定制UI(小米,华为,OV的自带系统)的手机是最坏的选择。国内的定制UI主要解决的是流氓软件的耗电和自启动的问题,而不是流氓软件收集信息的问题。IOS将中国用户的信息存在云上贵州,IOS自带浏览器Safari默认将ip报告给腾讯(reclaimthenet.org/apple-safari),而且可能像MacOS一样上传运行记录,但与定制UI相比还是更好些。

Follow

我还想说一点:和世上其它的事物一样,隐私(或者自由,或者安全)是不适合用非黑即白的眼光看待的。在完全的隐私和完全的无隐私之间,存在一大片灰色区域。不应该把隐私的情况想象成硬币的正反两面:要么拥有绝对的隐私,要么一点隐私也没有。因为这不合事实,而且会导致两种极端,一种极端是像隐士那样深居简出,以至于干扰到了正常生活,另一种极端则是抱以一种无所谓的态度,干脆一点隐私也不要。 更为恰当的做法将隐私(或者自由)的状况视为一道光谱,或者一个坐标系,因为隐私是多层面的(硬件,系统,程序),也是多方向的(政府,厂商,开发者),每个层面,每个方向上的提升都是有意义的,只是某些领域比其它领域要为重要。没有人可以在一夜之内就成为专家,也不必为自己无法实现一个教程的所有建议而困扰,你可以优先实现那些基础性的架构,再慢慢地在上面添砖加瓦,慢慢地增进自己在此方面的知识,通过这样的积累,渐进提升自己的隐私(或自由)。不要让二元对立,眼高手低的思维方式主宰你的看法。

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.