鸿蒙NEXT开发【应用资产保护设计】开发安全

简介

本文档主要面向HarmonyOS应用的设计人员,介绍应用在资产保护方案设计过程中,可能会遇到的典型场景以及对应的推荐设计方案,同时给出了方案的关键点及参考案例。

典型业务场景

HarmonyOS应用的典型应用资产主要包括代码资产、用户数据资产、安全密钥资产、数据库资产等,其中数据库资产主要在服务器侧,由应用自行对其进行保护。根据不同的资产类型当前HarmonyOS系统均提供相应的机制进行保护。

根据当前APP开发过程中遇到的实际资产保护业务场景,总结提炼出如下典型场景,可供更多APP参考,设计其资产保护业务方案:

场景编号资产保护场景简述
1保护应用代码保护应用代码主要是为了防止恶意攻击者对应用程序进行反向工程和盗用。如果应用程序的代码没有得到保护,攻击者可以轻松地获取应用程序的源代码,并对其进行修改、复制或分发。这可能会导致应用程序的知识产权被侵犯,或者应用程序被用于恶意目的,例如盗取用户的个人信息或者进行其他违法活动。
2保护用户数据用户数据包括用户的个人信息、账户信息、交易记录、位置信息等等。如果这些数据没有得到保护,攻击者可以轻松地获取这些数据,并对其进行恶意使用,例如盗取用户的身份信息、银行账户信息等等。并且对用户数据的保护也是目前监管要求的重点,对用户数据保护不当还会影响应用甚至HarmonyOS系统的用户口碑受到影响
3保护应用密钥密钥是用于加密和解密数据的关键,如果密钥泄露,攻击者可以轻松地获取加密数据的明文,从而导致数据泄露和安全问题。

HarmonyOS安全能力整体架构

HarmonyOS安全能力概述

HarmonyOS安全能力全景图如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

系统安全:

系统安全基于硬件构建安全可信根,通过多种访问控制、漏洞防利用、系统完整性保护、网络安全保护技术,从底层构建HarmonyOS系统安全底座。保障HarmonyOS系统安全运行基础,为HarmonyOS应用安全保护提供可靠基石。

应用安全生态:

HarmonyOS系统在系统安全底座之上,对HarmonyOS应用资产保护各种场景均提供对应安全保护能力。通过使用系统提供的安全能力,HarmonyOS应用可以对应用全生命周期内的应用资产进行保护。

HarmonyOS应用:

HarmonyOS应用作为自身应用资产的责任方,需要按需使用HarmonyOS系统提供的安全能力,并按照本文推荐的资产保护设计对自身资产进行保护。

HarmonyOS资产保护关键技术介绍

代码混淆

移动应用的代码安全非常重要,为了保护应用开发者的代码,避免应用被恶意逆向分析,提高攻击者分析代码的难度,DevEcoStudio中默认提供了代码混淆能力,混淆后的JS、TS、ArkTS代码,不容易被逆向后读懂,混淆功能支持对名称进行混淆,包括对类、方法等做混淆处理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码混淆方案是基于源码混淆,将源码转为抽象语法树(AST),在AST上进行作用域分析和符号分析,混淆名称和属性,移除开发期间的日志打印代码,合并语句,压缩代码体积,在保证运行时性能无变化的前提下,有效保护HarmonyOS开发者核心知识产权免受恶意逆向分析。具体混淆效果如下例。

混淆前:

function getAgeInfo() {
  function getAge() {
    var age = 20;
    return age;
  }
  var name = "jack";
  if (name) {
    return getAge();
  } else {
    return -1;
  }
}
console.log(getAgeInfo());

混淆后:

function getAgeInfo() {
  function a() {
    var c = 0x14;
    return c;
  }
  var b = 'jack';
  if (b) {
    return a();
  } else {
    return -0x1;
  }
}
console['log'](getAgeInfo());

应用加密

为了保护应用代码安全,保护开发者的核心资产,HarmonyOS系统提供了端到端的应用代码保护机制,该机制以系统安全为基础,构建内核级应用生命周期内的代码安全保护能力。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

开发者向应用市场提交上架申请,再经过应用市场审核后,应用市场会对上架应用做代码加密,应用在设备上安装时,安装文件落盘后仍是处于加密状态,有效的保护应用程序;当应用程序启动时,通过内核加载的应用文件是加密状态,因此这些文件会在内核中按页解密,然后提取文件明文在内存中执行。应用加密采用标准AES加密算法,解密后的明文只存在于内存中,不会存储到设备,形成端到端的加密方案,有效的保障应用程序的安全性。

应用包签名

开发者对应用安装包签名后,上架应用市场。应用市场会对上架应用进行上架检测和质量审核,对于满足上架要求的应用,应用市场会对应用安装包进行重签名;只有经过重签名的上架应用,才允许在设备上安装。

HarmonyOS系统对所有安装的应用都需要进行签名校验,确保应用来源可信和应用完整性;应用安装包签名校验发生在应用安装时,如果签名校验失败,则禁止应用安装。

HarmonyOS系统使用根CA对应用安装包进行签名校验,应用安装包的签名证书都需要从根CA开始采用证书链的方式签署。

