【0408】AES

AES

数学基础

1.多项式加法

系数异或

2.多项式乘法

不可约多项式=既约多项式

这里的不可约多项式X^8+ X4+X3+X+1

3.系数在GF(X^8)上的多项式计算

乘法

在AES中,使用的模数多项式取:M(x)=x^4+1,M(x)是可约多项式,不是所有多项式都有对应可逆多项式,但AES选择了一个有逆元的固定多项式:(03,01,01,02)

总体描述

1991年开始试用EES:不公开算法,只提供芯片;新密码设计要求:算法是安全的,但通过法律允许可破译监听;民众要求公开算法,并去掉法律监督

AES加密算法采用分组密码体制,每个分组数据的长度为128位 16个字节,密钥长度可以是 128位16个字节、192位或256位。AES 的密钥长度与加解密轮数Nr之间的变动,如果密钥长度为 128 位,则 Nr=10;如果密钥长度为 192 位,Nr=12;如果密钥长度为 256 位,则 Nr=14。不是对合算法,加解密使用不同的算法。

算法流程

字节代替变换ByteSub( ) 是一个关于字节的非线性变换。 S盒变换是AES唯一的非线性变换,也是AES安全的关键。AES使用16个相同的S盒,DES使用8个不同的S盒压缩。

(1)一个字节在GF(2^8)上用乘法逆元T替代

(2)使用仿射变换Y=MxT+B 【M是8x8矩阵,T是列矩阵】

特点: 1. S盒第1步就是把各字节用其乘法逆元来代替,是一种非线性变换; 2. 系数矩阵每一行都含有5个1,说明输出中的每1位,都与输入中的5位 相关; 3. 系数矩阵每一列都含有5个1,说明改变输入中的任1位,将影响输出 中的5位发生变化; 4. 相当于DES中的S盒,它为算法提供非线性变换。

行移位(ShiftRows) 变换中,状态矩阵中的每一行将以字节为单位,循环左移不同的位移量 。【第一行左移0个字节,第二行左移1个字节,…】

列混合变换MixColumns() 对一个状态逐列进行变换, 它将一个状态的每一列视为有限域GF(2^8)上的一个多项式。

轮密钥加法变换AddRoundKey( ) 简单地将输入阵列和一个轮密钥进行简单的按位异或(模2加)运算,轮密钥按顺序取自扩展密钥,而扩展密钥又是由原始工作密钥经过扩展后得到的。

加密时的轮变换

(1)初始轮密钥加法;

(2)中间轮轮变换;

先进行字节替换,再行位移,再列混合,再轮密钥加法变换。

Square结构,每一轮由三层组成:

(1)非线性层:由16个S盒并置而成

(2)线性混合层:确保高度扩散

(3)密钥加层:子密钥简单地异或到中间状态下

(3)最后轮的轮变换;

先进行字节替换,再行位移,再轮密钥加法变换

密钥编排

轮密钥是由密钥经过一个扩展算法产生的,其长度是由加解密轮数决定,具体地说,轮密钥有(分 组长度)*(Nr + 1)位。例如:AES-128的加解密轮数为10,则轮密钥共有128 * (10 + 1) = 1408 位。 密钥扩展算法以一个字(即4个字节)为基本单位。

Rotkey(A,B,C,D),Subkey(S(A),S(B),S©,S(D))

解密时的轮变换

字节替代,行变换,列混合【使用{03,01,01,02}的逆{0E 0B 0D 09}】

解密特点

1.AES的字节替换和行位移可以交换顺序运算

2.列混合操作是线性变换,【轮密钥加法可以交换运算顺序,密钥换成MRK】

AES的解密过程使用的子密钥相同,但使用的顺序相反

AES特点

1.安全问题:AES尚无已知的安全性的攻击,可以很好的抵抗差分攻击与线性攻击;

2.效率问题:运算速度快,无论在有无反馈模式的计算环境下,AES的硬件、软件实现都表现出了良好的性能。S盒和行位移是并行的,方便并行计算。相对来说,解密代价会比加密代价高一些(列混淆的逆矩阵)

SM4

分组密码算法SM4的分组长度和密钥长度都是128bit。32轮非线性迭代算法

SM4比AES的S盒多一个仿射变换

实际上一轮只处理了一个字(32bit)

加密和解密的变换结构相同,不同的只是轮密钥的使用顺序.

算法具有对合特性:解密算法和加密算法结构相同,只是轮密钥反序使用(与DES类似)

密码结构:非对称Feistel结构

经过了国内众多的安全性评估;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值