有限域与AES算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 交换群(Abelian Group)
–交换律:任意 a, b ∈G,则 a•b = b•a
环
• 环:记为{R, +,x},两个二元运算集合
– 乘法封闭性: a, b ∈R,则 ab ∈R –乘法结合律:a,b,c ∈R,则 a(bc)= (ab)c –分配律: a,b,c ∈R ,则 a(b+c)= ab + ac
最简单的有限域GF(2)
+
0
0
0
1
1
*
0 1
0
0 0
1
0 1
w
0 1
-w
0 1
w-1
— 1
1
1
0
加法等价于异或运算,乘法等价于逻辑ቤተ መጻሕፍቲ ባይዱ运算。
GF(7)的代数运算
多项式运算
设集合S由域Zn上次数小于n-1的所有多项式组成, 每一个多项式具有如下形式:
f ( x) an1 x n1 an2 x n2 a1 x a0 ai x i
0 0 0
5 6 7 2 4 6 7 2 5 4 0 4 1 6 3 6 4 2 3 2 1
3 3 4 5 6 7
4 4 5 6 7 0 5 5 6 7 0 1
0 1 2
1 2 3 2 3 4
6 6 7 0 1 2
7 7 0 1 2 3
3 4 5
4 5 6
模算术的性质
Euclid算法计算最大公因子
– – – – – 至少与三重DES一样安全 比3DES快 数据分组长度为128比特 密钥长度为128/192/256比特 软件和硬件平台上都适用
AES的背景
• 1998年8月12日,在首届AES会议上指定了15个候 选算法。 • 1999年3月22日第二次AES会议上,将候选名单减 少为5 个,这5 个算法是RC6 , Rijndael SERPENT,Twofish和MARS。 • 2000年4月13日,第三次AES会议上,对这5个候 选算法的各种分析结果进行了讨论。 • 2000年10月2日,NIST宣布了获胜者—Rijndael 算 法,2001 年11 月出版了最终标准FIPS PUB197。 • NIST于2002年5月26日制定了新的高级加密标准 (AES)规范。
GF(23)上的加法和乘法表
AES 算 法
AES的背景
• 3DES的优点和缺点
– 优点:
• 密钥长度168位,可以抗穷举攻击; • 底层加密算法采用DES,具有很强的抗密码分析能 力
– 缺点:
• 轮的数量多,计算速度慢 • 分组长度为64位,效率低 • 难以用软件有效的实现算法
AES的背景
• 1997年4月15日,NIST发起征集高级加密标准AES 的活动,活动目的是确定一个非保密的、可以公开 技术细节的、全球免费使用的分组密码算法,作为 新的数据加密标准。 • 1997年9月12日,美国联邦登记处公布了正式征集 AES候选算法的通告。作为进入AES候选过程的一 个条件,开发者承诺放弃被选中算法的知识产权。 • 对AES的基本要求是:
模算术的性质
• 剩余类
– 定义:比n小的非负整数集合为Zn, Zn= {0,1,2,…,n-1},这个集合称为剩余类集合,或 模n的剩余类。 – Zn中的每一个整数都代表一个剩余类 – 模n的k约化。
• 模运算有下述性质:
– 若n|(a-b),则a≡b mod n – a≡b mod n等价于b≡a mod n – 若a≡b mod n且b≡c mod n ,则a≡c mod n
Rijndael简介
• • • • • • 不属于Feistel结构 加密、解密相似但不对称 支持128数据块大小 支持128/192/256(/32=Nk)密钥长度 有较好的数学理论作为基础 结构简单、速度快
AES参数
AES算法结构
与DES比较
用S盒完成
简单置换
利用域GF(2^8) 上的算术特性
字节代替变换分析
• 能够防止已有的各种密码分析攻击; • 输入位和输出位之间的相关性几乎没有; • S盒必须是可逆的 即 逆S盒[S盒(a)]=a,但S盒(a)=逆S盒(a)不成立 S盒不是自逆的。
行移位(Shift Row)变换
• 简单的置换
EXAMPLE
行移位变换分析
• 行移位就是将某个字节从一列移到另一列,其线 性距离是4字节的倍数。 • 确保某列中的四字节被扩展到了4个不同的列。
东南大学信息安全学科研究生学位课 网络信息安全理论与技术
第四讲 有限域与AES算法
黄 杰 信息安全研究中心
本讲内容
• 有限域 • AES算法
数学基础——有限域
• 问题:
–什么是有限域? –有限域与密码学的关系?
群、环和域(Field)
群
• 群:记为{G, •},一个二元运算集合
– 封闭性: a, b ∈G,则 a•b ∈G –结合律:a,b,c ∈G,则 a•(b•c)= (a•b)•c –单位元:e,a ∈ G,则 a•e = e•a =a –逆元:a,a’ ∈ G,则 a•a’= a’•a =e
• 最大公因子gcd(a,b)=max[k,其中k|a且k|b]。 • 整数a和b互素,如果gcd(a,b)=1。 • 定理:对于任意正整数a和b,有: gcd(a,b)=gcd(b,a mod b). • Euclid算法:
– – – – – – 1.A←a; B←b 2.若B=0,则返回A=gcd(A,B) 3.R=A mod B 4.A ←B 5.B←R 6.转到2
有限域GF(2n)
• 动机
– 构造的整数集合必须是一个域。 – 加密运算要求将整数集平均地映射到自身。 – Z8无法做到: 非零元素 1 2 3 4 5 6 7 出现次数 4 8 4 12 4 8 4 – 原因:以8为模
有限域GF(2n)
• 以下运算可以做到:
• 非零元素 1 2 3 4 5 6 7 • 出现次数 7 7 7 7 7 7 7 • 原因:既约多项式为m(x)= x3+x+1
a a-1 = (a-1)a =1。
模 运 算
• 定义1:整除
– a=qn – n整除a,n称为a的一个因子,n|a
• 定义2:整数的唯一分解定理
–
a qn r, 0 r n
• 剩余:r • 模运算:a mod n
– a除以n所得的余数
同 余
• 同余的概念:若整数a和b有(a mod n)=(b mod n), 则称a与b在mod n下同余,记为a≡b mod n 。 • 对于满足{r}={a|a=qn+r, q∈Z}的整数集称为同余 类。
最后的5个候选算法
算法 MARS RC6TM Rijndael Serpent Twofish 递交者 IBM RSA Laboratories Joan Daemen, Vincent Rijmen Ross Anderson, Eli Biham, Lars Knudsen Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall,Niels Ferguson
轮密钥加(Add Round Key)
• 一个简单地按位异或的操作
AES的密钥调度
• 轮密钥是通过密钥调度算法从密钥中产生,包括 两个组成部分:密钥扩展和轮密钥选取。 • 基本原理如下:
• 交换环(Commutative Ring)
–乘法交换律:任意 a, b ∈R,则 ab = ba
• 整环(Integral Domain)
–乘法单位元:l,a ∈ R ,则 al = la =a –无零因子: a, b ∈R,且ab = 0,则a=0或b=0
域(Galois)
• 域:记为{F, +,X},两个二元运算集合 – 乘法逆元: a∈F(0除外),则a-1 ∈ F,且
有限域GF(pn)
• 无限域:例如有理数集合、实数集合、复 数集合。在其上可以定义加法、减法、乘 法、除法,这些运算满足封闭性。加法和 乘法满足交换律、结合律,分配律。 • 元素个数为pn的有限域一般记为GF(pn)。有 限域在密码编码学中具有重要的地位。 • GF代表Galois Field,以第一位研究有限域 的数学家的名字命名。 • GF(pn)的两种特殊情形:GF(p)和GF(2n)。
例:模8加法和乘法
+ 0 1 2 3 4 5 6 7 x 0 1 2 3 4 5 6 7
0 0 1 2 3 4
1 1 2 3 4 5 2 2 3 4 5 6
5 6 7
6 7 0 7 0 1
0 0 0 0 0 0
1 0 1 2 3 4 2 0 2 4 6 0 3 0 3 6 1 4 4 0 4 0 4 0 5 0 5 2 7 4 6 0 6 4 2 0 7 0 7 6 5 4
– 该运算遵循基本代数规则中的普通多项式运算 规则 – 系数运算以p为模 – 如果乘法的结果是次数大于n-1的多项式,那么 必须将其除以某个次数为n的既约多项式m(x) 并取余式。
• 在以上运算基础上的集合S为有限域。
乘法逆元的求法
EXTENDED EUCLID(m, b)
1. (A1, A2, A3)=(1, 0, m); (B1, B2, B3)=(0, 1, b) 2. if B3 = 0 return A3 = gcd(m, b); no inverse 3. if B3 = 1 return B3 = gcd(m, b); B2 = b–1 mod m 4. Q = A3 div B3 5. (T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3) 6. (A1, A2, A3)=(B1, B2, B3) 7. (B1, B2, B3)=(T1, T2, T3) 8. goto 2
AES S-Box
EXAMPLE
S-Box的构造方法
• 逐行按升序排列的字节值初始化S盒; • 把S盒中的每个字节映射为它在有限域GF(28)中 的逆; • 把S盒中的每个字节记成(b7,b6,b5,b4,b3,b2,b1,b0)。 对S盒中每个字节的每位做如下的变换:
bi ' bi b(i4) mod8 b(i5) mod8 b(i 6) mod8 b(i7) mod8 ci
列混淆Mix Column变换
• 代替操作,将状态的列看作有限域GF(28)上的4维 向量并与有限域GF(28)上的一个固定可逆方阵A相 乘。
列混淆的矩阵表示
列混淆计算举例
列混淆Mix Column变换评价
• 矩阵系数的选择是基于码字间有最大距离的线性 编码。 • 每列的所有字节中有良好的混淆性。 • 经过几轮列混淆变换和行移位变换后,所有的输 出位均与所有的输入位相关。
i 0 n 1
其中ai在集合{0,1,…,p-1}上取值。S中共有pn个 不同的多项式。 例如p=2, n=3时,集合中共有23=8个多项式。 GF(2n)中的元素可以表示为一个n位的二进制整数, 即域Z2上一个次数小于n-1的多项式, 其中的系数取值为0或1。
多项式模运算
• 定义运算:
逆字节代替变换
bi ' b(i 2) mod8 b(i 5) mod8 b(i 7) mod8 di
• • • •
字节代换矩阵 X 逆字节代换矩阵 Y 常量c、d的矩阵表示方法为C和D 对某个8位的矢量B,字节代换代换结果B‘ B’=XB C B=YB‘ D YC D
证明:B=Y(XB C) D= YXB
模算术(Modular Arithmatic)
• 在mod n的n个剩余类集{0,1,2,…,n-1} 上可以定义模算术如下: • 加法: [(a mod n) + (b mod n)] mod n= (a+b) mod n • 减法: [(a mod n) - (b mod n)] mod n= (a-b) mod n • 乘法:[(a mod n) × (b mod n)] mod n= (a × b) mod n
AES-128
加 解 密 过 程
AES 一轮加密过程
AES算法描述
• 假设:State表示数据,以及每一轮的中间结果, RoundKey表示每一轮对应的子密钥。算法描述如下:
状态、密钥
• 状态/密钥的矩阵表示:以字节为单位的正 方形矩阵
字节代替(Substitute Bytes )变换
• 字节代替是一个非线性的字节代替,独立 地在每个状态字节上进行运算。代替表(S盒)是可逆的,是一个16×16的矩阵。