按:如果已对私有软件和自由软件的问题有所认识,也可直接从第二节开始看。

随着“移动互联”的发展,智能手机越来越成为我们每天使用频率最高,使用时间最长的电子设备。使用它们在方便我们日常生活,丰富我们的娱乐享受的同时,也带来了诸多社会问题。包括但不限于近视、颈椎疾病、网络沉迷等等一系列生理和心理健康问题,也包括个人信息难以保密,隐私权难以维护等社会问题。

健康问题固然重要,但本文主要聚焦于滥用智能手机带来的社会问题——个人信息难以保密,隐私权难以维护,以及个人应该如何维护个人的隐私权。

一、智能手机“引起”个人信息泄漏的实质

一使用智能手机,各路骗子、推销商就会找上门来,网络骚扰也会持续不断,甚至“科学上网”稍有不慎某天还有可能被警方叫去“喝茶”……我们如今对这些甚至有些习以为常,并且也很清楚这些问题背后的原因——个人信息被出卖给了商家、政府以及按照前两者的定义来说也属于“不法分子”的家伙。我们知道原因,却又仿佛难以避免这些糟糕情况的发生,以至于仿佛“一使用智能手机,个人信息就没法保护”,甚至在一些人看来“没有隐私”本身就是使用智能手机获得便利,所要必须付出的代价。可事实到底是什么呢?一块小小的智慧屏是如何带来大大的社会问题的呢?个人信息从用户输入手机,再由网络传给商家,传给“第三方”——那些用户所完全不知道的存在,中间经历了怎么样的过程呢?我们的智能手机真的是“我们的”——真的忠诚于我们吗?不回答这些问题,我们就不能理解使用智能手机带来的个人信息泄漏风险到底从何而来。

在回答以上问题前,我们先指出一个很多人都没有充分意识到的事实——智能手机泄漏用户个人信息并不是天然存在的问题,任何硬件本身都是死的,它们不会对用户做任何事情,一块放置在角落里,连电都不通的主板也确实只是一块废铁。

能对用户做出一些什么的只有软件,或者说程序。它们都是由程序员事先写好的“流程”,手机、电脑等一切计算机都能按照流程来自动处理信息。计算机能按照提前设定好的**“流程”,也就是程序**,或者说软件处理信息,这一点的确大大加速了信息处理速度,但也埋下了隐患——如果某一台设备上存在一个应用程序在用户不知道的情况下自动运行,那么它就能背着用户收集用户的个人信息,如果还能保证网络通畅,它就能将这些个人信息上传至网络,幕后的操控者就等于在用户身边按了一个窃听器,而且这一窃听器足够先进,不仅能记录用户说出的话,发出的文字,甚至还能记录用户的行程轨迹,用户留下的个人影像。

于是,我们都知道的,应用程序背着用户偷偷搜集用户信息的事情每天每时每刻都在发生着,仿佛用的所有软件都具有如此糟糕的性质。这些瞒着用户监视用户行为的软件就必然属于源代码不向用户公开的私有软件,它们是操控权完全属于商家、政府、“不法分子”,而完全不属于用户个人的软件,用户也没法查看它们的源代码,调查研究它们到底是什么货色。私有软件泛滥而引发的赛博监控问题才是所谓“智能手机引发个人信息泄漏”的实质。

经过以上的分析,我们能看到,是私有软件的泛滥而不是智能设备本身导致了个人信息泄漏泛滥成灾。但有些人可能就会反驳“我们用的软件都是大公司开发的,分析这些软件是不是私有软件没有用”甚至觉得“按照我们的分析,所有软件都是私有软件”。但是,既然我们已分析出软件本身只是用来给计算设备自动运行的流程,具体要怎么编写和使用流程就是不一定的。大公司能开发软件来监视用户,用户是否可以也开发一些软件为用户自己所掌控,不受大公司控制呢?

这听起来似乎有点不可思议,好像不符合某些人对软件用户就该对软件工程一窍不通的刻板印象,但别忘了最早的软件用户也是最先编写软件的人——程序员。并非所有程序员都甘受大公司的淫威,拿着貌似很高的工资,在996和狼性文化中“卷到死”,也并非所有程序员都觉得写一个自己不能掌控的软件来反对自己是“无所谓的”“自己只是个打工仔”。

