写点什么

鸿蒙保障应用开发安全的技术措施

作者:芯盾时代
  • 2024-09-23
    北京
  • 本文字数:1701 字

    阅读完需:约 6 分钟

应用开发安全是指在开发过程中嵌入安全能力,使应用程序从源头上安全可靠。

开发者是应用程序的创作者,合法的开发者是创作出安全、可靠应用的前提条件;为了保证应用开发者身份真实可信,鸿蒙通过开发者证书对应用进行签名,保证应用来源可靠和完整性不被破坏;通过签发应用 Profile,保证 HarmonyOs 对应用关键属性和敏感能力进行有效管控;

开发者注册和实名认证

在开发鸿蒙应用之前,开发者首先需要在 HarmonyOS 应用开发官网完成注册并进行实名认证。认证通过后,官网为开发者分配开发者 ID,用于后续申请应用开发所需的开发者证书和应用配置文件,开发者开发的所有鸿蒙应用都会关联到对应的开发者 ID,可以有效地对应用进行追溯。

鸿蒙应用上架到应用市场分发前,会对应用进行严格地审核,确保应用的安全和质量。一旦在审核时发现应用不满足应用市场上架标准,会及时通知应用开发者对应用进行整改或优化。通过开发者注册和实名认证,确保鸿蒙应用的来源都是可信的。

申请开发者证书

鸿蒙应用开发者在拥有开发者 ID 后,可以申请开发者证书,用于后续对其开发的鸿蒙应用进行签名。鸿蒙应用签名是鸿蒙应用必须包含的内容,用于校验鸿蒙应用的完整性和来源可靠,只有签名校验通过,才能在应用市场发布,以及在 HarmonyOs 上安装。

开发者证书遵从 X.509 公钥证书标准,证书中包含开发者公钥以及用于校验的证书链等信息;在应用上架和安装时,都会基于 HarmonyOs 信任根证书对鸿蒙应用的开发者证书进行校验,校验成功后再使用开发者证书中的开发者公钥校验鸿蒙应用安装包的完整性。开发者证书中的开发者公钥,由开发者生成并提交给 HarmonyOS 应用开发官网;开发者公钥对应的私钥由开发者保管,开发者需要确保私钥的安全,严格管理私钥的访问权限避免私钥泄露、损坏等情况出现。

应用开发者证书分为两类:调试证书和发布证书,分别用于鸿蒙应用调试阶段和上架发布阶段。

申请应用 Profile 文件(HarmonyAppProvision)

开发者进行实名认证获取开发者 ID,以及申请开发者证书之后,还需要申请待开发应用的 Profile 授权文件。应用 Profile 授权文件是应用的身份证明文件,用于 HarmonyOS 对应用进行识别和管理,该文件中包含应用的关键信息,包括应用的包名、应用受限权限(仅少数场景才需要申请)、应用的开发者 ID、应用的开发者证书等。

应用 Profile 授权文件需要在开发者网站申请并审核后签发,该文件使用 ECC 密钥签名签名符合 PKCS#7 标准。应用 Profile 授权文件是应用必不可少的组成部分,被打包到应用安装包中,在应用上架审核和安装时进行校验。

应用 Profile 授权文件按照用途分为调试 Profile 和发布 Profile。

代码安全检查

鸿蒙在 DevEco Studio 中集成检测能力,可以帮助开发人员及时发现代码中的问题,避免在后期发现问题,也可以提高代码的可维护性和可读性。

DevEco Studio 提供了 code linter 功能,对代码的通用规范性检测,同时也会重点对代码的安全性做检查,包括静态代码分析,二进制安全分析等,静态代码分析可以在开发过程中发现问题,开发者可根据扫描结果中告警提示手工修复代码缺陷。

开发者完成编译构建后,可通过 DevEco Studio 安全检测插件对二进制进行安全检查,重点检测应用攻击面管控不足、权限或证书配置不当等可能会导致的安全风险,建议开发者在发布应用之前完成相关安全检查动作,并基于风险评估进行修改,其中主要安全风险及漏洞来源于攻击面分析。

代码混淆

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

代码混淆方案是基于源码混淆,将源码转为抽象语法树(AST),在 AST 上进行作用域分析和符号分析,混淆名称和属性,移除开发期间的日志打印代码,合并语句,压缩代码体积,生成 sourcemap 文件用于编译混淆后应用的调试,生成 namecache 文件用于热更新修复,在保证运行时性能无变化的前提下,有效保护鸿蒙开发者核心知识产权免受恶意逆向分析。

发布于: 刚刚阅读数: 4
用户头像

芯盾时代

关注

以人为核心的业务安全 2024-03-20 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙保障应用开发安全的技术措施_鸿蒙_芯盾时代_InfoQ写作社区