使用 CKA_SENSITIVE false 和 CKA_PRIVATE 作为 true 的对称密钥创建

问题描述

我正在使用云 HSM 服务,但在尝试创建具有以下属性的 AES 256 密钥时看到 CKA_ATTRIBUTE_INVALID 错误

CKA_TOKEN=0
CKA_SENSITIVE=0
CKA_PRIVATE=1
CKA_ENCRYPT=1
CKA_DECRYPT=1
CKA_SIGN=1
CKA_VERIFY=1
CKA_WRAP=1
CKA_UNWRAP=1
CKA_DERIVE=1
CKA_EXTRACTABLE=1
CKA_MODIFIABLE=0

因此出现错误: 状态:C_DeriveKey 返回错误。 (CKR_ATTRIBUTE_VALUE_INVALID)

我发现我是否将 CKA_SENSITIVECKA_PRIVATE 都作为 1 传递并创建了密钥。

我的问题是如何知道哪些是有效的属性组合?
有人可以指出我的文档吗? 我在标准 PKCS#11 规范指南中没有找到太多细节。

我将不胜感激!

干杯。

解决方法

据我所知,以下属性有错误的值:

CKA_SIGN=1
CKA_VERIFY=1

对称密钥不能用于签名。

这个值还有一些问题:

CKA_TOKEN=0

表示key是session对象,

CKA_SENSITIVE=0

表示密钥值是“可见的” - 它不安全。

根据我的经验:
尝试从模板中一一删除属性,您可以找出其中哪些是错误的。