文档介绍:1997年4月15日,美国ANSI发起征集AES(advancedencryptionstandard)的活动,并为此成立了AES工作小组。此次活动的目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,以作为新的数据加密标准。1997年9月12日,美处公布了正式征集AES候选算法的通告。对AES的基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。AES算法——Rijndael1998年8月12日,在首届AES候选会议(firstAEScandidateconference)上公布了AES的15个候选算法,任由全世界各机构和个人攻击和评论,这15个候选算法是CAST256、CRYPTON、E2、DEAL、FROG、SAFER+、RC6、MAGENTA、LOKI97、SERPENT、MARS、Rijndael、DFC、Twofish、HPC。1999年3月,在第2届AES候选会议(secondAEScandidateconference)上经过对全球各密码机构和个人对候选算法分析结果的讨论,从15个候选算法中选出了5个。这5个是RC6、Rijndael、SERPENT、Twofish和MARS。2000年4月13日至14日,召开了第3届AES候选会议(thirdAEScandidateconference),继续对最后5个候选算法进行讨论。2000年10月2日,NIST宣布Rijndael作为新的AES。至此,经过3年多的讨论,Rijndael终于脱颖而出。Rijndael由比利时的JoanDaemen和VincentRijmen设计,算法的原型是Square算法,它的设计策略是宽轨迹策略(widetrailstrategy)。宽轨迹策略是针对差分分析和线性分析提出的,它的最大优点是可以给出算法的最佳差分特征的概率及最佳线性逼近的偏差的界;由此,可以分析算法抵抗差分密码分析及线性密码分析的能力。(28) 有限域中的元素可以用多种不同的方式表示。对于任意素数的方幂,都有惟一的一个有限域,因此GF(28)的所有表示是同构的,但不同的表示方法会影响到GF(28)上运算的复杂度,本算法采用传统的多项式表示法。Rijndael的数学基础和设计思想在GF(28)有限域上的多项式运算举例:——异或 (x2+1)+(x2+x+1)=x101XOR111=——左移位&异或 (x+1).(x2+1)=x.(x2+1)+1.(x2+1) =x3+x+x2+1=x3+x2+x+=(101)<<1XOR(101)<<0= 1010XOR101=——左移位&异或 技巧:xnmodp(x)=[p(x)-xn](x3+x2+x+1)mod(x3+x+1)=1.(x3+x+1)+(x2)=x21111mod1011=1111XOR1011=01002多项式模乘运算举例例:f(x)=x2+x,g(x)=x2+1,模多项式m(x)=x3+x+1求:f(x)×g(x)modm(x)=?解:①多项式除法求余方法;②二进制运算方法 ①……. ②f(x):(110)g(x):(101)m(x):1011 (110)×(101)=(110)×[(100)XOR(001)] =(110)×(100)XOR(110)×(001) =(110)×(010)×(010)XOR(110) =[(100)XOR(011)]×(010)XOR(110) =(111)×(010)XOR(110) =(110)XOR(011)XOR(110)=(011)即所求结果为:x+1将b7b6b5b4b3b2b1b0构成的字节b看成系数在{0,1}中的多项式b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0例如:十六进制数‘57’对应的二进制为01010111,看成一个字节,对应的多项式为x6+x4+x2+x+1。两个元素的和仍然是一个次数不超过7的多项式,其系数等于两个元素对应系数的模2加(比特异或)。例如:‘57’+‘83’=‘D4’,用多项式表示为(x6+x4+x2+x+1)+(x7+x+1)=x7+x6+x4+x2用二进制表示为01010111+10000011=11010100由于每个元素的加法逆元等于自己,所以减法和加法相同。