一种基于功能级超时配置的防止重放攻击方法与流程

文档序号:12068148阅读:326来源:国知局
一种基于功能级超时配置的防止重放攻击方法与流程

本发明涉及计算机技术领域,具体地说是一种基于功能级超时配置的防止重放攻击方法。



背景技术:

在互联网应用领域,企业对其信息系统的安全性越来越重视,尤其像注入攻击漏洞、可重放攻击漏洞等,正在不断引起企业的重视,并对信息系统的开发提出了越来越高的要求。目前流行的防重放攻击的方式基本上是在客户端将当前的时间戳进行加密后作为客户端访问指纹传输到服务端进行时间有效性判断的方式,此方式有两个主要弊端:首先,客户端不同服务的加密机制完全相同;其次,在服务端还原出请求时间戳后使用全局统一的、相对较长的超时时间进行访问的时间有效性判断。这些弊端,导致了攻击者可以实时截取访问请求后进行即时攻击、或者使用实时截取的客户端访问指纹替换计划要进行重放攻击的请求指纹的方式,绕过重放攻击检查机制,达到重放攻击的目的。

因此,提高防可重放攻击算法的安全性,是现在互联网应用开发领域亟需解决的问题。基于此,本发明提供一种基于功能级超时配置的防止重放攻击方法,采用了一套更加安全的指纹生成和服务端比对方式对原有算法进行加固,较大程度的提高了防重放攻击方法的安全性。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种高性能、有一定容错能力,且资源得到有效利用的基于功能级超时配置的防止重放攻击方法。

一种基于功能级超时配置的防止重放攻击方法,其实现过程为:

首先进行功能级超时配置,定义每一个远程服务的服务名称及其远程访问超时时间;

然后进行客户端请求加密,加入定义的服务名称进行加盐加密;

在服务端对上述加密的请求解密后,依据定义的远程服务的超时时间进行访问时间有效性判断;

服务端记录通过有效性判断的远程服务的历史指纹,该历史指纹包括服务名称、指纹内容。

所述远程访问超时时间是指从客户端发起的HTTP请求,在收到响应前允许的最大等待时间,如果超过该等待时间后,还未从服务端接收到请求,则认为本次请求因存在网络连接的问题而导致请求失效。

客户端请求加密是指将服务名称参与到客户端的请求水印加密,该加密为加盐加密,其中加盐是指根据远程服务定义的名称,在客户端请求水印的生成过程中,都加入当前访问服务的服务名称,参与加密计算。

所述加密计算是指对客户端计算出的服务端当前时间的时间戳,将时间戳与盐值进行组合之后再在服务端进行加密计算,所述盐值是指在客户端请求水印生成过程中当前访问服务的服务名称。

所述时间戳的计算过程为:当用户登录时,客户端计算并记录当前客户端和服务端的时间差,在之后的访问时,基于此时间差,在客户端计算出当前服务端的时间戳,然后将该时间戳结合加盐操作,进行加密。

在进行加密前,首先校验请求水印中的服务名称是否正确,当服务名称校验通过后,再获取时间戳和加盐操作;如果一个新请求的服务名称校验出错,则定位本次请求是重放攻击,此时拒绝服务并启动预警机制。

在进行加盐加密时,需要判断是否使用证书加密,如果使用证书加密,则通过非对称加密生成客户端访问指纹;如果不使用证书加密,则通过对称加密生成客户端访问指纹。

在服务端进行访问时间有效性判断的过程为:首先对客户端请求指纹进行解密,得到服务名称和时间戳;其次校验该请求指纹中服务名称的正确性;然后,自动将该指纹中的时间戳与该功能指定的超时时间相加,判断其合计时间是否小于服务端当前时间,如果该合计时间大于服务端当前时间,则认为本次请求无效,否则有效。

