§5 公开密钥密码体制
§5.1 公开密钥密码体制概论
一、公钥密码体制
则公开密码体制具有以下的特征:
⑴ 用户必须能够有效地计算公开的和秘密的密钥对,PK和SK。
⑵ 如果不知道SK,那么即使知道PK,算法E和D以及密文Y,确定明文X的计算也是不可行的。
⑶ 继加密之后再脱密,应还原出原来的明文X,即
DSK(EPK(X))=X (*)
上式对EPK域中的全部X都成立。
EPK(DSK(X))=X (*,*)
密码体制有以下特点:
⑴ 密钥分发简单。由于加密密钥与解密密钥不同,并且不能由加密密钥推断出解密密钥,从而使加密密钥表可以像电话号码本一样由主管部门发给各个用户。
⑵ 秘密保存的密钥量减少。网络中每个用密码通信的成员只需秘密保存自己的解密密钥,N个通信成员只需产生N对密钥。
⑶ 可以满足互不相识的人之间的私人谈话的保密性要求。
⑷ 可以完成数字签名。(以后解释)
二.两种密码体制的差异
1. 算法:公钥密码体制的算法容易用精确的数学术语描述。它建立在特定的已知数学问题上,安全性依赖于这种数学问题的求解是计算上不可能的。与此相对,传统密码体制的算法以复杂紊乱的数学方程为基础。虽然求解单个方程并不困难,但由于它被多次迭代和搅乱,以至无法用解析法求解。
2. 密钥:这两种密码体制的密钥产生方式也不同。在传统密码体制中,加密密钥和解密密钥可以简单的互相推导,因此它们是以简单的方法随机选择的。在公开密钥密码体制中,由公开密钥不能简单地推出秘密密钥。秘密密钥是按照特定的要求选择的,而公开密钥又是由秘密密钥利用确定的步骤有效地计算出来的。
§5.2 RSA密码体制和预备知识
RSA密码体制是由美国的Rivest(里夫斯特).Shamir(沙米尔)和Adleman(艾德勒曼)发明的,并以他们的名字命名,这种体制的保密性是建立在大素数因子的合数进行因子分解是一个非常困难的问题上的。(如取两个大素数P、Q,P·Q= r要求反过来从r分解求出P、Q,在计算上非常困难,基本上是不可行的。
我们在介绍RSA体制之前,先介绍一些有关的数学知识。
一、数论的基本性质:
定义1:只能被和它自身整除,而不能被其它正整数整除的大于1的正整数称为素数(质数)。
定理1:设a 和r 是两个整数,r≠0 则必有=整数 q 及i 存在,使得a=qr+I 0≤i<∣r∣
定理2:设a 和 b是两个整数,且 (a,b)=d (d是a与b的最大公因数)则存在整数 s 和 t使得d=sa+tb.
(素因数分解定理)
定理3:每个大于1的正整数恰有一种方法表示成素数的乘积(不计主素数因子出现的先后次序)。
二、同余的概念及基本性质:
定义1:如果两个整数a和b的差a-b能被另一个整数r整除,即r∣a-b, 则称 a,b 关于模r 同余,用符号a≡b(modr)表示。(即a和b有相同的余数)
若 r (a-b) 则记作a b(modr)
(若a≡b(modr) 即a-b=mr. 即a=b+mr 也就是说a,b被r除时余数相同。
显然同余关系是一个等价关系,即
(1) 自反的:a≡a(modr)
(2) 对称的:若a≡b(modr) , 则b≡a(modr)
(3) 可传递的:如果a≡b,b≡c(modr),则a≡c(modr)
定理4:如果a1≡b1(modr),a2≡b2(modr),…… ,an≡bn(modr)
则 a1·a2……an≡b1·b2……bn(modr)
推论1:如果a≡b(modr) , 则对于任意正整数n,
an≡bn(modr)
推论2:如果a≡b(modr), 则对于任意整数c
a·c≡b·c(modr)
证明:当n=2时 , ∵a 1a 2-b1b2=( a1-b1) a2+( a2-b2) b1
而 r∣a1-b1 , r∣a2-b2 , ∴ r∣(a 1a 2-b1b2)
故a 1a 2≡b1b2(modr)
命题1:若ca≡cb(modr) 且(c,r)=1,则a≡b(modr)
定理5:(按模计算原理)
设a1和a2为整数,op表示二元操作符+,-,×,
则(a1opa2)modr=[( a1 modr) op(a2 modr)] modr
其中amodr表示a被r除后的余数, amodr=resr(a)
定理6:若(a,r)=1,则同余式 ax=1(modr)有唯一解。
证明:∵(a,r)=1
∴ s,t整数 使sa+tr=1
∴ 即 r∣1-as, 1≡as(modr)
三、欧拉函数
为了讨论的方便,以下均假设模r是正整数
为了讲解欧拉函数,介绍一些基本述语。
按模r将整数集I 分成r个子集,每一个子集称为模r的一个同余类,同一个同余类中的任意两个整数被r除后的余数相同,而不同同余类中的数被r除后的余数不相同。
命题1:(1)若a与r互质,则a所在的同余类中所有的数都与r互质;
(2)若a不与r互质,则a所在的同余类中所有的数而都不与r互质。
定义2:在r的一个完全剩余系中,所有与r互素的数构成的系称为r的简化剩余系(既约剩余系)。(简化剩余系中数的个数 (r))
定义3:r的一个完全剩余系中与r互质的数的个数称为r的欧拉函数,用 (r)表示( (r) 表示r的简化剩余系中数的个数)。因为 (r)与所采用的完全剩余系无关,所以更直观地可这样来描述。
定义2:欧拉函数 (r)表示0,1,2,……,r-1这r个数中与r互质的数的个数,称为r的欧拉函数。
例 (5)=4. (10)=4 {1,3,7,9}
一般来说①若r是质数,则 (r)=r-1, ②若r是合数,则 (r)<r-1
③当r=1时,所有的整数都与1互质,(α,1)=1 由于所有的整数与1的最大公约数均为1,所以这个类是与1互质的类,∴ (1)=1
命题3:若(x1,r)=1, (x2,r)=1,……,(xn,r)=1
则(x1 x2……xn r)=1
命题4:若(a,b)=1,则 (ab)= (a) (b)
定理7:设r= ……p (其中每一pi均为素数),则
(r)=r(1- )(1- )……(1- )
定理8:(Euler定理) 若(a,r)=1,则aφ(r)≡1(modr)
定理9:设 r=pq是两个素数因子的乘积,a是小于r的任一非负整数
(即a∈{0,1,2,……,r-1}), m是任一正整数,则amφ(r)+1≡a(modr)
证明:(1)当a=0时,结论显然成立。
四、欧几里得算法
(1)如何求a,b的最大公因数(a,b)=gcd(a,b)
(2)如何判断a,b是否互质。
按方法(1)求出gcd(a,b) 若gcd(a,b)=1 则a,b互质,否则不互质。
(3)再回过来看定理6。若(a,r)=1, 则同余式 ax≡1(modr)的解如何求呢?
也是利用欧几里得算法。•
RSA算法介绍
一、密钥的选择和计算:
1、 随机地选择两个素数p和q。
2、 计算出r=p•q
3、 计算欧拉函数 (r)=(r(1- )(1- ))=(p-1)(q-1)
4、 选取一个与 (r)互素(质)的正整数K, 将k定义为公开密钥PK(或将K 定义为秘密密钥SK)
5、 由公开密钥PK求秘密密钥SK(或由秘密密钥SK计算公开密钥)
概括起来:
1、选取素数p和q p=47 q=61 秘密的。
2、计算 r=2867 公开的。
3、计算 (r)= (p-1)(q-1) (r)=2760 秘密的。
4、选取公开密钥PK,使(PK, (r)) =1 PK=167 SK=1223 公开的。
5、计算秘密密钥SK,使PK• SK ≡1 mod( (r)) 秘密的。
6、报文(明文)X 秘密的。
7、密文 Y 公开的。
二、加密变换
用RSA加密前,先将明文数字化,将要保护的明文信息分成一连串十进制数的数据块,每个数据块的值不超过r-1。
2、分别对每一个数据块进行加密产生相应的密文块。
方法是将明文块x;自乘PK次后,用r去除,取其余数。
设X=x1 x2 x3……xn, 对明文块Xi;进行加密所得的密文块用Yi表示,
则密文Y=y1 y2…… yn
每个密文块Yi用下述方法计算产生:
Yi=EPK(Xi ) Yi≡ (modr) 要求0≤Yi<r
(实际上要求yi的值也不超过 r-1 )
三、脱密变换:
对每一个密文块Yi;进行脱密还原出相应的明文,方法是:将密文块Yi自乘SK次后,用r去除,取其余数。(0≤余数<r)因此还原出的明文满足0≤Xi<r,
∵ 若不限制,则可还原为多个明文,使之不能正确还原。
Xi =DSK(Yi) Xi≡ (modr) 0≤Xi<r
四、使用 RSA算法的注意事项
1、 r必须选取得相当大,比如200位十进制数以上。
2、在RSA中还应要求所用素为数p和q 的长度相差比较少,使敌手难以估计p,q 的大致范围。
3、 p-1和q-1都应含有大的素数因子,以增加敌手猜出 (r) 的难度。