在不安全设备,如被root或解锁的手机上,运行利用通常会随同着肯定平安危险,例如被歹意病毒或木马软件利用root权限植入病毒、篡改用户设施信息和毁坏零碎等。因而,如何做好利用的平安防护、防止在不安全设备环境中产生平安危险,曾经成为其开发者必须要思考的因素。对此,华为凋谢平安检测服务,提供零碎完整性检测(SysIntegrity API),可检测利用运行的设施环境是否平安,如设施是否被root、被解锁等。
一、服务介绍
华为零碎完整性检测包含以下特点:
- 基于可信执行环境TEE提供零碎完整性检测后果:在设施平安启动时,在TEE中评估检测零碎完整性,可信度高,并动静评估零碎完整性。
- 零碎完整性检测后果平安可信:零碎完整性检测后果通过数字证书签名,检测后果不可篡改。
其业务流程图如下图所示:
(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/h...
更具体的开发指南,请参考华为开发者联盟官网:
华为开发者联盟: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/que...
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201393882637910006?fid=18
原作者:早晨吃啥