算法3_对称加密算法之AES

算法3_AES(对称加密算法之高级加密算法)

AES的种类

AES种类密钥长度(bit)分组长度(bit)加密轮数明文长度(bit)密文长度(bit)
AES-12812812810128128
AES-19219212812128128
AES-25625612814128128

分组长度和明文长度是一样。对于明文以128位为一个分组作为AES对称加密算法的输入.

FabricV2.2中AES的密钥长度为32Bytes即256位,所以以下研究256位的AES-256

AES-256

AES算法主要有四种操作处理:分别是(Add Round Key)、(Sub Byte)、(Shift Rows)、(Mix Column)

明文和密钥矩阵的形式排列

128位明文从上到下,从左到右进行排列成4*4的字节矩阵

256位密钥从上到下,从左到右进行排列成4*8的字节矩阵

在这里插入图片描述
在这里插入图片描述

AES基本原理图在这里插入图片描述

对于AES256的上图解释:

上图引用自“于松林. 基于FPGA的AES算法设计与实现[D].解放军信息工程大学,2017.”

  1. 初始密钥就是256位的主密钥
  2. 轮密钥加就是Add Round Key
  3. 字节替换就是Sub Byte
  4. 行变换就是Shift Rows
  5. 列混合就是Mix Column
  6. Nr=14
回合密钥和主密钥(密钥扩展)

AES256对称加密算法中,256位是主密钥(初始密钥),但是AES256是循环加密的一种对称加密算法

通过密钥扩展算法事先生成每个回合需要的128位回合密钥

基本过程是:

  1. 输入一个密钥矩阵128位生成128位的子密钥
  2. 循环Nr+1=15次所以一共生成4*(Nr+1)字的密钥,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0o8r2kwq-1650184688429)(%E7%AE%97%E6%B3%953_AES(%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95)].assets/image-20220417155124788-16501819229941.png)

Add Round Key

当前分组与回合密钥进行异或运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQyjONGF-1650184688430)(%E7%AE%97%E6%B3%953_AES(%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95)].assets/image-20220417155831887-16501823139281.png)

Sub Byte

分组矩阵中每个字节通过一个8位的S-盒进行转换

AES中加密盒S-盒采用的是16*16的二维矩阵,将分组数据的每个字节高4位作为行号,低4位作为列号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QWpNGYji-1650184688431)(%E7%AE%97%E6%B3%953_AES(%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95)].assets/image-20220417163235607.png)

上图摘自密码学基础:AES加密算法

基本过程:
对 于 分 组 矩 阵 中 的 每 个 字 节 A i , j = [ a 7 , a 6 , a 5 , a 4 , a 3 , a 2 , a 1 , a 0 ] 对于分组矩阵中的每个字节A_{i,j}=[a_7,a_6,a_5,a_4,a_3,a_2,a_1,a_0] Ai,j=[a7,a6,a5,a4,a3,a2,a1,a0]

取 a 0 , a 1 , a 2 , a 3 组 成 的 值 作 为 列 号 ; 取 a 4 , a 5 , a 6 , a 7 的 值 作 为 行 号 . 查 S 表 得 到 变 换 值 B i , j 取a_0,a_1,a_2,a_3组成的值作为列号;取a_4,a_5,a_6,a_7的值作为行号.查S表得到变换值B_{i,j} a0,a1,a2,a3;a4,a5,a6,a7.SBi,j

最 终 可 以 获 得 由 B i , j 1 ≤ i ≤ 16 1 ≤ j ≤ 16 组 成 的 4 × 4 的 字 节 转 换 矩 阵 最终可以获得由B_{i,j}\quad 1\leq i \leq 16 \quad 1\leq j \leq 16 \quad 组成的4\times 4的字节转换矩阵 Bi,j1i161j164×4

Shift Rows

矩阵中的每一行的各个字节循环向左方位移,位移量按照行标号递增而递增

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0f3ffD6-1650184688432)(%E7%AE%97%E6%B3%953_AES(%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E4%B9%8B%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95)].assets/image-20220417160720134-16501828410782.png)

Mix Column

基本过程如下:
取 分 组 矩 阵 中 的 某 列 [ a 1 , i , a 2 , i , a 3 , i , a 4 , i ] 分 别 作 为 1 , x , x 2 , x 3 的 系 数 取分组矩阵中的某列 [a_{1,i},a_{2,i},a_{3,i},a_{4,i}] 分别作为1,x,x^2,x^3的系数 [a1,i,a2,i,a3,i,a4,i]1,x,x2,x3

即 A ( x ) = ( a 4 , i × x 3 + a 3 , i × x 2 + a 2 , i × x + a 1 , i ) 即A(x)=(a_{4,i}\times x^3+a_{3,i} \times x^2+a_{2,i}\times x+a_{1,i}) A(x)=(a4,i×x3+a3,i×x2+a2,i×x+a1,i)

C ( x ) = 3 × x 3 + x 2 + x + 2 C(x)=3\times x^3+x^2+x+2 C(x)=3×x3+x2+x+2

生 成 的 结 果 每 一 列 为 [ b 1 , i , b 2 , i , b 3 , i , b 4 , i ] , B = ( A ( x ) × C ( x ) ) m o d ( x 4 + 1 ) m o d 为 多 项 式 模 运 算 生成的结果每一列为[b_{1,i},b_{2,i},b_{3,i},b_{4,i}],B=(A(x)\times C(x))mod(x^4+1) \quad mod为多项式模运算 [b1,i,b2,i,b3,i,b4,i],B=(A(x)×C(x))mod(x4+1)mod

多项式取模运算

总结:

  1. AES高级加密算法根据主密钥的长度可以分为AES128,AES192以及AES256.
  2. 无论哪种AES高级加密算法明文长度都是128位,密文长度都是128位.
  3. 明文和密钥都是在加密过程中都是以矩阵的形式.
  4. 无论那种AES高级加密算法都是回合循环加密算法,主要由4种基本操作组合而成.
  5. 4种基本操作:轮密钥加(Add Round Key)、字节替换(Sub Byte)、行变换(Shift Rows)、列混合(Mix Column).

参考文献:

[1]于松林. 基于FPGA的AES算法设计与实现[D].解放军信息工程大学,2017.

高级加密标准维基百科

密码学基础:AES加密算法

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值