如果未应用填充机制,即如果在明文或哈希上使用了原始RSA,那么在签名生成/验证和加密/解密上可能受到哪些攻击?
#1 楼
这描述了针对教科书RSA(也称为原始RSA)的一些攻击,其中应用了公共函数$ x \ mapsto y = x ^ e \ bmod N $或私有函数$ y \ mapsto x = y ^ d \ bmod N $直接到表示消息的整数$ m $。根据标准假设,已知公钥$(N,e)$。加密/解密
根据标准假设,密文$ c \ gets m ^ e \ bmod N $。 >
教科书中的确定性RSA使攻击者(获得密文)可以搜索相应的明文。
确定性还可以进行流量分析。可以区分是否发送了相同的加密消息以及消息何时更改。这可能会泄露信息。例如,如果攻击者看到$ E(\ text {stay put})$,$ E(\ text {stay put})$,$ E(\ text {stay put})$,$ E(\ text {stay} put})$,最后是$ E(\ text {attack})$,攻击者将知道情况已发生变化。
$ e $ throot攻击:对于短消息$ m $和低$ e $(例如$ e = 3 $),则可能发生$ m ^ e
广播攻击:当同一封邮件至少加密给$ e $个不同的联系人时,它可以(很有可能)在不知道任何私钥的情况下被恢复。
遇到中间攻击;这是对上述1的改进,可以使搜索纯文本的速度快于暴力破解的速度;如果假定消息可写为$ m = a \ cdot b $,且$ \ max(a,b)\ le u $和$ \ min(a,b)\ le v $,则工作量为$ \ mathcal O(u)$,具有内存$ \ mathcal O(v)$,表示常量$ N $。
Jacobi泄漏:如果$ c = m ^ e \ bmod N $,则$ \ big({c \ over N} \ big)= \ big({m \ over N} \ big)$。换句话说,相对于$ N $的明文$ m $的Jacobi符号从密文$ c $中泄漏出来。在某些基于RSA的协议(或多毛协议)中,或者对于某些消息$ m $的构造,这可能是一个问题。例如$ m = 4r ^ 2 + b $,其中$ r $是500位随机密钥,$ b $是单个位密钥,而1024位$ N $:当观察到$ \ big({c \ over N} \ big)=-1 $,可以肯定地知道$ b = 1 $。
签名生成/验证
根据标准假设,验证签名$ s $计算$ s ^ e \ bmod N $,然后对$ m $进行检查,或者对明智的$ m $进行检查。 e \ bmod N $,并假装$ s $是$ m $的签名。经过一番尝试后的错误,她可以选择一些$ m $,例如如果将其显示为C字符串,并显示为
OK
,则尝试进行$ 2 ^ {24} $次尝试。攻击者可以组合签名来创建新签名。例如,给定$ 2 $的签名(即$ 2 ^ d \ bmod {N} $),可以为$ 4 $创建签名($ 2 ^ d \ cdot 2 ^ d \ equiv 4 ^ d \ bmod { N} $)。
说爱丽丝使用她的RSA私钥实现签名服务。特别是,任何人都可以向Alice发送消息,她会检查消息内容以确保其中没有任何不好的内容。如果消息还不错,她会签名。令$ m_b $为错误消息。夏娃可以以恒定的$ k $的价格将$ km_b $发送给Alice。由于$ km_b $还不错,因此Alice会对其进行签名。给夏娃$(km_b)^ d \ bmod {N} $。夏娃也可以从爱丽丝那里获得$ k $的有效签名,因为它不错$ k ^ d \ bmod {N} $。通过使用这两个,夏娃现在可以通过乘以第二个签名的反数来获得$ m_b $的有效签名,这是爱丽丝以前从未签名过的东西。
夏娃知道某些消息的签名。例如$ 0 $的签名为$ 0 $,$ 1 $的签名为$ 1 $,$ n-1 $的签名为$ n-1 $,$ k ^ e \ bmod N $的签名为$ 0 \ le k
#2 楼
教科书RSA加密方案不具有IND-CPA的安全性,因为它是确定性方案。例如如果攻击者$ \ mathcal {A} $选择随机x $ \ in $ {1,2,...,n-1}并计算y = x $ ^ {e} $ mod n,则设置m = y,$ \ sigma_ {m} $ = x,则$ \ sigma_ {m} $是m在公共密钥(e,n)下的有效签名。伪造是在随机消息上进行的。
考虑$ \ mathcal {A} $想在她选择的目标消息m *上伪造一些签名的情况。给定(e,n)$ \ mathcal {A} $要求在某些消息m $ _ {1} $ $ \ in $ {1,2,...,n-1}和另一条消息m $ _ {上签名2} $ =(m * / m $ _ {1} $)mod n。发件人返还$ \ sigma_ {m_ {1}} $ = m $ _ {1} ^ {d} $ mod n和$ \ sigma_ {m_ {2}} $ = m $ _ {2} ^ {d} $国防部$ \ mathcal {A} $设置$ \ sigma ^ {*} $ = $ \ sigma_ {m_ {1}} $。$ \ sigma_ {m_ {2}} $ mod n,它是m *上的有效签名。 br />
评论
广大的主题!您打算回答自己的问题,还是想让他人潜入水中?这次不行。在这里,我需要一个指针来回答自己的问题,而在此站点上却找不到任何内容。我想带有指针的列表就足够了,我不希望对RSA的每一次攻击都得到充分的解释;)
你做了什么研究?有很多关于这个的文章。参见例如Dan Boneh的调查。或者,在此站点(或其他位置)上搜索“教科书RSA”,您会发现很多参考文献。
@DW我(现在)搜索并找到了Dan的问卷调查。提到了填充,但是尽管据称他表示填充可能会阻止所提到的攻击,但他并未对此进行过多讨论。要问的主要原因是,我找不到太多涉及填充的特定(列表)攻击;我曾想过自己创建一个列表,但是由于我自己并不是每天进行低温分析,因此我的列表肯定不完整,甚至可能不正确。关于此的信息很多,但信息太多且分布太广。