1 鸿蒙开发:Universal Keystore Kit 密钥管理服务 密钥使用介绍及通用流程-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发:Universal Keystore Kit 密钥管理服务 密钥使用介绍及通用流程

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-07-09 11:56 次阅读

密钥使用介绍及通用流程

为了实现对数据机密性、完整性等保护,可使用生成/导入的密钥,对数据进行密钥操作,比如:

  • [加密解密]
  • [签名验签]
  • [密钥协商]
  • [密钥派生]
  • 开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

本章节提供了以上常用密钥操作的示例,这部分示例均没有设置二次身份访问控制,如设置了密钥访问控制请参考[密钥访问控制]用法。

加密/解密介绍及算法规格

在HUKS中已经有密钥,需要对一段数据加密或是解密,均可以使用HUKS完成加密/解密操作。

支持的算法

以下为密钥加密/解密支持的规格说明。

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

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

算法/分组模式/填充模式备注API级别是否必选规格
AES/ECB/NoPadding AES/ECB/PKCS7-8+
AES/CBC/NoPadding AES/CBC/PKCS7 AES/CTR/NoPaddingIV参数必选8+
AES/GCM/NoPadding加密:Nonce参数必选 解密:Nonce、AEAD参数必选8+
RSA/ECB/NoPadding RSA/ECB/PKCS1_V1_5 RSA/ECB/OAEPOAEP填充模式支持的摘要算法:SHA256/SHA384/SHA5128+
SM4/ECB/NoPadding SM4/ECB/PKCS7 SM4/CBC/PKCS7CBC模式下 IV 参数必选, ECB模式不推荐使用9+
SM4/CTR/NoPadding SM4/CBC/NoPadding SM4/CFB/NoPaddingIV 参数必选12+
SM4/OFB/NoPaddingNonce 参数必选12+
SM2/-/NoPadding摘要算法SM311+

签名/验签介绍及算法规格

为实现数据完整性保护和防抵赖,可使用生成/导入的密钥,对数据进行签名验签操作。

支持的算法

以下为密钥签名/验签支持的规格说明。

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

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

算法/摘要算法/填充模式备注API级别是否必选规格
RSA/MD5/PKCS1_V1_5 RSA/SHA1/PKCS1_V1_5 RSA/SHA224/PKCS1_V1_5 RSA/SHA224/PSS-8+
RSA/SHA256/PKCS1_V1_5 RSA/SHA384/PKCS1_V1_5 RSA/SHA512/PKCS1_V1_5 RSA/SHA256/PSS RSA/SHA384/PSS RSA/SHA512/PSS-8+
RSA/NoDigest/PKCS1_V1_5NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
DSA/SHA1 DSA/SHA224 DSA/SHA256 DSA/SHA384 DSA/SHA512-8+
DSA/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
ECC/SHA1 ECC/SHA224-8+
ECC/SHA256 ECC/SHA384 ECC/SHA512-8+
ECC/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
ED25519/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE8+
SM2/SM3-9+

密钥协商介绍及算法规格

为了避免恶意第三方获取到保密信息,密钥本身是不可以直接在设备间传输的。一般情况下,会采取密钥协商的方式,安全地在双方(或多方)间共享密钥。密钥协商只会传输密钥的公钥部分,私钥仍存留在设备内,以保护数据的安全性和机密性。

两台设备间进行密钥协商,双方各准备一个非对称密钥,并互换非对称密钥的公钥,以对端公钥与己端私钥协商出一个密钥,该密钥在两台设备相同。

支持的算法

以下为密钥协商支持的规格说明。

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

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

算法备注API级别是否必选规格
ECDH协商密钥类型为ECC类型密钥8+
DH-8+
X25519-8+

密钥派生介绍及算法规格

在密码学中,密钥派生函数(Key derivation function,KDF)使用伪随机函数从诸如主密码或密码的秘密值中派生出一个或多个密钥。

支持的算法

以下为密钥派生支持的规格说明。

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

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

派生密钥是业务基于三段式得到密钥会话结果,业务可决定派生密钥是否由HUKS管理(即密钥不出TEE)亦或是业务独立管理。

算法/摘要派生密钥的算法/长度派生结果密钥可用算法/长度API级别是否必选规格
HKDF/SHA256AES/192-256AES/128/192/256 HMAC/8-1024 SM4/1288+
HKDF/SHA384AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
HKDF/SHA512AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA256AES/192-256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA384AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA512AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

QQ截图20240705211318.png

通用开发流程

HUKS基于密钥会话来操作数据,使用密钥时基于以下流程:

  1. (必选)初始化密钥会话[huks.initSession()]。 传入密钥别名和密钥操作参数,初始化一个密钥会话并获取会话句柄。其中密钥操作参数中必须包含对应密码算法所必须的参数,包括密码算法、密钥大小、密钥目的、工作模式、填充模式、散列模式、IV、Nonce、AAD等。
  2. (可选)分段操作数据[huks.updateSession()]。 当使用的数据过大(超过100K)或是部分密码算法有要求时,需要对数据进行分段操作。否则可跳过此步骤。
  3. (必选)结束密钥会话[huks.finishSession()]。 操作最后一段数据并结束密钥会话。

