MTK安全启动分析5:MTK Preloader的RPMB 密钥与FDE 密钥分析 FDE与RPMB两个密钥是 MTK 平台芯片级安全体系的核心密码学根基全程基于硬件根密钥派生、仅在安全世界留存、永不暴露给普通世界分别负责「安全存储认证」和「磁盘加密根保护」两大核心能力对应 ARMv8 ATF 架构中的两类标准安全服务。下面结合代码与 ARMv8 标准架构逐一拆解。一、两个密钥的本质与核心作用1. RPMB 密钥rpmb_key/msg_auth_key本质RPMBReplay Protected Memory Block重放保护内存块的访问认证密钥是 eMMC/UFS 存储芯片内置安全分区的身份凭证相当于安全存储区的“门禁密码”。生成来源通过 rpmb_get_key() 从安全库获取本质是基于芯片 eFuse 中烧录的硬件唯一根密钥HUK, Hardware Unique Key通过固定密码学算法派生而来一机一密与芯片硬件永久绑定不可导出、不可篡改。核心作用1.RPMB 分区读写认证RPMB 是存储芯片中独立的、带防重放保护的安全分区用来存放 FRP 锁状态、安全启动版本号、永久安全属性、用户态不可篡改的敏感数据。所有对 RPMB 的读写操作都必须用该密钥计算 HMAC 做身份认证与防重放校验没有正确密钥无法读取或修改 RPMB 内容从硬件层面保证安全存储不可篡改。2.安全世界代理访问普通世界不可直接接触密钥代码注释明确标注 used in LK thru SMC to ATF这是 TrustZone 的标准设计LK、Linux 内核等普通世界程序永远拿不到明文 RPMB 密钥需要操作 RPMB 时必须通过 SMC 指令陷入 EL3 级的 ATF或请求 Secure EL1 的 TEE由安全世界使用留存的密钥完成 HMAC 计算、认证读写再把结果返回给普通世界。密钥全程不离开安全边界从特权级层面杜绝密钥泄露。3.代码中的去向被打包进 sec_mem_arg 结构体写入固定安全共享地址 TEE_PARAMETER_ADDRATF/TEE 启动后直接从该地址读取密钥并留存无需重复访问 eFuse 派生既提升启动速度也缩小硬件根密钥的访问窗口。2. FDE 密钥fde_key/msg_fde_key本质FDE Full Disk Encryption全盘加密该密钥是设备存储加密体系的硬件绑定根密钥KEK密钥加密密钥也就是“加密密钥的密钥”是整个磁盘加密体系的信任根。生成来源通过 seclib_key_derive(KEY_TYPE_FDE, ...) 派生同样以 eFuse 硬件根密钥为根基指定 FDE 类型派生得到与芯片唯一绑定脱离本芯片该密钥完全无效。核心作用1.上层根密钥对工作密钥加密它不是直接加密磁盘数据的密钥直接加密数据的是 DEK数据加密密钥由系统随机生成或结合用户密码派生而是用来加密 DEK 的上层根密钥系统生成随机 DEK 用于加密磁盘数据用 FDE 根密钥加密 DEK把加密后的 DEK 存放在分区头部解密时先通过安全世界用 FDE 密钥解密得到明文 DEK再用 DEK 解密磁盘数据。2.核心价值硬件级防破解如果攻击者把存储芯片拆下放到其他设备上读取因为没有对应芯片的 FDE 根密钥无法解密出真实 DEK也就无法读取任何磁盘数据保证用户数据与设备硬件唯一绑定暴力拆片也无法破解。补充Android 后续从 FDE 演进到 FBE文件级加密但底层依然依赖这类硬件根密钥作为 KEK用来加密用户密钥、认证密钥该密钥仍是存储安全的核心根。3.代码中的去向直接存入 ATF 启动参数结构体 teearg-msg_fde_keyATF 启动后留存到安全世界内存后续通过 SMC 向普通世界提供密钥解密、派生服务明文密钥永不流出安全边界。二、对应 ARMv8 ATF 的标准组件与服务ARMv8 ATFARM Trusted Firmware本身不直接实现业务逻辑而是提供特权级切换、SMC 调用分发、安全世界运行框架。MTK 的这两个密钥分别对应 ATF 生态中两类标准化的安全服务完全符合 ARM TrustZone 的架构设计。1. RPMB Key → ATF RPMB Proxy 服务RPMB 代理服务标准定位这是 ARM 生态通用的 ATF 标准服务属于安全存储Secure Storage子系统的底层支撑模块。对应 ATF 中的具体模块在 ARM 官方 TF-ATrusted Firmware-A标准实现中对应 services/rpmb_svc RPMB 服务模块提供 SMC_RPMB_* 系列标准 SMC 调用号。工作链路与代码完全对应Preloader 阶段派生 RPMB 密钥通过启动参数注入 ATFATF BL31 初始化时注册 RPMB SMC 服务将密钥留存到安全世界内存普通世界LK / Kernel需要读写 RPMB 时发起 SMC 请求ATF 接收请求后用留存的密钥计算 HMAC、执行认证读写仅返回操作结果密钥全程不离开 EL3 安全边界。MTK 的实现完全遵循 ARMv8 特权级隔离设计普通世界只负责发请求密钥和认证逻辑全部封闭在安全世界。2. FDE Key → ATF 密钥派生服务 硬件根密钥管理标准定位对应 ARM TrustZone 架构中的设备根密钥派生服务属于可信计算基TCB的核心部分是所有上层加密能力的密码学根。对应 ATF 中的具体模块密钥派生服务框架对应 TF-A 中的 key_derivation 服务或平台级安全子系统提供 SMC_KEY_DERIVE 类标准调用普通世界只能请求派生/加解密无法获取根密钥明文。可信启动链路的延伸根密钥来自 eFuse 硬件信任根派生过程在安全启动链的早期Preloader 阶段完成全程在可信环境中执行保证密钥链从硬件根开始全程可信对应 ATF 的 Trusted Boot 安全模型。TEE Keymaster 服务的根如果系统使用标准 TEE如 OP-TEEFDE 密钥会由 ATF 传递给 BL32 层的 TEE OS作为 TEE 内部 Keymaster 服务的硬件根密钥向上支撑 Android Keymaster HAL、Widevine DRM 等安全业务。三、关键设计逻辑为什么在 Preloader 派生而不是 ATF 自己派生权限与访问窗口Preloader 运行在安全启动早期拥有直接访问 eFuse、安全硬件的最高权限提前派生好传给 ATF可以减少 ATF 对底层硬件的直接访问缩小根密钥的暴露窗口。移植解耦ATF 作为通用固件不直接绑定芯片级 eFuse 派生逻辑由 Preloader 完成平台相关的密钥派生更方便跨芯片平台移植 ATF。共同遵循的安全原则两个密钥都严格遵循 TrustZone 设计准则一次派生、安全留存仅在启动早期派生一次后续全程保存在安全世界内存永不暴露、代理访问普通世界只能通过 SMC 请求服务无法获取密钥明文硬件绑定、一机一密全部基于 eFuse 硬件根密钥派生脱离对应芯片即失效。