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

server/2024/9/24 10:50:17/

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

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

相关文章

Element Plus如何使用在工程中,如何覆盖主题及常用主题(详细记录,值得一看)

Element Ui 2.x 升级到 Element Plus。 一、安装Element Plus 首先,你需要在你的 Vue 项目中安装 Element Plus。打开你的终端或命令提示符,并导航到你的项目目录,然后运行以下 npm 命令来安装 Element Plus: 输入:…

鸿蒙应用生态构建的核心目标

保护开发者和用户利益的同时维护整体系统的安全性,对生态构建者是至关重要的。以开发者为中心,构建端到端应用安全能力,保护应用自身安全、运行时安全,保障开发者权益,是鸿蒙应用生态构建的核心目标。 应用生命周期主要…

大数据产业核心环节有哪些?哪里可以找到完整的大数据产业分析?

▶大数据产业前景开阔 大数据产业正站在数字化时代前沿,预计在未来几年将实现显著增长和扩展。目前,中国大数据产业规模在2021年已达到1.3万亿元,并在2022年增长至1.6万亿元,预计到2025年将突破3万亿元大关,年均复合增…

使用Conda配置python环境到Pycharm------Window小白版

使用Conda配置python环境到Pycharm 一、Conda安装和环境配置1.1 安装Conda软件1.2 判断是否安装成功1.3 创建Conda虚拟环境 二、 pycharm的安装2.1 Pycharm使用手册2.2 安装pycharm 三、 pycharm导入Conda环境 一、Conda安装和环境配置 anaconda官网 1.1 安装Conda软件 运行…

拦截器Interceptor

1.创建一个拦截器,继承HandlerInterceptor public class AuthorizedInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return Handle…

linux文件目录指令合集--拷贝、移动、查看

目录 1.文件和文件夹的拷贝 1.1文件的树状结构 1.2文件的拷贝 1.3文件夹的拷贝 1.4强制覆盖 2.文件和文件夹的移动 2.1重命名 2.2移动 2.3移动并重命名 2.4移动整个目录 3.文件内容的查看 3.1显示行号 3.2借助管道 3.3单独使用more 3.4less指令 3.5其他的指令 …

Array.prototype.slice.call()

Array.prototype.slice.call arguments 举例子 Array.prototype.slice.call(arguments); 这行代码在JavaScript中经常被用来将类数组对象(如函数的arguments对象)转换成一个真正的数组。这里解释一下为什么需要这样做以及这行代码是如何工作的。 为什…

【C++掌中宝】玩转C++标准输入输出(简洁明了)

文章目录 前言1. I/O库头文件2. C的标准输入输出——\<iostream\>3. 基本用法3.1 标准输出流&#xff08;cout&#xff09;3.2 标准输入流&#xff08;cin&#xff09;3.3 标准错误流&#xff08;cerr&#xff09;3.4 标准日志流&#xff08;clog&#xff09; 4. 内容补充…