RSA既是非对称加密算法又是数字签名算法。但是,近年来,由于前向机密性,许多加密协议(例如TLS)已不再使用RSA而是更喜欢使用ECC。

所以,我的问题是,我们仍然需要吗? RSA?

更具体地讲,如果上述答案是否定的,那么在任何情况下RSA都比ECC方案更适合吗?从实用角度来看,为什么仍在使用它?

#1 楼

简介:ECC +对称算法几乎可以完成RSA +对称算法通常所做的任何事情(加上RSA难以解决的前向保密问题)。但是RSA通常在正确的时候有时是首选,尤其是由于它在公共密钥方面的优越性能。


在常见的安全级别,公共密钥RSA操作(用于签名验证以及公共密钥加密的加密方面)仍然比基于ECC的任何东西都具有更高的计算效率。在某些应用程序中,这是一个优点,其中包括:对于数字证书的签名:仅生成一次,就可以在其有效生命周期中被验证数百万次。它的签名成本可以完全忽略,而证书用户节省的功率或/和时间变得相当大。这就是为什么CA通常使用RSA公钥/私钥对的原因。用于由功率不足的设备(IoT)进行数据(包括代码)签名验证。
对于由功率不足的设备(IoT)进行的非对称加密,并辅以用于大密文的对称加密。

