目录
5.1 公钥密码体制
5.1.1 概述
(1)传统加脱密方式分析
-
区别于传统的单密钥密码体制(或称对称密钥密码体制),公开密钥密码体制是所谓的双密钥密码体制,加密密钥可以公开。何人都可以用这个公开的密钥进行加密,而相应的脱密密钥是秘密的,任何第三者想利用已知的公开密钥求脱密密钥是计算上困难的。
-
公钥密码体制由于用户私钥的私有性,公钥密码在实现数字签名和防抵赖性方面有着巨大的优势。
(2)一个公开密钥密码体制的基本要求
其中的可交换性并不是每一个公钥体制所必备的。如果一个公钥体制满足这一条,那么它就可以用作数字签名。
5.1.2 单向函数和陷门函数
(1)定义
-
单向函数定义:如果一个函数F(x)满足下列条件:
-
对于F(x)定义域中的任何x,可容易地求出函数值y=F(x)
-
对于值域中的绝大数y,很难求出相应的x,使y = F(x)成立。
-
陷门函数定义:一个函数如果满足下列两个条件:
-
对于F的段定义域的任何x,可容易地求出y=F(x)
-
如果不知道函数F的可变参数,则对于值域中的绝大多数y,很难求出相应的x,使得y=F(x)
-
若知道函数F的可变参数,则可容易求出相应的x,使得y=F(x)成立。
则该函数称作陷门单向函数,可变参数称作陷门信息(可作秘密密钥)。
(2)单向函数举例
-
因数分解问题
-
离散对数问题
-
背包问题
5.1.2 D-H密钥交换协议
D-H密钥建立协议的安全性基础是计算有限域上的离散对数是“困难的”问题
(1)本原元
(2)D-H交换协议
-
参数选取p、g
-
密钥协商U(x)-V(y)
(3)优缺点
优点:
-
任何两个人都可以写上出会话密钥,不需要事先拥有对方的公开或秘密信息;
-
每次密钥交换后不必再保留秘密信息,减少了保密的负担。
缺点:
-
容易受到中间人攻击。
5.1.3 中间人攻击
攻击者E在信道中间,假冒U,与V进行密钥交换;同时,假冒V与U进行密钥交换。致使看似U与V交换的密钥,实际上都是与攻击者交换密钥。用户U和V不易发现。
-
原因:D-H协议与双方的身份信息无关
-
改进:在交互过程中进行身份认证
E表示攻击者E(U)和E(V)分别表示E冒充U和V。
5.2 RSA公钥密码体制
-
数学难题:大合数分解在计算上不可行的。
-
目前分解大合数的最好算法是数域筛法,其计算复杂性是亚指数时间
5.2.1 RSA公钥密码体制及其工作过程
1. 设计思路
(1)基本思路:
-
找到合适的e,d,n,使得对所有m<n有:med mod n=m
-
对于所有m<n的值,要计算me和Cd是相对容易的
-
在给定e和n时,计算出d是不可行的
(2)算法依据
2. 算法流程
例题:
5.2.2 RSA公钥密码体制的实现
-
大合数的规模至少要在1024比特以上,一般要取2048bite
1. 产生大素数的算法
-
素性检测算法(Rabin提出)
判定n是素数的算法如下:
2. RSA算法实现的几个问题
-
当m是p或q的倍数时,仍可以正确加解密m不能是0、±1,否则密文就是明文(e必为奇数)
(1)关于加法、减法和乘法
-
利用二元法或M元法(也称窗口法)进行指数运算,以512比特加密指数为例:
(2)模数处理方法
-
第一种方法:先预计算模数N的倍数;
-
第二种方法:直接进行除法运算;
-
第三种方法:蒙哥马利方法。
[(a mod n) op (b mod n)] mod n = (a op b) mod n
5.2.3 RSA密码体制的安全性分析
1. RSA设计的基本要求
(1)p和q不能太接近
(2)p+1、p-1和q+1、q-1不能有太多的小因子,必须存在大的素因子
(3)脱密指数d应满足
-
否则,可由连分数的方法进行攻击。
-
还可能要求加密指数e为错乱指数
(4)模数规模
模数的位数应至少设计在1024比特以上,取2048比特更为安全。这种增加的安全性是以牺牲运算速度和增加软硬件资源为代价的。
2. RSA公钥密码体制的安全性分析
结论1: 求Φ(N)的难度与分解N的难度等价。
结论2: 求脱密指数d的难度与分解N等价。
结论3: 求λ(N)的难度与分解N等价。
结论4: 能够猜出1比特明文信息的难度与猜出整个明文的难度等价
结论5: 由非平凡不动点可能分解N。
3. 共模RSA公钥密码体制的安全性分析
结论1: 已知一对加、脱密指数时,即可分解公用的模数N。
结论2: 已知一对加、脱密指数时,不分解也可以求出其它用户等价的脱密密钥。
结论3: 通播信息是不安全的。
4. 潜在攻击
-
穷举攻击:尝试所有可能的密钥
-
数学攻击:对两个素数乘积的因子分解(IF问题)
-
计时攻击:依赖于解密算法的运行时间
-
选择密文攻击:利用了RSA体制的性质
5.3 ElGamal公钥密码算法
-
基于离散对数问题的公钥密码体制
5.3.1 ElGamal公钥密码算法描述
5.3.2 设计思想
(1)利用D-H密钥交换协议,生成双方加密用的密钥yk,此时yx=(gx)k=(gk)x=c1x;与D-H协议(一次一换)的不同支出在于已将y=gx作为公开密钥公布,不需要每次发送给对方。
(2)采取一次一密的加密思想,将yk作为双方交换的密钥,利用它进行加脱密。
-
本原元g和GF(q)可以全网公用,也可以一人一套;
-
本原元g可以用阶是大素数代替;
-
加密不同明文是须选用独立的随机数k,但秘密的脱密密钥x需和其他版本号长期不变;
-
在ElGamal公钥密码体制中,密文不仅依赖明文m还依赖秘密选取的随机数k,因此,*明文空间中的一个明文可对应于密文空间中的多个不同的密文。;
-
密文与明文相比,长度扩展了一倍。