关于Noekeon算法的研究
2015-01-01
0 引言
NESSIE是欧洲一项为期三年的密码标准计划,继美国推出了AES计划以后,欧洲于2000年1月1日启动了NESSIE计划,以适应21世纪信息安全发展的全面需求。两者相比较,NESSIE比 AES涉及的范围更广,这套标准涉及分组密码、流密码、公钥密码、消息认证码、数字签名和杂凑函数。其中分组密码的征集要求是密钥长度至少128bit(普通)/256bit(高级),分组长度至少I28bit;传统类密码分组长度64bit,密钥长度至少128bit。
在信息时代的发展当中,此项课题的研究有较好的应用前景,并符合信息安全发展的趋势和潮流。Noekeon算法可以应用在对不同场合的加解密之中,同时关于Noekeon算法的研究成果并不多,本文通过对Noekeon算法的加解密流程和速度进行分析研究,并用C#语言实现编程,从而使我们对Noekeon算法有一个更清晰、更直观的认识。
1 三种算法的原理
1.1 Noekeon分组密码原理
Noekeon算法是NESSIE公布的17个候选算法之一,它是由比利时的Joan Daemen、Michael Peeters、Gilles Van Assche和Vincent Rijmen共同设计的一个分组密码,它的分组长度和密钥长度都是128比特,整体结构采用的是16轮SP网络,每一圈由线性变换、字节轮换、32个平行的4bit-4bitS盒组成,该算法的加解密非常相似。为了保证加解密相似,设计者要求每个基本模块都是对合的。经测试,Noekeon可以在各种平台上安全而有效的实现。
图1 Noekeon算法加解密流程图
1.2 DES算法的原理
DES算法[2]的分组结构采用Feistel网络,包括异或、置换、代换、移位操作四种基本运算。这种结构是Horst Feistel在1973年所提出,其核心思想是:64位的明文经过初始置换而被重新排列,然后分成两组,使用子密钥对其中一个分组应用轮函数进行迭代,每一轮迭代都有置换和代换,然后将输出与另一组进行“异或”运算。之后交换这两组,再重复这一过程,DES使用16个循环,但最后一个循环之后就不再交换。DES的加解密流程如图2所示:
图2 DES算法加密的流程图
1.3 AES算法原理
AES分组密码拥有128bit的分块长度,而且可以使用128bit,192bit或者256bit大小的密钥。密钥的长度影响着密钥编排(即在每一轮中使用的子密钥)和轮的次数。
加密过程:加密之前,先将明文和原始的密钥做一次加密操作。从加密的第1轮到第9轮的所用的轮函数一样,包括四种运算:字节代换、行位移、列混合、轮密钥加,最后一轮则不再执行行列混合。
解密过程:AES的加密过程和解密过程并不一致,这是因为AES并不使用Feistel结构,每一轮操作是对整个分组进行操作。解密过程仍为10轮,每一轮操作是对应的加密操作的逆操作,由于AES的4 个轮操作(字节代换、行位移、列混合和轮密钥加)都是可逆的,因而,解密过程一轮操作就是顺序执行逆位移位、然后执行逆字节代换和轮密钥加,最后是逆列混合。同加密操作过程一样,解密的最后一轮也不执行逆列混合,但在第1轮解密之前,要执行1次轮密钥加操作。AES的加解密流程如图3所示:
图3 AES的加解密流程图
2 安全性分析
2.1 Noekeon的安全性分析
Noekeon的密钥编排算法非常简单,即每一轮的子密钥是一样的。这样设计很容易遭受滑动攻击。但是设计者克服此问题是通过引入轮常数 Roundct[i]来抵抗滑动攻击,使用轮常数是为了防止不同轮中产生的轮密钥的对称性或相似性。
如果 Noekeon没有引入轮常数 Roundct[i],则 Noekeon可以看作同一置换 Pi2·Gamma·Pi1·Theta(A,K)的乘积密码,显然Pi2·Gamma·Pi1·Theta(A,K)是弱置换;因此,滑动攻击对没有引入轮常数Roundct[i]对Noekeon算法是有效的。这反映了轮常数Roundct[i]在Noekeon算法中的重要作用。
2.2 DES的安全性分析
从 DES使用以来,人们一个试图分析它的弱点并取得了突破,实际上 DES算法的安全性取决于密钥的保密。它存在以下几方面的问题:
(1)互补性
在 DES中,若输入的明文和密钥同时取补,则选择扩展运算E的输出和子密钥产生器的输出也都补,因而经异或运算后的输出与明文及密钥未取补时的输出一样,即 S盒的输入数据未变,其输出自然也不会变,但经第十个异或运算时,由于左边的数据已取补,因而右半部分输出也就取补了。正是由于算法的两次异或运算(一次在S盒之前,一次在P盒置换之后)使得DES算法具有互补性。
(2)DES算法存在弱密钥和半弱密钥
在DES中,至少存在4个弱密钥和至少12个半密钥,如果使用弱密钥和半弱密钥,则在多重加密时第二次加密 会还原第一次加密。
(3)DES算法的密钥太短
只有56bit,密钥量约为1.7*1017个,对抗穷举攻击法、差分攻击法和线性攻击法等的能力较差。DES算法经受住了时间的考验,但是在差分分析法或者线性逼近法的理论下,联合多台工作站同时协同工作,不到半月就可以找到密钥。
2.3 AES的安全性分析
AES除了保持DES的某些好的特性外,在分组长度和密钥长度方面都作了加强,特别是密钥长度可从 128、192、256bit中任选,给用户提供了更大的灵活性,另外 AES的运算速度也将有极大的提高,软件实现速度在普通 PC机上一般都能达到50~60Mbit/s以上。它存在以下几方面的问题:
(1)尽管一些专家认为可能利用该算法使用的数学结构来攻击该算法,但实际上,暂时还没有一种攻击方法能攻击AES;另一方面,它采用非线性组件S盒,结构简单,便于分析,也使该算法的安全性能受到一些威胁。
(2)由于AES采用的Rijndael算法利用了掩码技术,因而AES能有效防止能量攻击和计时攻击。
(3)通常情况下,Rijndael非常适合在空间受限环境下既执行加密操作又要执行解密操作。其对ROM和RAM的要求比较低,因而在计算机硬件上有广阔的发展空间。
3 三种算法的加解密速度对比
表1 三种算法的加解密速度对比
将三种算法算法对同一明文进行加密,明文大小设定为200KB,得到三种不同的密文。将三种密文分别转为ASCII码,分析每个密文的奇偶数数量,控制字符和显示字符数量。得到的结果如图 4所示。从图中可以看出,Noekeon算法的奇偶数与DES、AES情况类似,这进一步的表明,Noekeon算法具有良好的安全性。
图4 三种算法密文规律性统计
4 文件加解密的界面实现
为了测试算法算法的加密速度,利用存储大小为200K的名为“算法加密解密测试”的文件进行测试,文件加解密的环境图5所示:能够对Noekeon、DES、AES三种算法进行加密解密。三种算法加密速度测试结果如图6所示,由图可以看出,Noekeon算法的加密速度相对较快,比较适用于数据和文件的加密和解密。
图5 三种加解密C#实现的主控界面
图6 三种算法加密文件所用时间截图
5 结束语
密码学是信息安全的基石,分组密码算法是密码的重要组成部分,Noekeon算法使用同一个密钥来加密和解密的分组密码算法,采用迭代结构,运行速度快且易于实现,因此对Noekeon算法的安全性进行研究,进而发现其存在的不足,从而实现对Noekeon算法的改进。
Noekeon算法的加解密速度相对较快且安全性较高,但是据设计者称该密码算法具有良好的抗线性攻击和差分攻击的能力,4圈Noekeon的线性特征概率不超过2-24,差分概率不高于2-48。但有研究报告表明,已实现对Noekeon算法进行相关密钥攻击,故设计者声称的该算法能抵御差分和线性分析攻击的结果并不可信。