继美国推出了AES计划以后,欧洲于2000年1月1日启动了NESSIE计划,以适应21世纪信息安全发展的全面需求。和AES相比,NESSIE涉及的范围更广,这套标准不但有分组密码,还包括流密码,消息认证码(MAC),公钥密码、数字签名和杂凑函数。其中分组密码的征集要求是密钥长度至少128bit(普通)/256bit(高级),分组长度至少I28bit;传统类密码(Normal-Legacy)分组长度64bit,密钥长度至少128bit。下面对其公布的十七个候选分组加密算法做一简析。

一、NESSIE候选分组加密算法简介

1、CS-Cipher加密算法

CS-Cipher加密算法是由法国的Pierre-Ala:in Fouque提交的分组密码。分组长度64bit,密钥长度128bit,采用8圈SP结构。圈变换中,先将数据分组与子密钥相异或,再进行4次非线性变换与一次字节替换,该运算在每一圈变换中各进行两次。

设计者已证明了在该密码中用独立的随机数来代替圈密钥对于线性及差分分析(Linear andDifferential cryptanalysis)是安全的,因此认为圈的CSCipher对于线性和差分分析攻击是安全的。现还未发现该加密算法有什么弱点。

2、Hierocrypt-L1加密算法

Hierocrypt-L1加密算法是日本东芝公司的Kenji Ohkuma等提交的一个分组加密算法。分组长度为64bit,密钥长度为128bit,采用6圈SP结构。每一圈变换中先经过两个平行的32 bit的XS盒变换,再进行线性扩散。所谓XS盒变换由子密钥混合、8bit-8bit的S盒、线性扩散组成。

设计者声称Hierocrypt-L1对于差分和线性分析攻击是安全的。对于4圈的Hierocrypto-L1,其最大差分和线性特征概率为2-48。有密码分析学者对3圈的Hierocrypto-Ll进行了改进整数攻击(lmproved mtegralattack)。在第二次NESSIE专题讨论会上,有分析报告指出其在主密钥与几个圈密钥间存在线性关系,导致该加密算法有缺陷。

3、IDEA加密算法

IDEA加密算法是由瑞士的Richard Straub提交的算法,其分组长度为64bit,密钥长度为128bit,整体结构采用的是8.5圈半Feistel网络。它采用子段结构,每个数据分组分成4块,以16bit字长进行处理。圈变换中,4个16bit字长的子密钥与四个16bit子段相乘加,再与两个16bit字长的子密钥异或,完成一次迭代。

IDEA自从1991年问世以来,已得到了广泛的应用及分析,现还未发现有效攻击能攻击5圈及更多圈的IDEA。目前,对IDEA的安全性分析的主要结果有:差分密码分析可以攻击2.5圈IDEA,截断差分(Truncated differential)密码分析可以攻击3.5圈IDEA,整数攻击(lntegral attack)可以攻击2.5圈IDEA,存在一些弱密钥(weak key).但随机选取密钥时弱密钥被选中的概率只有2-63。

4、Khazad加密算法

Khazad加密算法是由巴西的PauloSergio L.M.Barreto和比利时的Vincent Rijmen共同提交的一个候选算法。它的分组长度为64bit,密钥长度为128bit,整体结构是8圈的SP网络。每一圈都包含有子密钥混合,8个8bit-8bit的S盒和一个以矩阵形式的线性变换。

设计者声称Khazad能抵抗现有的所有攻击,其两圈Khazad的差分特征概率小于2-45,线性逼近概率小于2-20.7(现已证明其声称的线性逼近概率为2-20.7计算错误,但设计者已重新提交了一个改正了错误的报告),公开报告中还未发现有其他什么弱点。

5、MISTY1加密算法

MISTY1加密算法是由日本三菱的Eisaku Tadeda设计的,它于1996年首次提出。它的分组长度为64bit,密钥长度为128bit,采用8圈改进的Feistel网络,每两圈嵌入一个线性变换函数FL。圈变换中,32bit的输入分成两个16bit字长的子段:左边的子段与一个子密钥混合,经过16bit-16bit的混淆函数FI后与右边的子段相异或,再与输入的子密钥相异或。FI函数的内部结构与圈变换的结构相同,只是用S盒代替了FI函数。

