一种防重放攻击方法及装置与流程

文档序号:17659646发布日期:2019-05-15 22:17阅读:372来源:国知局

本发明涉及移动互联网领域,尤其涉及一种防重放攻击方法及装置。



背景技术:

重放攻击(replayattacks)又称重播攻击(playbackattack)或新鲜性攻击(freshnessattacks),是指攻击者拦截并重发一个目标主机已接收过的包,来达到欺骗的目的。这种攻击会不断恶意或欺诈性地重复一个有效的数据传输。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给服务器。重放攻击在任何网络通讯过程中都可能发生,目前网络服务的各种服务器常常受到攻击方的重放攻击。

现有技术中,防重放攻击的方法,例如挑战-应答方法。这种方法是客户端请求服务器时,服务器会首先生成一个随机数返回给客户端,然后客户端带上这个随机数访问服务器,服务器比对客户端的这个参数,如果一致则认为不是重放攻击,允许访问。

但是,现有技术中,挑战-应答方法中客户端每次业务请求时都需要先请求服务端生成一个挑战码,然后客户端带上应答码再进行业务访问,即需要客户端与服务器进行两次交互,降低了系统性能,对于网络中的服务器等高并发系统是一个很大的挑战。



技术实现要素:

本发明实施例提供一种防重放攻击方法及装置,以解决现有技术中防重放攻击方法效率较低并降低了系统性能的问题。

本发明实施例提供的具体技术方案如下:

一种防重放攻击方法,包括:

接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的;

根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效;

根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求。

较佳的,进一步包括:

接收客户端发送的登录请求;

确定所述客户端的身份校验通过后,向所述客户端返回认证凭证和序列号初始值,并根据预设的窗口大小和所述序列号初始值,以所述序列号初始值为中心,根据所述预设的窗口大小,生成序列号窗口,以及将所述序列号窗口内的序列号作为所述认证凭证对应的序列号,并保存所述认证凭证和所述认证凭证对应的序列号窗口。

较佳的,进一步包括:

若确定所述序列号在所述序列号窗口内,则以所述序列号为中心,根据预设的窗口大小,更新保存的所述认证凭证对应的序列号窗口,并记录所述序列号,更新记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

若确定所述认证凭证不在所述预设的有效期内,则清除保存的所述认证凭证、所述认证凭证对应的序列号窗口,以及记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

根据预设的防篡改校验方法,确定所述业务请求校验通过。

一种防重放攻击装置,包括:

第一接收单元,用于接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的;

第一判断单元,用于根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效;

第二判断单元,用于根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求。

较佳的,进一步包括:

第二接收单元,用于接收客户端发送的登录请求;

发送单元,用于确定所述客户端的身份校验通过后,向所述客户端返回认证凭证和序列号初始值;

保存更新单元,用于根据预设的窗口大小和所述序列号初始值,以所述序列号初始值为中心,根据所述预设的窗口大小,生成序列号窗口,以及将所述序列号窗口内的序列号作为所述认证凭证对应的序列号,并保存所述认证凭证和所述认证凭证对应的序列号窗口。

较佳的,保存更新单元进一步用于:

若确定所述序列号在所述序列号窗口内,则以所述序列号为中心,根据预设的窗口大小,更新保存的所述认证凭证对应的序列号窗口,并记录所述序列号,更新记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

清除单元,用于若确定所述认证凭证不在所述预设的有效期内,则清除保存的所述认证凭证、所述认证凭证对应的序列号窗口,以及记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

第三判断单元,用于根据预设的防篡改校验方法,确定所述业务请求校验通过。

一种计算机设备,包括:

至少一个存储器,用于存储计算机程序;

至少一个处理器,用于执行存储器中存储的计算机程序时实现本发明实施例中的防重放攻击方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例中的防重放攻击方法的步骤。

本发明实施例中,接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的;根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效;根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求,这样,客户端发送业务请求时携带认证凭证和递增的序列号,不需要每次都先与服务器交互获得随机数,减少了与服务器的交互次数,提高了效率和系统性能,认证凭证关联序列号进行保存,并设置有效期,可以有效控制信息存储量,并且不仅仅保存一个序列号,通过序列号窗口可以避免并发请求情况下误判的情况,以及服务器端只需要设置认证凭证的有效期,也不需要保证服务器和客户端的时间同步,减少了复杂性。

附图说明

图1为本发明实施例中防重放攻击方法的概述流程图;

