Transcript Chapter3

第3章 公开密钥与数字签名
公开密钥的诞生标志着现代密码学的诞
生,它开拓出许多密码学新的研究领域比
如签名、认证、密钥分配等。加密只是其
应用之一。本章主要研究公钥加密方在保
密与数字签名方面的应用。
本章内容
第1节 数学基础 
第2节 公开密钥加密算法RSA 
第3节 数字签名算法
第4节 密钥分配算法
第5节 混合加密算法
第6节 密码学研究的若干前沿
小结
本章讲述了公开密钥加密算法所用的数
学基础与RSA公开密钥加密算法,DSA数
字签名算法。所讲述的数学基础虽然在本
章中只有RSA和DSA两处用到,但这些基
础是现代密码学的基础,在有关的密码学
研究中非常重要,处处都能见到,所以必
须认证掌握。简单介绍了Diffie-Hellman密
钥交换算法、用RSA实现密钥交换,最后
介绍了混合密码系统。
作业题
1. 请你编一个因子分解的程序,程序要有计时
功能。用这个程序对下列三个数进行因子分
解,并记录分解三个数所用的时间。46631,
7836601,1981835783。
2. 选择n =3337, 加密密钥e =1019, 将陕西师范大
学用RSA公钥加密算法加密。(提示:将“陕
西师范大学”中的每个汉字都用区位码表示,
并加密相应的区位码)
3. 试证明DSA验证等式的正确性。
1 数学基础
(1) Module operation
(2) Prime number
(3) Great Common Divisor
(4) Inversing module operation
数学基础
(5) Fermat’s little theorem and Euclid
Function
(6) Factoring
(7) Discrete Logarithm 
(8) Two Basic Assumptions
BACK
2. 公开密钥密码学
2.1 公开密钥密码学的历史与分类
2.2 RSA算法
2.3 公开密钥算法进行通信
2.4 公开密钥密码学的优势 BACK
RSA公开密钥算法
RSA (Ron Rivest, Adi Shamir, Leonard
Adleman) 公开密钥算法是公开密钥算法的
概念提出以后出现的第一个公开密钥算法,
它既能用于加密也能用于数字签名。在已经
提出的公开密钥算法中RSA算法是最容易理
解和实现的。RSA算法的数学基础是因子分
解假设。
RSA算法
RSA算法的原理非常简单,非常易于理解。但
计算起来却非常困难。通过三个精心选择的自然
数e、d 和 n进行加密和解密。加密过程为:
解密过程为:
下面主要研究如何选择自然数e、d 和 n。
BACK
BACK
模运算
BACK
Prime Number
素数是这样一种数:大于1;它的因
子只有1和它本身。
2是唯一的偶素数,其他素数均为奇
数;素数是无限的。2365347734339和
2756839-1都是素数。
判断一个数是不是素数是困难的。
BACK
最大公因数
(1) 两个数的公因(约)数;
(2) 两个数的最大公因数;
(3) 两个数互素:除了1以外没有共同
的因子。
(4) 素数与它的倍数以外的任何数都是
互素的。
BACK
求模逆元
BACK
费马小定理与欧拉函数
BACK
BACK
因子分解
对一个数进行因子分解就是将这个
数分解成若干素数的乘积。因子分解
是一个非常古老的问题,这个问题到
目前为止尚没有多项式时间算法。
目前的因子分解算法有:数域筛选
法;二次筛选法;椭圆曲线法;连分
式算法;试除法。
BACK
离散对数
BACK
两个基本假设
BACK
3. 数字签名算法
在文件上签名长期以来一直被用作身份
的证明,或者同意文件的内容。签名有如
下特征:(1)签名是可信的;(2)签名不
可伪造;(3)签名不可重用;(4)签名
文件是不可改变的;(5)签名是不可抵赖
的。主要的数字签名算法有RSA数字签名
和DSA数字签名。
用RSA进行数字签名
(1) Alice用她的私人密钥对文件加密,从
而对文件签名。
(2) Alice将签名与文件发送给Bob。
(3) Bob用Alice公钥解密,如果解密的结
果与传过来的文件完全相同,就表示
Alice确实对该文件进行过签名。
DSA算法
DSA算法是美国Digital Signature
Standard-DSS 中所规定的算法,这个
算法与相比有所不同:DSA只能用于签
名,不能用于加密与密钥分配;DSA比
RSA速度慢;DSA的密钥长度太短;
DSA选择过程没有公开等。但是最大的
优势在于DSA没有专利。美国政府不想
为数字签名算法支付专利费。
关于DSA
DSA是DSS选定的一个标准算法,选择这个
算法的主要要求与考虑因素包括:确保以最低
的成本实现最有效的安全性和保密性;软件与
硬件实现应当比较容易;应该不受专利的约束;
签名函数与验证函数的效率应当比较高,应该
能够在智能卡应用中有效地实现签名操作。在
这些应用中签名操作应在计算能力适中的智能
卡环境中进行,而验证过程可以在计算能力较
强的环境中实现。
算法所用到的参数
Alice对消息的签名过程
Bob对签名的验证过程
Bob进行下面的计算来验证签名
DSA的数学基础
DSA的数学基础
数字签名的研究热点
 盲签名
 群签名(团体签名)
 不可抵赖的数字签名
 代理数字签名
 失败终止签名
 指定的确认人签名
