选择密钥算法
在创建证书授权机构 (CA) 之前,您必须为 CA 的后备 Cloud Key Management Service 密钥选择签名算法。Certificate Authority Service 允许使用任何受支持的非对称签名算法创建具有现有 Cloud KMS 密钥的 CA,或者从这些算法的较小子集中进行选择,并让服务创建和管理密钥生命周期。
本页介绍了在决定 CA 的签名算法时必须考虑的因素。
算法系列
Cloud KMS 支持使用两系列算法进行非对称签名操作:RSA 和 ECDSA。
RSA
由于基于 RSA 的签名方案存在时间限制,基于 RSA 的签名方案在多个平台上具有广泛的兼容性。如果您需要支持使用旧版操作系统、协议、固件或其他技术栈的客户端,那么 RSA 是一种常见选择。
Cloud KMS 公开了 RSA 签名算法的两个主要变体:RSA_SIGN_PSS
和 RSA_SIGN_PKCS1
。PSS
变体使用 RFC 8017 第 8.1 节中所述的 RSASSA-PSS 签名方案,该方案版本较新,安全性更高。PKCS1
变体使用 RFC 8017 的第 8.2 节中所述的较旧的 PKCS#1 v1.5 签名方案。
我们建议较新的层次结构使用 PSS
变体(如果可能使用这些证书的所有应用都支持该变体)。否则,PKCS1
变体由于支持更广泛,是更合适的选择。
ECDSA
虽然基于椭圆曲线的非对称密钥比其对应的 RSA 密钥相对更新,但过去十年来发布的许多最常见的技术堆栈仍然支持此类密钥。此类密钥尤为受欢迎,因为它们使用较小的密钥大小可实现与 RSA 密钥相近的安全强度。使用 ECDSA 密钥的应用会通过网络传输和存储的数据量减少。
Cloud KMS 公开了 ECDSA 签名算法的两个主要变体:EC_SIGN_P256
和 EC_SIGN_P384
。
混合连锁店
混合(或混合)链是一种证书链,其中一个或多个证书使用不同的密钥算法系列,例如某些证书中的 RSA 以及其他证书中的 ECDSA。某些技术栈在解析混合证书链时会遇到困难,并且可能会在这些情况下显示意外错误。此外,某些行业可能有合规性要求,要求 CA 链使用单个算法系列。
与用于 RSA 密钥的 CA 链相比,通常为 ECDSA 密钥设置单独的 CA 链。
键大小
虽然较大的密钥大小(同一系列内)可提供更高的安全强度,但也会导致通过网络存储和传输更多数据。此外,如果密钥大小越大,加密和签名操作有时可能需要更长的时间,不过这个时间通常太小,让人无法注意。
通常的做法是让有效期更长的密钥(例如与根 CA 或长期存在的从属 CA 关联的密钥)使用比其他密钥具有更高安全强度的密钥大小。
决策指南
您可以借助以下简单指南为 CA 密钥选择合适的签名算法:
选择算法系列
如果您要创建连接到现有根 CA 的从属 CA 链,请使用与根 CA 相同的系列。
如果您要创建新的根 CA,但需要使用不支持 ECDSA 的旧版系统,请使用一种 RSA 签名算法。
否则,请使用一种椭圆曲线签名算法。
(仅限 RSA)选择签名算法
如果您希望使用不支持 PSS 的旧版库或框架,请使用其中一种
RSA_SIGN_PKCS1
算法。否则,请使用
RSA_SIGN_PSS
算法之一。选择密钥大小
对于预计生命周期达到数年的新根 CA 或从属 CA,我们建议您使用该算法系列可用的最大密钥大小。
- 对于 RSA,支持的最大密钥大小为 4096 位。
- 对于 ECDSA,支持的最大密钥大小为 384 位。
对于生命周期较短的从属 CA,使用较小的密钥大小就足够了,例如,对于 RSA,使用 2048 位;对于 ECDSA,使用 256 位。
后续步骤
- 了解 Cloud KMS:密钥用途和算法。
- 了解 Cloud KMS:数字签名。
- 了解如何管理资源。