图2为本发明实施例中防重放攻击方法详细流程图;

图3为本发明实施例中防重放攻击装置结构示意图;

图4为本发明实施例中服务器结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参阅图1所示,本发明实施例提供的防重放攻击方法,具体包括以下步骤:

步骤100:接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的。

实际中,例如基于oauth2.0的登录认证,客户端与服务器通信时,客户端先向服务器请求登录,校验客户端身份通过后,客户端就可以向服务器发送业务请求,执行相应的业务。

本发明实施例中,执行步骤100时,客户端向服务器发送业务请求,业务请求中需携带登录认证时获取到的认证凭证和递增的序列号,服务器以此判别是否为重放攻击。

其中,序列号的初始值和认证凭证为服务器接收到客户端的登录请求时,返回给客户端的,以使客户端基于所述认证凭证和序列号的初始值发送业务请求。

执行步骤100之前,进一步包括:

首先,接收客户端发送的登录请求。

然后,确定所述客户端的身份校验通过后,向所述客户端返回认证凭证和序列号初始值,并根据预设的窗口大小和所述序列号初始值,以所述序列号初始值为中心,根据所述预设的窗口大小,生成序列号窗口,以及将所述序列号窗口内的序列号作为所述认证凭证对应的序列号,并保存所述认证凭证和所述认证凭证对应的序列号窗口。

例如,接收客户端发送的登录请求,在校验客户端身份通过后,返回的认证凭证为a,序列号初始值为100,预设的窗口大小为11,则以100为中心,窗口大小为11得到的序列号窗口为[95,105],服务器以认证凭证关联序列号窗口进行存储,保存认证凭证a对应的序列号窗口为[95,105]。

其中,确定客户端的身份是否校验通过,可以根据客户端登录的用户名和密码,与预先保存的用户名和密码进行比对,若判断一致,则确定客户端的身份检验通过。

本发明实施例中,存储序列号窗口,而不是仅仅存储一个序列号来判断客户端发送的序列号是否合法,这样,是为了防止并发请求情况下可能有携带较大序列号的业务请求先到达服务器,而导致之后携带较小序列号的业务请求被当作重放请求被丢弃的发生,设置一定的窗口大小,既不会存储太多的信息,也可以防止误判的情况。

例如,认证凭证a对应的序列号窗口为[95,105],客户端发送的业务请求中携带的序列号为103,则允许访问,同时记录103为已访问序列号,序列号窗口调整为[98,108],并只保留在调整后的序列号窗口内的已访问的序列号,之后客户端再次发送携带序列号为101的业务请求,虽然101小于103,但101仍在[98,108]范围内,服务器同样允许访问并记录该序列号。

进一步地,本发明实施例中,还需设置认证凭证的有效期,例如有效期为2小时,根据认证凭证的有效期,若确定所述认证凭证不在所述预设的有效期内,则清除保存的所述认证凭证、所述认证凭证对应的序列号窗口,以及记录的所述认证凭证对应的已访问的序列号。

这样,以认证凭证关联序列号窗口进行存储,并设置有效期,当超过有效期后就可以清除保存的信息,可以有效控制信息存储量。

并且,本发明实施例中,客户端向服务器发送登录请求,服务器确定客户端身份校验通过后,生成认证凭证和序列号初始值并发送给客户端,进而客户端之后进行业务请求时,携带该认证凭证和递增的序列号,以使服务器判断该业务请求是否为防重放攻击,只在登录请求时获取认证凭证和序列号初始值,之后进行业务请求时直接使用即可,不需要再先向服务器请求认证凭证和序列号,这样也就不需要每次进行业务请求时,都与服务器进行两次或多次交互,减少了客户端与服务器之间的交互次数,提高了效率和系统性能。

步骤110:根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效。

例如,预设的有效期为1h,服务器接收到客户端的登录请求时,返回的认证凭证的时间为10:00:00,之后客户端携带该认证凭证向服务器发送业务请求,服务器接收业务请求的时间为10:30:00,则可以判断认证凭证在有效期内,认证凭证有效。

进一步地,若确定认证凭证过期,则服务器需要客户端重新登录,再次接收到客户端的登录请求时,重新生成一个认证凭证和序列号初始值,将新生成的认证凭证和序列号初始值发送给客户端,刷新该客户端的认证凭证和序列号初始值。

执行步骤110之前,进一步包括:

根据预设的防篡改校验方法,确定所述业务请求校验通过。

