群
群指的是一个元素集合 G G G以及联合 G G G内两个元素的操作 o o o的集合。群具有以下属性:
- 群操作 o o o是封闭的,即对所有的 a , b ∈ G , a o b = c ∈ G a,b \in G, aob=c \in G a,b∈G,aob=c∈G始终成立。
- 群操作是可结合的,即对所有的 a , b , c ∈ G a,b,c \in G a,b,c∈G,都有 a o ( b o c ) = ( a o b ) o c ao(boc)=(aob)oc ao(boc)=(aob)oc 。
- 存在一个元素
l
∈
G
l \in G
l∈G,对所有的
a
∈
G
a \in G
a∈G均满足
a
o
l
=
l
o
a
=
a
aol = loa=a
aol=loa=a,这个元素称为
中性元或单位元
。 - 对每个元素
a
∈
G
a \in G
a∈G,存在一个元素
a
−
1
∈
G
a^{-1} \in G
a−1∈G, 满足
a
o
a
−
1
=
a
−
1
o
a
=
l
a o a^{-1}=a ^{-1}oa=l
aoa−1=a−1oa=l,则
a
−
1
a^{-1}
a−1称为
a
a
a的
逆元
。 - 如果所有
a
,
b
∈
G
a,b \in G
a,b∈G都额外满足
a
o
b
=
b
o
a
aob = boa
aob=boa,则称群
G
G
G为
阿贝尔群或可交换群
。
注意:
- 判断一个集合是不是群,要严格按照群的定义去判断,一个集合是群那么最少要满足1~4定义的规则(封闭、可结合、存在单位元、逆元),其次如果满足第5条规则也称为阿贝尔群或者交换群。
- 逆元 a − 1 a^{-1} a−1可以和 a a a相等。
- 密码学中经常使用乘法群(即操作符 “ 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 = 0 e=0 e=0是单位元, − a 是 a ∈ Z -a是a \in Z −a是a∈Z的逆。
- ( 不包括 0 的 Z , ∗ ) (不包括0的Z,*) (不包括0的Z,∗)不是一个群,即整数集 Z Z Z(不包括元素0)和普通乘法不能形成群,因为除元素-1和1外,对于元素 a ∈ Z a \in Z a∈Z,不存在逆元 a − 1 a^{-1} a−1。
- (C,*)是一个群,即复数 u + v i u+vi u+vi的集合(其中 u , v ∈ R 且 i 2 = − 1 u,v∈R且i^{2}=-1 u,v∈R且i2=−1)及定义在复数上的乘法 ( u 1 + v 1 i ) ∗ ( u 2 , + v 2 i , ) = ( u 1 u 2 − v 1 v 2 ) + ( u 1 v 2 + v 1 u 2 ) 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 = 1 e= 1 e=1,元素 a = u + v i ∈ C a=u+ vi \in C a=u+vi∈C的逆元为 a − 1 = ( u − i ) / ( u 2 + v 2 ) 。 a^{-1} = (u - i)/(u^2 + v^2)。 a−1=(u−i)/(u2+v2)。
群
Z
n
∗
{Z^*_n}
Zn∗
密码学中通常需要的是拥有有限个元素的群。下面介绍在 DHKE、Elgamal 加密、数字签名算法和其他很多密码学方案中都非常重要群
Z
n
∗
{Z^*_n}
Zn∗。
集合
Z
n
∗
{Z^*_n}
Zn∗由所有
i
=
0
,
1
,
.
.
.
,
n
−
1
i= 0,1,...,n-1
i=0,1,...,n−1整数组成,其中满足
g
c
d
(
i
,
n
)
=
1
gcd(i,n)=1
gcd(i,n)=1的元素与乘法模
n
n
n操作形成了阿贝尔群
,且单位元为
e
=
1
e= 1
e=1。
示例: 如果选择
n
=
9
n=9
n=9,
Z
n
∗
Z^*_n
Zn∗由元素
{
1
,
2
,
4
,
5
,
7
,
8
}
\{1,2,4,5,7,8\}
{1,2,4,5,7,8}组成。
计算表8-1所示的 Z 9 ∗ Z^*_9 Z9∗的乘法表能方便地检查定义群给出的绝大多数条件。
- 条件1(封闭性)是满足的,因为此表中的元素都在 Z 9 ∗ Z^*_9 Z9∗内。
- 条件3(单位元)和条件4(逆元)也成立,因为表中的每行和每列都是 Z 9 ∗ Z^*_9 Z9∗内元素的置换。根据主对角线的对称性,即第i行j列的元素与第j行i列的元素相等。
- 条件5(交换性)也是满足的。
- 条件2(可结合性)不能从表的形状中直接得到,但可以根据 Z n Z_n Zn,内普通乘法的可结合性立即得到。
循环群
群的基或阶
一个群 ( G , o ) (G,o) (G,o)是有限的,仅当它拥有有限个元素。群 G G G的基或阶可以表示为 ∣ G ∣ |G| ∣G∣。
注意:
- 在定义循环群的时候已经规定必须在群的基础上,也就是说集合
G
G
G满足群的四大特性
(封闭、结合、单位元、逆元)
。 - 群 G G G的基或阶表示群中元素的个数即 ∣ G ∣ |G| ∣G∣ = 群中元素个数。
- ( Z n , + ) (Z_n, +) (Zn,+)表示在集合 Z n Z_n Zn上进行加法模 n n n, ( Z n ∗ , ∗ ) (Z^*_n, *) (Zn∗,∗)表示在集合 Z n ∗ Z^*_n Zn∗上进行乘法模n。
- 区分 Z , Z n , Z n ∗ Z, Z_n, Z^*_n Z,Zn,Zn∗代表的集合 Z = { . . . − 2 , − 1 , 0 , 1 , 2... } . Z = \{...-2, -1, 0, 1, 2...\}. Z={...−2,−1,0,1,2...}. Z n = { 0 , 1 , 2 , . . . , n − 1 } . Z_n=\{0,1,2,...,n-1\}. Zn={0,1,2,...,n−1}. Z n ∗ 由所有 i = { 0 , 1 , . . . , n − 1 } 整数组成 , 其中满足 g c d ( i , n ) = 1. Z^*_n由所有i=\{ 0,1,...,n-1\}整数组成,其中满足gcd(i,n)=1. Zn∗由所有i={0,1,...,n−1}整数组成,其中满足gcd(i,n)=1.
示例:
- ( Z n , + ) (Z_n, +) (Zn,+): Z n Z_n Zn的基为 ∣ Z n ∣ = n |Z_n|=n ∣Zn∣=n,因为 Z n = { 0 , 1 , 2 , . . . , n − 1 } Z_n=\{0,1,2,...,n-1\} Zn={0,1,2,...,n−1}。
- ( Z n ∗ , ∗ ) (Z^*_n, *) (Zn∗,∗):请记住, Z n ∗ Z^*_n Zn∗是由小于 n n n且与 n n n互素的正整数组成的集合。因此, Z n ∗ Z^*_n Zn∗的基或者阶等于n的欧拉函数,即 ∣ Z n ∗ ∣ = Φ ( n ) |Z^*_n |= \Phi(n) ∣Zn∗∣=Φ(n)。例如,群 Z 9 ∗ Z^*_9 Z9∗的基为 Φ ( 9 ) = 3 2 − 3 1 = 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)内某个元素 a a a的阶 o r d ( a ) ord(a) ord(a)指的是满足以下条件的最小正整数 k k k: a k = a o a o . . . o a = l , a^k= aoao...oa=l, ak=aoao...oa=l,其中 l l l是 G G G的单位元。
示例:本例的目的是确定群
Z
11
∗
中
a
=
3
Z^*_{11}中a= 3
Z11∗中a=3的阶。在计算元素阶之前我们要充分的挖掘
Z
11
∗
Z^*_{11}
Z11∗的条件,我们来看一下集合
Z
n
∗
Z^*_n
Zn∗的定义:
Z
n
∗
{Z^*_n}
Zn∗由所有
i
=
{
0
,
1
,
.
.
.
,
n
−
1
}
i=\{0,1,...,n−1\}
i={0,1,...,n−1}整数组成,其中满足
g
c
d
(
i
,
n
)
=
1
gcd(i,n)=1
gcd(i,n)=1的元素与乘法模n操作形成了阿贝尔群,且单位元为
e
=
1
e=1
e=1.那么有:
∣
Z
11
∗
∣
的阶
=
Φ
(
11
)
=
1
1
1
−
1
1
0
=
10.
|Z^*_{11} |的阶 = \Phi(11) = 11^1 - 11^0 = 10.
∣Z11∗∣的阶=Φ(11)=111−110=10.
Z
11
∗
=
{
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}.
充分挖掘
Z
11
∗
Z^*_{11}
Z11∗后,我们现在不停地计算
a
a
a的幂值,直到得到单位元
e
=
1
e = 1
e=1为止。
a
1
=
3
a^1 =3
a1=3
a
2
=
a
∗
a
=
3
∗
3
=
9
a^2=a*a=3*3=9
a2=a∗a=3∗3=9
a
3
=
a
2
∗
a
=
9
∗
3
=
27
≡
5
m
o
d
11
a^3= a^2*a=9*3=27 \equiv 5 mod 11
a3=a2∗a=9∗3=27≡5mod11
a
4
=
a
3
∗
a
=
5
∗
3
=
15
≡
4
m
o
d
11
a^4=a^3*a =5*3=15\equiv 4 mod11
a4=a3∗a=5∗3=15≡4mod11
a
5
=
a
4
∗
a
=
4
∗
3
=
12
≡
1
m
o
d
11
a^5=a^4 *a=4*3=12 \equiv 1 mod 11
a5=a4∗a=4∗3=12≡1mod11
从最后一行可以得到
o
r
d
(
3
)
=
5
ord(3) = 5
ord(3)=5。
如果将得到的结果一直乘以
a
a
a,就会发现一个非常有趣的现象。
a
6
=
a
5
∗
a
≡
1
∗
a
≡
3
m
o
d
11
a^6 = a^5*a \equiv 1*a \equiv 3 mod 11
a6=a5∗a≡1∗a≡3mod11
a
7
=
a
5
∗
a
2
≡
1
∗
a
2
≡
9
m
o
d
11
a^7 = a^5*a^2 \equiv 1*a^2 \equiv 9 mod 11
a7=a5∗a2≡1∗a2≡9mod11
a
8
=
a
5
∗
a
3
≡
1
∗
a
3
≡
5
m
o
d
11
a^8 = a^5*a^3 \equiv 1*a^3 \equiv 5 mod 11
a8=a5∗a3≡1∗a3≡5mod11
a
9
=
a
5
∗
a
4
≡
1
∗
a
4
≡
4
m
o
d
11
a^9 = a^5*a^4 \equiv 1*a^4 \equiv 4 mod 11
a9=a5∗a4≡1∗a4≡4mod11
a
1
0
=
a
5
∗
a
5
≡
1
∗
1
≡
1
m
o
d
11
a^10 = a^5*a^5 \equiv 1*1 \equiv 1 mod 11
a10=a5∗a5≡1∗1≡1mod11
a
11
=
a
1
0
∗
a
≡
1
∗
a
≡
3
m
o
d
11
a^{11} = a^10*a \equiv 1*a \equiv 3 mod 11
a11=a10∗a≡1∗a≡3mod11
.
.
.
...
...
.
.
.
...
...
从这一点可以看出,
a
=
3
a=3
a=3的幂值一直在
{
3
,
9
,
5
,
4
,
1
}
\{3,9,5,4,1\}
{3,9,5,4,1}序列中无限循环。这个循环行为将引出如下循环群的定义。
循环群
如果群 G G G包含一个拥有最大阶 o r d ( α ) = ∣ G ∣ ord(α) = |G| ord(α)=∣G∣的元素 α α α,则称这个群是循环群。拥有最大阶的元素称为原根(本原元)或生成元。
注意:
- o r d ( α ) ord(α) ord(α)表示元素 α α α的阶, ∣ G ∣ |G| ∣G∣表示集合的基或阶
- 群 G G G中拥有最大阶的元素 α α α称为生成元,因为 G G G中每个元素 α α α都可以写成是这个元素的幂值 α i = a α^i =a αi=a(i为任意值),即 α α α产生了整个群。
- 为什么满足上述条件
α
α
α就可以产生整个群?
假如群 G G G中的元素个数为 n n n, 即 ∣ G ∣ = n |G| = n ∣G∣=n, 那么 o r g ( α ) = n org(α) = n org(α)=n. α i = a α^i =a αi=a(i为任意值)可以产生n个不同的值(操作模n),这些值在区间[0, n-1]中。(个人猜测)
示例:本例的目的是验证
a
=
2
a=2
a=2是否为
Z
11
∗
=
{
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}的本原元。请注意,该群的基为
∣
Z
11
∗
∣
=
10
|Z^*_{11}|=10
∣Z11∗∣=10, 逆元
e
=
1
e = 1
e=1。下面来看由元素
a
=
2
a=2
a=2的幂值生成的所有元素:
从最后一个结论可知:
o
r
d
(
a
)
=
10
=
∣
Z
11
∗
∣
.
ord(a) = 10 = |Z^*_{11}|.
ord(a)=10=∣Z11∗∣.这意味着(i)
a
=
2
a=2
a=2是本原元; (ii)
Z
11
∗
Z^*_{11}
Z11∗是一个循环群。
下面将验证
a
=
2
a=2
a=2的幂值是否真的生成了群
Z
11
∗
.
Z^*_{11}.
Z11∗.内的所有元素。下标展示
2
2
2的幂值生成的所有元素。
从上表我们可以得出结论:
- 幂值 2 i 2^i 2i的确生成了群 Z 11 ∗ Z^*_{11} Z11∗内的所有元素。
- 这些数字的生成顺序看上去是毫无章法的。指数 i i i与群元素之间看上去随机的关系是很多密码体制的基础,比如 Diffie-Hellman密钥交换。
循环群中的一些定理
定理一:对每个素数 p p p, ( Z p ∗ , ∗ ) (Z^*_p, *) (Zp∗,∗)都是一个阿贝尔有限循环群。
这个定理说明了每个素数域的乘法群都是循环群。这个结论对密码学产生了深远影响,因为这些群对于构建离散对数密码体制非常重要。为了理解这些看上去很奇怪的定理的实用性,请注意这样一个事实:几乎所有的 Web浏览器都内嵌了一个基于 Z p ∗ Z^*_p Zp∗的密码体制。
定理二:假设 G G G为一个有限群,则对每个 a ∈ G a \in G a∈G都有:
- a ∣ G ∣ = 1 a^{|G|}= 1 a∣G∣=1。
- o r d ( a ) ord(a) ord(a)可以整除 ∣ G ∣ 。 |G|。 ∣G∣。( ∣ G ∣ |G| ∣G∣ / o r d ( a ) ord(a) ord(a) = 整数)
示例:我们来看一下基为
∣
Z
11
∗
∣
=
10
|Z^*_{11}| = 10
∣Z11∗∣=10的群
Z
11
∗
Z^*_{11}
Z11∗。此群内只有1、2、5和10这些整数可以整除10,下面来判断此群内元素的阶是不是为1、2、5和10。下面可以通过观察该群中所有元素的阶来验证这个属性:
的确只出现了可以整除10的阶。
定理三:假设 G G G为一个有限循环群,则下面的结论成立:
- G G G中本原元的个数为中 Φ ( ∣ G ∣ ) \Phi(|G|) Φ(∣G∣)。
- 如果 ∣ G ∣ |G| ∣G∣是素数,则所有满足 a ≠ 1 ∈ G a ≠ 1 \in G a=1∈G的元素 a a a都是本原元。
上面的例子验证了第一个属性,因为 Φ ( 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)是一个循环群,则 G G G内每个满足 o r d ( a ) = s ord(a)= s ord(a)=s的元素 α α α都是拥有 s s s个元素的循环子群的本原元。
注意:从定理中我们可以提取出来 --> 循环群的每个元素都是其子群的生成元,而且该子群也是循环群。
示例:下面将通过
G
=
Z
11
∗
G=Z^*_{11}
G=Z11∗的一个子群验证上面的定理。从前面的例子可知
o
r
d
(
3
)
=
5
ord(3)=5
ord(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
∈
H
a \in H
a∈H均存在一个逆元
a
−
1
∈
H
a^{-1} \in H
a−1∈H(条件4)。这一点可以从表中看出表的每行和每列都包含一个单位元。
因此, H H H是 Z 11 ∗ , Z^*_{11}, Z11∗,的一个子群(如图所示)。
定理二(拉格朗日定理):假设 H H H为 G G G的一个子群,则 ∣ H ∣ |H| ∣H∣可以整除 ∣ G ∣ |G| ∣G∣。
示例:循环群
Z
11
∗
Z^*_{11}
Z11∗的基为
∣
Z
11
∗
∣
=
10
=
1
⋅
2
⋅
5
|Z^*_{11}| = 10 = 1·2·5
∣Z11∗∣=10=1⋅2⋅5。因此可以得到结论:
Z
11
∗
Z^*_{11}
Z11∗的子群对应的基为1,2,5和10(基为10的子群对应循环群本身),因为这些数都是10可能的除数。
Z
11
∗
Z^*_{11}
Z11∗所有的子群
H
H
H及这些子群的生成元
α
α
α可以表示如下:
定理三(求有限循环群对应的所有子群):
假设
G
G
G为一个阶为
n
n
n的有限循环群,
α
α
α为对应的生成元,则对整除
n
n
n的每个整数
k
k
k,
G
G
G都存在一个唯一的阶为
k
k
k的循环子群
H
H
H。这个子群是由
α
n
/
k
α^{n/k}
αn/k生成的。
H
H
H是由
G
G
G内满足条件
a
k
=
1
a^k=1
ak=1的元素组成的,且
G
G
G不存在其他子群。
这个定理给出了从一个给定循环群构建子群的简单而直接的方法。我们只需一个本原元和群基数n,然后计算 α n / k α^{n/k} αn/k(子群H的本原元),即可得到拥有k个元素的子群的生成元。
示例:循环群
Z
11
∗
Z^*_{11}
Z11∗,从前面可知该群的一个本原元为α =8。如果想要得到阶为2的子群的生成元β,需要计算:
β
=
α
n
/
k
=
8
10
/
2
=
8
5
=
32768
≡
10
m
o
d
11
。
β = α^{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
≡
1
m
o
d
11
β^2 = 100 \equiv 1 mod 11
β2=100≡1mod11
β
3
≡
10
m
o
d
11
,
β^3 \equiv10 mod 11,
β3≡10mod11,
.
.
.
...
...
.
.
.
...
...
.
.
.
...
...
参考资料:《深入浅出密码学》–Christof Paar,Jan Pelzl著