Android Gatekeeper梳理

本文深入解析Android Gatekeeper系统,包括其概念、框架变化、软件架构及Enroll和Verify流程。探讨了从AIDL到HIDL的框架演进,详细介绍了密码的注册和验证过程,涉及Gatekeeperd、HAL、TEE等多个组件的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

  Android gatekeeper 官方文档我寻觅的好苦,网页乱码,没注意到。又没权限下载插件,打工人太难了。由于本人对于部分Android框架不是非常熟悉,本文部分细节可能处理的不是非常好。
  本文主要从Gatekeeper的Enroll密码部分(AIDL框架)和 Verify解密部分(旧框架,未更新为新框架)两部分进行逻辑梳理和学习,有问题欢迎大家指正,一起沟通学习。

Android T在线代码阅读网站Android gatekeeper官网

一、gatekeeper的概念

1)Gatekeeper 子系统在可信执行环境 (TEE) 中执行设备解锁 / 密码验证。gatekeeper 通过具有硬件支持的密钥 HMAC 注册和验证密码。此外,Gatekeeper 会限制连续失败的验证尝试,并且必须根据给定的超时和给定的连续失败尝试次数拒绝服务请求。

2)当用户验证密码时,Gatekeeper 使用 TEE 派生的共享密钥对身份验证认证签名,以发送到硬件支持的 Keystore 。也就是说,Gatekeeper 认证可以让 Keystore 知道可以发布与身份验证绑定的密钥(例如,应用程序创建的密钥)以供应用程序使用。

3)Android中,gatekeeper是密码锁或图案锁的一种服务。主要支持的两个方法是 : enroll(录入密码)和verify(验证密码)

注: Enroll 部分是从AIDL框架入手学习梳理; Verify 部分是从binder和HIDL框架入手,android T 的Verify部分其实和Enroll调用的框架逻辑相同。

二、gatekeeper框架的变化

主要有以下4个组件:
Gatekeeperd :gatekeeper的守护进程。一种 C++ Binder 服务,其中包含独立于平台的逻辑,并且与 GateKeeperService Java 接口相对应。Android T已无binder部分逻辑。

Gatekeeper HIDL服务:调用Gatekeeper HAL,Android T已变为AIDL。

Gatekeeper 硬件抽象层 (HAL): hardware/libhardware/include/hardware/gatekeeper.h中定义了HAL的接口规范,是一个实现模块。

Gatekeeper (TEE) :基于 TEE 的 Gatekeeper 实现。

GateKeeper 身份验证的高级数据流

如下图:
 GateKeeper 身份验证的高级数据流
1 )LockSettingsService 会通过 Binder 发出一个请求,该请求会到达 Android 操作系统中的 gatekeeperd 守护进程。gatekeeperd 守护进程会发出一个请求,该请求会到达此守护进程在 TEE 中的 Gatekeeper。gatekeeperd守护程序为 Android 框架 API 提供对 HAL 的访问权限,并参与向 Keystore 报告设备身份验证。 gatekeeperd守护程序在其自己的进程中运行,并且独立于系统服务器。
2)在Android O引入Treble计划之后,native层和HAL之间新增了HIDL,通过HwBinder来调用,实现解耦。
3)在Android T中,IGateKeeperService.aidl可直接调用到gatekeeperd.cpp。

代码结构图(复用)

frameworks/base/services/core/java/com/android/server/locksettings/ : 上层locksettings APP的实现

system/core/gatekeeperd : 守护进程gatekeeperd, IGateKeeperService的实现。Android T 上已变为AIDL框架,非Binderized HIDL。

system/gatekeeper : gatekeeper的纯软实现

hardware/interfaces/gatekeeper : gatekeeper的hidl实现

vendor gatekeeper hal : vendor厂商实现的gatekeeper hal

gatekeeper TA : 基于TEE的gatekeeper的TA代码

在这里插入图片描述

三、gatekeeper的软件框图

locksetting APP ----> IGatekeeperserivce ----> Hardware Gatekeeper HAL ----> Vendor Gatekeeper HAL(作为CA端) ----> Gatekeeper TA在这里插入图片描述

四、Enroll和Verify的流程框图

gatekeeper 和 keyguard 的关系:
Gatekeeper可以理解为连接上层和底层TEE的中间层,Settings将pin/password/pattern等密码通过Gatekeeper传输到TEE中去,称为加密(enroll)过程,Keyguard通过pin/password/pattern等密码打开设备成为解密(verify)过程,加解密的具体实现细节都在TEE中。
在这里插入图片描述

Enroll 密码 ---- AIDL
注册密码

  在设备恢复出厂设置后首次启动时,所有身份验证程序均会做好接受用户通过凭据注册的准备。用户必须先通过 Gatekeeper 注册一个 PIN 码/解锁图案/密码。该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多维不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值