1、计算机安全保密第七讲 数字签名武汉大学计算机学院1.第七讲 数字签名n数字签名的基本概念n数字签名的模型n基于公钥密码的数字签名方案nPGPn盲签名2.一一、数字签名的基本概念、数字签名的基本概念在人们的工作和生活中,许多事物的处理在人们的工作和生活中,许多事物的处理需要当事者需要当事者签名签名。签名签名起到确认、核准、生效和负责任等多起到确认、核准、生效和负责任等多种作用。种作用。签名签名是证明当事者的身份和数据真实性的是证明当事者的身份和数据真实性的一种信息。一种信息。签名签名可以用不同的形式来表示。可以用不同的形式来表示。3.一一、数字签名的基本概念、数字签名的基本概念在传统的以书面文件
2、为基础的事物处理中,在传统的以书面文件为基础的事物处理中,采用书面签名的形式:采用书面签名的形式:手签、印章、手印等手签、印章、手印等书面签名得到司法部门的支持。书面签名得到司法部门的支持。在以计算机文件为基础的现代事物处理中,在以计算机文件为基础的现代事物处理中,应采用电子形式的签名,即数字签名应采用电子形式的签名,即数字签名(Digital Signature)。)。数字签名已得到我国司法部门的支持。数字签名已得到我国司法部门的支持。4.一一、数字签名的基本概念、数字签名的基本概念一种完善的签名应满足以下三个条件:一种完善的签名应满足以下三个条件:签名者事后不能抵赖自己的签名;签名者事后不
3、能抵赖自己的签名;任何其他人不能伪造签名;任何其他人不能伪造签名;如如果果当当事事的的双双方方关关于于签签名名的的真真伪伪发发生生争争执执,能能够够在在公公正正的的仲仲裁裁者者面面前前通通过过验验证证签签名名来来确认其真伪。确认其真伪。5.一一、数字签名的基本概念、数字签名的基本概念数数字字签签名名基基于于密密码码技技术术,其其形形式式是是多多种种多样的:多样的:通通用用签签名名、仲仲裁裁签签名名、不不可可否否认认签签名名、盲签名、群签名、门限签名等。盲签名、群签名、门限签名等。1994年年月月美美国国政政府府正正式式颁颁布布了了美美国国数数字字签签 名名 标标 准准 DSS(Digital
4、Signature Standard)。)。1995年年我我国国也也制制定定了了自自己己的的数数字字签签名名标标准(准(GB158511995)。)。6.数字签名数字签名(Digital Signature)可解决手写签名中的签字人否认签字或其他人伪造签字等问题。因此,被广泛用于银行的信用卡系统、电子商务系统、电子邮件以及其他需要验证、核对信息真伪的系统中。一一、数字签名的基本概念、数字签名的基本概念7.n手工签名是模拟的,因人而异,而数字签名数字式的(0、1数字串),因信息而异。n数字签名的功能:收方能够确认发方的签名,但不能伪造;发方发出签过名的信息后,不能再否认;收方对收到的签名信息也不
5、能否认;一旦收发方出现争执,仲裁者可有充足的证据进行评判。一一、数字签名的基本概念、数字签名的基本概念8.二二、数字签名的模型、数字签名的模型一个数字签名体制包括两个方面的处理:一个数字签名体制包括两个方面的处理:施加签名施加签名和和验证签名验证签名。设设施施加加签签名名的的算算法法为为SIG,产产生生签签名名的的密密钥钥为为K,被被签签名名的的数数据据为为M,产产生生的的签签名名信息为信息为S,则有则有 SIG(M,K)S。9.二二、数字签名的模型、数字签名的模型设设验验证证签签名名的的算算法法为为 VER,用用VER对对签签名名S进行验证,可鉴别进行验证,可鉴别 S的真假。即的真假。即 真
6、,当真,当SSIG(M,K);假,当假,当SSIG(M,K)。VERVER(S S,K K)10.二二、数字签名的模型、数字签名的模型签签名名函函数数必必须须满满足足以以下下条条件件,否否则则文文件件内内容及签名被篡改或冒充均无法发现:容及签名被篡改或冒充均无法发现:当当MM时,有时,有SIG(M,K)SIG(M,K)。条条件件要要求求签签名名S至至少少和和被被签签名名的的数数据据M一一样样长长。当当M较长时,应用很不方便。较长时,应用很不方便。将将条条件件改改为为:虽虽然然当当MM时时,存存在在SS,但但对对于于给给定定的的M或或S,要要找找出出相相应应的的M在在计计算算上上是是不可能的。不
7、可能的。11.二二、数字签名的模型、数字签名的模型 签签名名 S 只只能能由由签签名名者者产产生生,否否则则别别人人便便可伪造,于是签名者也就可以抵赖。可伪造,于是签名者也就可以抵赖。收收信信者者可可以以验验证证签签名名S的的真真伪伪。这这使使得得当当签名签名S为假时收信者不致上当。为假时收信者不致上当。签签名名者者也也应应有有办办法法鉴鉴别别收收信信者者所所出出示示的的签签名名是是否否是是自自己己的的签签名名。这这就就给给签签名名者者以以自卫的能力。自卫的能力。12.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:如如果果E(D(M,K Kd d),K
8、Ke e)=M,则则可可确确保数据的真实性。保数据的真实性。凡凡是是能能够够确确保保数数据据的的真真实实性性的的公公开开密密钥钥密密码码都都可可用用来来实实现现数数字字签签名名,例例如如RSA密密码码、ELGamal密密码码、椭椭圆圆曲曲线线密密码码等等都都可可以以实现数字签名。实现数字签名。13.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:为了实现数字签名,应成立管理机构;为了实现数字签名,应成立管理机构;制定规章制度,制定规章制度,统一技术问题,统一技术问题,用户登记注册,用户登记注册,纠纷的仲裁等。纠纷的仲裁等。14.三三、利用公钥密码实现数字签
9、名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:签名通信协议:签名通信协议:A用自己的解密钥用自己的解密钥 K KdAdA对数据对数据 M进行签名:进行签名:SA A=D(M,K KdAdA)如果不需要保密,则如果不需要保密,则 A直接将直接将 SA A 发送给用户发送给用户B。如如果果需需要要保保密密,则则A查查到到B的的公公开开的的加加密密钥钥K KeB eB,并并用用 K KeB eB 对对 SA A 再加密,得到密文再加密,得到密文C,C=E(SA A,K KeBeB)最后,最后,A把把 C发送给发送给 B,并将,并将 SA A或或 C留底。留底。15.三三、利用公钥密码实现
10、数字签名、利用公钥密码实现数字签名B收到后,若是不保密通信,则先查到收到后,若是不保密通信,则先查到A的公开加的公开加密钥密钥K KeA eA,然后用,然后用K KeA eA 对签名进行验证:对签名进行验证:E(SA A,K KeAeA)=E(D(M,K KdAdA),),K KeAeA)=M若若是是保保密密通通信信,则则B先先用用自自己己的的保保密密的的解解密密钥钥K KdB dB 对对C解解密密,然然后后再再查查到到A的的公公开开加加密密钥钥K KeA eA,用用K KeA eA 对签名进行验证:对签名进行验证:D(C,K KdBdB)=D(E(SA A,K KeBeB),),K KdBd
11、B)=SA A E(SA A,K KeAeA)=E(D(M,K KdAdA),),K KeAeA)=M如如果果能能够够恢恢复复出出正正确确的的M,则则说说明明SA A是是A的的签签名名,否则否则SA A不是不是A的签名。的签名。16.KdAKeA签名验证ABMSSM直接方式的数字签名直接方式的数字签名17.一个典型的由公开密钥密码体制实现的、带有加密功能的数字签名过程如下图KdB加密(E)KeB解密(D)C信道签名验证KdAKeAABMSSM18.n数字签名的主要方式是:报文的发送方利用单向散列函数从报文文本中生成一个128位的散列值(或信息摘要)。发送方用自己的私人密钥对这个散列值进行加密来
12、形成发送方的数字签名。然后,该数字签名将作为报文的附件和报文一起发送给报文的接收方。Hash函数辅助数字签名函数辅助数字签名19.n报文的接收方首先从接收到的原始报文中计算出128位的散列值(或信息摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密得到原散列值。如果这两个散列值相同,则接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。Hash函数辅助数字签名函数辅助数字签名20.n只有加入数字签名及验证才能真正实现信息在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下(见下图)n发送方首先用Hash函数从原报文中得到数字签名,然后采用公开密钥算法用
13、自己的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的报文后面;数字签名过程数字签名过程21.单向函数明文信息摘要签名后的信息摘要密文签名后的信息摘要用A的私钥签名发送方A明文信息摘要签名后的信息摘要密文签名后的信息摘要用A的公钥验证接收方B信息摘要单向函数比较数字签名和验证过程数字签名和验证过程数字签名过程数字签名过程22.n发送方选择一个会话密钥对原报文进行加密,并把加密后的文件通过网络传输到接收方;再用接收方的公开密钥对会话密钥进行加密,并通过网络把加密后会话密钥传输到接收方;n接受方使用自己的私有密钥对会话密钥信息进行解密,得到会话密钥的明文;n接收方再用会话密钥对加密了
14、的报文进行解密,得到原报文;23.n接收方用发送方的公开密钥对加密的数字签名进行解密,得到数字签名的明文;n接收方再用得到的原报文和Hash函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏,信息完整。24.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:签名通信协议安全分析:签名通信协议安全分析:因因为为只只有有A才才拥拥有有K KdA dA,而而且且由由公公开开的的K KeA eA 在在计计算上不能求出保密的解密钥算上不能求出保密的解密钥K KdA dA。因此。因此 签签名名的的操操作作只只有有
15、A才才能能进进行行,任任何何其其他他人人都都不不能能进进行行。所所以以,K KdA dA 就就相相当当于于A的的印印章章或或指指纹纹,而而SA A 就就是是A对对M的的签签名名。对对此此A不不能能抵抵赖赖,任任何何其他人不能伪造。其他人不能伪造。25.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:签名通信协议安全分析:签名通信协议安全分析:事事后后如如果果A和和B关关于于签签名名的的真真伪伪发发生生争争执执,则则他他们们应应向向公公正正的的仲仲裁裁者者出出示示留留底底的的签签名名数数据据,由由仲仲裁裁者者当当众众验验证证签签名名,解解决决纠纷。纠纷。26
16、.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:签名通信协议的问题:签名通信协议的问题:验验证证签签名名的的过过程程就就是是恢恢复复明明文文的的过过程程。而而B事事先先并并不不知知道道明明文文M,否否则则就就用用不不着着通通信信了了。那那末末B怎样判定恢复出的怎样判定恢复出的M是否正确呢?是否正确呢?怎怎样样阻阻止止B或或A用用A以以前前发发给给B的的签签名名数数据据,或或用用A发发给给其其他他人人的的签签名名数数据据来来冒冒充充当当前前A发发给给B的签名数据呢?的签名数据呢?仅仅靠签名本身并不能解决这些问题。仅仅靠签名本身并不能解决这些问题。27.三三
17、、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:解决问题的一种办法:解决问题的一种办法:合理设计明文的数据格式:合理设计明文的数据格式:M=记记 其中其中 H=。于于是是,A以以 为为最最终终报报文文发发给给B B,其中,其中H H为明文形式。为明文形式。发方标识 收方标识 报文序号 时间 数据 纠错码28.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:解决问题的一种办法:解决问题的一种办法:只只要要用用A的的公公钥钥验验证证签签名名并并恢恢复复出出正正确确的的附附加加信息信息H=AI,便可断定明文,便可断定明文M M是
18、否正确。是否正确。设设附附加加信信息息 H=A I 的的二二进进制制长长度度为为 l l,则错判概率,则错判概率 p pe e22-l-l。29.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、一般方法:、一般方法:解解决决问问题题的的另另一一种种办办法法:对对HASH(M)签签名,而不直接对名,而不直接对M签名。签名。M=S SIG(HASH(M),KdA)传输格式:传输格式:发方标识 收方标识 报文序号 时间 数据 HASH码30.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、利用利用RSA密码实现数字签名密码实现数字签名:对于对于RSARSA密码密码 D
19、(E(M)=(Me)d=Med=(Md)e=E(D(M)mod n,所以所以RSARSA可同时确保数据的秘密性和真实性。可同时确保数据的秘密性和真实性。因因此此利利用用RSA密密码码可可以以同同时时实实现现数数字字签签名名和数据加密。和数据加密。31.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名1 1、利用利用RSA密码实现数字签名密码实现数字签名:设设M为明文,为明文,K KeAeA=是是A A的公开钥,的公开钥,K KdA dA=是是A的保密的私钥的保密的私钥,则则A对的对的M签名过程是,签名过程是,SA A=D(M D(M,K KdAdA)=)=(M M d d)mod nm
20、od n SA A 便是便是A A对对M M的签名。的签名。验证签名的过程是,验证签名的过程是,E E(SA A,K KeAeA)=(M M d d)e e mod n=Mmod n=M 32.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名2 2、对对RSA数字签名的攻击数字签名的攻击一般攻击一般攻击:设设e e和和n n是是用用户户A A的的公公开开密密钥钥,所所以以任任何何人人都都可可以以获获得得并并使使用用e e和和n n。攻攻击击者者可可随随意意选选择择一一个个数数据据Y Y,并用,并用A A的公钥计算的公钥计算 X X(Y Y)e e mod n mod n因因为为 Y Y
21、(X X)d d mod mod n n,于于是是可可以以用用Y Y伪伪造造A A的的签名。因为签名。因为Y Y是是A A对对X X的一个有效签名。的一个有效签名。注意:这样的注意:这样的 X X 往往无正确语义!往往无正确语义!33.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名2 2、对对RSA数字签名的攻击数字签名的攻击利用已有的签名进行攻击利用已有的签名进行攻击:攻击者选择随机数据攻击者选择随机数据 M M3 3,且且M M3 3=M=M1 1M M2 2 mod n mod n。攻击者设法让攻击者设法让A A对对M M1 1和和M M2 2签名:签名:S S1 1(M M1
22、 1)d d mod n mod n,S S2 2(M M2 2)d d mod n mod n于是可以由于是可以由S S1 1和和S S2 2计算出计算出A A对对M M3 3的签名。因为的签名。因为(S(S1 1S S2 2)=(M)=(M1 1)d d(M(M2 2)d d mod n=mod n=(M M3 3)d d mod n=S mod n=S3 3对策:对策:A A不对数据不对数据M M签名,而是对签名,而是对HASH(M)HASH(M)签名。签名。34.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名2 2、对对RSA数字签名的攻击数字签名的攻击攻击签名获得明文攻击签
23、名获得明文:攻击者截获攻击者截获C C,C C(M M)e e mod n mod n。攻击者选择小的随机数攻击者选择小的随机数r r,计算:计算:x=rx=re e mod n mod n y=xC mod n y=xC mod n,t=rt=r-1-1 mod n mod n攻击者让攻击者让A A对对y y签名,于是攻击者又获得:签名,于是攻击者又获得:S=yS=yd d mod n mod n 攻击者计算攻击者计算tS=rtS=r-1-1y yd d=r=r-1-1x xd dC Cd d=C=Cd d=M mod n=M mod n对策:对策:A A不对数据不对数据M M签名,而是对签
24、名,而是对HASH(M)HASH(M)签名签名。35.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名2 2、对对RSA数字签名的攻击数字签名的攻击攻击先加密后签名攻击先加密后签名:设设A A发给发给B B的数据为的数据为,(M(M eBeB mod n mod nB B)dAdA mod n mod nA A。设设B B不不诚诚实实,B B知知道道n nB B的的因因子子分分解解,所所以以B B能能找找出出满足:满足:(M M1 1)x x=M mod n=M mod nB B 的的x.x.于是于是B B宣布新公钥为宣布新公钥为xexeB B,这时这时B B可以用可以用M M1 1抵
25、赖抵赖M M。原因:原因:(M(M1 1xeBxeB mod n mod nB B)dA dA mod nmod nA A =(M =(M eBeB mod n mod nB B)dAdA mod n mod nA A对策:对策:A A不对数据不对数据M M签名,而是对签名,而是对HASH(M)HASH(M)签名。签名。36.三三、利用公钥密码实现数字签名、利用公钥密码实现数字签名2 2、对对RSA数字签名的攻击数字签名的攻击结论结论:不对数据不对数据M M签名,而是对签名,而是对HASH(M)HASH(M)签名。签名。使用时间戳使用时间戳对对于于同同时时确确保保秘秘密密性性和和真真实实性性的
26、的通通信信,应应当当先先签名后加密。签名后加密。37.三三、利用、利用ELGamal密码实现数字签名密码实现数字签名2 2、利用利用ELGamal密码实现数字签名密码实现数字签名:密钥选择密钥选择选选P是是一一个个大大素素数数,p-1p-1有有大大素素数数因因子子,g g是一个模是一个模p p的本原元,将的本原元,将p p和和g g公开。公开。用用户户随随机机地地选选择择一一个个整整数数x x作作为为自自己己的的秘秘密的解密钥,密的解密钥,1xp-2 1xp-2。计计算算 ygygx x mod mod p p,取取y y 为为自自己己的的公公开开的加密钥。的加密钥。38.三三、利用、利用EL
27、Gamal密码实现数字签名密码实现数字签名 产生签名产生签名设设明明文文消消息息m m加加签签名名,0mp-1,0mp-1,其其签签名名过过程程如下:如下:用用户户A A随随机机地地选选择择一一个个整整数数 k k,1kp-11kp-1,且(且(k k,p-1p-1)=1=1;计算计算r rg gk k mod p mod p计算计算s s(m mxrxr)k k-1-1 mod p-1 mod p-1取取(r r,s s)作作为为m m的的签签名名,并并以以的的形形式发给用户式发给用户B B。m r s 39.三三、利用、利用ELGamal密码实现数字签名密码实现数字签名 验证签名验证签名用
28、户用户B B接收:接收:用用户户B B用用A A的的公公钥钥y y验验证证:g gm my yr rr rs s mod mod p p,是是否成立,若成立则签名为真,否则签名为假。否成立,若成立则签名为真,否则签名为假。签名的可验证性可证明如下:签名的可验证性可证明如下:因为因为s s(m mxrxr)k k-1-1 mod p-1 mod p-1,所以所以 m mxr+ks mod p-1xr+ks mod p-1,故故g gm mg gxr+ksxr+ks(g(gx x)r r(g(gk k)s s=y=yr rr rs s mod mod p p,故故签签名名可验证。可验证。40.三三
29、、利用、利用ELGamal密码实现数字签名密码实现数字签名 验证签名验证签名安全性安全性 从公开密钥求私钥是离散对数问题。从公开密钥求私钥是离散对数问题。p-1p-1要有大素数因子要有大素数因子,否则易受攻击否则易受攻击。为为了了安安全全,随随机机数数k k应应当当是是一一次次性性的的。否否则,可用过去的签名冒充现在的签名。则,可用过去的签名冒充现在的签名。41.三三、利用、利用ELGamal密码实现数字签名密码实现数字签名签名方案的一般形式签名方案的一般形式 r=gr=gk k mod p mod p 签名:签名:akak=b+cxb+cx mod p-1 mod p-1验证:验证:r ra
30、 a=g gb by yc c mod p mod pabcrsmrms1rmms1mrrs1msrs142.三三、利用、利用ELGamal密码实现数字签名密码实现数字签名签名方案的一般形式签名方案的一般形式 r=gr=gk k mod p mod p 签名:签名:akak=b+cxb+cx mod p-1 mod p-1验证:验证:r ra a=g gb by yc c mod p mod p签名(mod p-1)验证(mod p)rk=s+mxrr r=gs sym mrk=m+sxrr r=gm mys ssk=r+mxrs s=gr rym msk=m+rxrs s=gm myr rm
31、k=s+rxrm m=gs syr rmk=r+sxrm m=gr rys s43.三三、利用、利用ELGamal密码实现数字签名密码实现数字签名3 3、ELGamal密码签名的密码签名的应用应用美国数字签名标准(美国数字签名标准(DSSDSS)的签名算法)的签名算法DSADSA是它的一种变形。是它的一种变形。安全,方便。安全,方便。缺点:由于取(缺点:由于取(r r,s s)作为)作为m m的签名,所的签名,所以以数字签名的长度是明文的两倍。数据扩数字签名的长度是明文的两倍。数据扩张严重。张严重。44.n数字签名的加密/解密过程和信息(报文)的加密/解密过程虽然都可使用公开密钥算法,但实现过
32、程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密(签名),接收方用发送方的公开密钥进行解密(验证)。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字签名与信息加密的区别数字签名与信息加密的区别45.n而信息(报文)的加密/解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。在实用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密/解密,一个密钥对用来对信息(报文)进行加密/解密。这种方式提供了更高的安全性
33、。46.n数字签名大多采用非对称密钥加密算法,它能保证发送信息的完整性、身份的真实性和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息的保密性。n数字签名和信息加密过程的区别比较明显(如下图所示)。47.接收者加密发送者使用发送者的私钥加密使用接收者的公钥数字签名解密使用发送者的公钥解密使用接收者的私钥验证数据加密数据解密数字签名与数据加密的区别数字签名与数据加密的区别48.四、加密软件四、加密软件PGP nPGP(Pretty Good Privacy)是一个广泛应用于电子邮件和其它文件加密的软件,推出后受到亿万用户的支持,已成为电子邮件加密的事
34、实上的标准。nPGP软件功能强,速度快,而且源代码全免费,使用方便(它把整个加密技术交给用户)。49.nPGP实现了目前大部分流行的加密和认证算法,如DES、IDEA、RSA等加密算法,及MD5、SHA等散列算法。nPGP的巧妙之处在于它汇集了各种加密方法的精华。四、加密软件四、加密软件PGP50.nPGP不但可以对用户的邮件保密,以防止非授权者阅读,还能对邮件加上数字签名让收信人确信邮件未被第三者篡改,让人们可以安全地通信。四、加密软件四、加密软件PGP51.n数据的加密主要使用了IDEA算法(因为它速度快,安全性好);使用RSA算法对IDEA的密钥加密(因为RSA公钥加密算法的密钥管理方便
35、)。这样,两类体制的算法结合在一起,扬长避短,各尽其能。四、加密软件四、加密软件PGP52.nPGP还使用MD5作为散列函数,对数据的完整性进行保护,并与加密算法结合,提供签名功能。nPGP兼有数据加密数据加密和数字签名数字签名两种功能,其加密功能和签名功能可以单独使用,也可以同时使用,由用户自定。四、加密软件四、加密软件PGP53.nPGP还可以只签名而不加密,这适用于用户发布公开信息的情况。用户为了证实自己的身份,在发送信件时用自己的私钥签名。这样就可以让收信人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。四、加
36、密软件四、加密软件PGP54.nPGP给邮件加密和签名的过程是这样的:首先甲用自己的私钥将由MD5算法得到的128位的“邮件摘要”加密(即签名),附加在邮件后;再用乙的公钥将整个邮件加密(要注意这里的次序,如果先加密再签名,别人可以将签名去掉后签上自己的名,从而篡改了签名)。四、加密软件四、加密软件PGP55.n这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名;乙也利用MD5算法从原文计算出一个128位的特征值,再将其与用甲的公钥解密签名所得到的数据进行比较。如果比较相符,则说明这份邮件确实是甲寄发的。这样,保密性和认证性要求都得到了满足。四、加密软件四、加密软件PGP5
37、6.nPGP除提供数据加密和数字签名服务外,还提供数据压缩数据压缩和数据转换数据转换服务,这些服务都是与信息和文件格式相关的。nPGP在数字签名和加密服务之间提供压缩服务,即PGP先对信息进行签名,然后再进行压缩,最后再对压缩的信息进行加密。四、加密软件四、加密软件PGP57.nPGP在加密数据前先对其进行预压缩处理,PGP内核使用PKZIP算法来压缩加密前的明文。一方面压缩后加密使密文更短,可节省了网络传输的时间。另一方面,明文经过压缩实际上相当于经过一次变换,信息更加杂乱无章,对明文攻击的抵御能力更强。四、加密软件四、加密软件PGP58.格格式式转转换换服服务务:使用PGP时,传送的消息块
38、通常是部分加密的。如果只使用数字签名服务,则消息摘要是加密的;如果使用了数据加密服务,则消息和签名都是加密的。这样,部分或全部的结果将由任意的8位字节流组成,而很多电子邮件只允许使用纯ASCII文本。为了适应这种限制,PGP提供了将原始的8位数据流转换为ASCII字符串的服务。59.公公用用密密钥钥的的传传送送:对PGP来说,公钥本来就是公开的,不存在安全问题,但公钥在发布中仍然存在安全性问题,其中最大的漏洞是公用密钥被篡改和冒充。PGP的解决方案是采用CA认证,每个由其签字的公钥都被视为是真的。60.PGP私私有有密密钥钥的的管管理理:私钥相对于公钥而言不存在被篡改的问题,但却存在泄露的问题
39、。对此,PGP的办法是让用户为随机生成的RSA私钥指定一个口令,只有通过给出口令才能将私钥释放出来使用。用口令加密私钥的加密程序与PGP本身是一样的。所以,私钥的安全性问题实际上是对用户口令的保密。61.PGP利用公钥密码实现数字签名利用公钥密码实现数字签名数据数据M M经经MD5MD5处理处理利用利用RSARSA对对HASH(M)HASH(M)签名签名,得到得到 S S使用使用ZIPZIP对对压缩压缩再再 用用 IDEAIDEA对对 压压 缩缩 数数 据据 加加 密密:IDEA(ZIP(M,S)IDEA(ZIP(M,S)用用RSARSA对对IDEAIDEA的密钥加密:的密钥加密:RSA(k)
40、RSA(k)形成数据:形成数据:将数据转换成将数据转换成ASCIIASCII码。码。62.五五、盲签名、盲签名在在普普通通数数字字签签名名中中,签签名名者者总总是是先先知知道道数数据据的的内内容容后后才才实实施施签签名名,这这是是通通常常的的办办公公事事务务所所需需要要的的。但但有有时时却却需需要要某某个个人人对对某某数数据据签签名名,而而又又不不能能让让他他知知道道数数据据的的内内容容。称称这这种种签签名名为为盲盲签签名名(Blind Signature)。在在无无记记名名投投票票选选举举和和数数字字货货币币系系统统中中往往往往需要这种盲签名,需要这种盲签名,盲盲签签名名在在电电子子商商务务
41、和和电电子子政政务务系系统统中中有有着着广泛的应用前景。广泛的应用前景。63.五五、盲签名、盲签名 盲签名与普通签名相比有两个显著的特点:盲签名与普通签名相比有两个显著的特点:签名者不知道所签署的数据内容;签名者不知道所签署的数据内容;在在签签名名被被接接收收者者泄泄露露后后,签签名名者者不不能能追追踪踪签签名名。即即:如如果果把把签签名名的的数数据据给给签签名名者者看看,他他确确信信是是自自己己的的签签名名,但但他他无无法法知知道道什什么么时时候候对对什什么么样样的的盲盲数数据据施施加加签签名名而而得得到到此此签签名名数数据。据。64.五五、盲签名、盲签名接接收收者者首首先先将将待待签签数数
42、据据进进行行盲盲变变换换,把把变变换换后的盲数据发给签名者。后的盲数据发给签名者。经签名者签名后再发给接收者。经签名者签名后再发给接收者。接接收收者者对对签签名名再再作作去去盲盲变变换换,得得出出的的便便是是签签名者对原数据的盲签名。名者对原数据的盲签名。这这样样便便满满足足了了条条件件。要要满满足足条条件件,必必须须使使签签名名者者事事后后看看到到盲盲签签名名时时不不能能与与盲盲数数据据联联系起来,这通常是依靠某种协议来实现的。系起来,这通常是依靠某种协议来实现的。65.五五、盲签名、盲签名盲签名原理图:盲签名原理图:盲变换签名去盲变换数据盲签名66.五五、盲签名、盲签名1、RSA盲签名盲签
43、名 A B A对对消消息息M进进行行盲盲化化处处理理:他他随随机机选选择择盲盲化化整整数数 k,1kM,并计算,并计算 TM(k)e e mod n。A把把T发给发给B。B对对T签名:签名:T d d =(Mk e e)d d mod n =(M)d d k mod n M67.五五、盲签名、盲签名1、RSA盲签名盲签名 B把他对把他对T的签名发给的签名发给A。A通过计算得到通过计算得到B对对M的签名。的签名。ST d d /k/k mod n Md d mod n正确性证明:正确性证明:因为因为T d d =(Mk e e)d d=Md d k mod n,所以,所以T d d/k=Md d
44、 mod n,而这恰好是,而这恰好是B对消息对消息M的签名的签名。68.五五、盲签名、盲签名盲盲签签名名在在某某种种程程度度上上保保护护了了参参与与者者的的利利益益,但但不不幸幸的的是是盲盲签签名名的的匿匿名名性性可可能能被被犯犯罪罪份份子子所所滥滥用用。为为了了阻阻止止这这种种滥滥用用,人人们们又又引引入入了了公公平平盲盲签签名名的的概概念念。公公平平盲盲签签名名比比盲盲签签名名增增加加了了一一个个特特性性,即即建建立立一一个个可可信信中中心心,通通过过可可信信中中心心的的授授权权,签签名名者者可可追追踪踪签名。签名。69.五五、盲签名、盲签名2 2、双联签名双联签名双双联联签签名名是是实实
45、现现盲盲签签名名的的一一种种变变通通方方法法。它它利利用用协协议议和和密密码码将将消消息息与与人人关关联联起起来来而而并并不不需需要要知知道道消消息息的的内内容容。从从而而实实现现盲盲签签名。名。双双联联签签名名采采用用单单向向HASH函函数数和和数数字字签签名名技术相结合,实现盲签名的两个特性。技术相结合,实现盲签名的两个特性。70.五五、盲签名、盲签名消息M1HASHHASH消息M2签名H(M1)H(M2)H(M1)+H(M2)KdASA=SIG(H(M1)+H(M2),KdA)SA+M1SA+M2接受者B接受者CABCM1M2A注意:表示前后拼接71.五五、盲签名、盲签名接接收收者者B和
46、和C都都可可用用发发信信者者A的的公公开开钥钥验验证证双双联联签签名名SA A。B只只能能阅阅读读M1 1,计计算算H(M1 1),通通过过H(M1 1)验验证证M1 1 是是否否正正确确。而而对对消消息息M2 2 却却一一无无所所知知,但通过验证签名但通过验证签名SA A 可以相信消息可以相信消息M2 2 的存在。的存在。同同样样,C也也只只能能阅阅读读M2 2,计计算算H(M2 2),通通过过H(M2 2)验验证证M2 2 是是否否正正确确。而而对对消消息息M1 1 却却一一无无所所知知,但但通通过过验验证证签签名名SA A 可可以以相相信信消消息息M1 1 的的存存在。在。72.五五、盲签名、盲签名优优点点:发发信信者者对对两两个个消消息息M1 1 和和M2 2只只需需要要计计算一个签名。算一个签名。在在电电子子商商务务系系统统中中,许许多多支支付付系系统统都都采采用用这这一一方方案案。这这是是因因为为在在一一次次支支付付过过程程中中,显显然然有有两两个个关关联联数数据据,一一个个是是关关于于转转帐帐的的财财务务数数据,另一个是关于所购的物品数据。据,另一个是关于所购的物品数据。73.第七讲 数字签名结束74.