TEE-OS学习轨迹第六篇:探讨Android系统指纹安全两种方案

指纹识别两套方案的硬件+固件架构

两套方案均严格遵循ARM TrustZone特权级分层规范,核心差异在于外设的安全归属权:方案A外设挂在非安全总线,靠「加密传输」兜底数据安全;方案B外设为安全专属,靠「硬件级通路隔离」实现最高安全等级。以下从硬件架构、EL分层固件架构、逐步骤调用时序三个维度详细拆解。

方案A:非安全总线 + 加密传输方案(中低端主流)

核心定位

外设控制器挂在普通世界可访问的总线上,Linux内核可直接操作传感器寄存器;但原始指纹图像由传感器硬件内置加密引擎加密,密钥仅TEE持有,普通世界只能透传密文,无法解密还原明文。属于「硬件通路非隔离 + 软件密码学兜底」的折中方案,成本低、移植快,安全等级满足中端机型要求。

一、硬件架构详解

1. 物理总线与安全属性

硬件模块

总线归属

TZPC安全配置

访问权限

指纹传感器模组

SPI/I2C 物理接口

传感器内置独立加密引擎,OTP烧录预置密钥

仅加密后数据输出到总线

SPI/I2C 控制器

非安全AXI总线

Non-secure 属性

非安全世界EL1可直接读写寄存器

系统总线

普通系统总线

无安全限制

非安全态CPU、DMA均可访问

数据内存

普通DRAM区域

TZC非安全属性

普通世界可读写,仅存放加密密文

2. 中断路由设计
  • 中断链路:传感器中断引脚 → 平台GPIO控制器 → GIC中断控制器
  • GIC分组:Group 1 Non-secure(非安全中断)
  • 处理归属:由Linux内核的指纹驱动直接接管中断,普通世界可完整感知中断事件
  • 作用:仅用于通知「采集完成」事件,不携带任何敏感生物数据
3. 电源与控制通路
  • 电源、复位、唤醒引脚:挂在普通世界GPIO/PMIC上,由Linux内核驱动直接控制上下电、硬件复位
  • 传感器固件下载:由普通世界驱动通过总线写入,固件本身带签名校验,防止恶意固件篡改
4. 完整数据流向
传感器采集原始图像 → 传感器内部加密引擎加密 → SPI/I2C非安全总线 → 普通世界内核缓冲区 → 共享内存 → TEE解密得到明文 → 特征比对

二、固件架构(按EL特权级分层)

非安全世界(Normal World)
1. EL0(用户态,无内核权限)

组件

职责

安全边界

第三方应用APP

调用系统标准

BiometricPrompt

API发起认证/录入请求

完全不可信,仅能拿到最终结果,接触不到任何生物数据

SystemServer FingerprintService

权限校验、多应用任务调度、认证生命周期管理

系统服务,仅做流程调度,不接触原始数据

指纹HAL服务

实现Android标准Biometrics HIDL/AIDL接口,同时作为TEE的客户端(CA),封装控制指令转发给TEE

仅做指令与结果转发,不解密、不接触明文图像

2. EL1(内核态,普通世界最高权限)

组件

职责

安全边界

SPI/I2C 控制器驱动

系统通用总线驱动,提供寄存器读写、数据收发接口

可直接操作外设寄存器,仅传输加密数据

指纹控制驱动

厂商实现,负责传感器复位、固件下载、寄存器配置、中断处理

可完整控制硬件,但只能读取加密后的图像数据,无密钥无法解密

OP-TEE 驱动(tee.ko)

负责SMC指令触发、共享内存管理、RPC请求处理

仅做通道转发,不解析业务数据

EL3 特权级(安全监控器)
  • 核心组件:ATF BL31 + opteed 分发驱动
  • 职责:负责安全态/非安全态切换、SMC调用分发、上下文保存恢复
  • 安全边界:仅做硬件级切换,不参与任何指纹业务逻辑
安全世界(Secure World)
1. Secure EL1(TEE内核态)

