加密算法的发展与数学(尤其是数论)密不可分,本文将通过RSA加密算法,来看一看数论是如何为一个加密算法构建理论基础的。当然,如果你只对结论感兴趣,可以直接跳到本文最后一节,那里会给出RSA加密算法的一般步骤,如有不明白的地方,可根据需要,在前面的几节中寻找相应的说明。
一、关于数论
数论简单来说就是关于数字的理论。如9是奇数、10是偶数、3是质数(素数)、6是第一个完全数(真因子之和等于其本身的数,1+2+3=6)等,都是数论。
一个大家都知道而且很常用的数论的应用就是:判断一个数是否能被3整除,这可能过于简单而被大家忽视,那么下面这个类似的问题可能就不是所有人都知道的了:判断一个数是否能被11整除,如判断12397是否能被11整除,具体做法如下:奇数位的数字加上偶数位的数字之和是否相等,因为1+3+7=2+9,所以12397能被11整除。
二、一个简单的加密算法
以下是一个简单的加密方式,其加密规则如下(这里0~f为16进制数字),将0~f左移5位,超出部分平移至最右侧:
按照如上的转化方式,假设原文为:ace369 ,则对应的密文为:f138be,这个方式用数学怎么表示呢?其实很简单,可以使用取模运算来表示,y表示密文,x表示原文,则 y = (x+5) mod 16。如e+5等于19,19除以16余3,所以e-->3。
三、模运算
定义1:对于任一整数 m 以及正整数 n ,一定存在唯一整数 q 以及 r (0≤r<n) ,满足:m = nq + r ,此时,称r的值为 m mod n。
例1:
1、7 mod 2 = 1,因为 7 = 2 · 3 + 1 ;
2、-7 mod 3 = 2,因为 -7 = 3 · -3 + 2;
3、1 mod 7 = 1 ;2 mod 7 = 2 ;3 mod 7 = 3 …… 6 mod 7 = 6;
四、模运算的加法与乘法
首先定义一个集合,其中元素为0到n-1之间的整数。现在取
中的两个元素a、b,
上加法与乘法有如下定义2:
加法:
乘法:
例如,在中,有
;
现在试着计算一下,(9 + 10) mod 7 与 [(9 mod 7) + (10 mod 7)] mod 7 , 可以发现这两个式子的值都为5 ,事实上对于任意整数 i 、j ,根据定义1,不难看出有如下等式1:
上述等式1中,只展示了两个算子i和j的情况,事实上,等式1对于多个算子依然是成立的,如:
根据等式1和定义2,不难证明模运算的加法和乘法满足交换律和结合律,下面以加法的结合律为例,简单证明一下
(注意到如例1-3,对于中任一元素a,有a mod n = a),证明如下:
另外,在集合中,对于0和1,有:
五、模的指数运算
根据模运算的乘法定义,令其中b=a,则有
,更一般的,有:
进一步,根据等式1中,有等式2:
现在,在中,试着计算以下式子:
六、费马小定理与欧拉定理
根据上一节的计算,可以发现如下例2:
事实上,这就是著名的费马小定理:给定任意素数p,取a为上任一不为0的元素,则
可以被p整除,即有等式:
。
这个定理的证明最早由欧拉发表于1736年(尽管莱布尼茨更早留下了证明,但并没有发表),欧拉的证明过程非常简单,这里简单描述一下,通过数学归纳法:对于a=1,定理显然成立,假设对于a=k,定理成立,则当a=k+1时,用二项式定理,将展开,由于p为素数,展开式合并中间项可简写为
,其中m为整数,将等式两边都减去k+1,可得:
,进一步简化可得:
,根据假设,等式右边最后一项可以被p整除,因此等式左边也可以被p整除,由于k+1<p,所以
可以被p整除。
当然费马小定理还有一个更一般的形式:当p为素数,且a与p互为素数时,就可以被p整除。对于这个版本的证明,由于a和p互为素数,所以(a mod p)为
上任一不为0的元素,将其代入上面的结论中,再根据等式1,则结论得证。
可以看到第二个版本的费马小定理是第一个版本的一个扩展,解放了a必须在上的约束,那么对于p必须为素数这个约束是否也可以有更一般的形式呢?当然有,这就是欧拉定理:若a与p互为素数,则
可以被p整除。其中
为小于p且与p互为素数的整数的个数。可以看到,若p为素数,则
=p-1,此时的欧拉定理就是费马小定理。
七、模的逆元
前面已经定义了模的加法、乘法和指数运算,那么模运算是否也有除法呢?显然,对于a/b,不能保证其为整数,故一般意义上的除法并不存在。但从前面的一些例子中,注意到如的情况,这里,若把3看作a,则5相当于在
中的1/a,不妨在
中做如下计算:
可以看到在中,对于每个元素a都存在一个元素b,使得
,我们称b为a在
上的逆元,相当于我们常说的1/a。
那么逆元一定存在吗?答案是不一定,如在中3是没有逆元的,事实上,观察一下上一节给出例2,可以发现在
中每个元素a的逆元其实可以由
计算出,因为
。再根据欧拉定理,可以得到更一般的情况,即在
中,当a与p互素时,一定可以根据欧拉定理找到a的逆元。
逆元的唯一性,这里也简单说明一下,假设对中元素a有逆元b和c,则在等式
两边都乘以c,得到
,根据第四节对乘法性质的描述,可得b=c。
八、RSA加密算法
前面铺垫了这么多数论的知识,现在可以开始介绍RSA加密算法了,算法步骤如下:
1、取任意两个大的素数p和q
2、令n=pq,m=(p-1)(q-1)
3、取任意小于m且于m互素的整数a
4、在中求a的逆元b
5、此时公钥为(n,a),私钥钥为(n,b)
6、设x为要加密的原文(x<n),则密文
7、使用私钥解密,有原文
现在,我们来证明第7步的解密过程:
1、将代入
中,根据第5节等式2,得
。
2、因为b为a在上的逆元,根据第7节的介绍,有ab=km+1=k(p-1)(q-1)+1。
3、将ab代入中,得
。
4、考虑,根据第6节的费马小定理,有
(注意,此时x应与p互素,考虑p为素数,x为p的整数倍时,等式不成立)以及
(同理,x应与q互素),即
可被p和q同时整除,且p和q为素数,所以
可以被pq整除,即有
。
注:第4步的证明也可以用欧拉定理直接得到结果,因为n=pq,且p、q为素数,所以,可以直接得到
,但是此时 x应与n互素。因为x<n且p、q为素数,所以若x不与n互素,则x为p的整数倍或x为q的整数倍,不可能为pq的整数倍,和上述不成立的情况一致,这种情况在后面会讨论到。
5、有以上可得:
6、当x为p的整数倍或x为q的整数倍时,设x=rq(x为p的整数倍时同理),此时,有r<p,因为p素数,所以r与p互素,又因为q、p互素,所以rq与p互素,根据费马小定理,有如下等式
根据模运算定义,有 ,等式两边同时乘以rq,得
将x=rq,ab=k(p-1)(q-1)+1,n=pq 代入上式,得,即
,则结论得证。
由于篇幅问题,文中一些简单的证明就省略了,当然,欧拉定理除外,这里使用欧拉定理只是为了说明逆元的存在,当然逆元的存在使用最大公约数也可以证明,但是由于篇幅问题,所以文中仅仅使用欧拉定理的结论说明一下问题就行了。