# GrapheneOS Overhauled Default Apps and Secure Clipboard

> 来源：[HackerNews](https://grapheneos.social/@GrapheneOS/117225539756835649)

# GrapheneOS 重构默认应用与安全剪贴板：隐私优先的移动操作系统再进化

## 背景与概述

在 Android 生态中，预装应用和剪贴板一直是隐私泄露的"重灾区"。出厂应用往往捆绑了大量遥测代码，而剪贴板则像是一个"谁都能看的便签"——任何应用都可以在用户毫不知情的情况下读取其中的内容。GrapheneOS 作为以安全和隐私为核心卖点的 Android 发行版，一直在系统层面与这些问题做斗争。

近日，GrapheneOS 官方在其 Mastodon 账号（@GrapheneOS）上宣布了一轮重要的系统更新：对默认应用（Default Apps）体系进行彻底重构，并强化了安全剪贴板（Secure Clipboard）功能。这次更新并非简单的界面翻新，而是从权限模型、数据隔离到用户体验的系统性改造，体现了 GrapheneOS"隐私不是开关，而是架构"的设计理念。

对于普通用户而言，这意味着开箱即用的应用更安全、更干净；对于 Android 开发者而言，这次更新则提供了一个观察"如何在系统层落实最小权限原则"的绝佳案例。

## 核心内容

### 1. 默认应用体系全面重构

GrapheneOS 对系统自带的默认应用进行了大规模重写和替换。长期以来，AOSP（Android 开源项目）的默认应用（如图库、日历、联系人、文件管理等）功能陈旧、维护乏力，且与现代隐私标准存在差距。GrapheneOS 选择以自研或精选替代方案重构这些组件，新应用具备以下特征：

- **无网络权限**：默认应用原则上不申请 `INTERNET` 权限，从源头切断数据外传通道
- **最小权限声明**：仅请求完成功能所必需的权限，避免 AOSP 应用中常见的"权限膨胀"
- **Material You 设计语言**：在保持安全性的同时提供现代化的交互体验

### 2. 安全剪贴板：让"复制粘贴"不再裸奔

剪贴板是移动操作系统中最容易被忽视的隐私漏洞之一。恶意应用可以在后台定时轮询剪贴板内容，窃取用户复制的密码、验证码、银行卡号甚至加密货币地址。GrapheneOS 的安全剪贴板引入了多层防护：

- **剪贴板访问通知与限制**：当应用读取剪贴板时，系统会向用户发出提示，并允许用户限制哪些应用可以访问
- **自动清除机制**：剪贴板内容在设定时间后自动过期，避免敏感信息长期驻留
- **作用域隔离**：结合 GrapheneOS 的应用作用域（App Scopes）特性，限制应用能看到的数据范围

### 3. 隐私仪表盘增强

配合本次更新，系统的隐私仪表盘（Privacy Dashboard）也进行了改进，对传感器（相机、麦克风、定位）和剪贴板访问的监控更加细致，用户可以在一个界面中审视过去 24 小时内所有应用的敏感行为。

### 4. 与硬件安全特性的深度耦合

GrapheneOS 的默认应用与剪贴板安全并非孤立功能，而是与系统的加固内核（hardened kernel）、强化内存分配器（hardened_malloc）以及 Pixel 设备的 Titan M2 安全芯片形成纵深防御体系。即便某个应用层组件出现漏洞，底层防护仍能阻止攻击链的延伸。

## 技术分析

GrapheneOS 这次更新的技术亮点，在于把"隐私控制"从"应用自觉"转变为了"系统强制"。传统 Android 中，剪贴板访问属于普通权限，应用无需声明即可读取。Android 13 引入了剪贴板预览和访问提示，但仅限于前台场景，后台轮询仍难以完全杜绝。

GrapheneOS 的做法更接近"零信任"模型：系统在框架层（framework）对 `ClipboardManager` 的访问进行审计与拦截，结合其特有的** Storage Scopes（存储作用域）** 机制，应用即便声明了存储权限，也只能在用户显式授权的目录范围内读写。这意味着应用无法再通过剪贴板或宽泛的文件扫描来"顺带"收集数据。

对于默认应用的无网络设计，其技术实现依赖于 Android 的权限沙箱：

```xml
<!-- 默认应用通过不声明 INTERNET 权限实现"离线化" -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 刻意不声明 <uses-permission android:name="android.permission.INTERNET" /> -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    ...
</manifest>
```

在 Linux 层，GrapheneOS 通过网络权限分组（Network permission toggle）进一步加固：即便应用通过动态加载等方式获取网络能力，系统设置中独立的"网络访问开关"也能在 eBPF/iptables 层面直接封禁其流量。这种"双层防护"是普通 Android 发行版所不具备的。

此外，新默认应用大量采用 Kotlin 和 Jetpack 组件重写，并通过了 GrapheneOS 严格的内存安全审计标准（默认启用 CFI、影子堆栈等编译时缓解），攻击面相比年久失修的 AOSP 老代码显著缩小。

## 实践建议

对于 Android 开发者，这次更新有几点值得借鉴：

1. **遵循最小权限原则**：每次申请权限时自问"砍掉这个权限，核心功能会挂吗？"如果不会，就不要申请。GrapheneOS 的默认应用证明了"零网络权限"的应用在现代移动生态中完全可行。

2. **剪贴板访问要有"仪式感"**：如果你的应用确实需要读取剪贴板（如自动填充验证码），请仅在用户触发相关操作时读取，避免后台轮询。可参考如下模式：

```kotlin
// 仅在用户点击"粘贴"按钮时读取剪贴板，而非定时轮询
fun readClipboardOnUserAction(context: Context): String? {
    val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
    // 用户主动触发 → 读取 → 立即使用并清除敏感副本
    return clipboard.primaryClip?.getItemAt(0)?.text?.toString()
}
```

3. **关注 Android 14+ 的剪贴板 API**：谷歌正在收紧剪贴板策略，GrapheneOS 的做法很可能被上游吸收。提前适配 `ClipDescription` 中的时间戳与访问回调，能让你的应用在未来版本上表现更好。

4. **考虑在 GrapheneOS 上测试你的应用**：越来越多的隐私敏感用户（记者、安全研究员、企业高管）使用 GrapheneOS。确保应用在"无 Google Play 服务"和严格权限模型下优雅降级，是一个差异化的质量信号。

5. **普通用户升级建议**：GrapheneOS 的更新通过系统自动推送，建议用户保持"自动安装安全更新"开启，并在设置中检查默认应用与隐私仪表盘的配置，开启剪贴板自动清除。

## 总结

GrapheneOS 此次对默认应用和安全剪贴板的重构，再次证明了一件事：**隐私保护的最高境界不是给用户一堆开关，而是让系统默认就是安全的**。当出厂应用天然无网络权限、剪贴板内容自动过期、每次敏感访问都有迹可查时，"隐私"就从一种需要努力维护的状态，变成了无需思考的空气。对于被商业遥测裹挟多年的 Android 生态而言，GrapheneOS 就像一面镜子——它照出了主流系统的妥协，也为开发者指明了一条"安全与体验可以兼得"的技术路线。无论你是否使用 GrapheneOS，它的设计哲学都值得每一位移动开发者认真学习。