重放攻击检测方法、装置、设备和存储介质与流程

专利2024-10-01  51

本申请实施例涉及计算机领域,尤其涉及一种重放攻击检测方法、装置、设备和存储介质。
背景技术
::重放攻击是网络中通信实体常常面临的一种攻击行为。在重放攻击中,攻击者首先针对一个目标主机进行窃听攻击,并抓取目标主机接收的网络数据包,然后向目标主机发送一个已经接收过的历史数据包,试图欺骗目标主机系统,破坏目标主机安全。该攻击往往威胁目标主机的一些安全相关协议数据,例如用户登录协议、密钥交换协议等。现有检测重放攻击的方法,主要包括基于系统时间同步、基于数字签名、基于区块链内部时钟。第一种检测方法是基于通信双方时间同步,即发送方和接收方系统时间保持同步一致,如果发送方数据包中的时间戳与接收方的系统时间差别超过一定阈值,或者接收方先后收到两个数据包的时间间隔超过一定阈值,则判定为重放攻击。该类方法存在被攻击者修改数据包时间戳,绕过重放检测机制的风险;而且,网络中通信双方的系统时间严格同步比较困难,且网络时间同步的时间开销较大,现实中难以实现。第二种检测方法是基于数字签名,即发送方在发送的数据包中,加入对数据包的数字签名,接收方在收到数据包时,使用发送方预先共享的验签密钥,对数据包的数字签名进行校验,如果校验失败,则认为是重放攻击。该类方法可以有效检测数据包是否被篡改,而无法直接检测数据包是否被重放,实际中重放攻击很可能不修改数据包内容而直接简单重发历史数据包,该历史数据包的签名仍然可以验证成功。第三种检测方法是基于区块链内部时钟,在一个区块链上,根据区块节点的内部时钟,验证最近时间段内的候选交易时间戳与内部时钟相比,是否在验证范围内,且候选交易标识是否在区块链节点同步的标识数据库中,以达到检测重放交易的目标。该类方法主要应用于区块链,依赖于区块链的区块节点内部时和节点同步标识数据库,使用于有限的、特定的场景。技术实现要素:本发明实施例提供了一种重放攻击检测方法、装置、设备和存储介质,能够以较低的系统开销,快速高效的检测网络数据包的重放攻击和篡改攻击行为。第一方面,本发明实施例提供了一种重放攻击检测方法,该方法包括:接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。第二方面,本发明实施例还提供了另一种重放攻击检测方法,包括:获取待发送的消息数据,以及存储的共享密钥;通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。第三方面,本发明实施例还提供了一种重放攻击检测装置,该装置包括:消息接收模块,用以接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;验证码计算模块,用于通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;查询确定模块,用于如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。第四方面,本发明实施例还提供了另一种重放攻击检测装置,该装置包括:消息获取模块,用于获取待发送的消息数据,以及存储的共享密钥;消息处理模块,用于通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;消息发送模块,用于将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。第五方面,本发明实施例还提供了一种重放攻击检测设备,该设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所述的重放攻击检测方法。第六方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例所述的重放攻击检测方法。本发明实施例中,接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到,通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码,如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。附图说明图1为本发明实施例提供的一种重放攻击检测方法的流程图;图2为本发明实施例提供的另一种重放攻击检测方法的流程图;图3为本发明实施例提供的另一种重放攻击检测方法的流程图;图4为本发明实施例提供的另一种重放攻击检测方法的流程图;图4a为本发明实施例提供的在数据队列中删除超时记录的示意图;图5为本发明实施例提供的另一种重放攻击检测方法的流程图;图6为本发明实施例提供的一种重放攻击检测装置的结构框图;图7为本发明实施例提供的另一种重放攻击检测装置的结构框图;图8为本发明实施例提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。图1为本发明实施例提供的一种重放攻击检测方法的流程图,本实施例可适用于对重放攻击进行检测,该方法可以由数据接收端计算设备来执行,具体包括如下步骤:步骤s101、接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码。数据发送端在发送消息数据时,对该消息数据进行数据处理以生成和该消息数据关联的消息验证码,将消息数据以及对应的消息验证码组合后进行发出。示例性的,以消息主体m为例,消息验证码tag的计算方式如下:tag=mac(kmac,h(m))其中,mac为安全消息验证码函数,kmac为在数据发送端存储的共享密钥,h(m)为通过单向散列函数对消息数据m进行计算得到的散列值。其中,单向散列函数可将任意长度数据计算生成l字节固定长度摘要信息b0b1b2…bl-2bl-1,包括md5输出16b摘要、sha1输出20b摘要、sha256输出32b摘要、sha512输出64b摘要等。数据发送端在生成消息验证码tag后,将该tag与消息数据m进行组装后得到消息数据{m,tag}进行发送。相应的,数据接收端即接收到消息数据{m,tag}。步骤s102、通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。其中,共享密钥在数据发送端和数据接收端均进行存储。在一个实施例中,还包括在数据发送端和数据接收端进行共享密钥传输的步骤。具体的,在数据发送端和数据接收端建立安全网络传输通道,数据发送端发送共享密钥,数据接收端接收并保存该共享密钥。在接收到消息数据后,通过安全消息验证码函数利用存储的共享密钥对消息数据中的消息主体进行计算,得到比对验证码:tag′=mac(kmac,h(m))在密码学中,安全消息验证码(mac)为通讯双方使用的完整性校验工具,是基于密钥和单向散列函数所获得的一个固定长度值。消息验证码函数形式为mac(k,h(m)),即可将输入的任意长度消息数据m和密钥k(长度通常为128/256/512比特)计算生成l字节固定长度完整性标签b0b1b2…bl-2bl-1,常用的mac算法包括hmac-md5输出16b标签、hmac-sha1输出20b标签、hmac-sha256输出32b标签、hmac-sha512输出64b标签等。步骤s103、如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。在计算出比对验证码tag’后,确定tag’和tag是否一致,如果比对发现二者不一致,则将该消息数据丢弃,不做处理。如果比对发现二者一致,则在本地存储的数据中查询是否有该消息验证码的记录,如果已经存在,则判定为重放攻击,否则判定为正常数据包。相应的,在确定为正常数据包后,对该消息验证码进行存储记录。由上述方案可知,数据传输过程中,传输的消息数据包含有消息主体以及关联的消息验证码,利用共享密钥计算得到比对验证码以进行消息数据的防篡改验证,同时通过查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息,该种重放攻击检测方法不依赖于时间同步,保证数据以防止篡改,同时可高效的进行重放攻击的确定,该种方式也局限于区块链场景,适用程度更高。图2为本发明实施例提供的另一种重放攻击检测方法的流程图,在重放攻击检测过程中引入结合了时间戳机制。如图2所示,技术方案具体如下:步骤s201、接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码。步骤s202、确定接收所述消息数据以及发送所述消息数据的时间戳差值。在一个实施例中,消息主体m包含数据内容部分以及相应的数据发送端发送该数据内容时的数据发送时间戳,即m={data,stimestamp},当数据接收端接收到该消息数据时相应的确定数据接收时间戳rtimestamp,计算数据接收时间戳与数据发送时间戳二者之间的差值δt=|rtimestamp-stimestamp|。步骤s203、判断所述时间戳差值是否小于预设时间值,如果是,则执行步骤s204,否则执行步骤s205。示例性的,该预设时间值计为t,如果δt>t,则判定为传输超时,执行步骤s205丢弃该消息数据。如果时间戳差值小于预设时间值,则执行步骤s204。步骤s204、通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。步骤s205、丢弃所述消息数据。步骤s206、判断消息验证码和比对验证码是否一致,如果是,则执行步骤s207,否则执行步骤s205。步骤s207、查询是否存在对应于所述消息验证码的数据记录,如果是,则执行步骤s208,否则执行步骤s205。步骤s208、存储所述消息验证码。由上述方案可知,确定接收所述消息数据以及发送所述消息数据的时间戳差值,判断所述时间戳差值是否小于预设时间值,如果所述时间戳差值不小于所述预设时间值,则丢弃消息数据,以剔除异常数据包,进一步完善、提升了重放攻击检测机制。图3为本发明实施例提供的另一种重放攻击检测方法的流程图,引入了哈希表存储结构。如图3所示,技术方案具体如下:步骤s301、接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码。步骤s302、通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。步骤s303、如果所述比对验证码和所述消息验证码一致,则在存储的哈希表中检索是否存在和所述消息验证码对应的键值,如果存在,则确定为重放攻击消息。其中,哈希表是根据键值(keyvalue)直接访问存储数据值(value)的数据结构。其把keyvalue映射到表中的一个位置,对存储数据值value进行访问记录,以加快查找速度。具体的,在比对验证码和消息验证码一致的情况下,在哈希表hashtable中检索是否有键key=tag的记录,如果该键记录在表中已存在,则判定为重放攻击,将该异常数据包抛弃不处理,如果该键记录在哈希表hashtable中没有找到,则判定为正常数据包。由上述方案可知,通过使用哈希表数据结构,显著提高了数据查找速度,进一步优化重放检测机制。图4为本发明实施例提供的另一种重放攻击检测方法的流程图,给出了一种降低系统开销的重放攻击检测方法,将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中,同时,将所述消息验证码和所述接收时间戳插入至缓存队列中,每隔预设时间从所述缓存队列的队首进行扫描,取出超过预设差异时间的待删除元组,在所述哈希表中删除和所述待删除元组对应的数据元素,同时在所述缓存队列中删除所述待删除元组。如图4所示,技术方案具体如下:步骤s401、接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码。步骤s402、确定接收所述消息数据以及发送所述消息数据的时间戳差值。步骤s403、判断所述时间戳差值是否小于预设时间值,如果是,则执行步骤s404,否则执行步骤s405。步骤s404、通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。步骤s405、丢弃所述消息数据。步骤s406、判断消息验证码和比对验证码是否一致,如果是,则执行步骤s407,否则执行步骤s405。步骤s407、查询是否存在对应于所述消息验证码的数据记录,如果是,则执行步骤s408,否则执行步骤s405。步骤s408、将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中。具体的,将{tag,rtimestamp}插入哈希表hashtable中。步骤s409、将所述消息验证码和所述接收时间戳插入至缓存队列中,每隔预设时间从所述缓存队列的队首进行扫描,取出超过预设差异时间的待删除元组,在所述哈希表中删除和所述待删除元组对应的数据元素,同时在所述缓存队列中删除所述待删除元组。图4a为本发明实施例提供的在数据队列中删除超时记录的示意图。在一个实施例中,数据接收端设置一缓存时间窗口w以及删除操作时间间隔n作为预设时间,如图4a所示,每个n分钟进行一次数据清理的处理操作。具体的,从缓存队列的队首进行扫描,取出超过预设差异时间t的待删除元组e1,e2,...,该预设差异时间t和缓存窗口w的关系可以是:w=2t。根据e1.tag,e2.tag,...,从哈希表hashtable中删除对应键的元素,同时从缓存队列queue中删除这些元组。由上述方案可知,通过将所述消息验证码和所述接收时间戳插入至缓存队列中,每隔预设时间从所述缓存队列的队首进行扫描,取出超过预设差异时间的待删除元组,在所述哈希表中删除和所述待删除元组对应的数据元素,同时在所述缓存队列中删除所述待删除元组,以此主动进行哈希表数据的删除,显著降低了数据接收端的系统内存开销。在上述技术方案的基础上,所述缓存时间窗口依据系统设置的最大时间差异值确定,所述预设时间根据最大容忍系统开销进行设置。图5为本发明实施例提供的另一种重放攻击检测方法的流程图,本实施例可适用于对重放攻击进行检测,该方法可以由数据发送端计算设备来执行,具体包括如下步骤:步骤s501、获取待发送的消息数据,以及存储的共享密钥。其中,该共享密钥在数据接收端也进行相应存储。步骤s502、通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码。其中,标准安全单向散列函数,可将任意长度数据计算生成l字节固定长度摘要信息b0b1b2…bl-2bl-1,包括md5输出16b摘要、sha1输出20b摘要、sha256输出32b摘要、sha512输出64b摘要等。本方案中,数据发送端在发送消息数据时,对该消息数据进行数据处理以生成和该消息数据关联的消息验证码,将消息数据以及对应的消息验证码组合后进行发出。示例性的,以消息主体m为例,消息验证码tag的计算方式如下:tag=mac(kmac,h(m))步骤s503、将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。示例性的,在生成消息验证码tag后,将该tag与消息数据m进行组装后得到消息数据{m,tag}进行发送。当数据接收端接收到消息数据{m,tag}后,通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。由上述可知,通过获取待发送的消息数据,以及存储的共享密钥,通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码,将所述消息数据以及所述消息验证码组装后发送至所述数据接收端,利用单向散列函数的计算不可逆性进行重传检测机制的构建,实现了数据的安全、防重放攻击的传输。图6为本发明实施例提供的一种重放攻击检测装置的结构框图,该装置用于执行上述数据接收端实施例提供的重放攻击检测方法,具备执行方法相应的功能模块和有益效果。如图6所示,该装置具体包括:消息接收模块101、验证码计算模块102和查询确定模块103,其中,消息接收模块101,用以接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;验证码计算模块102,用于通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;查询确定模块103,用于如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。由上述方案可知,接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到,通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码,如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。在一个可能的实施例中,还包括时间戳处理模块104,用于在通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码之前:确定接收所述消息数据以及发送所述消息数据的时间戳差值;确定所述时间戳差值是否小于预设时间值;所述验证码计算模块102具体用于:如果所述时间戳差值小于所述预设时间值,则通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。在一个可能的实施例中,所述时间戳处理模块104还用于:如果所述时间戳差值大于或等于所述预设时间值,则丢弃所述消息数据。在一个可能的实施例中,所述验证码计算模块102还用于:如果所述比对验证码和所述消息验证码不一致,则丢弃所述消息数据。在一个可能的实施例中,所述查询确定模块103具体用于:在存储的哈希表中检索是否存在和所述消息验证码对应的键值,如果存在,则确定为重放攻击消息。在一个可能的实施例中,还包括数据存储模块105,具体用于:如果在存储的哈希表中不存在和所述消息验证码对应的键值,则确定所述消息数据为正常数据包,将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中。在一个可能的实施例中,还包括队列处理模块106,用于在将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中之后:将所述消息验证码和所述接收时间戳插入至缓存队列中;每隔预设时间从所述缓存队列的队首进行扫描,取出超过预设差异时间的待删除元组,在所述哈希表中删除和所述待删除元组对应的数据元素,同时在所述缓存队列中删除所述待删除元组。在一个可能的实施例中,所述缓存时间窗口依据系统设置的最大时间差异值确定,所述预设时间根据最大容忍系统开销进行设置。在一个可能的实施例中,还包括密钥传输模块107,用于在接收数据发送端发送的消息数据之前,建立和所述数据端的安全网络传输通道,通过所述安全网络传输发送共享密钥至所述数据发送端。图7为本发明实施例提供的另一种重放攻击检测装置的结构框图,该装置用于执行上述数据发送端实施例提供的重放攻击检测方法,具备执行方法相应的功能模块和有益效果。如图7所示,该装置具体包括:消息获取模块301、消息处理模块302和消息发送模块303,其中,消息获取模块301,用于获取待发送的消息数据,以及存储的共享密钥;消息处理模块302,用于通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;消息发送模块303,用于将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。由上述方案可知,通过获取待发送的消息数据,以及存储的共享密钥,通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码,将所述消息数据以及所述消息验证码组装后发送至所述数据接收端,利用单向散列函数的计算不可逆性进行重传检测机制的构建,实现了数据的安全、防重放攻击的传输。图8为本发明实施例提供的一种重放攻击检测设备的结构示意图,如图8所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图8中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图8中以通过总线连接为例。存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的重放攻击检测方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的重放攻击检测方法。输入装置203可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种重放攻击检测方法,该方法包括:接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。本发明实施例还提供另一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种重放攻击检测方法,该方法包括:获取待发送的消息数据,以及存储的共享密钥;通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明实施例可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务,或者网络设备等)执行本发明实施例各个实施例所述的方法。值得注意的是,上述重放攻击检测装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。当前第1页1 2 3 当前第1页1 2 3 
技术特征:

