摘要:
序列密码是一种非常重要的对称加密算法。许多序列密码在现实生活中得到了广泛的应用如序列密码RC4,A5和E0等等。多年来,序列密码的安全性是热点研究问题。如何设计安全快速的序列密码是一个非常具有挑战性的研究课题。许多旧的序列密码已被成功攻破,它们不再被认为是安全的。因此需要设计新的序列密码算法。近年来,不断有组织开展计划以征集安全快速的序列密码算法。1999年,欧洲委员会开展了一项名为NESSIE 的计划。但是,经过几轮的评估,没有足够安全的序列密码算法被选出。2004年9月,ECRYPT 开展了一项新的序列密码计划-eSTREAM. 这是一项多年计划。它需要经过几轮的筛选,最终选出安全快速的算法。2005年,有35个候选序列密码算法提交给eSTREAM。它们的安全性还有待分析。序列密码Achterbahn 就是提交的候选算法之一。为了评估候选序列密码Achterbahn 的安全性,本文对它进行了密码分析。很多旧的序列密码都是基于线性反馈移位寄存器和布尔函数。这种结构具有很多优点,但也有一个很大的缺点,即线性反馈移位寄存器的内部状态是线性更新的,它可以被代数攻击利用。这种旧的结构已经被代数攻击成功攻破。因此,eSTREAM 里的候选序列密码算法采用了一些新的结构。Achterbahn 采用非线性反馈移位寄存器和非线性组合布尔函数。区分攻击是分析序列密码算法安全性的一种常用方法。区分攻击的目的是尽力将观察到的密钥流与随机流区分开。通常有两种方式进行区分攻击:第一,区分密钥流输出的概率分布与均匀分布;第二,利用具有明显偏差的线性逼近方程和奇偶校验进行区分。本文对 Achterbahn-Version 1 和 Version 2的简化模式和完整模式提出了区分攻击。 这些区分攻击采用第二种方式区分,它利用输出函数的线性逼近。根据这些线性逼近和寄存器的周期, 可以找到具有明显偏差的奇偶校验。根据这些带有偏差的奇偶校验可以进行区分攻击。在 Achterbahn-Version 1 中, 输出函数有三种可能。这三种可能本文都进行了密码分析。在这三种可能 情况下,我们攻击的时间复杂度和所需要的密钥流比特数分别是 O(2^16),O(2^32),O(2^24) 和 O(2^49.01),O(2^49.01),O(2^48.99) . Achterbahn-Version 2 是 Achterbahn-Version 1 的修改版本,是为了提高它的安全性,为了能抵抗已有的一些对 Achterbahn-Version 1 的攻击。Achterbahn-Version 2 的设计主要是为了阻止基于输出布尔函数逼近的攻击。我们对 Achterbahn-Version 2 的攻击时间复杂度是 O(2^48) 。攻击所需观察到的密钥流比特数是 2^50.4 ,它低于此密码算法设计者给出的上界 2^63 ,因此是有效的。本文的攻击复杂度比已有的攻击复杂度低的多。本文对 Achterbahn-Version 2 的攻击表明, Achterbahn-Version 2 不能抵抗基于线性逼近的攻击。因此,Achterbahn-Version 2 的设计并没有达到增强Achterbahn-Version 1的安全性的目的,它是不安全的。