鸿蒙开源组件——应用完整性校验

jiecho
发布于 2021-7-21 16:35
浏览
0收藏

应用完整性校验

提供对HAP包签名的验签能力

简介

为了确保应用的完整性和来源可靠,OpenHarmony需要对应用进行签名和验签。

  • **应用开发阶段:**开发者完成开发并生成安装包后,需要开发者对安装包进行签名,以证明安装包发布到设备的过程中没有被篡改。OpenHarmony的应用完整性校验模块提供了签名工具、签名证书生成规范,以及签名所需的公钥证书等完整的机制,支撑开发者对应用安装包签名。为了方便开源社区开发者,版本中预置了公钥证书和对应的私钥,为开源社区提供离线签名和校验能力;在OpenHarmony商用版本中应替换此公钥证书和对应的私钥。

  • **应用安装阶段:**OpenHarmony用户程序框架子系统负责应用的安装。在接收到应用安装包之后,应用程序框架子系统需要解析安装包的签名数据,然后使用应用完整性校验模块的API对签名进行验证,只有校验成功之后才允许安装此应用. 应用完整性校验模块在校验安装包签名数据时,会使用系统预置的公钥证书进行验签。

系统架构图

图 1 应用完整性校验架构图

鸿蒙开源组件——应用完整性校验-鸿蒙开发者社区

  • **子系统间接口:**应用完整性校验模块给其他模块提供的接口;

  • **完整性校验:**通过验签,保障应用包完整性,防篡改;

  • **应用来源识别:**通过匹配签名证书链与可信源列表,识别应用来源。

目录

/base/security/appverify
├── interfaces/innerkits/appverify         # 应用完整性校验模块代码
│       ├── config                         # 应用签名根证书和可信源列表配置文件存放目录
│       ├── include                        # 头文件存放目录
│       ├── src                            # 源代码存放目录
│       ├── test                           # 模块自动化测试用例存放目录
├── test/resource                          # 测试资源存放目录

约束

应用完整性校验在OpenHarmony中使用的证书,是专为OpenHarmony生成的,涉及的公钥证书和对应的私钥均预置在OpenHarmony开源代码仓中,为开源社区提供离线签名和校验能力;在商用版本中应替换此公钥证书和对应的私钥。

说明

应用完整性校验模块提供一个子系统间接口,由包管理服务在安装应用时调用。

接口说明

接口名

说明

int HapVerify(const std::string& filePath, HapVerifyResult& hapVerifyResult)

校验应用完整性,识别应用来源

使用说明

应用完整性校验提供的是子系统间接口,仅提供底层能力,不对开发者开放。以应用文件路径作为输入,调用HapVerify接口即可校验应用完整性,通过接口返回值可以获取校验结果,通过引用传参hapVerifyResult获取签名相关信息。

Security::Verify::HapVerifyResult verifyResult;
int32_t res = Security::Verify::HapVerify(hapPath, verifyResult);
if (res != Security::Verify::HapVerifyResultCode::VERIFY_SUCCESS) {
    // processing error
}

相关仓

安全子系统

hmf/security/appverify

openharmony-security_appverify-master.zip 784.16K 9次下载
已于2021-7-21 16:35:23修改
收藏
回复
举报
回复
    相关推荐