早在信息技术刚刚开始在美国普及到民间的上个世纪80年代,就有一群不满于大公司淫威的程序员,面对大公司欺压用户,剥削程序员,还让程序员写他们控制不了的程序的现状,发起了自由软件运动。他们曾以编写了 GNU 系统的理查德·斯托曼以及事实上为 GNU 系统编写了 Linux 内核的林纳斯·托瓦兹为代表,并已发展了40余年,积累成果颇丰。自由软件运动发起以来,这些自由软件早已走入生活的方方面面,只是还不为用户所熟知罢了。关于自由软件的详细介绍可以参看这篇,这里不再赘述。

小结一下,个人信息泄漏问题是私有软件带来的,和硬件无直接关系,使用能保护用户隐私权的自由软件是能避免个人信息泄漏的。

二、在手机上实现软件自由保障信息安全

结合之前对自由软件的认识,我们可以问一个问题:在手机上使用自由软件就能保证信息安全了吗?

实际上并没有这么简单。那些使用了国产安卓的手机基本只有其 Linux 内核算是自由软件,而其操作系统的用户态部分则完全是私有软件——因为安卓虽然是自由软件,但其用户态部分使用的是允许私有化的版权许可证,而这些国产安卓的源代码又在哪里?它们一般都不会去实现手机存储区加密功能,甚至自行集成侵犯用户隐私的恶意功能者都不在少数,这就会导致,只要警方愿意彻底检查我们的手机,我们存储在手机上的任何信息都能被他们获知。我们自己设定的解锁手势和口令根本毫无用处——它们仅仅作为登录用户界面的鉴权令牌。只有那些使用了相对自由的安卓版本的手机才会去实现存储区加密,进而将解锁手势和口令用于解密存储区。

正如那篇《自由操作系统的重要性》中说的那样,操作系统作为最底层的程序,对其上的所有应用程序具有统治力,只有在自由的操作系统里,才谈得上实现软件自由。就如同只有在社会主义国家才谈得上无产阶级当家作主。

不幸的是,手机操作系统的自由实现得很不彻底,手机硬件所受的限制远大于电脑硬件,不仅仅是操作系统构架如此,甚至连硬件本身对软件的支持上来说都是如此[1]。因此,现阶段手机能达到的自由度不如电脑。

[1]硬件自然是死的,但硬件的运行又离不开软件,这种直接和硬件发生作用,需要在特定硬件设备内部存储或运行,且一般不能由用户轻易替换的软件,被称为固件。存储在个人电脑主板的 rom 芯片中、负责初始化必要板载硬件并加载操作系统的 BIOS 也属于固件,目前其自由替代品已被开发出来,比较有名的有 coreboot

在手机端,操作系统基本为苹果开发的 ios 和谷歌开发的 Android 所垄断,前者干脆搞封闭,尽管用户可以通过“越狱”获得很大的权限,但仍不能完全掌控设备,不能停用一些和 ios 深度绑定,且旨在侵犯用户隐私的系统服务,并且它完全不给用户留一点自主选择第三方发行版的机会,其软件商店之中更是毫无自由软件的生存空间——哪怕其中的确有部分软件有公开的源代码,但因为用户无法在 ios 中安装自行编译的软件(违反了自由软件定义的第零、一基本自由),故仍然毫无自由可言;后者倒是大谈“开源”,可是又狡猾地绕开了左版(copyleft)的限制,搞出一套可以被全盘私有化的用户态框架,成为一个对用户限制重重的操作系统,尽管它是基于 Linux 内核开发的。

那么手机端的 GNU/Linux 操作系统呢?手机端的GNU/Linux系统确实存在(例如sailfishos、postmarketos),但是配适的应用软件非常少,可用性不足。而想要在 Android 中把 Linux 内核解放出来,也不是一个轻轻松松的事情。

