公开了一种用于处理信息的处理器和方法,其响应于在运行应用时遇到函数进入指令,使用三个散列输入参数的散列来计算进入散列值,其中输入参数之一是存储在专用寄存器中的密钥;以及响应于遇到函数退出指令,使用在计算进入散列值时所使用的相同的三个输入参数和相同的散列来计算退出散列值;以及确定进入散列值是否与退出散列值相同。是否与退出散列值相同。是否与退出散列值相同。
【技术实现步骤摘要】
【国外来华专利技术】用于计算系统中的软件指针认证的硬件支持
技术介绍
[0001]本专利技术一般地涉及信息处理和数据处理系统、处理器和存储器系统,并且更具体地涉及例如在运行软件应用时向信息处理系统、处理器和存储器子系统提供增强的安全性。
[0002]随着近来信息技术的进步和广泛使用互联网来存储和处理信息,对计算系统获取、处理、存储和传播信息提出了越来越多的需求。正在开发计算系统以增加计算机能够执行日益复杂的应用以用于商业、个人使用和娱乐的速度。总体计算机系统性能受计算机结构的每个关键元素影响,包括处理器的性能/结构、任何存储器高速缓存、输入/输出(I/O)子系统、存储器控制功能的效率、存储器设备和系统以及任何相关联的存储器接口元件的性能、以及存储器互连接口的类型和结构。
[0003]现代计算机系统通常包含若干集成电路(IC),包括可以用于处理计算机系统中的信息的处理器。由处理器处理的信息可以包括由处理器执行的计算机指令以及由处理器使用计算机指令操纵的数据。计算机指令和数据通常存储在计算机系统中的主存储器中。
[0004]防止未经授权的用户和/或恶意软件访问信息处理和数据处理系统变得越来越重要并且难以实现。在一种情况下,用户或软件应用可以被授权访问信息处理系统、处理器、寄存器文件和/或存储器子系统,但可以不是被授权具有对完整系统、所有寄存器文件或所有存储器子系统的完整访问。因此,虽然用户或软件应用被授权访问系统的部分,但是用户和/或软件应用未被授权访问整个系统、所有寄存器文件和/或所有存储器子系统。在其他情况下,用户和/或软件应用未被授权访问计算系统的任何部分、寄存器文件、和/或存储器子系统的任何部分。保护系统、寄存器文件和/或存储器子系统不被未授权用户和/或软件应用访问可能是困难的。
[0005]应用软件在调用函数时将代码指针(如函数返回地址)或数据(如局部变量值或指针变量)存储在栈中。恶意用户可利用代码漏洞(如缓冲器溢出、无边界检查的阵列访问、自由后使用和其他技术)来攻击和重写栈的内容,使得在从函数返回时,使用软件应用未预期的代码指针或数据值。这可导致劫持程序的控制流,因为返回地址不再是预期的返回目标。这有时被称为面向返回编程(ROP)攻击。这些技术还可以用于操纵软件,以便在不影响控制流的情况下访问软件程序不旨在访问的数据值及揭示秘密信息。这种类型的攻击有时被称为面向数据编程(DOP)攻击。如果可以克服这样的攻击和它们的技术以提供更安全的信息处理系统、处理器、存储器子系统和在这样的系统、设备和子系统上运行的软件应用,这将是有益的。
技术实现思路
[0006]给出本公开的
技术实现思路
以帮助理解计算机系统、计算机体系结构、处理器、其操作方法、以及软件应用的执行,包括为这样的系统、处理器、以及在这样的系统和/或设备上运行的软件应用提供更安全的操作方法的技术,并且不旨在限制本公开内容或本专利技术。本公开内容针对本领域普通技术人员。应理解,本公开的各个方面和特征可有利地在一些情况
下单独地使用,或在其他情况下与本公开的其他方面和特征组合使用。因而,可以对计算机系统、体系结构、处理器、寄存器文件、它们的操作方法和执行软件应用的方式做出变型和修改以实现不同的效果。
[0007]本公开的各方面在一个或多个实施例中提供了一种在处理器中处理数据的系统、方法、和/或计算机程序产品,其包括:响应于在运行软件程序时遇到函数调用指令,使用三个散列输入参数的散列来计算进入散列值,其中输入参数之一是存储在专用寄存器中的密钥;以及将所述进入散列值存储在第一存储器位置中。在一个方面中,第一存储器位置位于距第一通用寄存器中的栈指针的第一偏移处。实施例中的系统、方法和/或计算机程序产品还包括:将链接寄存器提供的值复制到第二通用寄存器条目中;以及将来自第二通用寄存器条目的值存储到第二存储器位置。第二存储器位置优选地位于距第一通用寄存器条目中的栈指针的第二偏移处。用于计算进入散列的三个散列参数输入可选地包括第一散列输入参数、第二散列输入参数和第三散列输入参数,第一散列输入参数是第一通用寄存器条目中的值、第二散列输入参数是第二通用寄存器条目中的值,第三散列输入参数是密钥。在一个方面中,存储密钥的专用寄存器仅在高于计算进入散列值的特权级别的特权级别中可访问。
[0008]在一个方面中,所述方法、系统和/或计算机程序产品进一步包括:响应于在运行软件应用时遇到函数退出指令,使用在计算进入散列值时所使用的相同的三个输入参数和相同的散列来计算退出散列值;以及确定进入散列值是否与退出散列值相同。在一个或多个实施例中,所述方法、系统和/或计算机程序产品进一步包括:响应于进入散列值等于退出散列值,执行函数返回,其中处理器退出函数;以及响应于进入散列值不等于退出散列值,执行陷阱中断。陷阱中断优选地将控制转移到操作系统。在进一步的方面中,响应于遇到函数退出指令:将进入散列值从第二存储器位置加载到第三通用寄存器中;将所述值从第一存储器位置加载到第二通用寄存器中;以及将所述值从第二通用寄存器移动到链接寄存器。
[0009]公开了一种用于执行软件应用中的指令的系统,包括:处理器,所述处理器具有用于执行所述指令的电路和逻辑,所述处理器包括:解码单元,所述解码单元包括用于解码所述指令的电路和逻辑;发布单元,所述发布单元包括用于接收经解码的指令并发布经解码的指令的电路和逻辑,和执行单元,所述执行单元包括用于执行由所述发布单元发布的经解码的指令的电路和逻辑,所述执行单元与专用寄存器相关联;以及非临时性计算机可读介质,所述非临时性计算机可读介质具有用其体现的程序指令,所述程序指令可由所述处理器执行以使所述处理器:响应于遇到函数进入指令,使用三个散列输入参数的散列来计算进入散列值,其中所述输入参数中的一个输入参数是存储在专用寄存器中的密钥;响应于遇到函数退出指令,使用在计算所述进入散列值时所使用的相同的三个输入参数和相同的散列来计算退出散列值;以及确定所述进入散列值是否与所述退出散列值相同。
[0010]公开了一种用于在处理器中处理数据的方法和/或系统,包括:响应于遇到函数调用指令,使用一个或多个散列输入参数的散列来计算进入散列值,其中所述输入参数中的一个输入参数是存储在专用寄存器中的密钥;响应于遇到函数返回指令,使用在计算所述进入散列值时所使用的相同的一个或多个输入参数和相同的散列来计算退出散列值;确定所述进入散列值与所述退出散列值是否相同;以及响应于所述进入散列值不等于所述退出
散列值,将控制转移到操作系统并且不执行所述返回函数指令。
[0011]根据如在附图中展示的本专利技术的示范性实施例的以下更具体的描述,本专利技术的前述和其他目的、特征以及优点将是明晰的,其中相同的附图标记一般表示本专利技术的示范性实施例的相同部分。
附图说明
[0012]当结合所提供的附图进行阅读时,将更好地理解信息处理系统、计算机系统、计算机体系结构、处理器、寄存器文件、其操作方法、和执行软件应用的方式的不同方面、特征和实施例。出于说明计算机系统、计算机体系结构、处理器、寄存器文件及其操作方法(包括本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种在处理器中处理数据的方法,所述方法包括:响应于遇到函数调用指令,使用三个散列输入参数的散列来计算进入散列值,其中所述输入参数中的一个输入参数是存储在专用寄存器中的密钥;以及将所述进入散列值存储在第一存储器位置中。2.根据权利要求1所述的方法,其中,所述第一存储器位置位于距第一通用寄存器中的栈指针的第一偏移处。3.根据权利要求1所述的方法,进一步包括:将链接寄存器提供的值复制到第二通用寄存器条目中;以及将来自所述第二通用寄存器条目的所述值存储到第二存储器位置。4.根据权利要求3所述的方法,其中,所述第二存储器位置位于距所述第一通用寄存器条目中的栈指针的第二偏移处。5.根据权利要求4所述的方法,其中,用于计算所述进入散列的所述三个散列输入参数包括第一散列输入参数、第二散列输入参数和第三散列输入参数,所述第一散列输入参数是所述第一通用寄存器条目中的所述值、所述第二散列输入参数是所述第二通用寄存器条目中的所述值,所述第三散列输入参数是所述密钥。6.根据权利要求5所述的方法,其中,存储所述密钥的所述专用寄存器仅在高于计算所述进入散列值的特权级别的特权级别中可访问。7.根据权利要求1所述的方法,进一步包括:响应于遇到函数退出指令,使用在计算所述进入散列值时所使用的相同的三个输入参数和相同的散列来计算退出散列值;以及确定所述进入散列值是否与所述退出散列值相同。8.根据权利要求7所述的方法,进一步包括:响应于所述进入散列值等于所述退出散列值,执行函数返回,其中所述处理器退出所述函数;以及响应于所述进入散列值不等于所述退出散列值,执行陷阱中断。9.根据权利要求8所述的方法,其中,所述陷阱中断将控制转移到操作系统。10.根据权利要求3所述的方法,进一步包括:响应于遇到函数退出指令:将所述进入散列值从所述第二存储器位置加载到第三通用寄存器中;将所述值从所述第一存储器位置加载到所述第二通用寄存器中;以及将所述值从所述第二通用寄存器移动到所述链接寄存器。11.根据权利要求10所述的方法,其中,用于计算所述退出散列的所述三个散列参数输入包括第一散列输入参数、第二散列输入参数和第三散列输入参数,所述第一散列输入参数是所述第一通用寄存器条目中的所述值,所述第二散列输入参数是所述第二通用寄存器条目中的所述值,所述第三散列输入参数是所述密钥。12.一种用于执行软件应用中的指令的系统,所述系统包括:处理器,所述处理器具有用于执行所述指令的电路和逻辑,所述处理器包括:解码单元,所述解码单元包括用于解码所述指令的电路和逻辑;发布单元,所述发布单元包括用于接收经解码的指令并发布经解码的指令的电路和逻
辑;和执行单元,所述执行单元包括用于执行由所述发布单元发布的经解码的指令的电路和逻辑,...
【专利技术属性】
技术研发人员:J,
申请(专利权)人:国际商业机器公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。