服务端记录通过有效性判断的远程服务的历史指纹时,需要先对请求的水印进行唯一性校验,然后记录:当服务端通过时间有效性校验后,继续与服务有效期内的历史指纹进行比对,以进行客户端请求水印进行唯一性校验,如果一个新请求的指纹与缓存的历史指纹相同,则定位本次请求是重放攻击,此时需要拒绝服务并启动预警机制;当客户端访问指纹通过验证后,服务端将本次通过的客户端指纹进行缓存。

当客户端访问指纹通过验证后,服务端将本次通过的客户端指纹按功能进行缓存:根据服务名称,每一个服务都设置一个独立的缓存列表,用来记录该功能的有效历史访问水印;该缓存的水印根据服务设定的超时时间进行定期清理,将超过服务超时时间的水印清理掉,只保留有效期内的缓存,作为唯一性对比的依据。

本发明的一种基于功能级超时配置的防止重放攻击方法和现有技术相比,具有以下有益效果:

本发明的一种基于功能级超时配置的防止重放攻击方法,使得用户可以通过配置不同功能的功能名称及其超时时间的方式,对客户端发起的每一次访问所生成的客户端访问指纹进行加盐加密、并在服务端进行服务名称校验、依据该服务的功能级超时间隔进行时间有效性校验、指纹唯一性校验等,从而使得攻击者通过实时截取访问请求后进行即时攻击、或者截取其他访问请求的水印替换预先截取的待重放请求水印后进行重放攻击的方式失效,进一步增加了防重放攻击方法的安全性,实用性强,适用范围广泛,易于推广。

附图说明

附图1为本发明的客户端请求指纹加密实现流程图。

附图2为本发明的服务端指纹校验流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

本发明涉及到的一种基于功能级超时配置的防止重放攻击方法,尤其适用于具有较高安全要求的企业级互联网应用开发领域。该方法主要以提高防重放攻击方法的安全性为出发点,提供了一种更加安全、有效的防重放攻击方法,通过增加功能级专有超时时间配置、功能标识参与客户端访问指纹生成、以及在服务端缓存比对有效期内的访问指纹记录的方式,改良出一套更加安全、可靠的防重放攻击方法。

实施例1:

本发明采用了一套更加安全的指纹生成和服务端比对方式对现有方法进行加固,较大程度的提高了防重放攻击方法的安全性。

其实现过程为:

一、功能级超时配置:

用于定义每一个远程服务的服务名称及其特有的远程访问超时时间,可以精确定义每一个服务的响应超时时间。

远程访问超时时间:即从客户端发起的HTTP请求,在收到响应前允许的最大等待时间。如果超过该等待时间后,还未从服务端接收到请求,则可以认为本次请求因存在网络连接的相关问题而导致请求失效。

一般来说,一个互联网应用的大部分请求都是轻量级的、能够快速返回的,即超时时间一般都可以设置的较短。但总有一些特殊请求,因服务端计算较复杂等原因使得服务端耗时较长,此时,为了避免因服务端正常运行未结束而导致客户端认为服务端超时的情况发生,这几个特殊请求都需要设置较长的超时时间。

现有系统,一般都是根据最长服务的请求超时时间确定全局统一的超时时间,这样就会导致该超时时间远超过大部分服务所需要的真实超时时间。

服务端的每一个远程服务,都应该定义其服务名称和专用的远程访问超时时间,这样才可以精确定义每一个服务的远程访问超时时间,避免了一个系统内部因存在少量的需要设置较长超时时间的服务而导致设定的全局超时时间较长的弊端。

二、服务名称参与客户端请求水印加密。

每一个远程服务都有自己的名称,在客户端请求水印的生成过程中,将当前访问服务的服务名称作为盐值,加入当前访问服务的服务名称作为加盐,对客户端计算出的服务端当前时间的时间戳进行组合之后再进行加密计算。

客户端请求指纹的加密过程如附图1客户端请求指纹加密过程所示。

