AES加密的详细过程是咋样的( 二 )
state每一行(row)内部做shift,直接上示意图就明白了(图摘自matt-wu/AES):
AES ShiftRows3. MixColumns:列混合。
官方的说法是以多项式做模为理论基础分析展开的,容易把人看懵。单单从操作上来理解:state每一列(column)单独和一个常数矩阵做乘法(自行回忆矩阵乘法)。实际操作示意图如下:
AES MixColumns4. AddRoundKey:和roundkey(轮密)做XOR(位或)操作。
在一个完整的round中,密钥只参与了这步操作:4X4的state矩阵和4X4的roundkey每一位做XOR操作(图摘自一个超有趣的博客《A Stick Figure Guide to the Advanced Encryption Standard (AES)》):
AES AddRoundKey
整个round结束了,是不是挺简单的?接下来还有个问题:roundkey(轮密)是怎么迭代的?
AES Key Expansion(密钥扩展) - roundkey(轮密)迭代过程Key Expansion,也被称为Key Schedule,还是先来看整体概览图:
AES Key Expansion概览一步步拆解,一次key expansion可以拆解为4个步骤:
1. RotWord:只对最后一列操作,平移列(类似ShiftRow)。
roundkey是一个4X4的密钥byte矩阵,每一列被称作一个word(在state矩阵中也是一样,word=column)。这一步取出最后一个word,对这个word向上shift1个,示意图如下:
AES RotWord2. SubWord:只对最后一列操作,逐字节替换(类似SubBytes)。
完全类似SubBytes的操作:查S-box并进行byte替换。不同的是,对于state而言每一个byte都要查表;而roundkey只需要替换最后一个word的4个byte即可。
3. KeyXOR - 这一步没有官方名称,自己瞎起了一个名词。
具体做法:第1个word(第一列)、经过上述两步操作后的最后1个word(第四列)和一个常量列向量RCON做XOR操作。RCON是一个常数项量,如下:
AES RCON具体做法也可以看下图:
AES AES 和RCON位或操作4. KeyXOR - 这一步也没有官方名称。 具体做法:新roundkey的对应word和旧roundkey的上一个word做XOR操作。语言描述不直观,需要借助公式说明,放心,一点都不复杂。先记旧roundkey=K,有K=,新roundkey=K\u0026#39;,有K\u0026#39;=。w\u0026#39;_i = w\u0026#39;_i-1 XOR w_i, 1\u0026lt;i\u0026lt;=4综上,一次roundkey生成的过程结束了,再回头看整个迭代生成过程的示意图是不是觉得一下子豁然开朗了?(什么?没有?嗯,那你需要细细品品了。)
到这里,一个AES的一个block内的加密过程结束了。但还是遗留了问题:block和blcok之间怎么拼接呢?
AES Block Cipher Mode(分组密码工作模式)这一块推荐文章《现代分组密码的操作模式》和《Block cipher mode》,我们可以看看EBC和CBC这2种模式,来感受下:
推荐阅读
- aes对称加密,需要加签名验证防止篡改吗如果需要该咋签名才是最好的方案
- 花生|血压高的人,吃花生是降血压还是升血压?医生详细做出解答
- 国内自主品牌|红旗H9用谁的发动机?详细拆解之后,请正视国产的实力
- 哈尔滨市继红小学公布诺如病毒详细感染情况 绝大多数感染者已无明显症状
- 汽车|起售价6.99万元,详细分析长安欧尚X5是否值得购买
- 汽车知识|厦门平行进口2020款中东版途乐4.0 XE实车最详细用心细节图来了
- 老吴说车荐车|欧蓝德真的好吗?16.03万值吗?本文给你详细剖析!
- 疾控|扬州新增1例,详细轨迹公布!
- 平安大邑|年检新政,超详细解读来啦!必懂+必收藏!
- 老吴说车荐车|KX3傲跑好不好?用车3个月,车主详细说了它的特点!
