选择密钥算法
在创建证书授权机构 (CA) 之前,您必须为 CA 的后备 Cloud Key Management Service 密钥选择签名算法。Certificate Authority Service 允许您使用任何受支持的非对称签名算法,通过现有的 Cloud KMS 密钥创建 CA,或者从这些算法的较小子集中进行选择,并让该服务创建和管理密钥生命周期。
本页介绍了在确定 CA 的签名算法时必须考虑的因素。
算法系列
Cloud KMS 支持两类非对称签名操作算法:RSA 和 ECDSA。
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
变体,我们建议较新的层次结构使用 PSS
变体。否则,由于 PKCS1
变体支持范围更广,因此更适合选择。
ECDSA
虽然基于椭圆曲线的非对称密钥比 RSA 密钥相对较新,但过去十年中发布的许多最常见的技术栈仍支持它们。它们特别受欢迎,因为它们可以使用较小的密钥大小实现与 RSA 密钥类似的安全强度。使用 ECDSA 密钥的应用通过网络存储和传输的数据量会减少。
Cloud KMS 公开了 ECDSA 签名算法的两个主要变体:EC_SIGN_P256
和 EC_SIGN_P384
。
混合链
混合(或混合)链是指一个或多个证书使用不同密钥算法族的证书链,例如某些证书使用 RSA,而其他证书使用 ECDSA。某些技术栈在解析混合证书链时会遇到问题,并且在这些情况下可能会显示意外错误。此外,某些行业可能有合规性要求,要求 CA 链使用单个算法族。
通常,为 ECDSA 密钥设置的 CA 链与 RSA 密钥使用的 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:数字签名。
- 了解如何管理资源。