在进行加密时,需要判断是否使用证书加密,如果使用证书加密,则通过非对称加密生成客户端访问指纹;如果不使用证书加密,则通过对称加密生成客户端访问指纹。

三、服务端依据特定功能的超时时间进行访问时间有效性判断。

服务端对每一个请求进行时间有效性判断时,首先会对客户端请求指纹进行解密,其次,校验该请求指纹中服务名称的正确性;然后,自动将该指纹中的时间戳与该功能指定的超时时间相加,判断其合计时间是否小于服务端当前时间。如果该合计时间大于服务端当前时间,则认为本次请求无效。此时的计算依据是该功能指定的特定超时时间,而不是现有方式采用的全局统一的超时时间。

通过步骤一的定义,我们可以为每一个服务精确设置其超时时间,使得大部分客户端访问指纹都有一个合理的、相对较短的有效期。当服务请求到来时,可以从其客户端访问指纹中提取所对应服务的服务名称并进行校验,校验通过后,服务端可以通过步骤一的配置获取到该服务的特定超时时间。并以此为依据进行时间有效性校验,大幅减少了攻击者在截获到请求后立即重放的有效时间。

四、服务端记录有效期内的历史请求水印并对新请求进行唯一性校验,服务端在每一个请求合法性校验通过后,都会将该指纹进行记录,以备后继请求进行唯一性校验。

当服务端收到一个新请求时,会首先进行服务名称校验、请求时间有效性校验,对于服务名称正确且在有效期内的请求,服务端还会再次根据所请求服务的有效期内的历史指纹进行指纹唯一性校验,以确保该指纹未被使用过。如果一个新请求的指纹与缓存的历史指纹相同,则可以确定本次请求是重放攻击请求,此时服务端会拒绝本次请求,并发送安全警报、记录审计日志等。

实施例2:

一、功能级超时配置:

用于定义每一个远程服务的服务名称及其特有的远程访问超时时间,可以精确定义每一个服务的响应超时时间。

远程访问超时时间:即从客户端发起的HTTP请求,在收到响应前允许的最大等待时间。如果超过该等待时间后,还未从服务端接收到请求,则可以认为本次请求因存在网络连接的相关问题而导致请求失效。

一般来说,一个互联网应用的大部分请求都是轻量级的、能够快速返回的,即超时时间一般都可以设置的较短。但总有一些特殊请求,因服务端计算较复杂等原因使得服务端耗时较长,此时,为了避免因服务端正常运行未结束而导致客户端认为服务端超时的情况发生,这几个特殊请求都需要设置较长的超时时间。

现有系统,一般都是根据最长服务的请求超时时间确定全局统一的超时时间,这样就会导致该超时时间远超过大部分服务所需要的真实超时时间。

服务端的每一个远程服务,都应该定义其服务名称和专用的远程访问超时时间,这样才可以精确定义每一个服务的远程访问超时时间,避免了一个系统内部因存在少量的需要设置较长超时时间的服务而导致设定的全局超时时间较长的弊端。

具体的,可以采用下述脚本代码进行配置:

<!—网络超时配置,DefaultValue为全局默认值-->

<RequestTimeout DefaultValue="120">

<!--功能级远程访问超时时间配置-->

<Services>

<!--用户配置服务的专用远程访问超时时间配置-->

<Service name="UserConfigService" value="90"/>

<!--用户保存服务的专用远程访问超时时间配置-->

<Service name="UserSaveService" value="160"/>

<!--用户启用服务的专用远程访问超时时间配置-->

<Service name="UserEnableService" value="60"/>

<!—授权数据保存服务的专用远程访问超时时间配置,请求时间较长-->

<Service name="AuthenSaveService" value="1200"/>

</excluds>

</RequestTimeout>

二、服务名称参与客户端请求水印加密和服务端校验。

每一个远程服务都有自己的名称,在客户端请求水印的生成过程中,将当前访问服务的服务名称作为盐值,加入当前访问服务的服务名称作为加盐,对客户端计算出的服务端当前时间的时间戳进行组合之后再进行加密计算。

