密钥长度 (Key Size)
定义
密钥长度是密钥的位数,其安全含义取决于算法,例如 256 位的 ECDSA 密钥比 2048 位的 RSA 密钥更强。
密钥长度衡量的是密钥有多少位,但不同算法之间的位数不能直接比较。按 NIST SP 800-57 的评估,RSA 2048 约相当于 112 位安全强度,RSA 3072 约 128 位;而 P-256 曲线上的 ECDSA 同样约 128 位,P-384 约 192 位。AES-128、AES-256 这类对称算法又是另一套尺度,密钥位数大致就等于安全强度。
为什么重要
CA/浏览器论坛基线要求规定公共信任证书的 RSA 模数至少 2048 位,RSA 2048 和 ECDSA P-256 是 TLS 服务器密钥的常见选择。RSA 密钥越大,每次握手时服务器的签名开销越高;椭圆曲线密钥小而快,所以很多站点更愿意用 ECDSA。CA 自己的密钥往往更长,因为寿命更久:Let's Encrypt 的 Generation Y 根证书分别是 RSA-4096(ISRG Root YR)和 ECDSA P-384(ISRG Root YE)。国密 SM2 也是 256 位的椭圆曲线算法。无论多长的 RSA 或 ECDSA 密钥都挡不住足够大的量子计算机,这正是后量子密码出现的原因。
例子
openssl x509 -in example.com.crt -noout -text | grep "Public-Key"
# Public-Key: (2048 bit)
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out rsa3072.key
常见误区
- 256 位 ECC 比 2048 位 RSA 弱。 恰恰相反,两种位数衡量的不是同一件事。
- 越长越好。 RSA 8192 会明显拖慢握手而收益有限,一般选 RSA 2048/3072 或 ECDSA P-256/P-384 即可。
- "256 位加密"指的是证书。 这类宣传通常指会话协商出的对称加密算法,而不是证书密钥。