相比对称加密,非对称密钥通常用于在信任程度不对等的系统之间,实现数字签名验签或者加密传递敏感信息。
非对称密钥由一对公钥和私钥组成,他们在密码学上互相关联,其中的公钥可以被分发给任何人,而私钥必须被安全的保护起来,只有受信任者可以使用。阿里云支持主流的非对称密钥算法并且提供足够的安全强度,保证数据加密和数字签名的安全性。
KMS支持对非对称密钥类型的用户主密钥生成证书签名请求CSR(Certificate Signing Request)文件,证书申请者提交CSR给证书颁发机构后,证书颁发机构使用其CA私钥为用户签发数字证书。签发的数字证书可以用于安全电子邮件、安全终端保护、代码签名保护、可信网站服务、身份授权管理等。
非对称密钥的类型
算法 | 密钥规格 | 说明 | 用途 |
---|
算法 | 密钥规格 | 说明 | 用途 |
---|---|---|---|
RSA |
|
RSA非对称密码 |
|
ECC |
|
椭圆曲线密码(Elliptic Curve Cryptography) | 数字签名 |
SM2 | EC_SM2 | 标准GBT32918定义的椭圆曲线密码 |
|
数据加密
- 信息接收者将加密公钥分发给信息传送者。
- 信息传送者使用公钥对敏感信息进行加密保护。
- 信息传送者将敏感信息的密文传递给信息接收者。
- 信息接收者使用私钥将敏感信息的密文解密。
由于解密的私钥只有信息接收者可以使用,因此可以确保敏感信息的明文在传递过程中不被恶意者截获。这种敏感信息传递的方式,被广泛用于各类密钥交换场景。例如:在TLS中交换会话密钥、在不同的密码机之间导入导出加密密钥。
更多信息,请参见非对称数据加解密。
数字签名
- 验证数据的完整性(integrity):如果数据和签名不匹配,数据可能受到了篡改。
- 验证消息的真实性(authenticity):如果消息和签名不匹配,消息传送者不是真实持有私钥的用户。
- 为签名提供不可抵赖性(non-repudiation):如果数据和签名能够匹配,签名者不可以否认此签名。
- 签名者将验签公钥分发给消息接收者。
- 签名者使用签名私钥,对数据产生签名。
- 签名者将数据以及签名传递给消息接收者。
- 消息接收者获得数据和签名后,使用公钥针对数据验证签名的合法性。
数字签名被广泛用于数据防篡改、身份认证等相关技术领域。
- 案例1:数字签名用于对二进制代码提供完整性保护,代码执行者可以验证代码未被篡改,以提供可信的执行环境。
- 案例2:数字证书系统中,证书机构(CA)对颁发的数字证书提供签名,证明数字证书的主体信息、公私钥信息、密钥用途、有效期、签发者等信息。证书私钥持有者使用私钥对消息进行签名,消息接收者使用证书中包含的公钥对消息签名进行验证,同时使用证书签发者的公钥,验证证书本身的合法性。
更多信息,请参见非对称数字签名。
密钥版本
由于公私钥使用场景的特殊性,KMS不支持对非对称的用户主密钥进行自动轮转。您可以调用CreateKeyVersion接口,在指定用户主密钥中创建新的密钥版本,生成全新的一对公钥和私钥。如果您使用新的版本进行数字签名或者数据加密,则需要重新分发新版本的公钥。
除此之外,和对称类型的用户主密钥不同,非对称的用户主密钥没有主版本(PrimaryKeyVersion)的概念,因此使用非对称密码运算的接口除需指定用户主密钥标志符(或别名)之外,还需指定密钥版本。
公钥运算的方式
大多数情况下,公钥加密、公钥验签的操作,都可以调用GetPublicKey接口获取公钥,之后分发给公钥使用者。使用者在业务端通过OpenSSL、Java JCE等常用的密码运算库进行本地计算。
KMS也提供公钥运算的接口AsymmetricEncrypt和AsymmetricVerify,满足您的业务需求。和在业务端使用公钥本地运算相比,调用KMS的公钥运算接口可以帮助您更方便的记录调用日志,或者通过访问控制服务对公钥的使用场景进行一些限制,满足您的特定需求。
私钥运算的方式
您仅能通过KMS提供的私钥运算的接口AsymmetricDecrypt和AsymmetricSign,来使用私钥进行数据解密或者数字签名。