高级加密标准(AES)的数学基础.ppt
AES算法的数学基础,主讲人:赵永哲e_mail:yongzhe 电话:,字节运算:有限域GF(28)上的运算,1.有限域GF(23)2.有限域GF(28)3.有限域GF(28)的加法运算4.有限域GF(28)的乘法运算,有限域GF(23),GF(23)表示域中有23个元素,除0之外的7个元素由本原多项式构造。假定其本原多项式为:m(x)=x3+x+1,有限域GF(23)的多项式表示,GF(23):000,001,010,011,100,101,110,111,有限域GF(23)的本原多项式的根表示,定义为本原多项式 m(x)=x3+x+1的根,即 3+1=0 和3=+1GF(23):0,0,1,2,3,4,5,6,有限域GF(28),有限域GF(28)表示特征为2的具有28元素的有限域。这里表示成系数在0,1中的多项式的集合:b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0这样任意的8位二进制数就和有限域中的一个多项式建立了一一对应的关系。,加法运算,在多项式表示中,GF(28)上两个元素的和仍然是一个次数不超过7的多项式,其系数等于两个元素对应系数的模2加(比特异或)。由于每个元素的加法逆元等于自己,所以减法和加法相同。,乘法运算,要计算GF(28)上的乘法,必须先确定一个GF(2)上的8次不可约多项式;GF(28)上两个元素的乘积就是这两个多项式的模乘(以这个8次不可约多项式为模)。在Rijndael密码中,这个8次不可约多项式确定为m(x)=x8+x4+x3+x+1 它的十六进制表示为11B。,例题,例题.计算GF(28)上的两个元素10010001和00100010的乘积。答案:10000100,x乘法,GF(28)上还定义了一个运算,称之为x乘法,其定义为xb(x)=b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x(mod m(x)如果b7=0,求模结果不变,否则为乘积结果减去m(x),即求乘积结果与m(x)的异或。由此得出x(十六进制数02)乘b(x)可以 先对b(x)在字节内左移一位(最后一位补0),若b7=1,则再与1B(其二进制为00011011)做逐比特异或来实现,该运算记为b=xtime(a)。,AES Logtable,AES alogtable,字运算:系数在GF(28)上的多项式运算,字:4个字节构成的向量。4个字节构成的向量可以表示为系数在GF(28)上的次数小于4的多项式。,字(多项式)的加法,对应的多项式的系数相加,字(多项式)的乘法,规定多项式的乘法运算必须要取模M(x)=x4+1,这样使得次数小于4的多项式的乘积仍然是一个次数小于4的多项式.将多项式的模乘运算记为,设a(x)=a3x3+a2x2+a1x+a0,b(x)=b3x3+b2x2+b1x+b0,c(x)=a(x)b(x)=c3x3+c2x2+c1x+c0。由于xj mod(x4+1)=x j mod 4,所以c0=a0b0 a3b1 a2b2 a1b3;c1=a1b0 a0b1 a3b2 a2b3;c2=a2b0 a1b1 a0b2 a3b3;c3=a3b0 a2b1 a1b2 a0b3。,字(多项式)的乘法,可将上述计算表示为,例题,例题.计算0 xB7A5662F 0 x03010102 mod M(x)=X4+1得到0 xC7?A0?,请将??处填满。例题.计算0 xC7DAA0E6 0 x0B0D090E mod M(x)=X4+1得到0 x?A5?2F,请将??处填满。例题.计算0 x03010102 0 x0B0D090E mod M(x)=X4+1,产生过程,1997年4月15日,美国ANSI发起征集AES(advanced encryption standard)的活动,并为此成立了AES工作小组。此次活动的目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,以作为新的数据加密标准。1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。对AES的基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。,产生过程,1998年8月12日,在首届AES候选会议(first AES candidate conference)上公布了AES的15个候选算法,任由全世界各机构和个人攻击和评论。1999年3月,在第2届AES候选会议(second AES candidate conference)上经过对全球各密码机构和个人对候选算法分析结果的讨论,从15个候选算法中选出了5个。这5个是RC6、Rijndael、SERPENT、Twofish和MARS2000年10月2日,NIST宣布Rijndael作为新的AES。至此,经过3年多的讨论,Rijndael终于脱颖而出。,设计思想,Rijndael密码的设计力求满足以下3条标准:抵抗所有已知的攻击。在多个平台上速度快,编码紧凑。设计简单。,设计思想,其轮函数是由3个不同的可逆均匀变换组成的,称它们为3个“层”。所谓“均匀变换”是指状态的每个比特都是用类似的方法进行处理的。不同层的特定选择大部分是建立在“宽轨迹策略”的应用基础上的。简单地说,“宽轨迹策略”就是提供抗线性密码分析和差分密码分析能力的一种设计。,设计思想,为实现宽轨迹策略,轮函数3个层中的每一层都有它自己的功能:线性混合层确保多轮之上的高度扩散;非线性层 将具有最优的“最坏情况非线性特性”的S盒并行使用;密钥加层 单轮子密钥简单地异或到中间状态上,实现一次性掩盖。,下次课内容,AES算法,谢谢大家,