设计者声称MISTY1对于差分攻击及线性攻击是安全的,对于不可能差分(lmpossibledifferentiaD攻击及密钥相关攻击(Related-key attack)也是安全的,5圈以上MISTY1(无FL变换)已能抵抗高阶差分(Higher-order differential)攻击。目前已知最有效的密码分析可以攻击4圈MISTYI(带有FL变换)。

6、Nimbus加密算法

Nimbus加密算法是由巴西的Alexis Warner Machado设计的。分组长度为64bit,密钥长度为128bit,采用5圈变换的迭代分组密码,每个圈变换均影响整个数据分组(但不是SP结构)。它的结构很简单,圈变换中包含与子密钥相异或、相乘和数据分组的倒置。

设计者声称该算法对差分和线性分析、篡改攻击(Interpolation attack)、不可能差分攻击、饱和攻击(Saturation attack)和相关密钥攻击是安全的。但已有分析报告计算出该密码中乘法运算的迭代差分概率,其一圈的迭代差分特征概率达到2-1,则5圈Nimbus的差分特征概率为2-5,显然不能满足安全要求。

7、Anubis加密算法

Anubis加密算法是由巴西的PauloSergio L.M.Barreto和比利时的Vincent Rijmen共同设计的一个分组密码。分组长度为128bit,密钥长度可变(最低128bit),圈数可变(依密钥长度而定,最低12圈)的SP结构。每圈由一个子密钥相加,16个8bit-8bit的S盒变换和一个线性变换组成。选择S盒变换能确保加解密除了子密钥的次序相反外,其它过程完全相同。设计者声称该算法对相关密钥攻击、篡改攻击,不可能差分攻击是安全的,4圈Anubis的差分特征概率不超过2-125,线性逼近概率小于2-57.5,截断差分攻击最多只能攻击6圈的Anubis。

但其他密码人士的分析发现其声称的线性逼近的概率是不太准确的,但这并不影响其安全性,对该算法的有效攻击及其他的弱点还未发现。

8、Camellia加密算法

CameLlia加密算法是由日本NTT公司的Shiho Moriai和三菱公司的Mitsuru Matsui联合提交的分组算法。它的分组长度为128bit,密钥长度为128/192/256bito CameILia的设计符合AES的要求,基本采用18圈Feistel结构,每隔6圈嵌入可反转函数FL。由于FL函数可反转,FL的嵌入并不影响Feistel密码加解密的相似性,且可提供不规则的Feistel结构,希望能抵抗未来的攻击方法。在每一圈变换中,64bit的输入分为8个8bit字长的子段,每个子段与8bit的子密钥相异或后经过8个8bit - 8bit的S盒变换。

设计者声称:12圈CameLlia的差分和线性概率低于2-128,对于差分和线性密码分析是安全的;10圈Camellia对截断差分密码分析是安全的Camellia对不可能差分密码分析、高阶差分攻击、相关密钥攻击和滑动攻击(Slide attack)都是安全的。

目前对该算法的研究有:

该算法的3圈迭代特征概率为2-52,据此可以攻击没有嵌入FL函数的9圈Camellia,没有嵌入FL的8圈的Camellia的截断差分概率为2-112,加入一个FL/FL-1,该概率降低到2-120。高阶差分攻击能攻击10圈(未嵌入FL)的Camellia。截断差分攻击能攻击1 1圈(未嵌入FL)的CameUia。

9、Grana Cru加密算法

Grand Cru加密算法是由比利时的Johan Borst设计的分组密码,分组长度为128bit,密钥长度为128bit,采用10圈SP结构。每一圈变换中先是与圈密钥相异或,再经过16个平行的8bit-8bit的S盒运算。

Grand Cru加密算法是以Rij ndael为基础,运用多层安全(multiple layeredsecurity)来设计的。多层安全指在一个密码算法中包含不同安全强度的子密码,每个子密码的设计侧重点不同,每个子密码使用不同的子密钥集,知道部分子密钥集不能推出其他的子密钥信息。因为Grand Cru可以认为是Rij ndael密码的改进版,设计者认为Rijndael的安全性就代表了该算法的安全性。现还未有对该算法的分析与攻击报告。

10、 Hlerocrypt-3加密算法

Hierocrypt-3加密算法是日本东芝公司的Kenji Ohkuma等提交的一个分组密码,分组长度为128bit,密钥长度为128/192/256bit,采用6/7/8圈(依密钥长度而定)SP结构。它的设计思想类似于Hierocrypt-L1,每一圈由四个平行的XS盒,一个线性扩散层组成。一个XS盒由两个子密钥混合层、两个8bit- 8bitS盒运算和一个线性扩散层组成。

设计者认为Hierocrypt-3对于差分和线性分析攻击是安全的,4圈Hierocrypt-3的差分和线性特征概率不超过2-96,但它也存在与Hierocrypt-L1同样的安全缺陷,即主密钥与几个圈密钥闾存在线性关系。

11、Noekeon加密算法

Noekeon加密算法是由比利时的Joan Daemen、MichaelPeeters. Gilles Van Assche和Vincent Rijmen共同设计的一个分组密码,它的分组长度为128bit密钥长度为128bit,采用16圈SP网络。每一圈由线性变换、字节轮换、32个平行的4bit-4bitS盒组成,该算法的加解密非常相似。

设计者声称该密码具有良好的抗线性分析和差分分析的能力,4圈Noekeon的线性特征概率不超过2-24,差分概率不高于2-48。但有研究报告表明,能对Noekeon进行相关密钥攻击,设计者声称的该算法能抵御差分和线性分析攻击的结果不可信。

12、Q加密算法

Q加密算法是由美国的Leslie McBride设计的一个密钥长度可变(最多至256bit)的128bit分组密码,采用8.5圈变换。数据分组分成16个8bit字长的子段,每一圈变换中,有三次与子密钥相异或,有16次8bit-8bit的S盒变换,有两轮各32次4bit-4bit的S盒变换,还有一个字节置换。设计者声称其7圈Q密码的差分特征概率低于2-120,但在NESSIE评估阶段中,已有公开的密码分析报告得出了高于其设计者声称的差分特征概率,并以此攻破了Q密码算法。

13、SC2000加密算法

SC2000加密算法是日本富士实验室的Naoya Torii提交的分组密码,它的分组长度为128bit,密钥长度为128/192/256bit,采用6.5圈或7.5圈Feistel和SP相结合的网络,整体结构是SP网络,圈函数中的部分变换采用了Feistel结构,圈变换中还包括了S盒运算、密钥加、相乘、线性变换等。设计者认为5圈以上的SC2000就能抵抗线性和差分攻击。已有密码分析学者对3.5圈的SC2000进行了攻击,3.5圈SC2000的差分特征概率为2-106。

14、NUSH加密算法

NUSH加密算法是俄罗斯的Anatoly Lebedev设计的分组密码,其分组长度可以为64、128或256bit,密钥长度分别为128、192或256bit,采用9圈、68圈或132圈变换(依分组长度而定),采用SP结构。每一圈变换由四个迭代组成,每次迭代中四个子段中的两个与子密钥混合,另外两个经过非线性变换。该算法还包括一个初始白化(pre-whitemng step)和后白化过程(post-whitening step)。

设计者未能给出该算法对各种攻击的分析结果,但已有密码分析人士发现线性分析攻击对NUSH是有效的,比穷举搜索方法要快。

15、RC6加密算法

RC6加密算法是由RSA实验室瑞典的Jakob Jonsson和美国的Burt Kaliski提交的。分组长度为128bit,密钥长度为128/1927256bit,采用广义的20圈Feistel结构。RC6是AES的5个决赛算法之一。RC6是在RC5的基础上设计的,主要依赖可变的循环移位作为非线性的主要根源,循环移位由数据的二次函数来控制。RC6使用了4个寄存器代替RC5中的两个,每圈也包含32bit模数乘法、加法、异或以及密钥加法。设计者声称RC6能抵抗12圈以上的差分攻击和最多16圈的线性攻击。

RC6的各种性能已得到充分的分析与测试,现尚无已知的安全性方面的攻击,似乎具有足够的安全性。

16、SAFER++加密算法

SAFER++加密算法是由美国的Gurgen Khachatrian,Melsik Kuregian和瑞士的James Massey共同提交的。它有两个版本,一个分组长度为64bit,密钥长度为128bit,采用8圈SP结构。另一个分组长度为128bit,密钥长度为128/256bit,采用7/10圈SP结构(依密钥长度而定)。每一圈变换中都包括两个子密钥混合层,一个S盒变换,两个扩散层。子密钥混合层部分运算采用模256的加法,部分采用2bit模数加法,采用了两个不同的8bit-8bit的S盒,扩散层运用了多维4点变换扩散器。

设计者声称6圈SAFER++对于差分分析攻击就能保证安全性,2.5圈SAFER++对于线性分析攻击是安全的。现有分析表明能对4圈SAFER++进行线性分析攻击,但这还不能威胁到该算法的安全性。

17、SHACAL加密算法

SHACAL加密算法是法国Gemplus公司的HelenaHandschuh和David Naccache设计的分组密码,它的分组长度为160bit,密钥长度为512bit(可以缩短,最短至128bit)。SHACAL的设计基于杂凑函数SHA-1,密钥作为消息,而明文作为初始值,结构分为4圈,各有20次变换。在每一次变换中,用扩展密钥更新五个变量中的一个,其余四个变量各经过一个非线性变换(不同圈的非线性变换函数均不同)后,再进行一次轮换。每一圈变换中,五个变量各要更新四次。

设计者已分析过其抗差分和线性分析的能力,认为至少要获得280个明文才可进行线性攻击,至少要得到2116个选择明文才可进行差分攻击,这都比穷举搜索密钥的计算量要小。目前还未发现该算法有明显弱点。

二、分组密码的性能指标

下面列出了各算法的密钥建立时间及加解密的速度(均是在PC机上,CPU采用850MHz的PentiumⅢ,RAM为256MB,Windows 2000操作系统,Visual C++;(因Nimbus和Q的安全性不过关,所以没有列出其性能指标)。

17个NESSIE候选分组加密算法简析

小知识之分组密码

分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。