计算机网络安全技术第章_第1页
计算机网络安全技术第章_第2页
计算机网络安全技术第章_第3页
计算机网络安全技术第章_第4页
计算机网络安全技术第章_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章

数字签名与认证

5.1数字签名的基本概念

1.数字签名及其特点在信息化社会,签名盖章和识别签名是一个重要的环节,例如,银行业务、电子资金传送、股票、证券交易、合同、协议的签字等,都需要签名。在计算机广泛应用的时代,应用密码学的方法实现数字签名,具有重要的理论意义,更具有重要实际意义。假设发送方sender发送了一个签了名的信息message给收方receiver,那么sender的数字签名必须满足以下条件:1)

receiver能够证实sender对信息message的签名;2)

任何人包括receiver在内,都不能伪造sender对message的签名;3)假设sender否认对信息message的签名,可以通过仲裁解决sender和receiver之间的争议。假定sender向receiver发送一则消息message,采用公开密码系统的签名过程描述如下:1)sender计算:c=Da(message)对message签名。Da是加密变换,所使用的秘密密钥为sender所私有,任何人,包括receiver在内,由于不知道sender的秘密钥,所以不能伪造sender的签名。2)receiver通过检查Ea(c)是否恢复message来验证sender的签名,Ea是Da的逆变换,Ea变换中所使用的密钥是sender的公开钥。3)如果sender和receiver之间发生争议,仲裁者可以用2)中的方法鉴定sender的签名。例:sender表示一个银行电子支付系统的客户,receiver代表sender所在的银行。Receiver收到sender要求取款1000万日元的信息后,必须确定这个信息确实是由sender签名发出的。如果以后sender否认这一笔取款,receiver能够向仲裁者证实,这个取款单确实是由sender签署的。如果采用公开钥密码系统签名,密秘钥仅为sender所拥有,公开钥大家都知道,sender无法否认自己的签名。别人由于不知道秘密钥也无法冒名顶替sender的签名。在上例中,由于银行和客户之间的业务信息往来应秘密进行,所以这个签名系统除要求生成签名和验证外,还要求加密。当然,和纸上签名一样,并非所有的数字签名系统都要求保密性。以上介绍的数字签名方案属于所谓的“常规数字签名方案”这类方案具有如下特点:1)签名者知道他签署的报文的内容。2)任何人只要知道签名者的公开密钥,就可以在任何时候验证签名的真实性,不需要签名者的“同意”信号或来自其他方面的信号。3)具有基于某种单向函数运算的安全性。但在电子货币、电子商业和其他的网络安全通信的实用中,可能要放宽或加强上列特征中的一个或几个,或添加上其他安全性特征,以适应各种不同的需要。例如,在因特网上购买商品或服务,要向供应商或银行付款,顾客发出包含有他的银行账号或别的重要信息的付款报文,由收款者作出(电子)签名才能有效,但账号之类的信息又不宜泄露给签名者,以保证安全。这种情况,就要使用盲签名方案(BlindSignatureScheme)。盲签名方案的工作原理是这样的:用户A有报文要求用户B签署,但不能让B知道关于报文m的任何信息。设(n,e)是B的公开密钥,(n,d)是他的秘密密钥。A用专用通信软件生成一个与n互质的随机数r,将m’=remmodn发送给B,这样,B收到的是被r“遮蔽”的m值,即m’,它不能从m’获取有关m的信息。接着,B发回签名值s’=(m’)dmodn=(rem)dmodn=remdmodn,A对收到的s’计算s’(re)-1modn=mdmodn,就得到了真正的来自于B的对m的签名s=mdmodn可见,运用盲签名方案,A无法代替或冒充B的签名,而B则不知道他自己所签署的报文的真实内容。除了盲签名方案之外,还有其它几种专用数字签名方案:“小组签名方案”(GroupSignatureScheme):一个小组的任一成员可以签署文件,验证者可以确认签名来自该小组,但不知道是小组的哪一个成员签署了文件。“一次性签名方案”(OnetimeSignatureScheme):仅能签署单个报文的签名方案。“不可抵赖签名方案”(UndeniableSignatureScheme):在签名和验证的常规成分之外添上“抵赖协议”(DisavowalProtocol),则仅在得到签名者许可信息后才能进行验证。“带有数字时间标记系统(DigitalTimestampingSystem)的签名方案”:将不可篡改的时间信息纳入数字签名方案。“多重签名”:使任意n个签名人产生的n个签名组成一个单一的签名。2.数字指纹仅用上述的数字签名是不够的,也是不实用的。因为数字签名不像纸上签名那样,签名和被签署的内容紧密联系在一起,因而不易被篡改。在数字签名中,如果sender的签名未与被签署的文件本身(message)相联系,就留下了篡改、冒充或抵赖的可能性。为了把那些千差万别报文(文件)和数字签名不可分割的结合在一起,即签名与其发送的信息紧密结合起来,需要设法从报文中提取一种确定格式的、符号性的摘要,称为“报文摘要”(messagedigest),更形象的一种说法是“数字指纹”(digitalfingerprint),然后对它进行签名并发出。可以说,真正的数字签名是信息发送者用其秘密密钥对从所传送的报文中提出的特征数据(或称数字指纹)进行RSA算法操作,以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时,也确保信息报文在传递过程中未被篡改(即完整性)。当信息接受者受到报文后,就可以用发送者的公开密钥对数字签名进行验证。如果实体A要发送一个需要签署的报文给实体B,通信软件会调用某种报文摘要算法处理报文内容,得出一个数字指纹,然后用自己的秘密密钥将它加密,这才是真正的数字签名,将它同报文一并发送给B。B接到报文和数字签名后,用A的公开密钥将数字签名解密,恢复出数字指纹。接着用A所用的一样的报文摘要算法处理报文内容,将算出的数字指纹和接受到的经解密的数字指纹比较,如果两者完全相同,则A的数字签名被B验证成功,可以相信该报文是真实的,确实是发自于A。否则,报文可能来自别处,或被篡改过,有理由拒绝该报文。用上述方法,别人也不难读取报文并验证数字签名,这在使用中是不妥当的。为使报文本身的内容不泄露给别人,A只要再添加一个操作步骤:用B的公开密钥现将待发的报文加密,当然,B在验证数字签名无误后,要用其自己的秘密密钥解密,才能得到原始机密信息。总之,“报文摘要”是一种防止信息被篡改的方法,在数字签名中有重要作用的摘要算法,即生成报文“数字指纹”的方法,近年来倍受关注,构成了现代密码学的一个重要侧面。它是通过一类特殊的散列函数(Hash)生成的,这些函数的输入可以是任意大小的信息,而输出是一个固定长度的摘要。这些摘要有这样一个性质,如果改变了信息中的任何内容,甚至只改变了一位,输出摘要也将会发生不可预测的改变,即输入信息的每一位都影响输出的摘要。对这些Hash函数的特殊要求是:1)

