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

devtools/2024/9/24 6:34:26/

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

开发者是应用程序的创作者,合法的开发者是创作出安全、可靠应用的前提条件;为了保证应用开发者身份真实可信,鸿蒙通过开发者证书对应用进行签名,保证应用来源可靠和完整性不被破坏;通过签发应用 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.ppmy.cn/devtools/116372.html

相关文章

MySQL增删面试题

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…

深度学习:(七)梯度下降法在神经网络中的应用

梯度下降法在神经网络中的应用 事先规定: 用 n n n 表示个数(维度): n [ 0 ] n x n^{[0]}n_x n[0]nx​ ,表示单个训练样本 x x x 的元素个数; n [ 1 ] n^{[1]} n[1] 表示隐藏层 1 1 1 的单元(节点&am…

甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?

在工作中、团队协作时,可能遇到的问题,如集成测试等场景。但是作为偏前端的全栈,锅从天上来,不是你想甩就能甩,尤其面对测试等比较强势的团体(bug创造者),你必须有强大的心理承受能力…

Flask-JWT-Extended登录验证, 不用自定义

"""安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外,你还可以指定其他的选项,例如:过期时间 (max_age)&#xff1…

DANN GRL

域自适应是指在目标域与源域的数据分布不同但任务相同下的迁移学习,从而将模型在源域上的良好性能迁移到目标域上,极大地缓解目标域标签缺失严重导致模型性能受损的问题。 介绍一篇经典工作 DANN : 模型结构 在训练阶段需要预测如下两个任务…

流行的微前端框架有哪些,适应场景是什么

以下是一些流行的微前端框架,各自的适用场景 1. Single-SPA 适用场景: 适用于需要将大型应用拆分为多个小型、独立应用的场景。支持多种框架的集成。 GitHub地址: Single-SPA Star数量: 约6.8k 2. qiankun 适用场景&#x…

统信服务器操作系统【qcow2 镜像空间扩容】方案

使用 qcow2 镜像安装系统,当默认安装系统存储空间不够用时,进行自定义扩容 文章目录 准备环境扩容步骤一、检查环境信息1.查看镜像信息2.查看镜像分区信息3.确认需要扩容的分区名二、扩容1.备份镜像2.创建新的镜像文件,并指定空间3.将系统扩容到新的镜像三、扩容 lvm 分区四…

着色器ShaderMask

说明 实现一个渐变进度条,要求: 颜色渐变的过程是循序渐进的,而不是看起来像是将渐变条逐渐拉长了。 效果 源码 // 渐变进度条Stack(children: [// 背景色板Container(width: 300,height: 8,decoration: BoxDecoration(borderRadius: Bord…