不过 Android 用户为了隐私安全还是建议各位刷入相对自由的第三方 Android ,如 lineageosrros 等。这些第三方 Android 操作系统架构仍然是 google 设定的,但少了谷歌框架等侵犯用户隐私的东西,其用户态框架属于尚未被私有化的非左版自由软件,还允许用户加密设备,在软件自由方面虽依然不足,但在保护隐私方面却也够用了。但这并非每一种型号的 Android 手机都能刷第三方 Android,只有那些可以“解锁”,且有专门适配该型号的第三方 Android 安装包的手机才能。至于IThing用户,我们只能建议您卖掉自己的烂苹果设备——非也,那是你交钱允许烂苹果派遣到你身边的电子狱卒。

在现阶段我们虽然不能在手机端实现彻底的用户自由,却能通过给 android 手机刷相对自由的第三方 Androuid 来保障用户隐私权。

那么该如何给我们的设备刷入第三方 Android 呢?

1.为设备解除 Bootloader 锁

为了限制用户更换 android 发行版本 ,各个手机厂家纷纷给设备上了 Bootloader 锁,简称“BL锁”。我们为了给设备刷入第三方 Android,首先需要解开设备的 BL 锁。不同的厂家的不同型号手机有着不同的解锁方法。Bootloader (引导程序)负责加载操作系统的内核,所谓的锁,指的是引导程序仅会加载被厂商的私钥签名的内核,而解锁后引导程序方可加载任意内核[2]。

[2]Google pixel 的引导器还允许用户自行导入公钥,允许引导程序仅加载能被承认的公钥验签的内核。从这个意义上讲,只要 BL 锁能为用户掌控,也会成为用户数据安全的一道保障。

第一类设备是无法解锁的。代表是华为的设备。华为标榜着自己是“爱国企业”,却处处学习美国企业苹果,在烂苹果身后亦步亦趋,解锁它的设备早已变成不可能。对于这样的设备,我们仍然建议您赶快将它们卖掉(华为早期型号中有一部分可以解锁,这一部分尚可以尝试)。

第二类是解锁相对复杂,需要使用私有软件和解锁码的。代表有小米。小米的较新型号都需要通过向小米公司发送解锁申请,并凭借专用的私有软件将解锁码上传到手机中才能解锁。而用户为了获得解锁码不仅需要等待,还需要向小米公司再次出卖自己的个人信息。

第三类是解锁比较简单,用户可以自行解锁的。代表是谷歌 nexus/pixel 系列的手机以及国产的 oneplus (一加)系列[3]手机,用户可以使用 adb 和 fastboot 工具自行解锁。

第四类是没有 BL 锁的。这类设备包括了小米和三星的一些早期型号(比如小米的 redmi 1s),它们虽然没有锁,但型号本身过旧,设备性能不够用。

[3] nexus/pixel 系列手机和 oneplus 系列手机,除了最新型号一时可能无可用安装包外,全系列均有安装包可用,且大多数型号的安装包至今仍在稳定维护中。刷相对自由的第三方安卓可优先考虑。

为了解锁 ,我们需要首先准备好 adb 工具和 fastboot 工具,并确保它们能够与手机建立连接。接下来以一部能用户自主能使用 adb 工具解锁的手机为例,说明用户如何自主解锁。

首先我们需要在手机上调出开发者模式。点开“设置”,在其中点开“关于手机”,找到“版本号”,并点击五到十次即可令开发者模式处于显示状态。之后我们返回上一级,选择“系统”,就可在其中找到开发者模式(在不同的安卓发行版中其位置会有些许不同)。进入“开发者模式”后找到并开启“ USB 调试”。之后在电脑上的终端模拟器里输入$ adb devices,然后在手机上确认连接。

之后我们就可以进入设备的 bootloader 页面,具体的进入方法有:

(1)通过手机按键进入

各种型号略有区别,但大都为同时长按音量键和电源键,音量键只需按住上键或下键中的一个,但不能同时按,同时按音量上下箭和电源键的作用是强制关机。

(2)通过 adb 工具进入

如果通过 adb 工具进入,则需要在电脑上输入$ adb reboot bootloader,等待片刻便能进入 bootloader 模式。

在手机上出现 bootloader 模式的页面后,我们在电脑上需要通过 fastboot 工具为手机解锁。解锁往往会清空用户数据,在解锁前应当备份好个人数据。

