ecdsa 和rsa
RSA与ECC比较。 使用包裹在Docker映像中的certbot和acme.sh客户端颁发LetsEncrypt证书。 Nginx设置

目录
- RSA与ECC比较。 为什么您可能需要ECDSA证书?
- 如何使用
openssl
生成RSA和EC密钥/ CSR。 - 什么是LetsEncrypt CA ? 如何以自动方式颁发免费的域验证证书?
- 如何通过Docker映像生成RSA和/或ECDSA证书,同时仍然在后台使用certbot和acme.sh客户端?
- 如何为RSA / ECDSA混合设置配置和测试Nginx?
RSA与ECC比较
RSA是最流行的公共密钥加密算法。 带有RSA密钥的证书是黄金标准,也是当前Internet PKI 安全性的体现 。 这是一种古老且经过考验的技术 ,从安全角度来看,这非常重要。 椭圆曲线密码术是当前RSA标准上公钥密码术的另一种方法。
RSA算法可用于加密和数字签名,而ECC仅可用于签名。
密钥的安全性取决于其大小和算法。 一些算法比其他算法更容易破解。 破解RSA密钥需要考虑两个大数的乘积。 破解ECC密钥需要找到椭圆曲线上各点之间的离散对数,到目前为止,尚无进展。
对于相同的安全级别,算法需要不同的密钥大小。 ECC可以使用较小的密钥。 这是密钥大小比较表:
+----------------------+-----------------+--------------------+
| Symmetric Key length | RSA key length | ECC key length |
+----------------------+---------- ------+--------------------+
| 80 | 1024 | 160 |
| 112 | 2048 | 224 |
| 128 | 3072 | 256 |
| 192 | 7680 | 384 |
| 256 | 15360 | 512 |
+----------------------+-----------------+--------------------+
例如,256位ECC密钥等效于RSA 3072位密钥,可提供128位安全性:

较小的密钥用于生成签名的计算量较小,因为数学涉及较小的数字。 但是,虽然ECC在签名生成方面更快,但在签名验证方面却比RSA慢。 让我们使用openssl作为基准测试工具来进行测量:
$ openssl speed ecdsap256 rsa2048
sign/s verify/s
rsa 2048 bits 679.0 23489.0
256 bit ecdsa (nistp256) 15581.9 6211.7
较小的ECC公钥意味着较小的证书大小-传递的数据更少,下载更快,TLS握手更快 。
如果需要更高的安全性,则RSA无法很好地扩展-必须将RSA模数大小的增加速度远远快于ECDSA曲线的大小。 1024位RSA密钥已过时,而2048是当前标准大小。 如果您需要走的更远,您将陷入困境。 首先,如果CA不提供4096位RSA密钥链,则用2048个RSA中介对您自己的4096位RSA密钥进行签名是没有意义的。 其次,请注意,RSA私钥的每增加一倍,TLS握手性能就会下降大约6到7倍。 因此,如果需要更高的安全性,请选择ECC。
尽管ECC有一些好处,但也有一些缺点。 该技术还没有像RSA那样成熟和经过测试。 并且存在兼容性问题,但是似乎可以在大多数操作系统和现代浏览器上使用。 请查看这些资源以获取ECC兼容性详细信息 。
那里有很多椭圆曲线。 主流浏览器中最受欢迎和支持的是P-256,P-384,P-521,x25519。 虽然P-256和P-384是NIST Suite B算法的一部分,但P-521和x25519不是。 谷歌浏览器下降支持了P-521曲线 ,