15.2.3数字签名2数字签名问题提出的实际背景电脑的诞生,信息高速公路的出现,对人类观念的更新,对社会生活都带来了不可估量的影响,尤其电子商务的迅速崛起,国际互联网的应用已渗透到社会的各个领域。但是由于网络安全问题不能保障,给广大用户,尤其是欲进行网上交易的用户带来不少烦恼。在电子商务中如何实现用户无需在纸上签字或等待信函往来,足不出户就能通过网络获得抵押贷款、购买保险或者与房屋建筑商签订契约等,如何实现企业之间通过网上磋商达成有法律效力的协议,以降低成本,提高效率?举个简单的例子,如果我们在新浪商城订购了相应的商品,当送货到我们宿舍之后,我们不承认我们曾经订购该商品,产生纠纷,如何解决?在网络环境下,解决这类问题可以看作是信息安全对于保护在线交易问题的解决,属于信息安全的一个重要组成部分,解决的途径就是——数字签名。3数字签名其实是伴随着数字化编码的消息一起发送并与发送的信息有一定逻辑关联的数据项。数字签名类似于MAC,但不同于MAC,数字签名可以支持不可否认服务。发送方的私钥发送方的公钥4电子签名可以解决下述安全鉴别问题:(1)接收方伪造;(2)发送者或接收者否认;(3)第三方冒充;(4)接收方篡改。5数字签名的定义与特征数字签名的定义–附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这些数据或变换允许数据的接受者用来确认数据单元来源和数据单元的完整性,并保护数据,防止被人伪造。数字签名的特征–签名是不可伪造的:数字签名证明是签名者本人而不是别人签署了文件–签名是可信的:签名使文件的接受者相信签名者慎重的签署了该文件–数字签名不能重复使用:签名是文件的一部分,任何人都不能把它转移到别的文件上–签名后的文件是不能改变的–签名是不可否认的:签名者不能事后声称他没有签署过文件6数字签名与传统签名的比较数字签名可以看作是网络环境下,日常生活中传统手写签名的电子对应物,它的主要功能就是实现用户对电子形式存放消息的认证。同时,与传统手写签名相比,它有如下的特点:–在数字签名中签名同消息是分开的,需要一种方法将签名与消息绑定在一起,而在传统的手写签名中,签名时被签名消息的一部分;–在签名验证的方法上,数字签名利用一种公开的方法对签名进行验证,任何人可以对签名进行验证,而传统手写签名的验证是由经验丰富的消息接受者通过以前的签名进行比较来确定的;–在数字签名中,有效签名的复制同样是有效的签名,而在传统的手写签名中,签名的复制是无效的,因此数字签名方案的设计中要防止签名的非法重复使用。7数字签名在网络安全中的位置(1)网络信息安全可能受到的攻击分为两类:被动攻击和主动攻击,网络窃听属于被动攻击,伪造数据和交易则属于主动攻击;在网络安全技术中,通过加密来防止诸如窃听之类的被动攻击,而防止主动攻击存在着不同的要求,防止这种攻击的保护措施叫做消息验证。消息验证允许通信双方验证接受信息的过程。如果消息、文件、文档或者其他数据集合是真实的,而且来自其声称的来源,则可以说这些数据是可信的。数字签名就是消息验证的一种,属于网络安全中用来防止主动攻击的一种保护措施。8数字签名在网络安全中的位置(2)消息验证通常包括以下几个重要的方面:–验证消息内容没有经过改动;–验证消息源是可信的;–可能包括验证消息的时间性(防止人为延迟或重放);–可能包括验证相对于两方传送的其他消息的顺序性。就象数字签名的要求中所说的,它也包括了以上的验证内容数字签名本身并不要求对信息内容进行加密在现在的网络安全体系下,数字签名通常和数字加密相结合,完成对信息的加密9数字签名的要求数字签名应满足以下要求:(1)接收方B能够确认或证实发送方A的签名,但不能由B或第三方C伪造;(2)A发出签名的消息给B后,A就不能再否认自己所签发的消息;(3)B对已收到的签名消息不能否认,即有收报认证;(4)C可以确认收发双方之间的消息传送,但不能伪造这一过程。10单独数字签名的安全问题单独数字签名的机制有一个潜在的安全问题:如果有人(H)产生一对公钥系统的密钥,对外称是A所有,则他可以假冒A的名义进行欺骗活动。因为单独数字签名的机制中一对密钥没有与拥有者的真实身份有唯一的联系。11数字签名的功能数字签名可以证明:(1)如果他人可以用公钥正确地解开数字签名,则表示数字签名的确是由签名者产生的。(2)如果消息M是用散列函数h得到的消息摘要h(M),和消息的接收方从接收到的消息M/计算出散列值h(M/),这两种信息摘要相同表示文件具有完整性。数字签名机制提供了一种数字鉴别方法。12基于常规加密方法的数字签名方案–常规加密方法就是对称密钥的加密方法–在常规加密方法中,只有发送方和接受方共享密钥,则对其他参与者来讲,只有真正的发送方才能够成功的加密消息–如果消息中包含了错误消息检测和序列号,就能够保证接受方收到的消息没有经过改动,而且序列号也是正确的–如果消息中含有时间戳,接受方就能够保证消息没有经过延迟而超出网络传送的预定时间数字签名方案的结构分析(1)13从双钥密码体制到数字签名技术的过程如图所示14数字签名方案的结构分析(2)基于基于消息验证码的数字签名方案MMAC算法MACMMACMMACMAC算法MAC传送比较•通信双方(假定为A、B)共享一个密钥K,如果A有消息(M)要发送给B,则通过MAC算法来计算消息的验证码•MAC算法=F(K,M),消息和验证码同时发送给B,当B接收后,可以对消息进行同样的计算,用同样的密钥生成MAC,把接收到MAC和计算出的MAC进行比较,如果两者相同则证明了消息是A发送的,并且消息内容没有经过改动•该过程与加密过程很相似,但是唯一的区别在于验证算法不需要是可逆的,而对解密算法来说可逆是必需的。15当使用对整个消息进行加密的方法来进行数字签名的时候,存在这样的问题:–加密软件速度很慢,即使每条消息中要加密的数据很少,计算量很少,还是会有一个稳定的小溪流进出系统–加密硬件的成本不可忽略–加密算法可能是专利产品,如RSA公钥算法–加密算法必须服从出口管制,DES就是如此于是人们在数字签名中引入了单向哈希函数,在接受消息代码的同时,哈希函数还接受大小变化的消息M作为输入,并声称固定大小的摘要H(M)作为输出与MAC算法不同的是哈希函数并不把密钥作为输入,为了验证消息,把消息摘要和消息一同发出,而且,消息摘要是可信的。结合哈希函数的数字签名方案(1)16结合哈希函数的数字签名方案(2)结合哈希函数的常规加密方案摘要MM摘要M摘要传送H摘要EKH摘要D摘要K比较•消息摘要可以用常规加密进行加密,如果只有发送方和接收方共享密钥K,就能够保证验证了17结合哈希函数的数字签名方案(3)结合哈希函数的使用公钥加密的方案摘要MM摘要M摘要传送H摘要EKprivateH摘要D摘要Kpublic比较•发送方使用自己的私钥对摘要进行加密,接受方接收后,用发送方的公钥对摘要进行解密,这就证明消息一定是来自发送方的•因为没有人能够制造出用发送方的公钥解密的密文,而没有发送方的私钥也无法改变消息的内容,这就对消息的内容完整做出了证明18结合哈希函数的数字签名方案(4)结合哈希函数的使用加密数值的方案MSab传送摘要HM摘要M摘要SabH摘要摘要比较•这个方案不需要任何加密,只使用哈希函数进行身份验证•通信双方(假定为A和B)共享保密数值Sab,A向B发送消息的时候,先将保密数值和密钥连接,然后通过哈希函数计算出摘要,然后将消息M和摘要发送给B。•当B接收到消息后,因为他也拥有Sab,可以重新计算摘要,通过比较进行验证•Sab在传送过程中是保密的,因此攻击者无法修改消息,无法生成错误的信息19数字签名方案的其他类型(1)群签名方案–1991年,Chaum和Heyst首次提出群签名方案–允许组中合法用户以用户组的名义进行签名,具有签名者匿名、只有权威才能够辨认签名者等多种特点,有着广泛的实际应用–群签名方案由组、组成员(签名者)、消息接受者(签名验证者)和权威或群中心组成–群签名方案的特点:只有组中成员才能够为消息签名,签名为组签名消息接受者可以验证组签名的有效性,但不能辨别签名者一旦发生争论,从消息的组签名权威(或全体组中成员的联合)可以辨别签名者–一般的群签名方案包括:K-P-W可变群签名方案、L-C群签名方案、T-J群签名方案20数字签名方案的其他类型(2)多重签名–多个用户对同一消息进行签名,这就是多重数字签名问题在办公自动化、电子金融和CA认证等方面有重要的应用21多重数字签名方案–在实际生活中,往往有这种需要,多个用户对同一个消息进行签名,这类签名的电子对应物就是多重数字签名。–根据签名过程的不同,多重数字签名方案可以分为有序多重数字签名和广播多重数字签名–有序多重数字签名由消息发送者规定消息签名的顺序,然后将消息发送到第一个签名者。除了第一个签名者,每一位签名者收到签名消息后,首先验证上一个签名者签名的有效性,如果拒绝有效,继续签名,然后将签名消息发送到下一个签名者;如果无效,拒绝对消息签名,中止整个签名。当消息验证者收到签名消息后,验证签名的有效性,如果有效,多重签名有效,否则,多重签名无效。–广播多重数字签名消息发送者同时将消息发送给每一位签名者进行签名签名者将签名消息发送给签名收集者,由收集者对签名消息进行整理,在发送给签名验证者验证其签名的有效性。如果有效,多重签名有效,否则,多重签名无效。数字签名方案的其他类型(2)22数字签名方案的其他类型(3)代理数字签名方案–在日常生活中,经常会出现委托别人代替自己签名的事情,与此相应的电子对应物就是代理数字签名。–一般来说,代理数字签名方案应该具有如下特性:基本的不可伪造性:除了原始签名者,任何人,包括代理签名人都不可以生成原始签名人的普通数字签名,保证原始签名人的基本安全代理签名的不可伪造性:除了代理签名人,任何人,包括原始签名人都不可以生成有效的代理签名,特别是委托了多个签名人时,任何代理人都不能伪造其他人的代理签名,保证代理签名人的基本安全代理签名的可区分性:任何代理签名都与原始签名人的普通数字签名有明显的区别;不同的代理签名人生成的代理签名之间也有明显的区别。防止了签名人之间的互相抵赖不可抵赖性:任何签名人,无论是原始签名人还是代理签名人都不能在生成一个签名后,对它进行否认身份证实性:原始签名人可以根据一个有效的代理签名确定相应代理签名人的身份。通过监督,使得代理签名人不能再不被发现的情况下滥用他的代理签名权利。密钥依赖权:代理签名密钥依赖于原始签名人的私钥可注销性:原始签名人希望代理签名人只在一定时间内拥有生成代理签名的权利,那么必须能够让代理签名人的代理签名密钥在指定的时间失去作用23代理签名–代理签名的目的就是当某签名人因公务或身体健康等原因不能行使签名权力时,将签名权委派给其他人替自己行使签名权代理签名的基本要求–签名容易验证–源签名者与代理签名者的签名容易区分–签名事实不可否认几种代理签名方案–一次性代理签名方案–代理多重签名–盲代理签名数字签名方案的其他类型(3)24数字签名与公钥体制(1)常规加密方案存在的问题–随着网络保密通信的提出,常规加密暴露出致命弱点,密钥管理上存在严重困难–在常规加密方法中,要求通信双方用的密钥是通过秘密的信道私下商定的–网上若有n个用户,则需要个密钥,如果n=1000,那么就需要249750个密钥,这么多密钥的管理和必需的更换都是非常繁重的工程–而且每个用户都必须记下其他n-1个用户通信所用的密钥,数量如此巨大,就必须记录在本上或者计算机的存贮器上,这本身就是非常不安全的1976年提出了新的加密理论——公钥体制,或者称为非对称的加密密码体制,这种加密体制与数字签名的解释,使信息传输过程中的认证和保密能够非常有效的一次性完成21)n(n2nC25公钥体制与数字签名结合的实现方法–假定通信双方为A、B,其中A打算向B传送消息m;–A先利用单向哈希