AES


目录
1. Why 3
1.1 EDS的缺点 3
1.2 AES的优点 4
2. What 5
2.1 AES的出现 5
2.2 AES加解密流程图 5
2.3 扩展密钥 6
2.4字节替代 7
2.5 行位移 8
2.6 列混淆 8
2.7 轮密钥加 10
3 How 12
3.1 扩展密钥 12
3..2字节替换 13
3.3 行移动 13
3.4 列混淆 14
3.5 轮密钥加 15
4. 总结 15


1. Why
1.1 EDS的缺点
 AES的是美国NIST组织2002年公布的高级加密算法,用来代替DES加密算法,这是为什么呢:
 DES作为分组密码的加密单位仅有64比特,对于30年前年的计算机来说还是完全可以胜任的,但是30年后的今天在计算机不断更新换代之后,一张照片都能达到几十M的大小,一次只能加密64bit已经略显不足。
 DES的密钥的位数太短,只有56比特,众所周知密钥的长度越长越不容易被破解,在今天ipv4 地址都即将分配完毕,并且需要被ipv6来解决地址饱和的问题,所以DES的密钥长度相对来已经可以被破解。
 DES的安全性几乎全部依赖于S盒 ,我们都知道 DES算法主要的操作就是8个S盒的替换,通过复杂的S盒转换来达到加解密,这样造成的结果就是,只要S盒被破解那么所有基于S盒加密的文件都将失去保密性。
 DES增加密钥长度, 则系统开销呈指数增长,由于最早设计DES的时候并没有预想到今天的硬件软件能够发展的这么快,所以DES密钥扩充就会造成大量的系统开销,得不偿失,所以迫切的需要一个更高级的加密标准来代替DES。


1.2 AES的优点
 AES做为分组密码,分组长度128比特,相对于DES来说,这个长度刚好是俩倍但是难度确实呈指数级的增长,基于现在的就算计运算速度来说,可能需要几亿年的时间,那基本上就相当于无解。
 AES三种可选的密钥长度 :128、192、256比特,,相对于DES来说,AES密钥长度并不是固定的,而是可以自己选择适合自己的长度。
 AES的S盒能被代数的定义,,相对于DES来说,AES的S盒里面存在着非线性的变换,这就给破解的难度提高了几个级别。
 AES 算法硬件实现的速度大约是软件实现的3 倍,给予以上的种种好处DES被AES所取代。








2. What
2.1 AES的出现
 1997年,NIST开始了遴选DES替代者——AES的工作。要求AES有128比特的分组长度,并支持128、192和256比特的密钥长度,而且能在全世界免费使用
 1998年从提交的21个算法中选出15个作为候选
 1999年5个算法入围了最后决赛
 2000年评选出最终结果Rijndael既AES, 2002年正式使用
2.2 AES加解密流程图

2.3 扩展密钥
这里说的是128bit的密钥: 主要是把初始的16字节划分为4个字,即一个字代表四个字节,然后把经过10轮扩展为44个字的扩展密钥。


密钥扩展图
AES加密过程涉及到4种操作 :字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)轮密钥加(AddRoundKey);解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。
2.4 字节替代
字节的替换主要根据一系列在域FG(2^8)的线性,非线性操作从而得到的一张16*16的表,根据一个字节的前四位(行)后四位(列)在表中找到替换字节进行替换。如下图所示 0x00 会被表中的0x63 所代替。解密过程也是一样的操作,只是需要一个该表的逆表即可。

2.5 行位移
行位移其实很简单,加密就是第一行向左移动0个位置,第二行向左移动1位,,第三行向左移动2位,第四行向左移动3位。解密就是向右移动,第三行向右移动3位,…… 第二行向右移动一位,第一行不移动。如下图

行移动
2.6 列混淆
补充域的概念在域GF(2^8)上做加法和乘法运算规则:
 加法:各个值在相加时使用的是模2加法(相当于是异或运算)
 乘法:将某个字节所对应的值乘以2,其结果就是将该值的二进制位左移一位,如果该值的最高位为1(表示该数值不小于128),则还需要将移位后的结果异或00011011
 乘法对加法满足分配率 例如:07·S0,0=(01⊕02⊕04)·S0,0= S0,⊕(02·S0,0) ⊕(04·S0,0)