对于调试应用的安装,HarmonyOS系统在校验安装包签名基础上,还需要严格匹配应用调试Profile中的设备ID与当前设备ID的匹配,如果不匹配的话禁止安装。

对于发布应用的安装,HarmonyOS系统仅允许经过应用市场审核通过后,由应用市场重签名过的安装包进行安装。

关键资产存储

关键资产存储(Asset Store)提供了关键敏感的隐私数据的本地加密存储,应用可以将用户高安全敏感的关键资产短数据(如用户的APP账号密码,银行卡号等)在本地加密存储,加密这些数据的密钥存储在安全的隔离区,只有合法的应用才能访问并解密这些数据。具体的架构如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

除此之外,关键资产存储还支持以下一些安全措施:

  • 基于属主的访问控制: 所有的关键资产都受属主访问控制保护,业务无需设置。
  • 基于锁屏状态的访问控制:分为三种保护等级(安全性依次递增),开机后可访问、首次解锁后可访问、解锁时可访问,业务可根据实际情况设置任意一种,若不设置,则默认保护等级为“首次解锁后可访问”。
  • 基于锁屏密码设置状态的访问控制:在用户设置了锁屏密码后,关键资产才被允许访问。
  • 基于用户认证的访问控制:任意一种认证方式(指纹、人脸、PIN码)通过,均可授权本次关键资产的访问。

密钥管理

HarmonyOS系统通用密钥库系统(英文全称:HarmonyOS Universal KeyStore,以下简称HUKS)是HarmonyOS系统提供的系统级的密钥管理系统服务,提供密钥的全生命周期管理能力,包括密钥生成、密钥存储、密钥使用、密钥销毁等功能,以及对存储在HUKS中的密钥提供合法性证明。HUKS基于系统安全能力,为业务提供密钥全生命周期的安全管理,业务无需自己实现,利用HUKS的系统能力,就能确保业务密钥的安全。

HUKS的核心安全设计包括以下几点。

密钥不出安全环境: HUKS的核心特点是密钥全生命周期明文不出HUKS Core,在有硬件条件的设备上,如有TEE(Trusted Execution Environment)或安全芯片的设备,HUKS Core运行在硬件安全环境中。能确保即使REE(Rich Execution Environment)环境被攻破,密钥明文也不会泄露。

系统级安全加密存储: 基于设备根密钥加密业务密钥,在有条件的设备上,叠加用户口令加密保护密钥。

严格的访问控制: 只有合法的业务才有权访问密钥,同时支持用户身份认证访问控制以支持业务的高安敏感场景下安全访问密钥的诉求。

密钥的合法性证明: 可为业务提供硬件厂商级别的密钥的合法性证明,证明密钥没有被篡改,并确实存在于有硬件保护的HUKS Core中,以及拥有正确的密钥属性。

此外,密钥会话是HUKS中承载密钥使用的基础,它的主要作用是初始化密钥信息、缓存业务数据等。对数据的密码学运算和对密钥密文的加解密都是在HUKS Core中进行,以此保证密钥明文和运算过程的安全。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应用资产保护设计

概述

不同的资产保护场景用到的HarmonyOS系统安全能力各不相同,此章节按照常见的资产保护场景的HarmonyOS安全保护方案设计。

保护应用代码场景

场景描述

在HarmonyOS应用业务实现过程中,应用代码对于开发者而言永远都是最重要的资产之一。应用代码是应用的核心,如果保护不当可能造成严重的知识产权损失以及面临严重的安全攻击威胁。

在HarmonyOS开发场景下,应用的代码分为C/C++等实现的代码,以及JS、TS、ArkTS实现的代码两类,最终的编译产物主要为.so文件和.abc文件。其中.so文件由于反编译难度较大,代码逆向困难,应用可按需决定是否做进一步保护。由于ArkTS本身为解释性语言,编译后的.abc文件为字节码,反编译难度较小,容易被逆向分析出核心代码,所以建议根据业务情况做一定的保护。

HarmonyOS开发实现方案介绍

HarmonyOS系统整体代码资产保护策略:

(1)开发阶段默认基础混淆,并支持对接三方商用混淆工具;

(2)上架阶段对应用进行加密;

(3)设备侧运行时对应用进行解密。

其中代码混淆和应用加密方案的介绍在"代码混淆"和"应用加密"。

业务实现中的关键点

DevEco Studio默认开启基础代码混淆

为保护代码资产,编译器默认开启代码混淆功能,默认对代码中的参数名和局部变量名进行混淆。建议没有特殊情况保持混淆开启,如果存在不需要代码混淆的场景,可以通过在模块级的build-profile.json5配置文件中关闭代码混淆功能。

官方提供的自定义混淆选项

DevEco Studio除了基础混淆能力,还提供一些更高阶的混淆能力,开发者可以通过以下操作配置高阶混淆规则:

1、打开Stage模型的ArkTS工程。

2、打开模块级build-profile.json5文件,在"obfuscation"字段下配置混淆规则

3、其中"files"为配置混淆规则文件路径,高级混淆能力通过将混淆规则写入混淆规则文件实现

