4-高级数据加密标准
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b(x)=a(x)c(x) mod x4+1,则 b0 = a0 c0 + a3 c1 + a2 c2 + a1 c3
b1 = a1 c0 + a0 c1 + a3 c2 + a2 c3 b2 = a2 c0 + a1 c1 + a0 c2 + a3 c3 b3 = a3 c0 + a2 c1 + a1 c2 + a0 c3
五、轮密钥生成
①轮密钥根据密钥产生算法通过用户密钥得 到。
所有轮密钥比特的总数等于轮数加1乘以分组长度。
②密钥产生分两步进行:密钥扩展和轮密钥 选择
③密钥扩展将用户密钥扩展为一个扩展密钥。
④密钥选择从扩展密钥中选出轮密钥。
五、轮密钥生成
1、密钥扩展
①密钥扩展产生扩展密钥。 ② 用 一 个 字 元 素 的 一 维 数 组 W[Nb*(Nr+1)] 表 示 扩 展密钥。 ③用户密钥放在数组最开始的Nk个字中。
4、S盒变换 ByteSub(State)
④S盒变换:
a)将输入字节用其GF(28)上的逆来代替;
b)对a)的结果作如下的仿射变换:
(以x0- x7作输入,以y0- y7作输出。)
四、AES的基本变换
4、S盒变换 ByteSub(State)
y0 y1 y2 y3 = y4 y5 y6 y7
10001111 11000111 11100011 11110001 11111000 01111100 00111110 00011111
四、AES的基本变换
4、S盒变换 ByteSub(State)
①S盒变换是AES的唯一的非线性变换,是AES安 全的关键。
②AES使用16个相同的S盒,DES使用8个不相同的 S盒。
③AES的S盒有8位输入8位输出,DES的S盒有6位 输入4位输出。
8
6
S盒(AES) 8
S盒(DES) 4
四、AES的基本变换
密码学
高级数据加密标准
AES
一、AES的概况
1、历史时间:
– 1997年美国政府向社会公开征集高级数据加 密标准(AES);
–1998年8月20日从应征的21个算法中选出15 个。
–1999年8月又选中其中5个算法。 –2000年10月2日再选出1个算法。 –2001年11月26日接受其作为标准。
k0,0 k0,1 k0,2 k0,3 k1,0 k1,1 k1,2 k1,3 k2,0 k2,1 k2,2 k2,3 k3,0 k3,1 k3,2 k3,3
四、AES的基本变换
2、状态
⑤Nb、Nk、Nr之间的关系: Nr Nb=4 Nb=6 Nb=8 Nk=4 10 12 14 Nk=6 12 12 14 Nk=8 14 14 14
一、AES的概况
3、AES的设计要求
①安全性:抵抗所有已知攻击; ②实用性:适应各种环境,速度快; ③扩展性:分组长度和密钥长度可扩展。
一、AES的概况
4、整体特点
①分组密码:分组长度和密钥长度可变,可独立 地为128/192/256等,现在一般取 128 。 ②面向二进制的密码算法:能够加解密任何形式 的计算机数据。 ③不是对合运算:加、解密使用不同的算法。 ④综合运用置换、代换、代数等多种密码技术 ⑤整体结构:基本轮函数加迭代。轮数可变, ≥10
wenku.baidu.com
四、AES的基本变换
5、行移位变换 ShiftRow(State)
①行移位变换对状态的行进行循环移位。
②第 0行不移位,第1行移 C1字节,第2行移 C2 字节,第3行移 C3字节。
③ C1,C2,C3按表取值
Nb
C1 C2 C3
4
1
2
3
6
1
2
3
四、AES的基本变换
5、行移位变换 ShiftRow(State)
三、数学基础
3、 AES的字表示与运算
•字乘法:写成矩阵形式
b0 = c0 c3 c2 c1 a0 b1 = c1 c0 c3 c2 a1 b2 = c2 c1 c0 c3 a2 b3 = c3 c2 c1 c0 a3
注意:1.x4+1是可约多项式,字c(x)不一定有逆; 2.但在AES中选择c(x)固定,且有逆。
例3:57×83=C1
(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1 mod m(x) 乘法单位元:字节01 多项式 1 •乘法逆元:
设a(x)的逆元为b(x),则 a(x)b(x)=1 mod m(x) 。 根据Euclid算法求出。
三、数学基础
2、 AES的GF(28)表示
• 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)
•写成矩阵形式
b0 = 02 03 01 01 a0 b1 = 01 02 03 01 a1 b2 = 01 01 02 03 a2 b3 = 03 01 01 02 a3
四、AES的基本变换
7、轮密钥加变换 AddRoundKey()
① 把轮密钥与状态进行模2相加。 ② 轮密钥根据密钥产生算法产生。 ③ 轮密钥长度等于数据块长度。
x0
1
x1
1
x2
0
x3 + 0
x4
0
x5
1
x6
1
x7
1
四、AES的基本变换
4、S盒变换 ByteSub(State)
注意:
S盒变换的第一步是把字节的值用它的乘法 逆来代替,是一种非线性变换。
由于系数矩阵中每列都含有 5个1,这说明改 变输入中的任意一位,将影响输出中的 5位 发生变化。
由于系数矩阵中每行都含有 5个1,这说明输 出中的每一位,都与输入中的 5位相关。
• GF(28)的特征为 2 。
三、数学基础
2、 AES的GF(28)表示
•AES采用的既约模多项式:
m(x)=x8+x4+x3+x+1
•AES采用GF(28)的多项式元素表示。
字节B=b7b6b5b4b3b2b1b0可表示成GF(2)上的多项 式:
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0
57x3+83x2+4Ax+D1
•字加法:两多项式系数按位模2加
•字乘法:设a和c是两个字,a(x)和c(x)是其字
多项式,AES定义a和c的乘积为
b(x)=a(x)c(x) mod x4+1
三、数学基础
3、 AES的字表示与运算
•字乘法:设a(x)=a3x3 + a2x2 + a1x + a0
c(x)=c3x3 + c2x2 + c1x + c0 b(x)=b3x3 + b2x2 + b1x + b0
四、AES的基本变换
3、轮变换-加密轮函数
②最后一轮的轮变换: Round(State,RounKey)
ByteSub(State); S盒变换 ShiftRow(State);行移位变换 AddRoundKey(State,RoundKey) 轮密钥加变换
注:最后一轮的轮变换中没有列混合变换。
Fed–er2a0l0I1n年fo12rm月a4日tio正n式P公ro布c:esFsIiPnSg-S19t7a。ndards
一、AES的概况
2、AES产生的背景
①1984年12月里根总统下令由国家保密局研制 新密码标准,以取代DES。 ②1991年新密码开始试用并征求意见。
民众要求公开算法,并去掉法律监督。 ③1994年颁布新密码标准(EES)。 ④1995年5月贝尔实验室的博士生M.Blaze在 PC 机上用45分钟攻击法律监督字段获得成功。 ⑤1995年7月美国政府放弃用EES加密数据。 ⑥1997年美国政府向社会公开征AES。
轮密钥加
轮
函
数
Nr轮
迭代控制
128位密文
三、数学基础
1、AES的基础域是有限域 GF(28)
•一个GF(2)上的8次既约多项式可生成一个 GF(28) • GF(28)的全体元素构成加法交换群,线性空间。 •GF(28)的非零元素构成乘法循环群。 •GF(28)中的元素有多种表示:
字节: GF(28)={a7,a6,…a1,a0} 多项式形式: GF(28)={a7x7+a6x6+…+a1x+a0} 指数形式:GF(28)*={0, 1… 254} 对数形式:GF(28)*={0, 1… 254}
例:字节57=01010111的多项式表示:
01010111
x6+x4+x2+x+1
三、数学基础
2、 AES的GF(28)表示
•加法:两元素多项式的系数按位模 2加
例2:57+83=D4 (x6+x4+x2+x+1)⊕(x7+x+1)= x7+x6+x4+x2
•乘法:两元素多项式相乘,模 m(x)
=x7+x4+x3+1 若x7的系数=0,则为简单相乘:系数左移。 若x7的系数=1,则取模m(x),减x8+x4+x3+x+1 。
三、数学基础
3、 AES的字表示与运算
•AES数据处理的单位是字节和字
•一个字=4个字节
•一个字表示为系数取自GF(28)上的次数低于4次
的多项式
例:
字:57 83 4A D1
四、AES的基本变换
3、轮变换-加密轮函数
①标准轮变换:
Round(State,RoundKey)
ByteSub(State); S盒变换 ShiftRow(State); 行移位变换 MixColumn(State); 列混合变换
AddRoundKey(State,RoundKey)
轮密钥加变换
④其它的字由它前面的字经过处理后得到。 ⑤有 Nk≤6 和 Nk>6 两种密钥扩展算法。
五、轮密钥生成
1、密钥扩展
⑴ Nk≤6 的密钥扩展 ①最前面的Nk个字是由用户密钥填充的。
②之后的每一个字W[j]等于前面的字W[j-1]与Nk 个位置之前的字W[j-Nk]的异或。
③而且对于Nk的整数倍的位置处的字,在异或之 前,对W[j-1]进行Rotl变换和ByteSub变换,再异 或一个轮常数Rcon 。
④行移位变换属于置换,本质在于把数据打乱重排。 ⑤AES的行移位变换属于线性变换。
四、AES的基本变换
6、列混合变换 MixColumn(State)
①列混合变换把状态的列视为GF(28)上的多项 式a(x),乘以一个固定的多项式c(x),并模 x4+1:
b(x)=a(x)c(x) mod x4+1
•轮常数Rcon与Nk无关,且定义为:
五、轮密钥生成
W0 W1 W2 … WNk-1 WNk WNk+1 …
用户密钥
• 当 j 不是Nk的整数倍时:
Wj=Wj-Nk ⊕ Wj-1
• 当 j 是Nk的整数倍时:
Wj=Wj-Nk ⊕ByteSub (Rotl ( Wj-1) )⊕ Rcon[j/Nk];
五、轮密钥生成
说明: • Rotl是一个字里的字节以字节为单位循环左移 位函数,设W=(A,B,C,D),则Rotl(W)= (B,C,D,A)。
三、数学基础
3、 AES的字表示与运算
•字x乘法:p(x)=xb(x) mod x4+1 •写成矩阵形式:
p0 = 00 00 00 01 b0 p1 = 01 00 00 00 b1 p2 = 00 01 00 00 b2 p3 = 00 00 01 00 b3
注意:因为模x4+1,字x乘法相当于字节循环移位;
四、AES的基本变换
1、AES的数据处理方式
①字节 ②字 ③状态
2、状态
①加解密过程中的中间数据。 ②以字节为元素的矩阵,或二维数组。
四、AES的基本变换
2、状态
③符号:Nb-明密文所含的数据的字数。 Nk-密钥所含的数据的字数。 Nr-迭代轮数。
④ 例:Nb=4时的状态 Nk=4时的密钥数组
a0,0 a0,1 a0,2 a0,3 a1,0 a1,1 a1,2 a1,3 a2,0 a2,1 a2,2 a2,3 a3,0 a3,1 a3,2 a3,3
其中,c(x)=03x3+01x2+01x+02
②列混合变换属于代替变换。
③c(x)与x4+1互素,从而保证c(x)存在逆多项 式d(x),而c(x)d(x)=1 mod 。 只有逆多项式 d(x)存在,才能正确进行解密。
四、AES的基本变换
6、列混合变换 MixColumn(State)
b(x)=a(x)c(x) mod x4+1
一、AES的概况
5、应用
①许多国际组织采用为标准。 ②尚未大范围应用。 ③产品形式:软件(嵌入式,应用软件)
硬件(芯片,插卡)
6、结论
• 只有通过实际应用的检验才能证明其安全。 • 我们相信:经过全世界广泛分析的AES是不负
众望的。
二、框图
密钥 轮密钥产生
Nr个轮密钥
128位明文 初始轮密钥加
S盒变换 行移位与列混淆
b1 = a1 c0 + a0 c1 + a3 c2 + a2 c3 b2 = a2 c0 + a1 c1 + a0 c2 + a3 c3 b3 = a3 c0 + a2 c1 + a1 c2 + a0 c3
五、轮密钥生成
①轮密钥根据密钥产生算法通过用户密钥得 到。
所有轮密钥比特的总数等于轮数加1乘以分组长度。
②密钥产生分两步进行:密钥扩展和轮密钥 选择
③密钥扩展将用户密钥扩展为一个扩展密钥。
④密钥选择从扩展密钥中选出轮密钥。
五、轮密钥生成
1、密钥扩展
①密钥扩展产生扩展密钥。 ② 用 一 个 字 元 素 的 一 维 数 组 W[Nb*(Nr+1)] 表 示 扩 展密钥。 ③用户密钥放在数组最开始的Nk个字中。
4、S盒变换 ByteSub(State)
④S盒变换:
a)将输入字节用其GF(28)上的逆来代替;
b)对a)的结果作如下的仿射变换:
(以x0- x7作输入,以y0- y7作输出。)
四、AES的基本变换
4、S盒变换 ByteSub(State)
y0 y1 y2 y3 = y4 y5 y6 y7
10001111 11000111 11100011 11110001 11111000 01111100 00111110 00011111
四、AES的基本变换
4、S盒变换 ByteSub(State)
①S盒变换是AES的唯一的非线性变换,是AES安 全的关键。
②AES使用16个相同的S盒,DES使用8个不相同的 S盒。
③AES的S盒有8位输入8位输出,DES的S盒有6位 输入4位输出。
8
6
S盒(AES) 8
S盒(DES) 4
四、AES的基本变换
密码学
高级数据加密标准
AES
一、AES的概况
1、历史时间:
– 1997年美国政府向社会公开征集高级数据加 密标准(AES);
–1998年8月20日从应征的21个算法中选出15 个。
–1999年8月又选中其中5个算法。 –2000年10月2日再选出1个算法。 –2001年11月26日接受其作为标准。
k0,0 k0,1 k0,2 k0,3 k1,0 k1,1 k1,2 k1,3 k2,0 k2,1 k2,2 k2,3 k3,0 k3,1 k3,2 k3,3
四、AES的基本变换
2、状态
⑤Nb、Nk、Nr之间的关系: Nr Nb=4 Nb=6 Nb=8 Nk=4 10 12 14 Nk=6 12 12 14 Nk=8 14 14 14
一、AES的概况
3、AES的设计要求
①安全性:抵抗所有已知攻击; ②实用性:适应各种环境,速度快; ③扩展性:分组长度和密钥长度可扩展。
一、AES的概况
4、整体特点
①分组密码:分组长度和密钥长度可变,可独立 地为128/192/256等,现在一般取 128 。 ②面向二进制的密码算法:能够加解密任何形式 的计算机数据。 ③不是对合运算:加、解密使用不同的算法。 ④综合运用置换、代换、代数等多种密码技术 ⑤整体结构:基本轮函数加迭代。轮数可变, ≥10
wenku.baidu.com
四、AES的基本变换
5、行移位变换 ShiftRow(State)
①行移位变换对状态的行进行循环移位。
②第 0行不移位,第1行移 C1字节,第2行移 C2 字节,第3行移 C3字节。
③ C1,C2,C3按表取值
Nb
C1 C2 C3
4
1
2
3
6
1
2
3
四、AES的基本变换
5、行移位变换 ShiftRow(State)
三、数学基础
3、 AES的字表示与运算
•字乘法:写成矩阵形式
b0 = c0 c3 c2 c1 a0 b1 = c1 c0 c3 c2 a1 b2 = c2 c1 c0 c3 a2 b3 = c3 c2 c1 c0 a3
注意:1.x4+1是可约多项式,字c(x)不一定有逆; 2.但在AES中选择c(x)固定,且有逆。
例3:57×83=C1
(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1 mod m(x) 乘法单位元:字节01 多项式 1 •乘法逆元:
设a(x)的逆元为b(x),则 a(x)b(x)=1 mod m(x) 。 根据Euclid算法求出。
三、数学基础
2、 AES的GF(28)表示
• 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)
•写成矩阵形式
b0 = 02 03 01 01 a0 b1 = 01 02 03 01 a1 b2 = 01 01 02 03 a2 b3 = 03 01 01 02 a3
四、AES的基本变换
7、轮密钥加变换 AddRoundKey()
① 把轮密钥与状态进行模2相加。 ② 轮密钥根据密钥产生算法产生。 ③ 轮密钥长度等于数据块长度。
x0
1
x1
1
x2
0
x3 + 0
x4
0
x5
1
x6
1
x7
1
四、AES的基本变换
4、S盒变换 ByteSub(State)
注意:
S盒变换的第一步是把字节的值用它的乘法 逆来代替,是一种非线性变换。
由于系数矩阵中每列都含有 5个1,这说明改 变输入中的任意一位,将影响输出中的 5位 发生变化。
由于系数矩阵中每行都含有 5个1,这说明输 出中的每一位,都与输入中的 5位相关。
• GF(28)的特征为 2 。
三、数学基础
2、 AES的GF(28)表示
•AES采用的既约模多项式:
m(x)=x8+x4+x3+x+1
•AES采用GF(28)的多项式元素表示。
字节B=b7b6b5b4b3b2b1b0可表示成GF(2)上的多项 式:
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0
57x3+83x2+4Ax+D1
•字加法:两多项式系数按位模2加
•字乘法:设a和c是两个字,a(x)和c(x)是其字
多项式,AES定义a和c的乘积为
b(x)=a(x)c(x) mod x4+1
三、数学基础
3、 AES的字表示与运算
•字乘法:设a(x)=a3x3 + a2x2 + a1x + a0
c(x)=c3x3 + c2x2 + c1x + c0 b(x)=b3x3 + b2x2 + b1x + b0
四、AES的基本变换
3、轮变换-加密轮函数
②最后一轮的轮变换: Round(State,RounKey)
ByteSub(State); S盒变换 ShiftRow(State);行移位变换 AddRoundKey(State,RoundKey) 轮密钥加变换
注:最后一轮的轮变换中没有列混合变换。
Fed–er2a0l0I1n年fo12rm月a4日tio正n式P公ro布c:esFsIiPnSg-S19t7a。ndards
一、AES的概况
2、AES产生的背景
①1984年12月里根总统下令由国家保密局研制 新密码标准,以取代DES。 ②1991年新密码开始试用并征求意见。
民众要求公开算法,并去掉法律监督。 ③1994年颁布新密码标准(EES)。 ④1995年5月贝尔实验室的博士生M.Blaze在 PC 机上用45分钟攻击法律监督字段获得成功。 ⑤1995年7月美国政府放弃用EES加密数据。 ⑥1997年美国政府向社会公开征AES。
轮密钥加
轮
函
数
Nr轮
迭代控制
128位密文
三、数学基础
1、AES的基础域是有限域 GF(28)
•一个GF(2)上的8次既约多项式可生成一个 GF(28) • GF(28)的全体元素构成加法交换群,线性空间。 •GF(28)的非零元素构成乘法循环群。 •GF(28)中的元素有多种表示:
字节: GF(28)={a7,a6,…a1,a0} 多项式形式: GF(28)={a7x7+a6x6+…+a1x+a0} 指数形式:GF(28)*={0, 1… 254} 对数形式:GF(28)*={0, 1… 254}
例:字节57=01010111的多项式表示:
01010111
x6+x4+x2+x+1
三、数学基础
2、 AES的GF(28)表示
•加法:两元素多项式的系数按位模 2加
例2:57+83=D4 (x6+x4+x2+x+1)⊕(x7+x+1)= x7+x6+x4+x2
•乘法:两元素多项式相乘,模 m(x)
=x7+x4+x3+1 若x7的系数=0,则为简单相乘:系数左移。 若x7的系数=1,则取模m(x),减x8+x4+x3+x+1 。
三、数学基础
3、 AES的字表示与运算
•AES数据处理的单位是字节和字
•一个字=4个字节
•一个字表示为系数取自GF(28)上的次数低于4次
的多项式
例:
字:57 83 4A D1
四、AES的基本变换
3、轮变换-加密轮函数
①标准轮变换:
Round(State,RoundKey)
ByteSub(State); S盒变换 ShiftRow(State); 行移位变换 MixColumn(State); 列混合变换
AddRoundKey(State,RoundKey)
轮密钥加变换
④其它的字由它前面的字经过处理后得到。 ⑤有 Nk≤6 和 Nk>6 两种密钥扩展算法。
五、轮密钥生成
1、密钥扩展
⑴ Nk≤6 的密钥扩展 ①最前面的Nk个字是由用户密钥填充的。
②之后的每一个字W[j]等于前面的字W[j-1]与Nk 个位置之前的字W[j-Nk]的异或。
③而且对于Nk的整数倍的位置处的字,在异或之 前,对W[j-1]进行Rotl变换和ByteSub变换,再异 或一个轮常数Rcon 。
④行移位变换属于置换,本质在于把数据打乱重排。 ⑤AES的行移位变换属于线性变换。
四、AES的基本变换
6、列混合变换 MixColumn(State)
①列混合变换把状态的列视为GF(28)上的多项 式a(x),乘以一个固定的多项式c(x),并模 x4+1:
b(x)=a(x)c(x) mod x4+1
•轮常数Rcon与Nk无关,且定义为:
五、轮密钥生成
W0 W1 W2 … WNk-1 WNk WNk+1 …
用户密钥
• 当 j 不是Nk的整数倍时:
Wj=Wj-Nk ⊕ Wj-1
• 当 j 是Nk的整数倍时:
Wj=Wj-Nk ⊕ByteSub (Rotl ( Wj-1) )⊕ Rcon[j/Nk];
五、轮密钥生成
说明: • Rotl是一个字里的字节以字节为单位循环左移 位函数,设W=(A,B,C,D),则Rotl(W)= (B,C,D,A)。
三、数学基础
3、 AES的字表示与运算
•字x乘法:p(x)=xb(x) mod x4+1 •写成矩阵形式:
p0 = 00 00 00 01 b0 p1 = 01 00 00 00 b1 p2 = 00 01 00 00 b2 p3 = 00 00 01 00 b3
注意:因为模x4+1,字x乘法相当于字节循环移位;
四、AES的基本变换
1、AES的数据处理方式
①字节 ②字 ③状态
2、状态
①加解密过程中的中间数据。 ②以字节为元素的矩阵,或二维数组。
四、AES的基本变换
2、状态
③符号:Nb-明密文所含的数据的字数。 Nk-密钥所含的数据的字数。 Nr-迭代轮数。
④ 例:Nb=4时的状态 Nk=4时的密钥数组
a0,0 a0,1 a0,2 a0,3 a1,0 a1,1 a1,2 a1,3 a2,0 a2,1 a2,2 a2,3 a3,0 a3,1 a3,2 a3,3
其中,c(x)=03x3+01x2+01x+02
②列混合变换属于代替变换。
③c(x)与x4+1互素,从而保证c(x)存在逆多项 式d(x),而c(x)d(x)=1 mod 。 只有逆多项式 d(x)存在,才能正确进行解密。
四、AES的基本变换
6、列混合变换 MixColumn(State)
b(x)=a(x)c(x) mod x4+1
一、AES的概况
5、应用
①许多国际组织采用为标准。 ②尚未大范围应用。 ③产品形式:软件(嵌入式,应用软件)
硬件(芯片,插卡)
6、结论
• 只有通过实际应用的检验才能证明其安全。 • 我们相信:经过全世界广泛分析的AES是不负
众望的。
二、框图
密钥 轮密钥产生
Nr个轮密钥
128位明文 初始轮密钥加
S盒变换 行移位与列混淆