超簡單集成華為系統完整性檢測,搞定設備安全防護


在不安全設備,如被root或解鎖的手機上,運行應用通常會伴隨着一定安全風險,例如被惡意病毒或木馬軟件利用root權限植入病毒、篡改用戶設備信息和破壞系統等。因此,如何做好應用的安全防護、避免在不安全設備環境中產生安全風險,已經成為其開發者必須要考慮的因素。對此,華為開放安全檢測服務,提供系統完整性檢測(SysIntegrity API),可檢測應用運行的設備環境是否安全,如設備是否被root、被解鎖等

一、服務介紹

華為系統完整性檢測包括以下特點:

  1. 基於可信執行環境TEE提供系統完整性檢測結果:在設備安全啟動時,在TEE中評估檢測系統完整性,可信度高,並動態評估系統完整性。
  2. 系統完整性檢測結果安全可信:系統完整性檢測結果經過數字證書簽名,檢測結果不可篡改。

其業務流程圖如下圖所示:

在這里插入圖片描述

(1). 你的應用集成HMS Core SDK調用Safety Detect service。
(2). 請求TSMS(Trusted Security Management Service)服務器簽名檢測結果Server。
(3). 你的應用請求自己服務檢測結果。
---- 結束

二、場景案例介紹

目前已有金融、娛樂、便捷生活、新聞閱讀等多個領域的App集成了華為系統完整性檢測:
金融類應用集成華為SysIntegrity,可有效提升交易安全性。例如,可以在用戶輸入信用卡安全碼(CVC)時,確認手機的系統環境是否安全。 如手機設備未通過系統完整性檢測驗證,則不允許使用該應用,以此保護交易安全:

在這里插入圖片描述

在這里插入圖片描述
生活、新聞閱讀類應用,集成SysIntegrity后可有效防止黑客攻擊,確保應用內付費等活動安全

在這里插入圖片描述
視頻娛樂類應用集成SysIntegrity,可以幫助保護內容版權;當用戶注冊、觀看和下載離線播放視屏時,可以確保用戶在內容提供商認可的設備上,完成流媒體和視頻播放:

在這里插入圖片描述

三、開發代碼

1 在AppGallery Connect中配置相關信息

在開發應用前,需要在AppGallery Connect中配置相關信息。
具體操作步驟:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides-V5/config-agc-0000001050416303-V5

2 配置HMS Core SDK的Maven倉地址

2.1 打開Android Studio項目級“build.gradle"文件

在這里插入圖片描述

2.2 添加HUAWEI agcp插件以及Maven代碼庫
在allprojects-> repositories里面配置HMS Core SDK的Maven倉地址。

1.  allprojects {  

2.      repositories {  

3.          google()  

4.          jcenter()  

5.          maven {url 'https://developer.huawei.com/repo/'}  

6.      }  

7.   }  

在buildscript->repositories里面配置HMS Core SDK的Maven倉地址。

1.  buildscript {  

2.     repositories {  

3.         google()  

4.         jcenter()  

5.         maven {url 'https://developer.huawei.com/repo/'}  

6.     }  

7.  }  

在buildscript ->dependencies里面增加配置。

1.  buildscript{  

2.      dependencies {  

3.           classpath 'com.huawei.agconnect:agcp:1.3.1.300'  

4.      }  

5.   }  

3 創建SafetyDetectClient 並生成nonce值

1.  // 創建SafetyDetectClient  

2.  SafetyDetectClient mClient = SafetyDetect.getClient(MainActivity.this);  

3.  // 生成 nonce值  

4.  byte[] nonce = new byte[24];  

5.  try {  

6.      SecureRandom random;  

7.      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {  

8.          random = SecureRandom.getInstanceStrong();  

9.      } else {  

10.         random = SecureRandom.getInstance("SHA1PRNG");  

11.     }  

12.     random.nextBytes(nonce);  

13. } catch (NoSuchAlgorithmException e) {  

14.     Log.e(TAG, e.getMessage());  

15. }  

4 創建檢測結果監聽

1.  // 實現OnSuccessListener接口,並從 onSuccess獲取檢測結果  

2.  protected class SysIntegrityOnSuccessListener implements OnSuccessListener<SysIntegrityResp> {  

3.    

4.      // 獲取系統完整性檢測結果 

5.      @Override  

6.      public void onSuccess(SysIntegrityResp sysIntegrityResp) {  

7.    

8.      }  

9.    

10. }  

11. // 實現OnFailureListener接口,並從 onFailure異常詳情  

12. protected class SysIntegrityOnFailureListener implements OnFailureListener {  

13.     // 獲取異常錯誤碼已經異常詳情  

14.     @Override  

15.     public void onFailure(Exception e) {  

16.   

17.     }  

18. }  

5 調用系統完整性檢測

1.  // 調用系統完整性檢測接口,********傳入appid  

2.  Task task = mClient.sysIntegrity(nonce,"********");  

3.  task.addOnSuccessListener(new SysIntegrityOnSuccessListener()).addOnFailureListener(new SysIntegrityOnFailureListener());  

6 結果驗證

服務器中驗證系統完整性檢測結果可以參考開發者聯盟官網。

DEMO演示

在這里插入圖片描述

如果你對實現方式感興趣,可以參考Github源碼鏈接:https://github.com/HMS-Core/hms-safetydetect-demo-android

更詳細的開發指南,請參考華為開發者聯盟官網:
華為開發者聯盟:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/dysintegritydevelopment-0000001050156331

獲取開發指導文檔:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/introduction-0000001050156325ha_source=hms1

下載demo和示例代碼請到Github:https://github.com/HMS-Core

解決集成問題請到Stack Overflow:
https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文鏈接:https://developer.huawei.com/consumer/cn/forum/topic/0201393882637910006?fid=18

原作者:晚上吃啥


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM