【HarmonyOS 5】鴻蒙檢測系統完整性

【HarmonyOS 5】鴻蒙檢測系統完整性

一、前言

從現實安全威脅來看,設備系統完整性風險已影響至移動應用的各個場景。不少用戶因使用越獄設備(Jailbreak)非真實設備(Emulator),導致應用安全防護機制失效——某金融類APP曾發現用戶在越獄設備上繞過安全校驗,非法獲取賬戶資金操作權限,直接引發數千萬資金損失風險,此類事件不僅導致用戶資產暴露于黑客攻擊之下,更嚴重損害企業金融風控體系的公信力。

與此同時,非真實設備(Emulator)常被黑產用于模擬用戶環境實施批量攻擊:惡意團伙通過模擬器批量注冊虛假賬號,利用自動化工具繞過設備指紋校驗,在電商平臺薅取數百萬補貼資金;或通過篡改模擬器參數,偽造地理位置信息實施精準詐騙,導致企業反欺詐系統形同虛設,直接引發業務信任危機。

而設備被攻擊(Attack)的場景更凸顯系統完整性防護的緊迫性:黑客通過植入root提權工具突破設備底層防護,在用戶無感知的情況下竊取支付憑證、生物特征等敏感數據——某社交APP用戶因設備被植入惡意程序,通訊錄信息及聊天記錄遭批量竊取并販賣,不僅導致個人隱私泄露,更引發連鎖的電信詐騙案件;部分企業因未有效攔截被攻擊設備的接入,導致內部測試環境遭滲透,核心代碼與業務邏輯被竊取,直接面臨高達數億的經濟損失與品牌聲譽的斷崖式崩塌。

應用通過華為 HarmonyOS 的Device Security Kit提供的safetyDetect.checkSysIntegrity 接口,可檢測 系統環境是否完整,是否為模擬器,被破解設備,越獄設備,并根據檢測結果提示或攔截用戶訪問。

二、業務流程與使用

1.首先需要在AGC平臺給對應項目應用,進行安全檢測服務的開通:

登錄AppGallery Connect( https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/ )網站,選擇“我的項目”。在項目列表中找到需要開通Device Security服務的項目。
在這里插入圖片描述

在這里插入圖片描述
之后重新生成調試Profile,在項目中手動進行簽名證書的配置,就可使用該接口了。否則會try catch提示Permission Denied。

2.創建safetyDetect.SysIntegrityRequest配置需要檢測的Url數組,調用safetyDetect.checkSysIntegrity接口異步請求檢測:
在這里插入圖片描述

import { safetyDetect } from '@kit.DeviceSecurityKit';
import { BusinessError } from '@ohos.base';
import { hilog } from '@kit.PerformanceAnalysisKit';const req = { nonce: '服務器生成的隨機值' };
try {const data = await safetyDetect.checkSysIntegrity(req);console.log('檢測結果:', data.result); // true/false
} catch (err) {console.error('錯誤碼:', err.code, '信息:', err.message);
}

3.注意事項:
(1)每日每設備調用次數,最多1 萬次。
(2)每分鐘調用次數,最多5 次。
(3)并發調用數 ,最多5 個。

三、源碼示例:

在這里插入圖片描述

// 導入所需模塊
import { safetyDetect } from '@kit.DeviceSecurityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';

