密码学中的一些代数知识

  • 循环群
    • 群的基或阶
    • 元素的阶
    • 循环群
    • 循环群中的一些定理
  • 子群

群指的是一个元素集合GGG以及联合GGG内两个元素的操作ooo的集合。群具有以下属性:

  1. 群操作ooo是封闭的,即对所有的a,b∈G,aob=c∈Ga,b \in G, aob=c \in Ga,b∈G,aob=c∈G始终成立。
  2. 群操作是可结合的,即对所有的a,b,c∈Ga,b,c \in Ga,b,c∈G,都有ao(boc)=(aob)ocao(boc)=(aob)ocao(boc)=(aob)oc 。
  3. 存在一个元素l∈Gl \in Gl∈G,对所有的a∈Ga \in Ga∈G均满足aol=loa=aaol = loa=aaol=loa=a,这个元素称为中性元或单位元
  4. 对每个元素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的逆元
  5. 如果所有a,b∈Ga,b \in Ga,b∈G都额外满足aob=boaaob = boaaob=boa,则称群GGG为阿贝尔群或可交换群

注意:

  1. 判断一个集合是不是群,要严格按照群的定义去判断,一个集合是群那么最少要满足1~4定义的规则(封闭、可结合、存在单位元、逆元),其次如果满足第5条规则也称为阿贝尔群或者交换群。
  2. 逆元a−1a^{-1}a−1可以和aaa相等。
  3. 密码学中经常使用乘法群(即操作符“o”“o”“o”表示乘法)和加法群(即“o”“o”“o”表示加法)。

