两个用户A和B在通信过程中首先需建立共享的会话密钥,此时考虑的核心问题是机密性、完整性和时效性。为了防止会话密钥的伪造或泄露,会话密钥在通信双方之间交换时应为密文形式,所以通信双方可采用加密体制确保传输消息的机密性和完整性。实现消息的时效性对防止消息的重放攻击极为重要,保证消息的时效性常用以下两种方法。
●时间戳:如果用户A收到的消息包括一时间戳,且在A看来这一时间戳充分接近自己的当前时刻,A才认为收到的消息是新的并接受之。
●随机数:如果用户A向B发出一个一次性随机数作为询问,如果收到B发来的应答消息中也包含一个正确的一次性随机数,A就认为B发来的消息是新的并接受之。
在单向和双向认证方式中一般采用加密体制确保传输信息的机密性和完整性,在加密体制中加入时间戳和随机数以保证传输消息的时效性,最终目的是确认通信主体的真实性和合法性。
1.单向认证
单向认证是指通信双方中只有一方对另一方进行认证。单向认证的实现既可以采用对称密码体制也可以采用非对称密码体制,既可以加入时间戳也可以加入随机数。
【例8-1】 设A是通信的发送者,B是通信的接收者,他们共享一个会话密钥Ks。B对A进行认证的具体过程如下:
1)A创建时间戳Ta,使用会话密钥Ks对Ta和消息M加密,把所得密文发送给B。
2)B使用会话密钥Ks解密接收到的密文,如果他认为Ta是有效的就接受此次通信,否则就拒绝。
分析:在对称密码体制下使用时间戳完成了单向认证。在第1)步中,A把时间戳Ta加入到合成消息(M,Ta)中,使用对称加密算法E()对合成消息加密后传送。第2)步中B进行的解密操作检验了消息的完整性,接着他把得到的Ta和本地时间作比较(假设都使用标准时间),如果B认为时差足够小,就认为M是新鲜的,从而验证了Ta的有效性。
【例8-2】 设A是通信的发送者,B是通信的接收者,假定A和B的私钥分别为SKa和SKb,相应的公钥为PKa和PKb。B对A进行认证的具体过程如下:
1)A创建时间戳Ta,使用自己的私钥SKa对Ta和消息M签名,把所得签名发送给B。
2)B使用A的公钥PKa验证签名的有效性,若签名通过验证且Ta是有效的,则认证通过,接受消息,若是其他情况就拒绝。
分析:在非对称密码体制下使用时间戳完成了单向认证。在第1)步中,A把时间戳Ta加入到合成消息(M,Ta)中,使用非对称密码体制签名算法Sig()对合成消息签名后传送。第2)步中B验证签名的真实性,并把得到的Ta和本地时间作比较,如果B认为时差足够小,就认为M是新鲜的,从而验证了Ta的有效性。
【例8-3】 设A是通信的发送者,B是通信的接收者,他们共享一个会话密钥Ks。A对B进行认证的具体过程如下:
1)A选取一次性随机数Na发送给B。
A→B:Na
2)B使用会话密钥Ks对消息M和收到的Na加密,把所得密文发送给A。
B→A:EKs(M‖Na)
3)A使用会话密钥Ks解密接收到的密文,A将解密出来的Na与第1)步中的Na比较,若相同,则认证通过,接受消息,若是其他情况就拒绝。
分析:在对称密码体制下使用一次性随机数完成了单向认证。第1)步通常称为A对B的询问,第2)步通常称为B对A的应答,应答中的EKs(M,Na)表示对消息M和随机数Na进行对称加密操作,第3)步A确信B的加密操作肯定是在接收到A的随机数Na之后进行的,从而验证了B通信的真实性。
【例8-4】 设A是通信的发送者,B是通信的接收者,假定A和B的私钥分别为SKa和SKb,相应的公钥为PKa和PKb。A对B进行认证的具体过程如下:
1)A选取一次性随机数Na发送给B。
A→B:Na(www.xing528.com)
2)B使用自己的私钥SKb对消息M和收到的Na签名,把所得签名发送给A。
3)A使用B的公钥PKb验证签名,若签名通过验证且现在得到的Na与自己发给B的Na相同,则认证通过,接受消息,若是其他情况就拒绝。
分析:在非对称密码体制下使用一次性随机数完成了单向认证。第1)步是A对B的询问;第2)步是B对A的应答,应答中的SigSKb(M,Na)表示对消息M和随机数Na进行非对称密码体制的签名操作;第3)步A验证签名的真实性,从得到的Na使A确信B的签名操作肯定是在接收到A的随机数Na之后进行的,从而验证了B通信的真实性。
2.双向认证
在双向认证过程中,通信双方需要互相认证鉴别各自的身份,然后交换会话密钥。在双向认证的实现过程中可采用对称密码体制和非对称密码体制,也可以加入时间戳和随机数。
【例8-5】 设A是通信的发送者,B是通信的接收者,A拥有公钥证书Certa,B拥有公钥证书Certb。A和B之间进行双向认证的具体过程如下:
1)A选取一次性随机数Na发送给B。
A→B:Na
2)B也选取一个一次性随机数Nb,将自己的证书Certb和令牌Tokenba发送给A。其中,Tokenba=Nb‖Na‖IDa‖SigSKb(Nb‖Na‖IDa)。
B→A:Certb‖Tokenba
3)A也将自己的证书Certa和令牌Tokenab发送给B。其中,Tokenab=Na‖Nb‖IDb‖SigSKa(Na‖Nb‖IDb)。
A→B:Certa‖Tokenab
4)B验证A的证书和签名的有效性,若验证通过,继续通信,否则中断通信。
分析:在非对称密码体制下使用公钥证书和随机数完成了双向认证。在第3)步中,A收到Certb和Tokenba后,查看Certb验证B的身份,使用B的公钥PKb验证了B签名的有效性,还收到了第1)步中自己送给B的随机数Na。在第4)步中,B既验证了A的身份和签名,且收到了第2)步中自己送给A的随机数Nb。这样,实现了A和B之间的双向认证,保证了通信双方的真实性。
【例8-6】 设A是通信的发送者,B是通信的接收者,他们共享一个会话密钥Ks。A和B之间进行双向认证的具体过程如下:
1)A产生时间戳Ta,并选择随机数Na,使用会话密钥Ks对Ta和Na加密,把所得密文连同自己的身份IDa一起发送给B。
A→B:EKs(Ta‖Na)‖IDa
2)B收到消息后,首先使用Ks解密出Ta和Na,然后B也产生一个时间戳Tb,并选择一个随机数Nb,用会话密钥Ks对Na、Nb和Tb加密,把所得密文连同自己的身份IDb一起发送给A。
B→A:EKs(Na‖Tb‖Nb)‖IDb
3)A解密出Na、Nb等内容,产生一个新的时间戳Ta′,并用密钥Ks对Nb和Ta′加密,把密文传送给B。
A→B:EKs(Nb‖Ta′)
4)B收到密文后,首先用密钥Ks解密出Nb,并与2)中的Nb进行比较,若两者相等,则A确信通信对方是B,开始通信;否则,A认为通信对方不是B,中断通信。
分析:认证过程中使用了对称密钥加密时间戳和随机数,在第3)步中A用对称密钥Ks解密出Na,并与第1)步中的Na进行比较,验证了B通信的真实性。第4)步中B解密出Nb,并与第2)步中的Nb进行比较,验证了A通信的真实性,实现了A和B之间的双向认证。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。