GrapheneOS对锁定设备数据提取的防护
GrapheneOS具备强大的数据防提取能力。它深度依托Android 17的标准安全功能,以及Android生态中最安全的硬件。目前,只有Pixel系列设备能满足GrapheneOS对硬件安全特性和更新的要求。不过得益于我们与Motorola Mobility的合作,以及高通的技术进展,这一局面将在2027年得到改变。
磁盘加密可为数据提供强力保护,即便是最顶尖的攻击者也无法直接破解。他们只能通过两种方式尝试突破:要么在设备处于「首次解锁后」状态时攻击系统漏洞,要么暴力破解PIN码/密码。
Android 16 QPR2要求安全元件(Secure Element)实现动态递增的重试延迟机制:连续10次失败后锁定4小时,15次失败后锁定41天,且最多允许20次尝试。为兼顾易用性,系统会提前拒绝最近5次重复输入的错误密码,避免浪费重试机会。GrapheneOS仅支持搭载最新一代安全元件限速机制的设备。
受支持设备的安全元件还具备内部攻击防护能力:安全元件固件更新前,必须由机主用户完成身份验证,仅靠有效的签名密钥和更高版本号无法完成更新。这一机制旨在防止政府通过胁迫开发者移除限速功能、制作特殊固件更新,从而绕过重试次数限制。
自2017年底Pixel 2发布以来,Pixel系列设备就搭载了内置计时器的安全元件,可实现重试限速与内部攻击防护。2018年的一篇博文曾对此进行介绍:
如今,安全元件及其与系统的集成度已大幅提升,但这也说明该功能并非新特性,而是有着深厚的技术积累。
GrapheneOS还将密码字符上限从16位提升至128位,支持用户使用高熵骰子密码(Diceware),无需依赖安全元件的限速机制保障安全性。
为让高强度密码既好用,又不会因生物识别解锁降低安全性,GrapheneOS新增了可选的「指纹+PIN码」双因素解锁方案:我们将指纹解锁的允许尝试次数从20次降至5次,若无法正确输入二次验证PIN码,也会消耗指纹重试次数。这样一来,用户可在「首次解锁前」状态下使用由6-8个随机骰子词组成的主密码解锁,日常则用「指纹+短PIN码」的组合提升便捷性。验证指纹通过后,用户需输入二次PIN码,才能完成屏幕解锁并激活硬件密钥库。
GrapheneOS通过强化内存分配器等功能,大幅提升了系统的漏洞防护能力,还深度运用硬件内存标记(MTE)等硬件级安全特性抵御攻击。以下是这些防护机制的部分介绍:
GrapheneOS还针对物理接触攻击添加了专项防护。例如,设备锁定时默认从软件和硬件层面阻断新的USB连接;一旦当前无活跃USB连接,便立即禁用USB数据传输功能。
早在2021年6月,GrapheneOS就推出了锁定设备自动重启计时器,可设置10分钟至72小时的时长。我们最初默认设置为72小时,后调整为18小时。重启时,系统会彻底清除内存数据,将设备恢复至「首次解锁前」状态。2024年4月,我们推动Pixel系列设备实现了启动fastboot固件时的内存清零功能。苹果和谷歌也分别在iOS 18.1和Android 16中加入了锁定设备自动重启计时器,Android用户需开启高级保护模式才能使用。相比之下,我们的实现方案在多方面更具优势,但该功能本身仍具备实用价值。
Android为每个次要用户和私密空间分配独立的加密密钥。GrapheneOS新增功能:无需重启,即可通过结束次要用户会话,或设置默认自动切换,将次要用户和私密空间恢复至「首次解锁前」状态。不过,若要让主用户数据彻底静止、清除内存残留数据并阻止安全元件更新,重启设备仍是更稳妥的方式。
胁迫PIN码/密码是GrapheneOS整体安全体系中的一项辅助功能。在当前用户配置文件的任何系统验证场景中输入该码,都会触发设备擦除——不仅限于锁屏解锁,修改敏感设置等需要身份验证的场景也同样生效。该功能适用于所有用户配置文件,包括次要用户和私密空间,而非仅主用户。此外,在指纹解锁的二次验证环节输入胁迫PIN码也会触发擦除,但SIM卡PIN码验证场景除外。
胁迫PIN码/密码的使用方式多样,例如可写在手机壳上,或记在钱包里的小纸条上。不过用户需谨慎考量:在真实胁迫场景中,擦除设备可能带来人身或法律层面的后果。GrapheneOS并非依赖该功能防止数据被提取,但它能确保即便攻击者获取了设备各用户配置文件的PIN码/密码,也无法恢复任何数据。
胁迫PIN码/密码并非GrapheneOS保护用户数据的核心依赖,而是其众多隐私与安全增强功能中的一项工具。我们的功能页面展示了GrapheneOS相较于标准Android 17的优势,涵盖了大部分主要和次要特性,但仍有更多细节未被纳入。相比之下,我们的版本更新日志更为详尽,所有新增、修改或移除的功能都会被记录在内。