RSA基础:欧拉素数定理
郝伟 2020/07/03

0 前言

欧拉定理(Euler Theorem),也称费马-欧拉定理或欧拉函数定理,这是一个关于正整数同余的公式,表示为:aφ(n)1(mod n)a^{φ(n)} \equiv1 (\mathrm{mod} \ n)其中,aann 均为正整数,且两者互质。具体这个公式到底有什么含义,在实际中如何使用,本文将进行详细解释。

1 基本概念

首先,欧拉定理讨论的内容是整数的操作(记为:N\mathbb{N}),尤其是正整数(N+\mathbb{N^+})相关的,所以,为了理解欧拉定理,让我们先了解一些基本概念。

1.1 余数 (Reminder)

若整数 m,n,k,rm, n, k, r 满足 m=k×n+rm = k \times n + r,且 n00r<nn \neq 0,0 \leq r < n,则称 rrmmnn 的余数。举例来说,13=25+313 = 2 * 5 + 3,其中3就是13除以5的余数。我们也可以换一种方式来表达 r=mbanr=m-\lfloor {b \over a} \rfloor n,即 ba\lfloor {b \over a} \rfloor 表示取 a 除以 b 的整数部分。为了求余数,定义 mod 作为取余操作,如 r=mr = m mod nn,当 r=0r = 0 时,称 mm 可以被 nn 整除,记作 aba|b

注:\lfloor \rfloor 是对小数的取整数部分的操作,如 54=1.25=3\lfloor {5 \over 4} \rfloor=\lfloor 1.25 \rfloor =33.1415926=3\lfloor 3.1415926 \rfloor =3.

1.2 质数 (Prime)

给定自然数n大于1,若n只能够被1和其本身整除,则n是质数(也叫素数)。如 2,3,5,7,11,13 等都是质数。

1.3 公约数

若正整数 a,ba,b 都可以被 cc 整除,则 cca,ba,b 的公约数,记作 a,bca,b|c。如6是24和36的公约数。a,ba,b的公约数可以有多个,其中最大公约数记作 gcd(a,b)gcd(a,b) 或简化形式 (a,b)(a,b)

1.4 互质 (relatively prime)

a,ba,b 均为正整数且两者的公约数只有1,则称两个数互质,记为:(a,b)=1(a,b)=1。举例来说,(5,6)=1, (15, 13)=1。这里要特别注意,互质与这两个数是否为质数没有任何关系,比如 (3,5)=1 是两个质数,而(15,8)=1,则是两个合数。

1.5 同余 (congruence modulo)

给定一个正整数 mm,如果两个整数 aabb 满足 aba-b 能够被 mm 整除,即 (ab)/m(a-b)/m 的结果为正整数,那么就称 aabbmm 同余,或简称为mm 同余,记作 ab (mod m)a ≡ b \ (\textrm{mod} \ m),其中符号 表示同余,对模 mm 同余是整数的一个重要等价关系。根据这个定义,我们可以知道欧拉定理是一个关于同余的定理。

2 欧拉函数 φ(n)φ(n)

2.1 定义

nN+n \in \mathbb{N^+} ,则 φ(n)=A,其中A={m1m<nφ(n)=|A|,其中A=\{m | 1 \leq m < n, (m,n)=1}(m, n)=1\}

注:S| S | 表示集合S元素的个数。

解释:给定一个正整数 nn,欧拉函数就是求在 [1,n)[1, n) 区间上,与 nn 互质的整数的个数。举例来说,设m=8m=8,则与8互质的正整数集合A=1,3,5,7A={1, 3, 5, 7},此集合共有4个元素,所以 φ(8)=4φ(8)=4

2.2 性质

欧拉函数的定义域与值域有一一对应关系,即已知 mm 可以求出唯一的 φ(m)\varphi(m),但是反过来不可能,如已知 φ(m)=4φ(m)=4,除了8,结果还可以是其他值,如10(此时A=[1,3,7,9]A=[1,3,7,9])。所以欧拉函数的逆函数的解有多个值,尤其是当 φ(m)φ(m) 的值很大时,有更多的解。这个性质很重要,在密码学中有相关的应用。

2.3 计算

有了这个函数以后怎么计算,我们分情况讨论:

关于情况4,我们可以简单证明:
由于 p,qp, q 是质数,所以与 pqpq 不互质的数只有两种情况:
1:pp的整数倍: p,2p,3p,...,(q1)pp, 2p, 3p, ..., (q-1)p,共 q1q-1 个;
2:qq的整数倍: q,2q,3q,...,(p1)qq, 2q, 3q, ..., (p-1)q,共 p1p-1 个;
所以在区间 [1,pq)[1, pq) 上,与 qpqp 互质的正整数个数==pqpq 小的正整数个数 p- p 的倍数 q-q 的倍数
即,φ(pq)=(pq1)(q1)(p1)=pqpq+1=(p1)(q1)\varphi(pq) =(pq-1) - (q-1)-(p-1)=pq - p - q + 1 = (p-1)(q-1)
证毕。

2.4 计算扩展

我们对情况4进行扩展,可以得到更为一般的欧拉函数的计算方法:

