作者
- Alex Biryukov
- David Wagner
摘要
大多数的分组密码设计者都认为,只要使用了多轮加密,即使使用了弱密钥也是安全的。本文将展示一种新的已知(选择)明文攻击,我称之为Slide_Attacks,在许多情况下,它与密码的轮数无关。我们通过以下记几种密码算法来对其进行说明:TREYFER, M6, WAKE-ROFB, 包括DES和 Blowfish的变体。
1 介绍
由于计算机计算速度的快速增长,大多数分组密码使用越来越多的轮数,使得当前我们所知道的密码分析技术都变得无用。这是由于当前主流的工具差分、线性分析都是统计攻击,他们的优势是通过统计找出许多轮的不规则和差异。然而,这一类方法最终都达到了极限,因为每增加一轮都需要攻击者付出指数级的努力。
这种趋势从向AES竞赛提交的成功来看就可以看出来。即使AES竞赛有严格的速度限制,但是不同种类的候选方案都有巨大的轮数:RC6(20), MARS(32),SERPENT(32), CAST(48).这种趋势反映了一个现象,大家认为更多的轮数意味着更安全。DES也支持这个观点,因为EDS也从16轮衍生了32-48轮。因此,对于密码分析员来说,寻找新的工具变得很自然,这些工具最好与密码的轮数无关。首先迈开这一步的是1978年Grossman and Tuckerman在文献5中提出的,如果通过选择明文攻击攻击一个虚弱的Feistel加密算法(8轮,每轮8个比特的原始密钥,用Lucifer-like交换S盒的S0和S1,一个严格意义上的虚弱密钥),攻击与轮数无关。我们也受到Biham的related-key分析(文献2)和Knudsen(文献10)的启发。
本文介绍一种叫做Slide_Attacks的新攻击方法, 能够应用于所有的加密方式(主要是迭代类的),即使迭代过程(递归)直到最后(流密码)。只要迭代过程表现出某种程度的自相似性,并且在许多情况下与迭代轮函数和轮数的确切性质无关,就可以应用这种攻击。
差分和线性分析两种攻击主要关注于加密过程的扩散属性(假设每一轮都产生强壮的子密钥),Slide_Attacks主要关注于密钥的自相似性。依赖于加密算法的设计,Slide_Attacks的攻击范围从攻击弱密钥计划到攻击密钥的结构属性。这类攻击最明显的特征是可以通过破坏迭代过程中的自相似性来进行预防,例如通过增加迭代计数器或修复随机数常量。然而,这种技术更多的复杂变种很难去分析和预防。
我们现在分析分组加密,每一次迭代都使用Fi序列中一个单独密钥。我们将这叫做同类密钥。这种情况发生在密钥的编排产生了一个回归的子密钥序列,p代表一个周期,对于i横等于(j mod p),有Fi = Fj。一个简单的例子,如果p=1,那么所有的子密钥相同。我们把这种攻击叫做self-related key attacks,这本质上是related-key attacks的一种特殊情况(文献2和文献10)。请注意,这一类攻击只需要一个已知(选择)的明文,所以它比related-key attacks更有效。在一个n比特的块上进行分组加密,Slide_Attacks的复杂度通常接近于O(2n/2)。对于Feistel加密,Fj仅仅修改了区块的一半,这样就有一个选择明文的变量,这样将使得需要的明文数量复杂度下降到O(2n/4)。
另一个要求是每一轮的S-box应该有滑动漏洞。通常autokey ciphers和datadependent transformations容易受到此类攻击,我们在表1中对其进行了汇总。
这篇文章的组织结构如下:
第二章:我们描述滑动攻击的细节,我们从一个例子开始:64轮96比特的DES变体,这里我们叫它2K-EDS。
第三章:这里的三节都用于介绍加密分析的具体建议。
第四章:攻破TREYFER,一个在FSD‘97上公布的加密算法;
第五章:攻破M6,一种FireWire标准建议使用的算法。
第六章:分析在FSE’98上发布的基于WAKE的流密码
第七章:介绍了对拥有S-box密码算法的滑动攻击,重点介绍了具有零*密钥的Blowfish的一个变体。
2 一类滑动攻击
下载地址
https://www.researchgate.net/profile/Alex_Biryukov2/publication/220942532_Slide_Attacks/links/53d13d7e0cf220632f3929e9/Slide-Attacks.pdf?origin=publication_detail