示例

  1. (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的逆。
  2. (不包括0的Z,∗)(不包括0的Z,*)(不包括0的Z,∗)不是一个群,即整数集ZZZ(不包括元素0)和普通乘法不能形成群,因为除元素-1和1外,对于元素a∈Za \in Za∈Z,不存在逆元a−1a^{-1}a−1。
  3. (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​+v1​i)∗(u2​,+v2​i,)=(u1​u2​−v1​v2​)+(u1​v2​+v1​u2​)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. 条件1(封闭性)是满足的,因为此表中的元素都在Z9∗Z^*_9Z9∗​内。
  2. 条件3(单位元)和条件4(逆元)也成立,因为表中的每行和每列都是Z9∗Z^*_9Z9∗​内元素的置换。根据主对角线的对称性,即第i行j列的元素与第j行i列的元素相等。
  3. 条件5(交换性)也是满足的。
  4. 条件2(可结合性)不能从表的形状中直接得到,但可以根据ZnZ_nZn​,内普通乘法的可结合性立即得到。

循环群

群的基或阶

  一个群(G,o)(G,o)(G,o)是有限的,仅当它拥有有限个元素。群GGG的基或阶可以表示为∣G∣|G|∣G∣。

注意:

  1. 在定义循环群的时候已经规定必须在群的基础上,也就是说集合GGG满足群的四大特性(封闭、结合、单位元、逆元)
  2. 群GGG的基或阶表示群中元素的个数即∣G∣|G|∣G∣ = 群中元素个数。
  3. (Zn,+)(Z_n, +)(Zn​,+)表示在集合ZnZ_nZn​上进行加法模nnn, (Zn∗,∗)(Z^*_n, *)(Zn∗​,∗)表示在集合Zn∗Z^*_nZn∗​上进行乘法模n。
  4. 区分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.

示例

  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}。
  2. (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∣的元素ααα,则称这个群是循环群。拥有最大阶的元素称为原根(本原元)或生成元

注意:

  1. ord(α)ord(α)ord(α)表示元素ααα的阶, ∣G∣|G|∣G∣表示集合的基或阶
  2. 群GGG中拥有最大阶的元素ααα称为生成元,因为GGG中每个元素ααα都可以写成是这个元素的幂值αi=aα^i =aαi=a(i为任意值),即ααα产生了整个群。
  3. 为什么满足上述条件ααα就可以产生整个群?
      假如群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的幂值生成的所有元素。

  从上表我们可以得出结论:

  1. 幂值2i2^i2i的确生成了群Z11∗Z^*_{11}Z11∗​内的所有元素。
  2. 这些数字的生成顺序看上去是毫无章法的。指数iii与群元素之间看上去随机的关系是很多密码体制的基础,比如 Diffie-Hellman密钥交换。

循环群中的一些定理

定理一:对每个素数ppp, (Zp∗,∗)(Z^*_p, *)(Zp∗​,∗)都是一个阿贝尔有限循环群。

  这个定理说明了每个素数域的乘法群都是循环群。这个结论对密码学产生了深远影响,因为这些群对于构建离散对数密码体制非常重要。为了理解这些看上去很奇怪的定理的实用性,请注意这样一个事实:几乎所有的 Web浏览器都内嵌了一个基于Zp∗Z^*_pZp∗​的密码体制。

定理二:假设GGG为一个有限群,则对每个a∈Ga \in Ga∈G都有:

  1. a∣G∣=1a^{|G|}= 1a∣G∣=1。
  2. 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为一个有限循环群,则下面的结论成立:

  1. GGG中本原元的个数为中Φ(∣G∣)\Phi(|G|)Φ(∣G∣)。
  2. 如果∣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是否为一个群:

  1. H对乘法模数11(条件1)运算是封闭的,因为这个表是仅由H内的整数元素构成。
  2. 群操作是可结合且可交换的,因为它遵循的是普通乘法规则(分别对应条件2和5)。
  3. 中性素是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 一些代数知识(群、循环群和子群)相关推荐

  1. 近世代数——Part2 群:循环群

    循环群 定义 回顾一下循环群的定义,当我们说群可以由一个元素生成,我们就可以说这个群是循环群,具体的:G={an∣n∈Z}G=\{a^n\mid n\in Z\}G={an∣n∈Z} aaa叫做GGG ...

  2. 近世代数--商群--群和商群是一一对应的

    近世代数--商群--群和商群是一一对应的 群和商群是一一对应的,函数φ(H)=H/N\varphi(H)=H/Nφ(H)=H/N双射 由对应推出其他三条性质 H1≤H2↔H1/N≤H2/N,[H2:H ...

  3. 哈工大近世代数知识体系

    哈工大近世代数知识体系

  4. 【离散数学】求一个n阶群的全部子群(代码实现)

    这是大二上离散数学的结课大作业.当时写这个作业比较困难,主要是因为网上没有类似的东西,最后是通过求助学长得到的解决方式(感谢学长). 所以把自己的报告和代码(C/C++)放上来供大家参考.如有疏漏和错 ...

  5. 循环群的子群是循环群

    循环群的子群是循环群. 证明:$m$阶循环群都与$(\mathbb{Z}_m,+)(m\geq 1)$同构,无限阶循环群都与$(\mathbb{Z},+)$同构,所以我们只要讨论$(\mathbb{Z ...

  6. 群同态基本定理证明_近世代数(3)——群的基本性质

    参考教材 <近世代数>.丘维声著 <近世代数>.韩士安著 <Algebra>.Artin著 <代数学引论>.聂灵沼.丁石孙著 前言 上节我们引入了循环群 ...

  7. 第五次近世代数笔记——群与环拾遗

    自然同态ϕ\phiϕ:群到商群的映射 (商群的单位元就是等价关系对应的陪集??存疑教材P58 群同态的核都是正规子群 群同态ϕ\phiϕ满足:ϕ(x−1)=ϕ(x)−1\phi(x^{-1})=\ph ...

  8. 【机器学习】【ICA-1】概率统计/代数知识详解:高斯分布、概率密度函数、累积分布函数、联合分布函数、复合函数的概率密度函数、行列式求导等

    要容易理解ICA,就需要先好好理解透彻下面这些概率统计和线性代数的知识点:高斯分布.概率密度函数.累积分布函数.复合函数的概率密度函数.行列式.代数余子式.矩阵微积分等.下面一一简单记录和复习下这些概 ...

  9. [XJTU计算机网络安全与管理]第三讲 密码技术[二]

    文章目录 [XJTU计算机网络安全与管理]第三讲 密码技术[二] KEY POINTS 一.块加密(分组加密) 块加密vs流加密 块加密的设计准则 Feistel密码结构的设计动机 Claude Sh ...

  10. 近世代数--循环群--怎么判断是不是循环群?

    近世代数--循环群--怎么判断是不是循环群? 博主是初学近世代数(群环域),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列:近世代数,方便检索. ...

最新文章

  1. 源码阅读:AFNetworking(十六)——UIWebView+AFNetworking
  2. MongoDB readConcern 原理解析
  3. PEI ZHI GUANLI GAISHU 1(liyi)
  4. 明晚直播丨上海名师王召强:高考大变脸后,中小学语文怎么学?
  5. python爬虫基础(二)~工具包: 下载包requests、urllib和解析包BeautifulSoup(bs4)、lxml.etree.xpath
  6. 汇编指令prefix rep:
  7. pandas 合并所有列_图解Python表格操作包Pandas
  8. 001redis数据库的介绍
  9. spss聚类分析_SPSS实践:常用聚类分析方法详解
  10. 读书笔记-1-《书都不会读,你还想成功?》
  11. httpclient.execute长时间停滞问题
  12. [碎碎念]祝我的董小姐生日快乐~
  13. Opncv 实现拍照、颜色识别和阈值选取
  14. 呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块
  15. 南怀瑾老师:人最大的毛病就是不敢承认“心即是佛、心即是道
  16. 浙江农林大学第二十一届程序设计竞赛校选拔赛A E G H
  17. 10月27号吃鸡服务器维护吗,10月27日正式服维护公告
  18. 201621123031 《Java程序设计》第7周学习总结
  19. JDK环境变量及配置简介
  20. android10动态显示隐藏导航栏,状态栏

热门文章

  1. easyui datagrid deleteRow删除行时异常,删除了其他行
  2. 老徐WEB:js入门学习 - javascript变量的数据类型
  3. 加密所有事物,将数据安全存储在任何地方
  4. vue前端(element-ui),express后端实现上传图片到七牛云
  5. 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
  6. iOS 9适配技巧(更新版)
  7. linux 卸载 sdcc,Linux sdcc安装
  8. 怎样更改计算机的sid,关于Windows系统sid修改方法
  9. RabbitMQ-operation queue.declare caused a channel exception precondition_failed错误
  10. MPI点对点通信函数与通信模式