您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > AES和DES分组加密算法的比较
AES和DES分组加密算法的比较1、AES的算法简介AES是美国国家标准技术研究所NIST旨在取代DES的新一代的加密标准。NIST对AES候选算法的基本要求是:对称分组密码体制;密钥长度支持128,192,256位;明文分组长度128位;算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮征集、分析、测试,共产生了15个候选算法。1999年3月完成了第二轮AES的分析、测试。1999年8月NIST公布了五种算法(MARS,RC6,Rijndael,Serpent,Twofish)成为候选算法。最后,Rijndael,这个由比利时人设计的算法与其它候选算法在成为高级加密标准(AES)的竞争中取得成功,于2000年10月被NIST宣布成为取代DES的新一代的数据加密标准,即AES。尽管人们对AES还有不同的看法,但总体来说,Rijndael作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256比特,相对而言,AES的128比特密钥比DES的56比特密钥强1021倍。对称密码算法根据对明文消息加密方式的不同可分为两大类,即分组密码和流密码。分组密码将消息分为固定长度的分组,输出的密文分组通常与输入的明文分组长度相同。AES算法属于分组密码算法,它的输入分组、输出分组以及加/解密过程中的中间分组都是128比特。密钥的长度K为128,192或256比特。用Nk=4,6,8代表密钥串的字数(1字=32比特),在本文编制的程序中由用户选定。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系见表1)。每一轮都需要一个和输入分组具有同样长度(128比特)的扩展密钥Ke的参与。由于外部输入的加密密钥K长度有限,所以在AES中要用一个密钥扩展程序(KeyExpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密密钥。2、AES和DES的比较自DES算法1977年首次公诸于世以来,学术界对其进行了深入的研究,围绕它的安全性等方面展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:(1)作为分组密码,DES的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。(2)DES的密钥的位数太短,只有56比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。(3)DES不能对抗差分和线性密码分析。迄今为止,DES算法中的S盒8个选择函数矩阵的设计原理因美国政府方面的干预,不予公布。从这一方面严格地讲DES算法并不是一个真正的公开加密算法。S盒设计中利用了重复因子,致使加密或解密变换的密钥具有多值性,造成使用DES合法用户的不安全性。而且,在DES加密算法的所有部件中,S盒是唯一的具有差分扩散功能的部件(相对于逐位异或),其它都是简单的位置交换,添加或删减等功能,毫无差分扩散能力。这样,DES的安全性几乎全部依赖于S盒,攻击者只要集中力量对付S盒就行了。(4)DES用户实际使用的密钥长度为56bit,理论上最大加密强度为256。DES算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面无法提高DES算法的加密强度。相对DES算法来说,AES算法则解决了上述问题,主要表现在如下几方面:(1)运算速度快,在有反馈模式、无反馈模式的软硬件中,Rijndael都表现出非常好的性能。(2)对内存的需求非常低,适合于受限环境。(3)Rijndael是一个分组迭代密码,分组长度和密钥长度设计灵活。(4)AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。(5)AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。在可预计的将来,如果计算机的运行速度没有根本性的提高,用穷举法破解AES密钥几乎不可能。(6)AES算法的设计策略是宽轨迹策略(WideTrailStrategy,WTS)。WTS是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析。总之,AES算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较DES更好的算法。经过对DES算法和AES算法的比较分析,我们可以得出结论,后者的效率明显高于前者,而且由于AES算法的简洁性,使得它的实现更为容易。AES作为新一代的数据加密标准,其安全性也远远高于DES算法。更为重要的是,AES算法硬件实现的速度大约是软件实现的3倍,这就给用硬件实现加密提供了很好的机会。3、流密码存在的问题按照对明文消息加密方式的不同,对称密码体制一般可以分为两类:分组密码(blockcipher)和流密码(streamcipher)分组密码:对于某一消息m,使用分组密码对其执行加密操作时一般是先对m进行填充得到一个长度是固定分组长度s的整数倍的明文串M;然后将M划分成一个个长度为s的分组;最后对每个分组使用同一个密钥执行加密变换。流密码(也称序列密码):使用流密码对某一消息m执行加密操作时一般是先将m分成连续的符号(一般为比特串),m=m1m2m3……;然后使用密钥流k=k1k2k3……中的第i个元素ki对明文消息的第i个元素mi执行加密变换,i=1,2,3,……;所有的加密输出连接在一起就构成了对m执行加密后的密文。与分组密码相比,序列密码受政治的影响很大,目前应用领域主要还是在军事、外交等部门。虽然也有公开设计和研究成果发表,但作为密码学的一个分支,流密码的大多设计与分析成果还是保密的。目前可以公开见到、较有影响的流密码方案包括A5、SEAL、RC4、PIKE等。关于流密码加密容易想到,使用流密码对消息m执行加密时,最简单的做法就是让密钥流中的第i个比特与明文串中的对应比特直接做XOR运算,即对应的解密运算即为:由于实现XOR逻辑运算非常简单,因此这样的加解密操作将是快速有效的。如果这里的密钥流是完全随机的(random)、与明文相同长度的比特串,对应的密码被称为一次一密体制(one-timepad)。显然,此时明文串与密文串之间就是相互独立的。不知道密钥的攻击者即便守候在公开信道上从而得到密文串,他也无法获得关于明文的任何信息。事实上,Shannon曾证明了“一次一密的密码体制是不可破解的(unbreakable)”。使用一次一密体制需要解决如何生成随机密钥流的问题:密钥流必须是随机出现的,并且合法用户可以容易地再生该密钥流。一方面,一个与明文一样长的随机位序列很难记住;另一方面,如果密钥流是重复的位序列,虽然容易记住,但不安全。因此,这是一个两难的处境:如何生成一个可以用作密钥流的“随机”比特序列,要求易于使用,但又不能太短以至于不安全。在通常使用的流密码中,加、解密所需要的这种序列是由一个确定性(deterministic)的密钥流生成器(keygenerator)产生的,该生成器的输入是一个容易记住的密钥,称之为密钥流生成器的初始密钥或种子(seed)密钥。因此,严格来说,密钥流序列都是伪随机序列(pseudorandomsequence)。这样一个完整的流密码系统模型就形如:从上述模型可以看出,流密码体制的安全强度完全取决于密钥流的安全性。因而,什么样的伪随机序列是安全可靠的密钥流序列,如何构造这种序列就是流密码研究中的关键问题。实用的流密码以少量的、一定长度的种子密钥经过逻辑运算产生周期较长、可用于加解密运算的伪随机序列。
本文标题:AES和DES分组加密算法的比较
链接地址:https://www.777doc.com/doc-2900749 .html