7、第七讲-数字签名课件_第1页
7、第七讲-数字签名课件_第2页
7、第七讲-数字签名课件_第3页
7、第七讲-数字签名课件_第4页
7、第七讲-数字签名课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

计算机安全保密

第七讲数字签名武汉大学计算机学院1-第七讲数字签名数字签名的基本概念数字签名的模型基于公钥密码的数字签名方案PGP盲签名2-一、数字签名的基本概念①在人们的工作和生活中,许多事物的处理需要当事者签名。②签名起到确认、核准、生效和负责任等多种作用。③签名是证明当事者的身份和数据真实性的一种信息。④签名可以用不同的形式来表示。3-一、数字签名的基本概念⑤在传统的以书面文件为基础的事物处理中,采用书面签名的形式:手签、印章、手印等⑥书面签名得到司法部门的支持。⑦在以计算机文件为基础的现代事物处理中,应采用电子形式的签名,即数字签名(DigitalSignature)。⑧数字签名已得到我国司法部门的支持。4-一、数字签名的基本概念⑨一种完善的签名应满足以下三个条件:签名者事后不能抵赖自己的签名;任何其他人不能伪造签名;如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证签名来确认其真伪。5-一、数字签名的基本概念⑩数字签名基于密码技术,其形式是多种多样的:通用签名、仲裁签名、不可否认签名、盲签名、群签名、门限签名等。

1994年月美国政府正式颁布了美国数字签名标准DSS(DigitalSignatureStandard)。

1995年我国也制定了自己的数字签名标准(GB15851-1995)。6-数字签名(DigitalSignature)可解决手写签名中的签字人否认签字或其他人伪造签字等问题。因此,被广泛用于银行的信用卡系统、电子商务系统、电子邮件以及其他需要验证、核对信息真伪的系统中。一、数字签名的基本概念7-手工签名是模拟的,因人而异,而数字签名数字式的(0、1数字串),因信息而异。数字签名的功能:收方能够确认发方的签名,但不能伪造;发方发出签过名的信息后,不能再否认;收方对收到的签名信息也不能否认;一旦收发方出现争执,仲裁者可有充足的证据进行评判。一、数字签名的基本概念8-二、数字签名的模型一个数字签名体制包括两个方面的处理:

施加签名和验证签名。设施加签名的算法为SIG,产生签名的密钥为K,被签名的数据为M,产生的签名信息为S,则有

SIG(M,K)=S。

9-二、数字签名的模型设验证签名的算法为VER,用VER对签名S进行验证,可鉴别S的真假。即真,当S=SIG(M,K);假,当S≠SIG(M,K)。

VER(S,K)=10-二、数字签名的模型签名函数必须满足以下条件,否则文件内容及签名被篡改或冒充均无法发现:①

当M’≠M时,有SIG(M’,K)≠SIG(M,K)。条件①要求签名S至少和被签名的数据M一样长。当M较长时,应用很不方便。将条件①改为:虽然当M’≠M时,存在S=S’,但对于给定的M或S,要找出相应的M’在计算上是不可能的。11-二、数字签名的模型②签名S

只能由签名者产生,否则别人便可伪造,于是签名者也就可以抵赖。③收信者可以验证签名S的真伪。这使得当签名S为假时收信者不致上当。④签名者也应有办法鉴别收信者所出示的签名是否是自己的签名。这就给签名者以自卫的能力。12-三、利用公钥密码实现数字签名1、一般方法:如果E(D(M,Kd),Ke)=M,则可确保数据的真实性。凡是能够确保数据的真实性的公开密钥密码都可用来实现数字签名,例如RSA密码、ELGamal密码、椭圆曲线密码等都可以实现数字签名。13-三、利用公钥密码实现数字签名1、一般方法:为了实现数字签名,应成立管理机构;制定规章制度,统一技术问题,用户登记注册,纠纷的仲裁等。14-三、利用公钥密码实现数字签名1、一般方法:签名通信协议:①

A用自己的解密钥KdA对数据M进行签名:

