当前位置: 首页 > article >正文

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

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

开发者是应用程序的创作者,合法的开发者是创作出安全、可靠应用的前提条件;为了保证应用开发者身份真实可信,鸿蒙通过开发者证书对应用进行签名,保证应用来源可靠和完整性不被破坏;通过签发应用 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 文件用于热更新修复,在保证运行时性能无变化的前提下,有效保护鸿蒙开发者核心知识产权免受恶意逆向分析。


http://www.kler.cn/a/322551.html

相关文章:

  • Qt 每日面试题 -10
  • Django5 2024全栈开发指南(一):框架简介、环境搭建与项目结构
  • C++ 内联函数
  • GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析
  • 中信建投张青:以金融巨擘之姿,铸就公益慈善新篇章
  • latex中,两个相邻的表格,怎样留一定的空白
  • Elasticsearch案例
  • Vue 23进阶面试题:(第六天)
  • 力扣面试150 寻找峰值 二分
  • msvcr100.dll丢失的解决方法,六种解决msvcr100.dll丢失使用技巧
  • 黄金短线交易策略:波动中的高效盈利之法
  • Python精选200Tips:176-180
  • Java中的Junit、类加载时机与机制、反射、注解及枚举
  • CMake set_property设置全局变量属性
  • 基于TSN的实时通信网络延迟评估技术
  • HDF5文件浏览软件--H5View
  • SpringCloud 2023各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)
  • 网站建设服务器租用的优点有哪些?
  • 苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”
  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • 如何优化模型性能,探讨过拟合与欠拟合问题
  • 优数:助力更高效的边缘计算
  • 【刷题2—滑动窗口】最大连续1的个数lll、将x减到0的最小操作数
  • 傅里叶级数在机器人中的应用(动力学参数辨识)
  • ubuntu 设置静态IP
  • FileZilla Server 黑白单移除