我的手机我做主,说说我怎样在 Android 上保护隐私数据

Cocoa开发者社区

共 5367字,需浏览 11分钟

 · 2021-08-03

在看了《对「自愿」上传隐私数据说不,这些是我们可以做的》之后,有感于评论区里不少人对必要隐私的需求。但原文的作者并没有提到能够更多详尽的保护隐私的方法。因而,即便是想要采取一些行动,也难以入手。这让我感到颇为遗憾。因此,该文章诞生了 —— 它将致力于介绍一些在国内能够切实保护隐私的办法。

这里的大部分内容主要以实操为主,尽力面向新手友好。将会有详尽的操作步骤说明。

由于内容较多,这篇文章将从 Android 手机着手,着重介绍其中两个保护隐私的方式:

  • 拦截不正常的权限请求
  • 隔离手机存储空间

更多内容,将在后面的文章中逐步展开,敬请期待。

开始之前...

首先,这些方法会从不同程度上依赖于一台装上 Magisk 的手机。虽然部分可以用其它的方式(等效)替代,但总归不是最佳方案。如果可以的话,装上 Magisk 是最好的选择😄。Magsik 下载链接:https://github.com/topjohnwu/Magisk

同时,考虑到每个人对软件的心理定价并不相近,如若相应板块主要介绍的是付费软件,文末将给出核心功能等价的免费软件(如可能),以便做出更好的选择。

另外,如你选择尊重自己的隐私权,还请注意:这将一定程度上侵犯相应服务商的权益,可能会致使你的服务提供商行使拒绝提供部分或全部服务的权利。因此,还请三思而行。为便于决断,本文将在每一章的开头简略附加已知会产生这种情况的例子。当然,隐私程度的提升,也会以牺牲部分便利性作为代价。你需要自行权衡利弊,并做出认为合适的决定。

隐私与便利是一门平衡的艺术,世上并不存在绝对的隐私

相对的平衡,可以造就一副美景。过分的平衡,将破坏这种美感

感谢你花费许多精力读到这里。让我们正式进入这篇文章吧。

拦截权限 —— App Ops

⚠ 可能与定制系统的权限管理功能冲突。请二选一。

⚠ 部分软件可能会因拒绝权限请求而停止运行。

相信有很多人对于「不得不用的毒瘤软件」咬牙切齿:

  • 由于一些客观原因,不得不用
  • 但又会私下干点小动作...

毒瘤软件之所以毒瘤,很大程度上就在于兼有以上两点。其表现之一,就是权限的过度索取。

被工信部通报存在过度索取权限问题的部分应用

那么,要如何解决这个问题呢?直接用一些手段,拦截不正常权限请求未尝不是个好主意。

自 Android 4.3 开始,一个内置的核心组件被引入到系统内:AppOps。经过它拒绝的权限,应用会「允许使用该权限,但得到空白信息」,而不是「直接被拒绝了某项权限」。

一方面,空信息可以有效的保护隐私。另一方面,不是直接拒绝,而是给予空信息的方式也在一定程度上节制了部分应用「不给权限不给用」的情况。

同时,由于 AppOps 自高版本 Android 开始才在系统里内置不完整的管理前端,因此,如果想要用的舒心,则需要一个更好用的程序来接管 AppOps。理论上,你可以使用任意的前端来达到目的。我使用的是由独立开发者 Rikka 编写的应用:App Ops。

首先,这个软件的最佳实践需要你使用 Shizuku 或 Sui(它们都是同一个作者 Rikka 的作品。均免费且开源)。它们将作为 App Ops 操纵系统组件的后端。


Shizuku 与 Sui 在功能上是高度重合的。如果你的手机有 root 权限,特别是基于 Magisk的 root 权限,请优先考虑后者。
退而求其次,还可以使用 ADB 激活 Shizuku 或者授予 AppOps 设备管理员权限来达到相同的目的,在 Android 11 以及更高的 Android 版本,可以无需连接电脑,通过本机无线调试即可激活 Shizuku。

存储空间隔离

⚠ 可能会破坏一些定制系统的功能(如 MIUI 的「主题管理」)。最坏的情况是:手机可能无法开机。建议在实操时谨慎隔离系统应用。
⚠ 对某大厂游戏(「某某精英」)启用隔离会导致封号。可通过禁用存储权限的方式缓解。
有些应用会在手机空间里随意安放和读取各种各样的文件。这会带来这些影响:
  • 手机内存变得凌乱不堪,以至于随便找个文件都是大工程;

  • 应用可能会意外上传一些重要的文件;

  • 应用可能会意外知道你喜欢的照片、音乐;

  • 应用可能会读取基于文件的唯一设备码,以实现跨应用跟踪能力;

  • ……