BACK
密钥分配算法
前面我们在使用对称加密算法时,都假设
Alice和Bob有一个共享的密钥,但我们回避了
这样一个问题:如何使Alice和Bob共享一个密
钥?这个问题不解决所有的对称密码算法都是
空谈。这正是密钥分配要解决的问题。最初,
密钥分配是通过面对面的协商来完成的、后来
发展到由专人护送密钥。而这一切在以前都是
可行的,在信息社会则远不能适应信息社会的
需要。这就出现了密钥分配的研究课题。
Diffie-Hellman密钥交换算法
Diffie-Hellman密钥交换算法是第一个
专门为密钥分配而设计的密码算法,在
信息安全领域有重要的影响。该算法的
数学基础就是离散对数假设。首先Alice
和Bob通过公开信道协商一个的素数n和
一个g. 其中g是模n的生成元。这两个整
数不需要保密。
Diffie-Hellman密钥交换协议如下:
Diffie-Hellman交换协议
RSA算法实现的密钥交换
因为在公开密钥算法中,Alice的公钥是公开
的,任何人都可以得到,所以当Bob需要和
Alice协商密钥时可以采用下面的协议:
(1) Bob从公钥数据库中找到Alice的公钥。
(2) Bob用Alice公钥加密选择的密钥k。
(3) Bob将经过加密的k发送给Alice。
(4) Alice用她自己的私有密钥解密k。
这样Alice和Bob就得到一个共享的密钥k.
BACK
用公开密码学加密通信
(1) Alice和Bob选用一个公开密码系统;
(2) Bob将她的公开密钥传送给Alice;
(3) Alice用Bob的公开密钥加密她的消息,
然后发送给Bob;
(4) Bob用他的私人密钥解密Alice的消息,
然后阅读消息。
BACK
公开密码学的优势与问题
优势:公开密钥算法很好地解决了密
钥分配问题;公开密钥算法既可以用于
加密也可以用于数字签名。
问题:公开密钥算法速度很低;公开
密钥算法对选择明文攻击很敏感。
BACK
密码学研究的若干前沿
Zero-knowledge proof
Bit commitment
Oblivious transfer
Secure multiparty computation
BACK
多方保密计算
数字世界的解决方案
数字世界的解决方案
混合密码系统
所谓混合密码系统就是利用公开密钥
算法进行密钥交换,用对称密码算法进行
实际数据的加密。这种系统克服了两者的
缺点,发挥了两者的优势。这是实际构建
加密通信系统时普遍被采用的方法。由此
还诞生了Public Key Infra-structure- PKI.
PKI已经成为国家的信息基础设施。
BACK