我环顾四周,只看到使用 RSA2048 进行 Root 签名的网站,以及一些使用 ECC 进行加密的网站。
人们似乎没有将 ECC 用于 TLS 根签名有什么原因吗?
将 ECC 用于 X.509 有什么缺点吗?- 如果确实有可能?
我环顾四周,只看到使用 RSA2048 进行 Root 签名的网站,以及一些使用 ECC 进行加密的网站。
人们似乎没有将 ECC 用于 TLS 根签名有什么原因吗?
将 ECC 用于 X.509 有什么缺点吗?- 如果确实有可能?
赛门铁克高级技术总监兼杰出工程师 Rick Andrews 在 NIST 上有一个幻灯片,题为Symantec 对网络上 ECDSA 现状的看法(2015 年出版),提供了深刻的见解:
是什么阻碍了 ECDSA 证书的市场?
- 2003 年 NSA-Certicom 许可证并未缓解法律/知识产权问题
- 斯诺登之后对Suite B曲线选择的不信任,尤其是在欧洲
- 缺乏客户端支持(Windows XP 和智能电视和日本功能手机等非传统设备)
- RSA 没有被破坏;尝试新算法的风险;普遍缺乏认识
- Web 服务器缺乏双栈支持(Apache 除外 - 请参阅 http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#comment_970)
- 支持 ECDHE 的客户端可能没有 ECDSA 根;服务器很难知道
- ECDSA 根可能未启用 EV
- 客户端性能损失(对于常用密钥大小的签名验证,ECDSA 比 RSA 慢)
- “听说 ECDSA 有一些技术问题”——(如果没有选择加密安全的随机整数,则可以确定私钥)
新曲线的影响
- 如果 IP 问题没有得到解决,影响可能会减弱
- CA 需要在其 HSM 和软件工具包中获得支持
- CA 很可能会使用现有 P256 或 P-384 根从新曲线签署密钥,以避免延迟使用新曲线部署根
- 使用现有的 RSA 根或中间体进行签名会带来 IP 风险,但可以缓解根普遍性问题
- 尽管 CA 最初可能不会使用新曲线创建中间 CA 证书,但我们需要执行密钥拥有证明。通常通过检查 CSR 上的签名来完成,需要 CA 的 HSM 和软件工具包中支持新的密钥曲线。
- 浏览器和网络服务器供应商必须支持新曲线
TL;DR: ECC 在技术上没有任何问题。事实上,它比 RSA 具有更好的带宽和服务器 CPU 负载(但浏览器上的 CPU 负载更高,感谢@CodesInChaos),但由于历史原因,它只是有点没有被采用。
免责声明:我为 Entrust Datacard 工作
Entrust 是公开信任的 CA 之一,我们为 RSA SHA-1、RSA SHA-2 和 ECC P-384 提供了单独的公开信任 PKI(根 + 中间体)。请参阅Entrust 根证书下载页面。
该页面上的兼容性表还回答了您关于 ECC 为何从未真正起飞的问题:客户端/浏览器/操作系统采用 ECC 的速度很慢。有一段时间 NIST 和其他机构敦促人们迁移到 ECC,但由于向后兼容性问题,网站管理员犹豫不决。现在,尽管今天几乎所有东西都理解 ECC,但它只是从未起飞。
此外,NSA 一直是 ECC 的主要推动者之一,但在 2015 年 8 月,他们发表了一份声明(来源:维基百科):
“不幸的是,椭圆曲线使用的增长与量子计算研究的持续进展相悖,因此需要重新评估我们的密码策略。” NSA 建议:“对于那些尚未过渡到 Suite B 算法的合作伙伴和供应商,我们建议此时不要为此花费大量开支,而是为即将到来的抗量子算法过渡做准备。”
因此,任何仍在考虑从 RSA 迁移到 ECC 的人现在都没有理由花费这些精力。
使用 ECDSA 的根证书签名并不常见,因为大多数根证书包含 RSA 公钥,而不是 ECC 公钥。此外,由于必须在客户端设备上安装根证书,因此更新证书和/或添加新证书具有其后勤挑战。但是,正如 Mike Ounsworth 在他的回答中指出的那样,有些根证书具有 ECC 公钥,例如Entrust Root Certificate Authority—EC1证书。