openharmony 鸿蒙 huks-key-import-overview

2025-06-16 浏览 (1)

密钥导入介绍及算法规格

如果业务在HUKS外部生成密钥(比如应用间协商生成、服务器端生成),业务可以将密钥导入到HUKS中由HUKS进行管理。密钥一旦导入到HUKS中,在密钥的生命周期内,其明文仅在安全环境中进行访问操作,不会传递出安全环境,保证任何人都无法获取到密钥的明文。

密钥导入的方式包含明文导入和加密导入两种方式。

注意: 使用现有密钥别名作为导入的密钥别名会把现有密钥覆盖。

明文导入

该方式直接将密钥明文导入HUKS,在导入过程中密钥明文会暴露在非安全环境中,一般适用于轻量级设备或低安业务。

  • 推荐使用该方式导入的密钥类型:非对称密钥的公钥。

  • 不推荐使用该方式导入的密钥类型:对称密钥、非对称密钥对。

    说明: 轻量级设备只支持明文导入,不支持加密导入。

加密导入

该方式支持业务与HUKS建立端到端的加密传输通道,将密钥安全加密导入到HUKS中,确保导入传入过程中密钥不被泄露,适用于高安敏感业务。相较于明文导入,加密导入步骤更多,密钥材料更复杂。

  • 推荐使用该方式导入的密钥类型:对称密钥、非对称密钥对。

下图为加密导入密钥开发时序图。

加密导入密钥开发顺序图

根据开发流程,在导入加密密钥过程中,需要依次调用HUKS的能力包括:

  • 生成非对称密钥对并导出公钥,用于设备间密钥协商。
  • 生成对称密钥,用于加密待导入密钥。
  • 使用对称密钥加密待导入密钥,形成密钥密文。
  • 导入加密密钥。
  • 删除密钥。

导出密钥接口返回的公钥明文材料是按照X.509格式封装,导入加密密钥接口中的密钥材料需满足LengthData-Data的格式封装,形如:[(Lengthpart1Datapart1)……(LengthpartnDatapartn)]。

说明:

  1. 加密导入密钥时,协商算法支持ECDH和X25519,协商后的Shared_Key使用AES-GCM算法加密Caller_Kek。对应算法套件定义见HuksUnwrapSuite。
  2. 加密导入不支持X.509格式。
  3. 轻量级设备只支持明文导入,不支持加密导入。

加密导入密钥材料格式

内容长度
业务公钥长度LCaller_Pk4字节
业务公钥Caller_PkLCaller_Pk字节
Shared_Key加密参数AAD2长度LAAD24字节
Shared_Key加密参数AAD2LAAD2字节
Shared_Key加密参数Nonce2长度LNonce24字节
Shared_Key加密参数Nonce2LNonce2字节
Shared_Key加密参数TAG2长度LTAG24字节
Shared_Key加密参数TAG2LTAG2字节
Caller_Kek密文长度LCaller_Kek_enc4字节
Caller_Kek密文Caller_Kek_encLCaller_Kek_enc字节
Caller_Kek加密参数AAD3长度LAAD34字节
Caller_Kek加密参数AAD3LAAD3字节
Caller_Kek加密参数Nonce3长度LNonce34字节
Caller_Kek加密参数Nonce3LNonce3字节
Caller_Kek加密参数TAG3长度LTAG34字节
Caller_Kek加密参数TAG3LTAG3字节
密钥明文材料长度的长度LTo_Import_Key_size4字节
密钥明文材料长度To_Import_Key_sizeLTo_Import_Key_size字节
To_Import_Key密文长度LTo_Import_Key_enc4字节
To_Import_Key密文To_Import_Key_encLTo_Import_Key_enc字节

支持的算法

以下为密钥导入支持的规格说明。

面向OpenHarmony的厂商适配密钥管理服务规格分为必选规格和可选规格。必选规格为所有厂商均支持的算法规格。而对于可选规格,厂商将基于实际情况决定是否实现,如需使用,请查阅具体厂商提供的说明,确保规格支持再使用。

建议开发者使用必选规格开发应用,可保证全平台兼容。

说明: 导入RSA密钥时,公钥必须大于或者等于65537。

标准设备规格

算法支持的密钥长度API级别是否必选规格
AES128、192、2568+是
RSA512、768、10248+否
RSA2048、3072、40968+是
RSA1024-2048(含),必须是8的倍数18+是
HMAC8-1024(含),必须是8的倍数8+是
ECC2248+否
ECC256、384、5218+是
ED255192568+是
X255192568+是
DSA512-1024(含),8的倍数8+否
DH20488+是
DH3072、40968+否
SM22569+是
SM41289+是
DES6418+是
3DES128、19218+是

轻量级设备规格

轻量级设备所列规格,OEM厂商将基于实际情况决定是否实现,如需使用,请查阅具体厂商提供的说明,确保规格支持再使用。

算法支持的密钥长度API级别
AES128、192、25612+
DES6412+
3DES128、19212+
RSA1024-2048(含),必须是8的倍数12+
HMAC8-1024(含),必须是8的倍数12+
CMAC12812+

导入密钥格式

HUKS支持导入密钥类型众多,各种不同类型对应的密钥格式不尽相同。下表归纳了HUKS导入密钥所支持的密钥类型及对应的密钥材料格式。

密钥类型算法导入格式
对称密钥-密钥字节数据
非对称密钥-密钥对-密钥对材料格式
非对称密钥-公钥ED25519、X25519密钥字节数据,参考X25519密钥公钥导入
非对称密钥-公钥RSA、ECC、ECDH、DSA、DH、SM2X.509规范的DER格式

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Universal Keystore Kit(密钥管理服务)

harmony 鸿蒙指定用户身份操作(仅对系统应用开放)

harmony 鸿蒙查询密钥是否存在(ArkTS)

harmony 鸿蒙查询密钥是否存在(C/C++)

harmony 鸿蒙通用密钥库基础概念

harmony 鸿蒙密钥删除(ArkTS)

harmony 鸿蒙密钥删除(C/C++)

harmony 鸿蒙加解密(ArkTS)

harmony 鸿蒙加解密(C/C++)

harmony 鸿蒙加密/解密介绍及算法规格

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/EWJ2BR