签名/验签介绍及算法规格
为实现数据完整性保护和防抵赖,可使用生成/导入的密钥,对数据进行签名验签操作。
从API 23开始支持群组密钥特性。
支持的算法
以下为密钥签名/验签支持的规格说明。
手机、平板、PC/2in1设备、TV、智能穿戴规格
| 算法/摘要算法/填充模式 | 备注 | API级别 |
|---|---|---|
| RSA/SHA256/PKCS1_V1_5 RSA/SHA384/PKCS1_V1_5 RSA/SHA512/PKCS1_V1_5 RSA/SHA256/PSS RSA/SHA384/PSS RSA/SHA512/PSS | 对于PSS模式,salt长度支持设置为摘要长度和最大长度(最大长度=密钥长度-摘要长度-2),对应枚举值详见HuksRsaPssSaltLenType。 | 8+ |
| RSA/NoDigest/PKCS1_V1_5 | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE。由业务对明文做哈希,再将哈希后的数据传入,哈希后的数据长度必须满足RSA签名验签支持的摘要算法规格。 | 9+ |
| RSA/NoDigest/NoPadding | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE。明文长度必须等于密钥长度。 | 20+ |
| ECC/SHA256 ECC/SHA384 ECC/SHA512 | 签名是ASN1格式。 ECC算法支持的椭圆曲线函数包括:P-256、P-384、P-521。 | 8+ |
| ED25519/NoDigest | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE。 | 8+ |
| SM2/SM3 | 签名是ASN1格式。 | 9+ |
| SM2/NoDigest | 签名是ASN1格式。 NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE。由业务对明文做SM3哈希,再将哈希后的数据传入,哈希后的数据长度必须满足SM2签名验签支持的摘要算法规格。 | 22+ |
轻量级智能穿戴规格
| 算法/摘要算法/填充模式 | 备注 | API级别 |
|---|---|---|
| RSA/SHA256/PKCS1_V1_5 | - | 12+ |
| RSA/SHA256/PSS | - | 12+ |
| RSA/SHA1/ISO_IEC_9796_2 | 数据最小长度=密钥长度-21字节 | 12+ |
| RSA/NoDigest/NoPadding | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE。明文长度必须等于密钥长度。 | 20+ |
智能穿戴设备规格
| 算法/摘要算法/填充模式 | 备注 | API级别 |
|---|---|---|
| RSA/SHA1/ISO_IEC_9796_2 | 只支持密钥长度1024~2048(含1024和2048,且必须是8的整数倍),数据最小长度=密钥长度-21字节。 | 16+ |
携带认证信息的签名类型
适用场景:当使用含有数字盾密码认证的密钥进行签名时,可以选择携带认证信息的签名类型,会在原始数据之前附加41字节认证信息后,再进行签名操作。认证信息会附加在签名前一起返回。验签时需将同样认证信息附加在原始数据前,再执行验签操作。从前到后依次为:
认证信息格式:4字节的版本号、4字节的用户认证类型、32字节的匿名化AuthId和1字节的是否校验数据哈希。
注意事项:AuthId包含匿名化处理过的身份信息,使用该接口时,开发者需在其隐私政策中对此匿名化数据的使用目的、存留策略和销毁方式进行说明。
使用方法:在签名的参数集中加上参数HUKS_TAG_KEY_SECURE_SIGN_TYPE,此参数的值请参考HuksSecureSignType。