Khorina · 3月26日

Weaver - 基于安全硬件的锁屏密码方案

背景

Android 平台上,GateKeeper+KeyMint 是一种常见的密码解锁方案,基于仅用户知道的密码保护用户的数据。Weaver 是一种基于 Secure Element 等防篡改硬件,旨在增强密码保护用户数据的解决方案,提供了 device-off security threat model 和 brute force password guessing 两个关键特性。

device-off security threat model:当设备关闭电源时,用户身份验证和磁盘加密依赖的 secret 存储在安全芯片中,必须使用用户 LSKF (pin/pattern/password)才能获取到该值。

brute force password guessing:通过安全芯片内部的安全计时器防止攻击者通过暴力破解的手段推演出用户密码。

Weaver 整体架构

录入密码

image.png

校验密码

Image

密码解锁关键接口

doVerifyCredential in LockSettingsService.java

image.png

GateKeeper+KeyMint 传统方案

unlockLskfBasedProtector in SyntheticPasswordManager.java

image.png

Weaver+GateKeeper+KeyMint 增强方案

unlockLskfBasedProtector in SyntheticPasswordManager.java

image.png

Weaver 密码解锁方案的优势

传统方案的暴破思路

Image

关机暴力破解思路

1. 攻击者截获 splob 第一次解密后的中间密文 Intermediate;

2. 第二次解密使用 AES-GCM 模式,错误的密钥无法解密成功;

3. 攻击者在外部高性能环境中不停的通过临时生成的密码;

4. 并使用运算出的 SecretKey 对之前截获的中间密文进行解密;

5. 解密成功则证明当次生成的密码是正确的。

在 VM/PC 运行以下伪代码:

while(1) {

pwd = generateRandomPassword();

token = scrypt(pwd, R, N, P, Salt);

secretKey = getSecretKey(token);

if (SUCCESS == aesDecrypt(Intermediate, secretKey))

return pwd;

}

}

Weaver 方案防暴破思路

Image

防暴力破解思路

1. 传统方案可以脱离设备在外部环境计算 secretKey,绕过设备自身的节流机制;

2. Weaver 方案计算 SecretKey 必须向 SE 传入正确的 key 值,并从中获取到正确的 secret 值;

3. SE 内部的硬件定时器具备节流机制,即多次传入错误的 key,等待重试的时间会指数级上升。

Weaver 密码解锁方案的局限

Weaver HAL 必须通过 OMAPI 与安全芯片通信。OMAPI 服务 openLogicalChannel 被调用时,会先检查调用者的 Access Control Rules 是否存在后,才会创建和安全芯片通信的 channel,这个操作会消耗大量时间。

Image

优化思路

针对 Weaver 特性进行 Channel 绑定,即启动过程中访问 Weaver Applet 时,打开一个固定的逻辑通道不关闭,从而规避每次打开逻辑通道的时间开销,但需要安全芯片供应商做好功耗控制。

总结

传统密码解锁方案的节流机制在 Gatekeeper TA 中实现,这为暴力破解锁屏密码提供了可能。Weaver 方案的节流在安全硬件中实现,攻击者很难从安全芯片中读取中间秘密值或是绕过其节流机制。

END

作者:Vulcan
文章来源:OPPO内核工匠

推荐阅读

更多物联网安全,PSA 等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA 技术交流群,请备注研究方向。
推荐阅读
关注数
4574
内容数
210
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息