只是为了建立关于RSA协议的符号,让$ n = pq $是两个大质数的乘积,而让$ e $和$ d $分别是公有和私有指数($ e $是$的倒数) d \ bmod \ varphi(n)$)。给定一个明文消息$ m $,我们得到密文$ c = m ^ e \ bmod n $;我们随后通过计算$ c ^ d \ bmod n $来解密密文。假设我正试图在计算能力低的设备上实现RSA,并且这些求幂时间太长。我决定通过为$ e $和$ d $选择较小的值(例如数十或数百)来使我的实现运行得更快。

是否有针对这种实现方式的有效攻击?

评论

$ e $和$ d $不能都很小。

#1 楼

首先,我必须指出,安全的RSA加密必须使用适当的填充,其中包括一些随机性。有关详细信息,请参见PKCS#1。也就是说,$ d $是“私有指数”,对$ d $和$ n $的了解足以解密消息。 $ n $是公开的(通过构建),因此$ d $必须不惜一切代价保持私有。如果它很小,那么攻击者可以简单地穷举$ d $的值。
更一般地说,如果$ d $的大小小于$ n $大小的0.29倍(以位为单位)那么就存在一种有效的密钥恢复攻击。公认的智慧是,试图使$ d $比$ n $小得多,这对安全性不是一个好主意。

另一方面,拥有小的$ e $没有问题,降至$ e = 3 $。实际上,使用您所描述的RSA,存在一个非常小的$ e $的问题:如果您使用$ e = 3 $并使用三个不同的公共密钥加密同一条消息$ m $,那么攻击者可以恢复$ m $。但这不是真的因为使用了小$ e $;而是由于未应用适当的填充。

评论


$ \ begingroup $
托马斯您好,由于使用数字3时受到攻击,我认为现在越来越多的人将Fermat的第四数字(0x010001或65537)用作公共指数。我知道这不太容易受到攻击,但是由于只设置了两位,因此计算的数量受到了限制。你同意吗?
$ \ endgroup $
–马腾·博德威斯♦
2012年1月20日15:19



$ \ begingroup $
@owlstead:我们使用的$ 65537 $大部分来自传统。 $ e = 3 $的“攻击”是由于缺少填充而引起的,而缺少padding则比这还要大得多:由于$ e = 3 $而造成实际的弱点(相比$ e = 65537) $),则必须彻底破坏算法(删除填充步骤),这会产生许多其他更大的弱点。使用适当的填充,$ e = 3 $没问题。但是,我默认使用$ 65537 $,因为它避免了问题,而且也不错。
$ \ endgroup $
–托马斯·波宁(Thomas Pornin)
2012年1月20日15:32

$ \ begingroup $
引用唐·科波史密斯(Don Coppersmith)1997年的论文“多项式方程的小解和低指数RSA漏洞”:“如果对手知道消息的三分之二,则指数3的RSA加密很容易受到攻击。”如果使用RSA-OAEP填充方案可能不会有问题,但是如果使用公共指数e = 3,则PKCS#1填充方案易受攻击。
$ \ endgroup $
– FaST4
18-2-1在9:41



#2 楼


是否有针对这种实现方式的有效攻击?


是的。您需要保持$ d $大于$ n = pq $的第4个根。否则,维纳的攻击可用于计算$ d $。

评论


$ \ begingroup $
$ d> n ^ {0.25} $是必需的,但还不够。 Boneh&Durfee证明$ d> n ^ {0.292} $是必要的,并建议可能需要进一步提高。故意选择$(p,q)$或/和$ e $,以便存在短的$ d $似乎是个坏主意。
$ \ endgroup $
–fgrieu♦
2012年1月20日15:36

#3 楼

您需要阅读一些最新的论文及其参考资料,以快速掌握这些攻击。尝试Nitaj的“新弱RSA密钥”和Maitra和Sarkar的“重新审视维纳的攻击-RSA中的新弱密钥”

请注意,如果您想加快速度,那肯定会更好解决方案要比尝试保持指数小。

#4 楼

除了针对小型公共指数的特殊案例分析攻击之外,由于部分密钥暴露,我不会使用较低的e值。请参阅“由于比特的小部分而公开RSA私钥。”:


我们的结果表明RSA,尤其是低公共指数RSA,很容易受到部分攻击。关键曝光。


编辑:添加引号

评论


$ \ begingroup $
什么?部分密钥暴露是极不可能发生的事件,并且$ e $的较大值甚至不能完全阻止此攻击。绝对不是选择$ e $的低价值的好理由。出于其他更重要的原因,选择一个较低的$ d $是个坏主意。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
13年4月25日在7:43

$ \ begingroup $
1.我反对低e,而不是反对。 2.从参考文献中可以看出,过去较低的'e'值已成功导致PKE。 3.是什么让您认为我正在争论选择低解密指数?
$ \ endgroup $
–staafl
13年4月25日在11:20



