数字签名技术是非对称加密算法的另一种典型应用。数字签名分为签名和验证两个过程,消息发送者使用私钥对数据签名,消息接收者使用公钥进行签名验证。
由于签名是使用私钥加密产生,而私钥不公开,这使得签名具有唯一的特征,广泛用于数据防篡改、身份认证等相关技术领域。
场景拓扑图
操作流程
- 信息发送者通过KMS控制台或者调用CreateKey接口,创建一个非对称的用户主密钥(CMK)。
- 信息发送者通过调用KMS的getPublicKey接口获取到公钥,并将公钥分发给消息接收者。
- 信息发送者通过调用KMS的asymmetricSign接口,使用创建的CMK私钥对需要传输的数据生成签名。
- 信息发送者将签名和数据传递给信息接收者。
- 信息接收者拿到签名和数据之后,在本地通过gmssl、openssl、密码库、KMS 的国密 Encryption SDK 等验签方法,使用信息发送者分发的公钥进行验证。特殊需求场景下,也可调用KMS的asymmetricVerify接口,使用CMK进行签名校验。
相关API
您可以调用以下KMS API,完成对数据的签名验签处理。
API名称 | 说明 |
---|---|
createKey | 创建用户主密钥(CMK)。 |
getPublicKey | 获取非对称密钥的公钥,可用于离线验证数字签名,或者加密数据。 |
asymmetricSign | 非对称密钥的私钥运算:产生数字签名。 |
asymmetricVerify | 非对称密钥的公钥运算:验证私钥产生的数字签名。 |