SA=D(M,KdA)

②如果不需要保密,则A直接将SA发送给用户B。③如果需要保密,则A查到B的公开的加密钥KeB,并用KeB对SA再加密,得到密文C,

C=E(SA,KeB)

④最后,A把C发送给B,并将SA或C留底。15-三、利用公钥密码实现数字签名⑤B收到后,若是不保密通信,则先查到A的公开加密钥KeA,然后用KeA对签名进行验证:

E(SA,KeA)=E(D(M,KdA),KeA)=M⑥若是保密通信,则B先用自己的保密的解密钥KdB对C解密,然后再查到A的公开加密钥KeA,用KeA对签名进行验证:

D(C,KdB)=D(E(SA,KeB),KdB)=SAE(SA,KeA)=E(D(M,KdA),KeA)=M如果能够恢复出正确的M,则说明SA是A的签名,否则SA不是A的签名。16-

KdAKeA签名验证ABMSSM直接方式的数字签名17-一个典型的由公开密钥密码体制实现的、带有加密功能的数字签名过程如下图KdB加密(E)KeB解密(D)C信道签名验证KdAKeAABMSSM18-数字签名的主要方式是:报文的发送方利用单向散列函数从报文文本中生成一个128位的散列值(或信息摘要)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,该数字签名将作为报文的附件和报文一起发送给报文的接收方。Hash函数辅助数字签名19-报文的接收方首先从接收到的原始报文中计算出128位的散列值(或信息摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密得到原散列值。如果这两个散列值相同,则接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。Hash函数辅助数字签名20-只有加入数字签名及验证才能真正实现信息在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下(见下图)发送方首先用Hash函数从原报文中得到数字签名,然后采用公开密钥算法用自己的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的报文后面;数字签名过程21-单向函数明文信息摘要签名后的信息摘要密文签名后的信息摘要用A的私钥签名发送方A明文信息摘要签名后的信息摘要密文签名后的信息摘要用A的公钥验证接收方B信息摘要单向函数比较数字签名和验证过程数字签名过程22-发送方选择一个会话密钥对原报文进行加密,并把加密后的文件通过网络传输到接收方;再用接收方的公开密钥对会话密钥进行加密,并通过网络把加密后会话密钥传输到接收方;接受方使用自己的私有密钥对会话密钥信息进行解密,得到会话密钥的明文;接收方再用会话密钥对加密了的报文进行解密,得到原报文;23-接收方用发送方的公开密钥对加密的数字签名进行解密,得到数字签名的明文;接收方再用得到的原报文和Hash函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏,信息完整。24-三、利用公钥密码实现数字签名1、一般方法:签名通信协议安全分析:①

因为只有A才拥有KdA,而且由公开的KeA在计算上不能求出保密的解密钥KdA。因此签名的操作只有A才能进行,任何其他人都不能进行。所以,KdA就相当于A的印章或指纹,而SA就是A对M的签名。对此A不能抵赖,任何其他人不能伪造。25-三、利用公钥密码实现数字签名1、一般方法:签名通信协议安全分析:②

事后如果A和B关于签名的真伪发生争执,则他们应向公正的仲裁者出示留底的签名数据,由仲裁者当众验证签名,解决纠纷。26-三、利用公钥密码实现数字签名1、一般方法:签名通信协议的问题:①验证签名的过程就是恢复明文的过程。而B事先并不知道明文M,否则就用不着通信了。那末B怎样判定恢复出的M是否正确呢?②怎样阻止B或A用A以前发给B的签名数据,或用A发给其他人的签名数据来冒充当前A发给B的签名数据呢?仅仅靠签名本身并不能解决这些问题。27-三、利用公钥密码实现数字签名1、一般方法:解决问题的一种办法:①合理设计明文的数据格式:

M=<A,B,I,T,DATA,CRC>②记

其中

H=<A,B,I>

。于是,A以

<H,SIG(M,KdA)>

为最终报文发给B,其中H为明文形式。发方标识收方标识报文序号时间数据纠错码28-三、利用公钥密码实现数字签名1、一般方法:解决问题的一种办法:③只要用A的公钥验证签名并恢复出正确的附加信息H=<A,B,I>,便可断定明文M是否正确。④设附加信息H=<A,B,I>的二进制长度为l,则错判概率

pe≤2-l。

29-三、利用公钥密码实现数字签名1、一般方法:解决问题的另一种办法:对HASH(M)签名,而不直接对M签名。

M=<A,B,I,T,DATA>S=SIG(HASH(M),KdA)

传输格式:<M,S>发方标识收方标识报文序号时间数据HASH码30-三、利用公钥密码实现数字签名1、利用RSA密码实现数字签名:对于RSA密码

D(E(M))=(Me)d=Med=(Md)e=E(D(M))modn,所以RSA可同时确保数据的秘密性和真实性。因此利用RSA密码可以同时实现数字签名和数据加密。31-三、利用公钥密码实现数字签名1、利用RSA密码实现数字签名:设M为明文,KeA=<e,n>是A的公开钥,

KdA=<d,p,q,φ(n)>是A的保密的私钥,

则A对的M签名过程是,

SA=D(M,KdA)=(Md)modnSA便是A对M的签名。验证签名的过程是,

E(SA,KeA)=(Md)emodn=M

32-三、利用公钥密码实现数字签名2、对RSA数字签名的攻击①一般攻击:设e和n是用户A的公开密钥,所以任何人都可以获得并使用e和n。攻击者可随意选择一个数据Y,并用A的公钥计算

X=(Y)emodn因为Y=(X)dmodn,于是可以用Y伪造A的签名。因为Y是A对X的一个有效签名。注意:这样的X往往无正确语义!33-三、利用公钥密码实现数字签名2、对RSA数字签名的攻击②利用已有的签名进行攻击:攻击者选择随机数据M3,且M3=M1M2modn。攻击者设法让A对M1和M2签名:

S1=(M1)dmodn,S2=(M2)dmodn于是可以由S1和S2计算出A对M3的签名。因为(S1S2)=(M1)d(M2)dmodn=(M3)dmodn=S3对策:A不对数据M签名,而是对HASH(M)签名。34-三、利用公钥密码实现数字签名2、对RSA数字签名的攻击③攻击签名获得明文:攻击者截获C,C=(M)emodn。攻击者选择小的随机数r,计算:x=remodny=xCmodn,t=r-1modn攻击者让A对y签名,于是攻击者又获得:

S=ydmodn攻击者计算tS=r-1yd=r-1xdCd=Cd=Mmodn对策:A不对数据M签名,而是对HASH(M)签名。35-三、利用公钥密码实现数字签名2、对RSA数字签名的攻击④攻击先加密后签名:设A发给B的数据为,(MeBmodnB)dAmodnA。设B不诚实,B知道nB的因子分解,所以B能找出满足:(M1)x=MmodnB

的x.于是B宣布新公钥为xeB,这时B可以用M1抵赖M。原因:(M1xeBmodnB)dAmodnA=(MeBmodnB)dAmodnA对策:A不对数据M签名,而是对HASH(M)签名。36-三、利用公钥密码实现数字签名2、对RSA数字签名的攻击结论:不对数据M签名,而是对HASH(M)签名。使用时间戳对于同时确保秘密性和真实性的通信,应当先签名后加密。37-三、利用ELGamal密码实现数字签名2、利用ELGamal密码实现数字签名:⑴密钥选择选P是一个大素数,p-1有大素数因子,g是一个模p的本原元,将p和g公开。用户随机地选择一个整数x作为自己的秘密的解密钥,1<x≤p-2。计算y≡gxmodp,取y为自己的公开的加密钥。38-三、利用ELGamal密码实现数字签名⑵产生签名设明文消息m加签名,0≤m≤p-1,其签名过程如下:用户A随机地选择一个整数k,1<k<p-1,且(k,p-1)=1;计算r=gkmodp计算s=(m-xr)k-1modp-1取(r,s)作为m的签名,并以<m,r,s>的形式发给用户B。

mrs

39-三、利用ELGamal密码实现数字签名⑶验证签名用户B接收:<m,r,s>用户B用A的公钥y验证:gm=yrrsmodp,是否成立,若成立则签名为真,否则签名为假。签名的可验证性可证明如下:因为s=(m-xr)k-1modp-1,所以m=xr+ksmodp-1,故gm=gxr+ks=(gx)r(gk)s=yrrsmodp,故签名可验证。40-三、利用ELGamal密码实现数字签名⑶验证签名安全性从公开密钥求私钥是离散对数问题。p-1要有大素数因子,否则易受攻击。为了安全,随机数k应当是一次性的。否则,可用过去的签名冒充现在的签名。41-三、利用ELGamal密码实现数字签名签名方案的一般形式r=gkmodp签名:ak=b+cxmodp-1验证:ra=gbycmodpabc±r±sm±rm±s1±rm±ms1±mr±rs1±ms±rs142-三、利用ELGamal密码实现数字签名签名方案的一般形式r=gkmodp签名:ak=b+cxmodp-1验证:ra=gbycmodp签名(modp-1)验证(modp)rk=s+mxrr=gsymrk=m+sxrr=gmyssk=r+mxrs=grymsk=m+rxrs=gmyrmk=s+rxrm=gsyrmk=r+sxrm=grys43-三、利用ELGamal密码实现数字签名3、ELGamal密码签名的应用美国数字签名标准(DSS)的签名算法DSA是它的一种变形。安全,方便。缺点:由于取(r,s)作为m的签名,所以数字签名的长度是明文的两倍。数据扩张严重。44-数字签名的加密/解密过程和信息(报文)的加密/解密过程虽然都可使用公开密钥算法,但实现过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密(签名),接收方用发送方的公开密钥进行解密(验证)。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字签名与信息加密的区别45-而信息(报文)的加密/解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。在实用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密/解密,一个密钥对用来对信息(报文)进行加密/解密。这种方式提供了更高的安全性。46-数字签名大多采用非对称密钥加密算法,它能保证发送信息的完整性、身份的真实性和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息的保密性。数字签名和信息加密过程的区别比较明显(如下图所示)。47-接收者‘加’密发送者使用发送者的私钥加密使用接收者的公钥数字签名‘解’密使用发送者的公钥解密使用接收者的私钥验证数据加密数据解密数字签名与数据加密的区别48-四、加密软件PGP

PGP(PrettyGoodPrivacy)是一个广泛应用于电子邮件和其它文件加密的软件,推出后受到亿万用户的支持,已成为电子邮件加密的事实上的标准。PGP软件功能强,速度快,而且源代码全免费,使用方便(它把整个加密技术交给用户)。49-PGP实现了目前大部分流行的加密和认证算法,如DES、IDEA、RSA等加密算法,及MD5、SHA等散列算法。PGP的巧妙之处在于它汇集了各种加密方法的精华。四、加密软件PGP50-PGP不但可以对用户的邮件保密,以防止非授权者阅读,还能对邮件加上数字签名让收信人确信邮件未被第三者篡改,让人们可以安全地通信。四、加密软件PGP51-数据的加密主要使用了IDEA算法(因为它速度快,安全性好);使用RSA算法对IDEA的密钥加密(因为RSA公钥加密算法的密钥管理方便)。这样,两类体制的算法结合在一起,扬长避短,各尽其能。四、加密软件PGP52-PGP还使用MD5作为散列函数,对数据的完整性进行保护,并与加密算法结合,提供签名功能。PGP兼有数据加密和数字签名两种功能,其加密功能和签名功能可以单独使用,也可以同时使用,由用户自定。四、加密软件PGP53-PGP还可以只签名而不加密,这适用于用户发布公开信息的情况。用户为了证实自己的身份,在发送信件时用自己的私钥签名。这样就可以让收信人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。四、加密软件PGP54-PGP给邮件加密和签名的过程是这样的:首先甲用自己的私钥将由MD5算法得到的128位的“邮件摘要”加密(即签名),附加在邮件后;再用乙的公钥将整个邮件加密(要注意这里的次序,如果先加密再签名,别人可以将签名去掉后签上自己的名,从而篡改了签名)。四、加密软件PGP55-这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名;乙也利用MD5算法从原文计算出一个128位的特征值,再将其与用甲的公钥解密签名所得到的数据进行比较。如果比较相符,则说明这份邮件确实是甲寄发的。这样,保密性和认证性要求都得到了满足。四、加密软件PGP56-PGP除提供数据加密和数字签名服务外,还提供数据压缩和数据转换服务,这些服务都是与信息和文件格式相关的。PGP在数字签名和加密服务之间提供压缩服务,即PGP先对信息进行签名,然后再进行压缩,最后再对压缩的信息进行加密。四、加密软件PGP57-PGP在加密数据前先对其进行预压缩处理,PGP内核使用PKZIP算法来压缩加密前的明文。一方面压缩后加密使密文更短,可节省了网络传输的时间。另一方面,明文经过压缩实际上相当于经过一次变换,信息更加杂乱无章,对明文攻击的抵御能力更强。四、加密软件PGP58-格式转换服务:使用PGP时,传送的消息块通常是部分加密的。如果只使用数字签名服务,则消息摘要是加密的;如果使用了数据加密服务,则消息和签名都是加密的。这样,部分或全部的结果将由任意的8位字节流组成,而很多电子邮件只允许使用纯ASCII文本。为了适应这种限制,PGP提供了将原始的8位数据流转换为ASCII字符串的服务。59-公用密钥的传送:对PGP来说,公钥本来就是公开的,不存在安全问题,但公钥在发布中仍然存在安全性问题,其中最大的漏洞是公用密钥被篡改和冒充。PGP的解决方案是采用CA认证,每个由其签字的公钥都被视为是真的。60-PGP私有密钥的管理:私钥相对于公钥而言不存在被篡改的问题,但却存在泄露的问题。对此,PGP的办法是让用户为随机生成的RSA私钥指定一个口令,只有通过给出口令才能将私钥释放出来使用。用口令加密私钥的加密程序与PGP本身是一样的。所以,私钥的安全性问题实际上是对用户口令的保密。61-PGP利用公钥密码实现数字签名数据M经MD5处理利用RSA对HASH(M)签名,得到S使用ZIP对<M,S>压缩再用IDEA对压缩数据加密:IDEA(ZIP(M,S))用RSA对IDEA的密钥加密:RSA(k)形成数据:<IDEA(ZIP(M,S)),RSA(k)>将数据转换成ASCII码。62-五、盲签名在普通数字签名中,签名者总是先知道数据的内容后才实施签名,这是通常的办公事务所需要的。但有时却需要某个人对某数据签名,而又不能让他知道数据的内容。称这种签名为盲签名(BlindSignature)。在无记名投票选举和数字货币系统中往往需要这种盲签名,盲签名在电子商务和电子政务系统中有着广泛的应用前景。63-五、盲签名

盲签名与普通签名相比有两个显著的特点:①签名者不知道所签署的数据内容;②在签名被接收者泄露后,签名者不能追踪签名。即:如果把签名的数据给签名者看,他确信是自己的签名,但他无法知道什么时候对什么样的盲数据施加签名而得到此签名数据。64-五、盲签名接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。经签名者签名后再发给接收者。接收者对签名再作去盲变换,得出的便是签名者对原数据的盲签名。这样便满足了条件①。要满足条件②,必须使签名者事后看到盲签名时不能与盲数据联系起来,这通常是依靠某种协议来实现的。65-五、盲签名盲签名原理图:盲变换签名去盲变换数据盲签名66-五、盲签名1、RSA盲签名

AB①

A对消息M进行盲化处理:他随机选择盲化整数k,1<k<M,并计算

T=M(k)emod

温馨提示

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

评论

0/150

提交评论