专利名称:一种防重放攻击的认证方法
技术领域:
本发明涉及通信系统认证领域,尤其是一种防重放攻击的认证方法。
背景技术:
重放攻击(Iteplay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。 重放攻击会不断恶意或欺诈性地重复一个有效的数据传输,攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器,以破坏认证的安全性。例如通过监听http数据传输或者其他方式截获cookie并提交cookie就是一种重放攻击,可以轻松复制别人的cookie从而获得相应的认证权限。为了避免服务器遭受重放攻击,现有技术中一般采用基于时间判断的防御机制,而为了保证不同服务器直接能识别接收到的消息是否过期,时间戳在其中扮演一个重要的角色,由于标记时间戳的一方与接收消息的一方会存在一定的时间差问题,一般会采用IEEE1588精确时间协议(Precision Time Protocol, PTP),或者松散的时间同步方式来进行时间同步。若采用专门的时间同步协议,可能会导致通信协议或者系统更加复杂,以增加系统的不稳定性;若采用松散的时间同步方式,即通过在两个服务之间进行三次握手,然后服务器计算它们之间的时间最大差值,则需要系统或协议能忍受一定时间的延迟或不同步问题,但在有些系统或协议中这种延迟或不同步是不允许的。
发明内容
本发明要解决的技术问题是提供一种勿需时间同步的防重放攻击的认证方法,该方法提高了认证系统的安全性。为了解决上述技术问题,本发明所采用的技术方案是
一种防重放攻击的认证方法,包括以下步骤
客户端发送登录请求消息到登录认证服务器;
登录认证服务器生成包括标识当前时间的第一时间戳的认证凭据给客户端;
客户端发送服务请求、来自登录认证服务器的认证凭据以及自己生成的单向数据链值到应用服务器;
应用服务器将包括认证凭据和单向数据链值的信息发送到登录认证服务器;
登录认证服务器判定所述认证凭据的正确性并计算当前时间与第一时间戳的时间差,将用于证明用户是否已经登录的认证凭据的正确性的判定结果、所述时间差及接收到的单向数据链值封装成校验信息发送给应用服务器;
应用服务器接收校验信息,判断接收到的单向数据链值是否为最新的单向数据链值,若否则判定为重放消息,直接丢弃该校验消息;若是则根据校验信息对客户端的服务请求进行服务响应。进一步作为优选的实施方式,所述应用服务器根据校验信息对客户端的服务请求进行服务响应包括以下步骤
将校验信息中的时间差与设定的有效时间比较,判断时间差是否大于设定的有效时间,若是则丢弃该校验信息;若否则执行下一步骤;
判断判定结果是否正确,若认证凭据正确则执行服务响应,若否则丢弃该校验信息。
进一步作为优选的实施方式,所述设定的有效时间来自应用服务器端。进一步作为优选的实施方式,所述设定的有效时间来自登录认证服务器端。进一步作为优选的实施方式,所述设定的有效时间可以人为调整。本发明的有益效果是本发明防重放攻击的认证方法,在对认证凭证有效期的校验时,不是在应用服务器端校验认证凭证的时间差,而是将认证凭证有效期的校验转移到登录认证服务器端,由于认证凭证上的第一时间戳是由登录认证服务器生产的,在校验认证凭证的有效期时采用登录认证服务器本地端的时间与第一时间戳比较,保证了校验的准确性,勿需对应用服务器和登录认证服务器的时间进行同步;进一步通过单向数据链保证了用户的合法服务请求不被重放攻击的可能。
下面结合附图对本发明的具体实施方式
作进一步说明
图I是本发明防重放攻击的认证方法的步骤流程 图2是本发明防重放攻击的认证方法中应用服务器根据校验信息对客户端的服务请求进行服务响应优选实施例的步骤流程 图3是本发明防重放攻击的认证方法应用场景的示意 图4是本发明单向数据链的应用示意图。
具体实施例方式参照图1,一种防重放攻击的认证方法,包括以下步骤
客户端发送登录请求消息到登录认证服务器;
登录认证服务器生成包括标识当前时间的第一时间戳Timesignta的认证凭据给客户
端;
客户端发送服务请求、来自登录认证服务器的认证凭据以及自己生成的单向数据链值到应用服务器;
应用服务器将包括认证凭据和单向数据链值的信息发送到登录认证服务器;
登录认证服务器判定所述认证凭据的正确性并计算当前时间Timecumnt与第一时间戳Timesignta的时间差,将用于证明用户是否已经登录的认证凭据的正确性的判定结果、所述时间差及接收到的单向数据链值封装成校验信息发送给应用服务器;
应用服务器接收校验信息,判断接收到的单向数据链值是否为最新的单向数据链值,上述判断过程具体为将接收到的单向数据链值进行哈希函数操作,判断哈希函数得出的结果与应用服务器存储的单向数据链值是否一致,若一致则根据校验信息对客户端的服务请求进行服务响应,并将接收到的数据链值保存替换原来存储的单向数据链值;若否则判定为重放消息,直接丢弃该校验消息。在应用服务器首次响应客户端发出的服务请求时,接收的单向数据链值即为最新的单向数据链值,故直接存储在应用服务器上,后续的服务响应中,应用服务器都需将校验信息中的单向数据链值进行哈希函数操作与存储的单向数据链值进行比较,判断接收的单向数据链值是否为最新的单向数据链值,以避免客户端服务请求的重放攻击。参照图4,单向数据链(One-Way Chains),亦称哈希链,是一种在非安全环境中的密码保护方案,但在本发明中,借用这种机制来防止客户端发送的服务请求消息的重放。图4给出了单向数据链的构成结构和应用结构,单向数据链由反复单向执行单向函数(也称哈希函数)F生成,并且单向函数F算法不可逆,这样可以生成多阶的单向数据链值Si,即F(Si) =Sp1,且Fi (Si)=Sc^由于应用时,对Si值的选取顺序刚好与该数据链生成的顺序相反,因此即使第三方窃取了某一已应用过的单向数据链值,也无法得知更新后的单向数据链值,从而无法对认证消息进行重放攻击。本发明应用服务器利用单向数据链可以保证客户端发送的服务请求信息为可靠的,非重放攻击产生的。 进一步作为优选的实施方式,参照图2,所述应用服务器根据校验信息对客户端的服务请求进行服务响应包括以下步骤
将校验信息中的时间差与设定的有效时间比较,判断时间差是否大于设定的有效时间,若是则丢弃该校验信息;若否则执行下一步骤;
判断判定结果是否正确,若认证凭据正确则执行服务响应,若否则丢弃该校验信息。进一步作为优选的实施方式,所述设定的有效时间来自应用服务器端,例如该设定的有效时间可以从应用服务器的内存中读取。进一步作为优选的实施方式,所述设定的有效时间来自登录认证服务器端,例如该设定的有效时间包含在封装的校验信息中,应用服务器可以从校验信息中读取,这样保证了在登录认证服务器端调整预先设定的有效时间的值。进一步作为优选的实施方式,所述设定的有效时间可以人为调整,以适应不同的应用场合。图3是本发明防重放攻击的认证方法应用场景的示意 SI:客户端向登录认证服务器发送登录请求;
S2:登录认证服务器发送登录响应给客户端,登录响应即为在登录认证服务器端生成的认证凭据,该认证凭据包括标识当前时间的第一时间戳Timesign0n,还包括用于认证的其他信息,例如校验码等,以标识用户是否登录成功;
S3:用户通过客户端发送服务请求给应用服务器,该服务请求同时包括包含有第一时间戳Timesignta的认证凭据以及单向数据链值等;用户客户端自身维护了一个单向数据链(One-Way Chains)以及其最新的链值,例如最新链值S12 ;
S4:应用服务器将认证凭据和单向数据链值S12等相关信息等发送到登录认证服务器;应用服务器自身保存有上次验证的单向数据链值S11 ;
S5:登录认证服务器根据存储的认证信息对认证凭据的正确性进行判断生成判定结果,该判定结果用于证明用户是否已经登录,并计算自身的当前时间Timeaffrait与第一时间戳Timesignta的时间差,将判定结果、时间差及单向数据链值S12封装成校验信息发送给应用服务器;
S6:应用服务器接收校验信息,判断接收到的单向数据链值S12是否为最新的单向数据链值,即对单向数据链值S12进行哈希函数操作,判断结果是否与存储的单向数据链值S11 —致,若否则直接丢弃该校验消息;若是则继续读取校验信息中的判定结果和时间差,若服务请求在设定的有效时间内认证成功,则应用服务器进行服务响应。在应用服务器端存储的单向数据链值会更新为S12。这样即使窃听者嗅探到单向数据链值S12,由于无法推导出最新的单向数据链值S13,从而避免了重放攻击。本发明防重放攻击的认证方法,将认证凭据上的第一时间戳与生成该第一时间戳的登录认证服务器的本地时间进行比较,从而节省了时间同步的麻烦,既避免了系统或协议的复杂又规避了时间同步导致的延迟,通过应用单向数据链保证用户的合法服务请求不被重放攻击的可能。 以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
权利要求
1.一种防重放攻击的认证方法,其特征在于,包括以下步骤 客户端发送登录请求消息到登录认证服务器; 登录认证服务器生成包括标识当前时间的第一时间戳的认证凭据给客户端; 客户端发送服务请求、来自登录认证服务器的认证凭据以及自己生成的单向数据链值到应用服务器; 应用服务器将包括认证凭据及单向数据链值的信息发送到登录认证服务器; 登录认证服务器判定所述认证凭据的正确性并计算当前时间与第一时间戳的时间差,将判定结果、所述时间差及接收到的单向数据链值封装成校验信息发送给应用服务器; 应用服务器接收校验信息,判断接收到的单向数据链值是否为最新的单向数据链值,若否则判定为重放消息,直接丢弃该校验消息;若是则根据校验信息对客户端的服务请求进行服务响应。
2.根据权利要求I所述的一种防重放攻击的认证方法,其特征在于所述应用服务器根据校验信息对客户端的服务请求进行服务响应包括以下步骤 将校验信息中的时间差与设定的有效时间比较,判断时间差是否大于设定的有效时间,若是则丢弃该校验信息;若否则执行下一步骤; 判断判定结果是否正确,若认证凭据正确则执行服务响应,若否则丢弃该校验信息。
3.根据权利要求2所述的一种防重放攻击的认证方法,其特征在于所述设定的有效 时间来自应用服务器端。
4.根据权利要求2所述的一种防重放攻击的认证方法,其特征在于所述设定的有效时间来自登录认证服务器端。
5.根据权利要求3所述的一种防重放攻击的认证方法,其特征在于所述设定的有效 时间可以人为调整。
全文摘要
本发明公开了一种防重放攻击的认证方法,该方法将客户端从登录认证服务器端获取的带有第一时间戳的认证凭据同服务请求传送到应用服务器,并使用单向数据链来标识用户请求的顺序,在登录认证服务器端计算当前时间与第一时间戳的时间差,并将判定结果、时间差及单向数据链值封装成校验信息发送给应用服务器,应用服务器根据接收到的单向数据链值判断该校验信息是否为重放信息,进一步还可以根据时间差、判定结果判断服务请求是否在有效时间内通过认证。本发明方法勿需时间同步,既避免了系统或协议的复杂又规避了时间同步导致的延迟,通过应用单向数据链保证用户请求不被重放攻击的可能。
文档编号H04L29/06GK102739659SQ20121020026
公开日2012年10月17日 申请日期2012年6月16日 优先权日2012年6月16日
发明者巴钟杰, 李子柳, 李惊生, 赵淦森 申请人:华南师范大学, 广州杰赛科技股份有限公司