diff --git a/zh-cn/device-dev/subsystems/subsys-security-huks-guide.md b/zh-cn/device-dev/subsystems/subsys-security-huks-guide.md index 419d372c21be943264e5038fbc2ca5bda5c24037..18db78e1c62cbe14f2939ac8491d9962e2814626 100644 --- a/zh-cn/device-dev/subsystems/subsys-security-huks-guide.md +++ b/zh-cn/device-dev/subsystems/subsys-security-huks-guide.md @@ -134,9 +134,9 @@ HUKS Core的初始化,一般用于初始化全局变量,比如全局线程
返回值 - - HKS_SUCCESS:成功 + - HKS_SUCCESS:成功,值为0,下同 - - 其他:失败 + - 其他:失败,值为负数,具体参考HksErrorCode枚举值定义,下同
- - - @@ -581,7 +581,7 @@ HUKS Core的销毁,一般用于释放全局变量,包括锁,销毁内存 - - - -#### checkkeyvalidity +#### CheckKeyValidity **接口描述** @@ -601,7 +601,7 @@ HUKS Core的销毁,一般用于释放全局变量,包括锁,销毁内存 用于校验密钥完整性接口的参数,默认传空

const struct HuksBlob *encKey - 待校验密钥完整性的密钥材料 + 待校验密钥完整性的密钥材料(密文)

@@ -1068,7 +1068,7 @@ HUKS Core的销毁,一般用于释放全局变量,包括锁,销毁内存 #### 代码目录 -HDI接口的适配在以下目录中: +1. HDI接口的适配在以下目录中: ```undefined //drivers_peripheral/huks @@ -1085,7 +1085,7 @@ HDI接口的适配在以下目录中: └── unittest # 单元测试 ``` -HUKS Core软实现的代码在以下目录中: +2. HUKS Core软实现的代码在以下目录中: ```undefined //base/security/huks/services/huks_standard/huks_engine @@ -1099,17 +1099,35 @@ HUKS Core软实现的代码在以下目录中: └── hks_core_service.c # HUKS Core详细实现 └── ... #其他功能代码 ``` +**注意事项!!!** + + HUKS Core软实现中存在硬编码相关敏感数据,包括根密钥、访问控制用的AuthToken密钥、加密AuthToken用的密钥、证书相关等,如设备开发者使用了相关代码,一定要替换成自有实现 + + - **根密钥** + + 用于加密HUKS业务密钥,一般由设备根密钥派生而来,HUKS Core软实现中硬编码在代码中,详细代码见hks_openssl_get_main_key.c + + - **访问控制用于对AuthToken做HMAC的密钥** + + 用于UserIAM对AuthToken进行HMAC,HUKS Core软实现中硬编码在代码中,值为"huks_default_user_auth_token_key",详细代码见hks_keyblob.c + + - **访问控制用于对AuthToken敏感字段加密的密钥** + + 用于UserIAM对AuthToken敏感字段进行加密的密钥,HUKS Core软实现中硬编码在代码中,值为"huks_default_user_auth_token_key",详细代码见hks_keyblob.c + + - **根证书、设备CA、设备证书** + 用于密钥证明,一般由设备证书管理模块预置在硬件设备安全存储当中,HUKS Core软实现中硬编码在代码中,详细代码见dcm_certs_and_key.h #### 适配样例 -下文以HUKS Core中的密钥会话Init\Update\Finish接口适配作为一个样例,介绍基本流程。详细代码参考[HUKS源码目录](https://gitee.com/openharmony/security_huks) +下文以HUKS Core中的密钥会话Init\Update\Finish接口适配作为一个样例,介绍基本流程,仅供参考不可实际运行,实际可运行代码参考[HUKS源码目录](https://gitee.com/openharmony/security_huks) 1. 创建一个句柄,通过这个句柄在session中存储密钥操作相关的信息,使得外部可以通过这个句柄分多次进行同一密钥操作。 ```c - //三段式Init接口 + //密钥会话Init接口 int32_t HksCoreInit(const struct HuksBlob *key, const struct HuksParamSet *paramSet, struct HuksBlob *handle, struct HuksBlob *token) @@ -1180,7 +1198,7 @@ HUKS Core软实现的代码在以下目录中: 2. 在执行密钥操作前通过句柄获得上下文信息,执行密钥操作时放入分片数据并取回密钥操作结果或者追加数据。 ```c - //三段式Update接口 + //密钥会话Update接口 int32_t HksCoreUpdate(const struct HuksBlob *handle, const struct HuksParamSet *paramSet, const struct HuksBlob *inData, struct HuksBlob *outData) { @@ -1195,7 +1213,7 @@ HUKS Core软实现的代码在以下目录中: uint64_t sessionId; struct HuksKeyNode *keyNode = NULL; - //根据handle获取本次三段式操作需要的上下文 + //根据handle获取本次密钥会话操作需要的上下文 int32_t ret = GetParamsForUpdateAndFinish(handle, &sessionId, &keyNode, &pur, &alg); if (ret != HKS_SUCCESS) { HKS_LOG_E("GetParamsForCoreUpdate failed"); @@ -1246,7 +1264,7 @@ HUKS Core软实现的代码在以下目录中: 3. 结束密钥操作并取回结果,销毁句柄。 ```c - //三段式Finish接口 + //密钥会话Finish接口 int32_t HksCoreFinish(const struct HuksBlob *handle, const struct HuksParamSet *paramSet, const struct HuksBlob *inData, struct HuksBlob *outData) { @@ -1261,7 +1279,7 @@ HUKS Core软实现的代码在以下目录中: uint64_t sessionId; struct HuksKeyNode *keyNode = NULL; - //根据handle获取本次三段式操作需要的上下文 + //根据handle获取本次密钥会话操作需要的上下文 int32_t ret = GetParamsForUpdateAndFinish(handle, &sessionId, &keyNode, &pur, &alg); if (ret != HKS_SUCCESS) { HKS_LOG_E("GetParamsForCoreUpdate failed"); @@ -1316,7 +1334,7 @@ HUKS Core软实现的代码在以下目录中: 对于每个HDI接口,[接口说明](#接口说明)都提供了对应的JS接口。可以通过调用JS接口组合来验证对应的HDI接口的能力,也可以通过完整的密钥操作来验证接口的能力。 -JS测试代码示例如下,如果整个流程能够正常运行,代表HDI接口能力正常。更多的密钥操作类型请见[huks-guidelines.md](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/huks-guidelines.md)。 +JS测试代码示例如下(仅供参考),如果整个流程能够正常运行,代表HDI接口能力正常。更多的密钥操作类型和完整样例请见[huks-guidelines.md](../../application-dev/security/huks-guidelines.md)。 **AES生成密钥和加密**