论文部分内容阅读
2000年10月2日,美国国家标准和技术研究所(NIST)正式确定Rijndael算法作为高级加密标准AES(Advanced Encryption Standard),AES算法的出现是为了替代不再安全的数据加密标准DES(Data Encryption Standard)。AES算法被广泛应用于保密通信以及商业加密,可以说是信息安全领域中最具代表性的一种加密算法。本文主要研究了AES算法的安全性和实现性,在深入剖析了AES算法的代数性质以及抗攻击能力的基础上,提出优化改进AES算法S盒以及密钥扩展算法。通过MATLAB仿真实验,验证了改进算法中各个模块功能的正确性。从理论和实践两部分证明了本文提出的改进算法相比于AES算法具有更好的性质。本文的主要工作和创新点如下:首先,详细介绍了AES算法的数学基础和算法结构,包括有限域G F(2~8)上字和字节的运算、加密和解密算法、密钥扩展算法、等价的列混合变换以及等价的解密算法。分析了目前针对密码算法常见的攻击方式,包括强力攻击、差分密码分析、线性密码分析、Square攻击、代数攻击以及功耗分析。通过上述研究,找出了AES算法目前存在的问题以及需要优化改进的地方。其次,深入探究了AES算法S盒的构造原理以及代数性质。作为AES算法中唯一的非线性组件,它的安全性决定了AES算法的安全强度。结果显示,S盒的代数表达式项数、仿射变换周期、迭代输出周期以及严格雪崩准则距离都存在一定的缺陷,这很可能成为AES算法被破解的关键。针对这一问题,本文提出了一种新S盒构造方案,包含以下三个步骤:(1)选择能够构造出具有更好代数性质的S盒的不可约多项式;(2)选取仿射变换周期、迭代输出周期以及严格雪崩准则距离都达到最佳值的仿射变换对;(3)调整S盒构造步骤,采用“仿射变换-乘法逆-仿射变换”的计算顺序。实验分析表明,与AES算法S盒相比,新S盒的主要代数性质在得到显著提升的同时没有降低其他性能。但是新S盒的生成时间增加了0.02秒,相比于原算法增加了2.1%。再者,仔细研究了AES密钥扩展算法。结果显示,相邻两轮轮密钥之间存在较强的相关性,攻击者只需要得到任意一轮的轮密钥就可以计算出包括初始密钥在内的全部密钥。针对这一问题,本文提出了两种改进方案:(1)将每轮轮密钥的前两位进行字节代替、字节移位和轮常量异或运算,改进算法在运行三轮之后的强度就等同于暴力破解;(2)调整每轮轮密钥的产生方式,从第二轮开始,密钥的产生必须由前两轮的轮密钥共同作用,增加了复合运算和异或运算,改进算法在运行两轮之后的强度就等同于暴力破解。数据分析表明,优化改进后的密钥扩展算法安全性得到了显著地提升。但是轮密钥生成时间分别增加了0.000176秒和0.000464秒,相比于原算法增加了7.7%和20.4%。最后,实验分析了改进AES算法的有效性和正确性。采用MATLAB仿真实验实现了新S盒以及两种改进的密钥扩展算法,用改进后的AES算法对字符串和图像进行加密、解密测试,并对比AES算法官方标准(FIPS PUB 197)中提供的数据测试集。实验结果证明了本文提出的改进AES算法能够正确的构造出新S盒以及产生新的轮密钥,加密和解密功能都能够正常实现,并且具有与AES算法相当的加解密效率。