struct deviceCheckTestPage {private TAG: string = "DeviceCheckTestPage";// 存儲檢測結果 resultMsg: string = '未檢測'; detailMsg: string = '';// 生成隨機nonce(示例方法,實際需從服務器獲取)private generateNonce(): string {// 示例中使用本地隨機生成(僅用于演示)// 實際開發必須從應用服務器動態獲取,確保每次請求唯一性return 'imEe1PCRcjGkBCAhOCh6ImADztOZ8ygxlWRs' // 從服務器生成的隨機的nonce值}// 系統完整性檢測函數private async checkSystemIntegrity() {try {console.info(this.TAG, '開始檢測系統完整性')// 獲取nonce(示例:本地生成,實際需從服務器獲取)const nonce = this.generateNonce();// 構建檢測請求const req: safetyDetect.SysIntegrityRequest = {nonce: nonce};// 調用檢測接口const response = await safetyDetect.checkSysIntegrity(req);console.info(this.TAG, '檢測結果:%{public}s', response.result)// 處理結果this.processResult(response);} catch (error) {const err = error as BusinessError;console.info(this.TAG, '檢測結果:%{public}s', '檢測失敗:%{public}d %{public}s', err.code, err.message)this.showPrompt('檢測失敗' + `錯誤碼:${err.code}\n${err.message}`);}}// 結果處理函數private processResult(response: safetyDetect.SysIntegrityResponse) {// SysIntegrityResponse - result// nonce:調用checkSysIntegrity接口時傳入的nonce字符串。//// timestamp:服務器生成的時間戳。//// hapBundleName:您應用的包名。//// hapCertificateSha256:您應用的簽名證書SHA256摘要。//// basicIntegrity:系統完整性檢測的結果,true表示檢測結果完整,false表示存在風險。//// appId:您應用的appid。//// detail:可選字段,當basicIntegrity結果為false時,該字段將提供存在風險的原因,// JWS格式的系統完整性檢測結果。JWS內容詳見《Device Security Kit開發指南》中的系統完整性檢測開發步驟。let result = response.result;// jailbreak:設備被越獄。// emulator:非真實設備。// attack:設備被攻擊。this.resultMsg = `系統完整性:${response ? '安全' : '風險'}`;if (!result) {// this.detailMsg = `風險原因:${detail.join('、')}`;} else {this.detailMsg = '無具體風險信息';}this.showPrompt('檢測完成' + `${this.resultMsg}\n${this.detailMsg}`);}// 提示框函數private showPrompt(message: string) {promptAction.showToast({message: message})}build() {Column() {Text('系統完整性檢測Demo').fontSize(20).fontWeight(500).margin(10);Button('開始檢測').width('90%').height(48).backgroundColor('#007DFF').fontColor('white').onClick(() => this.checkSystemIntegrity()).margin(20);Text(this.resultMsg).fontSize(16).fontWeight(400).margin({ bottom: 5 });Text(this.detailMsg).fontSize(14).fontColor('#666')}.padding(20).width('100%').height('100%').justifyContent(FlexAlign.Center).backgroundColor('#F5F5F5');}
}