本发明实施例中,服务器与客户端提前约定好防篡改校验方法,例如,参数字典排序方法、公钥加密方法等,对此并不进行限制,目的是为了对业务请求中的参数进行加密,防止业务请求中的参数被篡改,以确保安全性,防止业务请求被拦截抓取后,业务请求中的认证凭证和序列号被破解进而进行重放请求欺骗服务器。

这样,接收到业务请求后,服务器先根据预设的防篡改校验方法,判断业务请求是否被篡改,确定校验通过后,即可以获取其中的认证凭证和序列号,进而根据认证凭证和序列号,判断是否为重放请求。

步骤120:根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求。

进一步地,若确定所述序列号在所述序列号窗口内,则以所述序列号为中心,根据预设的窗口大小,更新保存的所述认证凭证对应的序列号窗口,并记录所述序列号,更新记录的所述认证凭证对应的已访问的序列号。

这样,本发明实施例中,确定业务请求不是重放请求后,就可以继续处理相应的业务逻辑,若确定是重放请求,则可以丢弃该业务请求。

也就是说,本发明实施例中,判断序列号是否合法,根据两个条件,一个为根据保存的序列号窗口,另一个为根据已记录的序列号。其中,保存的序列号窗口为根据序列号初始值、窗口大小和上一次判断合法的序列号不断更新得到的,已记录的序列号为记录的判断合法的序列号,即已访问的序列号。

例如,服务器保存的序列号窗口为[95,105],并且还未记录有已访问序列号,那么只有在该范围内且未记录的序列号才允许访问,即才判断该业务请求不是重放请求。例如,客户端发送的业务请求中携带的序列号为104,104在[95,105]内,则允许访问,同时记录104为已访问序列号,序列号窗口调整为[99,109],并只保留在调整后的序列号窗口内的已访问的序列号,之后客户端再次发送携带序列号为101的业务请求,服务器同样允许访问并记录该序列号,但当客户端再次发送携带101或104序列号的业务请求,因为在序列号窗口范围内,记录的已访问的序列号中有101和104,因此,服务器可以认为该业务请求是重放请求。

本发明实施例中,客户端发送的业务请求中携带认证凭证和递增的序列号,服务器根据预设的有效期,判断认证凭证是否有效,并根据保存的该认证凭证对应的序列号窗口,判断该序列号是否合法,进而判断该业务请求是否为重放请求,这样,客户端只需在登录时获得一个序列号初始值,之后发送多次业务请求时,都只需根据预设递增步长,在业务请求中携带递增的序列号就可以符合服务器的防重放攻击方法,客户端不需要每次进行业务请求时都先与服务器交互获得一个随机数,即不需要类似现有技术中挑战-应答方法中进行两次或多次交互,提高了系统性能。

并且,本发明实施例中,认证凭证关联序列号进行保存,并设置有效期,可以有效控制信息存储量,不仅仅保存一个序列号,是根据预设窗口大小,保存的是序列号窗口,该序列号窗口范围内的序列号都可以认为是合法的,这样可以防止并发请求情况下误判的情况,并且本发明实施例中服务器端只需要设置认证凭证的有效期,也不需要保证服务器和客户端的时间同步,减少了复杂性。

下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图2所示,本发明实施例中,防重放攻击方法的执行过程具体如下:

步骤200:接收客户端发送的业务请求。

客户端在发送登录请求时获取到服务器返回的认证凭证和序列号初始值。之后客户端发送业务请求时携带上认证凭证和序列号,并且业务请求中的序列号为根据预设递增步长不断递增的,不需要每次业务请求先与服务器交互获得随机数,减少交互次数,提升系统性能。

例如,上一次发送业务请求时携带的序列号为100,预测递增步长为1,则本次发送业务请求时携带的序列号为101。

步骤201:判断防篡改校验是否通过,若是,则执行步骤203,否则,则执行步骤202。

具体为,根据预设的防篡改校验方法,判断业务请求是否校验通过,目的是为了防止业务请求中的参数被篡改,也为了进一步防止重放攻击。校验通过后,服务器获取业务请求中的认证凭证和序列号。

步骤202:验证失败。

步骤203:判断业务请求中认证凭证是否有效,若是,则执行步骤205,否则,则执行步骤204。

具体地:根据预设的有效期,判断认证凭证是否在预设的有效期内。

步骤204:认证凭证无效。

