欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机网络安全技术第5章.ppt

    • 资源ID:91513671       资源大小:239.50KB        全文页数:71页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络安全技术第5章.ppt

    第五章第五章数字签名与认证数字签名与认证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数字签名算法DSADSA(digital signature algorithm)算法是美国国家标准与技术学会(NationalInstituteofStandardsandTechnology,NIST)于1994年公布的一个数字签名标准。DSA是一个公开钥数字签名算法,用于检验数据的完整性和一致性,第三方可以使用它来确认数字签名的合法性。1DSA算法描述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算法对长期安全强度是足够的。3DSA素数生成密码学家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值就是明文。5DSA变体为了突出不同方面的实现特性,下面介绍几种变体。第一种变体使签名容易实现,它是通过使用户不去计算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(arg0);Byteb;While(fis,available()!=0)b=(byte)fis,read();dsa,updata(b);fis.close();(4)生成签名)生成签名一旦把所有的数据提供给签名对象,就可以对数据生成数字签名:bytesig=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(args0);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,(kq)签名方程: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=(kirH(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)后,先验证0rq和0sq是否成立,若成立,则计算:(其中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下的乘积,则说明对于多重签名的伪造也是不可能的。54基于离散对数的若干新型代理签名方案代理签名是一种新型签名方案,由于这种签名机制在许多领域都有重要的应用,因此引起了人们的极大兴趣。代理签名的目的是当某签名人(这里称为原始签名人)因公务或身体健康等原因不能行使签名权力时,将签名权委派给其他人替自己行使签名权。目前,一些代理签名方案存在以下问题::(1)代理签名方案在验证方程中仅含代理签名者的公钥,从而实际签名权和代理签名权没有实现有效地分离;(2)授权方程的建立都是采用交互式传递数据的方法,而且不包含代理签名者的身份码。因此,授权方程的建立既烦琐,又使签名收方不易验证代理签名人的真实性。(3)对代理签名而言,如何实现一个人同时受多人之托,进行代理多重签名。针对以上三点下面介绍一个新型代理签名方案和一个代理多重签名方案1代代理理签签名名方方案案的的基基本本要要求求在一个代理签名方案中,如果假设委托进行代理签名,则此签名方案应满足以下三个最基本的条件:签名收方能够象验证的签名那样验证的签名的签名和的签名应当完全不同,并且容易区分和对签名事实不可否认2新型代理签名方案新型代理签名方案安安全全参参数数:为大素数,()为本原元,是单向函数,原始签名人的公钥为,代理签名人的公钥为,xB(1,-1),且gcd(xB,-1)=1。授权方程授权方程:当打算将签名权委托给时,选取随机数(1,-1),并利用的身份码IDB计算=gkmod和=xA+IDBmod,然后将(IDB,)送。收到(IDB,)后,先验证,以确认受委托 数 据 源 的 可 靠 性。确 认 数 据 可 靠 性 之 后 再 做 如 下 计 算:,则(IDB,)满足。上式成立的原因是:。在这里为授权方程,它建立了和两者公钥之间的内在联系,而这种联系只有在同意转让自己的权力时才可建立。其中的签名密钥只有自己知道,其他人包括也无法知道。代代理理签签名名:利用签名密钥(严格地说是利用代理签名密钥)的签名过程是:设为待签名消息,为单向函数。计算及其中参数(1,-1)为随机数,签名数据为cA,B=(,)。签签名名验验收收:收方收到cA,B=(,)后,利用原始签名人和代理签名人的公钥计算:若=成,则收方接受关于信息的代理签名。容易证明:如果是合法代理人,则上述=必定成立。因为尽管签名收方在验证签名时同时使用了两种公钥,可以明确原始签名和代理签名的关系,但当收方仍不放心是否是真正的代理人时,可再采用如下交互式方法确认是否知道授权方程中的:(,yB,IDB)收方选(1,-1),且gcd(,-1)=1=ws签名收方可以确定代理签名人的合法身份及签名的有效性。性性能能分分析析:以前的代理签名方案在验证方程中仅含代理签名者的公钥,使得签名收方不易理解所收到的签名究竟是某人自己的真实签名,还是受人之托的代理签名。本方案克服了这一缺点,因为签名协议使得签名收方在验证时必须同时使用原签名人和代理签名人的公钥,即实际签名权和代理签名权实现了有效地分离。验证一个代理签名人是否具有签名权,主要是依靠原始签名人和代理签名人之间所建立的授权方程,而以前的授权方程的建立都是采用交互式传递数据的方法,而且不包含代理者的身份码。本方案对此进行了改进,授权方程包含代理签名人的身份码,而且在建立授权方程时,原签名人只需将有关数据直接传给自己所选定的代理人即可,这与人们日常委托他人办事的习惯十分相符。在确认签名有效性方面,本方案使签名收方可根据实际情况实施一次或两次验证,实现了双重安全保护机制。原始签名人在给授权时,可将关于的身份码IDB的签名(IDB,)公开地送给.如果除了之外还有通过某种渠道也获得了(IDB,),当想冒充当代理签名人时,可能会计算,这时得到的授权方程是,而不是。若想将授权方程中的IDB改成IDG以得到合法的授权方程时,则会碰到求离散对数的难题。因此上述方案可抗击假冒代理人事件的发生。3代代理理多多重重签签名名方方案案代理多重签名就是多个原始签名人将自己的签名权同时委托给实施代理多重签名。其实现方案简述如下:有关安全参数的选取与上相同,这里不再赘述。设i(=1,2,)是若干原始签名人,每个人的密钥、公钥和秘密参数为(xi,yi,ki)(=1,2,)。授权和签名过程为:每个i计算ri=gkmodp,并将ri在所有i中公开,从而每个i可计算,和(=1,2,).Ai将(IDB,ri,)送(=1,2,)。将采用变成si得(IDB,ri,si),它满足方程(=1,2,)。令,(yG被看成个原始签名人的群公钥),则代理签名的授权方程为,其中为的代理多重签名密钥。既然已经获得,其余的签名和验证过程与上述方案相同。55信息认证1信息的完整性目前对于动态传输的信息,许多协议确保信息的完整性的方法大多是收错重传、丢弃后续包的办法,但黑客的攻击可以改变信息包的内容,所以应采用有效的措施来进行完整性控制。涉及到数据完整性认证的主要技术有:报报文文认认证证:与数据连路层的CRC控制类似,将报文名字段(或域)使用一定的操作组成一个约束值,称为报文的完整性检测向量ICV(IntegratedCheckVector)。然后将它和数据封装在一起进行加密,传输过程中由于侵入者不能对报文解密,所以也就不能同时修改数据并计算新的ICV,这样接收方受到数据后解密并计算ICV,若与明文中的ICV不同,则认为此报文无效。校校验验和和:一个最简单易行的完整性控制方法是使用校验和,计算出该文件的校验和值并与上次计算出的值比较。若相等,说明文件没有改变;若不相等,则说明文件可能被未察觉的行为改变了。校验和方式可以查错,但不能改错。加加密密校校验验和和:将文件分成小块,对每一块计算CRC校验值,然后再将这些CRC值加起来作为校验和。只要运用恰当的算法,这种完整性控制机制几乎无法攻破。但这种机制运算量大,并且昂贵,只适用于那些完整性保护极高的情况。消消息息完完整整性性编编码码MIC(MessageIntegrityCode):使用简单单向散列函数计算消息的摘要,连同消息发送给接收方,接收方重新计算摘要,并进行比较验证信息在传输过程中的完整性。这种散列函数的特点是任何两个不同的输入不可能产生两个相同的输出。因此,一个被修改的文件不可能有相同的散列值。单向散列函数能够在不同的系统中高效实现。防防抵抵赖赖技技术术:它包括对源和目的地双方的证明,常用方法是数字签名,数字签名采用一定的数据交换协议,使得通信双方能够满足两个条件:接收方能过鉴别发送方所宣称的身份,发送方不能否认他发送过这一数据的事实。另外,实现防抵赖的途径还有:采用可信第三方的权标、使用时戳、采用一个在线的第三方、数字签名与时戳相结合等。2报文认证信息认证的目的是防止信息被篡改、伪造、或信息接收方事后否认。特别对于某些开放环境中的信息系统来说,确保其认证十分重要。认证技术是现代各种计算机通信网络、办公自动化、电子资金转帐系统、自动零售服务网络等系统设计中的重要组成部分。今后,在IC卡应用系统中必将广使用。防止信息被篡改,保证信息的完整性,使得有意或无意的篡改了信息后接受者可以发现,其中最简单的为纯认证系统。它主要是针对来自进行信息验证双方以外因素的有意或无意的破坏、干扰等,而且必须建立在双方互相信赖的基础上。采用认证系统的关键在于防止认证码的破译,必须有良好的认证算法和密钥。它将信息通过密钥和某一特定算法进行加密后压缩成一个“报文摘要”,附在信息之后,接受方收到信息和“报文摘要”后,用相同的密钥和算法对信息进行验证,如果信息被篡改,必然与所附“报文摘要”不符,可以及时发现。例如可用DSA算法做信息验证,如果信息过长,可用Hash算法先进行压缩,在进行验证运算。3身份认证身份认证是网络中的主体进行验证的过程,用户必须提供他是谁的证明,他是某个雇员,某个组织的代理,某个软件过程,如股票交易系统或Web订货系统的软件过程。认证的标准方法就是弄清楚他是谁,他具有什么特征,他知道什么可用于识别他的东西。比如说,系统中存储了他的指纹,他接入网络时,就必须连接到网络的电子指纹机上提供他的指纹,这就防止他以假的指纹或其它电子信息欺骗系统,只有指纹相符才允许他访问系统。更普遍的是通过视网膜血管分布图来识别,原理与指纹识别相同,声波纹识别也是商业系统采用的一种识别方式。通常有三种方法验证主体身份:一是只有该主体了解的秘密,如口令、密钥;二是主体携带的物品,如智能卡和令牌卡;三是只有该主体具有的独一无二的特征和能力,如指纹、声音、视网膜或签字等。网络通过用户拥有的东西来识别的方法,一般是智能卡或其它特殊形式的标志,这类标志可以从连接到计算机上的读出器读出来。至于说到“他知道什么”,最普遍的就是口令,口令具有共享秘密的属性。例如要是服务器操作系统识别要入网的用户,那么用户必须把他的用户名和口令送服务器。服务器就将它与数据库里的用户名和口令进行比较,如果相符,就通过了认证,可以上网访问。这个口令就由服务器和用户共享。更保密的认证可以十几种方法组合而成。例如用ATM卡和PIN卡。用于身份认证的主要方法有:主主体体特特征征认认证证:利用个人特征进行认证的方式极有很高的安全性。目前已有的设备包括:视网膜扫描仪、声音验证设备、手型识别器。这些识别系统能够检测如指印,签名

    注意事项

    本文(计算机网络安全技术第5章.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开