收藏 分享(赏)

《网络信息安全》第5-6讲.ppt

上传人:scg750829 文档编号:10136213 上传时间:2019-10-13 格式:PPT 页数:25 大小:334.50KB
下载 相关 举报
《网络信息安全》第5-6讲.ppt_第1页
第1页 / 共25页
《网络信息安全》第5-6讲.ppt_第2页
第2页 / 共25页
《网络信息安全》第5-6讲.ppt_第3页
第3页 / 共25页
《网络信息安全》第5-6讲.ppt_第4页
第4页 / 共25页
《网络信息安全》第5-6讲.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、第2章 密 码 技 术,2.4 公钥密码 2.5 消息验证和数字签名,2.4 公钥密码,1. 公钥密码简介在对称密钥密码体制中,加密运算与解密运算使用同样的密钥。通常使用的加密算法比较简便高效、密钥简短、破译极其困难。但是,在公共的计算机网络上安全地传送和保管密钥是一个严峻的问题。1976年,美国学者Diffie和Hellman发表了著名论文密码学的新方向,提出了建立“公开密钥密码体制”:若用户A有加密密钥ka(公开),不同于解秘密钥ka(保密),要求ka的公开不影响ka的安全。若B要向A保密送去明文m,可查A的公开密钥ka,若用ka加密得密文c,A收到c后,用只有A自己才掌握的解密密钥ka对

2、x进行解密得到m。,2.4 公钥密码,1. 公钥密码简介同时,Ralph Merkle也独立地提出了这一体制。它的基本思想是采用一对密钥,加密密钥和解密密钥(且从加密密钥推出解密密钥是不可行的),在这一对密钥中,一个可以公开(称为公钥),另一个为私人专用(称为私钥),它是基于陷门单向函数的概念。如果对一个函数f的定义域上的任意一个x都容易计算f(x),但对f的值域上的任意一个y,f1(y)在计算上是不可行的,就称f是单向函数。如果进一步给定某些辅助信息,计算f1(y)又变得容易,则称f是陷门单向函数。这个辅助信息也就是私人密钥。,2.4 公钥密码,2. RSA密码系统1978年,美国麻省理工学

3、院(MIT)的研究小组成员:李维斯特(Rivest)、沙米尔(Shamir)、艾德曼(Adleman)提出了一种基于公钥密码体制的优秀加密算法RSA算法。RSA的取名就是来自于这三位发明者的姓的第一个字母,后来,他们在1982年创办了以RSA命名的公司RSA Data Security Inc. 和RSA实验室,该公司和实验室在公开密钥密码系统的研究和商业应用推广方面具有举足轻重的地位。RSA密码系统的安全是基于大整数分解因子的难度,其公开密钥(现在一般是1024位甚至更长)和私人密钥是一对大素数的函数。一般来说,求一对大素数的乘积相对比较容易,但要对这个乘积进行因式分解则非常困难。因此,可以

