1、HUKS生成的密钥在什么情况下会消失或被清理
A:应用中调用huks.deleteKeyItem接口可以手动删除指定别名的密钥;当应用卸载后,应用存储在设备的安全环境对应的密钥会被自动销毁。
2、HUKS初始向量是否必须为随机数?对生成的密钥有什么影响
A:为了密钥的语义安全,初始向量必须为随机数,产生随机数的方法必须具有不可预测性。使用HUKS生成密钥时,HUKS_TAG_IV初始向量为可选参数;密钥加解密的过程中,设置特定参数时该初始向量必选。
3、并发场景下AES加密失败
A:如果使用HUKS相同密钥只用导入一次,系统会安全存储密钥,使用密钥别名进行密码学操作。如果不需要系统保存密钥的场景可以使用cryptoFramework。
4、sa加密公钥convertKey异常:401 invalid param
A:入参经过base64 encode转string,出参时未做base64 decode。
5、通用密钥库系统中,使用AES GCM算法进行操作,AAD可以为空吗
A:密钥管理服务中对于gcm分组模式实现,当前要求强制使用AAD进行消息完整性认证。
6、HUKS解密时,若明文包含中文字符,则解密后明文与原明文不一致
A:需要使用utf-8进行编解码,不然会出现乱码。
7、如何获取HarmonyOS签名证书的公钥信息
A:获取HarmonyOS签名可以参考指南手动签名章节,公钥用于给数据加密,用公钥加密的数据只能使用私钥解密,可以通过以下命令获取公钥信息:
openssl x509 -in xxx.cer -pubkey -noout
8、如何使用用户自定义的pin码(6到16位)进行密钥解锁
A:目前是支持该能力的,可以将HUKS_TAG_USER_AUTH_TYPE属性在使用PIN时要设置为HUKS_USER_AUTH_TYPE_PIN。
对于秘钥验证,只支持锁屏密码及生物特征的验证,支持密钥的用户身份认证访问控制:
-
对于高安敏感的业务密钥,需要在使用密钥的时候,再次要求用户即时的验证锁屏密码或生物特征,验证通过后,才能使用业务密钥。
-
对于非高安敏感的业务密钥,通过单独的密码验证(非锁屏密码),需要应用自己实现这个验证业务。
9、如何保存私钥等重要数据
A:可以通过密钥导入接口,将私钥导入到密钥管理服务进行管理,导入后密钥在安全环境(如TEE)使用,提升安全性。也可以通过关键资产存储服务加密保护,可参考Asset Store Kit(关键资产存储服务)。
10、huks.isKeyItemExist和huks.hasKeyItem的区别
A:如下
huks.isKeyItemExist:若密钥存在,data为true,若密钥不存在,则error中会输出密钥不存在的error code。开发者需要通过错误码判断密钥不存在,不符合逻辑习惯。建议使用hasKeyItem接口。
huks.hasKeyItem:若密钥存在,返回值为true,若密钥不存在,返回值为false。
更多详情查看:文档中心