android 设备的 KeyStore/KeyStore2/KeyMaster/KeyMint 有 software/TEE/StrongBox 三个安全等级的实现。大多数现代非高端手机都是 TEE 实现。某些情况下破坏了 TEE 环境(如高通平台在密钥认证时返回内部错误-10003 (密钥认证所需的认证密钥未声明)),能否通过额外实现一个 TEE 环境或降级到 software 实现来修复密钥认证功能?
1
bkmi 2023-03-22 22:07:32 +08:00
|
2
LeviMarvin OP @bkmi 不是 Safetynet 的问题,是底层安全。Safetynet 特别好过,保证 root 不被检测后修改指纹就行
|
3
1ver 2023-03-22 22:26:11 +08:00
“破坏了 TEE 环境”是指 tee 崩溃了吗,大佬这块儿有详细的博客等资料吗,或者能细说一下吗
|
4
marat1ren 2023-03-22 22:26:45 +08:00 via iPhone
感觉很难,TEE 是和硬件关联的,额外实现需要能直接访问硬件,而且你需要更改 HAL 。假设你能改写 Keymaster/Keymint ,可以让它们用 software 而不是 TEE 。以我的理解,它们属于 Trusted Application ,所以你无法更改它们。
|
5
1ver 2023-03-22 22:27:18 +08:00
tencent 的 soter 有派生密钥的功能,不知道“修复密钥认证功能”是不是可以用这个呢
|
6
bkmi 2023-03-22 22:29:27 +08:00 via Android
@LeviMarvin 这个过 safetynet 就是通过降级到 software 然后提供一个自定义的 keystore provider ,你看看他的代码
|
7
LeviMarvin OP @marat1ren 现有的 TEE 肯定是无法修改的,我的设想是能否用运行一个额外的 TEE 来替代损坏的 TEE 运行,对于类原生来说确实可以改写 KM ,但是我没找到具体如何改写从而使用 software 实现的文章或者是代码,我也查阅过 KM 的代码,里面有判断 SecurityLevel::SOFTWARE 的代码,但是具体实现似乎都是 SecurityLevel:TrustedEnvironment 或者~::StrongBox
|
8
LeviMarvin OP @bkmi SafetyNet 本身有两种:BASIC 认证和基于硬件的 StrongBox 认证(无法篡改),SN-Fix 是通过修改设备名称 /指纹来强制回退到 BASIC
|
9
marat1ren 2023-03-22 23:00:47 +08:00 via iPhone
@LeviMarvin 需要考虑的是你怎么样能启动这个新的 TEE 环境。这需要让 bootloader 能 load 这个新的 binary ,所以你需要知道能签名和加密的 key 。改写 KM 你也需要能够重新编译再用 key 签名和加密
|
10
V1Eerie 2023-03-23 01:12:30 +08:00 via Android
TEE 损坏返修的话常见的都是更换主板,你提出的这种方式到目前为止我还没见到过有人实现。
|
11
SinceJune 2023-03-23 13:16:19 +08:00
TEE 环境损坏是啥意思?如果是高通的问题 就反馈给高通让他们修复啊,然后后续通过升级 TEE 环境可以解决的吧?
|
12
HusaYn 2023-09-22 13:44:02 +08:00
不知道算不算挖坟,GP 规范里是说明了可以有多个 TEE ,CA initializeContext 的时候可以指定 TEE ,但貌似没听说有厂商这么做。荣耀貌似做了层 hypervisor 上的虚拟 TEE ,部分 TA 跑在上面,部分跑在高通 QSEE 里
|
13
shunf4 75 天前
[hardware/interfaces/security/keymint/aidl/default]( https://cs.android.com/android/platform/superproject/main/+/main:hardware/interfaces/security/keymint/aidl/default/main.rs;drc=fbc30893106df9b55f0c73a8727575824b86c71b) 提供了 keymint 的纯软件(不安全)实现,底层的 TA 是直接运行在操作系统进程里,SerializedChannel 是直接内存复制。编译 ROM 时把这个模块加上,正确配置 rc 开机启动,应该就能实现降级到 software 。
|
14
LeviMarvin OP @shunf4 是的,这个问题我已经解决啦,感谢回答。我现在用开发板,在尝试用 OPTEE 实现。开发板自带的是闭源的
|