接受的输入报文数据没有长度限制。2)

对任何输入报文数据生成固定长度的摘要(数字指纹)输出。3)

从报文能方便的算出摘要。4)

难以对指定的摘要生成一个报文,而由该报文可以算出该指定的摘要,即不可逆性。5)

两个不同的报文难以生成相同的摘要,即唯一性。显然,上面前三点是实用性的要求,保证对长短不一的报文易于生成同样大小的“数字指纹”;后两点则是安全性的要求,是建立在某种单向函数的基础之上的。这样摘要算法从给定的文本块中产生的数字签名,可以有效地防止从一个签名中获取文本信息或改变文本信息内容的行为。显然,客户机和服务器必须使用相同的算法。数字签名不同于手写签名:数字签名随文本的变化而变化,手写签名反映某个人个人特征,是不变的,数字签名与文本信息是不可分割的,而手写签名是附加在文本之后的,与文本信息是分离的。5.2数字签名算法DSA

DSA(digitalsignaturealgorithm)算法是美国国家标准与技术学会(NationalInstituteofStandardsandTechnology,NIST)于1994年公布的一个数字签名标准。DSA是一个公开钥数字签名算法,用于检验数据的完整性和一致性,第三方可以使用它来确认数字签名的合法性。1.DSA算法描述DSA是Schnorr和ELGamal数字签名算法的变体,DSA算法使用的参数含义如下:p:L比特长的素数,其中L范围是从512比特到1024比特,并且要求是64的整数倍(在原始标准中p的尺寸固定的512比特,后来p的尺寸由NIST作了改变)。q:160比特的数,并且要求是p-1的因子。g:gh(p-1)/qmodp,其中h是小于p-1的任意数,并且h(p-1)/qmodp1x:小于q的数y:ygxmodp前三个个参数数p、、q、、g是是公开开的,,可以以由一一组网网络用用户共共享。。秘密密密钥钥为x,公公开密密钥为为y。。DSA算法法还利利用了了单项项哈希希函数数H(m),该该标准准还规规定了了安全全哈希希算法法。对信息息m进进行签签名过过程可可以描描述如如下::1)发送方方sender生成成一个个随机机数k,并并且kq2)发送方方sender生成成签名名:r=(gkmodp)modqs=(k-1(H(m)+xr))modq参数r和s是sender的的签名名,sender把把这些些信息息发送送给接接收方方receiver。3)receiver通通过计计算验验证这这些签签名::w=s-1modqu1=(H(m)w)modqu2=(rw)modqv=(modp)modq如果v=r,那那么签签名被被证实实。1.使使用预预先计计算来来加快快速度度DSA的实实现经经常是是通过过预先先计算算来加加快速速度的的。注注意到到r的的值不不取决决于信信息((由随随机数数k确确定))。可可以生生成一一串k值,,然后后再计计算对对应的的r值值,也也可以以计算算k对对应应的k-1。于是是,当当对消消息签签名时时,可可以用用给定定的r和k-1进行计计算。。表5.1给出出了DSA样本本软件件速度度。表5.1对对于不不同的的模长长度带带有160比特特指数数的DSA速度度模长度度签签名验验证证512比特特0.20秒秒0.35秒768比特特0.43秒秒0.80秒1024比比特0.57秒秒1.27秒如果p取512比特,,DSA算法对对长期期安全全强度度是不不够的的,如如果取取1024比特,,DSA算法对对长期期安全全强度度是足足够的的。3.DSA素数数生成成密码学学家Lentra和和Haber指指出DSA的一一些模模是容容易攻攻破的的。如如果一一些网网络用用户使使用这这样的的模,,那么么他的的签名名就会会被伪伪造。。但是是这些些模很很容易易被检检测,,而且且数目目很少少,以以至于于选择择这样样的模模的概概率很很小。。NIST学学会推推荐生生成两两个素素数p、q的一一个特特别的的方法法,其其中q能整整除p-1,p长长度为为L比比特,,L范范围是是512比比特到到1024比特特之间间,并并且是是64的整整数倍倍。素素数q长度度是160比特特。令令L-1=160n+b,,其中中L是是p的的长度度,n和b是两两个数数,b160。DSA素数数生成成步骤骤如下下:1)选择至至少有有160比比特的的任意意序列列,称称之为为S。。令g是S的比比特长长度;;2)计算U=SHA(S)SHA((S+1)mod2g,其中中,SHA是安安全哈哈希算算法;;3)设置U的最最高有有效位位和最最低有有效位位为1,形形成q;4)检查q是否否是素素数;;5)如果q不是是素数数,则则转会会步骤骤1;;6)令C=0且且N=2;;7)对应k=0,1,2,……,n,令令Vk=SHA((S+N+k)mod2g);8)令W是是一个个整数数W=V0+2160V1+……+2160(n-1)Vn-1+2160nVn(mod2b)并且令令X=W+2L+1;9)令令p=X––((Xmod2q)––1),,要求求pmod2q=1;10))如如果p2L-1则转到到步骤骤13;11))检查查p是是否是是素数数;12))如果果p是是素数数,则则转到到步骤骤15;13))令C=C+1且且N=N+n+1;;14))如果果C=4096,则则转到到步骤骤1,,否则则转到到步骤骤7;;15))存储储S和和C的的值,,用于于生成成p和和q。。上式中中,变变量S称作““种子子”,,C称作““计数数器””,N称作““偏移移量””。4.用用DSA的的RSA加加密假设DSA算法法由一一个单单独的的函数数调用用实现现:DSAsign(p,q,g,k,x,h,r,s)给函数数提供供参数数p,,q,,g,,k,,x,,h,,函数数返回回签名名r,,s。。使用RSA加密密是比比较容容易的的,设设模为为n,,消息息为m,公公开密密钥为为e,,调用用DSAsign(n,n,m,e,0,0,r,s)那么返返回的的r值值就是是密文文,令令c=r。。相应的的,用用RSA实实现解解密也也是比比较容容易的的,如如果c为密密文,,d为为秘密密密钥钥,调调用DSAsign(n,n,c,d,0,0,r,s)那么返返回的的r值就是是明文文。5.DSA变体体为了突突出不不同方方面的的实现现特性性,下下面介介绍几几种变变体。。第一种种变体体使签签名容容易实实现,,它是是通过过使用用户不不去计计算k-1来实现的的,DSA变体体的所有有参数与与DSA中参数数相同。。为了对对信息m签名,,发送方方生成两两个随机机数k和和d,且且kq,dq。签名名:r(gkmodp)modqs((H(m)+xr)d)modqt(kd)modqreceiver通过过计算验验证这些些签名::w(t/s)modqu1(H(m)w)modqu2(rw)modq如果,r(modp)modq那么签签名被证证实。第三种DSA变变体允许许成批地地验证。。接收方方成批地地验证签签名。如如果都是是有效的的,则结结束;如如果某一一个无效效,接收收方还得得去找到到这个签签名。遗遗憾的是是,这种种方法不不安全。。签名者者和验证证者很容容易生成成一组伪伪造的签签名来满满足验证证的标准准。第四种变变体是DSA素素数生成成的变体体,即1)选择至少少有160比特特的任意意序列,,称之为为S。令令g是S的比特特长度;;2)计算U=SHA(S)SHA(S+1)mod2g),其中中SHA是安全全哈希算算法;3)设置U的的最高有有效位及及最低有有效位均均为1,,形成q;4)检查q是是否是素素数;5)令p是q、S、、C和SHA(S)的并并置链接接,C被被设置成成32比比特,并并且全为为0;6)p=p––(pmodq)+1;7)p=p+q;;8)如果p中中的C是是0X7fffffff,那那么转到到步骤1;9)检查p是是否是素素数;10)如如果是合合数,则则转到步步骤7。。关于这个个变体,,可以不不必存储储用于生生成p和和q的S和C的的值,他他们与p嵌在一一起。对对于应用用,不需需要大量量的存储储器,这这一点很很可贵。。但这种种模式是是否降低低了DSA的安安全性,,目前还还不十分分清楚。。4.使用用DSA生成、、验证签签名的实实例这里介绍绍使用Java语言实实现使用用DSA生成、、验证签签名的一一个例子子。1)Java简介介谈论Internet和Intranet或网络设设备而不不谈论Java是不可能能的。似似乎一夜夜之间Java成为建立立网络化化应用的的标准平平台,Java是一种通通用的、、并发的的、基于于类的、、面向对对象的程程序设计计语言,,它被设设计得足足够简单单以便许许多程序序员很容容易使用用它。Java是一种生生产性语语言而不不是研究究性语言言,Java使用垃圾圾收集器器技术自自动地进进行内存存管理,,避免不不安全因因素。Java程序设计计语言和和历史上上任何其其他程序序设计语语言相比比被采用用得最快快,并且且Java技术被大大部分公公司认作作一个关关键技术术来支持持平台独独立存取取广泛的的协作资资源无疑,Java在软件件开发者者中越来来越受欢欢迎。它它对Internet和Intranet应用的的开发和和使用起起到了革革新的作作用。它它提供了了一种新新的、令令人兴奋奋的面向向对象的的网络设设计模型型。这种种模型易易于理解解,使用用这种模模型很容容易地进进行程序序设计。。Java取得得了巨大大的成功功的另一一个方原原因是::用Java写写一次程程序,测测试一次次,然后后可以到到处运行行(writeaprogramonce,testitonce,andthenrunitanywhere)而而不需要要考虑所所用的硬硬件和操操作系统统。这可可以实现现在网络络上软件件、信息息的共享享和再利利用。这这个事实实也蕴含含一个潜潜在的优优势:软软件开发发时间和和成本的的巨大节节省。Java.math.BigInteger提供供了任意意精度的的大数的的模代数数运算,,如最大大公约数数计算gcd(BigInteger),,素数生生成测试试BigInteger(intbitLength,intcertainty,,Randomrnd),,余数计计算,指指数运算算modPow(BigInteger),乘法法逆元素素运算modInverse(BigInteger)。使用用这些方方法进行行程序设设计是很很方便的的,这就就是使用用Java的优优点之一一。如果果使用其其他的程程序设计计语言,,这些都都要自己己编程。。Java安全API提提供加密密、信息息融合、、密钥管管理、认认证、存存取控制制和数字字签名功功能,允允许开发发者进行行底层和和高层的的安全应应用。2)使用用DSA生成、、验证签签名的例例子使用Java安安全API(应应用程序序接口))为数据据生成一一个签名名,并验验证签名名是真实实的。步骤1准备初始始化程序序结构数字签名名的方法法是包括括在java.security的的软件包包中的,,所以要要输入来来自于这这个软件件包的一一切。还还要输入入java.io软件件包,因因为它包包括了输输入文件件数据所所需要的的方法。。importjava.io*;importjava.security.*步骤2生成公开开密钥和和秘密密密钥为能生成成签名,,必须做做的第一一件事就就是生成成密钥对对:秘密密密钥和和对应的的公开密密钥。密密钥由随随机数生生成器生生成。秘秘密钥用用于生成成数字签签名,对对应的公公开钥用用于验证证签名。。密钥对对是通过过使用KeyPairGenerator类来生生成的。。在这个例例子中,,为“DSA””算法生生成一个个公开的的和秘密密的密钥钥对。生生成的密密钥具有有1024bit长度度。生成一个个密钥对对步骤如如下:(1)创创建一个个密钥对对生成器器为DSA签名算算法生成成密钥的的第一步步是获得得一个密密钥对对对象。KeyPairGeneratorKeyGen=KeyPairGenerator.getInstance(“DSA”)(2)初初始化密密钥对生生成器所有的密密钥对生生成器都都共享““强度””(strength)和““随机数数源”((sourceofrandomness))的概念念。KeyPairGenerator类类中的方方法initialize有有两个类类型变量量。对DSA密密钥对生生成器强强度Srength设设置为1024,随机机数源必必须是java中的SecureRandom类的一一个实例例。简单单的说,,可使用用SecureRandom的空空的构造造函数,,这将自自动的生生成一个个随机数数生成器器所需要要的一个个“种子子”(seed)值.KeyGen.initialize(1024,newSecureRandom());(3)生生成密钥钥对,并并在KeyPair类类的实例例中存储储密钥KeyPairPair=KeyGen.GenerateKeyPair()步骤3对对数数据进行行签名在生成秘秘密钥和和公开钥钥之后,,准备对对数据进进行签名名。在这这个实例例中,将将对文件件中包括括的数据据进行签签名,可可以从命命令行得得到文件件名。使使用签名名Signature类的例例子生成成数字签签名。其签名步步骤描述述如下::(1)得到一一个签名对象象(object)通过使用下面面的语句可以以得到一个使使用DSA算算法生成和验验证签名的签签名对象。Signaturedsa=Signature.getInstance(“SHA/DSA”);一般地,说明明签名算法名名称时,也应应说明这个签签名算法所使使用的信息融融合算法名称称。DSA算算法被定义使使用SHA-1信息融合合算法。SHA经常被参参考成SHA-1算法。。(2)对签名名对象进行初初始化在签名对象能能用于签名((或验证)之之前,必须将将它进行初始始化。签名的的初始化方法法需要秘密密密钥,可以从从前一步生成成的密钥对中中抽取和使用用秘密钥。PrivateKeyPriv=Priv.getPrivate();Dsa.initSign(priv);(3)给签名名对象提供要要签名的数据据使用来自于文文件的数据,,对文件中的的数据一次读读一个byte。文件名名是在第一个个命令行中说说明的。通过过调用Updata方法法把数据提供供给签名对象象。FileInputStreamfis=newFileInputStream(arg[0]);Byteb;While(fis,available()!=0){b=(byte)fis,read();dsa,updata(b);}fis.close();(4)生成签签名一旦把所有的的数据提供给给签名对象,,就可以对数数据生成数字字签名:byte[]sig=dsa.sign();步骤4验验证签名如果已经具有有了经过数字字签名的数据据,通过使用用Java中中的Secuity就可可以验证这个个签名的真实实性。验证签签名需要以下下三项内容::数据、签名名和对应签名名所使用的秘秘密钥的公开开钥。使用签名Signature类的一一个实例:Signature=Signature.GetInstance(“DSA”);(1)为了验验证,首先对对签名对象进进行初始化签名对象在签签名时进行过过初始化。现现在,为了验验证,必须将将它进行初始始化。用于验验证的初始化化方法需要一一个公开钥,,可以从步骤骤2产生的密密钥对中抽取取和使用公开开钥。PublicKeyPub=pair.getPublic();dsa.initVerify(pub);(2)给签名名对象提供要要验证的数据据必须给签名对对象提供要验验证的数据。。这个数据包包括在文件中中,文件名应应是在第一个个命令行变量量中说明的。。像步骤3一一样,使用FileInputStream变变量fis及及byte变变量b。FileInputStreamfis=newFileInputStream(args[0]);While(fis,available()!=0){b=(byte)fis.read();dsa,updata(b);}fis.close();(3)验证签签名一旦给出了签签了名的对象象,就可以正正是这个签名名的正确性。。booleanverifies=dsa.verify(sig);System.out.println(“Signatureverifies:”+verifies);7.报文摘摘要算法MD5简介在数字签名中中,报文摘要要或数字指纹纹是保证信息息不被篡改的的重要技术。。从上世纪80年代到90年代,Rivest开发了好几几种专有的报报文摘要算法法,包括MD、MD2、、MD5等。。以1991年发表的MD5为例,,是克服了MD4算法的的安全缺陷的的产物,“数数字指纹”的的大小是128比特。1994年发发表的一个研研究报告称,,可以花费1000万美美元去制造一一套专门的机机器,针对MD5搜索两两个不同的报报文具有相同同的摘要,即即“碰撞”现现象,平均用用24天才能能找到一次碰碰撞。目前,,MD5被认认为仍是一个个安全和最常常用的报文摘摘要算法,它它可由任意长长度的数据计计算出一个128比特的的MD5值。。MD5是一种种在加密软件件中被用来单单向变换用户户口令和对信信息签名的单单向散列算法法。一种单向向散列的强度度体现在他能能把任意的输输入随机化到到什么程度并并且能产生唯唯一的输出。。对单向散列列的直接攻击击可以分为普普通直接攻击击和“生日””攻击。对MD5的普普通直接攻击击。所谓直接接攻击又叫野野蛮攻击。攻攻击者为了找找到一份和原原始明文m散散列结果相同同的明文m’,就是H(m)=H(m’)。普通直接接攻击,顾名名思义就是穷穷举可能的明明文去产生一一个和H(m)相同的的散列结果。。对MD5来来说散列结果果为128比比特,就是说说如果攻击者者有一台每秒秒尝试1000000000条明文文的机器需要要计算约1022年。对MD5的生生日攻击。生生日攻击实际际上只是为了了找到两条能能产生同样散散列结果的明明文。记得那那个有名的概概率生日问题题吗,在N个个人中至少少有两个人的的生日相同的的概率是多少少?所谓生日日攻击实际上上只是用概率率来指导散列列冲突的发现现,对于MD5来说如果果尝试264条明文,那么么它们之间至至少有一对发发生冲突的概概率是50%。仅此而已已,对当今的的科技能力来来说,它是不不可能的。5.3DSA算法的的改进1.改进算法法DSA算法的的安全性依赖赖于整数有限限域上的离散散对数问题的的困难性,安安全强度和速速度均低于RSA算法,,因此不少人人对DSA算算法提出了改改进,下面介介绍其中一种种新的改进方方案(NDSA)。NDSA签名名方案中的参参数选取同DSA,即::p:L比特长长的素数,其其中L范围是是从512比比特到1024比特,并并且要求是64的整数倍倍(在原始标标准中p的尺尺寸固定的512比特,,后来p的尺尺寸由NIST作了改变变)。q:160比比特的数,并并且要求是p-1的因子子。g:gh(p-1)/qmodp,,其中h是是小于p-1的任意数,,并且h(p-1)/qmodp1x:小于q的的数y:ygxmodp前三个参数p、q、g是是公开的,可可以由一组网网络用户共享享。秘密密钥钥为x,公开开密钥为y。。签名时,,先产生一个个随机数k,,(k<q)签名方程:r=(gkmodp)modqs=(k-rH(m)x)modq签名:((r,,s)或(m;(r,s))签名验证:为为了验证(r,s)的正正确性,验证证者先计算u1=smodqu2=rH(m)modq,,然后验证方程程:r=是是否成成立。成立则则正确,否则则不正确。2.改进算法法(NDSA)的性能NDSA具有有以下性能::1)无逆签名名由一上签名和和签名验证过过程可见,使使用NDSA无论是进行行签名还是进进行签名验证证都无需求逆逆,是一个真真正的无逆签签名算法。该该算法既提高高了签名速度度,又提高了了验证速度,,这一特点是是DSA和以以有些其他算算法所不及的的。2)多重签名名由于DSA的的特殊结果,,利用它无法法建立多重签签名方案,而而在DSA算算法基础上能能过实现多重重签名方案,,它可使任意意n个签名人人产生的n个个签名组合成成一个单一的的签名。叙述述如下:签名产生设共有n个签签名人Ui(i=1,2,…,n)。每个个签名人Ui计算并将ci对所有签名人人公开,因此此每个签名人人Ui可计算并将ci对所有签名人人公开,因此此每个签名人人Ui可计算和si=(ki–rH(m)xi)modq即Ui关于m的签名名为(ci,,si)多重重签签名名设某某人人为为n个个签签名名人人和和签签名名收收方方之之间间的的中中间间人人,,称称其其为为组组合合者者C,,每每个个签签名名人人Ui(i=1,2,……n)都都将将其其关关于于m的的签签名名送送给给组组合合者者C,,当当C收收到到((ci,si)(i=1,2,……n)后后,,先先计计算算::和在验验证证每每个个((ci,si)是是否否满满足足(i=1,2,……n)若对对于于所所有有的的i上上式式成成立立,,则则((r,,s))便便是是Ui(i=1,2,……n)关关于于消消息息m的的多多重重签签名名,,C将将((r,,s))发发送送给给接接收收方方。。签名名验验证证签名名接接收收方方受受到到((r,,s))后后,,先先验验证证0<r<q和和0<s<q是是否否成成立立,,若若成成立立,,则则计计算算::(其其中中yi为Ui的公公钥钥))u1=smodqu2=rH(m)modq然后后验验证证方方程程:若方方程程成成立立,,则则签签名名验验证证通通过过。。4))盲盲签签名名签名名产产生生设签签名名人人为为A,,签签名名验验证证者者和和消消息息拥拥有有者者为为B。。A任任选选随随机机密密钥钥k,,计计算算::然后后将将发发送送给给B。。B选选随随机机数数a,,bZq。计计算算::B将将盲盲消消息息送送签签名名人人A。。A利利用用签签名名方方程程求求得得部部分分盲盲签签名名后后送送B。。B再再计计算算完成成签签名名::为为A关关于于盲盲消消息息的的签签名名,,为B给给出出的的为为消消息息m的的签签名名。。签名名验验证证签名名接接收收方方得得到到签签名名、、后后,,只只有有它它们们都都满满足足验验证证方方程程才被被通通过过验验证证。。5))分分批批验验证证对签签名名进进行行分分批批验验证证就就是是签签名名验验证证人人将将某某个个签签名名人人签签名名方方程程产产生生的的关关于于n个个不不同同消消息息的的n个个签签名名进进行行一一次次性性验验证证,,,,而而不不是是逐逐个个验验证证,,从从而而提提高高其其验验证证速速度度。。在在NDSA上上可可建建立立两两种种分分批批验验证证方方案案,,它它们们可可以以防防止止除除签签名名者者以以外外的的任任何何人人对对签签名名的的伪伪造造,,也也就就是是说说,,在在假假定定签签名名人人可可信信的的情情况况下下,,NDSA分分批批验验证证方方案案是是安安全全的的。。这这两两个个分分批批签签名名验验证证方方案案介介绍绍如如下下::方案案1:签名名方方程程:得到到签签名名为为::或或((i=1,,2,,……,,))分批批验验证证方方程程:如果果方方程程成成立立,,则则n个个签签名名验验证证通通过过。。方案案2:签名名方方程程:((i=1,,2,,……,,n))(i=1,,2,,……,,n))得到到n个个签签名名::(i,si)((i=1,,2,,……,,n))分批批验验证证方方程程:或如果果验验证证方方程程成成立立,,则则签签名名验验证证通通过过。。6))NDSA安安全全性性分分析析伪造造者者要要想想从从公公钥钥y=gxmodp求求得得x或或先先任任选选r再再从从r=(gsyrH(m)modp)modq求求部部分分签签名名s均均等等于于求求离离散散对对数数或或比比求求离离散散对对数数还还难难。。如如果果将将y看看作作是是n个个签签名名人人之之公公钥钥在在模模p下下的的乘乘积积,,则则说说明明对对于于多多重重签签名名的的伪伪造造也也是是不不可可能能的的。。5.4基基于于离散对对数的若若干新型型代理签签名方案案代理签名名是一种种新型签签名方案案,由于于这种签签名机制制在许多多领域都都有重要要的应用用,因此此引起了了人们的的极大兴兴趣。代代理签名名的目的的是当某某签名人人(这里里称为原原始签名名人)因因公务或或身体健健康等原原因不能能行使签签名权力力时,将将签名权权委派给给其他人人替自己己行使签签名权。。目前,,一些代代理签名名方案存存在以下下问题::(1)代理理签名方方案在验验证方程程中仅含含代理签签名者的的公钥,,从而实实际签名名权和代代理签名名权没有有实现有有效地分分离;(2)授授权方程程的建立立都是采采用交互互式传递递数据的的方法,,而且不不包含代代理签名名者的身身份码。。因此,,授权方方程的建建立既烦烦琐,又又使签名名收方不不易验证证代理签签名人的的真实性性。(3)对代代理签名名而言,,如何实实现一个个人同时时受多人人之托,,进行代代理多重重签名。。针对以以上三点点下面介介绍一个个新型代代理签名名方案和和一个代代理多重重签名方方案1.代理签名名方案的的基本要要求在一个代代理签名名方案中中,如果果假设AA委托BB进行代代理签名名,则此此签名方方案应满满足以下下三个最最基本的的条件::·签名收方方能够象象验证AA的签名名那样验验证B的的签名·A的签名名和B的的签名应应当完全全不同,,并且容容易区分分·A和B对对签名事事实不可可否认2.新新型代理理签名方方案安全参数数:P为大大素数,,g∈GGF(p)为为本原元元,f是是单向函函数,原原始签名名人A的的公钥为为,,代理理签名人人B的公公钥为,xB∈(1,p-1),且且gcd(xB,p-1)=1。授权方程程:当当A打打算将签签名权委委托给BB时,AA选取随随机数k∈(1,p-1),,并利用用B的身身份码IDB计算r=gkmodpp和和s′=rrxA+IDBkmodq,,然后将将(IDB,r,ss′)送送B。BB收到(IDB,r,ss′)后后,先验验证,,以确确认受委委托数据据源的可可靠性。。确认数数据可靠靠性之后后B再做做如下计计算:,,则则(IDB,r,ss)满足足。。上上式成立立的原因因是:。。在这这里为为授授权方程程,它建建立了AA和B两两者公钥钥之间的的内在联联系,而而这种联联系只有有在A同同意转让让自己的的权力时时才可建建立。其其中B的的签名密密钥s只只有B自自己知道道,其他他人包括括A也无无法知道道。代理签名名:B利用用签名密密钥s(严格地地说是利利用代理理签名密密钥)的的签名过过程是::设m为待待签名消消息,ff为单向向函数。。B计算及其中参数数t∈(1,pp-1)为随机机数,签签名数据据为cA,B=(mm,r,u,vv)。签名验收收:收方收收到cA,B=(mm,r,u,vv)后,,利用原原始签名名人A和和代理签签名人BB的公钥钥计算::若u′=u成,,则收方方接受BB关于信信息m的的代理签签名。容易证明明:如果果B是合合法代理理人,则则上述uu′=uu必定成成立。因为尽管签名名收方在在验证签签名时同同时使用用了两种种公钥,,可以明明确原始始签名和和代理签签名的关关系,但但当收方方仍不放放心B是是否是真真正的代代理人时时,可再再采用如如下交互互式方法法确认BB是否知知道授权权方程中中的的s:B(r,,yB,IDB)收收方选v∈(1,pp-1),且gcd(v,pp-1)=1z=ws签名收方方可以确确定代理理签名人人的合法法身份及及签名的的有效性性。性能分析析:以前的的代理签签名方案案在验证证方程中中仅含代代理签名名者的公公钥,使使得签名名收方不不易理解解所收到到的签名名究竟是是某人自自己的真真实签名名,还是是受人之之托的代代理签名名。本方方案克服服了这一一缺点,,因为签签名协议议使得签签名收方方在验证证时必须须同时使使用原签签名人和和代理签签名人的的公钥,,即实际际签名权权和代理理签名权权实现了了有效地地分离。。验证一个个代理签签名人是是否具有有签名权权,主要要是依靠靠原始签签名人和和代理签签名人之之间所建建立的授授权方程程,而以以前的授授权方程程的建立立都是采采用交互互式传递递数据的的方法,,而且不不包含代代理者的的身份码码。本方方案对此此进行了了改进,,授权方方程包含含代理签签名人的的身份码码,而且且在建立立授权方方程时,,原签名名人只需需将有关关数据直直接传给给自己所所选定的的代理人人即可,,这与人人们日常常委托他他人办事事的习惯惯十分相相符。在确认认签名名有效效性方方面,,本方方案使使签名名收方方可根根据实实际情情况实实施一一次或或两次次验证证,实实现了了双重重安全全保护护机制制。原始签签名人人A在在给BB授权权时,,可将将关于于B的的身份份码IDB的签名(IDB,r,s′′)公开地地送给B.如果除了了B之外还还有G通过过某种渠道道也获得了了(IDB,r,s′′),当GG想冒充BB当代理签签名人时,,G可能会会计算,,这时时得到的授授权方程是是,,而不是是。。G若想想将授权方方程中的IDB改成IDG以得到合法法的授权方方程时,则则会碰到求求离散对数数的难题。。因此上述述方案可抗抗击假冒代代理人事件件的发生。。3.代理多多重签名方方案代理多重签签名就是多多个原始签签名人将自自己的签名名权同时委委托给B实实施代理多多重签名。。其实现方方案简述如如下:有关安全参参数的选取取与上相同同,这里不不再赘述。。设Ai(i=1,2,…,n)是若若干原始签签名人,每每个人的密密钥、公钥钥和秘密参参数为(xi,yi,ki)(i=1,2,…,n)。授权和签名名过程为::·每个Ai计算ri=gkmodp,并将ri在所有Ai中公开,从从而每个AAi可计算,和(i=1,2,…,n).·Ai将(IDB,ri,)送BB(i=1,2,…,n)。·B将采用变变成成si得(IDB,ri,si),它满足足方程(i=1,2,…,n)。·令,,(yG被看成n个个原始签名名人的群公公钥),则则代理签名名的授权方方程为,,其其中为B的代理理多重签名名密钥。既然s已经经获得,其其余的签名名和验证过过程与上述述方案相同同。5.5信信息认证证1.信息息的完整性性目前对于动动态传输的的信息,许许多协议确确保信息的的完整性的的方法大多多是收错重重传、丢弃弃后续包的的办法,但但黑客的攻攻击可以改改变信息包包的内容,,所以应采采用有效的的措施来进进行完整性性控制。涉涉及到数据据完整性认认证的主要要技术有::报文认证:与数据连连路层的CRC控制制类似,将将报文名字字段(或域域)使用一一定的操作作组成一个个约束值,,称为报文文的完整性性检测向量量ICV(IntegratedCheckVector)。然后将将它和数据据封装在一一起进行加加密,传输输过程中由由于侵入者者不能对报报文解密,,所以也就就不能同时时修改数据据并计算新新的ICV,这样接接收方受到到数据后解解密并计算算ICV,,若与明文文中的ICV不同,,则认为此此报文无效效。校验和:一个最简单单易行的完完整性控制制方法是使使用校验和和,计算出出该文件的的校验和值值并与上次次计算出的的值比较。。若相等,,说明文件件没有改变变;若不相相等,则说说明文件可可能被未察察觉的行为为改变了。。校验和方方式可以查查错,但不不能改错。。加密校验和和:将文件件分成小块块,对每一一块计算CRC校验验值,然后后再将这些些CRC值值加起来作作为校验和和。只要运运用恰当的的算法,这这种完整性性控制机制制几乎无法法攻破。但但这种机制制运算量大大,并且昂昂贵,只适适用于那些些完整性保保护极高的的情况。消息完整性性编码MIC(MessageIntegrityCode):使使用简单单单向散列函函数计算消消息的摘要要,连同消消息发送给给接收方,,接收方重重新计算摘摘要,并进进行比较验验证信息在在传输过程程中的完整整性。这种种散列函数数的特点是是任何两个个不同的输输入不可能能产生两个个相同的输输出。因此此,一个被被修改的文文件不可能能有相同的的散列值。。单向散列列函数能够够在不同的的系统中高高效实现。。防抵赖技术术:它包括括对源和目目的地双方方的证明,,常用方法法是数字签签名,数字字签名采用用一定的数数据交换协协议,使得得通信双方方能够满足足两个条件件:接收方方能过鉴别别发送方所所宣称的身身份,发送送方不能否否认他发送送过这一数数据的事实实。另外,,实现防抵抵赖的途径径还有:采采用可信第第三方的权权标、使用用时戳、采采用一个在在线的第三三方、数字字签名与时时戳相结合合等。2.报报文认证信息认证的的目的是防防止信息被被篡改、伪伪造、或信信息接收方方事后否认认。特别对对于某些开开放环境中中的信息系系统来说,,确保其认认证十分重重要。认证证技术是现现代各种计计算机通信信网络、办办公自动化化、电子资资金转帐系系统、自动动零售服务务网络等系系统设计中中的重要组组成部分。。今后,在在IC卡应应用系统中中必将广使使用。防止止信信息息被被篡篡改改,,保保证证信信息息的的完完整整性性,,使使得得有有意意或或无无意意的的篡篡改改了了信信息息后后接接受受者者可可以以发发现现,,其其中中最最简简单单的的为为纯纯认认证证系系统统。。它它主主要要是是针针对对来来自自进进行行信信息息验验证证双双方方以以外外因因素素的的有有意意或或无无意意的的破破坏坏、、干干扰扰等等,,而而且且必必须须建建立立在在双双方方互互相相信信赖赖的的基基础础上上。。采采用用认认证证系系统统的的关关键键在在于于防防止止认认证证码码的的破破译译,,必必须须有有良良好好的的认认证证算算法法和和密密钥钥。。它它将将信信息息通通过过密密钥钥和和某某一一特特定定算算法法进进行行加加密密后后压压缩缩成成一一个个““报报文文摘摘要要””,,附附在在信信息息之之后后,,接接受受方方收收到到信信息息和和““报报文文摘摘要要””后后,,用用相相同同的的密密钥钥和和算算法法对对信信息息进进行行验验证证,,如如果果信信息息被被篡篡改改,,必必然然与与所所附附““报报文文摘摘要要””不不符符,,可可以以及及时时发发现现。。例例如如可可用用DSA算算法法做做信信息息验验证证,,如如果果信信息息过过长长,,可可用用Hash算算法法先先进进行行压压缩缩,,在在进进行行验验证证运运算算。。3..身身份份认认证证身份份认认证证是是网网络络中中的的主主体体进进行行验验证证的的过过程程,,用用户户必必须须提提供供他他是是谁谁的的证证明明,,他他是是某某个个雇雇员员,,某某个个组组织织的的代代理理,,某某个个软软件件过过程程,,如如股股票票交交易易系系统统或或Web订订货货系系统统的的软软件件过过程程。。认认证证的的标标准准方方法法就就是是弄弄清清楚楚他他是是谁谁,,他他具具有有什什么么特特征征,,他他知知道道什什么么可可用用于于识识别别他他的的东东西西。。比比如如说说,,系系统统中中存存储储了了他他的的指指纹纹,,他他接接入入网网络络时时,,就就必必须须连连接接到到网网络络的的电电子子指指纹纹机机上上提提供供他他的的指指纹纹,,这这就就防防止止他他以以假假的的指指纹纹或或其其它它电电子子信信息息欺欺骗骗系系统统,,只只有有指指纹纹相相符符才才允允许许他他访访问问系系统统。。更更普普遍遍的的是是通通过过视视网网膜膜血血管管分分布布图图来来识识别别,,原原理理与与指指纹纹识识别别相相同同,,声声波波纹纹识识别别也也是是商商业业系系统统采采用用的的一一种种识识别别方方式式。。通常有三种方方法验证主体体身份:一是是只有该主体体了解的秘密密,如口令、、密钥;二是是主体携带的的物品,如智智能卡和令牌牌卡;三是只只有该主体具具有的独一无无二的特征和和能力,如指指纹、声音、、视网膜或签签字等。网络通过用户户拥有的东西西来识别的方方法,一般是是智能卡或其其它特殊形式式的标志,这这类标志可以以从连接到计计算机上的读读出器读出来来。至于说到到“他知道什什么”,最普普遍的就是口口令,口令具具有共享秘密密的属性。例例如要是服务务器操作系统统识别要入网网的用户,那那么用户必须须把他的用户户名和口令送送服务器。服服务器就将它它与数据库里里的用户名和和口令进行比比较,如果相相符,就通过过了认证,可可以上网访问问。这个口令令就由服务器器和用户共享享。更保密的的认证可以十十几种方法组组合而成。例例如用ATM卡和PIN卡。用于身身份认证的主主要方法有::主体特征认证证:利用个人特特征进行认证证的方式极有有很高的安全全性。目前已已有的设备包包括:视网膜膜扫描仪、声声音验证设备备、手型识别别器。这些识识别系统能够够检测如指印印,签名,声声音,零售图图案这样的物物理特征。但但大多数这样样的系统极具具试验性,价价格昂贵而且且不是百分之之百的可靠。。任何一个送送数据到远程程系统去核实实的系统有被被搭线窃听的的危险,非法法入侵者只需需记录下送去去系统的校验验信息,以后后再重现这些些信息,就能能窃密。当然然这也是标记记识别系统的的一个问题。。口令机机制:口口令是是相互互约定定的代代码,,假设设只有有用户户和系系统知知道。。口令令有时时由用用户选选择,,有时时由系系统分分配。。通常常情况况下,,用户户先输输入某某种标标志信信息,,比如如用户户名和和ID号,,然后后系统统询问问用户户口令令,若若口令令与文文件中中的相相匹配配,用用户即即可进进入访访问。。口令令有多多种,,如一一次性性口令令,系系统生生成一一次性性口令令清单单,第第一次次时必必须使使用X,第第二次次时必必须使使用Y,等等等;;还有有基于于时间间的口口令,,即访访问使使用的的正确确口令令随时时间变变化,,变化化基于于时间间和一一个秘秘密的的用户户钥匙匙。这这样的的口令令每分分钟都都在变变化,,使其其更加加难以以猜测测。智能卡卡:访访问不不但需需要口口令,,也需需要使使用物物理智智能卡卡。在在允许许其进进入系系统之之前检检查是是否允允许其其物理理接触触系统统。智智能卡卡大小小如信信用卡卡,一一般有有微处处理器器、存存储器器及输输入、、输出出设施施构成成。微微处理理器可可计算算该卡卡的一一个唯唯一数数(ID))和其其它数数据的的加密密形式式。ID保保证卡卡的真真实性性,持持卡人人就可可以访访问系系统。。为防防止智智能卡卡遗失失或被被窃,,许多多系统统需要要卡和和身份份识别别码((PIN))同时时使用用。若若仅有有卡而而不知知PIN码码,则则不能能进入入系统统。智智能卡卡比传传统的的口令令方法法进行行认证证更好好,但但其携携带不不方便便,且且开户户费用用较高高。拨号回回呼(CallBackModem)):它它是维维护系系统有有效用用户表表及其其相应应电话话号码码的设设备。。当用用户拨拨号进进入系系统时时,系系统得得到用用户的的登录录账户户号后后,挂挂起,,再根根据电电话号号码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论