5 有限域
许多加密算法都依赖于有限域的性质,特别是高级加密标准和椭圆曲线加密算法,还包括消息认证码CMAC以及认证加密方案GMC
5.1 群
群、环和域都是数学理论中的一个分支
5.1.1 群
群记做G,定义二元运算 · ,对于任何一对有序偶(a,b),满足:
- 封闭性
- 结合律
- 单位元
- 逆元
根据元素个数有限和无限分为有限群和无限群
5.1.2 交换群
- 满足交换律
5.1.3 循环群
如果群中每一个元素都是一个固定元素a的幂a^k(k为整数),则称群G为循环群
5.2 环
环 R
满足1-5
- 乘法封闭性
- 乘法结合律
- 分配律
- 乘法交换律:交换环
- 乘法单位元:存在元素1,a1= 1a = a 成立
- 无零因子:存在元素a,b,且ab=0,则必有 a=0或b=0
5.3 域
记作 F
满足以上 + 乘法逆元
5.4 有限域
无限域在密码学中没有什么特别的意义,但是两个有限域比较重要
有限域的阶(元素的个数)是一个素数的幂,即p^n, n为正整数,记作GF(P^n)
5.4.1 阶为p 的有限域
素数的剩余类在模n的运算下构成一个交换环,且任意非零整数都有乘法逆元
5.4.2 在GF§中求乘法逆元
5.5 多项式的运算
5.5.1 普通多项式的运算
这是个很熟悉概念了
注意的在抽象代数中一般不给x一个特定的值
5.5.2 系数在Zp上的多项式运算
加减乘的都可,除法也可能,但并不是整除
5.5.3 求最大公因式
从求最大公约数到多项式中的求最大公因式
5.6 有限域GF(2^n)
5.6.1 动机
为了和二进制对应
5.6.2 多项式模运算
在zp上定义多项式并且模运算
5.6.3 求乘法逆元
还是使用Euclid算法,从求最大公约数到最大公因式再到求公因式的乘法逆元
5.6.4 计算上的考虑
5.6.5使生成元
6 高级加密标准
6.1 有限域算术
AES中的所有运算都是在8位字节上进行的,包括加减乘除
如果在有限域上使用除法,则需要定义,因为除法需要每一个非零元素都有一个乘法逆元,所以要定义合适的算术运算,使得集合成为有限域,如上面的多项式模运算
6.2 AES结构
6.2.1 总体结构
明文分组是128位,密钥分组可以是128,192或256字节
密文由明文经过初始变换(第0轮密钥)后再经过N(10、12、14)轮变换(第n轮密钥)而得到
6.2.2 详细结构
除了第n轮,第1-n-1轮变换分别有字节代替,行移位,列混淆和轮密钥加
6.3 AES的变换函数
6.3.1字节替代变换
正向字节替代是一个简单的查表操作(AES定义了一个S盒),逆字节代替变换是字节代替变换的逆
基本原理,S盒的设计能够已有各种密码分析攻击
6.3.2 行移位变换
正向和逆向变换,能够使的某个字节从一列移动到另一列中
6.3.3 列混淆变换
正向和逆向变换
独立操作每一列,将所操作的列的每一个元素映射到一个新的值,映射的方式基于状态的矩阵乘法
基本原理:矩阵的系数是基于码字间有最大距离的线性比那吗,这使得每列所有的字节有良好的混淆性
6.3.4 轮密钥加变换
正向变换和逆向变换
128位的状态按位与128位的轮密钥XOR,是字节级别的操作
基本原理:轮密钥加变换能够影响状态的每一位,密钥扩展的复杂性和AES的其他阶段运算的复杂性,确保了该算法的安全性
6.4 AES的密钥扩展
6.4.1 密钥扩展算法
输入4个字(16字节)输出44字的一维线性数组,可以每轮变换提供轮密钥
6.4.2 基本原理
密钥扩展算法除了防止已有的密码分析攻击,还使用了轮常数防止不同轮的轮密钥产生方式上的对称性或相似性
6.5 雪崩效应
同样的,AES下的密码系统也具有雪崩效应
6.6 AES的实现
6.6.1 等价的逆算法
解密算法和加密算法不同,不要不同的软件模块,为了让其结构相同,需要对密钥扩展进行改进
6.6.2 实现方面
AES在8位处理器上就能有效的实现