在服务端进行请求校验时,会首先校验请求水印中的服务名称是否正确,只有服务名称校验通过后,才会进一步进行其他校验和功能访问。如果一个新请求指纹中的服务名称校验出错,则可以定位本次请求是重放攻击,此时需要拒绝服务并启动预警机制。

为了减少服务端的压力,服务端的时间戳计算是在客户端进行的,不需要向服务端请求。当用户登录时,客户端会计算并记录当前客户端和服务端的时间差,在之后的访问时,就可以基于此时间差,在客户端计算出当前服务端的时间戳。

在服务端进行请求校验时,也会首先校验请求水印中的服务名称是否正确,只有服务名称校验通过后,才会进一步进行其他校验和功能访问。如果一个新请求指纹中的服务名称校验出错,则可以定位本次请求是重放攻击,此时需要拒绝服务并启动预警机制。

这样就使得即使时间戳相同,不同服务间的客户端请求指纹也互不相同,使得不同服务的客户端请求水印互相不能通用,这就大幅度降低了攻击者通过拦截最新请求的客户端请求水印替换待攻击请求水印后进行攻击的可能性。

客户端请求指纹的加密过程如附图1客户端请求指纹加密过程所示。

在进行加密时,需要判断是否使用证书加密,如果使用证书加密,则通过非对称加密生成客户端访问指纹;如果不使用证书加密,则通过对称加密生成客户端访问指纹,其中非对称加密可以采用RSA算法,对称加密可以采用AES128算法。

三、服务端依据特定功能的超时时间进行访问时间有效性判断。

服务端对每一个请求进行时间有效性校验时,首先会对客户端请求指纹进行解密,其次,校验该请求指纹中服务名称的正确性;然后,自动将该指纹中的时间戳与该功能指定的超时时间相加,判断其合计时间是否小于服务端当前时间。如果该合计时间大于服务端当前时间,则认为本次请求无效。此时的计算依据是该功能指定的特定超时时间,而不是现有方式采用的全局统一的超时时间。

通过步骤一的定义,我们可以为每一个服务精确设置其超时时间,使得大部分客户端访问指纹都有一个合理的、相对较短的有效期。当服务请求到来时,可以从其客户端访问指纹中提取所对应服务的服务名称并进行校验,校验通过后,服务端可以通过步骤一的配置获取到该服务的特定超时时间。并以此为依据进行时间有效性校验,大幅减少了攻击者在截获到请求后立即重放的有效时间。

四、服务端记录有效期内的历史请求水印并对新请求进行唯一性校验,服务端在每一个请求合法性校验通过后,都会将该指纹进行记录,以备后继请求进行唯一性校验。

当服务端收到一个新请求时,会首先进行服务名称校验、请求时间有效性校验,对于服务名称正确且在有效期内的请求,服务端还会再次根据所请求服务的有效期内的历史指纹进行指纹唯一性校验,以确保该指纹未被使用过。如果一个新请求的指纹与缓存的历史指纹相同,则可以确定本次请求是重放攻击请求,此时服务端会拒绝本次请求,并发送安全警报、记录审计日志等。

当客户端访问指纹通过验证后,服务端会将本次通过的客户端指纹按功能进行缓存:根据服务名称,每一个服务都有一个独立的缓存列表,用来记录该功能的有效历史访问水印。这些缓存的水印会根据该服务设定的超时时间进行定期清理,将超过该服务超时时间的水印清理掉,只保留有效期内的缓存,作为唯一性对比的依据,这样即保证了唯一性校验的正确性,又保证了较小的缓存数据量和较高的唯一性校验性能。

本发明提供的一种基于功能级超时配置的防止重放攻击方法,聚焦互联网应用开发的安全领域,提供了一种更加安全高效的防重放攻击的方法。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

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