1、1,第四章公开密钥密码体制,一. 基本要求与基本知识点 (1)掌握公钥密码体制的基本概念; (2)掌握RSA的密钥产生、加密及解密过程; (3)理解ELGamal体制的密钥产生、加密及解密过程; (4)理解背包体制的密钥产生、加密及解密过程。 二. 教学重点与难点 (1)公钥密码体制的基本概念; (2)RSA体制; (3)ELGamal体制; (4)背包体制。,2,4.1 公钥密码体制的基本概念,公钥密码体制是为了解决对称密码体制中最难解决的两个问题而提出的。 一是对称密码技术的密钥分配问题。在对称密码体制中,加密密钥和解密密钥是相同的,任何人只要获得加密密钥,才能对密文进行解密,获得明文。利
2、用对称密码体制进行保密通信时,密钥不能公开,要通过安全信道传送给合法的接收者。若网络中有n个人要互相进行保密通信的话,每一个人就须保存另外n-1的密钥,因而网络中就会有n(n-1)2个密钥,且为安全起见,密钥需要经常更换。因此当n较大时,大量密码的产生、分发和更换十分困难,即密钥管理变得十分复杂。 二是对称密码不能实现数字签名,无法证实信息的真实性。,3,4.1 公钥密码体制的基本概念,Diffie和Hellmna于1976年在密码学的新方向中首次提出了公钥密码的观点,即为每个用户分配两个相互匹配又相互独立的密钥,其中: 一个密钥被公开,称为公开密钥(公钥),用于加密, 另一个密钥被保密,称为
3、私有密钥(私钥),用于解密。所有用户的公钥均登记在类似电话号码簿的密钥本上。当要给用户A发送加密信息时,需要在密码本上查找A用户的公钥,然后加密信息,并发给用户A。用户A接收到密文之后,用自己的私钥进行解密即可得到明文。 1977年由Rivest(李维斯特)、Shamir(沙米尔)和Adleman(埃德曼)共同提出了第一个公钥密码算法(即RSA密码体制),是公钥密码中最优秀的加密算法,被誉为密码学发展史上的里程碑之一。此后,人们基于不同的计算问题提出了大量的公钥密码算法。,4,4.1 公钥密码体制的基本概念,在公钥密码体制(Public-Key Cryptosystem)中,加密和解密使用两把
4、不同的密钥,即公钥(Public Key)和私钥(Private Key),公钥可以被任何人知道,用于加密消息以及验证签名,私钥仅仅自己知道,用于解密消息和签名。因此又称其为非对称密码体制(Asymmetric Cryptosystem)。如果能从公开的加密密钥推出解密密钥,那么这种密码体制就是不安全的。 与对称密码体制所采取的技术不同,公钥密码算法是基于数学函数,而不是基于代换和置换。因此要构造一个公钥密码体制时,必须寻找符合下列条件的函数f(x): (1)对于f(x)定义域中的每个x,使f(x)=y,均存在函数f -1 (y),使f-1 (f(x)=x;-相当于加密和解密变换均存在 (2)
5、f(x)和f -1 (y)都容易计算;-相当于加密和解密过程都容易进行 (3)已知f(x),求出f -1 (y)非常困难。-相当于由密文推出明文困难。,5,4.1.2加密模型和认证模型,一个公钥密码体制由6个部分构成:明文,加密算法,公钥和私钥,密文,解密算法。可以构成两种基本的模型:加密模型和认证模型。 1、加密模型-保密性 在加密模型中,发送方用接收方的公钥作为加密密钥,接收方用自己的私钥作解密密钥,由于该私钥只有接收方拥有,因此即只有接收者才能解密密文得到明文。,6,4.1.2加密模型和认证模型,如图4-1所示,假设用户A向用户B发送消息M。在发送方,用户A首先用用户B的公钥PUB加密消
6、息M,得到密文: ;在接收方,用户B用自己的私钥PRB解密密文C,得到明文: 。由于只有B知道PRB,所以其他人不能解密C。,7,图4-1 公钥加密模型,8,4.1.2加密模型和认证模型,2、认证模型-认证性(完整性、真实性) 在认证模型中,发送方用自己的私钥对消息进行变换,产生数字签名。接收者用发送者的公钥对数字签名进行验证以确定签名是否有效。 只有拥有私钥的发送者才能对消息产生有效的数字签名,所以其他人不能伪造其签名。 任何人都可以得到发送方的公钥,因此可以用签名人的公钥,来验证其数字签名的有效性。 如图4-2所示,用户A首先用自己的私钥PUA对消息M做解密变换,即数字签名: ;在接收方,
7、用户B用A的公钥PUA对C做加密变换,即验证A的数字签名: 。,9,图4-2 公钥认证模型,10,4.2 RSA密码体制,RSA密码体制是1977年由Rivest、Shamir、Adleman提出的非常著名的公钥密码算法。 RSA算法的安全性基于:求两个大素数的乘积是容易的,但分解两个大素数的乘积,求出其素因子则是困难的,它属于NP完全类问题,至今没有有效的算法。 RSA算法是一种分组密码,明文和密文是0到n-1之间的整数,通常n的大小为1024位二进制数或309位十进制数。,11,4.2.1 RSA算法,1、密钥的产生 (1)随机选择两个大素数(如100位十进制数)p和q,令n=pq; (2
8、)计算欧拉函数(见定理2.1.1)(n)=n(1-1/p)( 1-1/q)=(p -1)(q -1) ; (3)选择 e使得1e(n),且gcd(e, (n)=1; (4)计算ded1 mod (n), 且 0dn (5)公开公钥:PU=e, n; (6)保存私钥:PR=d, p, q。,12,4.2.1 RSA算法,2、加密过程 (1)在公钥库中查得用户U的公钥:PU=e, n; (2)将明文分组m=m1m2mr,使得0min,i=1,2, ,r; (3)对明文分组mi作加密变换:ci=E(mi) mie mod n, i=1,2, ,r (4)将密文c1 c2cr传送给用户U。 3、解密过
9、程 (1)先对每组密文做解密变换:mi=D(ci) cid mod n (2)合并分组得到明文m=m1m2mr。,13,图4-3 RSA算法,14,【例4-1】选择素数: p=47 和 q=71,求出RSA算法的公钥和私钥。,【解】: (1)计算:n= pq =4771=3337, (n)=(p-1)(q-1)=4670=3220。 (2)选择e:使gcd(e, 3220)=1,选取e=79; (3)求解d:de1 mod 3220,即 79d1 mod 3220 辗转除法: 3220=4079+6079=160+1960=319+319=63+1,15,回代:1=19-63=19-6(60-
10、319)=1919-660=19(79-160)-660=1979-2560=1979-25(3220-4079)= 1979-25(3220-4079)=101979-253220 两边同时对模3220进行求余运算得1019791 mod 3220 于是d =1019 (4)公开公钥PU= 79,3337 保存私钥PR= 1019,47,71;,16,(5)假设消息为 m = 6882326879666683,进行分组,分组的位数比N要小,我们选取m1 = 688,m2 = 232,m3 = 687,m4 = 966,m5 =668,m6 =003。 进行加密变换:ci=E(mi) mie
11、mod N,即m1的密文为c1 68879 mod 3337 1570 mod 3337 , c1 = 1570,依次进行类似计算。可得到最终密文为:c =1570275620912276158 进行解密变换:mi=D(ci) cid mod N,即c1 的明文m1 15701019 mod 3337 688 mod 3337 , m1 = 688,依次可以求出其他明文。最后恢复明文为:m = 6882326879666683,17,RSA密码体制的特点,(1)运算速度慢由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,一般来说适用于少量数据的加密。 (2)产生密钥烦琐产生密
12、钥很麻烦,受到素数产生技术的限制。,18,4.2.2 RSA算法的安全性,RSA体制的安全性是基于大数的因子分解问题,大数的因子分解在数学上是一个难解问题,即无法从公钥参数n中计算出素数因子(大于100个十进制位)p和q,于是无法计算出 (n) =(p-1)(q-1),也就无法计算出私钥d,从而保证非法者不能对密文进行解密。 RSA的安全性依赖于大数分解困难,即从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。显然,分解n是最常遇到的攻击方法。在算法中要求p和q均大于100位十进制数,这样的话n至少200位十进制数,目前人们已能分解140多位的十进制数的大素数。 最新记录是129位十进
13、制数的因数分解,在网络通过分布计算被成功分解。估计对200位十进制数的因数分解,在亿次计算机上也要进行55万年。,19,4.3 EIGamal密码体制,该体制是1985年由EIGamal提出的一个著名的公钥密码算法。该算法既能用于数据加密也能用于数字签名,其安全性依赖于离散对数这一难题。 【离散对数问题:设g,x,p是正整数。已知g,x和p,可以容易地求出y,使得:ygx(mod p) 反之,如果已知y,g和p,求x,这就是离散对数问题,属NP完全类问题,是难解的。】 1. 密钥产生 (1)任选一个大素数p(300位十进制数),使得p-1有大素因子,g是模p的一个本原根(即g是0,1,2,p-
14、1中与p互素的数),公开p与g; (2)任选一私钥x,x0, p-1; (3)计算y g x (mod p); (4)公开公钥:y; (5)保密私钥:x;,20,4.3 EIGamal密码体制,2. 加密过程 (1)在公钥库中查得用户U的公开密钥:y; (2)对于明文m,随机选取一个整数r,r0, p-1 (3)计算c1 gr (mod p) c2 myr (mod p) (4)将(c1,c2)作为密文发给用户U.。 3. 解密过程 (1)先计算 w (c1x)-1 (mod p) (2)再计算出明文 m c2w(mod p)【因为w (c1x)-1 (mod p) - wc1x 1(mod
15、p)-w (gr)x 1(mod p)- w (gx) r 1(mod p)- wyr1(mod p) - wmyrm(mod p)-wc2 m (mod p) - m c2w(mod p)】,21,4.3 EIGamal密码体制,与RSA方法比较,ElGamal方法具有以下优点: (1)系统不需要保存秘密参数,所有的系统参数均可公开; (2)密文依赖于加密过程所选择的随机数r,加密相同的明文可能会产生不同的密文; (3)ElGamal方法的计算复杂度比RSA方法要大。,22,【例4-2】 假设Alice想要加密消息m=1299后传送给Bob。,(1)密钥产生 Alice任选一个大素数p为25
16、79,g是模p的一个本原根,取g为2,公开参数p,g。 任选私钥x为765,计算公钥y g x (mod p) 2765(mod 2579) 949 (mod 2579), 公开:PU=949,保密:PR=765。,23,(2)加密 Alice在0, p-1= 0, 2578内任选r为853, 计算:c1 gr (mod p) 2853 (mod 2579) 435(mod 2579)c2 myr (mod p) 1299*949853 (mod 2579) 2396(mod 2579) Alice将(c1,c2)=(435,2396)作为密文发给Bob。 (3)解密 Bob计算:m c2w(
17、mod p)c2*(c1x)-1 (mod p)(c2*c1p-1-x ) (mod p) (2396*4352579-1-765) (mod 2579) (2396*4351813) (mod 2579) 1299 (mod 2579),24,4.4 背包密码体制,背包密码体制是1978年由Merkle(默克尔)和Hellman(赫尔曼)基于求解背包问题的困难性提出的一个公开密钥体制。 我们第二章曾经讲过背包问题是一个NP完全类问题。但不是所有的背包问题都是难解的,超递增背包序列就很容易求解。 定义4.3.1 正整数序列a1,a2,an称为超递增的,若对于任意(1 n-1),有 例如(1,2
18、,4,8,16)就是一个超递增序列。,25,4.4 背包密码体制,定理4.3.1 由超递增序列a1,a2,an及k确定的超递增背包问题是容易求解的。(即对于背包问题:其中已知超递增序列a1,a2,an及k,容易求出X=(x1,x2,xn)),26,4.4 背包密码体制,1. 密钥产生 (1)随机选取一个超递增序列(e1,e2,en),作为用户的私钥加以保存,记为PR; (2)选取一对大的互素的数w和N,把序列(e1,e2,en)变换为:T(ei) wei (mod N)即做MH变换,将一个超递增序列转换为一个普通序列后作为公钥,记为PU; (3)将公钥PU =(T(e1),T(e2),T(en
19、))加以公布。,27,4.4 背包密码体制,2. 加密过程 (1)在公钥库中查出用户U的公钥:PU=(T(e1),T(e2),T(en)) (2)将明文表示成n位长的0/1字符序列,即 m=m1m2mn,mi=0/1; (3)对明文做加密变换:c=E(m)=m1T(e1)+ m2T(e2)+ mnT(en)= (4)将密文c发给用户U。,28,4.4 背包密码体制,3. 解密过程 (1)计算c w-1c (mod N); (2)按超递增序列(e1,e2,en)从c中还原mi(相当于求解特殊的背包问题); (3)得到明文m=m1m2mn。,29,4.4 背包密码体制,【以下说明如何按超递增序列(
20、e1,e2,en)从c中还原mi?因为c=E(m)=m1T(e1)+ m2T(e2)+ nT(en)= ,而T(ei) wei (mod N)所以c , cw-1于是 c 由已知w和N互素,则有ww-11 (mod N),因此 c 其中,已知c和ei,求mi,即按超递增序列(e1,e2,en)从c中还原mi,就变成求解特殊的背包问题,是容易求解的,因此解密是容易进行的。】,30,4.4 背包密码体制,关于背包密码体制的安全问题说明如下。由于c= 是个普通背包问题,由公开信息c和T(ei)求出明文是难解问题,所以破译是困难的。而解密时,是按超递增序列(e1,e2,en)从c中还原mi,即由私钥e
21、i和c求解超递增背包问题c ,这是个易解问题,因此解密容易进行的。 Merkle和Hellman的背包密码体制提出后,悬赏以求破译者,两年后被RSA的发明者之一沙米尔攻破。尽管二人又做了改进,但最终出现了一种新的破译方法,彻底结束了背包公钥密码体制的历史使命。,31,4.5 本章总结,(1)公开密钥密码体制的基本概念; (2)RSA的密钥产生、加密及解密过程; (3)背包体制的密钥产生、加密及解密过程; (4)ELGamal体制的密钥产生、加密及解密过程; 课堂练习:如果选择素数 p=101 和 q=113,选取e=3533,计算RSA的公钥和私钥。,32,4.6 思考及作业题,1、在使用RSA公钥体制中,已截获发给某用户的密文为c=10,该用户的公钥为e=5,n=35,那么明文是多少?为什么能根据公钥可以破解密文?(题4.1) 2、利用RSA算法计算,如果p=11 和 q=13,选取e=103,对明文3进行加密。求d及密文。(题4.2) 3、在ElGamal体制中,假设Alice想将消息m=1299传给Bob。Alice任选一个大素数p为2579,取g为101,选择保密的私钥x为237。(题4.5) (1)计算公钥y; (2)计算密文; (3)写出解密过程。 4、分别说明RSA体制、背包体制和ELGamal体制的安全性依据是什么?,33,第四章完,