高级加密标准

来源:互联网 发布:安全知识网络竞赛答题 编辑:程序博客网 时间:2024/05/19 00:49

进阶加密标准(英语: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”)

历史

Rijndael是由Daemen和Rijmen早期所设计的Square改良而来;而Square则是由SHARK发展而来。
不同于它的前任标准DES,Rijndael使用的是代换-置换网络,而非Feistel架构。AES在软体及硬体上都能快速地加解密,相对来说较易于实作,且只需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围。

密码说明

严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中两者可以互换),因为Rijndael加密法可以支援更大范围的区块和密钥长度:AES的区块长度固定为128位元,密钥长度则可以是128,192或256位元;而Rijndael使用的密钥和区块长度均可以是128,192或256位元。加密过程中使用的密钥是由Rijndael密钥生成方案产生。
大多数AES计算是在一个特别的有限域完成的。
AES加密过程是在一个4×4的位元组矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支援更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密回圈(除最后一轮外)均包含4个步骤:

  • AddRoundKey—矩阵中的每一个位元组都与该次回合金钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
  • SubBytes—透过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
  • ShiftRows—将矩阵中的每个横列进行循环式移位。
  • MixColumns—为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每行内的四个字节。最后一个加密回圈中省略MixColumns步骤,而以另一个AddRoundKey取代。
    AES Encryption process

AddRoundKey步骤

AddRoundKey步骤,回合金钥将会与原矩阵合并。在每次的加密回圈中,都会由主密钥产生一把回合金钥(透过Rijndael密钥生成方案产生),这把金钥大小会跟原矩阵一样,以与原矩阵中每个对应的位元组作异或(⊕)加法。
这里写图片描述

SubBytes步骤

在SubBytes步骤中,矩阵中的各字节透过一个8位元的S-box进行转换。这个步骤提供了加密法非线性的变换能力。S-box与GF28上的乘法反元素有关,已知具有良好的非线性特性。为了避免简单代数性质的攻击,S-box结合了乘法反元素及一个可逆的仿射变换矩阵建构而成。此外在建构S-box时,刻意避开了固定点与反固定点,即以S-box替换字节的结果会相当于错排的结果。
这里写图片描述

ShiftRows步骤

ShiftRows描述矩阵的行操作。在此步骤中,每一行都向左循环位移某个偏移量。在AES中(区块大小128位元),第一行维持不变,第二行里的每个位元组都向左循环移动一格。同理,第三行及第四行向左循环位移的偏移量就分别是2和3。128位元和192位元的区块在此步骤的循环位移的模式相同。经过ShiftRows之后,矩阵中每一竖列,都是由输入矩阵中的每个不同列中的元素组成。Rijndael演算法的版本中,偏移量和AES有少许不同;对于长度256位元的区块,第一行仍然维持不变,第二行、第三行、第四行的偏移量分别是1位元组、2位元组、3位元组。除此之外,ShiftRows操作步骤在Rijndael和AES中完全相同。
这里写图片描述

MixColumns步骤

在MixColumns步骤,每一列的四个位元组透过线性变换互相结合。每一列的四个元素分别当作
1,x,x2,x3的系数,合并即为GF28中的一个多项式,接著将此多项式和一个固定的多项式
c(x)=3x3+x2+x+2在modulox4+1下相乘。此步骤亦可视为Rijndael有限域之下的矩阵乘法。MixColumns函数接受4个位元组的输入,输出4个位元组,每一个输入的位元组都会对输出的四个位元组造成影响。因此ShiftRows和MixColumns两步骤为这个密码系统提供了扩散性
这里写图片描述

Round key衍生

未完待续…

原创粉丝点击