已知 n,pn,p 均为正整数,若 n=pn,1p<npap1n=\prod_{p|n,1\leq p < n} p ^{a_p - 1}则:φ(n)=(p1)pap1(Eq.1)\varphi(n) = \prod (p - 1 ) p^{a_p - 1} ……(Eq.1)也可以表示为:φ(n)=n(p1p)(Eq.2)\varphi(n) =n\prod(p-{1 \over p})……(Eq.2)

举例说明,设 n=72n=72,则φ(n)=φ(72)=φ(89)=φ(2332)\varphi(n)=\varphi(72)=\varphi(8*9)=\varphi(2^3*3^2)。此时,我们可以使用以上两个公式分别计算:
使用 Eq.1Eq.1 可得:φ(2332)=(21)231(31)321=46=24\varphi(2^3*3^2)=(2-1) 2^{3-1} * (3-1)3^{2-1}=4*6=24
使用 Eq.2Eq.2 可得:φ(2332)=72(112)(113)=721223=24\varphi(2^3*3^2)=72*(1- {1 \over 2}) (1 - {1 \over 3}) =72 * {1\over 2} * {2 \over 3} =24

使用两种公式计算结果一致。
注1:pnp|n 表示 nn 能被 pp 整除。
注2:apa_p 表示的是最大次方,如8可以写成 232^3,此时 apa_p33,但是不可以写成 22212^2 * 2^1

3 欧拉公式

3.1 定义

对任意两个正整数 a,na, n,若两者素质,则:aφ(n)1(mod n)a^{φ(n)} \equiv 1 (\mathrm{mod} \ n)
注:作为对比,费马小定理(ap11(mod p)a^{p-1} \equiv 1 (\mathrm{mod} \ p),其中 pp 为质数),实际上就是欧拉公式的特殊情况。

3.2 证明

设与 nn 互质的正整数集合 Zn={x1,x2xφ(n)}Z_n=\{x_1,x_2……x_{φ(n)}\},共φ(n)φ(n)个元素。
再设集合 S={m1,m2,,mφ(n)}S=\{m_1, m_2,…,m_{φ(n)}\},其中 mi=ax1(mod n)m_i=a * x_1;(\mathrm{mod} \ n),即整数 aa 与每个质数的乘积后对 nn 求余;
则有:Zn=SZ_n= S

为什么 Zn=SZ_n=S
① 因为 aann 互质,所以对任意 mi=axi mod nm_i = a * x_i \ mod \ n,都有 mim_inn 互质;
② 当 iji \neq j 时, xixjx_i \neq x_j,所以 xi(mod n)xj(mod n)x_i (\mathrm{mod} \ n) \neq x_j (\mathrm{mod} \ n),由 a,na, n 互质可得 axi(mod n)axj(mod n)a * x_i (\mathrm{mod} \ n) \neq a * x_j (\mathrm{mod} \ n)
由①和②联立可得,一个任意两元素均不相同且都与nn互质的集合,因为这样的集合是唯一的,所以ZnZ_nSS相同。

PZn=1φ(n)xi,PS=1φ(n)miP_{Z_n} = \prod_1^{\varphi(n)} x_i, P_S= \prod_1^{\varphi(n)} m_i,因为 Zn=SZ_n= S, 所以 PZn=PSP_{Z_n} =P_S

aφ(n)PZn mod na^{\varphi(n)}*P_{Z_n} \ \mathrm{mod} \ n
=(aφ(n)x1x2...xφ(n)) mod n=(a^{\varphi(n)}*x_1*x_2*...*x_{\varphi{(n)}} ) \ \mathrm{mod} \ n
=(ax1ax2...axφ(n)) mod n=(ax_1*ax_2*...*ax_{\varphi{(n)}}) \ \mathrm{mod} \ n # 将a的指数展开并分配至每个x
=(ax1 mod n)(ax2 mod n)...(axφ(n) mod n) mod n=(ax_1 \ \mathrm{mod} \ n)*(ax_2 \ \mathrm{mod} \ n)*...*(ax_{\varphi{(n)}} \ \mathrm{mod} \ n) \ \mathrm{mod} \ n
=(m1m2...mφ(n)) mod n=(m_1 * m_2*...*m_{\varphi{(n)}}) \ \mathrm{mod} \ n
=PS mod n=PZn mod n=P_S \ \mathrm{mod} \ n =P_{Z_n} \ \mathrm{mod} \ n

aφ(n)PZn mod n=PZn mod na^{\varphi(n)}*P_{Z_n} \ \mathrm{mod} \ n=P_{Z_n} \ \mathrm{mod} \ n根据余数性质,两边可以同时消去PZnP_{Z_n},可得:aφ(n) mod n=1 mod na^{\varphi(n)} \ \mathrm{mod} \ n=1 \ \mathrm{mod} \ n最终可得:aφ(n) 1 (mod n)a^{\varphi(n)} \ \mathrm \equiv 1 \ (\mathrm{mod} \ n)证毕。

4 总结

本文首先介绍了欧拉函数的基础知识,然后介绍了欧拉函数,欧拉定理及其证明。欧拉定理是一个重要的定理,在很多领域都有应用,比如在信息安全领域,非对称公私钥加密算法RSA就是基于欧拉定理。

参考资料

[1] 余数定理,郝老师,2020/05/03.
[2] 欧拉定理,百度百科。