8.2 一些代数知识(群、循环群和子群)
密码学中的一些代数知识
- 群
- 循环群
- 群的基或阶
- 元素的阶
- 循环群
- 循环群中的一些定理
- 子群
群
群指的是一个元素集合GGG以及联合GGG内两个元素的操作ooo的集合。群具有以下属性:
- 群操作ooo是封闭的,即对所有的a,b∈G,aob=c∈Ga,b \in G, aob=c \in Ga,b∈G,aob=c∈G始终成立。
- 群操作是可结合的,即对所有的a,b,c∈Ga,b,c \in Ga,b,c∈G,都有ao(boc)=(aob)ocao(boc)=(aob)ocao(boc)=(aob)oc 。
- 存在一个元素l∈Gl \in Gl∈G,对所有的a∈Ga \in Ga∈G均满足aol=loa=aaol = loa=aaol=loa=a,这个元素称为
中性元或单位元
。 - 对每个元素a∈Ga \in Ga∈G,存在一个元素a−1∈Ga^{-1} \in Ga−1∈G, 满足aoa−1=a−1oa=la o a^{-1}=a ^{-1}oa=laoa−1=a−1oa=l,则a−1a^{-1}a−1称为aaa的
逆元
。 - 如果所有a,b∈Ga,b \in Ga,b∈G都额外满足aob=boaaob = boaaob=boa,则称群GGG为
阿贝尔群或可交换群
。
注意:
- 判断一个集合是不是群,要严格按照群的定义去判断,一个集合是群那么最少要满足1~4定义的规则(封闭、可结合、存在单位元、逆元),其次如果满足第5条规则也称为阿贝尔群或者交换群。
- 逆元a−1a^{-1}a−1可以和aaa相等。
- 密码学中经常使用乘法群(即操作符“o”“o”“o”表示乘法)和加法群(即“o”“o”“o”表示加法)。
示例:
- (Z,+)(Z,+)(Z,+)是一个群,即整数集Z={...−2,−1,0,1,2.….}Z=\{... -2,-1,0,1,2.….\}Z={...−2,−1,0,1,2.….}与普通加法形成了阿贝尔群,其中e=0e=0e=0是单位元,−a是a∈Z-a是a \in Z−a是a∈Z的逆。
- (不包括0的Z,∗)(不包括0的Z,*)(不包括0的Z,∗)不是一个群,即整数集ZZZ(不包括元素0)和普通乘法不能形成群,因为除元素-1和1外,对于元素a∈Za \in Za∈Z,不存在逆元a−1a^{-1}a−1。
- (C,*)是一个群,即复数u+viu+viu+vi的集合(其中u,v∈R且i2=−1u,v∈R且i^{2}=-1u,v∈R且i2=−1)及定义在复数上的乘法(u1+v1i)∗(u2,+v2i,)=(u1u2−v1v2)+(u1v2+v1u2)i(u_1+v_1i )*(u_2,+v_2i, )=(u_1u_2 -v_1v_2)+(u_1v_2+v_1u_2)i(u1+v1i)∗(u2,+v2i,)=(u1u2−v1v2)+(u1v2+v1u2)i形成了一个阿贝尔群。此群的单位元为e=1e= 1e=1,元素a=u+vi∈Ca=u+ vi \in Ca=u+vi∈C的逆元为a−1=(u−i)/(u2+v2)。a^{-1} = (u - i)/(u^2 + v^2)。a−1=(u−i)/(u2+v2)。
群Zn∗{Z^*_n}Zn∗
密码学中通常需要的是拥有有限个元素的群。下面介绍在 DHKE、Elgamal 加密、数字签名算法和其他很多密码学方案中都非常重要群Zn∗{Z^*_n}Zn∗。
集合Zn∗{Z^*_n}Zn∗由所有i=0,1,...,n−1i= 0,1,...,n-1i=0,1,...,n−1整数组成,其中满足gcd(i,n)=1gcd(i,n)=1gcd(i,n)=1的元素与乘法模nnn操作形成了阿贝尔群
,且单位元为e=1e= 1e=1。
示例: 如果选择n=9n=9n=9,Zn∗Z^*_nZn∗由元素{1,2,4,5,7,8}\{1,2,4,5,7,8\}{1,2,4,5,7,8}组成。
计算表8-1所示的Z9∗Z^*_9Z9∗的乘法表能方便地检查定义群给出的绝大多数条件。
- 条件1(封闭性)是满足的,因为此表中的元素都在Z9∗Z^*_9Z9∗内。
- 条件3(单位元)和条件4(逆元)也成立,因为表中的每行和每列都是Z9∗Z^*_9Z9∗内元素的置换。根据主对角线的对称性,即第i行j列的元素与第j行i列的元素相等。
- 条件5(交换性)也是满足的。
- 条件2(可结合性)不能从表的形状中直接得到,但可以根据ZnZ_nZn,内普通乘法的可结合性立即得到。
循环群
群的基或阶
一个群(G,o)(G,o)(G,o)是有限的,仅当它拥有有限个元素。群GGG的基或阶可以表示为∣G∣|G|∣G∣。
注意:
- 在定义循环群的时候已经规定必须在群的基础上,也就是说集合GGG满足群的四大特性
(封闭、结合、单位元、逆元)
。 - 群GGG的基或阶表示群中元素的个数即∣G∣|G|∣G∣ = 群中元素个数。
- (Zn,+)(Z_n, +)(Zn,+)表示在集合ZnZ_nZn上进行加法模nnn, (Zn∗,∗)(Z^*_n, *)(Zn∗,∗)表示在集合Zn∗Z^*_nZn∗上进行乘法模n。
- 区分Z,Zn,Zn∗Z, Z_n, Z^*_nZ,Zn,Zn∗代表的集合Z={...−2,−1,0,1,2...}.Z = \{...-2, -1, 0, 1, 2...\}.Z={...−2,−1,0,1,2...}.Zn={0,1,2,...,n−1}.Z_n=\{0,1,2,...,n-1\}.Zn={0,1,2,...,n−1}.Zn∗由所有i={0,1,...,n−1}整数组成,其中满足gcd(i,n)=1.Z^*_n由所有i=\{ 0,1,...,n-1\}整数组成,其中满足gcd(i,n)=1.Zn∗由所有i={0,1,...,n−1}整数组成,其中满足gcd(i,n)=1.
示例:
- (Zn,+)(Z_n, +)(Zn,+): ZnZ_nZn的基为∣Zn∣=n|Z_n|=n∣Zn∣=n,因为Zn={0,1,2,...,n−1}Z_n=\{0,1,2,...,n-1\}Zn={0,1,2,...,n−1}。
- (Zn∗,∗)(Z^*_n, *)(Zn∗,∗):请记住,Zn∗Z^*_nZn∗是由小于nnn且与nnn互素的正整数组成的集合。因此,Zn∗Z^*_nZn∗的基或者阶等于n的欧拉函数,即∣Zn∗∣=Φ(n)|Z^*_n |= \Phi(n)∣Zn∗∣=Φ(n)。例如,群Z9∗Z^*_9Z9∗的基为Φ(9)=32−31=6\Phi(9)=3^2 - 3^1=6Φ(9)=32−31=6。前面提到的由6个元素{1,2,4,5,7,8}\{1,2,4,5,7,8\}{1,2,4,5,7,8}组成的群的例子可以很好地验证这个结论。
元素的阶
群(G,o)(G,o)(G,o)内某个元素aaa的阶ord(a)ord(a)ord(a)指的是满足以下条件的最小正整数kkk:ak=aoao...oa=l,a^k= aoao...oa=l,ak=aoao...oa=l,其中lll是GGG的单位元。
示例:本例的目的是确定群Z11∗中a=3Z^*_{11}中a= 3Z11∗中a=3的阶。在计算元素阶之前我们要充分的挖掘Z11∗Z^*_{11}Z11∗的条件,我们来看一下集合Zn∗Z^*_nZn∗的定义:
Zn∗{Z^*_n}Zn∗由所有i={0,1,...,n−1}i=\{0,1,...,n−1\}i={0,1,...,n−1}整数组成,其中满足gcd(i,n)=1gcd(i,n)=1gcd(i,n)=1的元素与乘法模n操作形成了阿贝尔群,且单位元为e=1e=1e=1.那么有:∣Z11∗∣的阶=Φ(11)=111−110=10.|Z^*_{11} |的阶 = \Phi(11) = 11^1 - 11^0 = 10.∣Z11∗∣的阶=Φ(11)=111−110=10.Z11∗={1,2,3,4,5,6,7,8,9,10}.Z^*_{11} = \{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\}.Z11∗={1,2,3,4,5,6,7,8,9,10}.
充分挖掘Z11∗Z^*_{11}Z11∗后,我们现在不停地计算aaa的幂值,直到得到单位元e=1e = 1e=1为止。
a1=3a^1 =3a1=3a2=a∗a=3∗3=9a^2=a*a=3*3=9a2=a∗a=3∗3=9a3=a2∗a=9∗3=27≡5mod11a^3= a^2*a=9*3=27 \equiv 5 mod 11a3=a2∗a=9∗3=27≡5mod11a4=a3∗a=5∗3=15≡4mod11a^4=a^3*a =5*3=15\equiv 4 mod11a4=a3∗a=5∗3=15≡4mod11a5=a4∗a=4∗3=12≡1mod11a^5=a^4 *a=4*3=12 \equiv 1 mod 11a5=a4∗a=4∗3=12≡1mod11
从最后一行可以得到ord(3)=5ord(3) = 5ord(3)=5。
如果将得到的结果一直乘以aaa,就会发现一个非常有趣的现象。
a6=a5∗a≡1∗a≡3mod11a^6 = a^5*a \equiv 1*a \equiv 3 mod 11a6=a5∗a≡1∗a≡3mod11a7=a5∗a2≡1∗a2≡9mod11a^7 = a^5*a^2 \equiv 1*a^2 \equiv 9 mod 11a7=a5∗a2≡1∗a2≡9mod11a8=a5∗a3≡1∗a3≡5mod11a^8 = a^5*a^3 \equiv 1*a^3 \equiv 5 mod 11a8=a5∗a3≡1∗a3≡5mod11a9=a5∗a4≡1∗a4≡4mod11a^9 = a^5*a^4 \equiv 1*a^4 \equiv 4 mod 11a9=a5∗a4≡1∗a4≡4mod11a10=a5∗a5≡1∗1≡1mod11a^10 = a^5*a^5 \equiv 1*1 \equiv 1 mod 11a10=a5∗a5≡1∗1≡1mod11a11=a10∗a≡1∗a≡3mod11a^{11} = a^10*a \equiv 1*a \equiv 3 mod 11a11=a10∗a≡1∗a≡3mod11..................
从这一点可以看出,a=3a=3a=3的幂值一直在{3,9,5,4,1}\{3,9,5,4,1\}{3,9,5,4,1}序列中无限循环。这个循环行为将引出如下循环群的定义。
循环群
如果群GGG包含一个拥有最大阶ord(α)=∣G∣ord(α) = |G|ord(α)=∣G∣的元素ααα,则称这个群是循环群。拥有最大阶的元素称为原根(本原元)或生成元。
注意:
- ord(α)ord(α)ord(α)表示元素ααα的阶, ∣G∣|G|∣G∣表示集合的基或阶
- 群GGG中拥有最大阶的元素ααα称为生成元,因为GGG中每个元素ααα都可以写成是这个元素的幂值αi=aα^i =aαi=a(i为任意值),即ααα产生了整个群。
- 为什么满足上述条件ααα就可以产生整个群?
假如群GGG中的元素个数为nnn, 即∣G∣=n|G| = n∣G∣=n, 那么 org(α)=norg(α) = norg(α)=n. αi=aα^i =aαi=a(i为任意值)可以产生n个不同的值(操作模n),这些值在区间[0, n-1]中。(个人猜测)
示例:本例的目的是验证a=2a=2a=2是否为Z11∗={1,2,3,4,5,6,7,8,9,10}Z^*_{11}=\{1,2,3,4,5,6,7,8,9,10\}Z11∗={1,2,3,4,5,6,7,8,9,10}的本原元。请注意,该群的基为∣Z11∗∣=10|Z^*_{11}|=10∣Z11∗∣=10, 逆元e=1e = 1e=1。下面来看由元素a=2a=2a=2的幂值生成的所有元素:
从最后一个结论可知:ord(a)=10=∣Z11∗∣.ord(a) = 10 = |Z^*_{11}|.ord(a)=10=∣Z11∗∣.这意味着(i)a=2a=2a=2是本原元; (ii)Z11∗Z^*_{11}Z11∗是一个循环群。
下面将验证a=2a=2a=2的幂值是否真的生成了群Z11∗.Z^*_{11}.Z11∗.内的所有元素。下标展示222的幂值生成的所有元素。
从上表我们可以得出结论:
- 幂值2i2^i2i的确生成了群Z11∗Z^*_{11}Z11∗内的所有元素。
- 这些数字的生成顺序看上去是毫无章法的。指数iii与群元素之间看上去随机的关系是很多密码体制的基础,比如 Diffie-Hellman密钥交换。
循环群中的一些定理
定理一:对每个素数ppp, (Zp∗,∗)(Z^*_p, *)(Zp∗,∗)都是一个阿贝尔有限循环群。
这个定理说明了每个素数域的乘法群都是循环群。这个结论对密码学产生了深远影响,因为这些群对于构建离散对数密码体制非常重要。为了理解这些看上去很奇怪的定理的实用性,请注意这样一个事实:几乎所有的 Web浏览器都内嵌了一个基于Zp∗Z^*_pZp∗的密码体制。
定理二:假设GGG为一个有限群,则对每个a∈Ga \in Ga∈G都有:
- a∣G∣=1a^{|G|}= 1a∣G∣=1。
- ord(a)ord(a)ord(a)可以整除∣G∣。|G|。∣G∣。(∣G∣|G|∣G∣ / ord(a)ord(a)ord(a) = 整数)
示例:我们来看一下基为∣Z11∗∣=10|Z^*_{11}| = 10∣Z11∗∣=10的群Z11∗Z^*_{11}Z11∗。此群内只有1、2、5和10这些整数可以整除10,下面来判断此群内元素的阶是不是为1、2、5和10。下面可以通过观察该群中所有元素的阶来验证这个属性:
的确只出现了可以整除10的阶。
定理三:假设GGG为一个有限循环群,则下面的结论成立:
- GGG中本原元的个数为中Φ(∣G∣)\Phi(|G|)Φ(∣G∣)。
- 如果∣G∣|G|∣G∣是素数,则所有满足a≠1∈Ga ≠ 1 \in Ga=1∈G的元素aaa都是本原元。
上面的例子验证了第一个属性,因为Φ(10)=(5−1)(2−1)=4\Phi(10) = (5-1)(2-1) = 4Φ(10)=(5−1)(2−1)=4,即本原元的个数为4,分别是元素2、6、7和8。第二个属性可以从前一个定理得到。如果群的基是素数,则唯一可能的元素阶就是1和基本身。由于只有元素1的阶为1,其他所有元素的阶都是p。
子群
定理一(循环子群定理):假设(G,o)(G,o)(G,o)是一个循环群,则GGG内每个满足ord(a)=sord(a)= sord(a)=s的元素ααα都是拥有sss个元素的循环子群的本原元。
注意:从定理中我们可以提取出来 --> 循环群的每个元素都是其子群的生成元,而且该子群也是循环群。
示例:下面将通过 G=Z11∗G=Z^*_{11}G=Z11∗的一个子群验证上面的定理。从前面的例子可知 ord(3)=5ord(3)=5ord(3)=5,根据循环子群定理知3的幂值生成了子集H={1,3,4,5,9}H = \{1,3,4,5,9\}H={1,3,4,5,9}。观察其对应的乘法表,验证这个集合是否真的是一个群。
判断H是否为一个群:
- H对乘法模数11(条件1)运算是封闭的,因为这个表是仅由H内的整数元素构成。
- 群操作是可结合且可交换的,因为它遵循的是普通乘法规则(分别对应条件2和5)。
- 中性素是1(条件3),并且每个元素a∈Ha \in Ha∈H均存在一个逆元a−1∈Ha^{-1} \in Ha−1∈H(条件4)。这一点可以从表中看出表的每行和每列都包含一个单位元。
因此,HHH是Z11∗,Z^*_{11},Z11∗,的一个子群(如图所示)。
定理二(拉格朗日定理):假设HHH为GGG的一个子群,则∣H∣|H|∣H∣可以整除∣G∣|G|∣G∣。
示例:循环群Z11∗Z^*_{11}Z11∗的基为∣Z11∗∣=10=1⋅2⋅5|Z^*_{11}| = 10 = 1·2·5∣Z11∗∣=10=1⋅2⋅5。因此可以得到结论: Z11∗Z^*_{11}Z11∗的子群对应的基为1,2,5和10(基为10的子群对应循环群本身),因为这些数都是10可能的除数。Z11∗Z^*_{11}Z11∗所有的子群HHH及这些子群的生成元ααα可以表示如下:
定理三(求有限循环群对应的所有子群):
假设GGG为一个阶为nnn的有限循环群,ααα为对应的生成元,则对整除nnn的每个整数kkk,GGG都存在一个唯一的阶为kkk的循环子群HHH。这个子群是由αn/kα^{n/k}αn/k生成的。HHH是由GGG内满足条件ak=1a^k=1ak=1的元素组成的,且GGG不存在其他子群。
这个定理给出了从一个给定循环群构建子群的简单而直接的方法。我们只需一个本原元和群基数n,然后计算αn/kα^{n/k}αn/k(子群H的本原元),即可得到拥有k个元素的子群的生成元。
示例:循环群Z11∗Z^*_{11}Z11∗,从前面可知该群的一个本原元为α =8。如果想要得到阶为2的子群的生成元β,需要计算:
β=αn/k=810/2=85=32768≡10mod11。β = α^{n/k} = 8^{10/2} = 8^5 = 32768 \equiv 10 mod 11。β=αn/k=810/2=85=32768≡10mod11。
现在我们需要验证的确是元素10 生成了拥有两个元素的子群:β1=10β^1 = 10β1=10β2=100≡1mod11β^2 = 100 \equiv 1 mod 11β2=100≡1mod11β3≡10mod11,β^3 \equiv10 mod 11,β3≡10mod11,...........................
参考资料:《深入浅出密码学》–Christof Paar,Jan Pelzl著
8.2 一些代数知识(群、循环群和子群)相关推荐
- 近世代数——Part2 群:循环群
循环群 定义 回顾一下循环群的定义,当我们说群可以由一个元素生成,我们就可以说这个群是循环群,具体的:G={an∣n∈Z}G=\{a^n\mid n\in Z\}G={an∣n∈Z} aaa叫做GGG ...
- 近世代数--商群--群和商群是一一对应的
近世代数--商群--群和商群是一一对应的 群和商群是一一对应的,函数φ(H)=H/N\varphi(H)=H/Nφ(H)=H/N双射 由对应推出其他三条性质 H1≤H2↔H1/N≤H2/N,[H2:H ...
- 哈工大近世代数知识体系
哈工大近世代数知识体系
- 【离散数学】求一个n阶群的全部子群(代码实现)
这是大二上离散数学的结课大作业.当时写这个作业比较困难,主要是因为网上没有类似的东西,最后是通过求助学长得到的解决方式(感谢学长). 所以把自己的报告和代码(C/C++)放上来供大家参考.如有疏漏和错 ...
- 循环群的子群是循环群
循环群的子群是循环群. 证明:$m$阶循环群都与$(\mathbb{Z}_m,+)(m\geq 1)$同构,无限阶循环群都与$(\mathbb{Z},+)$同构,所以我们只要讨论$(\mathbb{Z ...
- 群同态基本定理证明_近世代数(3)——群的基本性质
参考教材 <近世代数>.丘维声著 <近世代数>.韩士安著 <Algebra>.Artin著 <代数学引论>.聂灵沼.丁石孙著 前言 上节我们引入了循环群 ...
- 第五次近世代数笔记——群与环拾遗
自然同态ϕ\phiϕ:群到商群的映射 (商群的单位元就是等价关系对应的陪集??存疑教材P58 群同态的核都是正规子群 群同态ϕ\phiϕ满足:ϕ(x−1)=ϕ(x)−1\phi(x^{-1})=\ph ...
- 【机器学习】【ICA-1】概率统计/代数知识详解:高斯分布、概率密度函数、累积分布函数、联合分布函数、复合函数的概率密度函数、行列式求导等
要容易理解ICA,就需要先好好理解透彻下面这些概率统计和线性代数的知识点:高斯分布.概率密度函数.累积分布函数.复合函数的概率密度函数.行列式.代数余子式.矩阵微积分等.下面一一简单记录和复习下这些概 ...
- [XJTU计算机网络安全与管理]第三讲 密码技术[二]
文章目录 [XJTU计算机网络安全与管理]第三讲 密码技术[二] KEY POINTS 一.块加密(分组加密) 块加密vs流加密 块加密的设计准则 Feistel密码结构的设计动机 Claude Sh ...
- 近世代数--循环群--怎么判断是不是循环群?
近世代数--循环群--怎么判断是不是循环群? 博主是初学近世代数(群环域),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列:近世代数,方便检索. ...
最新文章
- 源码阅读:AFNetworking(十六)——UIWebView+AFNetworking
- MongoDB readConcern 原理解析
- PEI ZHI GUANLI GAISHU 1(liyi)
- 明晚直播丨上海名师王召强:高考大变脸后,中小学语文怎么学?
- python爬虫基础(二)~工具包: 下载包requests、urllib和解析包BeautifulSoup(bs4)、lxml.etree.xpath
- 汇编指令prefix rep:
- pandas 合并所有列_图解Python表格操作包Pandas
- 001redis数据库的介绍
- spss聚类分析_SPSS实践:常用聚类分析方法详解
- 读书笔记-1-《书都不会读,你还想成功?》
- httpclient.execute长时间停滞问题
- [碎碎念]祝我的董小姐生日快乐~
- Opncv 实现拍照、颜色识别和阈值选取
- 呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块
- 南怀瑾老师:人最大的毛病就是不敢承认“心即是佛、心即是道
- 浙江农林大学第二十一届程序设计竞赛校选拔赛A E G H
- 10月27号吃鸡服务器维护吗,10月27日正式服维护公告
- 201621123031 《Java程序设计》第7周学习总结
- JDK环境变量及配置简介
- android10动态显示隐藏导航栏,状态栏
热门文章
- easyui datagrid deleteRow删除行时异常,删除了其他行
- 老徐WEB:js入门学习 - javascript变量的数据类型
- 加密所有事物,将数据安全存储在任何地方
- vue前端(element-ui),express后端实现上传图片到七牛云
- 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
- iOS 9适配技巧(更新版)
- linux 卸载 sdcc,Linux sdcc安装
- 怎样更改计算机的sid,关于Windows系统sid修改方法
- RabbitMQ-operation queue.declare caused a channel exception precondition_failed错误
- MPI点对点通信函数与通信模式