RSA基础:欧拉素数定理
郝伟 2020/07/03
欧拉定理(Euler Theorem),也称费马-欧拉定理或欧拉函数定理,这是一个关于正整数同余的公式,表示为:aφ(n)≡1(mod n)其中,a 与 n 均为正整数,且两者互质。具体这个公式到底有什么含义,在实际中如何使用,本文将进行详细解释。
首先,欧拉定理讨论的内容是整数的操作(记为:N),尤其是正整数(N+)相关的,所以,为了理解欧拉定理,让我们先了解一些基本概念。
若整数 m,n,k,r 满足 m=k×n+r,且 n=0,0≤r<n,则称 r 是 m 对 n 的余数。举例来说,13=2∗5+3,其中3就是13除以5的余数。我们也可以换一种方式来表达 r=m−⌊ab⌋n,即 ⌊ab⌋ 表示取 a 除以 b 的整数部分。为了求余数,定义 mod 作为取余操作,如 r=m mod n,当 r=0 时,称 m 可以被 n 整除,记作 a∣b。
注:⌊⌋ 是对小数的取整数部分的操作,如 ⌊45⌋=⌊1.25⌋=3,⌊3.1415926⌋=3.
给定自然数n大于1,若n只能够被1和其本身整除,则n是质数(也叫素数)。如 2,3,5,7,11,13 等都是质数。
若正整数 a,b 都可以被 c 整除,则 c 是 a,b 的公约数,记作 a,b∣c。如6是24和36的公约数。a,b的公约数可以有多个,其中最大公约数记作 gcd(a,b) 或简化形式 (a,b)。
若 a,b 均为正整数且两者的公约数只有1,则称两个数互质,记为:(a,b)=1。举例来说,(5,6)=1, (15, 13)=1。这里要特别注意,互质与这两个数是否为质数没有任何关系,比如 (3,5)=1 是两个质数,而(15,8)=1,则是两个合数。
给定一个正整数 m,如果两个整数 a 和 b 满足 a−b 能够被 m 整除,即 (a−b)/m 的结果为正整数,那么就称 a 与 b 对 模 m 同余,或简称为对 m 同余,记作 a≡b (mod m),其中符号 ≡ 表示同余,对模 m 同余是整数的一个重要等价关系。根据这个定义,我们可以知道欧拉定理是一个关于同余的定理。
设 n∈N+ ,则 φ(n)=∣A∣,其中A={m∣1≤m<n, (m,n)=1}。
注:∣S∣ 表示集合S元素的个数。
解释:给定一个正整数 n,欧拉函数就是求在 [1,n) 区间上,与 n 互质的整数的个数。举例来说,设m=8,则与8互质的正整数集合A=1,3,5,7,此集合共有4个元素,所以 φ(8)=4。
欧拉函数的定义域与值域有一一对应关系,即已知 m 可以求出唯一的 φ(m),但是反过来不可能,如已知 φ(m)=4,除了8,结果还可以是其他值,如10(此时A=[1,3,7,9])。所以欧拉函数的逆函数的解有多个值,尤其是当 φ(m) 的值很大时,有更多的解。这个性质很重要,在密码学中有相关的应用。
有了这个函数以后怎么计算,我们分情况讨论:
- 情况1:n=1,则 φ(n)=1,因为1与自身互质;
- 情况2:n 是质数,则 φ(n)=n−1, 因为任何一个质数与比自身小的数都只有1这个公约数;
- 情况3:n=pk,其中 p>1,k≥1 且均为正整数,则 φ(n)=φ(pk)=(p−1)∗pk−1;
- 情况4:n=pq,其中 p,q均为质数,则 φ(n)=φ(pq)=φ(p)φ(q)。
关于情况4,我们可以简单证明:
由于 p,q 是质数,所以与 pq 不互质的数只有两种情况:
1:p的整数倍: p,2p,3p,...,(q−1)p,共 q−1 个;
2:q的整数倍: q,2q,3q,...,(p−1)q,共 p−1 个;
所以在区间 [1,pq) 上,与 qp 互质的正整数个数=比 pq 小的正整数个数 −p 的倍数 −q 的倍数
即,φ(pq)=(pq−1)−(q−1)−(p−1)=pq−p−q+1=(p−1)(q−1)
证毕。
我们对情况4进行扩展,可以得到更为一般的欧拉函数的计算方法:
已知 n,p 均为正整数,若 n=p∣n,1≤p<n∏pap−1则:φ(n)=∏(p−1)pap−1……(Eq.1)也可以表示为:φ(n)=n∏(p−p1)……(Eq.2)
举例说明,设 n=72,则φ(n)=φ(72)=φ(8∗9)=φ(23∗32)。此时,我们可以使用以上两个公式分别计算:
使用 Eq.1 可得:φ(23∗32)=(2−1)23−1∗(3−1)32−1=4∗6=24
使用 Eq.2 可得:φ(23∗32)=72∗(1−21)(1−31)=72∗21∗32=24
使用两种公式计算结果一致。
注1:p∣n 表示 n 能被 p 整除。
注2:ap 表示的是最大次方,如8可以写成 23,此时 ap 为 3,但是不可以写成 22∗21。
对任意两个正整数 a,n,若两者素质,则:aφ(n)≡1(mod n)。
注:作为对比,费马小定理(ap−1≡1(mod p),其中 p 为质数),实际上就是欧拉公式的特殊情况。
设与 n 互质的正整数集合 Zn={x1,x2……xφ(n)},共φ(n)个元素。
再设集合 S={m1,m2,…,mφ(n)},其中 mi=a∗x1;(mod n),即整数 a 与每个质数的乘积后对 n 求余;
则有:Zn=S。
为什么 Zn=S?
① 因为 a 与 n 互质,所以对任意 mi=a∗xi mod n,都有 mi 与 n 互质;
② 当 i=j 时, xi=xj,所以 xi(mod n)=xj(mod n),由 a,n 互质可得 a∗xi(mod n)=a∗xj(mod n)。
由①和②联立可得,一个任意两元素均不相同且都与n互质的集合,因为这样的集合是唯一的,所以Zn与S相同。
设 PZn=∏1φ(n)xi,PS=∏1φ(n)mi,因为 Zn=S, 所以 PZn=PS。
aφ(n)∗PZn mod n
=(aφ(n)∗x1∗x2∗...∗xφ(n)) mod n
=(ax1∗ax2∗...∗axφ(n)) mod n # 将a的指数展开并分配至每个x
=(ax1 mod n)∗(ax2 mod n)∗...∗(axφ(n) mod n) mod n
=(m1∗m2∗...∗mφ(n)) mod n
=PS mod n=PZn mod n
即 aφ(n)∗PZn mod n=PZn mod n根据余数性质,两边可以同时消去PZn,可得:aφ(n) mod n=1 mod n最终可得:aφ(n) ≡1 (mod n)证毕。
本文首先介绍了欧拉函数的基础知识,然后介绍了欧拉函数,欧拉定理及其证明。欧拉定理是一个重要的定理,在很多领域都有应用,比如在信息安全领域,非对称公私钥加密算法RSA就是基于欧拉定理。
[1] 余数定理,郝老师,2020/05/03.
[2] 欧拉定理,百度百科。