数字签名与身份认证.ppt
第四章 数字签名与身份认证,数字签名技术身份认证技术,4.1 数字签名技术,4.1.1 数字签名基本原理数字签名的概念和特点 数据摘要 散列函数对消息处理产生的散列值,也称其为消息的散列值,摘要信息在数字签名中应用过程可以概述为:首先使用某种散列算法,对要发送的数据进行处理,生成数据摘要信息;然后采用公钥密码算法,用私钥加密数据摘要信息 一个签名体制一般包括两个部分 一是发送方的签名部分,对消息M签名,可以记作SSig(K,M),签字算法使用的密钥是秘密的,即是签字者的私钥。二是接收方的认证部分,对签名S的验证可以记作Ver(M,S,K)真,假,认证算法使用的密钥是发送方(即签名者)的公钥。,4.1 数字签名技术,1.数字签名的特点(1)信息是由签名者发送的;(2)信息自签发后到收到为止未曾做过任何修改;(3)如果A否认对信息的签名,可以通过仲裁解决A和B之间的争议(4)数字签名又不同于手写签名:数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而用手写签字是附加在文本之后的,与文本信息是分离的。2.数字签名的形式化定义“数字签名”系指在数据电文中,以电子形式所含、所附或在逻辑上与数据电文有联系的数据,和与数据电文有关的任何方法,它可用于数据电文有关的签字持有人和表明此人认可数据电文所含信息。,4.1 数字签名技术,一个签名方案由签署算法与验证算法两部分构成。可用五元关系组(P,A,K,S,y)表示,其中,P是由一切可能消息(messages)所构成的有限集合;A是一切可能的签名的有限集合;K为有限密钥空间,是一些可能密钥的有限集合;任意kK,有签署算法SigkS,Sigk:PA,对任意xP,有s=Sigk(x),那么sS为消息x的签名,将(x,s)发送到签名验证者。对于密钥集合K,有对应的验证算法Verky,满足:Verk:PA真,假 签名者收到(x,s)后,计算Verk(x,y),若y=Sigk(x),则Verk(x,y)=真;若ySigk(x),则Verk(x,y)=假。其中:任意是kK,函数Sigk和Verk都为多项式时间函数。Verk为公开的函数,而Sigk为秘密函数。如果坏人要伪造B对x的签名,在计算上是不可能的。也即,给定x,仅有B能计算出签名y,使得Verk(x,y)=真。一个签名方案不能是五条件安全的,有足够的时间,第三方总能伪造B的签名。,4.1 数字签名技术,3.数字签名的功能(1)身份认证。收方通过发方的电子签名能够确认发方的确切身份,但无法伪造。(2)保密。双方的通信内容高度保密,第三方无从知晓。(3)完整性。通信的内容无法被篡改。(4)不可抵赖。发方一旦将电子签字的信息发出,就不能再否认。数字签名与数据加密完全独立。数据可以只签名或只加密,也可既签名又加密,当然,也可以既不签名也不加密。4.电子签名的法律地位,4.1 数字签名技术,数字签名与手写签名的区别 1.数字签名与手书签名的区别在于,手书签名是模拟的,且因人而异 2.数字签名是0和1的数字串,因消息而异 3.数字签名与消息认证的区别在于,消息认证使收方能验证消息发送者及所发消息内容是否被篡改过 4.当收者和发者之间有利害冲突时,单纯用消息认证技术就无法解决他们之间的纠纷,此时须借助满足前述要求的数字签名技术。5.任何一种产生签名的算法或函数都应当提供这两种信息,而且从公开的信息很难推测出用于产生签名的机密信息 6.任何一种数字签名的实现都有赖于精心设计的通信协议,4.1 数字签名技术,数字签名方案的分类 1.基于数学难题的分类(1)基于离散对数问题的签名方案(2)基于素因子分解问题的签名方案(3)上述两种的结合签名方案 2.基于签名用户的分类(1)单个用户签名的数字签名方案(2)多个用户的数字签名方案。3.基于数字签名所具有特性的分类(1)不具有自动恢复特性的数字签名方案(2)具有消息自动恢复特性的数字签名方案 4.基于数字签名所涉及的通信角色分类(1)直接数字签名(仅涉及通信的源和目的两方)(2)需仲裁的数字签名(除通信双方外,还有仲裁方),4.1 数字签名技术,数字签名使用模式与使用原理 1.数字签名使用模式(1)智慧卡式(2)密码式(3)生物测定式 2.数字签名使用原理 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密 这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。通常一个用户拥有两个密钥对,另一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。这种方式提供了更高的安全性。,4.1 数字签名技术,利用散列函数进行数字签名和验证的文件传输过程:(1)发送方首先用哈希函数从原文得到数字摘要,然后采用公开密钥体系用发送方的私有密钥对数字摘要进行签名,并把签名后的数字摘要附加在要发送的原文后面。(2)发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方。(3)发送方用接收方的公开密钥对秘密密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方。(4)接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文。(5)接收方用秘密密钥对文件进行解密,得到经过加密的数字摘要。(6)接收方用发送方的公开密钥对数字签名进行解密,得到数字摘要的明文。(7)接收方用得到的明文和哈希函数重新计算数字摘要,并与解密后的数字摘要进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。,4.1 数字签名技术,上述流程:,图41 数字签名过程,4.1 数字签名技术,4.1.2 常规数字签名体制RSA数字签名体制 1.数字签名框图,图42 RSA数字签名框图,4.1 数字签名技术,2.签名过程(1)计算消息的散列值H(M)。(2)用私钥(d,n)加密散列值:s(H(M)d mod n。答名结果就是s。(3)发送消息和签名(M,s)。当然,消息M很短的时候,可以直接对M用私钥加密,可以表达为:sSig(M)Md mod n,签名时使用私钥(d,n)。3.认证过程接收方收到(M,s)之后(1)取得发送方的公钥(e,n)(2)解密签名s:h=se mod n。(3)计算消息的散列值H(M)。(4)比较,如果hH(M),表示签名有效;否则,签名无效。如果消息M很短的时候,可以直接对M用公钥解密以验证签名的有效性,可以表达为:Ver(M,s)真Mse mod n,4.1 数字签名技术,DSS数字签名体制 1.DSS介绍,图43 DSS数字签名体制,4.1 数字签名技术,2.数字签名算法(DSA)(1)DSA算法参数说明 DSA算法中应用了下述参数:P:L bit长的素数。L是64的倍数,范围是5121024;Q:p-1的160bit的素因子;G:g=h(p-1)/q mod p,h满足11;X:1xq,x为私钥;Y:y=gx mod p,(p,q,g,y)为公钥;H(x):单向Hash函数。在DSS中选用安全散列算法(Secure Hash Algorithm,SHA)3。P,q,g:可由一组用户共享,但在实际应用中,使用公开模数可能会带来一定的威胁。,4.1 数字签名技术,(2)签名及验证协议 p产生随机数k,kq。p计算r(gk mod p)mod q 和s(k-1(H(m)+xr)mod q。签名结果是(m,r,s)。验证时,计算w=s-1 mod qu1=(H(m)w)mod qu2=(rw)mod qv=(gu1yu2)mod p)mod q 若v=r,则认为签名有效。,4.1 数字签名技术,DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,也能确认它们是否是随机产生的。而RSA算法确做不到。图44描述了DSS的签名和验证函数。,图44 DSS签名和验证,4.1 数字签名技术,椭圆曲线数字签名算法(ECDSA)ECDSA的签名算法 签名的时候,自然有待签署的消息m;全局参数D(q,FR,a,b,G,n,h),还有签名者的公钥私钥对(Q,d)。(1)选择一个随机数k,k 1,n1;(2)计算kG(x1,y1);(3)计算r=xl mod n;如果r=0,则回到步骤(1);(4)计算k-1 mod n;(5)计算e=SHA1(m);(6)计算sk-1(e+dr)mod n,如果s=0,则回到步骤(1);(7)对消息的签名为(r,s);最后签名者就可以把消息m和签名(r,s)发送给接收者。,4.1 数字签名技术,2.ECDSA的认证算法 签名的时候,自然有待签署的消息m;全局参数D(q,FR,a,b,G,n,h),还有签名者的公钥私钥对(Q,d)。当接收者收到消息m和签名(r,s)之后,验证对消息签名的有效性,需要取得这些参数:全局参数D(q,FR,a,b,G,n,h),发送者的公钥Q。(1)检查r、s,要求r、s1,n-1;(2)计算e=SHA1(m);(3)计算ws-1 mod n;(4)计算u1ew mod n;u2=rw mod n;(5)计算XulG十u2Q;(6)如果XO,表示签名无效;否则,X(x1,y1),计算vx1 mod n;(7)如果vr,表示签名有效;否则表示签名无效:,4.1 数字签名技术,4.1.3 特殊数字签名体制不可否认数字签名失败终止数字签名 对每个可能的公开密钥,对应着很多的私有密钥,它们都可以正常工作。而签名者仅仅持有并知道众多私有密钥中的一个;所以强大的攻击者恢复出来的私有密钥,刚好是签名者持有的私有密钥的情况出现概率是非常小的。而不同的私有密钥产生的签名是不相同的,以此可以鉴别出伪造者的签名。盲签名,图45 盲签名原理,4.1 数字签名技术,完全盲签名 签名者在文件上的签名是有效的,签名是其签署文件的证据。如果把文件给签名者看,他可确信他签署过这份文件。但是,签名者不能把签署文件的行为与签署了的文件相关联。即使他记下了他所做的每一个盲签名,他也不能确定他在什么时候签署了该文件。批量签名 批量签名(Batch Signature),是指能够用一次签名动作,完成对若干个不同的消息的签名;并且以后可以对每一条消息独立的进行认证。群签名 1.群签名特点(1)只有团体内的成员才能够代表团体签名;(2)接收到签名的人可以验证该签名是属于某团体的;(3)但是,接收者不知道签名的是该团体中的哪一个成员;(4)在出现争议时,可以由团体的成员或第三方识别出签字者。,4.1 数字签名技术,2.一个简单的群签名协议 该协议使用了一个可信赖的第三方,假设该团体有n个成员,下面简单的描述该协议的步骤:(1)第三方产生nm对密钥(公钥私钥对);然后给每一个成员m对互异的密钥;(2)第三方把nm个公钥用随机的顺序加以公开,作为群体的公钥表;并且第三方记住每个成员对应哪m对密钥:(3)当群体中某个成员签名时,从自己的m个私钥中随机选择一个,进行签名。(4)而验证签名时,用该团体的公钥表进行签名认证即可。(5)当发生争议时,第三方知道密钥对与成员之间的对应关系,所以可以确定出签名者是团体中哪一个成员。当然,上述协议的较大缺陷在于需要个第三方。,4.1 数字签名技术,代理签名 代理签名(Proxy Signature),就是指定某人来代替自己签署,也称为委托签名。代理签名一般应该具有如下特点:(1)可区分性(Distinguish ability),代理签名与某人的通常签名是可以区分的。(2)不可伪造性(Unforge ability),只有原来的签名者和所托付的代理人可以建立合法的代理签名。(3)代理签名的差异(Deviation),代理签名者不可能制造一个合法代理签名,而不被检查出来其是一个代理签名。(4)可证实性(Verifiability),从代理签字中,验证者能够相信原始的签名者认同了这份签名的消息。(5)可识别性(Identifiability),原始签名者可以从代理签字结果中识别出代理签名者的身份。(6)不可抵赖性(Undeniability),代理签名者不能事后抵赖他所建立的已被认可的代理签名。,4.1 数字签名技术,代理签名从授权的程度上来划分,可以分为三类:1.完全授权(full delegation)全部的秘密参数都交给代理者,此时可区分性不复存在 2.部分授权(partial delegation)用秘密参数s,计算出另外一个的参数,把交给代理者;当然要求从不可能推导出s;代理者秘密保存。其中又可以区分为两种方式,一种称为不保护代理者(proxyunprotected)的方式;另种称为保护代理者(proxyprotected)的方式。3.许可证授权(delegation by warrant)Delegateproxy方式 就是原始签名者用自己的私钥按普通签名方式签署一个文件给代理者、声明该人作为自己签名的代理者;Bearerproxy方式 许可证包括消息和原始签名者用自己的私钥按普通签名方式完成的签名,消息中包含一个全新的公钥,而对应的私钥交给代理者保存并用其进行代理签名。,4.1 数字签名技术,多重签名 假设A和B都需要对文件进行签名,最为简单的有两种方式。一是A、B各对文件的副本进行签名,当然保存时需要保存两份。二是先由A对文件签名,然后B再对A的签名结果进行签名,此时的缺点是必须先验证B的签名前提下,才可能验证A的签名。当然,签署人更多时,上面两法的缺点就非常严重了。,4.1 数字签名技术,4.1.4 数字签名法律数字签名法律的内涵 电子签名立法原则 1“技术中立”原则2功能等同方法3当事人自治原则(合同自由原则)4合理性原则全球电子签名立法特点1.迅速。2.兼容。3.法律的制定及时有力地推动了电子商务、信息化和相关产业的发展。我国电子签名立法现状,4.2 身份认证技术,4.2.1 身份认证的概念 身份认证又叫身份识别,它是通信和数据系统正确识别通信用户或终端的个人身份的重要途径。,4.2 身份认证技术,身份认证的几个相关概念1认证(Authentication)在做任何动作之前必须要有方法来识别动作执行者的真实身份。认证又称为鉴别、确认。身份认证主要是通过标识和鉴别用户的身份,防止攻击者假冒合法用户获取访问权限。2授权(Authorization)授权是指当用户身份被确认合法后,赋予该用户进行文件和数据等操作的权限。这种权限包括读、写、执行及从属权等。3审计(Auditing)每一个人都应该为自己所做的操作负责,所以在做完事情之后都要审计 身份认证分为单向认证和双向认证。如果通信的双方只需要一方被另一方鉴别身份,这样的认证过程就是一种单向认证。在双向认证过程中,通信双方需要互相认证对方的身份。,4.2 身份认证技术,身份认证系统的组成 1认证服务器(Authentication Server)2认证系统用户端软体(Authentication Client Software)3认证设备(Authenticator)身份认证系统被攻击的方式 1数据流窃听(Sniffer)2拷贝重传3修改或伪造身份认证与其他技术的结合 适合于各种不同场合的认证交换机制有多种选择与组合。例如:当对等实体以及通信手段都可信任时,一个对等实体的身份可以通过口令来证实。该口令能防止出错,但不能防止恶意行为。相互鉴别可在每个方向上使用不同的口令来完成。当每个实体信任它的对等实体但不信任通信手段时,抗主动攻击的保护能够由口令与加密联合提供,或由密码手段提供。防止重演攻击的需要双方握手(用保护参数),或时间标记(用可信任时钟)。带有重演保护的相互鉴别,使用三方握手就能达到。当实体不信任(或感到它们将来可能不信任)它们的对等实体或通信手段时可以使用抗抵赖服务。使用数字签名机制和公证机制就能实现抗抵赖服务。这些机制可与上面所述的机制一起使用。,4.2 身份认证技术,4.2.2 身份认证的主要方法口令识别法(1)根据用户知道什么来判断。如果用户能说出正确的口令,则说明他是真的,如经典的UNIX口令系统;(2)根据用户拥有什么来判断。如果用户能提供正确的物理钥匙,则说明他是真的,如普通的门钥匙和磁卡钥匙;(3)根据用户是什么来判断。如果用户生理特征与记录相符,则说明他是真的,如指纹、声音。视网膜等。1.不安全口令的分析(1)使用用户名(账号)作为口令(2)使用用户名(账名)的变换形式作为口令(3)使用自己或者亲友的生日作为口令(4)使用学号、身份证号、单位内的员工号码等作为口令(5)使用常用的英文单词作为口令,4.2 身份认证技术,1.一次性口令(1)一次性口令的特点 概念简单,易于使用 基于一个被记忆的密码,不需要任何附加的硬件 算法安全 不需要存储诸如密钥、口令等敏感信息2.一次性口令的原理 假设一次性口令序列共有n个元素,即有一个可使用n次的一次性口令序列。它的第一个口令是使用单向函数n次,第二个口令使用单向函数n1次,依次类推。如n4,则第一个口令为p(1)f(f(f(f(s),第二个口令为p(2)f(f(f(f),这样,即使窃听者监听到第i个口令(Pi),却不能生成第i+1个,因为这就需要求得单向函数的反函数,而不知道单向函数循环起始点使用的密键,这一点是不可实现的。而循环起始点使用的密键只有用户自己知道,这就是一次性口令的安全原理。,4.2 身份认证技术,1.一次性口令协议(1)用户输入登录名和相关身份信息ID。(2)如果系统接受用户的访问,则给用户传送一次性口令建立所使用的单向函数f及一次性密码k,这种传送通常采用加密方式。在电子商务系统中,可根据用户交费的多少和实际需要,给出允许用户访问系统的次数n。(3)用户选择“种子”密钥x,并计算第一次访问系统的口令z=fn(x)。向第一次正是访问系统所传送的数据为(k,z)。(4)系统核对k,若正确,则将(ID,fn(x)保存。(5)当用户第二次访问系统时,将(ID,fn-1(x)送系统。系统计算f(fn-1(x),将其与存储的数据对照,如果一致,则接受用户的访问,并将(ID,fn-1(x)保存。(6)当用户第三次访问系统时,将(ID,fn-2(x)送系统。系统计算f(fn-2(x),将其与存储的数据对照,如果一致,则接受用户的访问,并保存新计算的数据。(7)当用户每一次想要登录时,函数相乘的次数只需1,4.2 身份认证技术,个人特征识别法 1.机器识别 2.系统误差签名识别法 1.记录书写过程的技术 2.签名识别法的使用 指纹识别技术 1.指纹识别技术简介 2.指纹取像的几种技术和特点 3.指纹识别系统中的软件和固件 4.指纹识别技术的优缺点 5.指纹识别技术的应用系统,4.2 身份认证技术,语音识别系统 1.机器识别 2.系统误差视网膜图像识别系统 1.记录书写过程的技术 2.签名识别法的使用 识别过程 1.引入阶段 2.识别阶段 3.折衷方案 身份识别系统的选择 1.对假冒的识别力;2.伪造赝品的简易度;3.对欺骗的敏感性;4.获得识别的时间;5.用户的方便性;6性能价格比;7.设备提供的接口;8.调整用的时间和潜力;9.支持识别过程所需计算机系统的处理;10.可靠性和可维护性;11.保护设备的代价;12.配电与后勤支持的代价,4.2 身份认证技术,4.2.3 身份认证的协议 一个安全的身份识别协议至少应满足以下两个条件:识别者A能向验证者B证明他的确是A;在识别者A向验证者B证明他的身份后,验证者B不能获得A的任何有用信息,B不能模仿A向第三方证明他是A。一次一密机制 1.采用请求应答方式(ChallengeResponse)第一种方法是用户登录时系统随机提示一条信息,用户根据这一信息连同其个人化数据共同产生一个口令字,用户输入这个口令字,完成一次登录过程,或者用户对这一条信息实施数字签名发送给验证者AS进行鉴别;第二种方法采用时钟同步机制,即根据这个同步时钟信息连同其个人化数据共同产生一个口令字。这两种方案均需要验证者AS也产生与用户端相同的口令字(或检验用户签名)用于验证用户身份。,4.2 身份认证技术,2.询问应答式协议 验证者提出问题(通常是随机选择一些随机数,称作口令),由识别者回答,然后验证者验证其真实性。目前已经设计出了许多询问应答式协议,比如Schnorr身份识别协议、Okanmto身份识别协议、Guillou Quisquater身份识别协议和基于身份的识别协议等。基于请求应答方式的著名的Schnorr身份认证机制。环境参数:设p、q都是大素数,且q|p-1(q为p-1的因子),a的模p的阶为q(即aq1(mod p)。h为一输出为t的单向函数。用户U秘密选择一个数s(0sq-1)作为个人密钥,计算va-s(mod p),并将p、q、a、v公开。Schnorr身份认证机制过程如下:(1)用户U任意选一整数k(0kq-1),计算ak(mod p),并将发送给验证者V;(2)验证者V任选一数r(0r2t-1),并发送给用户U;(3)用户U送给验证者V消息yksr(mod q);(4)V计算并验证:ayvr(mod p)。,4.2 身份认证技术,X.509认证协议 X509对每个用户选择的公钥提供所谓的“证书”。用户的证书是由可信的证书机构(CA)产生,并存放于X500目录之中。版本(V):用来区分X509不同年份的版本;特定编号(SN):由CA给予每一个证书的一个特殊号码;识别方法(AI):用于产生证书所用的方法以及一切参数;颁布者(CA):CA的识别名字;有效期(TA):包括两个日期,在所指定的两个时间之间有效;使用者(A):证书拥有者的识别名字;公钥信息(TP):被证明的公钥值,加上使用这把公钥的方法的名称;数字签名:对这份格式中所有其他信息先用杂凑函数产生杂凑值,再用CA的密钥签署杂凑值。,4.2 身份认证技术,Kerberos认证协议 Kerberos协议是以认证服务器、Ticket散发服务器、客户机及应用服务器的服务等四方模型为基础,并假设服务器都是在安全的环境下进行。Kerberos认证过程大致如下:1.客户向认证服务器发送请求,需要某应用服务器服务的证书;认证服务器响应请求,发给用客户的密钥加密的证书。证书包括服务器的票(Ticket)和会话密钥(暂时用于加密的)。2.如果客户得到的Ticket是Ticket散发服务器的,客户机必须再向Ticket散发服务器换取应用服务器的Ticket;客户机将应用服务器的Ticket(由客户的标识、会话密钥的拷贝等组成,并经过应用服务器的密钥加密)送往应用服务器。3.应用服务器和客户机拥有了同一个会话密钥,可以用于它们之间的认证和加密了。,4.2 身份认证技术,Kerberos认证过程,4.2 身份认证技术,零知识身份识别 证明者P掌握某些秘密信息,P想设法让认证方V相信他确实掌握那些信息,但又不想让V也知道那些信息(如果连V都不知道那些秘密信息,第三者想盗取那些信息当然就更难了)。被认证方P掌握的秘密信息可以是某些长期没有解决的猜想问题的证明(如费尔玛最后定理、图的三色问题),也可以是缺乏有效算法的难题解法(如大数因式分解等)。信息的本质是可以验证的,即可通过具体的步骤来检测它的正确性。,4.2 身份认证技术,设I(P)为被认证方P的身份信息,要求P可以不透露I(P)的一个比特使认证方确信P却是掌握I(P)。协议假定存在一个可信赖的机构,它的职责在于公布模数n,n等于两个大素数p和q之积,p和q都是mod 4 与 3同余。I(P)必须包含P的许多信息。假定I(P)包含有P的秘密身份的k个数c1,c2,ck,1cip,i=1,2,,k;还有他的公开身份PI(P)的另外k个数d1,d2,,dk,1dip,i=1,2,,k,而且满足djcj21 mod n(j=1,2,,k).认证方V知道n和PI(P)。P为了使V相信他掌握I(P),下面4个步骤算是一轮。通过轮数越多,P做假的概率越小。1.P选一随机数r,计算r2 mod n,P取其中一个告诉V,称之为x;2.V从1,2,k中选一子集S告诉P;3.P告诉V,yrTc mod n,其中,对所有的jS有Tccj;4.V验证Xy2Td mod n?其中,对所有的jS有Tddj;若等号成立,开始新的一轮验证或停止,否则予以拒绝。因为djcj21 mod n,j1,2,k,所以,y2Tdr2Tc2Tdr2,cj2djr2x mod n.随机数r是必要的,否则V选Sj,从而找到cj,对cj要求(cj,n)1,j1,2,k,否则n可能被因数分解。,思考题,什么是数字签名?其有何特点和功能?如何区别数字签名与手写签名。简述数字签名的使用模式和使用原理。试述RSA数字签名体制。有哪些特殊数字签名体制?什么是身份认证?有哪些主要方法和协议?,Thank You!,