4、把一对大素数的乘积作为公开密钥公布,而把素数作为私钥,从而从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。,2.4 公钥密码,2. RSA密码系统建立RSA密码系统过程如下:(1) 选取两个大素数p和q,p和q的位数差不多大小。(2) 计算乘积npq和(n)(p1)(q1)。(3) 随机选取加密密钥e,使e和(p1)(q1)互素,也即gcd(e,(n)1。(4) 计算解密密钥d,以满足ed1 mod(n),即e与d互逆,d与n是互素的。(5) 加密函数为:E(x)me mod n,解密函数为:D(x)cd mod n,其中m是明文,c是密文。(6) e,n为公开密钥,d为私人密

5、钥,p、q不再需要,可以丢弃,但不能泄露。一般n的长度是1024位或者更长。,2.4 公钥密码,2. RSA密码系统RSA加密消息m时,首先将消息分成大小合适的数据分组,然后对分组分别进行加密,每个分组的长度均应该比n的位数要小。举例,选择两个小的素数取p11,q13,p和q的乘积为npq143,算出另一个数(n)(p1)(q1)120;再选取一个与z120互质的数,例如e7,对于这个e值,可以算出另一个值d103满足ed1 mod z;其实7103721除以120确实余1。(n, e)和(n, d)这两组数分别为公开密钥和私人密钥。,2.4 公钥密码,2. RSA密码系统设想A需要发送机密信

6、息(明文,即未加密的报文)m85给B,A已经从公开媒体得到了B的公开密钥(n,e)(143,7),于是A算出加密值cme mod n857 mod 143123并发送给B。B在收到“密文”(即经加密的报文)c123后,利用只有B自己知道的私人密钥(n,d)(143,103)计算123103 mod 143,得到的值就是明文(值)85,实现了解密。在RSA的加/解密过程中都涉及到求一个大整数的幂,然后模n,所以加/解密的速度会比较慢,不论在硬件实现时还是软件实现时,RSA比DES要慢很多。一般公钥密码系统用于以下几个方面:通信保密、数字签名和密钥交换。,2.4 公钥密码,2. RSA密码系统若有

7、明文public key encryptions,试用密钥(n,e)(143,7)加密。先将明文分块为:pu bl ic ke ye nc ry pt io ns将明文数字化令a b z 分别为01 02 26 得1621 0212 0903 1105 2505 1403 1825 1620 0915 1519利用密钥(n,e)(143,7)加密可得密文如下:0126 0108 0111 0091 0035 0129 0021 0031 0073 0067,2.4 公钥密码,3Diffie-Hellman密钥交换Diffie-Hellman算法是第一个公开密钥算法,发明于1976年。Diffi

8、e-Hellman算法能够用于密钥分配,但不能用于加密或解密信息。Diffie-Hellman算法的安全性在于在有限域上计算离散对数非常困难。在此先简单介绍一下离散对数的概念。定义素数p的本原根(Primitive Root)为一种能生成1p1所有数的一个数,即如果a为p的本原根,则a mod p,a2 mod p,ap1 mod p两两互不相同,构成1p1的全体数的一个排列(例如p11,a2)。对于任意数b及素数p的本原根a,可以找到一个惟一的指数i,满足:bai mod p,0ip1称指数i为以a为底模p的b的离散对数。,2.4 公钥密码,3Diffie-Hellman密钥交换如果Alic

9、e和Bob想在不安全的信道上交换密钥,他们可以采用如下步骤:(1) Alice和Bob协商一个大素数p及其本原根a,a和p可以公开。(2) Alice秘密产生一个随机数x,计算Xax mod p,然后把X发送给Bob。(3) Bob秘密产生一个随机数y,计算Yay mod p,然后把Y发送给Alice。(4) Alice计算kYx mod p。(5) Bob计算kXy mod p。,2.4 公钥密码,3Diffie-Hellman密钥交换k和k是恒等的,因为kYx mod p(ay)x mod p(ax)y mod pXy mod pk。线路上的搭线窃听者只能得到a、p、X和Y的值,除非能计算

10、离散对数,恢复出x和y,否则就无法得到k,因此,k为Alice和Bob独立计算的秘密密钥。,2.4 公钥密码,3Diffie-Hellman密钥交换下面用一个例子来说明上述过程。Alice和Bob需进行密钥交换,则:(1) 二者协商后决定采用素数p353及其本原根a3。(2) Alice选择随机数x97,计算X397 mod 35340,并发送给Bob。(3) Bob选择随机数y233,计算Y3233 mod 353248,并发送给Alice。(4) Alice计算kYx mod p24897 mod 353160。(5) Bob计算kXy mod p40233 mod 353160。 k和k

11、即为秘密密钥。,2.5 消息验证和数字签名,1. Hash函数公钥密码体制最重要的一个应用是数字签名,而数字签名常常需要和单向散列函数结合起来使用。散列函数(Hash函数)是把不固定长度输入串(M是变长的消息串)转换成固定长度输出串(散列值h)的一种函数,即hH(M),其中h的长度是m。单向散列函数是在一个方向上工作的散列函数,其安全性主要在于它的单向性,必须具有如下性质:,2.5 消息验证和数字签名,1. Hash函数(1) 对于给定的M,很容易计算其散列值h。(2) 对于给定的h,根据H(M)h得出M在计算上是不可行的。(3) 对于给定的M,要找到另一消息M,并满足H(M)H(M)在计算上

12、是不可行的。(4) 寻找任意的M,M,使得H(M)H(M)在计算上不可行的(抗碰撞条件)。,2.5 消息验证和数字签名,1. Hash函数为了对不定长的输入产生定长的输出,并且最后的结果要与所有的字节相关,许多单向散列函数都采用了分块填充链接的方式,其结构是迭代渐进型的,这种散列函数将输入数据分成n块固定长度(每块长度为k)的分组。单向散列函数建立在压缩函数f的基础上。给定一长度为k的输入,单向函数输出长为m散列值,压缩函数的输入是消息分组和文本前一分组的输出(对第一个分组,其输入为消息分组和初始化向量),输出是到该点的所有分组的散列。即分组Mi的散列值为:,hif(Mi, hi1),2.5

13、消息验证和数字签名,1. Hash函数该散列值和下一轮的消息分组一起,作为压缩函数下一轮的输入。最后一分组的散列就成为整个消息的散列。有结论可以得出,如果压缩函数是无碰撞的,那么上述方法得到的Hash函数也是无碰撞的。因此,Hash函数的核心技术是设计无碰撞压缩函数。同样,密码分析对算法的攻击重点也是对f内部结构的分析,常常需要先找出f的碰撞。,2.5 消息验证和数字签名,1. Hash函数MD表示消息摘要(Message Digest),MD4算法是由Ron Rivest(罗纳德李维斯特)提出的一个单向散列函数,MD5是MD4的改进版,该算法对输入的任意长度消息产生128位散列值,MD5曾经

14、是使用最普遍的安全散列算法,但从密码分析角度来看,MD5被认为已经不再安全了(2004年,MD5算法已经被山东大学的王小云教授破解了)。因此现在比较流行的算法是散列值长度160位SHA-1和RIPEMD-160。,2.5 消息验证和数字签名,2消息验证与密钥相关的单向散列函数通常称为MAC,即消息验证码。MAC具有与前面讨论的单向散列函数相同的特性,但MAC还包括一个秘密密钥,即MACfk(M),散列值是输入值和密钥的函数。其中M是输入串,k为通信双方的密钥,f为单向散列函数。MAC可为拥有共享密钥的双方在通信中验证消息的完整性,也可以被单个用户用来确定他的文件是否已经被改动,或是否被感染了病

15、毒。,2.5 消息验证和数字签名,3数字签名数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性,并保护数据,防止被人进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在通信网络中传输。基本要求如下:(1) 签名是可信的。(2) 签名不可伪造。(3) 签名不可重用,签名是文件的一部分,不能移到别的文件上去。(4) 签名的文件是不可改变的,在文件上签名以后就不能改变。(5) 签名是不可抵赖的。,2.5 消息验证和数字签名,3数字签名目前使用比较多的数字签名有两类:一类是使用对称密码系统和需要

16、仲裁者的签名方法;还有一类是基于公开密钥体制的数字签名,一般目前使用最多的是基于公开密钥体制的数字签名。一般数字签名方案由两部分组成:签名算法和验证算法。在实际应用中,由于公开密钥算法的执行效率比较低,因此为了节约时间,数字签名协议经常和单向散列函数一起使用,发送方并不对整个文件签名,而只是对文件的散列值签名。,2.5 消息验证和数字签名,3数字签名 签名的过程如下: (1) 发送者产生文件的单向散列值。(2) 发送者用其私人密钥对散列加密,以实现对发送文件的签名。(3) 发送者将文件和散列签名发送给接收者。(4) 接收者根据发送者发送的文件产生文件的单向散列值,然后用数字签名算法对散列值运算

17、,同时用发送者的公开密钥对签名的散列解密。如果签名的散列值与其产生的散列值匹配,则签名是有效的。,2.5 消息验证和数字签名,3数字签名前面提到的公开密钥算法RSA也可以用于数字签名。令np1p2,p1和p2是大素数,令消息为M,选e并计算出d使ed1 mod (n),公开n和e,将p1、p2和d保密。 K(n,p,q,e,d)。对消息M的签字为:SSigk(M)H(M)d mod n,签名过程如图2-12所示。,图2-12 RSA算法实现的数字签名过程,2.5 消息验证和数字签名,3数字签名 验证签名过程如图2-13所示,对给定的M和S,可按下式验证: H(M)Se mod n,图2-13

18、验证RSA数字签名过程,2.5 消息验证和数字签名,3数字签名签字标准(DSS,Digital Signature Standard)是1991年8月由美国NIST公布,1994年5月19日正式公布,1994年12月1日正式作为美国联邦信息处理标准。其中,采用了SHA单向散列函数,其安全性基于解离散对数困难性,它是在ElGamal和Schnorr (1991)两个方案基础上设计的,DSS中所采用的算法简记为DSA(Digital Signature Algorithm)。此算法由D. W. Kravitz设计。这类签字标准具有较大的兼容性和适用性,已成为网络安全体系的基本构件之一。,习 题,2.6 已知RSA密码体制的公开密钥为n55,e7,试加密明文消息m10,通过求解p、q和d破译这种密码体制。设截获到密文码c35,求出它对应的明文码。 2.7 在RSA公开密钥密码体制中:(1) 如果p7,q11,列出可选用的d值。(2) 如果p13,q31,d7,求e。(3) 已知p5,q11,d27,求e并加密“abcdefghi”。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报