以上任一阶段中发生错误或不需要此次密钥操作数据,均需要取消会话[huks.abortSession()],终止密钥的使用。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 密钥
    +关注

    关注

    1

    文章

    138

    浏览量

    19753
  • 鸿蒙
    +关注

    关注

    57

    文章

    2339

    浏览量

    42805
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发Universal Keystore Kit密钥管理服务简介

    Universal Keystore Kit密钥管理服务,下述简称为HUKS)向业务/应用提供
    的头像 发表于 07-04 14:20 436次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b>简介

    鸿蒙开发Universal Keystore Kit密钥管理服务 通用密钥库基础概念

    在使用通用密钥库完成应用开发前,开发者需要了解以下相关概念,以下概念将贯穿整个开发过程。
    的头像 发表于 07-05 10:57 425次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>通用</b><b class='flag-5'>密钥</b>库基础概念

    鸿蒙开发Universal Keystore Kit密钥管理服务 密钥生成介绍及算法规格

    当业务需要使用HUKS生成随机密钥,并由HUKS进行安全保存时,可以调用HUKS的接口生成密钥
    的头像 发表于 07-04 21:50 342次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>密钥</b>生成<b class='flag-5'>介绍</b>及算法规格

    鸿蒙开发Universal Keystore Kit密钥管理服务 生成密钥ArkTS

    以生成DH密钥为例,生成随机密钥。具体的场景介绍及支持的算法规格
    的头像 发表于 07-05 15:17 316次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> 生成<b class='flag-5'>密钥</b>ArkTS

    鸿蒙开发Universal Keystore Kit密钥管理服务 生成密钥C、C++

    以生成ECC密钥为例,生成随机密钥。具体的场景介绍及支持的算法规格。
    的头像 发表于 07-06 10:48 1136次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> 生成<b class='flag-5'>密钥</b>C、C++

    鸿蒙开发Universal Keystore Kit密钥管理服务 密钥导入介绍及算法规格

    如果业务在HUKS外部生成密钥(比如应用间协商生成、服务器端生成),业务可以将密钥导入到HUKS中由HUKS进行管理密钥一旦导入到HUKS
    的头像 发表于 07-06 10:45 674次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>密钥</b>导入<b class='flag-5'>介绍</b>及算法规格

    鸿蒙开发Universal Keystore Kit 密钥管理服务 加密导入密钥 ArkTS

    以加密导入ECDH密钥对为例,涉及业务侧加密密钥的[密钥生成]、[协商])等操作不在本示例中体现。
    的头像 发表于 07-08 14:22 357次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> 加密导入<b class='flag-5'>密钥</b> ArkTS

    鸿蒙开发Universal Keystore Kit 密钥管理服务 密钥协商ArkTS

    以协商密钥类型为X25519 256,并密钥仅在HUKS内使用为例,完成密钥协商。
    的头像 发表于 07-10 09:22 317次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>密钥</b>协商ArkTS

    鸿蒙开发Universal Keystore Kit 密钥管理服务 密钥协商 C、C++

    以协商密钥类型为ECDH,并密钥仅在HUKS内使用为例,完成密钥协商。具体的场景介绍及支持的算法规格,请参考[密钥生成支持的算法]。
    的头像 发表于 07-10 14:27 347次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>密钥</b>协商 C、C++

    鸿蒙开发Universal Keystore Kit密钥管理服务 密钥派生介绍及算法规格

    在密码学中,密钥派生函数(Key derivation function,KDF)使用伪随机函数从诸如主密码或密码的秘密值中派生出一个或多个密钥
    的头像 发表于 07-11 16:30 327次阅读

    鸿蒙开发Universal Keystore Kit密钥管理服务 密钥派生C、C++

    以HKDF256密钥为例,完成密钥派生。具体的场景介绍及支持的算法规格,请参考[密钥生成支持的算法]。
    的头像 发表于 07-11 14:28 287次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> <b class='flag-5'>密钥</b>派生C、C++

    鸿蒙开发Universal Keystore Kit 密钥管理服务 HMAC ArkTS

    HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),是一种基于Hash函数和密钥进行消息认证的方法。
    的头像 发表于 07-12 18:22 631次阅读

    鸿蒙开发Universal Keystore Kit密钥管理服务 密钥证明介绍及算法规格

    HUKS为密钥提供合法性证明能力,主要应用于非对称密钥的公钥的证明。
    的头像 发表于 07-15 18:28 676次阅读

    鸿蒙开发Universal Keystore Kit 密钥管理服务 获取密钥属性ArkTS

    HUKS提供了接口供业务获取指定密钥的相关属性。在获取指定密钥属性前,需要确保已在HUKS中生成或导入持久化存储的密钥
    的头像 发表于 07-17 10:46 305次阅读

    鸿蒙开发Universal Keystore Kit 密钥管理服务 获取密钥属性C C++

    HUKS提供了接口供业务获取指定密钥的相关属性。在获取指定密钥属性前,需要确保已在HUKS中生成或导入持久化存储的密钥
    的头像 发表于 07-17 09:47 360次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密钥</b><b class='flag-5'>管理</b><b class='flag-5'>服务</b> 获取<b class='flag-5'>密钥</b>属性C C++