关于现代 Android 设备的底层安全 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeviMarvin
V2EX    Android

关于现代 Android 设备的底层安全

  •  
  •   LeviMarvin 2023-03-22 21:46:08 +08:00 14346 次点击
    这是一个创建于 932 天前的主题,其中的信息可能已经有所发展或是发生改变。

    android 设备的 KeyStore/KeyStore2/KeyMaster/KeyMint 有 software/TEE/StrongBox 三个安全等级的实现。大多数现代非高端手机都是 TEE 实现。某些情况下破坏了 TEE 环境(如高通平台在密钥认证时返回内部错误-10003 (密钥认证所需的证密钥未声明)),能否通过额外实现一个 TEE 环境或降级到 software 实现来修复密钥认证功能?

    14 条回复    2024-08-22 19:07:10 +08:00
    bkmi
        1
    bkmi  
       2023-03-22 22:07:32 +08:00
    LeviMarvin
        2
    LeviMarvin  
    OP
       2023-03-22 22:13:55 +08:00
    @bkmi 不是 Safetynet 的问题,是底层安全。Safetynet 特别好过,保证 root 不被检测后修改指纹就行
    1ver
        3
    1ver  
       2023-03-22 22:26:11 +08:00
    “破坏了 TEE 环境”是指 tee 崩溃了吗,大佬这块儿有详细的博客等资料吗,或者能细说一下吗
    marat1ren
        4
    marat1ren  
       2023-03-22 22:26:45 +08:00 via iPhone
    感觉很难,TEE 是和硬件关联的,额外实现需要能直接访问硬件,而且你需要更改 HAL 。假设你能改写 Keymaster/Keymint ,可以让它们用 software 而不是 TEE 。以我的理解,它们属于 Trusted Application ,所以你无法更改它们。
    1ver
        5
    1ver  
       2023-03-22 22:27:18 +08:00
    tencent 的 soter 有派生密钥的功能,不知道“修复密钥认证功能”是不是可以用这个呢
    bkmi
        6
    bkmi  
       2023-03-22 22:29:27 +08:00 via Android
    @LeviMarvin 这个过 safetynet 就是通过降级到 software 然后提供一个自定义的 keystore provider ,你看看他的代码
    LeviMarvin
        7
    LeviMarvin  
    OP
       2023-03-22 22:43:01 +08:00
    @marat1ren 现有的 TEE 肯定是无法修改的,我的设想是能否用运行一个额外的 TEE 来替代损坏的 TEE 运行,对于类原生来说确实可以改写 KM ,但是我没找到具体如何改写从而使用 software 实现的文章或者是代码,我也查阅过 KM 的代码,里面有判断 SecurityLevel::SOFTWARE 的代码,但是具体实现似乎都是 SecurityLevel:TrustedEnvironment 或者~::StrongBox
    LeviMarvin
        8
    LeviMarvin  
    OP
       2023-03-22 22:44:07 +08:00
    @bkmi SafetyNet 本身有两种:BASIC 认证和基于硬件的 StrongBox 认证(无法篡改),SN-Fix 是通过修改设备名称 /指纹来强制回退到 BASIC
    marat1ren
        9
    marat1ren  
       2023-03-22 23:00:47 +08:00 via iPhone
    @LeviMarvin 需要考虑的是你怎么样能启动这个新的 TEE 环境。这需要让 bootloader 能 load 这个新的 binary ,所以你需要知道能签名和加密的 key 。改写 KM 你也需要能够重新编译再用 key 签名和加密
    V1Eerie
        10
    V1Eerie  
       2023-03-23 01:12:30 +08:00 via Android
    TEE 损坏返修的话常见的都是更换主板,你提出的这种方式到目前为止我还没见到过有人实现。
    SinceJune
        11
    SinceJune  
       2023-03-23 13:16:19 +08:00
    TEE 环境损坏是啥意思?如果是高通的问题 就反馈给高通让他们修复啊,然后后续通过升级 TEE 环境可以解决的吧?
    HusaYn
        12
    HusaYn  
       2023-09-22 13:44:02 +08:00
    不知道算不算挖坟,GP 规范里是说明了可以有多个 TEE ,CA initializeContext 的时候可以指定 TEE ,但貌似没听说有厂商这么做。荣耀貌似做了层 hypervisor 上的虚拟 TEE ,部分 TA 跑在上面,部分跑在高通 QSEE 里
    shunf4
        13
    shunf4  
       2024-08-22 12:34:25 +08:00
    [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 。
    LeviMarvin
        14
    LeviMarvin  
    OP
       2024-08-22 19:07:10 +08:00
    @shunf4 是的,这个问题我已经解决啦,感谢回答。我现在用开发板,在尝试用 OPTEE 实现。开发板自带的是闭源的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:10 PVG 12:10 LAX 21:10 JFK 00:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86