破译密码的奥妙

世上万物总是相生相克。既然有人研究密码,也就有人研究破译密码的办法。

密码之所以会被破译,是因为它有一个致命的弱点,即“设密”与“解密”使用的是同一个“密钥”。这样,密钥的得与失,便事关着大局。

本世纪 70 年代,许多研究密码的专家发现,把一些正向容易逆向困难的

数学问题用来设密,可以收到极好的效果!例如,把两个 50 位的质数相乘, 这是一件容易的事;但要从它们的乘积分解出这两个质数来,即使用电子计算机也需用 100 万年。后者看起来似乎是个有限的时间,但实际上可以看成是无限的!上述问题寓难于易,寓无限于有限,这正是构造一切密码的规律!

现在我们就利用上面的例子来设置密码。令合数 n=pq,P、p 为质数。加密时,先选一个既不能整除 p-1,又不能整除 q-1 的质数 r;然后,将需要加密的明码 a 乘方 r 次,再除以 n 得到余数 a′,则 a′便是密码。从明码求密码的过程是很容易的,两者的关系用式子可以写成:

ar≡a′(modn) 以上算式的意思是:ar 和 a′除以 n,余数相同。

解密时,关键是要找一个 s,使它满足sr≡1(mod(p-1)(q-1))数学上可以证明,此时必有:

(a′)s≡a(modn)

其实,这一点是不难验证的。上一节说过,公元 1736 年,欧拉证明了费

尔马小定理。过了 24 年,公元 1760 年,欧拉又将这个定理推广为更一般的。即若 C 与 n 互质,则

Cφ(n)≡1(mod n)

1 1 1

式中φ(n) = n(1 - p )(1- q ) (1 - t )

其中 p,q⋯,t 是 n 的质因子。

由于我们加密时选取 n=pq(p、q 为质数),因而

1 1

φ(n) =pq(1 - p)(1 - q )

=(P-1)(q-1) 这样,根据欧拉定理,便有:

(a′)(p-1)(q-1)≡1(mod n)

∵ Sr≡1(mod(p-1)(q-1)

∴ Sr≡1+k(p-1)(q-1),(k∈N)

从而 (a′)s≡a′·(a′)k(p-1)(q-1)(mod n)

≡a′·1k(mod n)

≡a′(mod n)

∵ ar≡a’(mod n)

∴ (a’)sr≡ar(mod n)

这与解密中的算式(a’)s≡a(mod n),没有矛盾!

现在我们回到密码的设置上面来。很明显,无论是加密时由 a 求 a’, 或解密时由 a’求 a,对于知道 p、q 的人都是很容易的。举例说,设

p=5,q=7,n=35;a=9

选 r=5,它显然既不整除 p-1=4,也不整除 q-1=6

ar=95≡4(mod35) 从而 a′=4 即为相应于 a=9 的密码。

解密时,算得(p-1)(q-1)=4×6=24。显然可以取 S=5,(sr= 25=1+24),由

(a′)s=45≡9(mod35)

可以还原出明码 a=9

上述密码几乎可以是公开的,即使把 n 和 r 告诉对方也无妨!关键在于n 的分解。选取的质数 p、q 越大则 n 的分解越难。

自从快速鉴别质数的方法出现之后,有人甚至用 100 位的质数来构造密码。