ASE加密算法简介
AES算法主要由密钥拓展、加密模块和解密模块三部 分组成。分组长度(Nb)、密钥长度(Nk)和加密 轮数(Nr)的关系如下图所示
加密时,各轮AES加密循环
(除最后一轮外)均包含4 个步骤: AddRoundKey步骤,回合 金钥将会与原矩阵合并。 在每次的加密循环中,都 会由主密钥产生一把回合 金钥(通过Rijndael密钥生 成方案产生),这把金钥 大小会跟原矩阵一样,以 与原矩阵中每个对应的字 节作异或(⊕)加法。
在SubBytes步骤中,矩阵中 的各字节通过一个8位的Sbox进行转换。这个步骤提供 了加密法非线性的变换能力。 S-box与GF(28)上的乘法反元 素有关,已知具有良好的非 线性特性。为了避免简单代 数性质的攻击,S-box结合了 乘法反元素及一个可逆的仿 射变换矩阵建构而成。 此外 在建构S-box时,刻意避开了 固定点与反固定点,即以Sbox替换字节的结果会相当于 错排的结果。
ShiftRows是针对矩阵的每一个横列操作的步骤。 在此 步骤中,每一行都向左循环位移某个偏移量。在AES中 (区块大小128位),第一行维持不变,第二行里的每 个字节都向左循环移动一格。同理,第三行及第四行向 左循环位移的偏移量就分别是2和3。
在MixColumns步骤,每一直行
的四个字节通过线性变换互相结 合。每一直行的四个元素分别当 作1,x,x2,x3的系数,合并即为 GF(28)中的一个多项式,接着将 此多项式和一个固定的多项式 c(x) = 3x3 + x2 + x + 2在modulo x4 + 1下相乘。此步骤亦可视为 Rijndael有限域之下的矩阵乘法。 MixColumns函数接受4个字节的 输入,输出4个字节,每一个输 入的字节都会对输出的四个字节 造成影响。因此ShiftRows和 MixColumns两步骤为这个密码 系统提供了扩散性。最后一个加 密循环中省略MixColumns步骤, 而以另一个AddRoundKey取代。
Rijndael是由Daemen和Rijmen早期所设计的Square改
良而来;而Square则是由SHARK发展而来。 不同于它的前任标准DES,Rijndael使用的是置换-组 合架构,而非Feistel架构。AES在软件及硬件上都能快 速地加解密,相对来说较易于实现,且只需要很少的 存储器。作为一个新的加密标准,目前正被部署应用 到更广大的范围。 Nhomakorabea
严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换), 因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128 比 特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32 位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rijndael密 钥生成方案产生。 大多数AES计算是在一个特别的有限域完成的。 AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初 值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael 加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除 最后一轮外)均包含4个步骤: AddRoundKey — 矩阵中的每一个字节都与该次回合金钥(round key)做XOR运算;每 个子密钥由密钥生成方案产生。 SubBytes — 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字 节。 ShiftRows — 将矩阵中的每个横列进行循环式移位。 MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每 内联的四个字节。 最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。
其加密过程如右图所示
截至2006年,针对AES唯一的成功 攻击是旁道攻击。美国国家安全局 审核了所有的参与竞选AES的最终 入围者(包括Rijndael),认为他们 均能够满足美国政府传递非机密文 件的安全需要。2003年6月,美国政 府宣布AES可以用于加密机密文件: AES加密算法(使用128,192,和 256比特密钥的版本)的安全性,在 设计结构及密钥的长度上俱已到达 保护机密信息的标准。最高机密信 息的传递,则 至少需要192或256比 特的密钥长度。用以传递国家安全 信息的AES实现产品,必须先由国 家安全局审核认证,方能被发放使 用。
加密的前九轮完全相同。依次经过 SubByte、ShiftRow、MixColumn、 AddRoundKey四个子模块,最后 一轮跳过MixColumn。其加密过程 如右图所示
AES -128的解密过程与加密过程 结构类似,但描述内容和执行顺 序有些差别。前九轮依次经过
InvShiftRow、InvSubBytes、 AddRoundKey、 InvMixColumn, 最后一轮跳过InvMixColumn。
第三十组 软件2班 田昊 袁振斌
高级加密标准(Advanced Encryption Standard,AES),
在密码学中又称Rijndael加密法,是美国联邦政府采用的 一种区块加密标准。这个标准用来替代原先的DES,已经 被多方分析且广为全世界所使用。经过五年的甄选流程, 高级加密标准由美国国家标准与技术研究院(NIST)于 2001年11月26日发布于FIPS PUB 197,并在2002年5月26日 成为有效的标准。2006年,高级加密标准已然成为对称密 钥加密中最流行的算法之一。 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所 设计,结合两位作者的名字,以Rijndael之命名之,投稿 高级加密标准的甄选流程。(Rijndael的发音近于 "Rhine doll")
旁道攻击是指不攻击密码 本身,而是攻击那些实现 于不安全系统(会在不经 意间泄漏信息)上的加密 系统。