密码学博大精深,这里所说的AES加密算法原理可以理解为AES工作流程,至于为什么这么设计,这么设计为什么是安全的,有待今后的学习与思考。
分组密码设计的两个原则
分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。
- 混淆是使密文的统计特性与密钥的取值之间的关系 尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。
- 扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的 密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。
在后面的AES算法设计的过程中可以看到其核心步骤符合这两个原则。
AES的构造方法
AES分组密码为128bit的分块长度,密钥长度为128、192、256bit,密钥长度影响密钥编排(即在每一轮中使用的子密钥)和轮的次数,但是不影响每一轮中的高级结构。
主要分如下几个过程:
- KeyExpansion: 密钥扩展,每一轮轮密钥都是不同的,需要依据密钥扩展为不同轮次的128bit轮密钥。
- Initial round key addition: 初始轮密钥加
- AddRoundKey
- 9,11 or 13round: (密钥长度不同,轮数不同)
- SubBytes
- ShiftRows
- MixColumns
- AddRoundKey
- Final round(making 10,12 or 14