简而言之:由于低版本 Android 权限设计的局限性,任何一个拿到了完整存储权限的应用,都能读取手机里几乎所有的内容。与之同时,它们可以随意写入各种文件,以达到各种预期之外的目的。这往往不是我们想要的。
Android 内置存储现状
需要读取的东西可以读取,不需要读取的东西不要动,也动不了。这,或许才是我们想象中的样子。
不过,受制于各种因素,大多数软件开发商无暇顾及这一点。就连本将 Google,最有能力推动存储隔离的公司,也推迟了已经内置于 Android 中应用沙盒的全面推行。
那么,自己动手,就成为了丰衣足食的必要条件。让我们开始吧。

安装

你可以长按扫描下方应用卡片中的二维码在 Google Play 下载应用,或从合适的渠道获得应用:


打开它,并点击「启动核心服务」。
描述很多很全面。主要是针对隔离的用途
其次,打开 Magisk。转到「仓库」页,并依次安装这两个模块(已经安装的模块无需重复)。
  • Riru

  • Riru – Enhanced mode for Storage Isolation
两个模块的示意图。不要纠结顺序为什么是反的(
安装完成之后,请重启手机。之后,打开「存储空间隔离」,开始设置隔离规则。
如果一切就绪,你应该看到这样的画面
这里要提一句的是:由于我已经设定好了,因此会在首页看到「已处理 X 次」「已为 XX 个应用启用隔离」的字样,但存储空间隔离默认不对任何应用启用隔离。每个应用都必须要手动干预,方可实现隔离效果。同时,已经在手机里产生的文件不会自动清理,需要手动删除。

开启隔离

点击「应用管理」,你就可以看到所有申请了存储权限的应用。
这些都是可以隔离的应用。未申请存储权限的不在上面
你也许会注意到,一些应用的右侧有一个「盾形对勾图标」。它表示在云端规则(公开托管在 GitHub 中。你可以在 https://sspai.com/s/rNeQ 查看完整的列表)里,该应用虽然申请了存储权限,但是无滥用行为(在手机存储里随意存放文件)。
不过,未认证的应用未必一定会滥用存储空间。与之同时,认证的应用也有一小部分会滥用存储空间(例如未设定某个选项的 Minecraft)。是否真正隔离取决于你的个人意见。
如果决定对某个应用启用隔离,请点击对应应用的图标 / 名称,进入管理界面。
这里以 WPS Office 为例。
默认是不会给应用开启隔离的。如你所见
如果某个应用在云端规则里被标记为「会滥用」,且隔离后不会显著影响破坏应用的行为,那么你会在这里看到「推荐为此应用使用隔离」的字样。
打开隔离的方式很简单:打开「启用存储空间隔离」即可。
隔离了~
如果现在就打开被隔离的应用,并试着在应用内浏览手机里的文件,你会发现:手机里原有的各种文件都看不见了。
原有的东西不见了!
这代表隔离成功。
从今往后,该应用所有的写操作都会被隔离到一个单独的地方。而读操作除非主动设定,否则均无法进行。

设定读写规则

不过,基于每个应用的使用场景,我们需要对隔离的应用允许读写存储空间的某些位置(不然需要读取文件的应用就没得用了)。每个应用需要允许的内容不同,我会在文末稍微介绍一些实用的建议。
对于 WPS Office,需求无非就是:
  • 打开,并编辑手机里的文档。
那么,只需要允许 WPS Office 读取文档所在的目录就可以了。
设定也很简单。还是以 WPS Office 为例。我们再次回到「存储空间隔离」,并点击「可访问的文件夹」。
这里是设定各种访问权限的地方
你会在上面看到一些「模板」。
这些是总结出来的最常用的允许方案。通常,应用需要的合理文件操作,上面的模板都可以实现。这里的例子也不例外。我们只需要选择「模板:下载和文档(标准文件夹)即可」。
勾上了「模板:下载和文档(标准文件夹)」
这会允许 WPS Office 读取以下两个位于手机存储空间里的文件夹:
  • /sdcard/Download

  • /sdcard/Documents
通常,文档也只放在这两个位置,那么给予 WPS Office 这两个位置的读取权限就完全足够了。现在,再打开 WPS Office,你就会发现:程序可以拿到 Documents 和 Download 里面的文件了。
允许访问的目录出现了!
同理,你也可以对其它的应用进行这样的操作,以达到隔离和便利的最佳平衡点。
当然,你也许会问:如果我想要的文件路径不在模板里呢?也很简单:只需要使用「自定义(仅作用于此应用)」即可!
就是那个泛白的选项
点进去,你会进入一个类似于「文件管理器」的界面。在你需要允许应用访问的文件夹前面打上「对勾」,保存。
打勾即代表允许该文件夹被访问。记得点击右下角的「确定」以保存

设定导出规则

当然,还有另一个常用的场景。假定应用在被隔离的存储空间里放了个东西,要怎么把它取出来呢?
这就需要用到「存储空间隔离」里的另一个功能了:导出被隔离的文件。设定同样简单。这里将换成「哔哩哔哩概念」来演示。
点击「导出被隔离的文件」。
有点老的小蓝。但是刚好够用,不升级了
如果幸运的话,这里会有云端的导出规则。根据说明文字按需启用,通常就能解决大多数应用文件的导出问题。
不过,如果没有已知规则的话,就需要自行设定了。
转到「添加同步文件夹规则…」的选项,点击它。
添加规则的界面
这里的内容有点多,我们逐一介绍一下。
  • 描述:用于写给人看的标记,表示这条规则是用来干啥的。可以随意选择(不会影响到实际隔离效果)。

  • 来源路径:需要取出来的,位于隔离存储空间的文件路径。

  • 目的路径:取出来的文件,放置在实际手机存储空间的位置。
通常,我们只需要设定后两个选项即可。第一个是方便管理的标注,可以随意设定。
由于每个应用放置文件的路径是不统一的,因而设置「来源路径」需要你知道应用将文件放在何处。下文假定你已经知道了相应文件的位置。
点击「来源路径」,会看到一个对话框,请求选择路径:
这里是隔离空间一览
选择的方式如下:
  1. 点击列出的文件夹,直至对应应用存放相应文件的隔离路径。

  2. 确认无误后,点击「确定」。
听着很迷惑?为了方便理解,我们来假定这么一个隔离场景:
  • 「哔哩哔哩概念」原来将某个文件丢到 /sdcard/Documents 中

  • 为了方便管理,我希望将其内容放在 /sdcard/Documents/bilibili 中
基于这个场景,我们可以这么设定「来源路径」:
  • 点击对话框里的 Documents(/sdcard 已经被默认加上)

  • 点击对话框右下方的「确定」
完整的操作录屏如下:
点击、再点击...
这样,我们就设定好了「来源路径」。接下来,是考虑这些文件放到哪里的问题,也就是程序里的「目的路径」。
还是上面那个场景,我们将这样设定「目的路径」:
  • 依次点击对话框里的「Documents」、「创建文件夹」、输入「bilibili」、点击「确定」

  • 点击对话框右下方的「确定」
文字太抽象,不好理解?这里是完整的操作录像:
略复杂... 不知道好不好理解
这样,设定就完成了。以后,「哔哩哔哩概念」在 /sdcard/Documents 下存放的文件,都会被「镜像」到 /sdcard/Documents/bilibili 中。
同理,也可以对其它应用进行设定。如果设定得当,那么就可以实现:
  • 应用只会在自己的位置放置文件。除非你要求将其拿出来,放在别的位置。

  • 应用只能读取到自己的文件,以及提前设定为可以读取的文件。
既限定了合理的边界,又不会过分影响到手机的日常使用。

如何确定导出规则

那么,该如何确定应用的导出规则呢?以下是一些建议:
  • 以需求作为出发点。需要什么文件,就导出什么;

  • 根据应用分类存放文件。例如:你也许希望微信和 QQ 下载下来的文件不要都混在 /sdcard/Download 中。取而代之,将其放在两个子文件夹内;

  • 若不进行导出,将会损坏某个应用的功能,且没有其它方法可以解决这个问题时。那就没办法了。给个例外吧……

结语

以上就是两个保护隐私的方案介绍的全部内容了。
如你所见。隐私保护并没有想象中的那么困难。只是,它需要你的一点动手能力和时间。即将到来的联网控制、应用列表读取控制等内容,也将和这里的内容一样易于操作。
由于我是第一次在少数派上面写文章,可能会存在各种疏漏和不完善之处,欢迎批评指正 😊。
衷心希望这篇文章对你有帮助。也衷心感谢 Unsplash 提供的无版权精致图片,本文许多图片都来自于此。那么,下期见。
题图来自 Unsplash@adrien



浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报