# security变更说明 ## cl.security.1 通用密钥库SystemCapability变更 **访问级别** 公开接口。 **变更原因** 通用密钥库为了满足未来mini平台算法能力扩展诉求,将加解密算法相关TAG的SystemCapability由SystemCapability.Security.Huks.Extension调整为SystemCapability.Security.Huks.Core。且由于mini平台算法能力较弱,部分算法当前返回不支持,待后续扩展。 **变更影响** 该变更为不兼容变更。 对接口所属的SystemCapability进行调整,对接口本身的使用方式无影响。 变更前: 相关接口的系统能力要求为“SystemCapability.Security.Huks.Extension”。判断设备是否支持本次变更涉及算法需使用canIUse("SystemCapability.Security.Huks.Extension")。 变更后: 相关接口的系统能力要求为“SystemCapability.Security.Huks.Core”。判断设备是否支持本次变更涉及算法需改为使用canIUse("SystemCapability.Security.Huks.Core")。 **起始 API Level** 12 **变更发生的版本** 从OpenHarmony SDK 5.0.0.39开始。 **变更的接口/组件** @ohos.security.huks模块中的加解密算法相关接口。详细接口如下: | 序号 | 接口名 | 接口说明 | | ---- | ------------------------- | ------------ | | 1 | huks.importKeyItem | 导入明文密钥 | | 2 | huks.importWrappedKeyItem | 导入加密密钥 | | 3 | huks.exportKeyItem | 导出密钥 | | 4 | huks.getKeyItemProperties | 获取密钥属性 | | 5 | huks.deleteKey | 删除密钥 | @ohos.security.huks模块中的相关枚举类型。详细如下: | 序号 | 枚举名 | 枚举说明 | | ---- | --------------------- | ----------------------------------------------------- | | 1 | HuksKeyPurpose | 表示密钥用途 | | 2 | HuksKeyDigest | 表示摘要算法 | | 3 | HuksKeyPadding | 表示补齐算法 | | 4 | HuksCipherMode | 表示加密模式 | | 5 | HuksKeySize | 表示密钥长度 | | 6 | HuksKeyAlg | 表示密钥使用的算法 | | 7 | HuksUnwrapSuite | 表示导入加密密钥的算法套件 | | 8 | HuksKeyStorageType | 表示密钥存储方式 | | 9 | HuksImportKeyType | 表示导入密钥的密钥类型 | | 10 | HuksRsaPssSaltLenType | 表示Rsa在签名验签、padding为pss时需指定的salt_len类型 | | 11 | HuksAuthStorageLevel | 表示生成或导入密钥时,指定该密钥的存储安全等级 | | 12 | HuksSendType | 表示发送Tag的方式 | | 13 | HuksTagType | 表示Tag的数据类型 | HuksTag中的枚举值。详细如下: | 序号 | 枚举值 | 枚举值说明 | | ---- | ---------------------------------------- | ------------------------------- | | 1 | HUKS_TAG_DIGEST | 表示摘要算法的Tag | | 2 | HUKS_TAG_SALT | 表示密钥派生时的盐值 | | 3 | HUKS_TAG_ITERATION | 表示密钥派生时的迭代次数 | | 4 | HUKS_TAG_AGREE_ALG | 表示密钥协商时的算法类型 | | 5 | HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | 表示密钥协商时的公钥别名 | | 6 | HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | 表示密钥协商时的私钥别名 | | 7 | HUKS_TAG_AGREE_PUBLIC_KEY | 表示密钥协商时的公钥 | | 8 | HUKS_TAG_DERIVE_KEY_SIZE | 表示派生密钥的大小 | | 9 | HUKS_TAG_IMPORT_KEY_TYPE | 表示导入的密钥类型 | | 10 | HUKS_TAG_UNWRAP_ALGORITHM_SUITE | 表示导入加密密钥的套件 | | 11 | HUKS_TAG_DERIVED_AGREED_KEY_STORAGE_FLAG | 表示派生密钥/协商密钥的存储类型 | | 12 | HUKS_TAG_RSA_PSS_SALT_LEN_TYPE | 表示rsa_pss_salt_length的类型 | | 13 | HUKS_TAG_ALL_USERS | 预留 | | 14 | HUKS_TAG_USER_ID | 表示当前密钥属于哪个userID | | 15 | HUKS_TAG_NO_AUTH_REQUIRED | 预留 | | 16 | HUKS_TAG_IS_ALLOWED_WRAP | 预留 | | 17 | HUKS_TAG_KEY_WRAP_TYPE | 预留 | | 18 | HUKS_TAG_KEY_ROLE | 预留 | | 19 | HUKS_TAG_IS_ASYNCHRONIZED | 预留 | | 20 | HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | 预留 | | 21 | HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | 预留 | **适配指导** SystemCapability.Security.Huks.Core为必选基础能力,SystemCapability.Security.Huks.Extension为可选扩展能力。当前SDK默认定义的device-define都包含SystemCapability.Security.Huks.Core必选能力,因此涉及Universal Keystore组件的功能代码原则上无需适配。但如果代码中涉及调用canIUse()方法对本次变更涉及算法支持情况进行判断,则应修改canIUse()方法传入的SystemCapability,同时参考资料,结合API level判断。 ## cl.security.2 @ohos.security.cryptoFramework 接口SysCap变更 **访问级别** 公开接口 **变更原因** 加解密算法库框架为了灵活适配不同平台,按照算法类型对接口重新划分SysCap。 **变更影响** 此变更为不兼容变更。 变更前: 加解密算法库框架所有接口的SysCap均是SystemCapability.Security.CryptoFramework。 (1)可以使用canIUse("SystemCapability.Security.CryptoFramework")判断设备是否支持加解密算法库能力。 (2)若自定义设备支持加解密算法库能力能力,只需在设备的能力集配置中配置SystemCapability.Security.CryptoFramework。 变更后: 加解密算法库框架按照算法类型对接口重新划分SysCap,如随机数相关接口SysCap变更为SystemCapability.Security.CryptoFramework.Rand。 (1)应该使用具体的Syscap判断设备的加解密算法库是否支持对应算法,如使用canIUse("SystemCapability.Security.CryptoFramework.Rand")判断设备的加解密算法库能力是否支持随机数能力。 (2)若自定义设备原本就支持加解密算法库能力,则需在设备的能力集配置中添加加解密算法库框架的所有SysCap,具体SysCap名见“变更的接口/组件”。 **起始 API Level** 12 **变更发生版本** 从OpenHarmony SDK 5.0.0.39 版本开始。 **变更的接口/组件** @ohos.security.cryptoFramework按照算法类型对接口重新划分SysCap,具体划分如下,其中序号为2到11的10个SysCap是新增的: | 序号 | SysCap名 | SysCap描述 | | ------- | ----- | ------ | | 1 | SystemCapability.Security.CryptoFramework | 原有的SysCap,变更后不包含任何算法能力,仅包含公共能力 | | 2 | SystemCapability.Security.CryptoFramework.Key | 密钥基础类型 | | 3 | SystemCapability.Security.CryptoFramework.Key.SymKey | 对称密钥 | | 4 | SystemCapability.Security.CryptoFramework.Key.AsymKey | 非对称密钥 | | 5 | SystemCapability.Security.CryptoFramework.Signature | 签名验签 | | 6 | SystemCapability.Security.CryptoFramework.Cipher | 对称、非对称加解密 | | 7 | SystemCapability.Security.CryptoFramework.KeyAgreement | 密钥协商 | | 8 | SystemCapability.Security.CryptoFramework.MessageDigest | 消息摘要 | | 9 | SystemCapability.Security.CryptoFramework.Mac | 消息验证码 | | 10 | SystemCapability.Security.CryptoFramework.Kdf | 密钥派生 | | 11 | SystemCapability.Security.CryptoFramework.Rand | 随机数 | **适配指导** (1)判断设备是否支持加解密算法库框架的随机数能力需使用canIUse("SystemCapability.Security.CryptoFramework.Rand"),其他算法类型类似。 (2)若自定义设备的能力集配置文件中包含了SystemCapability.Security.CryptoFramework,则需要添加此次变更新增的10个SysCap。