数学基础(五)--群、环、域
上一节后面提到几个关于元素阶的定理,为什么要强调元素的阶呢?因为由元素的阶可以产生所谓的离散对数问题(简称DLP),而DLP是密码学的数学基础之一。
先回顾一下对数的概念,如果a的n次方等于b,那么称n是以a为底b的对数,给出a、b,要求n的值,就称为求解对数问题,简称对数问题。那群中的对数问题又是什么?
前面已知,有限群中任意一个元素的阶都存在,并且元素的阶整除于群中元素的个数(即有限群的阶)。
如果群中存在一个特殊的元素(假设记为a),满足:a的阶正好等于群的阶,则称此群为循环群,相应称a为循环群的生成元。
生成元有什么用?设|a|=n=|G|,则可以证明,集合{1(单位元)、a1、a2、an-1}恰好等于集合G。如果我们定义a0=1,则
生成元从0、1、2……n-1一直取幂,最终将得到(或生成)群中的所有元素。这也是称之为生成元的理由。
很容易验证,Zn关于+运算是一个循环群,生成元就是[1]。
现在可以回答循环群的对数问题了,对于循环群G,给出任意元素b和生成元a,求解满足ak=b的正整数k
这一问题就称为此循环群上的DLP,相应地,称k为b关于a的离散对数
对于某些特定的循环群,求解其上的DLP十分简单,比如对于群(Zn,+),任意元素[k]关于循环元[1]的DLP求解就很简单,其离散对数就是k本身。
对于另外一些特殊的循环群,求解DLP则变得十分困难,后面即将碰到有限域,其上的DLP求解就是个例子。
在讨论另一个代数概念--环--之前,我们先放松下,再来研究研究老朋友Zn。
已知,Zn关于运算+构成一个(循环)(交换)群,我们再在Zn的元素之间定义一个新的运算法则*(通常称为乘法运算)如下:
[i]*[j]≡[i*j],其中i、j为等价类的代表元素
定理:Zn上的乘法运算*结果是唯一的,即*是等价类之间的一个代数运算
证明:设A、B是Zn的等价类,i、j是A的代表元素,s、t是B的代表元素,故i~j,s~t
根据~的定义,i=j+k*n,s=t+l*n(其中k、l∈Z),两式左右分别相乘,得
i*s=j*t+p*n,其中p∈Z,根据定义,i*s~j*t,即[i*s]=[j*t],这说明[i]*[s]=[j]*[t]
*运算满足以下性质:
1、对于元素A,B,C∈Zn,有(A*B)*C=A*(B*C),即运算*满足结合律
证明:分别取A、B、C的代表元a、b、c,则A*(B*C)=[a]*([b]*[c])=[a]*[b*c]=[a*b*c]
同理(A*B)*C=([a]*[b])*[c]=[a*b]*[c]=[a*b*c],左右两边相等,得证
2、[1]是Zn中(关于乘法)的单位元,即满足:[1]*A=A*[1]=A,其中A为Zn中任意元素
现在我们把Zn上的加法+和乘法*运算一并考虑,发现满足左、右分配律:
对任何A,B,C∈Zn,满足A*(B+C)=(A*B)+(A*C),(B+C)*A=(B*A)+(C*A)
证明:A*(B+C)=[a]*([b]+[c])=[a]*[b+c]=[a*(b+c)]=[a*b+a*c]=[a*b]+[a*c]=[a]*[b]+[a]*[c]=A*B+A*C
同理可证另一个分配律成立
下面正式给出环的定义
[环]:R是一个关于+(称为加法运算)的交换群,同时R上还存在另一个称为乘法的代数运算(用*表示),并且满足下列条件,则称R为一个环
1、乘法*满足结合律:即对任何a、b、c∈R,有a*(b*c)=(a*b)*c
2、加法+和乘法*满足左、右分配律. 即对任何a、b、c∈R,满足a*(b+c)=(a*b)+(a*c),(b+c)*a=(b*a)+(c*a)
说明:
1、我们完全可以把+称为乘法运算,把*称为加法运算,或者把+换为*,把*换成+,只是为了区分这2个代数运算。你现在能深深体会到,符号不重要,重要的是要表示的内容。
2、括号是为了强调先进行其中的运算,如果我们人为对*赋予比+更高的运算优先级,就可以去掉部分括号,变为:a*(b+c)=a*b+a*c,(b+c)*a=b*a+c*a
3、当我们进行环的乘法运算时,其代表符号*常省略不用,即我们直接用ab来表示a*b,这样可以更省一步,记为:a(b+c)=ab+ac,(b+c)a=ba+ca,a(bc)=(ab)c
根据环的定义和上面已经证明的定理,可知Zn关于+、*构成环。
[交换环]:环R若满足乘法交换律(即对运算*是可交换的),则称R为交换环。
[含厶环]:环R如果关于乘法*存在单位元,则称R为含厶环。
环Zn是交换环,也是含厶环。
对于环而言,加法单位元可以不等于乘法单位元。比如环Zn就是如此。
加法和乘法通过分配律纠缠到一起后,就产生了一些奇特的性质。
定理:环的加法单位元e乘以任何元素(无论是左乘还是右乘)都等于加法单位元自身
证明:任取a∈环R,根据加法单位元的性质,e+a*e=a*e=a*(e+e)=a*e+a*e,两边消去a*e,得a*e=e
同理,e+e*a=e*a=(e+e)*a=e*a+e*a,两边消去e*a,得e*a=e。
从这个意义上来说,加法单位元很像数字0(0乘以任何数都等于0),所以又称为乘法零元,并经常用符号0来表示。
根据环的定义,环对于加法运算要求较高,必须构成加法交换群,但对于乘法运算没有这个要求,比如说不一定要构成乘法群
对于Zn中的乘法,已知其满足群的四条性质中的三条(运算封闭、满足结合律、存在单位元),甚至还满足乘法交换律
我们自然会想,是否存在逆元,即对于任意元素A∈Zn,是否存在元素B∈Zn,满足:A*B=[1]=B*A(如果满足的话就构成群)
遗憾的是,这一结论并不成立,[0]就没有乘法逆元。我们注意到,[0]是加法的单位元,因而也是乘法零元
定理:Zn的乘法零元[0]无逆元
反证:设[0]存在逆元[x],[1]是Zn的乘法单位元,则[0]*[x]=[1],因而[0]=[1],矛盾。
只好把[0]排除掉,我们自然进一步会问:Zn中排除[0]后剩下的元素,是否都有逆元?
遗憾的是,这一结论仍不能普遍成立,举个反例,设n=6,取A=[4],则Z6={[0],[1],[2],[3],[4],[5]}中
任何一个元素与A相乘(即进行*运算),都不会等于[1],从而A不存在逆元。读者可以手工一一验证。
尽管如此,我们发现,将条件适当放宽,仍可以使Zn中的部分元素关于乘法运算*构成群。
下面先给出定义:
Zn*≡{[k]|(k,n)=1}
说明
1、符号(,)表示两个数的最大公因子(也称最大公约数)。此定义中,(k,n)=1表示k与n互素,换言之,k与n没有大于1的公因子
2、可以证明,只要等价类中的任意一个元素与n互素,则该等价类中的任意元素都与n互素,因而代表元素的选择无关紧要
举例:Z6*={[1],[5]},Z7*={[1],[2],[3],[4],[5],[6]}。Zn*是Zn的子集。
定理:Zn*关于*运算构成群--通常称为乘法群。
证明:根据群的定义,我们需要证明以下几个性质
1、Zn*元素对于运算*封闭的,即对任意[a]、[b]∈Zn*,满足[a*b]∈Zn*
直接验证,(a,n)=1且(b,n)=1,则由初等数论,可知(a*b,n)=1,即[a*b]∈Zn*
2、对于运算*是可结合的。
自然满足,见上面说明
3、Zn*中存在单位元。
单位元就是[1]
4、对于任意[a]∈Zn*,存在X∈Zn*,满足[a]*X=[1]=X*[a]
(a,n)=1,由初等数论,存在整数r,s,满足r*a+s*n=1并且(r,n)=1,从而[r*a+s*n]=[1]
左边=[r*a]+[s*n]=[r]*[a]+[s]*[n]=[r]*[a]+[s]*[0]=[r]*[a]+[0]=[r]*[a],X=[r]就是[a]的逆元
如果n=素数p,则Zp*=Zp-{[0]},即Zp除去[0]后的所有元素都可逆。
[域]:一个具有乘法单位元的交换环R,若至少含有一个非零元,并且每个非零元a都可逆,则称R为一个域。
换言之,乘法交换环R中除去乘法零元,剩下的元素关于乘法构成一个交换群,则称R为域。
[有限域]:元素个数有限的域,称为有限域。
对于素数p,Zp={[0],[1],[2]……[p-1]}是有限域。
定理:有限域的乘法群是一个循环群。
对于素数p,Zp*={[1],[2]……[p-1]}是循环群。
事实上,这里的素数p,可以放宽到p的幂,我们就不再深究。
前面我们已讨论在Zn中引入+运算后,等价类代表元素的选择,现在又引入*运算,代表元素的选择是否与原来的方案相容呢?
继续按照以前的思路,[i]*[j]≡[i*j]——i,j仍然限制在0,n-1之间
现在要计算i*j,仍将i*j除以n,得到余数r,r就是经过乘法运算后的等价类代表元素,证明如下
设i*j=k*n+r,则i*j-r=k*n,由定义,i*j~r,从而[i*j]=[r],
计算两个等价类的乘积,并得到对应的代表元素如下
设等价类的代表元素分别为a、c,且b、d分别是a、c模n的余数,则[a]=[b],[c]=[d],[a*c]=[a]*[c]=[b]*[d]=[b*d]=[(b*d)(mod n)]
换言之,求两个整数之积的模n的余数,可以先分别计算这两个整数模n的余数,然后把两个余数相乘,再对积取余数,就得到想要的结果。