1.重放攻击检测方法,其特征在于,包括:

接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;

通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;

如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。

2.根据权利要求1所述的方法,其特征在于,在通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码之前,还包括:

确定接收所述消息数据以及发送所述消息数据的时间戳差值;

确定所述时间戳差值是否小于预设时间值;

相应的,所述通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码,包括:

如果所述时间戳差值小于所述预设时间值,则通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码。

3.根据权利要求2所述的方法,其特征在于,如果所述时间戳差值大于或等于所述预设时间值,则丢弃所述消息数据。

4.根据权利要求1所述的方法,其特征在于,如果所述比对验证码和所述消息验证码不一致,则丢弃所述消息数据。

5.根据权利要求1-4中任一项所述的方法,其特征在于,所述查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息,包括:

在存储的哈希表中检索是否存在和所述消息验证码对应的键值,如果存在,则确定为重放攻击消息。

6.根据权利要求5所述的方法,其特征在于,如果在存储的哈希表中不存在和所述消息验证码对应的键值,则确定所述消息数据为正常数据包,将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中。

7.根据权利要求6所述的方法,其特征在于,在将所述消息验证码以及所述消息数据的数据接收时间戳关联存储至所述哈希表中之后,还包括:

将所述消息验证码和所述接收时间戳插入至缓存队列中;

