HarmonyOS 鸿蒙Next本地系统完整性检测

HarmonyOS 鸿蒙Next本地系统完整性检测 api地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/devicesecurity-sysintegrity-check-onlocal

问题1:

deveco studio起的本地模拟器,是否应该按预期返回 emulator:非真实设备,当前返回的为错误码 801,错误信息为 API is not support

问题2:

使用此接口在“开发与服务”-“云调试”中设备进行验证,在系统版本5.1.0,api为18 以上的设备中,会出现 attack:设备被攻击和 unlock:设备被解锁。两种类型的结果

问题3:

本地系统完整性检测返回类型:

  • jailbreak:设备被越狱。
  • emulator:非真实设备。
  • attack:设备被攻击。
  • unlock:设备被解锁。

系统完整性检测(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/devicesecurity-sysintegrity-check-V5)返回类型为:

  • jailbreak:设备被越狱。
  • emulator:模拟器。
  • attack:设备被攻击。

那么此两种检测手段返回类型为何不同,从结果类型来看,本地检测比另外一种能力更强?


更多关于HarmonyOS 鸿蒙Next本地系统完整性检测的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

开发者您好,“系统完整性检测”为过时的文档,已不再维护,推荐您使用“本地系统完整性检测”。

cke_138.png

更多关于HarmonyOS 鸿蒙Next本地系统完整性检测的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题1:

DevEco Studio 本地模拟器返回:

801 - API is not support

这个基本属于正常现象。

因为:

本地系统完整性检测很多能力依赖:

  • 真机 TEE
  • 安全芯片
  • 可信执行环境
  • 系统安全服务

而模拟器本身并不具备这些安全硬件能力。

所以:

并不是返回:

emulator

而是直接:

API not support

可以理解为:

“当前环境不支持完整性检测能力”。

目前很多安全类 API:

  • 完整性检测
  • 密钥认证
  • 安全组件
  • Device Attestation

模拟器都不支持。

问题2:

云调试设备返回:

attack
unlock

这个也不一定真的是“设备被攻击”。

云调试设备很多属于:

  • 工程机
  • 调试机
  • 解锁设备
  • 自动化测试设备

系统状态往往不是“消费者正式态”。

例如:

unlock

通常表示:

Bootloader / 系统状态非锁定。

而:

attack

很多时候是:

系统检测到:

  • 调试环境
  • Hook
  • Root痕迹
  • 非正式系统态
  • 自动化框架

所以直接归类为风险环境。

云调试设备经常会出现这种情况。

不要把它等同于:

“真的被黑客攻击”。

问题3:

两个接口返回类型不同,

本质是:

它们不是同一套能力。

“系统完整性检测”

偏:

远程 / 云侧 / 基础完整性校验。

返回维度较少:

jailbreak
emulator
attack

“本地系统完整性检测”

偏:

设备本地安全服务。

能获取更多本地状态。

所以新增了:

unlock

这种更细粒度结果。

可以理解为:

本地检测:

更接近:

“设备实时安全状态”。

而旧版系统完整性检测:

更像:

“设备基础可信校验”。

所以从能力上来说:

确实:

本地系统完整性检测更细。

但并不代表:

“完全替代”。

而是:

两者定位不同。

一句话总结:

1、模拟器返回 801 基本正常,因为安全完整性能力依赖真机硬件;

2、云调试设备出现 attack/unlock 很常见,因为很多云设备本身就是调试态;

3、本地系统完整性检测比旧版系统完整性检测返回维度更细,属于更强的本地安全状态检测能力。

先说问题一:DevEco 本地模拟器是软件模拟环境,无硬件安全模块,所以直接返回 801就是说接口不支持。

再说问题二:

unlock:设备 Bootloader 已解锁(可刷第三方系统),本地检测会报这个

attack:系统分区被篡改、root、植入恶意模块等,在线 / 本地都可能报

5.1.0(API 18)对解锁 / 篡改的检测更严格,所以云调试真机更容易看到这两个标签

最后关于问题三:你提到的两种检测返回类型存在差异,主要原因是API版本和能力集的不同,并非能力更强之分。本地多 unlock(设备状态),在线无 unlock(安全策略);不是本地更强,是适用场景不同。

本地:仅用于无法联网场景,不建议作为唯一安全依据;

在线:推荐用于高风险业务(支付、登录、发券)

系统完整性检测-安全检测-Device Security Kit(设备安全服务)-安全-系统 - 华为HarmonyOS开发者

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

问题1:检查下启动emulator Version(API)版本是多少。排查下。

问题2:云调试中的云手机解锁和被攻击属于正常返回。

问题3:V5这个API链接是12版本的文档,最新文档返回类型已增加为4种。

鸿蒙Next本地系统完整性检测通过@ohos.security.systemIntegrity API实现,可调用verifyIntegrity()方法对系统分区签名及哈希值校验。需声明ohos.permission.SYSTEM_INTEGRITY权限,并在Stage模型下使用,返回IntegrityResult枚举结果。

问题1:本地模拟器是 x86 架构的虚拟环境,不具备真实设备上的 TEE 等安全硬件支持,因此无法进行系统完整性校验,返回错误码 801(API not support)属于预期行为。

问题2:云调试环境中的设备通常已解锁 Bootloader 或存在提权调试,方便开发调试,所以完整性检测会返回 attackunlock。这并非设备被恶意攻击,而是该环境本身的特征。

问题3:本地检测直接查询设备安全状态,可以获取解锁等更多本地属性;而服务端检测(sysintegrity-check)基于 TEE 远程证明,仅上报越狱、模拟器、攻击状态,不包含解锁信息。两者检测机制不同,本地检测覆盖信息更全,但并非能力“更强”,只是适用场景不同。

回到顶部