抽象代数
参考教材:密码编码学与网络安全
AES加密的数学基础
第一遍读感觉教材上对数学基础(群环域,多项式运算)P72-P91给的莫名奇妙
然后参考了知乎回答对群环域的解释
此时第二遍读教材,发现其实教材在讲每一部分的开始都写了为什么要讲.
学习这部分一定要明确目的,在陷入定理的证明时或者公式应用时时刻想想是在干什么
引入多项式构造
另,教材P74页的图4.2是有错误的
抽象代数基础
图片来自代数结构入门:群、环、域、向量空间 - 知乎 (zhihu.com)

群
群
如果G满足:
A1封闭性:
A2结合律:
A3单位元:
A4逆元:
这里
不是一定是-1次幂,只是逆元的表示形式
集合G+A1+A2+A3+A4=群G
<Z,+>就是一个群
<N,+>就不是一个群,因为如果定义单位元是0,那么1的逆元就是-1,但是-1不在自然数范围内,满足A1A2A3但是不满足A4的代数系统被称为幺半群
变换群
设A是一非空集合,G是A到A的映射集合,如果G关于运算*构成一个群,则称
置换群
设A是一非空有限集合,则A上的一个变换群就是A的一个置换群,简称置换群
交换群
A5交换律:
群G+A5=交换群G
l
环
环
已知
如果R再满足
M1乘法封闭性:
M2乘法结合律:
M3乘法对加法的分配律:
注意这里没有写
因为这样写实际上是满足乘法交换律,而满足分配律不一定满足交换律,比如矩阵乘法
矩阵的左右乘结果一般是不一样的,但是矩阵乘法对矩阵加法是有结合律的
则称R为环
交换环
如果环R再满足
M4乘法交换律:
显然
是环但不是交换环
则称R为交换环
整环
如果交换环R再满足
M5乘法单位元:
当
为整数时, 当
,n阶实数矩阵集合, n阶单位矩阵
M6无零因子,:
则称R为整环
怎么理解"无0因子"?
显然
不满足M6,因为两个矩阵 乘积是个0矩阵并不能说明 或者 矩阵有至少一个是零矩阵 比如
又如, 令
, 定义
上的乘法 为 定义
上的加法 为 显然
满足 但是
不满足无零因子,比如
就是说,0这个元素一定也是在集合R中存在的,并且乘法运算结果为0一定和引入这个元素0有关
域
设
M7乘法逆元:
注意乘法逆元也是
中的 定义乘法逆元的作用实际上是可以使用除法,除以一个数等于乘以该数的乘法逆元
比如对于
,由拓展欧几里得定理可知,由于模数为7是一个质数,因此0到6都存在 上的mod 7意义下的乘法逆元 再比如全体整数就不是任何元素都有乘法逆元,只有1和-1有乘法逆元,任何绝对值大于1的整数其乘法逆元应该是分数,不属于整数.
则称R为域F
有限域GF(p)
符号意义:
为什么一定要求是一个素数?
当N为一个合数的时候
不满足 无零因子,不是整环,因此不是域 为什么不满足
? 由已知,N是合数,则至少存在
如果
,则有 如果
,则 那么 故选取p为素数,就是为了保证
无零因子 同时,选取一个素数作为mod值,保证了
乘法逆元:
,即 ,显然当p为一个素数时有 由2拓展欧几里得定理即可求出x的值 因此
就是一个有限域,用 表示
上的数论定理
拓展欧几里得定理求乘法逆元
1 | int exgcd(const int &a, const int &b, int &x, int &y) {//拓展欧几里得算法ax+by=1=gcd(a,b) |
快速幂
1 |
|
多项式算术
为什么突然扯到"多项式算数"呢?
前面我们证明了对于整数集
如果想要得到一个元素个数为
为什么要得到一个元素个数为
一个3位二进制数可以表示8中状态,明文和密码就在这八种状态之中
模8乘法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2 | 0 | 2 | 4 | 6 | 0 | 2 | 4 | 6 |
3 | 0 | 3 | 6 | 1 | 4 | 7 | 2 | 5 |
4 | 0 | 4 | 0 | 4 | 0 | 4 | 4 | 3 |
5 | 0 | 5 | 2 | 7 | 4 | 1 | 6 | 3 |
6 | 0 | 6 | 4 | 2 | 4 | 3 | 4 | 2 |
7 | 0 | 7 | 6 | 5 | 3 | 3 | 2 | 1 |
在
而一个理想的密码是不能暴露词频信息的,显然用
而使用多项式运算就可以解决这个问题,因此引入了多项式运算
首先要研究的是==如何构造一个有8个元素(
==将数的性质拓展到多项式式上==
我们使用的一般是代数基本规则的普通多项式运算
然后拓展到系数在
然后再拓展到系数在
最终目标是理解并应用最后一种多项式
普通多项式运算
多项式次数:最高次项的次数
多项式的表示:
当
表示整数集的时候,显然A是满足 ,是个整环, 但是不满足乘法逆元,比如
的乘法逆元 ,是一个指数为负的多项式,显然不在
设
系数在 中的多项式运算
当系数集是全体整数的时候,由于系数不都有乘法逆元,因此无法进行多项式除法
当系数集是一个域的时候,系数都有了乘法逆元,可以对多项式引入除法(带余除法)
可以类比整数的除法,求余数用
那么在
比如对于
上的多项式 ,则
设系数域为
设
多项式的四则运算
则
以
多项式的欧几里得定理
定义
上多项式再mod n次素多项式
对于
什么是"素多项式"?
当
显然
现在类比
显然加减乘封闭且结合律分配律交换律均满足,
由于1也是
下面证明M6无零因子
由于k阶多项式的k次项系数不为零,假设有两个非零多项式,其最高次项分别为
乘积多项式的最高次项为
显然p是一个素数,
因此任何两个非零多项式乘积一定非零,M6无零因子得证
到此F被证明是整环
无零因子就是
是域但是 不是域的本质原因
下面证明任意F中的非0多项式都在F中有乘法逆元
又
因此M7乘法逆元得证
因此
和 的不同
我们在证明
而现在
将
上的乘法逆元
显然可以将整数上的拓展欧几里得推广到F上
上构造结果分布均匀的二元运算
比如
加法
由于系数要么是0要么是1,即系数要自动对2取模
那么多项式的加法就是二进制数按位异或
比如
乘法
教材上一本正经地写了一堆用字母表示的多项式,看上去头大.
从一个例子入手可能比较容易理解:
考虑AES加密算法使用到的
求
拆分成项
容易想到的是把
求
由于
求
假设
则
如果用二进制表示,那么
如果
如果
此时
这个尾部对
那么问题转化为
求
于是
战争一开始,商1之后被除数减去除数得到
立刻发现刚才"精锐的头部"那个
即刚才的"战争"可以写为:
这是巧合吗?
这是系数mod2的必然结果,并且可以从8次推广到n次:
在战争之前我们把"累赘的尾部
现在我们知道了精锐的头部
那么
以此类推可以得到
回到求
不管你
如果你
总结
到此我们构造出了
怎么构造出的?由系数在
多项式和这
这
下一步可以向AES加密算法进军了