1、第7章 数字签字和密码协议,7.1 数字签字的基本概念 7.2 数字签字标准 7.3 其他签字方案 7.4 认证协议 7.5 身份证明技术 7.6 其他密码协议 习题,数字签字(也称数字签名)由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。本章首先介绍数字签字的基本概念和一些常用的数字签字算法,然后介绍身份认证协议、身份证明技术以及其他一些常用的密码协议。,通信双方之间也可能有多种形式的欺骗,例如通信双方A和B(设A为发方,B为收方)使用图6.1所示的消息认证码的基本方式通信(本ppt第7-9页),则可能发生以下欺骗:,7.1 数字签字的基本
2、概念 7.1.1 数字签字应满足的要求,因此在收发双方未建立起完全的信任关系且存在利害冲突的情况下,单纯的消息认证就显得不够。数字签字技术则可有效解决这一问题。类似于手书签字(签名) ,数字签字(数字签名)应具有以下性质: 能够验证签字产生者的身份,以及产生签字的日期和时间。 能用于证实被签消息的内容。 数字签字可由第三方验证,从而能够解决通信双方的争议。,由此可见,数字签字具有认证功能。为实现上述3条性质,数字签字(数字签名)应满足以下要求: 签字的产生必须使用发方独有的一些信息以防伪造和否认。 签字的产生应较为容易。 签字的识别和验证应较为容易。 对已知的数字签字构造一新的消息或对已知的消
3、息构造一假冒的数字签字在计算上都是不可行的。,消息认证码(MAC,message authentication code)是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。此时需要通信双方A和B共享一密钥K。设A欲发送给B的消息是M,A首先计算MAC=CK(M),其中CK()是密钥控制的公开函数,然后向B发送MMAC,B收到后做与A相同的计算,求得一新MAC,并与收到的MAC做比较,如图6.1(a)所示。,复习: 消息认证码:使用图6.1所示的消息认证码的基本通信方式(第6章p142),图6.1 MAC的基本使用方式,如果仅收发双方知道K,且B计算得到
4、的MAC与接收到的MAC一致,则这一系统就实现了以下功能: 接收方相信发送方发来的消息未被篡改,这是因为攻击者不知道密钥,所以不能够在篡改消息后相应地篡改MAC,而如果仅篡改消息,则接收方计算的新MAC将与收到的MAC不同。 接收方相信发送方不是冒充的,这是因为除收发双方外再无其他人知道密钥,因此其他人不可能对自己发送的消息计算出正确的MAC。,数字签字的产生可用加密算法或特定的签字算法。 1. 由加密算法产生数字签字 利用加密算法产生数字签字是指将消息或消息的摘要加密后的密文作为对该消息的数字签字,其用法又根据是单钥加密还是公钥加密而有所不同。,7.1.2 数字签字的产生方式,(1) 单钥加
5、密 如图7.1(a)所示,发送方A根据单钥加密算法以与接收方B共享的密钥K对消息M加密后的密文作为对M的数字签字发往B。该系统能向B保证所收到的消息的确来自A,因为只有A知道密钥K。再者B恢复出M后,可相信M未被篡改,因为敌手不知道K就不知如何通过修改密文而修改明文。具体来说,就是B执行解密运算Y=DK(X),如果X是合法消息M加密后的密文,则B得到的Y就是明文消息M,否则Y将是无意义的比特序列。,图7.1 消息加密产生数字签字的基本方式,(2) 公钥加密 如图7.1(b)所示,发送方A使用自己的秘密钥SKA对消息M加密后的密文作为对M的数字签字,B使用A的公开钥PKA对消息解密,由于只有A才
6、拥有加密密钥SKA,因此可使B相信自己收到的消息的确来自A。这种方法的缺点是:由于任何人都可使用A的公开钥解密密文,所以这种方案不提供保密性。为提供保密性,A可用B的公钥再一次加密,如图7.1(c)所示。,下面以RSA签字体制为例说明数字签字的产生过程。 体制参数。 选两个保密的大素数p和q,计算n=pq,(n)=(p-1)(q-1);选一整数e,满足1e(n),且gcd(n),e)=1;计算d,满足de1 mod (n);以e,n为公开钥,d,n为秘密钥。 签字过程。 设消息为M,对其签字为 SMd mod n, 验证过程。 接收方在收到消息M和签字S后,验证 是否成立,若成立,则发送方的签
7、字有效。 实际应用时,数字签字是对消息摘要加密产生,而不是直接对消息加密产生,如图6.3(b)图6.3(c)所示。,图6-3 杂凑函数的基本使用方式,图6-3 杂凑函数的基本使用方式,由加密算法产生数字签字又分为外部保密方式和内部保密方式,外部保密方式是指数字签字是直接对需要签字的消息生成而不是对已加密的消息生成,否则称为内部保密方式。外部保密方式便于解决争议,因为第3方在处理争议时,需得到明文消息及其签字。但如果采用内部保密方式,第3方必须得到消息的解密密钥后才能得到明文消息。如果采用外部保密方式,接收方就可将明文消息及其数字签字存储下来以备以后万一出现争议时使用。,2. 由签字算法产生数字
8、签字签字算法(本章7.2,7.3介绍)的输入是明文消息M和密钥x,输出是对M的数字签字,表示为S=Sigx(M)。相应于签字算法,有一验证算法,表示为Verx(S,M),其取值为算法的安全性在于从M和S难以推出密钥x或伪造一个消息M使M和S可被验证为真。,数字签字的执行方式有两类: 直接方式和具有仲裁的方式。 1. 直接方式 直接方式是指数字签字的执行过程只有通信双方参与,并假定双方有共享的秘密钥或接收一方知道发方的公开钥。,7.1.3 数字签字的执行方式,直接方式的数字签字有一公共弱点,即方案的有效性取决于发方秘钥的安全性。如果发方想对已发出的消息予以否认,就可声称自己的秘钥已丢失或被窃,因
9、此自己的签字是他人伪造的。可采取某些行政手段,虽然不能完全避免但可在某种程度上减弱这种威胁。例如,要求每一被签字的消息都包含有一个时戳(日期和时间)并要求密钥丢失后立即向管理机构报告。这种方式的数字签字还存在发方的秘密钥真的被偷的危险,例如敌手在时刻T偷得发方的秘密钥,然后可伪造一消息,用偷得的秘钥为其签字并加上T以前的时刻作为时戳。,2. 具有仲裁方式的数字签字 上述直接方式的数字签字所具有的缺陷都可通过使用仲裁者得以解决。和直接方式的数字签字一样,具有仲裁方式的数字签字也有很多实现方案,这些方案都按以下方式运行:发方X对发往收方Y的消息签字后,将消息及其签字先发给仲裁者A,A对消息及其签字
10、验证完后,再连同一个表示已通过验证的指令一起发往收方Y。此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用并应取得所有用户的信任。,以下是具有仲裁方式数字签字的几个实例,其中X表示发方,Y表示收方,A是仲裁者,M是消息,XY: M表示X给Y发送一消息M。,例7.1 签字过程如下: XA:M KXAIDXH(M)。 AY:EKAYIDXMEKXAIDXH(M)T。 其中E是单钥加密算法,KXA和KAY分别是X与A共享的密钥和A与Y共享的密钥,H(M)是M的杂凑值,T是时戳,IDX是X的身份。,在中,X以EKXAIDXH(M)作为其自己对M的签字,将M及签字发往A
11、。在中A将从X收到的内容和IDX、T一起加密后发往Y,其中的T用于向Y表示所发的消息不是旧消息的重放。Y对收到的内容解密后,将解密结果存储起来以备出现争议时使用。 如果出现争议,Y可声称自己收到的M的确来自X,并将 EKAYIDXMEKXAIDXH(M) 发给A,由A仲裁,A由KAY解密后,再用KXA对EKXAIDXH(M)解密,并对H(M)加以验证,从而验证了X的签字。,以上过程中,由于Y不知KXA,因此不能直接检查X的签字,但Y认为消息来自于A因而是可信的。所以在整个过程中,A必须取得X和Y的高度信任: X相信A不会泄露KXA,并且不会伪造X的签字;Y相信A只有在对EKAYIDXMEKXA
12、IDXH(M)中的杂凑值及X的签字验证无误后才将之发给Y;X,Y都相信A可公正地解决争议。如果A已取得各方的信任,则X就能相信没有人能伪造自己的签字,Y就可相信X不能对自己的签字予以否认。,本例中消息M是以明文形式发送的,因此未提供保密性,下面两个例子可提供保密性。例7.2 签字过程如下: XA: IDXEKXYMEKXAIDXH(EKXYM)。 AY: EKAYIDXEKXYMEKXAIDXH(EKXYM)T。,其中KXY是X,Y共享的密钥,其他符号与例7.1相同。X以EKXAIDXH(EKXYM)作为对M的签字,与由KXY加密的消息M一起发给A。A对EKXAIDXH(EKXYM)解密后通过
13、验证杂凑值以验证X的签字,但始终未能读取明文M。A验证完X的签字后,对X发来的消息加一时戳,再用KAY加密后发往Y。解决争议的方法与例7.1一样。,本例虽然提供了保密性,但还存在与上例相同的一个问题,即仲裁者可和发方共谋以否认发方曾发过的消息,也可和收方共谋以伪造发方的签字。这一问题可通过下例所示的采用公钥加密技术的方法得以解决。,例7.3 签字过程如下: XA:IDXESKXIDXEPKYESKXM。 AY:ESKAIDXEPKYESKXMT。,其中SKA和SKX分别是A和X的秘密钥(私钥),PKY是Y的公开钥,其他符号与前两例相同。第步中,X用自己的秘密钥(私钥)SKX和Y的公开钥PKY对
14、消息加密后作为对M的签字,以这种方式使得任何第3方(包括A)都不能得到M的明文消息。A收到X发来的内容后,用X的公钥可对ESKXIDXEPKYESKXM解密,并将解密得到的IDX与收到的IDX加以比较,从而可确信这一消息是来自于X的(因只有X有SKX)。第步,A将X的身份IDX和X对M的签字加上一时戳后,再用自己的秘密钥(私钥)加密发往Y。,与前两种方案相比,第3种方案有很多优点。首先,在协议执行以前,各方都不必有共享的信息,从而可防止共谋。第二,只要仲裁者的秘密钥不被泄露,任何人包括发方就不能发送重放的消息。最后,对任何第三方(包括A)来说,X发往Y的消息都是保密的。,数字签字标准DSS(D
15、igital Signature Standard)是由美国NIST公布的联邦信息处理标准FIPS PUB 186,其中采用了上一章介绍的SHA(安全杂凑算法)和一新的签字技术,称为DSA(Digital Signature Algorithm)。DSS最初于1991年公布,在考虑了公众对其安全性的反馈意见后,于1993年公布了其修改版。,7.2 数字签字标准,首先将DSS与RSA的签字方式做一比较。RSA算法既能用于加密和签字,又能用于密钥交换。与此不同,DSS使用的算法只能提供数字签字功能。图7.2用于比较RSA签字和DSS签字的不同方式。,7.2.1 DSS的基本方式,图7.2 RSA签
16、字与DSS签字的不同方式,采用RSA签字时,将消息输入到一个杂凑函数以产生一个固定长度的安全杂凑值,再用发方的秘密钥加密杂凑值就形成了对消息的签字。消息及其签字被一起发给收方,收方得到消息后再产生出消息的杂凑值,且使用发方的公开钥对收到的签字解密。这样收方就得了两个杂凑值,如果两个杂凑值是一样的,则认为收到的签字是有效的。,DSS签字也利用一杂凑函数产生消息的一个杂凑值,杂凑值连同一随机数k一起作为签字函数的输入,签字函数还需使用发送方的秘密钥SKA和供所有用户使用的一族参数,称这一族参数为全局公开钥PKG。签字函数的两个输出s和r就构成了消息的签字(s,r)。接收方收到消息后再产生出消息的杂
17、凑值,将杂凑值与收到的签字一起输入验证函数,验证函数还需输入全局公开钥PKG和发送方的公开钥PKA。验证函数的输出如果与收到的签字成分r相等,则验证了签字是有效的。,DSA是在ElGamal和Schnorr两个签字方案(见下一节)的基础上设计的,其安全性基于求离散对数的困难性。 算法描述如下: (1) 全局公开钥 p:满足2L-11的任一整数。,7.2.2 数字签字算法DSA,(2) 用户秘密钥x x是满足0xq的随机数或伪随机数。 (3) 用户的公开钥y ygx mod p。 (4) 用户为待签消息选取的秘密数k k是满足0kq的随机数或伪随机数。 (5) 签字过程 用户对消息M的签字为(r
18、, s), 其中r(gk mod p) mod q,sk-1(H(M)+xr) mod q,H(M)是由SHA求出的杂凑值。,(6) 验证过程 设接收方收到的消息为M,签字为(r,s)。计算 w(s)-1 mod q,u1H(M)w mod q u2r w mod q,v(gu1yu2) mod p mod q 检查 ,若相等,则认为签字有效。这是因为若(M,r,s)=(M,r,s),则,算法的框图如图7.3所示,其中的4个函数分别为 sf1H(M),k,x,r,qk-1(H(M)+xr) mod q r =f2(k,p,q,g)(gk mod p) mod q w =f3(s,q)(s)-1
19、 mod q v =f4(y,q,g,H(M),w,r)(g(H(M)w) mod qyrw mod q) mod p mod q,图7.3 DSA的框图,由于离散对数的困难性,敌手从r恢复k或从s恢复x都是不可行的。 还有一个问题值得注意,即签字产生过程中的运算主要是求r的模指数运算r=(gk mod p) mod q,而这一运算与待签的消息无关,因此能被预先计算。事实上,用户可以预先计算出很多r和k-1以备以后的签字使用,从而可大大加快产生签字的速度。,6.1节介绍过消息认证的基本概念,事实上安全可靠的通信除需进行消息的认证外,还需建立一些规范的协议对数据来源的可靠性、通信实体的真实性加以
20、认证,以防止欺骗、伪装等攻击。本节以网络通信的一个基本问题的解决引出认证协议的基本意义,这一基本问题陈述如下: A和B是网络的两个用户,他们想通过网络先建立安全的共享密钥再进行保密通信。那么A(B)如何确信自己正在和B(A)通信而不是和C通信呢?这种通信方式为双向通信,因此,此时的认证称为相互认证。类似地,对于单向通信来说,认证称为单向认证。,7.4 认证协议,A、B两个用户在建立共享密钥时需要考虑的核心问题是保密性和实时性。为了防止会话密钥的伪造或泄露,会话密钥在通信双方之间交换时应为密文形式,所以通信双方事先就应有密钥或公开钥。第2个问题实时性则对防止消息的重放攻击极为重要,实现实时性的一
21、种方法是对交换的每一条消息都加上一个序列号,一个新消息仅当它有正确的序列号时才被接收。但这种方法的困难性是要求每个用户分别记录与其他每一用户交换的消息的序列号,从而增加了用户的负担,所以序列号方法一般不用于认证和密钥交换。,7.4.1 相互认证,保证消息的实时性常用以下两种方法: 时戳 如果A收到的消息包括一时戳,且在A看来这一时戳充分接近自己的当前时刻, A才认为收到的消息是新的并接受之。这种方案要求所有各方的时钟是同步的。询问-应答 用户A向B发出一个一次性随机数作为询问,如果收到B发来的消息(应答)也包含一正确的一次性随机数,A就认为B发来的消息是新的并接受之。,1. 单钥加密体制正如5
22、.1节所介绍的,采用单钥加密体制为通信双方建立共享的密钥时,需要有一个可信的密钥分配中心KDC,网络中每一用户都与KDC有一共享的密钥,称为主密钥。KDC为通信双方建立一个短期内使用的密钥,称为会话密钥,并用主密钥加密会话密钥后分配给两个用户。这种分配密钥的方式在实际应用中较为普遍采用,如下一章介绍的Kerberos系统采用的就是这种方式。,(1) Needham-Schroeder协议5.1节中图5.1所示的采用KDC的密钥分配过程,可用以下协议(称为Needham-Schroeder协议)来描述: AKDC:IDAIDBN1 KDCA: EKAKSIDBN1EKBKSIDA AB:EKBK
23、SIDA -弱点 BA:EKSN2 AB:EKSf(N2),式中KA、KB分别是A、B与KDC共享的主密钥。协议的目的是由KDC为A、B安全地分配会话密钥KS,A在第步安全地获得了KS,而第步的消息仅能被B解读,因此B在第步安全地获得了KS ,第步中B向A示意自己已掌握KS,N2用于向A询问自己在第步收到的KS是否为一新会话密钥,第步A对B的询问作出应答,一方面表示自己已掌握KS,另一方面由f(N2)回答了KS的新鲜性。可见第、两步用于防止一种类型的重放攻击,比如敌手在前一次执行协议时截获第步的消息,然后在这次执行协议时重放,如果双方没有第、两步的握手过程的话,B就无法检查出自己得到的KS是重
24、放的旧密钥。,然而以上协议却易遭受另一种重放攻击,假定敌手能获取旧会话密钥,则冒充A向B重放第步的消息后,就可欺骗B使用旧会话密钥。敌手进一步截获第步B发出的询问后,可假冒A作出第步的应答。进而,敌手就可冒充A使用经认证过的会话密钥向B发送假消息。,(2) Needham-Schroeder协议的改进方案之一为克服以上弱点,可在第步和第步加上一时戳,改进后的协议如下: AKDC:IDAIDB KDCA:EKAKSIDBTEKBKSIDAT AB:EKBKSIDAT BA:EKSN1 AB:EKSf(N1),其中T是时戳,用以向A、B双方保证KS的新鲜性。A和B可通过下式检查T的实时性:|Clo
25、ck-T|t1+t2 其中Clock为用户(A或B)本地的时钟,t1是用户本地时钟和KDC时钟误差的估计值,t2是网络的延迟时间。以上协议中由于T是经主密钥加密的,所以敌手即使知道旧会话密钥,并在协议的过去执行期间截获第步的结果,也无法成功地重放给B,因B对收到的消息可通过时戳检查其是否为新的。,以上改进还存在以下问题: 方案主要依赖网络中各方时钟的同步,这种同步可能会由于系统故障或计时误差而被破坏。如果发送方的时钟超前于接收方的时钟,敌手就可截获发送方发出的消息,等待消息中时戳接近于接收方的时钟时,再重发这个消息。这种攻击称为等待重放攻击。,抗击等待重放攻击的一种方法是要求网络中各方以KDC
26、的时钟为基准定期检查并调整自己的时钟,另一种方法是使用一次性随机数的握手协议,因为接收方向发送方发出询问的随机数是他人无法事先预测的,所以敌手即使实施等待重放攻击,也可被下面的握手协议检查出来。,(3) Needham-Schroeder协议的改进方案之二 下面的协议可解决Needham-Schroeder协议以及改进方案一可能遭受的攻击: AB:IDANA BKDC:IDBNBEKBIDANATB KDCA:EKAIDBNAKSTBEKBIDAKSTBNB AB:EKBIDAKSTBEKSNB,协议的具体含义如下: A将新产生的一次性随机数NA与自己的身份IDA一起以明文形式发往B, NA以
27、后将与会话密钥KS一起以加密形式返回给A,以保证A收到的会话密钥的新鲜性。, B向KDC发出与A建立会话密钥的请求,表示请求的消息包括B的身份、一次性随机数NB以及由B与KDC共享的主密钥加密的数据项。其中NB以后将与会话密钥一起以加密形式返回给B以向B保证会话密钥的新鲜性,请求中由主密钥加密的数据项用于指示KDC向A发出一个证书,其中的数据项有证书接收者A的身份、B建议的证书截止时间TB、B从A收到的一次性随机数。, KDC将B产生的NB连同由KDC与B共享的密钥KB加密的IDAKSTB一起发给A,其中KS是KDC分配的会话密钥,EKBIDAKSTB由A当作票据用于以后的认证。KDC向A发出
28、的消息还包括由KDC与A共享的主密钥加密的IDBNAKSTB,A用这一消息可验证B已收到第步发出的消息(通过IDB),A还能验证这一步收到的消息是新的(通过NA),这一消息中还包括KDC分配的会话密钥KS以及会话密钥的截止时间TB。, A将票据EKBIDAKSTB连同由会话密钥加密的一次性随机数NB发往B,B由票据得到会话密钥KS,并由KS得NB。NB由会话密钥加密的目的是B认证了自己收到的消息不是一个重放,而的确是来自于A。,2. 公钥加密体制 第5章曾介绍过使用公钥加密体制分配会话密钥的方法,下面的协议也用于这个目的。 AAS: IDAIDB ASA:ESKASIDAPKATESKASID
29、BPKBT AB:ESKASIDAPKATESKASIDBPKBTEPKBESKAKST,其中SKAS、SKA 分别是AS和A的秘密钥(私钥),PKA、PKB分别是A和B的公钥,E为公钥加密算法,AS是认证服务器(authentication server)。第步,A将自己的身份及欲通信的对方的身份发送给AS。第步,AS发给A的两个链接的数据项都是由自己的秘密钥加密(即由AS签字),分别作为发放给通信双方的公钥证书。第步,A选取会话密钥并经自己的秘密钥和B的公开钥加密后连同两个公钥证书一起发往B。因会话密钥是由A选取,并以密文形式发送给B,因此包括AS在内的任何第3者都无法得到会话密钥。时戳T
30、用以防止重放攻击,所以需要各方的时钟是同步的。,下一协议使用一次性随机数,因此不需要时钟的同步: AKDC:IDAIDB KDCA:ESKAUIDBPKB AB:EPKBNAIDA BKDC:IDBIDAEPKAUNA KDCB:ESKAUIDAPKAEPKBESKAUNAKSIDB BA:EPKAESKAUNAKSIDBNB AB:EKSNB,其中SKAU和PKAU分别是KDC的秘密钥和公开钥。第步,A通知KDC他想和B建立安全连接。第步,KDC将B的公钥证书发给A,公钥证书包括经KDC签字的B的身份和公钥。第步,A告诉B想与他通信,并将自己选择的一次性随机数NA发给B。第步,B向KDC发出
31、得到A的公钥证书和会话密钥的请求,请求中由KDC的公开钥加密的NA用于让KDC将建立的会话密钥与NA联系起来,以保证会话密钥的新鲜性。,第步,KDC向B发出A的公钥证书以及由自己的秘密钥和B的公开钥加密的三元组NA,KS,IDB。三元组由KDC的秘密钥加密可使B验证三元组的确是由KDC发来的,由B的公开钥加密是防止他人得到三元组后假冒B建立与A的连接。第步,B新产生一个一次性随机数NB,连同上一步收到的由KDC的秘密钥加密的三元组一起经A的公开钥加密后发往A。第步,A取出会话密钥,再由会话密钥加密NB后发往B,以使B知道A已掌握会话密钥。,以上协议可进一步做如下改进: 在第、两步出现NA的地方
32、加上IDA,以说明NA的确是由A产生的而不是其他人产生的,这时IDA,NA就可惟一地识别A发出的连接请求。,电子邮件等网络应用有一个最大的优点就是不要求收发双方同时在线,发送方将邮件发往接收方的信箱,邮件在信箱中存着,直到接收方阅读时才打开。邮件消息的报头必须是明文形式以使SMTP(simple mail transfer protocol-简单邮件传输协议)或X.400等存储-转发协议能够处理。然而通常都不希望邮件处理协议要求邮件的消息本身是明文形式,否则就要求用户对邮件处理机制的信任。,7.4.2 单向认证,所以用户在进行保密通信时,需对邮件消息进行加密以使包括邮件处理系统在内的任何第3者
33、都不能读取邮件的内容。再者邮件接收者还希望对邮件的来源即发方的身份进行认证,以防他人的假冒。与双向认证一样,在此仍分为单钥加密和公钥加密两种情况来考虑。,1. 单钥加密 协议如下: AKDC:IDAIDBN1 KDCA:EKAKSIDBN1EKBKSIDA AB:EKBKSIDAEKSM协议不要求B同时在线,但保证了只有B能解读消息,同时还提供了对消息的发方A的认证。然而本协议不能防止重放攻击,为此需在消息中加上时戳,但由于电子邮件处理中的延迟,时戳的作用极为有限。,2. 公钥加密 公钥加密算法可对发送的消息提供保密性、认证性或既提供保密性又提供认证性,为此要求发送方知道接收方的公开钥(保密性
34、),或要求接收方知道发送方的公开钥(认证性),或要求每一方都知道另一方的公开钥。,如果主要关心保密性,则可使用以下方式: AB:EPKBKSEKSM 其中A用B的公开钥加密一次性会话密钥,用一次性会话密钥加密消息。只有B能够使用相应的秘密钥得到一次性会话密钥,再用一次性会话密钥得到消息。这种方案比简单地用B的公开钥加密整个消息要有效得多。,如果主要关心认证性,则可使用以下方式: AB:MESKAH(M) 这种方式可实现对A的认证,但不提供对M的保密性。如果既要提供保密性又要提供认证性,可使用以下方式: AB:EPKBMESKAH(M),后两种情况要求B知道A的公开钥并确信公开钥的真实性。为此A还需同时向B发送自己的公钥证书,表示为 AB:MESKAH(M)ESKASTIDAPKA 或 AB:EPKBMESKAH(M)ESKASTIDAPKA 其中ESKASTIDAPKA是认证服务器AS为A签署的公钥证书。,