1# 密钥证明介绍及算法规格
2
3
4HUKS为密钥提供合法性证明能力,主要应用于非对称密钥的公钥的证明。
5
6
7基于PKI证书链技术,HUKS可以为存储在HUKS中的非对称密钥对的公钥签发证书,证明其公钥的合法性。业务可以通过系统提供的根CA证书,逐级验证HUKS签发的密钥证明证书,来确保证书中的公钥以及对应的私钥,确实来自合法的硬件设备,且存储管理在HUKS中。同时,输出的密钥证书中包含密钥属主信息,格式如下:
8| 密钥属主 | 格式 | 说明 |
9| -------- | -------- | -------- |
10| HAP应用| {appId:"xxx", bundleName:"xxx"} | bundleName为应用包名 |
11| 系统服务| {processName:"xxx", APL:"system_basic \| system_core"} | APL为[系统服务等级](../../security/AccessToken/app-permission-mgmt-overview.md#权限机制中的基本概念) |
12
13> **说明:**
14> 1. 当调用方为系统服务且APL等级为normal时,暂不支持密钥证明,此种情况下,processName与APL字段将置空。
15> 2. 密钥证明功能在模拟器场景不支持。
16> 3. 轻量级设备不支持密钥证明功能。
17> 4. 支持生成密钥和导入密钥进行密钥证明,业务方在服务器侧需要通过业务证书中的密钥来源字段校验密钥来源是否符合预期。密钥来源字段的OID及其取值为:`1.3.6.1.4.1.2011.2.376.2.1.5`
18
19密钥来源及对应OID字段的值如下表:
20| 密钥来源 | OID字段对应的值 |
21| -------- | -------- |
22| 导入 | 1 |
23| 生成 | <!--RP1-->2<!--RP1End--> |
24
25密钥证明过程如下:
26
27
281. 业务将指定密钥别名和需要证明的密钥属性的标签传入HUKS。
29
302. 调用HUKS为应用生成一个依次由根CA证书、设备CA证书、设备证书、密钥证书组成的X.509证书链。
31
323. 将证书链传输至受信任的服务器,并在服务器上解析和验证证书链的有效性和单个证书是否吊销。
33
34<!--RP2-->
35当前提供了两种密钥证明方式。
36- 匿名密钥证明:不会泄露设备信息,没有权限管理。面向所有应用开放。为了保护用户设备信息,三方应用开发者只能使用匿名密钥证明。
37- 非匿名密钥证明:可以看到调用方设备信息,有权限管控,需申请[ohos.permission.ATTEST_KEY](../AccessToken/permissions-for-system-apps.md#ohospermissionattest_key)权限。
38<!--RP2End-->
39
40## 支持的算法
41
42以下为密钥证明支持的规格说明。
43<!--Del-->
44面向OpenHarmony的厂商适配密钥管理服务规格分为必选规格和可选规格。必选规格为所有厂商均支持的算法规格。而对于可选规格,厂商将基于实际情况决定是否实现,如需使用,请查阅具体厂商提供的说明,确保规格支持再使用。
45
46**建议开发者使用必选规格开发应用,可保证全平台兼容。**
47<!--DelEnd-->
48
49<!--Del-->
50**匿名密钥证明:**
51<!--DelEnd-->
52
53| 算法 | 备注 | API级别 | <!--DelCol4-->是否必选规格 |
54| -------- | -------- | -------- | -------- |
55| RSA | 支持Padding为PSS与PKCS1_V1_5的密钥 | 11+ | 是 |
56| ECC | - | 11+ | 是 |
57| SM2 | - | 11+ | 是 |
58
59<!--Del-->
60**非匿名密钥证明:**
61
62| 算法 | 备注 | API级别 | 是否必选规格 |
63| -------- | -------- | -------- | -------- |
64| RSA | 支持Padding为PSS与PKCS1_V1_5的密钥 | 8+ | 是 |
65| ECC | - | 8+ | 是 |
66| X25519 | - | 8+ | 是 |
67| SM2 | - | 8+ | 是 |
68<!--DelEnd-->
69