QIANQIANZHUANG Telegram 76
最近研究了小米安全开放服务客户端 SDK 的实现,意外发现小米实际上实现了一套简化版的密钥验证,囊括了从 Trust Application、AIDL HAL、客户端 API 到应用 SDK 的全流程。下面以红米 Note 12 为例,逐项拆解一下:

1)系统启动:由 init 执行 /odm/bin/mrmd,启动名为 vendor.xiaomi.hardware.mrm 的 AIDL 服务,并注册三个名为 IMrm、IMiCertificate、IMrmRemoteAuth 的接口,供客户端使用。服务的具体逻辑在 /vendor/lib64/libmiriskmanager.so。服务启动时会调用高通 QSEECOM API 接口,请求内核向 TEE 加载名为 miriskm 的 TEE 应用。

2)应用发送验证请求:应用调用 sdk 的 init 方法,应用绑定至小米手机管家的 com.xiaomi.security.xsof.SAFETY_DETECT_SERVICE,并传入 APP_ID 和 APP_KEY(应用注册时由小米分配)及挑战码。小米手机管家再次绑定至 MiTrustService 的 com.xiaomi.trustservice.IMiTrustService,IMiTrustService 调用上述 AIDL 服务的 MiRiskManager::getStatusByAuth 接口,开始验证流程。

3)验证:分为两部分,一部分为用户空间的验证,逻辑很简单,无非 prop、selinux、su 文件(注意,验证在 mrmd 进程中完成,这是个原生进程,denylist 只针对 app 进程,因此需要手动对 mrmd umount su);另一部分为 TEE 中验证,这里调用 QSEECOM API 与 TEE 通信,关键代码在 TEE 应用中。我没有仔细梳理逻辑,但可以看出将用户侧数据送进了 TEE,并在 TEE 中获取解锁状态、生成包含验签信息在内的 JSON 后,返回至客户端。

4)验签:可以本地对比 hash,也支持将数据上传至小米服务器远程验签。

整体来看,若证书生成及验签流程正确,这就是个精简版的密钥验证。目前小米仍未强制此项验证,因此可以通过改机型、关闭 framework 端服务等方式绕过此项检测,而真正破解则需要小米颁发的私钥。(像不像 PIF?)目前,第三方应用中仅发现 Hunter 搭载了该 SDK。

题外话:研究时顺便看了下内核中的 TEE 接口,发现 libmiriskmanager 有三种与内核通信的实现:高通机型使用高通提供的 QSEECOM,MTK机型一部分使用 MTK 与豆荚科技联合开发的 TEEi,还有少数机器使用小米自研 MiTEE(从驱动代码看,实际上基于 Linaro 提供的开源实现 OP-TEE 二次开发)。



tgoop.com/qianqianzhuang/76
Create:
Last Update:

最近研究了小米安全开放服务客户端 SDK 的实现,意外发现小米实际上实现了一套简化版的密钥验证,囊括了从 Trust Application、AIDL HAL、客户端 API 到应用 SDK 的全流程。下面以红米 Note 12 为例,逐项拆解一下:

1)系统启动:由 init 执行 /odm/bin/mrmd,启动名为 vendor.xiaomi.hardware.mrm 的 AIDL 服务,并注册三个名为 IMrm、IMiCertificate、IMrmRemoteAuth 的接口,供客户端使用。服务的具体逻辑在 /vendor/lib64/libmiriskmanager.so。服务启动时会调用高通 QSEECOM API 接口,请求内核向 TEE 加载名为 miriskm 的 TEE 应用。

2)应用发送验证请求:应用调用 sdk 的 init 方法,应用绑定至小米手机管家的 com.xiaomi.security.xsof.SAFETY_DETECT_SERVICE,并传入 APP_ID 和 APP_KEY(应用注册时由小米分配)及挑战码。小米手机管家再次绑定至 MiTrustService 的 com.xiaomi.trustservice.IMiTrustService,IMiTrustService 调用上述 AIDL 服务的 MiRiskManager::getStatusByAuth 接口,开始验证流程。

3)验证:分为两部分,一部分为用户空间的验证,逻辑很简单,无非 prop、selinux、su 文件(注意,验证在 mrmd 进程中完成,这是个原生进程,denylist 只针对 app 进程,因此需要手动对 mrmd umount su);另一部分为 TEE 中验证,这里调用 QSEECOM API 与 TEE 通信,关键代码在 TEE 应用中。我没有仔细梳理逻辑,但可以看出将用户侧数据送进了 TEE,并在 TEE 中获取解锁状态、生成包含验签信息在内的 JSON 后,返回至客户端。

4)验签:可以本地对比 hash,也支持将数据上传至小米服务器远程验签。

整体来看,若证书生成及验签流程正确,这就是个精简版的密钥验证。目前小米仍未强制此项验证,因此可以通过改机型、关闭 framework 端服务等方式绕过此项检测,而真正破解则需要小米颁发的私钥。(像不像 PIF?)目前,第三方应用中仅发现 Hunter 搭载了该 SDK。

题外话:研究时顺便看了下内核中的 TEE 接口,发现 libmiriskmanager 有三种与内核通信的实现:高通机型使用高通提供的 QSEECOM,MTK机型一部分使用 MTK 与豆荚科技联合开发的 TEEi,还有少数机器使用小米自研 MiTEE(从驱动代码看,实际上基于 Linaro 提供的开源实现 OP-TEE 二次开发)。

BY 钱庄


Share with your friend now:
tgoop.com/qianqianzhuang/76

View MORE
Open in Telegram


Telegram News

Date: |

Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. Informative Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. There have been several contributions to the group with members posting voice notes of screaming, yelling, groaning, and wailing in different rhythms and pitches. Calling out the “degenerate” community or the crypto obsessives that engage in high-risk trading, Co-founder of NFT renting protocol Rentable World emiliano.eth shared this group on his Twitter. He wrote: “hey degen, are you stressed? Just let it out all out. Voice only tg channel for screaming”.
from us


Telegram 钱庄
FROM American