也表明C’=P3是在规则算法中(不是模算法)。
攻击者可以求出
的值。
◆相关信息攻击
相关信息攻击(relatedmessageattack)是由FranklinReiter提出来的,下面我们就简单描述一下这种攻击。
Alice用e=3加密两个明文P1和P2,然后再把C1和C2发送给Bob。
如果通过一个线性函数把P1和P2联系起来,那么攻击者就可以在一个可行的计算时间内恢复P1和P2。
◆短填充攻击
短填充攻击(shortpadattack)是由Coppersmith提出来的,下面我们就简单描述一下这种攻击。
Alice有一条信息M要发送给Bob。
她先用r1对信息填充,加密的结果是得到了C1,并把C1发送给Bob。
攻击者拦截C1并把它丢掉。
Bob通知Alice他还没有收到信息,所以Alice就再次使用r2对信息填充,加密后发送给Bob。
攻击者又拦截了这一信息。
攻击者现在有C1和C2,并且她知道C1和C2都是属于相同明文的密文。
Coppersmith证明如果r1和r2都是短的,攻击者也许就能恢复原信息M。
◆对解密指数的攻击
可以对解密指数发动攻击的两种攻击方式:
1.暴露解密指数攻击(revealeddecryptionexponentattack)
如果攻击者可以求出解密指数d,她就可以对当前加密的信息进行解密。
不过,到这里攻击并还没有停止。
如果攻击者知道d的值,她就可以运用概率算法(这里不讨论)来对n进行因数分解,并求出p和q值。
因此,如果Bob只改变了泄露解密指数但是保持模n相同,因为攻击者有n的因数分解,所以她就可以对未来的信息进行解密。
这就是说,如果Bob发现解密指数已经泄露,他就要有新的p和q的值还要计算出n,并创建所有新的公钥和私钥。
2.低解密指数攻击(lowdecryptionexponentattack)。
Bob也许会想到,运用一个小的私钥d就会加快解密的过程。
Wiener表示如果
,一种基于连分数(一个数论当中的问题)的特殊攻击类型就可以危害RSA的安全。
要发生这样的事情,必须要有q
如果这两种情况存在,攻击者就可以在多项式时间中分解n。
在RSA中,我们推荐用
来防止低加密指数攻击。
◆明文攻击(plaintextattack)
攻击者已经知道了有关明文的一些内容。
这一特征也许就会引起一些针对明文的攻击。
在这一部分中我们提到三种攻击:
短信息攻击、循环攻击和公开攻击。
◆短信息攻击(shortmessageattack)
在短信息攻击中,如果攻击者知道可能的明文组,那么她除了知道明文是密文的转换之外,还知道一些别的信息。
攻击者可以对所有可能的信息进行加密,直到结果和所拦截的信息相同。
例如,如果知道Alice正在发送一个4位数的数字,攻击者就可以轻易地试验0000~9999的明文数字,来发现明文。
为此,短信息必须要在开头和结尾用随机比特进行填充,来阻止这类攻击。
◆循环攻击(cyclingattack)
循环攻击是基于这样一个事实,那就是密文是明文的一个置换,密文的连续加密最终结果就是明文。
也就是说,如果对所拦截的密文C连续加密,攻击者最终就得到了明文。
不过,攻击者不知道明文究竟是什么,所以她就不知道什么时候要停止加密。
她就要往前多走一步。
这样如果她再次得到了密文C,她只要返回一步就得到了明文。
◆公开信息攻击(unconcealedmessageattack) 是一种基于明文和密文之间置换关系的攻击。
一则公开信息就是自身加密(不被隐藏)的信息。
已经证明总有一些信息是自身加密的。
因为通常加密指数是一个奇数,有一些明文如P=0和P=1,都是自身加密的。
如果加密指数是仔细选出来的,那就会有更多的这种信息被忽略。
如果算出来的密文和明文相同,加密程序总要在提交密文之前阻止并拒绝明文。
◆同模攻击(commonmodulusattack)
如果一个组织使用一个共同的模n,那就有可能发动同模攻击。
例如,一个组织中的人也许会让一个可信机构选出p和q,计算出n=pq,并为每一个实体创建一对指数(ei,di)。
现在假定Alice要发送一则信息给Bob。
发给Bob的密文是
。
Bob用他的私密指数
来对他的信息
解密。
问题是如果攻击者是该组织中的一个成员,并且像我们在“低解密指数攻击”那一部分中学过的那样,她也得到了分配的指数对
,这样她也就可以对信息解密。
运用她自己的指数对(eE和dE),攻击者可以发动一个概率攻击来分解n并得到Bob的dB。
为了阻止这种类型的攻击,模必须不是共享的。
每一个实体都要计算她或他的模。
◆执行攻击
前面所述的攻击都基于RSA的基本的结构。
正像DanBoneh所论述的那样,有几种针对RSA执行的攻击。
时序攻击能量攻击
◆时序攻击(timingattack) PaulKocher精密地论证了这种纯密文攻击,我们称为时序攻击。
这种攻击基于快速指数算法(前面讨论过)。
如果私密指数d中的相关比特是0的话,这种算法只应用平方;如果相关的位是1,这种算法就既应用平方也应用乘法。
也就是说,如果相关的比特是1,完成每一个迭代需要的时序会更长。
这种时序上的不同就可以使攻击者逐一找出d中的比特值。
有两种方法可以阻止时序攻击:
(1)把随机延迟加到指数上使每一个指数所消耗的时间相同。
(2)Rivest引入了盲签名(blinding)。
这个概念就是在解密前用一个随机数乘以密文。
◆能量攻击(powerattack) 能量攻击和时序攻击相似。
Kocher表示,如果攻击者能够准确测量出解密过程中所消耗的能量,她就可以发动一个基于时序攻击原则的能量攻击。
涉及乘法和平方的迭代所消耗的能量要比只涉及平方的迭代多。
可以用来避免时序攻击的同类技术也可以用来阻止能量攻击。
5RSA签名方案
签名的基本概念传统签名(手写签名)的特征:
(1)一个签名是被签文件的物理部分;
(2)验证物理部分进行比较而达到确认的目的。
(易伪造)定义:
(数字签名方案)一个签名方案是有签署算法与验证算法两部分构成。
可由五元关系组(P,A,K,S,V)来刻化:
(1)P是由一切可能消息(messages)所构成的有限集合;
(2)A是一切可能的签名的有限集合;(3)k为有限密钥空间,是一些可能密钥的有限集合;(4)任意k∈K,有签署算法Sigk∈S且有对应的验证算法Verk∈V,对每一个