$ \ begingroup $
对不起,我的意思是这不是不为$ e $选择低价值的充分理由。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
13年4月25日在12:05

$ \ begingroup $
这是另一个原因。您似乎认为,PKE并不是“极不可能发生的事件”。几天前我看到了一个例子,除非您给我反对,否则我坚持我的观点。
$ \ endgroup $
–staafl
13年4月25日在15:23

$ \ begingroup $
我对这篇论文的最初理解是$ e $的价值没有实质性的变化-但是重新阅读后我意识到我可能错过了一些东西。在边通道泄漏$ d $的某些位的情况下,重构攻击仅在$ e $左右(最高$ \ sqrt {N} $)有效,这是否意味着我们应该始终选择随机的$ e \ gt \ sqrt {N} $? (这在实践中通常很困难,因为那里的许多实现仅支持$ e $的小值...)
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
13年4月26日在17:29

#5 楼

是的,您可以使用较小的公共指数(例如3个就可以了),只要您从未使用三个或三个具有指数3的RSA公共密钥加密同一明文即可。否则,可以提取明文的“哈斯塔德广播攻击” ,而无需考虑模数。

另外,如Jason S所指出的那样,确保私有指数足够大(如果素数是随机选择的,通常就是这种情况)。

评论


$ \ begingroup $
这是非常危险的建议。 Hastad的广播攻击仅在没有随机填充的情况下适用,并且当在RSA加密中不使用随机填充(或更糟糕的是根本没有填充)时,无论$ e $为何,其他许多事情都可能出错。相反,在RSA的任何应用中,如果需要担心$ e = 3 $(不符合某些权威机构的命令),则强烈表明$ e $以外的其他东西需要认真对待。改善。
$ \ endgroup $
–fgrieu♦
2014-2-26在18:32

#6 楼

hrishikeshp19建议重复平方,如果您还没有这样做,那么这是必不可少的。同样,“蒙哥马利乘法”也可以用来加速这些计算。但是要当心,因为不正确的实现让位给定时攻击。实际上,如果您自己实施RSA,则需要注意许多复杂问题。这种实现最好不要留给业余爱好者。

#7 楼

即使您的计算能力很小,也可以使用更大的指数。有一些算法,例如重复平方法,可以帮助您比蛮力更快地计算较大的指数。

重复平方法也可以通过一次建立一位而应用于RSA中,因此我们可以一口气将数字的指数加倍。因此,对于正常计算该数字的指数,我们需要进行的乘数是log n(其中n是一个指数),而与n的乘数相比较。

评论


$ \ begingroup $
为什么要投票?
$ \ endgroup $
–hrishikeshp19
2012年1月26日4:37

$ \ begingroup $
没有评论的下降投票是is脚的。
$ \ endgroup $
–hrishikeshp19
2012年7月20日在17:27

$ \ begingroup $
即使进行了重复平方运算,我认为x ^ 65535的计算也需要17乘,而两个x乘以计算x ^ 3。这不仅仅是5:1的速度差异,我认为这是非常重要的。
$ \ endgroup $
–超级猫
18-10-12在19:56



#8 楼

如果您确实处于受限环境中,请使用5的指数,这样就可以了。我很受约束的困扰,无法使用64K + 1(65537),但我不会对此进行辩论。解决难题的最佳答案(假设您确实有这个问题)是使用5。

(添加)

17的指数既不错,也很常见的折衷办法。

乔恩

评论


$ \ begingroup $
您是否有理由特别指定$ 5 $(而不是$ 3 $)?另外,您应注意,这仅适用于公共指数,不适用于私有指数。
$ \ endgroup $
–PaŭloEbermann
2012年5月16日在22:08

#9 楼

$ e $和$ d $不能都小,因为$ ed $必须至少等于$(p-1)(q-1)+ 1 $,如果该方案要提供针对分解因数算法的任何安全性,则这将非常大。

评论


$ \ begingroup $
实际上,$ ed $必须至少等于$ lcm(p-1,q-1)+ 1 $,这可能会小得多(如果$ gcd(p-1,q-1)$为大)。就是说,故意选择$ p,q $并带有较大的$ gcd(p-1,q-1)$似乎是一个坏主意。无论如何,如果您关心私有操作的计算成本,则应该使用CRT优化。在这种情况下,相对值是$ ed_p> p $和$ ed_q> q $,但是(再次)故意选择$ e $的$ d_p小,d_q $的值是一个坏主意
$ \ endgroup $
–雨披
16年5月22日在19:28



$ \ begingroup $
@poncho但是,该问题未提及任何优化。
$ \ endgroup $
–fkraiem
16年5月22日在19:50