应用密码学-2016-(第9讲)的AES基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分组密码 AES 算法
1
主要内容
• 1 AES 候选算法产生过程 • 2 Rijndael 的数学基础和设计思想 • 3 Rijndael 的算法说明
2
1. AES 候选算法产生过程
• 背景
• 三重 DES的缺点:软件实现速度慢,分组长度64bit,从安全性和效 率性出发需要的分组长度更长。 • 1997 年 4 月 15 日美国国家标准和技术研究所( NIST )发起征集 AES ( AES 前进的密码技术标准)算法的活动,并成立了 AES 工作 组。要求是:比三重 DES 快,至少与三重 DES 一样安全,数据分组 长度为 128 比特,密钥长度为 128/192/256 比特。
m(x)是Rijndael开发者从30个8次不可约多项式中选出的 一个,因为它是第一个不可约多项式
11
2.1 Rijndael 的数学基础
运 算 过 程
12
2.1 Rijndael 的数学基础
乘法单位元:字节01 多项式 1
乘法逆元:
如果多项式a(x)的次数小于m(x),并且 gcd[m(x),b(x)]= 1,则存在a(x)的乘法逆元为 b(x),使得a(x)b(x)=1 mod m(x) 。 根据推广的Euclid算法求出。
十六进制表示法:“57” 多项式表示法:
b7x7+ b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0
“57”
x6+ x4+ x2+ x+1 。
8
2. Rijndael 的数学基础
AES 的理论基础定义在 GF(28) 其基本的运算有三种,分别: 加法 乘法 x 乘法
9
2.1 Rijndael 的数学基础
15
2.1 Rijndael 的数学基础Biblioteka Baidu
例如:
16
2.1 Rijndael 的数学基础
AES的字表示与运算
•AES数据处理的单位是字节和字 •一个字=4个字节 •一个字表示为系数取自GF(28)上的次数低于4次的多项式 例: 字:57 83 4A D1 57x3+83x2+4Ax+D1 •字加法:两多项式系数按位模2加 •字乘法:设a和c是两个字,a(x)和c(x)是其字多项式, AES定义a和c的乘积为 b(x)=a(x)c(x) mod x4+1
AES 参数之间的关系
轮数 Nr
Nb 4
Nb 6
Nb 8
Nk 4 Nk 6
10
12 14
12
12 14
14
14 14
Nk 8
7
2. Rijndael 的数学基础
1. 有限域 GF(28) 有限域中的元素可以用多种不同的方式表示。 二进制表示法(字节表示):
字节B=b7b6b5b4b3b2b1b0=01010111
•乘法:两元素多项式相乘,模 m(x) 例:57×83=C1 (x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1 mod m(x) 在 AES 算法中,若两个多项式进行乘法运算,运算的方法 为两个多项式相乘。若运算的结果超过 8 次方,则必须对 此结果对一个多项式 m(x) 进行模运算。 AES 算法中定义 m(x) 多项式(不可约多项式)为: m(x)=x8+x4+x3+x+1 (十六进制的11B)
• 历史时间:
– 1997年美国政府向社会公开征集高级数据加密标准(AES); – 1998年8月20日从应征的21个算法中选出15个。 – 1999年8月又选中其中5个算法。 – 2000年10月2日再选出1个算法。 – 2001年11月26日接受其作为标准。 – 2001年12月4日正式公布:FIPS PUB197。
3
4
1. AES 候选算法产生过程
美国商用密码政策的变化 公开征集
DES
秘密设计
EES
公开征集
AES
成功
不成功
预计成功
AES 的设计要求 ①安全性:抵抗所有已知攻击; ②实用性:适应各种环境,速度快; ③扩展性:分组长度和密钥长度可扩展。
5
1. AES 候选算法产生过程
AES特点 • 加密、解密相似但不对称,使用不同的算法。 • 分组密码:支持 128/192/256(/32= Nb) 数据块大小,支持 128/192/256(/32= Nk) 密钥长度 • 面向二进制的密码算法:能够加解密任何形式的计算机数据。 • 有较好的数学理论作为基础 • 结构简单、速度快 AES的应用 ①许多国际组织采用为标准。 ②尚未大范围应用。 ③产品形式:软件(嵌入式,应用软 件)、硬件(芯片,插卡) 6
13
2.1 Rijndael 的数学基础
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+x7+x mod m(x) =x7+x4+x3+1
若x7的系数=0,则为简单相乘:系数左移1位,右边补0。 若x7的系数=1,则取模m(x),减x8+x4+x3+x+1 。
17
2.1 Rijndael 的数学基础
AES的字表示与运算
•字乘法:设a(x)=a3x3 + a2x2 + a1x + a0 b(x)=b3x3 + b2x2 + b1x + b0 c(x)=c3x3 + c2x2 + c1x + c0
c(x)=a(x)b(x) mod x4+1,则 c 0 = a 0 b0 + a 3 b1 + a 2 b2 + a 1 b3 c1 = a1 b0 + a0 b1 + a3 b2 + a2 b3 c2 = a2 b0 + a1 b1 + a0 b2 + a3 b3 c3 = a3 b0 + a2 b1 + a1 b2 + a0 b3
14
2.1 Rijndael的数学基础
例如,‘57’·‘13’可按如下方式实现: ‘57’·‘02’=xtime(57)=‘AE’; ‘57’·‘04’=xtime(AE)=‘47’; ‘57’·‘08’=xtime(47)=‘8E’; ‘57’·‘10’=xtime(8E)=‘07’; ‘57’·‘13’=‘57’·(‘01’ ‘02’ ‘10’) =‘57’ ‘AE’ ‘07’=‘FE’。
•字x乘法:c(x)=xb(x) mod x4+1 •写成矩阵形式: c0 c1 c2 c3 = = = = 00 01 00 00 00 00 01 00 00 00 00 01 01 00 00 00 b0 b1 b2 b3
只有a1=“01”,其余全都是“00”
20
18
2.1 Rijndael 的数学基础
AES的字表示与运算
•字乘法:写成矩阵形式 c0 c1 c2 c3 = = = = a0 a1 a2 a3 a3 a0 a1 a2 a2 a3 a0 a1 a1 a2 a3 a0 b0 b1 b2 b3
19
2.1 Rijndael 的数学基础
AES的字表示与运算
2、 AES的GF(28)表示
•加法:两元素多项式的系数按位模 2加(即异或) 例:57+83=D4 (x6+x4+x2+x+1)⊕(x7+x+1)= x7+x6+x4+x2
加法逆元:每个元素的加法逆元等于自己,所以减 法和加法相同
10
2.1 Rijndael 的数学基础
2、 AES的GF(28)表示
相关文档
最新文档