不可否认基于动态口令的身份认证系统给网络安全带来了福音。它的优点,如动态性、一次性、随机性、多重安全性等,从根本上有效修补了传统身份认证系统存在的一些安全隐患。比如,可以有效防止重放攻击、窃听、猜测攻击等。但就目前的研究成果、使用情况来看,它同样也存在这不足,以及技术上的难关。现有的基于动态口令的身份认证系统都只能实现单向认证,即服务器对客户端的认证,这样就不能避免服务器端的攻击。随着网络应用的多样性发展,越来越多的网络应用要求能够实现双向认证以确保双发的利益,如电子商务、金融业务等,因此实现双向认证就成为了身份认证的一个必然趋势。对于同步认证技术来说,保证服务器端和客户端的高度同步是必需的。此时如何保持服务器和众多客户端同步就成了一个技术难关。基于同步认证技术的动态身份认证系统都存在“漂移”问题,也即“失步”。目前的解决办法往往是以牺牲口令的随机度来弥补这个缺陷。这无疑给系统带来了很大的安全隐患。当然异步认证技术不存在“漂移”问题,但是它进行认证的过程比较繁琐,占用通讯时间太长,效率比较低。针对上面提到的动态口令认证系统的不足和缺陷设计了一个新方案。该方案采用双向认证通信协议实现了双向认证,并设计了一种失步重调机制。2.2改进方案2.2.1双向认证通信协议在这个协议中使用了直接信任模型,即客户端和服务器端通过注册阶段而建立直接信任关系。(直接信任是最简单的信任形式。两个实体之间无须第三方介绍而直接建立起来的信任关系称为直接信任。)协议中包括两个阶段:注册阶段、登陆阶段。1)注册阶段注册阶段是为了让Client和Server建立初始信任关系。整个注册过程通过安全信道进行。注册阶段中Client和Server交换各自的id和公钥。服务器端将加密后存储。客户端将加密后存储在令牌中。
Client将和本次的动态密码用自己的私钥加密,再和,此次产生的随机数R一并用Server的公钥加密后发送给Server。发送完毕后,客户端会将R备份,并启动计时器,若超过一定时间T后仍无收到Server的应答数据包则丢弃该随机数R;或在T范围之内收到Server应答数据包进行验证后丢弃该随机数R。