1. 程式人生 > 實用技巧 >​超簡單整合華為系統完整性檢測,搞定裝置安全防護

​超簡單整合華為系統完整性檢測,搞定裝置安全防護

在不安全裝置,如被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 結果驗證

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

如果你對實現方式感興趣,可以參考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
作者:晚上吃啥