组件

职责

OP-TEE 内核

线程调度、安全内存管理、加密框架、安全存储服务、系统调用处理

加密引擎驱动

对接硬件加密引擎,为TA提供解密、签名能力

2. Secure EL0(可信应用态)

组件

职责

安全边界

指纹TA

1. 解密加密图像得到原始明文
2. 图像预处理、特征提取算法
3. 指纹模板生成、加密存储、比对运算
4. 生成带签名的AuthToken认证令牌

唯一能接触原始图像和特征模板的组件,运行在隔离的安全用户空间

密钥说明:传感器加密密钥出厂时一机一密,同时烧录在传感器OTP和TEE安全存储中,普通世界无任何访问路径。

三、完整调用时序(指纹认证流程,标注EL与安全态)

按执行顺序逐步骤拆解,标注每一步的特权级、安全世界归属、执行实体:

步骤

执行操作

特权级

安全归属

执行实体

1

用户点击认证,APP调用

BiometricPrompt.authenticate()

发起请求

NS EL0

非安全世界

第三方应用

2

通过Binder IPC将请求发送到系统服务

NS EL0

非安全世界

FingerprintService(SystemServer进程)

3

校验应用权限、设备锁屏状态、指纹录入状态,通过后调用HAL接口

NS EL0

非安全世界

FingerprintService

4

HAL封装采集控制参数,通过libteec库发起SMC调用,通知TEE准备采集上下文

NS EL0 → EL3 → S EL1 → S EL0

非安全→安全世界切换

指纹HAL(CA) → ATF → OP-TEE内核 → 指纹TA

5

指纹TA初始化解密上下文、分配临时安全内存,返回「就绪」状态

S EL0 → S EL1 → EL3 → NS EL0

安全→非安全世界切换

指纹TA → OP-TEE内核 → ATF → 指纹HAL

6

HAL通过ioctl系统调用,请求内核驱动启动传感器采集

NS EL0 → NS EL1

非安全世界

指纹HAL → 指纹内核驱动

7

内核驱动通过SPI/I2C总线写入采集指令,配置传感器参数,注册中断等待

NS EL1

非安全世界

指纹内核驱动 + SPI控制器驱动

8

手指接触传感器,采集完成后传感器内部用预置密钥加密图像,触发中断引脚

-

硬件层

指纹传感器模组

9

GIC接收中断,路由到非安全分组,触发Linux内核中断处理函数

NS EL1

非安全世界

GIC + 内核中断处理

10

内核驱动通过SPI/I2C读取加密后的图像数据,存入普通世界内核缓冲区

NS EL1

非安全世界

指纹内核驱动

11

驱动通过回调通知HAL层数据就绪,传递加密数据地址与长度

NS EL1 → NS EL0

非安全世界

内核驱动 → 指纹HAL

12

HAL将加密数据拷贝到共享内存,发起SMC调用,请求TEE处理认证

NS EL0 → EL3 → S EL1 → S EL0

非安全→安全世界切换

指纹HAL → ATF → OP-TEE内核 → 指纹TA

13

指纹TA从共享内存读取密文,用内置密钥解密得到原始图像明文

S EL0

安全世界

指纹TA

14

执行图像预处理、特征点提取,和安全存储中的加密模板做比对运算

S EL0

安全世界

指纹TA

15

生成比对结果,用TEE认证私钥签发AuthToken令牌,清零安全内存中的临时图像与特征数据

S EL0

安全世界

指纹TA

16

通过SMC将结果与令牌返回普通世界HAL层

S EL0 → S EL1 → EL3 → NS EL0

安全→非安全世界切换

指纹TA → OP-TEE内核 → ATF → 指纹HAL

17

HAL将结果回调给FingerprintService,同时传递AuthToken

NS EL0

非安全世界

指纹HAL → FingerprintService

18

FingerprintService通知应用认证结果,同时将AuthToken提交给Keystore服务

NS EL0

非安全世界

