随着计算机网络的不断发展,信息的安全性和保密性变得尤为重要。加密技术是对通信系统或者存储系统中的信息数据进行保护的一个很重要的方式。而AES(Advanced Encryption Standard)算法是美国国家标准和技术研究所(NIST)在21世纪初正式推出的旨在取代DES算法的高级加密标准算法。用它对数据文件进行加密的运算,其优势在于AES是一种高效、安全的对称加密算法,具备很强的扩散性能,最终形成的密码有很高的随机性。数据文件经AES算法加密后,信息会得到有效保护。

1、AES概述

1.1 AES简介

AES是1997年1月美国国家标准和技术研究所(NIST)发布征集的新加密算法,是一种分组加密算法。目前,Rijndael算法以其优秀的性能和抗攻击能力是通用标准AES算法。Rijndael算法除具备低成本、高安全性的特性外,最大优点在于即使在受限工作环境下(如较小内存空间中)也有较好的加密/解密运算效率;而在运算子的设计上,亦容易抵抗完全搜寻攻击,如此便能保证AES可有较长的安全周期。

1.2 AES的算法结构

AES分组密码拥有128比特的分块长度,而且可以使用128、192、256比特大小的密钥。密钥的长度影响着密钥编排(即在每一轮中使用的自密钥)和轮的次数,但是不影响每一轮中的高级结构。

AES算法都是在中间态基础上进行处理的,其加密、解密算法结构如图1-1所示,与使用Feistel结构的DES相比,AES本质上是一个代替置换网络。在AES的计算中,有一个被称为State的4乘4字节数组,是通过多轮操作来修改的。这个State的最初设置和分组密码的输入是相等的(注意输入是128比特,确切的是16字节)。AES算法的主循环对State执行4个不同的运算:SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和AddRoundKey(轮密钥加)。在加密的最后阶段,State被变回为128位的线性串。

下面对四种变换进行简单的介绍:

(1)SubBytes(字节替换)是非线形变换,该置换包含一个作用在状态字节上的S-BOX,用SRD表示,他是由字节在GF(28)域中求其乘法逆并外加一个仿射变换实现。

(2)ShiftRows(行位移变换),在这一步中,状态数组每一行的字节按如下方式循环左移:第一行不动,第二行左移一位,第三行左移两位,第四行左移三位。所有的移位都是循环的,例如第二行中第一个字节变成了第四个字节。它和列混合运算相互影响,在多轮变换后,使密码信息达到充分的混乱,提高非线形度。

(3)MixColumns(列混合变换),它用State字节列的值进行数学域加和域乘的结果代替每个字节,是以状态的列为单位进行的操作。

(4)AddRoundKey(轮密钥加),加密例程获取该密钥数组并生成一个名为W[ ]的密钥调度表。密钥调度表中的前4行对State实行一个字节一个字节的异或(XOR)操作,并用轮密钥表w[e,r]异或输入的State[r,c]。

通过将第2个和第3个运算一起视为“混合”阶段,可看到AES的每一轮都有代替置换网络结构:某轮的子密钥首先和当前这一轮的输入进行异或;接下来,一个小的可逆函数被用在“分块”上;最后,结果的比特被混合起来以得到扩散,这里的混合步骤不是由比特的简单置换组成的,而是使用比特的可逆线性转换来完成的。

AES算法采用Square(方形)算法结构,主要有以下特点:

(1)采用乘积密码迭代,实现扩散与混淆。

(2)每一轮都使用代换和混淆技术并行地处理整个数据分组。

(3)无论是加密还是解密,除了最后一轮少了列混合运算外,其他各轮都是按照相同顺序依次执行四种基本运算(解密为四种基本运算的逆运算)。

(4)解密算法完全是加密算法的倒推,加、解密原理清晰,便于理解。

(5)和其他分组密码相同,轮密钥在解密时颠倒顺序使用。

1.3 AES的解密算法

AES的解密算法可直接利用步骤InvSubBytes、InvShiftRows、InvMixCloumns和AddRoundKey的逆并倒置其次序而得到,此算法为直接解密算法。与加密算法相比,主要的不同之处有两点。一是四种基本运算用它们的逆运算取代(轮密钥加运算AddRoundKey因是模2加,逆运算相同),二是轮密钥颠倒顺序使用。为了便于实现,通常将惟一的非线性骤(SubBytes)放在轮变换的第一步。Rijndael的结构使得有可能定义一个等价的解密算法,其中所使用的步骤次序与加密相同,只是将每一步改成它的逆,并改变密钥编排方案。注意这种结构上的一致性不同于采用Feistes结构的许多密码中的组件和结构的一致性。

1.4 AES的密钥扩展

AES的密钥扩展运算ExpandKey的功能是:根据种子密钥(也称主密钥)k扩展出每轮迭代所需要的4个密钥字。例如,当k为128比特时,除了初始轮密钥所需要的4个密钥字直接用种子密钥k按列填充构成外,1~10轮迭代所需要的轮密钥字都将由种子密钥k扩展产生。

1.5 AES算法的安全性

AES加密在选择过程中承受了大量的审查,并延续至今。发现的唯一非平凡的密码分析攻击就是针对轮数减少的AES。有一些已知攻击针对密钥为128比特的6轮AES(使用约272数量级的加密),有的针对密钥为192比特的8轮AES(使用约2188数量级的加密),有的攻击针对密钥为256比特的8轮AES(使用约2204数量级的加密)。上述攻击是针对轮数减少的AES,而且至今没有发现比穷举密钥搜索更好的对完整AES构造方案的攻击。(此外,即使是对轮数减少的AES的攻击的复杂度也是很高的。)

因此至今为止,对几乎所有依赖伪随机置换的密码学实现而言,AES是一个极好的选择对象。它是免费的、标准化的、高效的和高度安全的。

2、AES算法的应用

高级加密标准AES(Rijndael)算法在各行业各部门中将获得广泛的应用,成为虚拟专用网、SONET(同步光网络)、远程访问服务器(RAS)、高速ATM/Ethernet路由器、移动通信、卫星通信、电子金融业务等的机密算法,并逐渐取代DES在IPSee、SSL和ATM中的使用。IEEE802.11i草案已经定义了AES加密的两种不同运行模式,成功解决了无线局域网(WLAN)标准中的诸多安全问题。此外,得益于密码技术的高速发展,政府及军事通信更多的采用高级的加密算法,以及网络保密系统,财政保密、游戏机密等方面AES加密算法都得到了广泛的应用。

3、结语

目前加密强度最高的对称加密算法是AES算法,其强大的能力正成为加密所有形式电子信息的标准,目前来讲没有已知的密码分析攻击可以解密AES密文,因此我们采用AES算法对数据文件进行加密是十分安全的,同时考虑到AES算法的实现程序,在计算效率、内存需求、硬件和软件可适用性、简易性、灵活性等方面的优势可向用户提供很高安全保护。AES算法的应用范围十分广泛,除了应用在数据文件加密之外,正广泛应用在通信、网络、金融等各个方面。

知识点:

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。