进一步地,若确定认证凭证无效,可以清除该认证凭证,相关联的序列号窗口,以及认证凭证对应的已访问的序列号,减少信息存储量。

步骤205:判断业务请求中序列号是否合法,若是,则执行步骤207,否则,则执行步骤206。

具体地:根据保存的认证凭证对应的序列号窗口,判断序列号是否在序列号窗口内,以及根据记录的认证凭证对应的已访问的序列号,判断序列号是否未被记录,若均为是,则判断为合法,否则,判断为不合法。

步骤206:确定业务请求是重放请求。

步骤207:确定业务请求不是重放请求,并记录该业务请求中的序列号,以及更新保存的该认证凭证对应的序列号窗口。

步骤208:处理业务逻辑。

基于上述实施例,参阅图3所示,本发明实施例中,防重放攻击装置,具体包括:

第一接收单元30,用于接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的;

第一判断单元31,用于根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效;

第二判断单元32,用于根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求。

较佳的,进一步包括:

第二接收单元33,用于接收客户端发送的登录请求;

发送单元34,用于确定所述客户端的身份校验通过后,向所述客户端返回认证凭证和序列号初始值;

保存更新单元35,用于根据预设的窗口大小和所述序列号初始值,以所述序列号初始值为中心,根据所述预设的窗口大小,生成序列号窗口,以及将所述序列号窗口内的序列号作为所述认证凭证对应的序列号,并保存所述认证凭证和所述认证凭证对应的序列号窗口。

较佳的,保存更新单元35进一步用于:

若确定所述序列号在所述序列号窗口内,则以所述序列号为中心,根据预设的窗口大小,更新保存的所述认证凭证对应的序列号窗口,并记录所述序列号,更新记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

清除单元36,用于若确定所述认证凭证不在所述预设的有效期内,则清除保存的所述认证凭证、所述认证凭证对应的序列号窗口,以及记录的所述认证凭证对应的已访问的序列号。

较佳的,进一步包括:

第三判断单元37,用于根据预设的防篡改校验方法,确定所述业务请求校验通过。

参阅图4所示,本发明实施例中,一种服务器结构示意图。

本发明实施例提供了一种服务器,该服务器可以包括处理器410(centerprocessingunit,cpu)、存储器420、输入设备430和输出设备440等,输入设备430可以包括键盘、鼠标、触摸屏等,输出设备440可以包括显示设备,如液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)等。

存储器420可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器410提供存储器420中存储的程序指令和数据。在本发明实施例中,存储器420可以用于存储上述防重放攻击方法的程序。

处理器410通过调用存储器420存储的程序指令,处理器410用于按照获得的程序指令执行:

接收客户端发送的业务请求,其中,所述业务请求中至少包括所述客户端的认证凭证和序列号,所述序列号为客户端根据上一次发送业务请求时携带的序列号和预设递增步长得到的;

根据预设的有效期,判断所述认证凭证是否在所述预设的有效期内,若是则确定所述认证凭证有效;

根据保存的所述认证凭证对应的序列号窗口,判断所述序列号是否在所述序列号窗口内,以及根据记录的所述认证凭证对应的已访问的序列号,判断所述序列号是否未被记录,若均为是,则确定所述序列号合法,并确定所述业务请求不是重放请求。

较佳的,处理器410进一步用于:

接收客户端发送的登录请求;

确定所述客户端的身份校验通过后,向所述客户端返回认证凭证和序列号初始值,并根据预设的窗口大小和所述序列号初始值,以所述序列号初始值为中心,根据所述预设的窗口大小,生成序列号窗口,以及将所述序列号窗口内的序列号作为所述认证凭证对应的序列号,并保存所述认证凭证和所述认证凭证对应的序列号窗口。

较佳的,处理器410进一步用于:

若确定所述序列号在所述序列号窗口内,则以所述序列号为中心,根据预设的窗口大小,更新保存的所述认证凭证对应的序列号窗口,并记录所述序列号,更新记录的所述认证凭证对应的已访问的序列号。

较佳的,处理器410进一步用于:

若确定所述认证凭证不在所述预设的有效期内,则清除保存的所述认证凭证、所述认证凭证对应的序列号窗口,以及记录的所述认证凭证对应的已访问的序列号。

较佳的,处理器410进一步用于:

根据预设的防篡改校验方法,确定所述业务请求校验通过。

基于上述实施例,本发明实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例中的防重放攻击方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1