FingerprintService

19

应用收到认证成功回调,流程结束;Keystore校验AuthToken签名后解锁绑定认证的密钥

NS EL0

非安全世界

第三方应用 + Keystore

方案B:安全专属总线方案

核心定位

SPI/I2C控制器被TZPC配置为仅安全态可访问的安全外设,寄存器、数据通路、中断全部归属安全世界;普通世界完全无法访问硬件,只能通过TEE间接发送控制指令、接收结果。原始图像全程在安全DRAM中流转,从硬件层面杜绝数据泄露可能,是Android强生物识别安全等级的标配方案,旗舰机型全部采用此架构。

一、硬件架构详解

1. 物理总线与安全属性

硬件模块

总线归属

TZPC/TZC安全配置

访问权限

指纹传感器模组

SPI/I2C 物理接口

安全专属通路,明文传输

仅安全世界控制器可读取

SPI/I2C 控制器

安全AXI总线

TZPC配置为Secure-only

仅Secure EL1及以上可读写寄存器,非安全访问直接触发总线错误

系统总线

安全专用总线通道

仅安全态主机可访问

非安全态CPU、DMA完全无法访问

数据内存

安全DRAM区域

TZC-400 划分为安全专属区域

仅安全世界可读写,非安全访问被硬件拦截

2. 中断路由设计
  • 中断链路:传感器中断引脚 → 安全GPIO控制器 → GIC中断控制器
  • GIC分组:Group 1 Secure(安全中断)
  • 处理归属:仅OP-TEE内核的中断处理函数可响应,普通世界Linux内核完全感知不到该中断的存在
  • 作用:安全世界内部通知采集完成,事件不流出安全域
3. 电源与控制通路
  • 电源控制:可由普通世界PMIC负责上下电(仅电源控制,无数据通路);高安全方案也可由安全世界全权控制
  • 寄存器配置:所有传感器配置、参数写入必须由安全世界驱动完成,普通世界无任何寄存器访问权限
4. 完整数据流向
传感器采集原始图像 → 安全SPI/I2C总线 → 安全DRAM(TZC硬件保护) → 指纹TA直接读取处理
全程明文数据不经过非安全世界,普通世界没有任何访问路径。

二、固件架构(按EL特权级分层)

非安全世界(Normal World)
1. EL0(用户态)

组件

职责

安全边界

第三方应用APP

调用

BiometricPrompt

API发起请求

完全不可信,仅接收结果

SystemServer FingerprintService

权限校验、任务调度、生命周期管理

流程调度,不接触任何生物数据

指纹HAL服务

实现标准Biometrics接口,仅作为CA向TEE转发控制指令、接收结果事件

纯转发角色,无硬件操作能力,无数据访问权限

2. EL1(内核态)

组件

职责

安全边界

OP-TEE 驱动(tee.ko)

SMC触发、共享内存管理

唯一的内核侧组件,仅做通道转发

可选:电源控制驱动

仅负责传感器上下电,无数据通路访问权限

只能控制电源,不能操作寄存器和数据

核心特点:普通世界内核没有指纹专用硬件驱动,完全无法访问传感器寄存器和数据通路,哪怕系统被Root、内核被攻破,也无法窃取指纹数据。
EL3 特权级(安全监控器)
  • 核心组件:ATF BL31 + opteed 分发驱动
  • 职责:安全态切换、SMC分发、中断路由(安全中断留在安全世界处理,不转发到非安全)
  • 不参与业务逻辑
安全世界(Secure World)
1. Secure EL1(TEE内核态)

组件

职责

OP-TEE 内核

线程调度、安全内存管理、安全中断处理、加密框架、安全存储

安全SPI/I2C驱动

完整的外设控制器驱动,直接操作寄存器,收发数据

TZC 内存管理

管理安全DRAM区域,保证数据不流出安全边界

GIC安全中断驱动

响应指纹安全中断,调度对应TA处理

2. Secure EL0(可信应用态)

组件

职责