每隔预设时间从所述缓存队列的队首进行扫描,取出超过预设差异时间的待删除元组,在所述哈希表中删除和所述待删除元组对应的数据元素,同时在所述缓存队列中删除所述待删除元组。

8.根据权利要求7所述的方法,其特征在于,所述缓存时间窗口依据系统设置的最大时间差异值确定,所述预设时间根据最大容忍系统开销进行设置。

9.根据权利要求1所述的方法,其特征在于,在接收数据发送端发送的消息数据之前,还包括:

建立和所述数据端的安全网络传输通道,通过所述安全网络传输发送共享密钥至所述数据发送端。

10.重放攻击检测方法,其特征在于,包括:

获取待发送的消息数据,以及存储的共享密钥;

通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;

将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。

11.重放攻击检测装置,其特征在于,包括:

消息接收模块,用以接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;

验证码计算模块,用于通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;

查询确定模块,用于如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。

12.重放攻击检测装置,其特征在于,包括:

消息获取模块,用于获取待发送的消息数据,以及存储的共享密钥;

消息处理模块,用于通过单向散列函数计算所述消息数据的散列值,通过安全消息验证码函数对所述共享密钥、所述散列值进行计算得到消息验证码;

消息发送模块,用于将所述消息数据以及所述消息验证码组装后发送至所述数据接收端。

13.一种重放攻击检测设备,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一项或权利要求11所述的重放攻击检测方法。

14.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-10中任一项或权利要求11所述的重放攻击检测方法。

技术总结
本发明实施例公开了一种重放攻击检测方法、装置、设备和存储介质,该方法包括:接收数据发送端发送的消息数据,所述消息数据包括消息主体以及关联的消息验证码,所述消息验证码通过安全消息验证码函数计算得到;通过所述安全消息验证码函数利用共享密钥计算得到所述消息主体的比对验证码;如果所述比对验证码和所述消息验证码一致,则查询是否存在对应于所述消息验证码的数据记录,以确定所述消息数据是否为重放攻击消息。本方案,能够以较低的系统开销,快速高效的检测网络数据包的重放攻击和篡改攻击行为。

技术研发人员:李岩;苏航
受保护的技术使用者:百果园技术(新加坡)有限公司
技术研发日:2020.12.05
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-21485.html