CN111680289B - 一种链式哈希栈运算方法及装置 - Google Patents

一种链式哈希栈运算方法及装置 Download PDF

Info

Publication number
CN111680289B
CN111680289B CN202010357761.8A CN202010357761A CN111680289B CN 111680289 B CN111680289 B CN 111680289B CN 202010357761 A CN202010357761 A CN 202010357761A CN 111680289 B CN111680289 B CN 111680289B
Authority
CN
China
Prior art keywords
stack
processor
return address
data item
target data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010357761.8A
Other languages
English (en)
Other versions
CN111680289A (zh
Inventor
陈李维
许奇臻
李锦峰
史岗
孟丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN202010357761.8A priority Critical patent/CN111680289B/zh
Publication of CN111680289A publication Critical patent/CN111680289A/zh
Application granted granted Critical
Publication of CN111680289B publication Critical patent/CN111680289B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供一种链式哈希栈运算方法及装置,该方法包括在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;将目标数据项指向下一项,得到新的目标数据项,直至处理器保留栈存满新的返回地址;若依然存在函数调用,则将处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。在函数返回时没有进入过栈中的处理器保留栈的返回地址直接用于函数返回,并用栈中取出的返回地址覆盖它。直到取出栈中的返回地址覆盖了处理器保留栈的初始数据项时,对处理器保留栈中的多个返回地址进行一次哈希校验。这种方式有效降低了处理器的功耗和性能损耗。

Description

一种链式哈希栈运算方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种链式哈希栈运算方法及装置。
背景技术
在普通的栈中,当程序运行时发生函数调用,会把返回地址依次压入栈中;在函数返回时,从栈中依次取出最上层的返回地址用于函数返回。
由于被保存到栈中的返回地址可能被攻击者篡改,最近提出了一种链式哈希栈的新型防御手段。它在硬件上添加了两个寄存器top和key,top用来保存哈希值,key用来保存哈希函数的密钥。
当调用子函数时,把哈希值和返回地址依次压入栈中。然后把密钥、哈希值和返回地址一起做哈希运算,运算结果用来更新top寄存器的值。函数调用时的计算称之为哈希值的更新运算。在函数返回时,把栈中的哈希值和返回地址一同弹出栈,并做同样的哈希运算。运算结果与top寄存器中的值做对比,称之为哈希值的校验运算。如果不同,则抛出一个异常;如果相同,则用栈中的哈希值更新top寄存器,返回到父函数中。
链式哈希栈的安全性极高,即使攻击者能任意读写内存地址空间,也无法绕过这种防御机制。然而由于函数体频繁地调用返回,需要进行大量的哈希运算。当哈希函数的运算周期较大时,导致处理器的性能损耗非常高,限制了其实用性,因此如何通过有效的方案,优化链式哈希栈运算,优化处理器的性能损耗,已经成为业界亟待解决的问题。
发明内容
本发明实施例提供一种链式哈希栈运算方法及装置,用以解决上述背景技术中提出的技术问题,或至少部分解决上述背景技术中提出的技术问题。
第一方面,本发明实施例提供一种链式哈希栈运算方法,包括:
在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;
将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
更具体地,所述方法还包括:在函数返回时,取出处理器保留栈中存储的新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,直至覆盖所述处理器保留栈中的初始数据项;
将处理器保留栈中所有返回地址进行哈希运算,将哈希运算结果与当前哈希值信息进行比较。
更具体地,所述将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址的步骤,具体包括:
获取历史哈希值信息,将所述历史哈希值信息按照处理器保留栈数目进行均分,得到均分后历史哈希值信息;
将均分后历史哈希值信息和新的返回地址进行压缩,将压缩后的地址覆盖处理器保留栈中目标数据项返回地址。
更具体地,所述将压缩后的地址覆盖处理器保留栈中目标数据项返回地址的步骤,具体包括:
将均分后历史哈希值信息存储在处理器保留栈目标数据项中的tmp字段;
将新的返回地址存储在处理器保留栈处理器保留栈目标数据项中的ra字段。
更具体地,所述在函数返回时,取出处理器保留栈中返回目标数据项存储的新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,然后将返回目标数据项指向下一项,得到新的返回目标数据项,直至覆盖所述处理器保留栈中的初始数据项的步骤,具体包括:
依次取出处理器保留栈每一项的新的返回地址,并用栈中取出的返回地址覆盖ra字段,用栈中取出的均分后历史哈希值信息覆盖tmp字段,直至覆盖所述处理器保留栈中的初始数据项。
更具体地,在所述将哈希运算结果与当前哈希值信息进行比较的步骤具体包括,所述方法还包括:
获取处理器保留栈中每一项的top字段信息,以根据所述top字段信息得到当前哈希值信息;
将当前哈希值信息和所述哈希运算结果进行校验,若校验通过,则用tmp字段覆盖top字段。
第二方面,本发明实施例提供一种链式哈希栈运算装置,包括:
暂存模块,用于在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址,直至所述处理器保留栈存满新的返回地址;
批量校验模块,用于若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述链式哈希栈运算方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述链式哈希栈运算方法的步骤。
本发明实施例提供的一种链式哈希栈运算方法及装置,在函数调用时预先存储在处理器保留栈中且没有进入过栈中的返回地址,不会被攻击者篡改,可以直接用于函数返回,返回时用栈中取出的返回地址覆盖它。当函数返回,且取出栈中的返回地址覆盖了处理器保留栈的初始数据项时,对处理器保留栈中的多个返回地址进行一次哈希校验,确认这些返回地址的完整性。这种批量更新、批量校验的方式明显地减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例所描述的错位栈和普通栈结构示意图;
图2为本发明一实施例中所描述的链式哈希栈运算方法流程示意图;
图3为本发明一实施例所描述的压缩式哈希栈布局示意图;
图4为本发明一实施例所描述的链式哈希栈运算装置结构示意图;
图5为本发明一实施例所描述的电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中所描述的方案可以是实施于一种错位栈,图1为本发明一实施例所描述的错位栈和普通栈结构示意图,如图1所示,错位栈返回地址的存储整体往上平移m个,多出来的m个保存在一个硬件缓冲区里面,这个m项的缓冲区叫做处理器保留栈reservation stack。
图2为本发明一实施例中所描述的链式哈希栈运算方法流程示意图,如图2所示,包括:
步骤S1,在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;
步骤S2,将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
具体的,本发明实施例中所描述的处理器保留栈是独立于错位栈之外的,处于一个硬件缓冲区中的独立栈,处理器保留栈中存储有返回地址和哈希值,处理器保留栈中存储的返回地址和哈希值可以是分别存储,也可以是将返回地址和哈希值压缩在一个栈中进行存储。
本发明实施例中还设定有硬件指针寄存器pos指向保留栈中下一次将被覆盖的那一项。该硬件指针寄存器初始化时为0,指向第一项。函数调用后,pos+1,指向下一项;函数返回时,用pos-1项返回,然后pos-1,指向上一项。
本发明实施例中所描述的处理器保留栈中的目标数据项是指硬件指针寄存器pos指向保留栈的那一项,在初始阶段,pos指向保留栈的最旧的那一项,然后pos+1指向下一项,得到新的目标数据项,直至处理器保留栈存满了新的返回地址,而在函数返回时,返回数据项则是通过pos-1,然后指向保留栈的下一项,得到新的目标数据项。
在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并把新的返回地址保存到pos指向的处理器保留栈那一项当中,把top寄存器的值也保存到处理器保留栈中,之后pos+1,指向下一项,直至处理器保留栈存满了新的返回地址,且继续调用子函数时,才对保留栈中的返回地址和哈希值进行哈希计算,得到当前哈希值信息,将当前哈希值信息更新到top寄存器中。
当哈希值更新运算尚未结束而pos不等于0时,函数的调用不阻塞流水线,存入栈中的哈希值也没用。只有当pos等于0且上一次的更新运算尚未结束时,由于上一次的计算结果是这一次哈希运算的输入,才需要阻塞流水线。
本发明实施例通过在函数调用时预先存储在处理器保留栈中且没有进入过栈中的返回地址,不会被攻击者篡改,可以直接用于函数返回,返回时用栈中取出的返回地址覆盖它。当函数返回,且取出栈中的返回地址覆盖了处理器保留栈的初始数据项时,对处理器保留栈中的多个返回地址进行一次哈希校验,确认这些返回地址的完整性。这种批量更新、批量校验的方式明显地减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
在上述实施例的基础上,所述方法还包括:在函数返回时,取出处理器保留栈中存储的新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,直至覆盖所述处理器保留栈中的初始数据项;
将处理器保留栈中所有返回地址进行哈希运算,将哈希运算结果与当前哈希值信息进行比较。
在函数调用时预先存储在处理器保留栈中且没有进入过栈中的返回地址,不会被攻击者篡改,可以直接用于函数返回,返回时用栈中取出的返回地址覆盖它。当函数返回,且取出栈中的返回地址覆盖了处理器保留栈的初始数据项时,对处理器保留栈中的多个返回地址进行一次哈希校验,确认这些返回地址的完整性。这种批量更新、批量校验的方式明显地减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
具体的,函数返回时,取出处理器保留栈中pos-1项的新的返回地址用于函数返回,而从栈上取出的返回地址覆盖保留栈pos-1项的内容,之后pos-1。如果pos等于1,栈中取出的返回地址覆盖保留栈第0项后,把栈中和该返回地址相邻的历史哈希值取出,与保留栈里所有的返回地址一起送入哈希模块运算,将哈希运算结果与top寄存器中的哈希值信息进行比较,若相等,则把历史哈希值信息覆盖Top寄存器的值,此时Top寄存器和保留栈里所有的返回地址均保证了未被篡改;如果不等,则报错。
本发明实施例在函数返回时,也实现了一次哈希处理器保留栈中的多个返回地址,明显的减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
在上述实施例的基础上,所述将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址的步骤,具体包括:
获取历史哈希值信息,将所述历史哈希值信息按照处理器保留栈数目进行均分,得到均分后历史哈希值信息;
将均分后历史哈希值信息和新的返回地址进行压缩,将压缩后的地址覆盖处理器保留栈中目标数据项返回地址。具体的,本发明实施例中将哈希值分成n份,采用压缩结构,将哈希值分块和返回地址一同存储到栈中,高位当做Top寄存器,从而节省硬件寄存器。图3为本发明一实施例所描述的压缩式哈希栈布局示意图,如图3所示,返回地址和哈希值分块同步存储在同一栈中。
本发明实施例中压缩结构的存储存在多种预设字段,RA字段用于分别存储返回地址,tmp字段用于存储均分后的历史哈希值信息,top字段用于存储当前哈希值信息。
以RISC-V架构为例,具体方案如下:
保留栈每一项为64位的寄存器,低40位用来保存返回地址(RISC-V只用40位的返回地址),称之为RA字段,第40到第51位用来保存临时的哈希值,可能是要存入栈中的,也可能是从栈中取出的,称之为tmp字段,第52到第63位称之为top字段,所有项的top字段构成Top寄存器。
在函数调用时,若pos为0,则把所有Top字段赋值给其对应的tmp字段,同时把所有Top字段和RA字段送入哈希模块,进行哈希值的更新运算,运算结果分段更新Top字段。把第0项的tmp字段和RA字段拼接后存入栈中,然后当前栈帧的返回地址的低40位覆盖RA字段。若pos不等于0,则把tmp字段和RA字段拼接后存入栈中,当前栈帧的返回地址的低40位覆盖RA字段,不需要进行哈希值的更新运算。
在上述实施例的基础上,所述在函数返回时,取出处理器保留栈中存储新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,直至覆盖所述处理器保留栈中的初始数据项的步骤,具体包括:
依次取出处理器保留栈每一项中ra字段的新的返回地址,并用栈中取出的返回地址覆盖所述新的返回地址,用栈中取出的均分后历史哈希值信息覆盖tmp字段,直至覆盖所述处理器保留栈中的初始数据项。
函数返回时,处理器保留栈中取出的哈希值和返回地址分别覆盖tmp字段和RA字段。当pos等于1时,取出第0项的返回地址返回,栈中数据覆盖相应字段后,把所有tmp字段和RA字段送入哈希模块,进行哈希值的校验运算,运算结果与所有Top字段的拼接值进行对比。如果相等,则说明所有的tmp字段和RA字段均可信,并将tmp字段分别覆盖其对应的Top字段。
本发明实施例通过在函数调用时的返回地址预先存储在处理器保留栈中,且预先存储在处理器保留栈中的返回地址没有进入过栈中,不会被攻击者,然后通过一次哈希处理器保留栈中的多个返回地址,明显的减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
在本发明另一实施例中,当哈希值的校验运算尚未结束时:如果调用子函数,要进行哈希值的更新运算,则终止正在进行的校验运算,将tmp字段和RA字段存入栈中,当前栈帧的返回地址低40位覆盖该RA字段,不进行哈希值的更新运算,不需要将Top字段覆盖tmp字段。这样可以减少了流水线的停顿。这是因为校验运算时,Top值是可信的。如果校验完再进行更新运算,结果还是只有Top值和第0项的返回地址可信;这与终止校验运算直接保存新的返回地址的结果是一样的。
如果函数返回,按之前的方案进行,可以用保留栈的返回地址直接返回。尽管这些返回地址还在被校验,不知是否可信,但当校验运算结束时,也就知道是否被篡改了,时间上延迟了若干个时钟周期而已。如果它连续返回到pos等于1时,则不可继续返回了,因为需要等待前一次校验运算完成。特别的,如果返回几次,又再调用几次子函数,直到pos又等于0且校验运算还未结束时,就不能像第一点一样结束运算,而是应该等待校验运算完成再进行更新运算。
图4为本发明一实施例所描述的链式哈希栈运算装置结构示意图,如图4所示,包括:暂存模块410和批量校验模块420;其中,暂存模块410用于在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;其中,批量校验模块420用于将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
本发明实施例提供的装置是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。
本发明实施例通过在函数调用时的返回地址预先存储在处理器保留栈中,且预先存储在处理器保留栈中的返回地址没有进入过栈中,不会被攻击者,然后通过一次哈希处理器保留栈中的多个返回地址,明显的减少了哈希运算次数,有效降低了处理器的功耗和性能损耗。
图5为本发明一实施例所描述的电子设备结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储服务器指令,该计算机指令使计算机执行上述各实施例提供的方法,例如包括:在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种链式哈希栈运算方法,其特征在于,包括:
在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址;
将目标数据项指向下一项,得到新的目标数据项,直至所述处理器保留栈存满新的返回地址;若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
2.根据权利要求1所述链式哈希栈运算方法,其特征在于,所述方法还包括:
在函数返回时,取出处理器保留栈中返回目标数据项存储的新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,然后将返回目标数据项指向下一项,得到新的返回目标数据项,直至覆盖所述处理器保留栈中的初始数据项;
将处理器保留栈中所有返回地址进行哈希运算,将哈希运算结果与当前哈希值信息进行比较。
3.根据权利要求2所述链式哈希栈运算方法,其特征在于,所述将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址的步骤,具体包括:
获取历史哈希值信息,将所述历史哈希值信息按照处理器保留栈数目进行均分,得到均分后历史哈希值信息;
将均分后历史哈希值信息和新的返回地址进行压缩,将压缩后的地址覆盖处理器保留栈中目标数据项返回地址。
4.根据权利要求3所述链式哈希栈运算方法,其特征在于,所述将压缩后的地址覆盖处理器保留栈中目标数据项返回地址的步骤,具体包括:
将均分后历史哈希值信息存储在处理器保留栈目标数据项中的tmp字段;
将新的返回地址存储在处理器保留栈处理器保留栈目标数据项中的ra字段。
5.根据权利要求4所述链式哈希栈运算方法,其特征在于,所述取出处理器保留栈中返回目标数据项存储的新的返回地址用于函数返回,并用栈中取出的返回地址覆盖所述新的返回地址,然后将返回目标数据项指向下一项,得到新的返回目标数据项,直至覆盖所述处理器保留栈中的初始数据项的步骤,具体包括:
依次取出处理器保留栈每一项的新的返回地址,并用栈中取出的返回地址覆盖ra字段,用栈中取出的均分后历史哈希值信息覆盖tmp字段,直至覆盖所述处理器保留栈中的初始数据项。
6.根据权利要求4所述链式哈希栈运算方法,其特征在于,在所述将哈希运算结果与当前哈希值信息进行比较的步骤具体包括,所述方法还包括:
获取处理器保留栈中每一项的top字段信息,以根据所述top字段信息得到当前哈希值信息;
将当前哈希值信息和所述哈希运算结果进行校验,若校验通过,则用tmp字段覆盖top字段。
7.一种链式哈希栈运算装置,其特征在于,包括:
暂存模块,用于在函数调用时,将处理器保留栈中目标数据项返回地址保存到栈中,并用新的返回地址覆盖处理器保留栈中目标数据项返回地址,直至所述处理器保留栈存满新的返回地址;
批量校验模块,用于若依然存在函数调用,则将所述处理器保留栈中保存的所有返回地址进行批量哈希运算,得到当前哈希值信息。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述链式哈希栈运算方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述链式哈希栈运算方法的步骤。
CN202010357761.8A 2020-04-29 2020-04-29 一种链式哈希栈运算方法及装置 Active CN111680289B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010357761.8A CN111680289B (zh) 2020-04-29 2020-04-29 一种链式哈希栈运算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010357761.8A CN111680289B (zh) 2020-04-29 2020-04-29 一种链式哈希栈运算方法及装置

Publications (2)

Publication Number Publication Date
CN111680289A CN111680289A (zh) 2020-09-18
CN111680289B true CN111680289B (zh) 2023-04-14

Family

ID=72433924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010357761.8A Active CN111680289B (zh) 2020-04-29 2020-04-29 一种链式哈希栈运算方法及装置

Country Status (1)

Country Link
CN (1) CN111680289B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579988B (zh) * 2020-12-10 2022-12-06 海光信息技术股份有限公司 影子栈数据完整性保护方法、装置和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000029937A2 (en) * 1998-11-16 2000-05-25 Insignia Solutions Plc Computer system, computer-readable storage medium and method of operating same, and method of operating that system
CN110362503A (zh) * 2019-06-26 2019-10-22 中国科学院信息工程研究所 链式哈希栈的优化方法及优化系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138263A1 (en) * 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000029937A2 (en) * 1998-11-16 2000-05-25 Insignia Solutions Plc Computer system, computer-readable storage medium and method of operating same, and method of operating that system
CN110362503A (zh) * 2019-06-26 2019-10-22 中国科学院信息工程研究所 链式哈希栈的优化方法及优化系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
支持程序无缝切换的高性能硬件堆栈;陈志坚等;《浙江大学学报(工学版)》(第09期);全文 *

Also Published As

Publication number Publication date
CN111680289A (zh) 2020-09-18

Similar Documents

Publication Publication Date Title
US20220171627A1 (en) Systems and methods for performing matrix compress and decompress instructions
CN109117183B (zh) 人工智能处理器及使用处理器执行向量交换指令的方法
EP3798928A1 (en) Deep learning implementations using systolic arrays and fused operations
US10963246B2 (en) Systems and methods for performing 16-bit floating-point matrix dot product instructions
CN107832062B (zh) 一种程序更新方法及终端设备
US11663006B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
CN108009126B (zh) 一种计算方法及相关产品
CN108121688B (zh) 一种计算方法及相关产品
EP4105778A1 (en) Systems and methods to skip inconsequential matrix operations
CN108108190B (zh) 一种计算方法及相关产品
US20200210188A1 (en) Systems and methods for performing matrix row- and column-wise permute instructions
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
EP3716054A2 (en) Interleaved pipeline of floating-point adders
CN111159329A (zh) 敏感词检测方法、装置、终端设备和计算机可读存储介质
CN110363006B (zh) 多链哈希栈结构及检测函数返回地址被篡改的方法
US5416911A (en) Performance enhancement for load multiple register instruction
CN111680289B (zh) 一种链式哈希栈运算方法及装置
CN112395093A (zh) 多线程数据处理方法、装置、电子设备及可读存储介质
CN107943756B (zh) 一种计算方法及相关产品
CN107957977B (zh) 一种计算方法及相关产品
CN107870780B (zh) 数据处理装置和方法
CN110362503B (zh) 链式哈希栈的优化方法及优化系统
CN115905040B (zh) 计数器的处理方法、图形处理器、设备及存储介质
WO2022134426A1 (zh) 可重构处理器中的指令分发方法、系统以及存储介质
US20220197653A1 (en) Processors, methods, systems, and instructions to select and store data elements from strided data element positions in a first dimension from three source two-dimensional arrays in a result two-dimensional array

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant