AES加密解密原理

admin 2023年12月20日09:10:18评论36 views字数 2094阅读6分58秒阅读模式

AES加密解密原理

AES加密

AES是一个对称密码,它的存在是为了取代被证明不安全的DES算法。


一、AES加密过程

AES加密解密原理


    上图为128位的加密过程,如果长度为192位,则要经过12轮加密运算,同理,256位的需要经过14轮加密。
AES加密解密原理


以128位为例,其中9轮为循环运算,最后一轮只有步骤1,2,4,没有列混合。

明文长度固定为128位(16字节)
密钥长度可以是128、192、256位


二、初始变换

AES和DES一样是分组加密的
所以,把明文划分成若干个等长的明文块,分块进行加密、
将数据按照下图的方式进行排列,得到一个4 * 4的矩阵
AES加密解密原理
将明文的4 * 4矩阵以及密钥的4 * 4矩阵进行异或操作。(按字节异或)
AES加密解密原理

具体例子如下:
AES加密解密原理


三、循环运算


3.1字节代换

将输入的矩阵通过这个S表,完成从一个字节到另一个字节的映射。
AES加密解密原理
代换完成后如下:
AES加密解密原理


3.2行移位

这个矩阵的第一行保持不变,第二行向左移动一个字节,第三行向左移动两个字节。第四行向左移动三个字节。
AES加密解密原理


3.3列混合

列混合就是将输入的一个4x4的矩阵左乘一个给定的4x4矩阵。
AES加密解密原理


AES加密解密原理

enter description here


AES加密解密原理
注意,这里的举证点乘与数学中的点成有些不同,这里的加法变成了异或运算
AES加密解密原理


普通的乘法变成了X乘,也就是 x-time算法
具体细节如下,
01
01与一个数相乘还是那个数本身。
02
将两个数都转为2进制,a7如果等于1,则去掉a7,左移一位,在右侧补0,然后异或00011011;a7如果等于0,则直接去掉a7,左移一位,在右侧补0。
AES加密解密原理
03
对于03来说,要拆成02与01的异或,然后分别相乘,如上,最后在异或。
AES加密解密原理


3.4轮密钥加

将矩阵与一个子密钥的某一列进行逐个异或,得到一个新的矩阵。
AES加密解密原理


3.5子密钥扩展

一开始只有一个子密钥,需要经过循环扩展生成10轮的轮密钥。
AES加密解密原理

1.如果i不是4的倍数,那么第i列由如下等式确定:
AES加密解密原理
W5 = W1AES加密解密原理 W4
W6 = W2AES加密解密原理 W5
AES加密解密原理

2.如果i是4的倍数,那么第i列由如下等式确定︰
AES加密解密原理

这个T函数由3部分组成:字循环、字节代换和轮常量异或。

a.字循环:将1个字中的4个字节循环左移1个字节。即将输⼊字[b0, b1, b2, b3]变换成
[b1,b2,b3,b0]。

AES加密解密原理

b.字节代换:对字循环的结果使⽤S盒进⾏字节代换。
AES加密解密原理

c.轮常量异或:将前两步的结果同轮常量Rcon[j]进⾏异或,其中j表示轮数。
AES加密解密原理


AES加密解密原理


蓝色代表W(i-4),橙色代表字节变换后的,黄色代表轮常量里的数R(J)。
AES加密解密原理

以此类推,得到10轮变换所需要的轮密钥。
AES加密解密原理

四、AES加密应用

    AES 算法为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下:

AES加密解密原理

下面简单介绍下各个部分的作用与意义:

  • 明文P 没有经过加密的数据。

  • 密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

  • AES加密函数 设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

  • 密文C 经加密函数处理后的数据

  • AES解密函数 设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ECB,是SSL、IPSec的标准)

AES模式

AES只是个基本算法,实现AES有几种模式,主要有ECB、CBC、CFB和OFB这几种(其实还有个CTR)

  1. ECB模式(电子密码本模式:Electronic codebook) ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

  2. CBC模式(密码分组链接:Cipher-block chaining) CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。

  3. CFB模式(密文反馈:Cipher feedback) 与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。

  4. OFB模式(输出反馈:Output feedback) OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。




参考文献

https://www.cnblogs.com/ffy11/p/16882128.html

https://juejin.cn/post/7021346749088268296

原文始发于微信公众号(豆豆咨询):AES加密解密原理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月20日09:10:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AES加密解密原理http://cn-sec.com/archives/2318918.html

发表评论

匿名网友 填写信息