选择密钥算法

在创建证书授权机构 (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_PSSRSA_SIGN_PKCS1PSS 变体使用 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_P256EC_SIGN_P384

混合连锁店

混合(或混合)链是一种证书链,其中一个或多个证书使用不同的密钥算法系列,例如某些证书中的 RSA 以及其他证书中的 ECDSA。某些技术栈在解析混合证书链时会遇到困难,并且可能会在这些情况下显示意外错误。此外,某些行业可能有合规性要求,要求 CA 链使用单个算法系列。

与用于 RSA 密钥的 CA 链相比,通常为 ECDSA 密钥设置单独的 CA 链。

键大小

虽然较大的密钥大小(同一系列内)可提供更高的安全强度,但也会导致通过网络存储和传输更多数据。此外,如果密钥大小越大,加密和签名操作有时可能需要更长的时间,不过这个时间通常太小,让人无法注意。

通常的做法是让有效期更长的密钥(例如与根 CA 或长期存在的从属 CA 关联的密钥)使用比其他密钥具有更高安全强度的密钥大小。

决策指南

您可以借助以下简单指南为 CA 密钥选择合适的签名算法:

  1. 选择算法系列

    如果您要创建连接到现有根 CA 的从属 CA 链,请使用与根 CA 相同的系列。

    如果您要创建新的根 CA,但需要使用不支持 ECDSA 的旧版系统,请使用一种 RSA 签名算法

    否则,请使用一种椭圆曲线签名算法

  2. (仅限 RSA)选择签名算法

    如果您希望使用不支持 PSS 的旧版库或框架,请使用其中一种 RSA_SIGN_PKCS1 算法。

    否则,请使用 RSA_SIGN_PSS 算法之一。

  3. 选择密钥大小

    对于预计生命周期达到数年的新根 CA 或从属 CA,我们建议您使用该算法系列可用的最大密钥大小。

    • 对于 RSA,支持的最大密钥大小为 4096 位。
    • 对于 ECDSA,支持的最大密钥大小为 384 位。

    对于生命周期较短的从属 CA,使用较小的密钥大小就足够了,例如,对于 RSA,使用 2048 位;对于 ECDSA,使用 256 位。

后续步骤