安卓阵营|安卓阵营的安全架构历史:一直被“无视”的核心功能

虽然大家都知道硬件安全很重要,但它从来都没有获得过与其重要度匹配的关注度。而荣耀在 1 月 10 日发布的 Magic V,除了新一代骁龙 8 移动平台和折叠屏,还重点宣传了很久没有进入公众视野的安全功能。
安卓阵营|安卓阵营的安全架构历史:一直被“无视”的核心功能
文章插图

荣耀 Magic V 的官方宣传是 “一个保险柜和两把锁”,搭载荣耀首款独立安全存储芯片,拥有独立于安卓操作系统之外的双 TEE(可信执行环境)安全系统。其有隐私维修模式并能随时切换,可以远程锁定 SIM 卡,遭到恶意刷机后也会要求账号密码,即便物理破解存储芯片也无法读取个人数据等众多安全特性。
【 安卓阵营|安卓阵营的安全架构历史:一直被“无视”的核心功能】毫无疑问,智能手机就是普通民众能接触到,科技安全级别最高的产品。在智能手机就能提供极高安全性的今天,我们以最有代表性的高通为例,一起回顾一下 Android 阵营的安全架构历史。
ARM 阵营的安全硬件演进提到 Android,自然离不开 ARM 指令集和高通。前者是移动世界的基石,后者是 Android 阵营 SoC 的代名词。从高通第一代骁龙 S1 问世至今,骁龙品牌走过了十四年,无论是骁龙 S1 到 S4 时期,还是 “骁龙 8XX” 时期,高通骁龙一直都是 Android 旗舰的御用移动平台。高通骁龙平台持续强化的安全能力,是 Android 生态最重要的安全和隐私基础。
无论是桌面平台的 TPM 可信平台模块,还是移动端的安全芯片,一直追求的都是安全三要素:Confidenciality 机密性、Integrity 完整性、Availability 可用性。而 ARM 阵营安全硬件近 10 年的演变,本身就是一部新功能高速发展和普及的历史。
安卓阵营|安卓阵营的安全架构历史:一直被“无视”的核心功能
文章插图

“史前” 的 ARM v7 指令集就引入了 Security Extension 概念,即 CPU 能够在 “普通世界和安全世界” 间切换,两个模式有独立的 MMU 内存管理单元,有用于隔离内存 TZASC、用于隔离外设 TZP 和 CCI 总线,可以在不增加硬件成本的情况下为提供可信执行环境。
在 ARM v8.x 时代,又先后引进了一系列的安全特性:

  • PAN 和 UAO(Privileged Execute Never 和 User Access Only),一定程度把内核态程序和用户资源分隔开;
  • PA(Pointer Authentication)和 CFI(Control Flow Integrity),防止跳转指针被修改,保证控制流完整性,防止 ROP 攻击;
  • 而下一个里程碑,是 ARM v8.4 在安全世界引入的 hypervisor,软件层面支持多个 TEEOS,安全级别高的支付业务可以跑在独立的 TEEOS 并于通用 TEEOS 隔离;
  • ARM v8.5 引入 BTI(Branch Target Identifiers)和 MT(Memory Tagging),前者限制间接转跳,防 JOP 攻击,后者能标记内存区域,防止溢出和 UAF 漏洞;
  • Arm v9(骁龙 8 Gen 1 这一代)提出了 Arm CCA 的概念,引入全新的 “Realm 机密领域”,生成对 OS 或虚拟机管理程序完全不透明的安全容器化的执行环境,保护正在使用的数据与代码,并缩短信任链。
高通骁龙的安全能力演进安卓阵营|安卓阵营的安全架构历史:一直被“无视”的核心功能
文章插图

当年骁龙 845 的元件示意图↑
从指令集往上,到达 SoC 这一层,高通几乎每代骁龙旗舰都会率先引入最新的安全功能,用户安全和隐私的保护措施在以军事竞赛式的速度升级: