证明RSA加密明文取值范围集合按照mod n乘法构成一个群但不是循环群

86 阅读1分钟

上学期密码学的课程,陈老师讲了一个很有趣的问题,在这里记录一下。 题目可以描述为: 证明RSA加密明文mm取值范围ZnZ_n^*,在mod n\mod\ n运算下:

  • (1)是一个群
  • (2)不是循环群

前置知识

RSA原理

首先,RSA的加密解密原理描述如下:

  • 密钥生成:
    1. 选取两个大素数ppqq,计算n=pqn=pq
    2. 选择公钥指数 ee,使得 1<e<φ(n)1 < e < \varphi(n)gcd(e,φ(n))=1\gcd(e, \varphi(n)) = 1,其中φ(n)\varphi(n)nn的欧拉函数:φ(n)=(p1)(q1)\varphi(n) = (p-1)(q-1)
    3. 计算ee的逆元dd为私钥:de1(modφ(n))d \equiv e^{-1} \pmod{\varphi(n)}
    4. 公钥为(n,e)(n,e),私钥为dd
  • 加密: 给定明文mm ,满足m{m:1m<n,gcd(m,n)=1}m \in \{m:1\leq m<n,gcd(m,n)=1\},使用公钥(e,n)(e, n)进行加密, C=memodnC = m^e \mod n
  • 解密: 接收密文CC后,使用公钥和私钥(d,n)(d, n)进行解密: m=Cdmodnm = C^d \mod n

解密原理证明: Cd=(me)d=med mod nC^d = (m^e)^d =m^{ed}\ \mod\ n 其中, ed1modφ(n)ed \equiv 1 \mod \varphi(n),所以有ed=kφ(n)+1ed=k\varphi(n)+1

因为m,nm,n互素时,根据欧拉定理有: mφ(n)1(modn)m^{\varphi(n)} \equiv 1 \pmod{n}

所以 Cd=med=mkφ(n)+1=m1=mmodnC^d = m^{ed} = m^{k\varphi(n)+1}=m \cdot1=m \mod n


证明mn互素的条件可忽略

消息mm取值范围为小于nn且与nn互素的整数, 表示为Zn={m:1m<n,gcd(m,n)=1}Z_{n}^*= \{m:1\leq m<n,gcd(m,n)=1\} 但小于nnmmnn不互素的概率很低,所以可以忽略,

证明: 小于nn且与nn互素的数为φ(n)\varphi (n),所以mmnn互素的概率为: φ(n)n=(p1)(q1)pq\frac{\varphi(n)}{ n}=\frac{(p-1)(q-1)}{pq} 几乎为1。

注意,这里的ZnZ_n^*就是我们下面要讨论的集合。


正题

下面来解释,为什么mm取值的群ZnZ_{n}^*modn\mod n运算下:

  • (1)是群
  • (2)但不是循环群

(1)证明集合是群,就是验证四个条件,这个比较容易,简单描述:

  1. 封闭性,a,bZn\forall a,b\in Z_{n}^*,有gcd(a,n)=gcd(b,n)=1gcd(a,n)=gcd(b,n)=1,则gcd(ab,n)=1gcd(ab,n)=1,所以元素abab在群中,运算封闭
  2. 单位元,是1
  3. 结合律,与普通模乘证明相同
  4. 存在逆元,aZn,bZn,s.t.ab=1modn\forall a \in Z_{n}^*,\exists b \in Z_{n}^*,s.t.ab=1 \mod n
  5. 显然满足交换律,所以也是阿贝尔群

(2)要证明群不是循环群,首先要明白循环群的定义,循环群存在一个生成元gg,群中所有元素都可以由gg乘方生成。 再说明两个定义:

  • 群的阶,群中元素的个数,记为ord(G)ord(G)
  • 元素的阶,元素aa使得ak=e(单位元)a^k=e(单位元)kk就是元素的阶,记为ord(a)ord(a) 任何群都满足: aG,ord(a)ord(G)\forall a \in G, ord(a)\leq ord(G)

当存在元素gg,使得ord(g)=ord(G)ord(g)=ord(G)时,群为循环群,gg为生成元。

所以,证明这个问题,就是要找群的阶与群元素的阶的关系。

因为ZnZ_{n}^*是与nn互素元素构成的群,所以ord(G)=φ(n)=(p1)(q1)ord(G)=\varphi(n)=(p-1)(q-1)

任意元素mZnm \in Z_{n}^*: 因为mmnn,互素,n=pqn=pq 所以mmp,qp,q互素,根据欧拉定理,有

mφ(p)=mp11(modp)m^{\varphi(p)}=m^{p-1}\equiv1(\mod p)
mφ(q)=mq11(modq)m^{\varphi(q)}=m^{q-1}\equiv1(\mod q)

到这一步,我们的思路是将等号左边放缩为相同的数,从而可以使用中国剩余定理,得到一个可以表示mm的阶的等式。

p1p-1q1q-1的最小公倍数lcm(p1,q1)=klcm(p-1,q-1)=k,由于ppqq为大素数,奇数,所以p1p-1q1q-1为偶数,必然有小于(p1)(q1)(p-1)(q-1)的最小公倍数,即k<(p1)(q1)k<(p-1)(q-1),这里的小于号是严格小于,所以 将上面两式模数放大,等式右边依然是1:

mk1(modp)m^{k}\equiv1(\mod p)
mk1(modq)m^{k}\equiv1(\mod q)

根据中国剩余定理,可以得到

mk1(modn)m^k\equiv 1(\mod n)

ord(m)k<(p1)(q1)=ord(G)ord(m)\leq k<(p-1)(q-1)=ord(G), 所以,当p,qp,q是大整数时,ZnZ_{n}^*一定不是循环群。