安全边界

指纹TA

1. 传感器参数配置、采集流程控制
2. 原始图像处理、特征提取
3. 模板生成、安全存储、比对运算
4. 签发AuthToken认证令牌

唯一拥有硬件控制权和数据访问权的组件,全程在隔离环境运行

密钥说明:指纹模板加密密钥由TEE硬件根密钥派生,一机一密,模板加密后存入安全存储,不可导出、不可迁移。

三、完整调用时序(指纹认证流程,标注EL与安全态)

步骤

执行操作

特权级

安全归属

执行实体

1

用户点击认证,APP调用

BiometricPrompt.authenticate()

发起请求

NS EL0

非安全世界

第三方应用

2

Binder IPC发送请求到系统服务

NS EL0

非安全世界

FingerprintService

3

权限校验通过后,调用指纹HAL接口

NS EL0

非安全世界

FingerprintService

4

HAL封装采集控制参数,通过libteec发起SMC调用,向TEE发送采集指令

NS EL0 → EL3 → S EL1 → S EL0

非安全→安全世界切换

指纹HAL(CA) → ATF → OP-TEE内核 → 指纹TA

5

指纹TA收到指令,调用内核的安全外设驱动接口,配置传感器寄存器、启动采集模式

S EL0 → S EL1

安全世界

指纹TA → 安全SPI驱动

6

OP-TEE内核配置安全中断,进入等待状态,向普通世界返回「已启动」

S EL1 → EL3 → NS EL0

安全→非安全世界切换

OP-TEE内核 → ATF → 指纹HAL

7

HAL等待TEE的异步事件通知,不参与硬件操作

NS EL0

非安全世界

指纹HAL

8

手指接触传感器,采集完成后原始图像通过安全总线直接写入安全DRAM区域,触发安全中断

-

硬件安全通路

指纹传感器 + 安全总线

9

GIC将中断路由到安全分组,OP-TEE内核中断处理函数响应

S EL1

安全世界

GIC + OP-TEE内核中断

10

内核通知指纹TA数据就绪,TA直接从安全DRAM读取原始图像明文

S EL1 → S EL0

安全世界

OP-TEE内核 → 指纹TA

11

TA执行图像预处理、特征点提取,和安全存储中的加密模板比对

S EL0

安全世界

指纹TA

12

生成比对结果,签发AuthToken令牌,清零安全内存中的临时敏感数据

S EL0

安全世界

指纹TA

13

通过SMC异步通知普通世界,返回结果与AuthToken

S EL0 → S EL1 → EL3 → NS EL0

安全→非安全世界切换

指纹TA → OP-TEE内核 → ATF → 指纹HAL

14

HAL将结果回调给FingerprintService

NS EL0

非安全世界

指纹HAL → FingerprintService

15

FingerprintService通知应用认证结果,同步AuthToken给Keystore

NS EL0

非安全世界

FingerprintService

16

应用收到回调,流程结束;Keystore校验令牌后解锁绑定认证的密钥

NS EL0

非安全世界

第三方应用 + Keystore

两套方案核心维度对比

对比维度

方案A:非安全总线+加密传输

方案B:安全专属总线

硬件隔离等级

总线非安全,靠加密兜底数据安全

硬件级通路隔离,数据全程不流出安全域

外设驱动位置

普通世界Linux内核

安全世界OP-TEE内核

中断归属

非安全中断,Linux内核处理

安全中断,TEE内核处理,普通世界无感知

普通世界Root后影响

可控制硬件,但只能拿到加密数据,无法解密

完全无法操作硬件,无法获取任何数据

安全等级

中,满足中端机型要求

极高,符合Android强生物识别标准

开发移植成本

低,复用Linux现有驱动框架

高,需要在TEE内移植完整外设驱动

适用机型

中低端手机、IoT设备

旗舰手机、支付级安全设备

攻击面

较大,驱动在内核,漏洞可被利用

极小,驱动在安全世界,攻击面收敛到TEE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值