系統完整性檢測結果簽名驗證的java示例代碼,僅供應用服務器參考。(https://gitee.com/harmonyos_samples/device-security-kit-samplecode-safetydetect-serverdemo-java)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78430.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習spark-streaming收獲

1.流處理的核心概念 ?實時 vs微批處理:理解了 Spark Streaming 的微批處理(Micro-Batch)模型,將流數據切分為小批次(如1秒間隔)進行處理,與真正的流處理(如Flink)的區…

Redis一些小記錄

Redis一些小記錄 SpringData Redis:RedisTemplate配置與數據操作 操作String類型數據 String是Redis中最基本的數據類型,可以存儲字符串、整數或浮點數。RedisTemplate提供了ValueOperations接口來操作String類型的數據,支持設置值、獲取值、…

5G融合消息PaaS項目深度解析 - Java架構師面試實戰

5G融合消息PaaS項目深度解析 - Java架構師面試實戰 場景:互聯網大廠Java求職者面試,面試官針對5G融合消息PaaS項目進行提問。 第一輪提問 面試官:馬架構,請簡要介紹5G融合消息PaaS平臺的核心功能和應用場景。 馬架構&#xff…

【C語言極簡自學筆記】C 語言數組詳解:一維數組與二維數組

在 C 語言中,數組是一種非常重要的數據結構,它可以將多個相同類型的元素組織在一起,以便于我們進行批量處理和操作。本文將詳細介紹 C 語言中的一維數組和二維數組,包括它們的定義、初始化、元素訪問以及內存存儲等方面的內容。 …

04.通過OpenAPI-Swagger規范讓Dify玩轉Agent

dify安裝 cd dify cd docker cp .env.example .env docker compose up -d準備自定義工具 我自建的PowerDNS,它的swagger如下: https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml 但需要加上&#x…

汽車產業鏈主表及類別表設計

(提前設計,備用) 一、汽車產業鏈類別表(industry_chain_category) 設計要點 1、核心字段:定義產業鏈分類(如零部件、整車制造、銷售服務等) 2、主鍵約束:自增ID作為唯一標…

?RISC-V架構的低功耗MCU多電壓域優化設計

RISC-V核低功耗MCU的多電壓域設計是一種優化電源管理以降低功耗的技術方案。該設計通過電源域劃分、電壓轉換和時序管理等手段,有效降低了系統功耗并提升能效,適用于物聯網和嵌入式系統等場景。 多電壓域設計的基本原理是將芯片劃分為多個獨立供電區域&…

基于STM32、HAL庫的AD7616BSTZ模數轉換器ADC驅動程序設計

一、簡介: AD7616BSTZ是Analog Devices公司生產的一款16位、雙通道、同步采樣SAR型ADC芯片,主要特點包括: 16位分辨率 雙通道同步采樣 最高采樣率:1MSPS/通道 輸入范圍:10V, 5V或2.5V(軟件可編程) 串行(SPI)和并行接口選項 低功耗:典型值100mW 工作溫度范圍:-40C至+8…

CUDA Stream 回調函數示例代碼

文章目錄 CUDA Stream 回調函數示例代碼基本概念示例代碼代碼解釋回調函數的特點更復雜的示例:多個回調注意事項 CUDA Stream 回調函數中使用 MPI 或 NCCL示例程序注意事項 CUDA Stream 回調函數示例代碼 CUDA 中的流回調函數(stream callback)是一種在 CUDA 流中插…

全棧黑暗物質:可觀測性之外的非確定性調試

一、量子計算的測不準Bug 1. 經典 vs. 量子系統的錯誤模式 量子程序崩潰的觀測影響: 調試方法崩潰復現率觀測干擾度日志打印12%35%斷點調試5%78%無侵入跟蹤27%9%量子態層析成像63%2% 二、量子調試工具箱 1. 非破壞性觀測協議 # 量子程序的無干擾快照 from qiski…

ASP.NET8.0入門與實戰

1、項目初始化 創建一個ASP.NET Core Web API的項目,取消Https和身份驗證。 API項目實際上是一個控制臺程序,這點可以在項目的屬性的輸出類型中看到。 launchSettings.json,在這里可以配置運行項目的名稱,端口號,路…

Synopsys 邏輯綜合的整體架構概覽

目錄 一、DC Shell 邏輯綜合的整體架構概覽 ?? 邏輯綜合的主要階段(Pipeline) 二、核心架構模塊詳解 1. Internal Database(設計對象數據庫) 2. Scheduler(調度器) 3. Rewriting Engine&#xff08…

低壓電工常見知識點

一.工廠用電 1.工廠一般有電源380V和220V。 三相:黃綠紅 藍 雙色 助記符:王力宏 分別對應第一相(R),第二相(S),第三相(T),零線(N),地線(PE) 單相:紅 黑 對應火線(L) 零線(N) 左零右火 二.人體安全電壓是36V 三.變壓器的講解 變壓器的符號…

【沉浸式求職學習day27】

沉浸式求職學習 家人們誰懂啊!明天下午又實習筆試了,所以今天大部分時間還是在搞一些行測之類的東西,所以今天沒什么分享給大家的,明晚會簡單的和大家分享一下關于數據庫的一些東西,以及和大家聊聊我筆試的感覺哈哈哈哈…

進入救援模式(物理服務器)

目錄 **?? 準備工作****?? 進入救援模式(物理服務器)****方法 1:直接修改啟動參數****適用情況****操作步驟****方法 2:通過GRUB引導菜單進入(系統未完全崩潰時)****適用情況****操作步驟****兩者的核心區別****如何選擇?****注意事項****總結**當物理服務器無法正常…

基于Pytest接口自動化的requests模塊項目實戰以及接口關聯方法詳解

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 1、基于pytest單元測試框架的規則 1.1 模塊名(即文件名)必須以test_開頭或者_test結尾 1.2 類名必須以Test開頭且不能有init方法 1.3 用…

匯總 JavaScript 內置對象常用方法詳解

匯總 JavaScript 內置對象常用方法詳解 JavaScript 提供了許多強大的內置對象,它們帶有各種實用的方法,能夠幫助我們更高效地編寫代碼。本文將介紹最常用的內置對象方法,并通過實例展示它們的使用場景。 目錄 Array 數組String 字符串Obje…

OceanBase TPCC測試常見報錯匯總

OceanBase TPCC測試常見報錯匯總 報錯1:加載測試數據時創建tablegroup失敗報錯2:加載測試數據時執行超時報錯3:加載測試數據時funcs.sh函數找不到報錯4:加載數據時報錯超過租戶內存上限辦法一:增加租戶內存辦法二:調高轉儲線程數辦法三:調整MemStore內存占比和凍結觸發閾…

Flutter 在 Dart 3.8 開始支持 Null-Aware Elements 語法,自動識別集合里的空元素

近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 語法,該語法糖可以用于在 List、Set、Map 等集合中處理可能為 null 的元素或鍵值對,簡化顯式檢查 null 的場景: /之前 var listWithoutNullAwareElements [if …

SAIL-RK3588協作機器人運動控制器技術方案

一、核心能力與政策適配? ?政策合規性? 滿足工信部《智能機器人重點技術攻關指南》要求,支持 ?EtherCAT主站協議(符合IEC 61158標準)?,助力企業申報工業機器人研發專項補貼(最高300萬元/項目)?核心板…