跳到主要内容

应用加密

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

能力简介

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

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

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

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

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

加密影响

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

应用加密后的影响已经进行过系统级的优化,在部分优化后的版本上应用加密前后的性能与包体大小几乎无变化。

保护效果

应用加密保护的对象为应用包体中的关键资产(例如.abc文件),原始的代码文件可能被反编译,受保护后的代码文件安全性会有很大地提升,提高逆向分析的难度。

使用步骤

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

当前ArkTS卡片服务对应的widgets.abc文件暂不支持加密服务。

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

  • 开发阶段:开发者无感知。

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

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

  • 分发阶段:应用将被应用市场加密分发,防止安装包被获取后逆向分析。

  • 安装阶段:安装阶段仍有保护。

  • 运行阶段:应用运行时按需解密应用代码。

常见问题

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

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

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

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

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

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