输入$ fastboot oem unlock,手机会提示是否解锁,选择确认即可。

2.下载设备所需的第三方 recovery 和 第三方 Android 安装包

我们需要先使用 adb 工具为手机刷入第三方 recovery 工具,然后再用第三方 recovery 工具为手机刷入第三方 Android。

第三方 recovery ,我们推荐的有 twrp 和 lineageos 自带的 recovery(可在对应的安装包的下载页面下载到,比如 onelous5 的 lineageos 安装包下载页面同时提供 r安装包和 recovery 的 .img 文件)。前者功能更强大,后者更能适应较新型号的安卓设备。

为了取得所需的第三方 Android 安装包,我们可以打开第三方 Android 之一的 lineageos 的 wiki 页面,看看您手中的设备型号是否能在这里找到。如果您没有找到,也可以选中“Show discontinued devices”,然后会将现在已经不更新维护的设备也展示出来。这些不再维护更新安装包的设备也能刷 lineageos ,但它们的安装包长期无法更新,安全性不如那些稳定更新的强。

如果您还是没有找到您的设备型号,那么大概率您的设备无法刷第三方 Android ,我们建议您使用其他能刷第三方 Android 的设备,而现有设备先留下来,也许未来可能推出安装包,特别是对于一些新型号,安装包往往需要间隔几个月到一年多才会推出。

同时 lienageos 官方的下载页也提供安装包,但只提供仍在滚动更新中的。

3.为设备刷入第三方 recovery 和 第三方 Android 安装包

刷入第三方 recovery 同样需要在 bootloader 页面下操作,输入$ fastboot flash recovery <对应的 .img 文件>,等过程结束报“succeed”即说明刷入成功。

接下来进入第三方 recovery ,进入方法有:

(1)通过 bootloader 页面进入。 google 的 nexus/pixel 系统手机和 oneplus 出的系列手机的 bootloader 页面允许用户使用音量键调整选项,并通过电源键选择,找到所需的“recovery”项选中即可进入 recovery 页面。

(2)通过手机按键进入。同样是长按电源键和音量键。一般情况下,如果手机进入 bootloader 页面时需长按音量下键和电源键,那么进入 recovery 页面则需要同时按住电源键和音量上键。反之亦然。

(3)通过 fastboot 工具进入。在手机处于 bootloader 页面时,在电脑上输入$ fastboot reboot recovery即可进入。

twrp 的功能远比 lineageos 自身的 recovery 强大,支持备份、恢复主要分区的内容,一定程度上可用于将用户数据迁移到使用同一发行版的另一手机上,且 lineageos 自身的 recovery 仅能用于 lineageos ,不能用于其他第三方 Android ,比如 rros 。第一次解锁刷机的手机最好使用 twrp 进行刷机。以下说明都以使用 twrp 为背景。

进入 twrp 后,我们不能立刻开始刷入第三方 rom,而是要将残存的数据清理(wipe)掉,选择“wipe”,选择“Advanced Wipe”,第一次刷机最好将 Cache、System、Data、Internal Storage 全部选中,然后滑动“Swipe to Wipe”,注意不要清理 vendor 。清理(Wipe)后建议立即重启设备到 recovery,避免残留数据。

接下来可以选择两种方式刷机:

(1)将安装包本体传至设备上。我们可以通过 USB 传输将安装包包从电脑直接复制粘帖到设备上,然后在 twrp 里选择“Install”找到对应的 安装包。安装包是一个 .zip 文件。

(2)使用 adb sideload 不将安装包上传到设备上,而是通过 usb 传输的方式刷第三方 Android 。在 twrp 里选择“Advanced”,选择其中的“ADB Sideload”,滑动“Swipe to Start Sideload”,等设备上准备就绪后。在电脑上输入adb sideload <rom包名称>

等过程结束后如果报 Succeed,则说明安装成功,可以重启设备进入相对自由的安卓系统。如果报 failed ,则建议再次清理(Wipe),并核对安装包的 sha256 值,或者以报错信息为关键词寻求搜索引擎的帮助。

刷机过程中会遇到各种意想不到的问题,欢迎大家详细向我们提出问题,本贴会根据大家的反馈意见更新。