密码学数学基础之有限域基础
有一类特殊的环具有比较好的运算性质:可以进行加、减、乘、除四则混合运算,这就是域。包含有限个元素的域称为有限域,在密码学中有着非常广泛的用途。
本文介绍有限域的基本结构和构造方法。
重要前置知识
一个重要的定理:如果p是素数,则剩余类环
是一个域,若n是合数,则剩余类环
有零因子,不是域。
我们已经得到了一种特殊类型的有限域:
。
这种有限域可以用来作为构造密码算法的基础,但是有些时候不够,还需要寻找更多类型的有限域。
包含q个元素的有限域用
或者
来表示。
例子:
多项式
定义1 数域F上的多项式指的是具有如下形式的表达式:
%3Df_%7Bn%7Dx%5E%7Bn%7D%2Bf_%7Bn-1%7Dx%5E%7Bn-1%7D%2B...f_%7B1%7Dx%2Bf_%7B0%7D)
其中x称为未定元,
称为i次项,
称为多项式的系数,所有系数均取自于数域F。未定元x的最高次的系数
不等于0,称n为多项式
的次数,记作
。
比如
是有理数域上的3次多项式:
是复数域上的6次多项式。
多项式环
数域F上的全体多项式在多项式的加法和乘法下构成了一个环,称为F上的多项式环,记作
,F称为系数域。
当n等于0时多项式
是数域F中的一个数,特别地,
称为零多项式。一般将
称为多项式
的首项,如果
,则
称为首一多项式。
比如:
是实数域上的3次首一多项式。
定义2 设
都是数域F上的多项式,则当
且
不是零多项式时,称
整除
,
称作
的倍式,
是
的因式,记作
。
定义2 设
带余除法:对于任意一对多项式
和
,其中
不是零多项式,则一定存在唯一的一对多项式
和
,使得
。
-
其中
的次数小于
的次数,
称为商多项式,
称为余多项式。
-
这个时候我们也称
模
等于
。
最大公因式
定义3 两个多项式
、
的最大公因式指的是满足下面两个条件的首一多项式
:
-
是
和
的公共因式,即
且
。
-
若
是
和
的公共因式,则一定有
。
求两个多项式的最大公因式有一个标准的算法,我们称为多项式的欧几里得算法,或者辗转相除法。其过程完全类似于求两个整数的最大公因子。
欧几里得算法
-
给定两个多项式
,
,且
的次数不小于
的次数,利用多项式的带余除法可得:
- 每一个余多项式的次数都严格小于除多项式的次数,所以在进行有限步带余除法以后一定会得到余多项式为0。
-
最终计算出的
就是
和
的最大公因式。
-
两个多项式的最大公因式也可以表示成它们的组合。给定
中的两个多项式
和
,一定存在
中的多项式
和
,使得
和
的最大公因式等于
。
-
求多项式
和
也有一个标准的算法,仍然叫做扩展的欧几里得算法。
定义4 若两个多项式的最大公因式为1,则称它们互素。
定理1
中两个多项式
和
互素的充分必要条件是存在
中的多项式
,使得
。
定义5 若数域F上的多项式
只能被
或者
整除,其中
是数域
中的非零元,则称
为不可约多项式,否则称为可约多项式;次数至少为1的首一不可约多项式称为素多项式。
例1 二次多项式
在实数域内是不可约多项式,但是在复数域内是可约的。
定理2(唯一因式分解定理)数域F上的任意非零多项式
都可以唯一分解为一个常数乘以数域F上的若干素多项式的乘积,即
。
其中
是数域
中的常数,
为F上的素多项式,
为正整数。
多项式模p(x)环
定义6 设
是域F上次数非零的首一多项式,则F上次数小于
的多项式全体对于多项式的加法和模
乘法构成一个环,称为多项式模
环。
定理3 多项式模首一多项式
环成为域的充分必要条件是
为素多项式。
证明 充分性:若
为素多项式,则环中任意非零多项式
与
互素,存在一组多项式
和
,使得
。
-
等式两端同时模
,则
在模
运算下是等于1的,
是
的逆元。
-
必要性用反证法,设
不是素多项式,则可以分解为次数较低的两个非零多项式的乘积
,等式两边同时乘以
的逆并取模
,可以得到
,导出矛盾。因此
是素多项式。
有限域扩张
对于已知的任何有限域
,只要能找到
上的一个m次素多项式,就一定能构造出一个新的有限域。
这个新的有限域由
上次数小于m的全体多项式组成。
这个新的有限域包含了
个元素。
我们构造出了有限域
。
例2 从有限域
构造
。首先选择
上的2次素多项式
,
上的多项式全体模
以后得到的有限域为:
。
按照系数模2,多项式模
运算,可以得到
的加法表和乘法表:
有限域元素具有多种表示形式:
- 以GF(4)为例说明有限域元素常见的四种形式
- GF(4)的不同形式
本原元
定义7 若有限域
中所有的非零元素都可以表示成某元素
的指数形式,则称元素
为本原元。
例3
中的
是本原元,根据刚才的表,三个非零元都可以表示成x的不同指数。
例4
中的2是本原元,容易计算出:
。所有非零元都表示成了2的不同指数。
定理4 有限域
的所有非零元素在乘法下所构成的群是一个循环群。
- 回顾循环群:循环群中的所有元素都可以表示成生成元的指数形式。
- 所以有限域的所有非零元都可以表示成乘法循环群的生成元的指数形式。
- 这个生成元就是有限域的本原元。
定理5 任意有限域都有本原元。
例5 考察
,构造这个有限域需要用
上的3次素多项式来进行域的扩张。可以验证
就是一个素多项式,可以用来进行域的扩张。
离散对数问题
如果已知有限域的本原元
和指数
,计算
是比较容易的。
如果只给了本原元
和域中任意非零元素a,要求出k,使得
,没有什么特别有效的算法,特别是在有限域的规模比较大的情况下更是如此。
-
因为
相当于以
为底的
的对数,所以将其称为离散对数问题。
- 基于这个问题可以构造很多公钥密码算法。