举例说明:$ e = 3 $,在具有32×32→64位乘法的CPU上,具有$ n $位公共模数的简单RSA签名验证使用大约$ 4(n / 32)^ 2 $乘法(例如,

此外,具有消息恢复功能的RSA签名有时可以最大程度地减少签名的开销。例如。对于要传输的350字节有效负载,请签名,该签名的消息是


符合ISO / IEC 9796-2方案3的带有RSA-3072的384字节和带有ECPVS(ANS X9.92-1)的SHA-256
398字节和带有ECDSA的SHA-256
414字节/ EdDSA和SHA-256

因此,当大小受到硬限制时,具有消息恢复功能的RSA签名可能是唯一的选择。诚然,这仅适用于较小的大小间隔:增益是哈希大小的一小部分,因此对于较大的有效负载成比例地可忽略不计,而对于较小的有效负载则ECC获胜(因为RSA密码具有公共模数的大小)。碰巧RSA获胜的时间间隔接近2D码(例如QR码)的最大实际容量。它发光:确定性的,保留大小的公共密钥加密。

答案指出了RSA仍被广泛使用的其他实际原因。

评论


$ \ begingroup $
RSA背后的攻击分析历史也更长。目前,椭圆曲线在许多可量化的方式上似乎更强/更好,但几十年来研究人员对此并不多。
$ \ endgroup $
– JesseM
18年5月29日在18:30

$ \ begingroup $
@JesseM ECC比RSA年仅8岁。
$ \ endgroup $
– yyyyyyy
18年5月29日在23:28

$ \ begingroup $
@yyyyyyy:但是RSA成为主流算法的时间更长了,所以也许在它们都存在的很多年里它都受到了更多的关注。 (我不知道这是否成立;我不从事密码分析研究。)
$ \ endgroup $
– Peter Cordes
18年5月30日在11:32



#2 楼


所以,我的问题是,我们仍然需要RSA吗?是否存在无法用ECC方案代替的情况?


RSA用于签名生成。 ECDSA涵盖了签名生成。 RSA还允许通过(部分)消息恢复进行签名。很好,但是ECC的较小签名/密钥大小可以弥补大部分差异,即使不是全部也是如此。

RSA也可以用于直接加密和混合加密。 ECC不能直接用于对任何大小可比较的邮件进行加密。混合ECIES方案可以克服这一问题;较小的密钥大小通常仍会产生可比较的密文大小。

RSA实际上也可以用于前向保密,但是生成密钥对非常耗时(且很难保护),因此它成为一个可怕的选择。

因此,RSA可以做的任何事情都可以使用一种形式或其他形式的ECC来完成。



更具体地说,如果答案是以上是没有,在任何情况下RSA都比ECC更适合吗?从实用角度来看,为什么仍在使用它?


选择RSA的原因很多:


更快地进行公钥操作(重复fgrieu的回答);
在许多PKI(X)基础结构中都非常有用,包括长期证书;
更好的向后兼容性;
更多可用的实现;
使用密钥的操作更易于理解/实现;
以相同的位强度对量子计算机的攻击略微较弱;
使用密钥的操作不(很大程度上)取决于随机数生成器的安全性;
没有域达成一致或存储的参数(仅使用ASN.1就有3种对参数进行编码的方式);
陷阱更少(例如,验证公钥在曲线上);
更少的选择,例如域参数的类型,签名格式(纯格式或ASN.1编码)或密钥格式(压缩或未压缩);
IP权被滥用的可能性更少(我想,即使不是全部,大多数专利也会过期或不适用,但是...);
对于大多数用途仍然足够有效。


显然,密钥大小较小,可以提供256位安全性而又不需要令人讨厌密钥大小,密钥对生成的效率和简便性以及私钥操作仍然为使用ECC提供了很多诱因-但是仍然有很多东西支持RSA。您要求的实际/逻辑原因。 ECC周围存在很多精神上的不安全感,而RSA通常被很好地信任。管理层将继续使用RSA,因为它被认为是已知的安全选项。

评论


$ \ begingroup $
我还找到了ECC的同态加密方案,所以我想也已经涵盖了。但是,同态加密没有使用太多的功能,因此我将其省略。
$ \ endgroup $
–马腾·博德威斯♦
18年5月29日在13:34

$ \ begingroup $
选择诸如25519的曲线可以防止“公钥不在曲线上”的陷阱,而RSA似乎仍然有很多。昨天的这篇文章很好地总结了它们。
$ \ endgroup $
– Bartek Banachewicz
19年7月9日在8:14



#3 楼

保留格式是一种不常见的情况,但我不知道它的椭圆曲线变体。

RSA-DOAEP可以用于保留格式的加密方案(可能结合使用(使用循环遍历),只要可能的格式化值的空间大于密钥空间。

由于RSA密钥需要非常大的安全性,因此限制了非对称格式保存加密的用处,但我不知道已发表的椭圆曲线替代方法。

#4 楼

您可以使用经典的RSA和DH进行转发保密。

首选ECC的主要原因是它可以通过较小的密钥,较小的签名等提供相同级别的假定安全性。这意味着每次会话的成本低于使用传统的RSA / DH

出于某些原因,人们可能更喜欢RSA。


管理员可以任意选择密钥大小。借助ECDSA,管理员被迫从少数标准曲线中进行选择。
说到标准曲线,其中一些得到最广泛支持的曲线来自美国政府,而且有人怀疑美国政府可能会在一种打开后门的方式。
ECDSA有一个设计缺陷,即签名过程中不良的随机数生成器会损害长期私钥。虽然存在针对上述设计缺陷的修复程序,但要弄清所有涉及的实现是否都具有修复程序可能很困难。
每个人都支持RSA。并非所有人都支持ECDSA。节省两个单独的公共密钥的开销值得节省吗?
ECC存在着专利方面的问题。 RSA也获得了专利,但该专利于2000年到期。


评论


$ \ begingroup $
问题主要是关于椭圆曲线密码学,而不是关于ECDSA。一个人可能会认为,提问者承认可以做出现代明智的选择,例如Ed25519,而不是像ECDSA-nistp256这样的古老垃圾。这些都没有真正将RSA与椭圆曲线加密区分开来。
$ \ endgroup $
–吱吱作响的s骨
18年5月29日在15:24

$ \ begingroup $
他们将“实际实施的RSA”与“实际实施的ECC”区分开来。因此回答了OP的最终问题:“从实用的角度来看为什么仍在使用它”。如果我们有一个得到广泛支持的512位,确定性的ECC数字签名方案,但我们没有的话,那将是很好的。
$ \ endgroup $
– Peter Green
18年5月29日在15:39

$ \ begingroup $
X25519和Ed25519得到了广泛的支持和很好的理解,并且经过十年的部署,没有明显的相关专利,并且除了签名验证之外,还为所有事物提供了足够的高性能和高性能,如fgrieu所指出的。不需要“ 512位签名方案”:由于对较小的密码分析技术的抵制,Ed448足够多;如果您真的想要更接近512的数字,那么E-521上的EdDSA是显而易见的选择。如果唯一的答案是(4)“因为您正在使用的库支持RSA但不支持Ed25519”,那简直就是乞求这个问题。
$ \ endgroup $
–吱吱作响的s骨
18年5月29日在18:35

#5 楼

在一种非常普遍的情况下,RSA无法用ECC代替。在这种情况下,交易另一端的人拥有仅支持RSA的软件。缺乏兼容性注定了许多技术上更好的解决方案。