关于android:​超简单集成华为系统完整性检测搞定设备安全防护

3次阅读

共计 3149 个字符,预计需要花费 8 分钟才能阅读完成。

在不安全设备,如被 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
作者:早晨吃啥

正文完
 0