加密列混淆就是把明文的矩阵,左乘一个给定的矩阵,从而对列实现线性转变,并且乘法和加法都是在域GF(2^8)上进行的,,所以一定要使用上面提到的域的运算而不是平常的运算。解密裂列混淆其实乘以另外一个矩阵只是数值不同。下面的图是一个例子:




2.7 轮密钥加
扩展密钥只参与了这一步。根据当前加密的轮数用,扩展密钥w[]中4个字与矩阵的 4 个列进行按位异或, 一定要注意是按列亦或。
因为一个数和自己亦或后是0,所以加密和解密的亦或操作一样不需要做出改变。








3 How
3.1 扩展密钥

3..2 字节替换

逆运算也一样,只是把sSbox换成相对应的逆矩。
3.3 行移动

行的逆操作 只是一句代码不一样:

3.4 列混淆

加密列混淆

解密列混淆

3.5 轮密钥加


4. 总结
看书听讲粘贴复制的代码,代码也可以运行,但是有些东西不自己编写程序的话是体会不到的,只有自己亲自经历才会知道,别人成果的不易。我觉得现在软件行业为何工作不好找,工资低都是有原因的,你自己写的东西太少,只会粘贴复制,那你的工作就谁都能做,那你就不可能拿到高工资,所以我觉得学习一门课程就要爱一门课程,自己动手实现一个算法,肯定会有自己的收获我觉的。通过这次编程,我对基本的数据类型及其位操作、进制转换、各种文件的读取和写入都有了更进一步的了解,我相信如果以后我遇到类似的问题我自己就可以解决。最后谢谢蔡老师,我狠喜欢这种上课方式!

 

目录

1.   Why. 3

1.1 EDS的缺点... 3

1.2 AES的优点... 4

2.   What5

2.1 AES的出现... 5

2.2AES加解密流程图... 5

2.3扩展密钥... 6

2.4字节替代... 7

2.5行位移... 8

2.6列混淆... 8

2.7轮密钥加... 10

3    How.. 12

3.1 扩展密钥... 12

3..2字节替换... 13

3.3 行移动... 13

3.4 列混淆... 14

3.5轮密钥加... 15

4.   总结... 15

 

 

1.        Why

 1.1 EDS的缺点

Ø  AES的是美国NIST组织2002年公布的高级加密算法,用来代替DES加密算法,这是为什么呢:

Ø  DES作为分组密码的加密单位仅有64比特,对于30年前年的计算机来说还是完全可以胜任的,但是30年后的今天在计算机不断更新换代之后,一张照片都能达到几十M的大小,一次只能加密64bit已经略显不足。

Ø  DES的密钥的位数太短,只有56比特,众所周知密钥的长度越长越不容易被破解,在今天ipv4 地址都即将分配完毕,并且需要被ipv6来解决地址饱和的问题,所以DES的密钥长度相对来已经可以被破解。

Ø  DES的安全性几乎全部依赖于S盒 ,我们都知道 DES算法主要的操作就是8个S盒的替换,通过复杂的S盒转换来达到加解密,这样造成的结果就是,只要S盒被破解那么所有基于S盒加密的文件都将失去保密性。

Ø  DES增加密钥长度, 则系统开销呈指数增长,由于最早设计DES的时候并没有预想到今天的硬件软件能够发展的这么快,所以DES密钥扩充就会造成大量的系统开销,得不偿失,所以迫切的需要一个更高级的加密标准来代替DES。

 

 

 1.2 AES的优点

Ø  AES做为分组密码,分组长度128比特,相对于DES来说,这个长度刚好是俩倍但是难度确实呈指数级的增长,基于现在的就算计运算速度来说,可能需要几亿年的时间,那基本上就相当于无解。

Ø  AES三种可选的密钥长度 :128、192、256比特,,相对于DES来说,AES密钥长度并不是固定的,而是可以自己选择适合自己的长度。

Ø  AES的S盒能被代数的定义,,相对于DES来说,AES的S盒里面存在着非线性的变换,这就给破解的难度提高了几个级别。

Ø  AES 算法硬件实现的速度大约是软件实现的3 倍,给予以上的种种好处DES被AES所取代。

 

 

 

 

 

 

 

 

2.        What

2.1 AES的出现

Ø 1997年,NIST开始了遴选DES替代者——AES的工作。要求AES有128比特的分组长度,并支持128、192和256比特的密钥长度,而且能在全世界免费使用

Ø 1998年从提交的21个算法中选出15个作为候选

Ø 1999年5个算法入围了最后决赛

Ø 2000年评选出最终结果Rijndael既AES, 2002年正式使用

2.2  AES加解密流程图

 

2.3  扩展密钥

这里说的是128bit的密钥: 主要是把初始的16字节划分为4个字,即一个字代表四个字节,然后把经过10轮扩展为44个字的扩展密钥。

 

 

密钥扩展图

AES加密过程涉及到4种操作 :字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)轮密钥加(AddRoundKey);解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

2.4 字节替代

字节的替换主要根据一系列在域FG(2^8)的线性,非线性操作从而得到的一张16*16的表,根据一个字节的前四位(行)后四位(列)在表中找到替换字节进行替换。如下图所示 0x00 会被表中的0x63 所代替。解密过程也是一样的操作,只是需要一个该表的逆表即可。

 

2.5     行位移

行位移其实很简单,加密就是第一行向左移动0个位置,第二行向左移动1位,,第三行向左移动2位,第四行向左移动3位。解密就是向右移动,第三行向右移动3位,…… 第二行向右移动一位,第一行不移动。如下图

 

行移动

2.6     列混淆

补充域的概念在域GF(2^8)上做加法和乘法运算规则:

Ø  加法:各个值在相加时使用的是模2加法(相当于是异或运算)

Ø  乘法:将某个字节所对应的值乘以2,其结果就是将该值的二进制位左移一位,如果该值的最高位为1(表示该数值不小于128),则还需要将移位后的结果异或00011011

Ø  乘法对加法满足分配率 例如:07·S0,0=(01⊕02⊕04)·S0,0= S0,⊕(02·S0,0) ⊕(04·S0,0)

 

加密列混淆就是把明文的矩阵,左乘一个给定的矩阵,从而对列实现线性转变,并且乘法和加法都是在域GF(2^8)上进行的,,所以一定要使用上面提到的域的运算而不是平常的运算。解密裂列混淆其实乘以另外一个矩阵只是数值不同。下面的图是一个例子:

 

 

 

 

2.7     轮密钥加

扩展密钥只参与了这一步。根据当前加密的轮数用,扩展密钥w[]中4个字与矩阵的 4 个列进行按位异或, 一定要注意是按列亦或

因为一个数和自己亦或后是0,所以加密和解密的亦或操作一样不需要做出改变。

 

 

 

 

 

 

 

 

3    How

3.1 扩展密钥

 

3..2 字节替换

 

逆运算也一样,只是把sSbox换成相对应的逆矩。

3.3 行移动

 

行的逆操作 只是一句代码不一样:

 

3.4 列混淆

 

加密列混淆

 

解密列混淆

 

3.5     轮密钥加

   

 

4.        总结

看书听讲粘贴复制的代码,代码也可以运行,但是有些东西不自己编写程序的话是体会不到的,只有自己亲自经历才会知道,别人成果的不易。我觉得现在软件行业为何工作不好找,工资低都是有原因的,你自己写的东西太少,只会粘贴复制,那你的工作就谁都能做,那你就不可能拿到高工资,所以我觉得学习一门课程就要爱一门课程,自己动手实现一个算法,肯定会有自己的收获我觉的。通过这次编程,我对基本的数据类型及其位操作、进制转换、各种文件的读取和写入都有了更进一步的了解,我相信如果以后我遇到类似的问题我自己就可以解决。最后谢谢蔡老师,我狠喜欢这种上课方式!

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值