AES算法的数学理论基础分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AES算法的数学理论基础分析
一、AES算法
随着计算机技术和通信技术的深入发展,解密技术的快速演进已经严重影响了DES 密码系统的安全性, 用户对信息的安全存储、安全处理和安全传输的需求越来越高。Rijndael 算法以它在广泛的计算环境中硬件和软件实现都能表现出的良好性能、建立密钥时间短, 灵敏性高以及能够抵抗强力攻击和时间选择攻击被NIST 不加修改的作为AES 的唯一算法。AES 是一种迭代分组加密算法。
二、AES的数学基础
1.有限域GF(28):特征为2的具有28元素的有限域
有限域中的元素表示方法:
①二进制表示法(字节表示):字节B=b7b6b5b4b3b2b1b0=01010111
②十六进制表示法:“57”
③多项式表示法:b7x7b6x6b5x5b4x4b3x3b2x2b1x1b0x0 “57”表示为x6+x4+x2+x+1
2.字节运算:有限域GF(28)上的运算
在多项式表示中,GF(28)上两个元素的和仍然是一个次数不超过7的多项式,其系数等于两个元素对应系数的模2加(比特异或)。由于每个元素的加法逆元等于自己,所以减法和加法相同。
要计算GF(28)上的乘法,必须先确定一个GF(2) 上的8次不可约多项式;GF(28)上两个元素的乘积就是这两个多项式的模乘(以这个8次不可约多项式为模)。
在Rijndael密码中,这个8次不可约多项式确定为m(x)= x8+x4+x3+x+1十六进制表示为‘11B’。3.AES的字表示与运算
AES处理的单位是字节和字,字是4个字节构成的向量。一个字表示为系数在GF(28)上的次数小于4的多项式。
字加法:两多项式系数按位模2 加;
字乘法:设ac是两个字,a(x)和c(x)是其字多项式,乘积为a(x)c(x)mod(x4+1)
三、AES算法实现
1.加密算法过程实现
以分组长度为128bit, 密钥长度为128bit 介绍AES 算法实现。因Nb=4,Nk=4, 所以与之相应
的Nr=10, 每一轮的循环过程中都有一个初始的循环密钥, 在每一轮中的输入位与输出位相同, 都为128 位。每轮循环都经过字节转换、行位移变换、列混合变换和循环密钥四个步骤①字节转换又称S- box 变换, 它是作用在字节上的一种非线性变换, 这种变换是可逆的。它将通过在有限域DF(28)中的求乘法逆运算和DF(2)下的仿射变换运算来实现。
a.在有限域DF(28)求乘法逆元的定义为:
b. GF(2)下的仿射变换运算
仿射变换是对状态字节在有限域GF(28)上乘法逆元进行字节变换操作。在GF(28)中的元素分量为(x0,x1,x2,x3,x4,x5,x6,x7), 仿射变换定义:
用Q(x)和P(x)分别为GF(2)下X 和Y 的代数表达式, 仿射变换运算用多项式表示为: P(x)=Q(x)(x7+x6+x5+x4+1)+(x7+x6+x2+x)mod(x8+1)
②行位移变换是一种线性变换, 它的作用是在数据块的第0 行保不变的状态下, 第一行循环左移1个字节, 第二行循环左移2个字节, 第三行循环左移3个字节, 其移位值与加密块长Nb 有关。
③列混合变换可以看作GF(28)[x]/(x4+1)与固定多项式
c=('03' ,'01' ,'01' ,'02' )='03'x3+'01'x2+'01'x+'02' 的相乘。
注: c 与x4+1 互素, 所以c 的逆元c- 1=('0B' ,'0D' ,'09' ,'0E' )。
④加循环密钥就是循环密钥同上层结果进行异或。轮密钥通过密钥表得到, 其长度为4。2.解密算法
实现AES 解密过程与加密过程互为逆过程。每一个循环和加密过程一样仍需要4 个步骤: 逆字节转换, 逆移动行、逆混合列和加循环密钥。
四、分析
1.AES算法的抗攻击能力
Rijndael 作为AES 的算法, 它的密码构造主借助于代数结构有限域和有限环的相关性质的实现, 既高强度的隐藏了信息, 同时又保证了算法的可逆性,可抵抗强力攻击、差分分析和线性密码分析、XSL攻击等。
2.弱密钥的分析
在AES(Rijndael)算法中存在大量的对称性,而假如密码性能中也存在大量对称性的话那是很利于密码分析的, 而Rijndael算法采用的是一种密钥迭代型密钥,所有的非线性都是由一个与密钥独立的S-盒来提供,所以不会出现由于密码严重地依赖于密钥来提供非线性时出现的弱密钥。
五、学习体会
相比较于RSA算法,AES算法的数学基础和算法实现都较难理解。在查找AES的知识时候又复习了一遍DES,补了许多以前没能学好的部分。在学习过程中,通过在书本上查找、在网上查找成功的克服了各种困难,与此同时也对课本上这一部分的知识有了更好的理解与掌握。