BlockCipher2
huangx607087学习分组密码的笔记2
0.About
9月1日,自己的第二个90天计划开始,自己上学期的第一个90天计划很成功,自己从来没想过自己六级能考587。。。所以自己第二个90天计划主要是为了提升自己的CTF水平,争取能够打入线下,然后再恰点烂钱。。。。。(对于我这个fw还是很难的。今年三门数学一门物理,希望自己这四门课都能考到60H吧。。。
这篇博客主要是讲一下AES的算法,上承接一下DES相关内容,下启一下后面两篇笔记:笔记3: 加密模式 、笔记4: S盒差分攻击
注:若数字无后缀,默认认为是十进制。十六进制后缀会加
2.AES
0o01 对DES的补充内容
在正式进入AES之前,我们先对上一篇笔记中的DES进行一些补充。
由于DES的安全性在目前来看已经不是很高了,1999年1月,有一个蛮力破解DES挑战赛,有人解和Deep Track Internet 上的分布攻击,耗时22小时就破解了DES的密钥。而在2006年的4月,德国有两所大学基于低廉的FPGA,仅仅耗费了不到70000人民币的价格,构建了密钥搜索机器,平均搜索时间仅仅7天。
因此,出现了一些DES的替换算法,其中最典型的就是3DES,有的3DES使用三个不同的密钥,对明文连续加密三次。当然也有使用两个密钥的3DES,使用函数如下
也就是先用密钥
当然,这种加密方法也仅仅是在DES上加了个变体,解密函数也是三次
但这边有个问题就是3DES耗时增加至原来的
DES加密算法有几个弱密钥,这些密钥有个特点,就是在分组后,会使得
DES的弱密钥在不考虑第八位校验位的情况下,一共有八个弱密钥:
1 |
|
如果用这
也就是说,对明文两次加密,就可以得到原来的明文。
0o02 AES简介:
AES与DES一样,也是一种对称分组密码。其分组大小比DES要大,有
而加密轮数一般也有固定规则——在
AES的总体加密框图如下:
AES中,对于每一轮加密有三层,第一层是字节代换层,在这里使用
第二层是扩散层,由ShiftRows和MixColumn。其中ShiftRows是对行的位移变化,在位级别进行数据置换。而MixColumn是对列的混淆变换,合并长度为四个字节(32bit)的数据。
第三层是密钥加法层,这里主要是通过
在AES中,我们还会涉及到在
举个例子:上表中
0o03 AES加密过程
Step 1 AES内部结构
Step 2字节代换层
由于
这个
因此,即使我们输入的内容是
Step 3 扩散层和密钥加法层
在扩散层中,对十六个
首先是位置替换,下标值按照
然后是列置换,
这边说一下,这里的
当然,我们还可以通过
最后对得到的十六个
0o04 密钥编排
下面我们以
这边
0o05 解密过程
作为对称密码,解密过程与与加密过程差不多是一致的。
所以,我们只需要将我们加密中所做的内容逆回去即可。
下面是解密过程
因此密钥加法还是轮密钥与密文异或,逆向MixColumn与逆向ShiftRow也是一个可逆过程,直接乘上逆矩阵,做逆变换即可。
逆矩阵的内容如下,这边的
然后根据变换
那么我们也可以获得