文档管理中心
您当前浏览的HarmonyOS 5.0.1(API 13)文档归档不再维护,推荐您使用最新版本。详细请参考文档维护策略变更。
指南系统安全应用加密

应用加密

注意
  • 由于应用加密特性对应用冷启动时延有影响,本特性当前通过白名单的方式受限开放,具体申请流程和方式请见选取待发布的软件包-步骤3。
  • 应用加密特性可以有效提高应用代码文件逆向分析的难度,但应用代码防逆向是一个持续攻防对抗的过程,如对代码文件保护有更高的要求,需要结合其他安全加固措施,进一步提高逆向分析应用的难度。

能力简介

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

开发者向应用市场提交上架申请,上传应用包后可选择是否加密。

选择加密的应用,在经过应用市场审核后,应用市场会对上架应用做代码加密。应用在设备上安装时,安装文件落盘后仍是处于加密状态,有效的保护应用程序;当应用程序启动时按需解密。

应用加密采用标准AES加密算法,解密后的明文只存在于内存中,不会存储到设备,形成端到端的加密方案,有效地提高应用程序的安全性。

系统级应用加密具有如下优点:

  • 应用端到端加密,应用启动后再按需解密执行。
  • 系统级的解密优化,相对于传统加壳等加固方式对性能的影响更小。

加密影响

  1. 加密后的应用在程序启动和运行过程中可能会小幅度增加性能开销。
  2. 加密后的应用相比于不加密的应用体积更大,可能会小幅度增加下载和安装时间。
注意

加密对应用的性能影响与被加密的代码文件大小成正相关,应用的.abc文件越大对应用冷启动时延的影响越大。

加密效果

加密对象为应用内编译后的代码文件,覆盖.abc文件,加密前的代码文件可被反编译,加密后的代码文件安全性会有很大地提升,提高逆向分析的难度。

注意
  • .abc文件除了文件头外,全部进行加密。
  • 当前.so文件默认不进行加密,后续可能支持按照开发者配置进行.so文件的加密

由于应用加密使用的密钥不会在应用包中出现,因此,即使加密后的应用包被获取,攻击者仅能获取到代码的密文。

使用步骤

应用加密特性在应用上架时加密,应用运行时按需解密。安全增强的同时,确保开发者、消费者无感的安全体验,避免应用开发者适配工作,保障用户无感的纯净安全体验。

注意
  • 当前ArkTS卡片服务对应的widgets.abc文件暂不支持加密服务。
  • 当前应用加密特性主要适配了手机、平板、2in1设备等场景,若应用需要分发至手表、智慧屏等设备,可能会不适配。

应用加密在不同阶段中的步骤如下:

  • 开发阶段:开发者无感知。
  • 上架阶段:开发者选取待发布的软件包并上传后,可选择设置分发的软件包是否加密,选择加密后即被加密。

    操作步骤可参考:发布HarmonyOS应用-选取待发布的软件包。

  • 分发阶段:应用将被应用市场加密分发,防止安装包被获取后逆向分析。
  • 安装阶段:安装阶段仍有加密保护。
  • 运行阶段:应用运行时按需解密应用代码。

常见问题

  • Q1:使用官方提供的代码加密能力后,应用代码是否需要其它的代码保护措施吗?

    A1:应用加密特性可以有效提高应用代码文件逆向分析的难度,但应用代码防逆向是一个持续攻防对抗的过程,如对代码文件保护有更高的要求,需要结合其他安全加固措施,进一步提高逆向分析应用的难度。比如使能混淆能力、使能三方安全加固能力等。

  • Q2:如果不使用代码加密能力,还能采取什么手段来保护应用代码资产?

    A2:使能混淆能力、使能三方安全加固能力等,请参考应用资产保护设计-保护应用代码场景。

  • Q3:代码加密会对应用包产生什么影响?

    A3:加密后的应用在程序启动和运行过程中可能会小幅度增加性能开销;加密后的应用相比于不加密的应用体积更大,可能会小幅度增加下载和安装时间。

在 指南 中进行搜索
请输入您想要搜索的关键词