HarmonyOS提供应用加密机制

开发者向应用市场提交上架申请并通过审核后,应用市场会对所有上架的应用做代码加密,具体加密的对象为应用包中的.abc文件和.so文件,并在应用运行加载进内存时,在系统内核进行解密。目标是保护应用程序二进制代码安全,保护开发者知识产权,并避免应用脱离设备后仍能运行。

应用加密主要通过以下3个关键能力实现:

代码加密能力: 基于so、abc文件的加密,同时兼容快速补丁修复,代码签名机制;

基于动态加载按页解密能力: 提升解密效率,在内核中按应用加载文件的内存页进行解密;

秘钥分发: 通过平台账号的访问控制,基于设备TEE的设备认证的秘钥分发;

整套方案作为HarmonyOS系统应用安全基础能力完全由应用市场、HarmonyOS内核、终端设备实现,不需要开发者做任何配置和开发。

案例参考

应用代码保护均为系统应用安全基本能力,不同垂类的应用对于应用安全加固的要求和实现可能有些许不同,以对安全性要求最高的金融类应用为例,可以参考如下HarmonyOS应用的实际保护案例:

混淆基础混淆使用HarmonyOS官方Arkguard默认配置
增强混淆三方提供
加密(应用市场)代码加密默认支持
加壳加壳禁止
其他加固防调试在HarmonyOS系统的基础上,三方提供增强
防篡改在HarmonyOS系统的基础上,三方提供增强

与业界方案特殊差异说明

由于平台的应用安全机制和生态情况的区别,对应的应用加固方案有一定的区别,具体的区别对比如下:

操作系统应用自保护策略
HarmonyOS应用加密(主) + 基础混淆 + 高级混淆(三方提供,但需要满足上架审核要求)
其他加壳(主)/应用加密(主)+ 普通混淆/高级混淆(商业源码级别的混淆工具,但需要满足上架审核要求)

不推荐应用实现方式

不推荐应用通过恶意利用系统漏洞的方式实现自身保护,并且所有的加固方案都必须满足"使用三方安全加固厂商提供的高级加固能力"中提到的4点应用上架审核要求。

保护用户数据

场景描述

大部分应用在用户使用过程中都会产生用户数据,这些数据包括用户输入的一些个人信息,例如姓名、地址、电话号码、电子邮件地址等;也包括用户使用过程产生的行为数据,例如使用时长、功能使用次数等。这些数据由于监管要求和用户隐私要求,需要根据数据的类型进行相应的保护。本设计文档主要将用户数据分为普通用户数据和敏感个人数据两类,分别给出HarmonyOS开发过程中相应的保护能力和方案。应用可以根据《个人信息保护法》或其他的数据分类方法对数据进行分类。

HarmonyOS开发实现方案介绍

普通用户数据在HarmonyOS系统中,通过每个应用独立的应用沙箱进行隔离,在应用沙箱保护机制下,应用无法获知除自身应用文件目录之外的其他应用或用户的数据目录位置及存在。同时,所有应用的目录可见范围均经过权限隔离,只有自身和部分系统进程才有权限访问,其他未授权的三方应用均无法访问。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

除此之外,对于一些更加敏感的用户数据,如用户口令、身份证号、银行卡号等,HarmonyOS系统还提供关键资产存储服务,关键资产的安全存储,依赖底层的TEE可信执行环境。具体来说,关键资产的加/解密操作以及访问控制校验,都在安全环境中完成,即使系统被攻破,也能保证用户敏感数据不发生泄露。

业务实现中的关键点

应用沙箱隔离及应用文件路径

应用沙箱限制了应用可见的数据的最小范围。在“应用沙箱目录”中,应用仅能看到自己的应用文件以及少量的系统文件(应用运行必需的少量系统文件)。因此,本应用的文件也不为其他应用可见,从而保护了应用文件的安全。

关键资产存储服务使用

HarmonyOS系统提供关键资产存储开发服务(Asset Store Kit)给应用开发者使用,提供了用户短敏感数据的安全存储及管理能力。
与业界方案特殊差异说明

与业界方案无特殊差异,应用开发者可以参考业界的类似方案来设计使用本能力。

不推荐应用实现方式

不推荐将不需要上云的用户数据上传到云端来保存,一方面有用户隐私相关的风险,另一方面,数据脱离HarmonyOS系统后没法保证其安全性。

保护应用密钥

场景描述

在HarmonyOS中用于加密和解密数据的密钥是其非常重要且需要保护的资产之一。密钥的主要使用场景包括:

1.数据加密: 应用密钥可以用于加解密重要数据;

2.应用安全: 应用密钥可以用于保护应用免受恶意攻击;

3.数据完整性验证: 应用密钥可以用于验证数据的完整性,确保数据在传输或存储过程中没有被篡改;

4.应用身份验证: 应用密钥可以用于验证应用或服务器身份。

与业界方案特殊差异说明

本方案核心层运行在硬件安全环境,除此之外与业界方案无特殊差异。

不推荐应用实现方式

不推荐应用使用明文方式存储应用密钥,明文存储存在密钥泄露的风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值