AES详解(二)

文章详细介绍了AES加密算法,包括其数据处理方式、状态概念、轮变换的各个步骤如S盒变换、行移位、列混合和轮密钥加,以及轮密钥的生成过程。此外,还讨论了AES的解密算法、实现方法(硬件和软件)及安全性,强调了AES在抵抗各种攻击上的能力,并指出其在实际应用中的安全性需要时间验证。
摘要由CSDN通过智能技术生成

二、算法框架

在这里插入图片描述

三、数学基础

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

四、AES的基本变换

1.AES的数据处理方式

  • 按字节处理
  • 按字处理
  • 按状态处理

2.状态

  • 加解密过程中的中间数据
  • 以字节为元素的矩阵,或者二维数组。

符号:

  • Nb——明密文所含的字数
  • Nk——密钥所含的字数
  • Nr——迭代轮数
    • 比如:当Nb=4的状态在这里插入图片描述
    • 当Nk=4的状态在这里插入图片描述
  • Nb、Nk、Nr之间的关系:
    • 在这里插入图片描述

3.轮变换

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

  • 注意第一张PPT为标准轮函数变换,第二张为非标准轮函数变换。二者的区别在于,后者轮变换过程中没有列混合变换。

4.S盒变换ByteSub(State)

  • S盒变换是AES的唯一的非线性变换,是AES安全的关键。
  • AES使用16个相同的S盒,DES使用8个不相同的S盒。
  • AES的S盒有8位输入8位输出,是一种非线性置换。DES的S盒有6位输入4位输出,是一种非线性压缩。
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述

5.行移位变换ShiftRow(State)

在这里插入图片描述

6.列混合变换 MixColumn(State)

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

7.轮密钥加变换 AddRoundKey()

  1. 把轮密钥与状态进行模2相加
  2. 轮密钥根据密钥生成算法产生
  3. 轮密钥长度等于数据块长度

五、轮密钥的生成

  1. 加密迭代中每一轮需要一个轮密钥参与加密
  2. 轮密钥根据产生算法通过用户密钥得到
  3. 密钥产生分两步进行:
    密钥扩展
    轮密钥选择
  4. 密钥扩展将用户密钥扩展为一个扩展密钥
  5. 密钥选择从扩展密钥中选出轮密钥。

密钥扩展

  1. 密钥扩展产生扩展密钥
  2. 用一个字元素的一维数组W[Nb*(Nr+1)] 表示扩展密钥
  3. 用户密钥放在该数组最开始的Nk个字中
  4. 其它的字由它前面的字经过处理后得到。
  5. 分为Nk<=6和Nk>6两种扩展算法。

1.密钥扩展
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.轮密钥选择
在这里插入图片描述

六、AES的加密算法

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

七、AES的基本逆变换

  • AES的加密算法不是对合运算,解密算法与加密算法不同。
  • AES的巧妙之处:虽然解密算法与加密算法不同,但是解密算法与加密算法的结构相同。
  • 把加密算法的基本运变换成逆变换,便得到解密算法。

AES的各个基本变换都是可逆的。

  • 轮密钥加变换的逆就是其本身在这里插入图片描述

  • 行移位变换的逆是状态的后三行分别移位Nb-C1,Nb-C2,Nb-C3个字节。

  • 列混合变换的逆
    因为列混合变换是把状态的每一列都乘以一个固定的多项式c(x):在这里插入图片描述
    所以列混合变换的逆就是状态的每列都乘以c(x)的逆多项式d(x):在这里插入图片描述
    4.S盒变换的逆

在这里插入图片描述在这里插入图片描述
5.解密的密钥扩展

  • 解密的密钥扩展与加密的密钥扩展不同;

  • 解密的密钥扩展定义如下:

    • 加密算法的密钥扩展。
    • 把InvMixColumn应用到除第一和最后一轮外的所有轮密钥上。

6.逆轮变换

  • 标准逆轮变换在这里插入图片描述
  • 最后一轮的逆变换在这里插入图片描述

八、AES的解密算法

  • 加密算法不是对合运算:在这里插入图片描述
  • 解密算法的结构与加密算法的结构相同
  • 解密中的变换为加密算法变换的逆变换,且密钥扩展策略稍有不同。

解密算法:
在这里插入图片描述

九、AES的实现

  • 适应多种环境,高效,方便是AES的突出优点。
  • 由于AES的基本运算由ByteSub,MixColumn,ShiftRow和AddRoundKey构成,因此AES的实现主要是这些变换的实现。
  • 其中ShiftRow和AddRoundKey的实现比较容易,因此主要是ByteSub和MixColumn变换的实现问题。
  • 有了这些基本运算的实现,便可以有效地实现整个AES。

实现方法:

  • 硬件
  • 软件

软件方法:

  • 基于算法描述
  • 基于查表

1.基于算法描述的软件实现

  • AES的算法描述是一种程序化的描述,便于实现。
  • AES的四种基本变换都比较简单,便于实现
  • 用C语言仿照算法描述,可以方便地实现
  • 这种实现的速度不是最快的

2.基于查表的软件实现

  • 用于查表实现算法是一种高效的软件设计方法。
  • 时空折换是信息科学的基本策略
  • 用查表实现算法,就是用空间换取时间。
  • 目前计算机系统的存储空间大,而且便宜,为查表实现算法提供了物资基础。

S盒的查表实现

  • 实现S盒变换的最快方法是,直接计算出S盒的变换的结果,并且造表存储,使用时直接查表。因为ByteSub变换是字节函数,所以表的规模不大,只含有256个元素。
  • 注意:解密时用的是S盒,因此共需要造两个S盒表。

列混合变换MixColumn的查表实现
在这里插入图片描述逆列混合变换Inv_MixColumn的查表实现
在这里插入图片描述

轮函数的查表实现

  • 整个轮函数都可以通过查表和一些简单的运算来实现。

十、AES的安全性

能够抵抗目前所有的已知攻击

  • 穷举攻击
  • 差分攻击
  • 线性攻击
  • Square攻击
  • 侧信道攻击

目前已有低于穷举复杂度的攻击方法,但是都还不能对AES造成本质的威胁。

1.AES的体现

  • AES体现商农的密码设计理论
  • 体现了公开设计原则
  • AES代表当今商业密码的最高水平

2.AES需要经过实际应用的检验

  • AES的大规模实际应用已经开始
  • 从目前的应用来看AES是安全的
  • 时间是检验AES密码安全的唯一标准。
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

旺旺的碎冰冰~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值