课程设计(论文)
AES 算法的实现与分析
2008 年 11
1
1
摘
要
随着现代密码分析水平、芯片处理能力和计算技术的不断进步,高级加密标准 AES
的 Rijndael 算法将在各行业各部门获得广泛的应用,成为虚拟专用网、SONET、远程访
问服务器、高速 ATM/以太路由器、移动通信、卫星通信、电子金融业务等的加密算法,
并逐渐取代 DES 在 IPSec、SSL 和 ATM 中的加密功能。目前,IEEE 802.11i 草案已经定
义了 AES 加密的两种不同运行模式,成功解决了无限局域网标准中的诸多安全问题。
在这种情形下,AES 算法的安全性及其快速实现问题显得格外突出,本文对此进行了全
面的论述,希望能为有意进行这一方面研究和应用的同行提供有益的参考。
文章阐述了 Rijndael 算法的设计特色,介绍了 AES 在密码分析方面国内外已有的一
些理论分析成果,描述了 AES 算法采用软件和硬件实现方案。此外,本文章从数学基
础的知识上阐明了 AES 算法的四个步骤。从 AES 算法抵抗强力攻击能力,抵抗差分分
析和线性密码分析的能力,抵抗渗透攻击能力,抵抗代数计算攻击能力,抵抗 XSL 攻
击能力,弱密钥的分析这几个方面进行了分析从而说明 AES 的安全性能。我们根据算
法的安全性、代价以及算法与实现特性的原则实现了 AES 的算法,从密钥编排方案分
析了密钥的设计准则和选取。
关键词:AES 算法 加密 解密 安全性能分析
1
Abstract
With the modern code of the level of analysis, processing power and chip technology
advances ,AES Rijndael algorithm in various industries and departments to obtain a wide
range of applications, virtual private networks become, SONET, remote access servers,
high-speed ATM / Ethernet routers, mobile communications, satellite communications,
electronic financial services such as encryption algorithm, And gradually replaced by DES in
IPSec, SSL and encryption in the ATM. At present, IEEE 802.11i draft definition of the AES
encryption has two different modes of operation, the successful resolution of an unlimited
number of local area network standard of safety. In this case, AES algorithm for the safety of
its rapid realization of the problem is particularly prominent in this article have conducted a
thorough discussion in the hope of intention to conduct the study and application of peer-to
provide a useful reference.
The article describes the design characteristics of the Rijndael algorithm, introduced at
the AES code analysis at home and abroad have been some of the theoretical analysis of the
results of the AES algorithm used to describe software
and hardware to achieve fast
program. In addition, the article from the mathematical knowledge-based AES algorithm on a
set of four steps. AES algorithm resistance from powerful attack capability against differential
cryptanalysis and linear analysis of the ability to resist infiltration attack capability, the ability
to resist attacks on calculate algebra, the ability to resist attacks XSL, weak analysis of these
key aspects of the analysis that in order to AES Safety performance. According to the security
of our algorithm, as well as the cost of algorithm and implementation of the principle
characteristics of the realization of the AES algorithm. From the analysis of the key programs
scheduled for the key criteria for the design and selection.
Key words: AES algorithm; Encryption; Decrypt; Safety Performance Analysis
2
1.
2
3.
4.
5.
6.
7.
8.
目录
第一章 绪 论...............................................................................................................................................3
1. 题目背景 ...........................................................................................................................................3
AES 算法密码分析的进展................................................................................................................2
2.
第二章 基础设置 ...........................................................................................................................................3
AES 简介............................................................................................................................................4
AES 算法的分析................................................................................................................................4
AES 和 Rijndael 的区别..................................................................................................................6
AES 的结构........................................................................................................................................6
AES 算法的设计原理.......................................................................................................................7
AES 算法的框架描述........................................................................................................................8
AES 加、解密的输入/输出 ..............................................................................................................9
AES 加密算法实现的理论分析......................................................................................................11
8.1 轮的数目的设定 ...................................................................................................................11
8.2 轮变换 ...................................................................................................................................13
8.3 密钥扩展(Key Expansion)................................................................................................ 14
8.4 字节替换(SubBytes)...........................................................................................................16
8.5 行位移变换(ShiftRows).....................................................................................................17
8.6 列混合变换(MixColumns)...................................................................................................17
8.7 密钥加变换(Add RoundKey).............................................................................................. 18
9. 解密 .................................................................................................................................................18
9.1 两轮 AES 的解密 ...................................................................................................................19
9.2 代数性质 ...............................................................................................................................20
第三章 AES 的实现......................................................................................................................................22
1. 软件系统概述 .................................................................................................................................22
AES 的 C++实现 ...............................................................................................................................24
2.
第四章 AES 算法的抗攻击能力分析..........................................................................................................34
1 AES 算法抵抗强力攻击能力分析 ................................................................................................... 34
2 AES 算法抵抗差分分析和线性密码分析的能力分析 ...................................................................... 34
3
AES 算法抵抗渗透攻击能力分析 ................................................................................................. 35
4 AES 算法抵抗代数计算攻击能力分析 ........................................................................................... 35
5 AES 算法抵抗 XSL 攻击能力分析 ....................................................................................................36
结 论............................................................................................................................................................. 38
工作分工和安排.............................................................................................................错误!未定义书签。
小组成员个人心得 ........................................................................................................ 错误!未定义书签。
参 考 文 献.............................................................................................................................................40
附 录............................................................................................................................................................. 42
第一章 绪 论
1. 题目背景
3
科技的发展特别是网络的发展使计算机深入到了各行各业的方方面面,计算机在带
来方便和提高了工作效率的同时却也带来了各种各样的新问题,其中信息安全问题最为
突出,随着计算机信息安全要求的不断提高, 计算机保密系统已变得越来越重要,密码
学应用不再是局限于军事、国防等有限领域,而是迅速的走进了千家万户。
2.
AES 算法密码分析的进展
2002 年亚洲密码分析研讨会上,Courtois[16]提出一种称为 XSL 攻击的分组密码分
析新方法,主要思想是用一系列次数低、方程数大于变元数的超定方程组来描述密码系
统,通过解方程组来破解分组密码。同年美洲密码分析研讨会上,Murphy[17]设计了一
种新的算法 BES(Big Encryption System),将 AES 中 GF(
82 )和 GF(2)上的两种域运算归
结为域 GF(
82 )上的运算,使 AES 成为某种消息空间和密钥空间下的 BES,通过研究形
式更为简洁的 BES,可以更清晰地了解 AES 算法内部的数学结构。2002 年第 297 期《科
学》杂志[18]高度评价了这两个最新分析成果。
中国的研究人员也对 AES 算法进行了大量研究分析。吴文玲[19]用能量攻击对
Rijndael 算法进行了分析,攻击复杂度在 267 到 2131 之间,大大降低了攻击的规模;曾
祥勇[20]等用布尔函数的迹表示给出置换函数的表达式,对由幂函数合成可逆仿射变换
产生的 S 盒间的关系进行了研究;李娜[21]通过研究 q-多项式的性质给出了一种求解 S
盒代数表达式的简易算法,具有可预先计算、操作简单的特点和一定的通用性,并对曾
祥勇提出的一类 S 盒进行了仿射等价划分,明确了这些 S 盒间的相互关系;冯国柱[22]
对 Rijndael 算法作了变动和改进,使新算法在不降低抗差分攻击性能、牺牲少许密钥装
填速度的情况下提高统计效果,并可部分抵抗 Square 攻击;胡辛征[23]研究发现 Rijndael
算法 S 盒在有限域 GF(28)上的迭代循环周期过短,设计了一种新的仿射变换对之加以改
进;曾游[24]调整 Rijndael 算法轮变换的顺序,采用密钥的变形形式,通过合理安排求
取 密 钥 的 顺 序 , 利 用 密 钥 相 关 性 将 5 轮 简 化 算 法 的 密 钥 穷 尽 量 减 少 到
240+232+216+9×28。
韦宝典[25]利用 Walsh 谱理论分析 Rijndael 算法 S 盒的严格雪崩特性、扩散特性和
相关免疫性等密码性质,提出了广义自相关函数的概念,解决了严格雪崩准则和扩散准
则阶数的确定问题;基于等价类的划分、线性方程组的求解和标准基之对偶基的计算,
2
给出了域元素分量代数表达式的 3 种求法,提出了一种基于生日悖论、利用活动性进行
攻击的新方法;指出了 Square-6 攻击是不成功的,并给出了修正攻击方案。
第二章 基础设置
AES 算法是一些相当复杂的运算,虽然本文要实现的只是 8 位处理器上实现 128 位
的运算,但还是很有必要采用模块化思想按照层次结构来设计及实现一些其它的辅助函
数,而不是把它们内嵌在算法函数内,这样既能够避免算法函数的程序代码的过分冗长、
使代码清晰易懂、突出算法过程又能够使程序易于测试、排错、更新和复用。由于本文
3
重点在乘法类算法,下面只介绍一些关键的辅助函数,其它辅助函数要到相关算法使用
到时再简略介绍。
1.
AES 简介
随着对称密码的发展,3DES 用软件实现速度相对较慢,它使用的 64 位分组长度显
得不够高效和安全的缺点使得需要一种新的高级加密标准来替代它。AES 的全称是
Advanced Encryption Standard,即高级加密标准。该项目由美国国家标准技术研究所
(NIST)于 1997 年开始启动并征集算法,在 2000 年确定采用 Rijndael 作为其最终算法,
并于 2001 年被美国商务部部长批准为新的联邦信息加密标准 (FIPS PUB 197),该标准
的正式生效日期是 2002 年 5 月 26 日。2000 年 10 月 2 日,NIST 对 Rijndael 做 出了最
终评估。
AES 是一个迭代的、对称密钥分组的密码,它可以使用 128、192 和 256 位密钥,
并且用 128 位(16 字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密
钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数
据相同。迭代加密使用一个循环结构,在 该循环中重复置换(permutations) 和替换
(substitutions)输入数据。
2
AES 算法的分析
一个密码算法的有效性首先体现在可靠的安全性上。Rijndael 算法设计采用针对差
分和线性密码分析提出的宽轨迹策略(WTS),其最大优势是可以给出算法最佳差分特征
的概率以及最佳线性逼近偏差的界;使用简单的部件组织成清晰的结构,便于算法安全
性的分析。当然,在密码学界永远没有绝对的安全,Rijndael 算法也不例外,如其明显
的代数结构对安全性的潜在威胁已经受到一些学者的质疑。本文从简化算法攻击、算法
结构性质分析以及密码分析的进展等方面对 AES 算法的密码分析状况进行讨论。
简化算法攻击
目前尚未出现对完整 Rijndael 算法的成功攻击,只提出了几种针对简化算法的攻击
方法。最有名的当数密码设计者自己提出的 Square 攻击,其主要思想是利用第 4 轮字节
替换前后平衡性的改变来猜测密钥字节,对 128 比特密钥下 4 到 6 轮简化算法有效。
Biham[2]等对 Square 攻击进行改进,时间复杂度降为原来的一半,并认为颠倒轮密钥的
4