当你想要创建RSA Key,应该选择长度为多少的呢?
截止至2023年,最佳长度仍然是 2048位 。
1024位
1024 位 RSA 证书已过时,浏览器不接受。
Firefox 2014 年停止接受 1024 位 RSA 证书。
证书颁发机构在 2014 年或之前停止提供 1024 位 RSA 证书。参见 GlobalSign。
1024 位 key 已被弃用,因为在给定小型数据中心(数千个 CPU 或数百个 GPU,可能几个月内)的情况下,它们可能会被破解。
2048 位
2048 位 RSA 证书是当前使用的公认规范。
由 CA 提供并由软件使用的默认基线。
最终也会被破解。不知道什么时候,但可能需要几十年。
将大小加倍需要更多数量级的计算能力才能破解。见问题how much stronger is RSA 2048 compared to 1024 。
3072位
为了 2030 年后的安全,建议使用 3072 位 RSA key 。
NIST 为 3072 位 RSA key 分配了 128 位的“有效强度”,而 2048 位 key 为 112 位。这意味着破解这样的 key 需要大约 216 的计算量。
截至 2022 年,只有不到 10% 的受访网站使用 3072 位 key ,而 85% 的网站仍在使用 2048 位 key 。
对于他们的扩展验证服务,一些 CA 不允许使用 2048 位 key 并且至少需要 3072 位 key 。
Let's Encrypt 将为 3072 位 key 颁发证书。 It has been proposed as the default
但反对意见从“2048 位就足够了”到“还不如达到 4096 位”不等。
4096位
虽然 4096 位 key 的大小很奇怪,但它可用并得到广泛支持。所有主要的 CA 都可以为 4096 位 RSA 颁发证书。
NIST 尚未估算 4096 位 key 的有效强度,但其他人建议值为 140,仅比 3072 位 key 强 4000 倍,有时被认为“不值得”。
计算成本与 key 大小不成线性关系。 4096 并不比 2048 慢两倍,处理速度可能慢 10 倍。 不要在不考虑性能影响的情况下盲目地将证书升级到 4096 位。
一般网站主要停留在 2048 位证书上,因为它们要承受大量流量,无法承受 4096 位的硬件成本。例如 Google、CloudFlare、NetFlix。
Note
另外,用户和攻击者的能力之间存在巨大的脱节。 服务器有一个(低功耗)CPU,攻击者却可以拥有整个数据中心。但是不用担心,因为RSA是经典的非对称加密算法,其核心思想很简单,一句话概括就是:求两个大数的乘积很容易,但将乘积分解为两个乘数很困难。
具体可以参见:RSA —— 经典的非对称加密算法斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字斜体文字