两种数字签名技术0902班贺信学号:140924006351.数字签名的基本概念1.1数字签名的定义所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、DES/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。1.2数字签名的基本要求身份鉴别允许我们确认一个人的身份;数据完整性认证则帮助我们识别消息的真伪、是否完整;抗否认则防止人们否认自己曾经做过的行为。数字签名技术用来保证信息的完整性。“数字签名”是通过一个单向函数对要传送的报文进行处理后得到的,用以认证报文来源并核实报文是否发生变化的一个字母数字串。数字签名可以解决否认、伪造、篡改及冒充等问题。类似于手书签名,数字签名也应满足一下基本要求:1)收方能够确认或证实发方的签名,但不能伪造签名。2)发方向收方发出签名的消息后,就不能再否认他所签发的消息,以保证他不能抵赖之前的交易行为。3)收方对已收到的签名信息不能否认,即有收报认证。4)第三者可以确认收发双方之间的信息传递,但不能伪造这一过程。1.3数字签名的原理数字签名是通过密码技术对电子文档的电子形式的签名,并非是书面签名的数字图像化。它类似于手写签名或印章,也可以说它就是电子印章。我们对一些重要的文件进行签名,以确定它的有效性。但伪造传统的签名并不困难,这就使得数字签名与传统签名之间的重要差别更加突出:如果没有产生签名的私钥,要伪造由安全密码数字签名方案所产生的签名,计算上是不可行的。人们实际上也可以否认曾对一个议论中的文件签过名。但是否认一个数字签名却困难得多,这样做本质上证明在签名生成以前私钥的安全性就受到危害。这是由于数字签名的生成需要使用私钥,而它对应的公钥则用以验证签名。因而数字签名的一个重要性质就是非否认性,目前已经有一些方案,如数字证书,把一个实体(个人,组织或系统)的身份同一个私钥和公钥对绑定在一起。这使得一个人很难否认数字签名。1.4数字签名的作用网络的安全,主要是网络信息安全,需要采取相应的安全技术措施,提供适合的安全服务。数字签名机制作为保障网络信息安全的手段之一,可以解决伪造,抵赖,冒充和篡改问题。数字签名的目的之一,就是在网络环境中代替传统的手工签字与印章,其可抵御的网络攻击主要有:1)防冒充(伪造)。其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可以构造出正确的签名结果数据。显然要求各位保存好自己的私有密钥,好像保存自己家门的钥匙一样。2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚;在网络环境中,接受方必须能够鉴别发送方所宣称的身份。3)防篡改(防破坏信息的完整性)。传统的手工签字,假如要签署一本200页的合同,是仅仅在合同末尾签名呢还是对每一页都有签名,不然,对方会不会偷换其中几页这些都是问题所在。而数字签名,如前所述:签名与原有文件已经形成了一个混合的整体数据,不可能篡改,从而保证了数据的完整性。4)防重放。如在日常生活中,A向B借了钱,同时写了一张借条给B;当A还钱的时候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次挟借条要求A再次还钱。在数字签名中,如果采用了对签名报文添加流水号,时戳等技术,可以防止重放攻击。5)防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。以上是签名者不能抵赖,那如果接受者确已收到对方的签名报文,却抵赖没有收到呢?要预防接受者的抵赖,在数字签名体制中,要求接受者返回一个自己签名的表示收到的报文,给对方或者是第三方,或者引入第三方机制。如此操作,双方均不可抵赖。6)机密性(保密性)。有了机密性保证,截收攻击也就失效了。手工签字的文件(如合同文本)是不具备保密性的,文件一旦丢失,文件信息就极可能泄露。数字签名,可以加密要签名的消息。当然,签名的报文如果不要求机密性,也可以不用加密。2.数字签名技术数字签名的目的就是要保证文件的真实性,防止签名者抵赖。对文件进行了签名说明签名者认可了这份文件。然而有时一个文件上的签名并不是签名者真正想要签的,而是别人伪造的签名。攻击者会利用一些攻击模型来达到伪造签名的目的。这些攻击模型包括唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击等。一个签名方案不可能在任何情况下都是安全的,这是因为对一个给定的消息,攻击者用验证算法可以采用穷举法来尝试所有的签名,直到找到一个有效的签名为止。因此,只要有足够的时间,攻击者总是可以对任意消息伪造Alice的签名。所以,设计签名方案时就应考虑到这些攻击,针对这些攻击设计计算上安全的签名方案。2.1RSA签名方案设n=pq,其中p和q是大素数。定义K={(n,p,q,a,b)|n=pq},p和q为素数,ab≡1(mod(n))}。值n和b为公钥,值p,q和a为私钥。对K={(n,p,q,a,b)},定义:sigk(x)=xa(modn)verk(x,y)=trie=x≡yb(modn)。Alice使用RSA解密函数Dk为x消息签名,因为Dk=sigk是保密的,所以只有Alice能够产生这一签名,而验证算法使用RSA加密函数Ek。因Ek是公开的,所以任何知道Ek的人都能验证该签名。2.2ElGamal签名方案ElGamal算法既可用于数字签名又可用于加密,其安全性依赖于计算有限域上离散对数的难度。设P是一个素数,两个随即数g和x,要求g,xp,计算y=)(modpgx,则其公钥为y,g和p,私钥是x.g和p可由一组用户共享。假定被加密信息为M,首先选择一个随机数k,k与p-1互质,计算a=)(modpgk,b=)(modpMyk.(a,b)为密文,是明文的两倍长。解密计算M=b/)(modpax。3.数字签名技术的发展随着Internet和电子商务的迅猛发展,数字签名已成为Internet和电子商务中必不可少的安全处理技术,为了适应特定领域对数字签名的特殊需求,新的数字签名方案不断提出,总的来说,数字签名技术的发展方向主要有以下几个方面:3.1高效、安全的数字签名算法这一方向主要通过研究新的数字签名算法,使其拥有更高的运行效率,更好的安全强度,较短的传输长度和简单、易于实现的算法过程。当前,这方面的研究集中在利用椭圆曲线和离散对数等数学理论的公钥加密算法及其签名算法方面。以椭圆曲线上的有理点构成的阿贝尔群为基础建立的椭圆曲线密码体制是一种基于代数曲线的公钥密码体制。它具有“短密钥,高安全性”的特点,这使得与其它密码体制相比,椭圆曲线密码体制在同等安全强度下可以使用长度小得多的密钥及分组长度。与其它密码编码体制相比,椭圆曲线密码体制不是建立在超大整数分解及素域乘法群离散对数问题等数学难题之上,而是建立在更难的椭圆曲线离散对数问题之上,因而椭圆曲线密码体制及相关的数字签名算法引起了人们广泛的兴趣,成为研究的热点。3.2收方不可否认数字签名在普通的数字签名方案中,发送者是不能否认自己曾经发送过的消息,而对接收方却没有任何约束,这样,就可能存在2种情况:1)接收方已经阅读了消息,事后却否认自己曾接收过该消息;如接收方接收,并阅读到了一条对自己不利的消息,然后,将它销毁,并否认自己曾经接收过该消息。2)接收方故意拖延阅读时间,以作出对自己更有利的决定。为解决这一问题,一般需进行多次密钥交换和通信过程,并引入可信第三方作为仲裁人,记录双方通信的时间和阅读情况,以确定责任归属。3.3盲签名一般情况下,人们总是先知道文件的内容,然后再进行签名。而在某种情况下,用户需要让签名者对明文消息文件进行数字签名,而又不希望签名者知晓明文消息文件的具体内容,这就需要盲数字签名,简称盲签名(BlindSignature)。盲签名是一种特殊的数字签名方法,相对于一般的数字签名而言还应当具有下列3个特性:1)签名者不能看到明文消息;2)认证者不能看到明文消息,只能通过签名来确认文件的合法性;3)无论是签名者,还是认证者,都不能将盲签名与盲消息对应起来;在上面提到的“收方不可否认数字签名”方案中,也需要由可信第三方对双方的通信进行担保,但又不希望其获知通信的具体内容,这时,就需要用到盲签名。总之,盲签名具有消息内容的保密性以及盲签名与原消息的概率无关等特征,较好的保护了消息通信的隐私,具有较为广泛的应用,目前,它主要用于基于Internet的匿名金融交易,如匿名电子现金支付系统、匿名电子拍卖系统等系统中。3.4门限签名在某些情况下,需要由一组用户来进行数字签名,这种情况下的数字签名被称为“门限签名”或“群签名”(ThresholdSignature)。门限签名的生成必须由多个成员合作才能完成,但验证只需要知道群体的公开密钥即可进行。