首页 技术 正文
技术 2022年11月6日
0 收藏 565 点赞 509 浏览 2708 个字

介绍完S-PN型结构之后,下面介绍AES算法。由于内容比较多所以将其分为两篇来介绍,本篇主要讲AES的历史时间节点、产生背景、与DES的对比、算法框图(粗略)以及一些数学基础

7.1 AES的历史时间节点及产生背景

7.1.1 AES的历史时间节点

1997年,美国政府(NIST)向社会公开征集高级数据加密标准(AES):

第一轮:1998年8月20日从应征的21个算法中选出15个算法。

第二轮:1999年8月又选中其中5个算法。

第三轮:2000年10月2日再选出1个算法。

2001年11月26日,NIST接受其为标准。

7.1.2 AES的产生背景

① 1984年12月,里根总统下令由国家安全局(NSA)研制新密码标准,以取代DES.

② 1991年新密码开始试用并征求意见。但其有如下特点:

·不公开算法,只提供芯片;

·新密码设计成双刃剑,它是安全的。但通过法律允许可破译监听;

·民众要求公开算法,并去掉法律监督。

③ 1994年,颁布新密码标准EES.

④ 1995年5月,贝尔实验室博士生M.Blaze在PC机上用45分钟攻击法律监督字段获得成功。

⑤ 1995年7月,美国政府放弃用EES加密数据。

⑥ 1997年,美国政府向社会公开征集AES.

⑦ 从DES到AES反映了美国商用密码政策的变化。

公开征集DES(成功)  ->  秘密设计EES(不成功)  ->  公开征集AES(成功)

这说明:① 商用密码应当坚持公开设计、公布算法的政策,这是商用密码的客观规律。

② 群众的力量是伟大的。

7.1.3 AES的设计要求

① 安全性:可以抵抗目前所有的已知攻击。

② 实用性:适应各种应用环境,加解密速度快。

③ 扩展性:分组长度和密钥长度可扩展,可以适应社会对保密性不断提高的需求。

7.2 AES与DES的对比

在讲述具体的算法之前,让我们来看一下AES和DES的对比。

7.3 AES算法框图

接下来让我们看一下AES算法的框图,可以看到AES算法中也有S盒,但要注意这里的S盒和DES算法中的S盒并不一样,具体内容将在后面详细阐述。

7.4 数学基础

由于AES中涉及到一些计算需要一些简单的数学基础,下面将对其进行简单讲解。

7.4.1 AES的基础域是有限域GF(28)

  • 一个字节的全体256种取值构成一个GF(28)
  • 一个GF(2)上的8次既约多项式可以生成一个GF(28)
  • GF(28)的全体元素构成加法交换群
  • GF(28)的非零元素构成乘法交换群 (这意味着有生成元)
  • GF(28)中的元素有多种表示:

字节:GF(28)={(a7,a6,a5,…,a1,a0)|ai∈GF(2)}

多项式形式:GF(28)={a7x7+a6x6+a5x5+…+a1x+a0|ai∈GF(2)}

指数形式:GF(28)*={α01,…,α254},α是一个本原元。(去掉零元素是乘法循环群,其余元素都可以用生成元来表示)

对数形式:GF(28)*={0,1,2,…,254}

  • GF(28)的特征为2.

7.4.2 AES的GF(28)表示

AES采用GF(2)上既约多项式m(x)生成GF(28):

m(x)=x8+x4+x3+x+1

  • GF(28)的元素采用GF(2)上的多项式表示:

字节B=b7b6b5b4b3b2b1b0可表示成GF(2)上的多项式:b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0.

例:57 = 0101 0111 多项式表示为:x6+x4+x2+x+1.

  • 加法:两个元素多项式的系数按位模2加

例:57 + 83 = D4

(x6+x4+x2+x+1)+(x7+x+1) = x7+x6+x4+x2

而x7+x6+x4+x2对应1101 0100,即D4.

  • 乘法:两个元素多项式相乘,模m(x)

例:57 × 83 = C1

(x6+x4+x2+x+1)×(x7+x+1) = x13+x7+x6+x11+x5+x4+x9+x3+x2+x8+x2+x+x7+x+1

= x13+x11+x9+x8+x6+x5+x4+x3+1

= x7+x6+1    mod x8+x4+x3+x+1

  • 乘法单位元:字节01 多项式表示为:1
  • 乘法逆元

设a(x)的逆元为b(x),则a(x)b(x)=1 mod m(x)

可根据Euclid算法可求出b(x).

  • x乘法xtime:用x乘GF(28)的元素

例:xtime(57) = x (x6+x4+x2+x+1) = x7+x5+x3+x2+x

xtime(83) = x(x7+x+1)= x8+x2+x mod m(x) = x7+x4+x3+1

若x7的系数为0,则为简单相乘,系数左移;若x7的系数为1,则乘后取模m(x),即乘后减去x8+x4+x3+x+1.

  • 多项式求逆

下面通过一个例子来说明多项式求逆的方法:

在求解后还可以将两者相乘看结果是否mod m(x)与1同余,如果是则所求结果正确。这个写法是参考:手动推导计算AES中的s盒的输出

7.4.3 AES的字表示与运算

  • AES数据处理单位是字节和字。

一个字 = 4个字节 = 32比特

一个字可以表示为系数取自GF(28)上的次数低于4次的多项式。

例:字 57 83 4A D1 -> 57x3+83x2+4Ax+D1

  • 字加法:两多项式系数按位模2加(不进位)

例:(57x3+83x2+4Ax+D1)+(Ax3+B3x2+EF)=5Dx3+30x2+4Ax+3F.

  • 字乘法:设a和c是两个字,a(x)和c(x)是其字多项式。AES定义a和c的乘积b为

b(x) = a(x)c(x)   mod x4+1

设:a(x)=a3x3+a2x2+a1x+a0

c(x)=c3x3+c2x2+c1x+c0

b(x)=b3x3+b2x2+b1x+b0

则 b(x) = a(x)c(x) mod x4+1为:

b= a0c0+a3c1+a2c2+a1c3

b= a1c0+a0c1+a3c2+a2c3

b= a2c0+a1c1+a0c2+a3c3

b= a3c0+a2c1+a1c2+a0c3

写成矩阵的形式:

注意:①x4+1是可约多项式,字c(x)不一定有逆。

②但AES选择的c(x)有逆,c(x)=03x3+01x2+01x+02.(0多1少,速度快)

③c(x)有逆的条件是(x4+1,c(x))=1

  • 字的x乘法:设b(x)是一个字,p(x)=xb(x) mod x4+1

写成矩阵的形式:

注意:因为模x4+1,字的x乘法相当于按字节循环移位。

7.4.4 AES的数据处理方式

AES的数据处理方式有:按字节处理、按字处理 和 按状态处理。

状态:

  • 加解密过程中的中间数据
  • 以字节为元素的矩阵或二维数组
  • 符号:Nb——明密文所含的字数;Nk——密钥所含的字数;Nr——迭代轮数。

参考博客:

[1] 手动推导计算AES中的s盒的输出

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,116
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,588
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,434
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,204
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,840
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,925