现代的移动设备——手机和平板等——已经成为人们日常生活中不可或缺的电子产品,而它们的 计算能力也越来越接近通用计算机。许多人们过去需要在办公电脑上完成的任务,现在都可 以在移动设备上轻松完成,比如收发邮件、编写文档、组织会议等,甚至有许多大型的计算 也可以在移动设备上完成,比如美颜照相等。换句话说,移动设备实际上就是硬件先进的全 功能电脑。它们运行常规的操作系统,能够安装、修改、卸载和升级大量的应用程序。

本文意在从硬件架构和软件架构的角度分析现代移动设备的特点,并指出以日常通讯为基本 功能的移动设备实际上对用户的隐私和数据安全带来很多风险,因为它们封闭的硬件和软件 架构可以用来监听用户并处理用户的个人数据。

首先,我们看一下移动设备的硬件基本架构,如下图。

现代移动设备的硬件基本可以分为主处理器(SoC)以及与其连接的内存、存储器、周边硬 件和用户输入输出设备,加上收发射频信号的调制解调器。

主处理运行现代操作系统,有专用的内存和存储空间,比如 FLASH 和 MicroSD 卡。

调制解调器是负责对接移动网络的移动电话处理单元,能够处理射频信号的收发。其中也运 行独立的操作系统。

我们再来重点看看现代移动设备的软件架构,如下图。

移动设备的启动一般都会运行一个高优先级的安全启动程序。该程序运行在安全架构之下 (TrustZone),并且一直在线,对系统的其他部分进行监控和管理。安全启动会检查外设、 内存和存储,找到并加载 bootloader 程序。

Bootloader 会检查和配置外设,并使外设进入准备状态,最后找到并加载内核。有时, bootloader 也会进行硬件管理,限制其他程序对硬件的访问。

内核运行起来之后,就对通过硬件的固件对系统的资源进行统一管理,包括内存、存储、外 设等,并对应用程序的资源访问提供统一的接口——我们称之为硬件抽象层。

上层的应用程序通常运行在操作系统提供的中间件和软件框架层之上,是优先级比较低的 活动。中间件和软件框架层提供统一的系统服务接口,包括网络服务、文件服务、日志 服务、升级下载服务、多媒体服务、语音服务、位置信息服务等等。应用程序不关心底层服 务实现,只要通过框架层提供的服务接口来完成应用需求就可以了。

举个例子,当用户拨打电话时,通话应用通过数据库服务查询到通话联系人,拨号应用把号 码通过框架层下传,由中间件和硬件抽象层沟通拨号。内核会根据定义好的通讯协议在硬件 外设和调制解调器之间交换数据,使硬件外设和调制解调器建立通讯,完成通话建立。

了解了移动设备的软硬件架构之后,我们就可以再聊聊该架构对用户的影响,特别是对用户 隐私和数据安全的影响。

第一,没有自由的硬件。目前的硬件,无论是调制解调器,还是主芯片都是没有办法了解其 设计详情的黑盒子。它们究竟可以做什么和做了什么,实际上用户无法控制。

第二,外设的固件不是自由的。大多数外设,比如摄像头、屏幕等,都是定制的。它们的固 件基本不是自由软件,很难搞清楚它们实现了哪些功能。

第三,调制解调器和主芯片及其外设并没有很好地隔离。这就造成了调制解调器可以访问外 设。因此,用户信息可以通过调制解调器被监听和外泄。

第四,所谓安全启动实际也是对用户自由的限制。运行在最高优先级下的安全启动程序不是 自由软件,但是它却掌握了系统的所有资源,包括用户的个人数据。

第五,移动设备缺少自由的操作系统。无论安卓,Windows Mobile,还是 iOS, 都不是自由的操作系统,其非自由模块带给用户的风险很大。已知安卓就有很多后门和漏洞 用来监控用户和搜集数据。

第六,应用程序不是自由的。已经有研究指出,非自由的智能手机应用程序大多数都启动了 超出其应用范围的权限,比如一款手电筒应用也会要求访问联系人。所以,非自由的应用程 序往往从事着一些不可告人的活动。

这些都给移动设备的用户带来不可估量的数据安全和个人隐私风险。作为用户,我们应该如 何应对?

目前来看,我们的建议是选择自由手机操作系统 Replicant 支持的移动设备,安装自由手机 应用集合 F-Droid 推荐的自由手机应用。如果隐私和数据的安全风险太高,那么请不要使 用开启电话和网络功能的移动设备。

总之,现代移动设备无论硬件还是软件,都还是缺少自由的监听设备。