安全的执行上下文数据的制作方法

文档序号:15518419发布日期:2018-09-25 18:51阅读:183来源:国知局

本专利涉及数字数据处理的领域,并且更具体而言,涉及安全的处理器的领域。



背景技术:

嵌入式系统面临着不断增加的试图获取对主机装置的控制的网络攻击的风险。描述了各种各样的对嵌入式系统进行保卫的现有方案。

防病毒软件只对系统进行部分保护。这种系统依赖于这样一个假设,即,能够发现恶意软件代码的某一签名以识别出其存在。对应的点对点模式解决方案可能执行得太晚,例如,在系统已经被侵害之后执行,因为恶意软件代码有时只能是作为成功攻击的结果被识别到。此外,防病毒程序通常在存储器资源和cpu资源方面有很高的要求。这种保护及其更新很难在嵌入式系统上部署。

另一种已知方案包括保护潜在易受攻击的程序的内部机制。这种解决方案可以通过软件或者通过软件和硬件的组合而执行。硬件实现需要修改处理器架构。软件实现一般涉及操作系统,例如,通过保护作为子例程的返回地址的有限数量的敏感数据。例如,恰好在将地址返回到栈中之前增加“canary”(即,随机值),以检测溢出。如果canary被覆盖,则提出安全性异常。这种防范措施使性能变慢,因为要通过软件计算额外的验证。其还将消耗更多的存储器,因为需要存储canary。最后,一些攻击可能设法通过猜测或者揭露canary值,或甚至通过使用“任意写”破坏(其允许在不修改canary的情况下修改返回地址)而绕过所述防范措施。

另一种现有方案被称为“指针检查”,其包括检查指针溢出。指针与元信息相关联。所述元信息典型地包含起始地址以及给定指针的允许存储器区域的大小。在每个指针使用期间,对照元信息检查指针值,以检测溢出。所述实施方式可以通过软件或者通过软件和硬件解决方案的组合来执行。在所有情况下,存储器和速度开销可能是显著的。有时提出对存储器进行扩展。为了获得有效的保护,必须相应地修改处理器的架构。

另一种现有方案被称为“动态信息流跟踪”(首字母缩写dift),其旨在识别和跟踪不安全的(或者受污染的)数据。不安全的或者受污染的数据一般来自程序接口(例如,网络、用户输入)。可以由所述系统跟踪受污染数据在存储器和cpu中的传播。如果诸如程序计数器或者当前指令的安全性关键参数变得受到污染,那么dift系统认为该程序受到损害,并发出警报。该方案的主要缺陷在于难以在很好地协调性能的情况下创建有效率的传播规则(尤其是关于假阳性和假阴性的管理)。当前,dift解决方案呈现出不同的妥协。一些以很少的开销提供非常局部的保护。其它一些提供有效率的保护,但是有更加显著的开销,而且需要对硬件架构进行复杂的修改。

另一种现有方案被称为“地址空间布局随机化”(首字母缩写aslr),其包括使存储器空间随机化,从而使得更难以准确地破坏或者揭露位置未知的敏感数据。该技术一般有助于使攻击较不实际,但是一旦做出了攻击,这种技术就不再允许对攻击进行检测。

另一种现有方案被称为“控制流完整性”(首字母缩写cfi),其包括检测对流控制的修改。作为先决条件,必须预先对要确保安全的软件应用进行分析,以识别出所有可能的指令流。之后,在软件应用的执行期间,实时地对指令流进行检查。其缺陷是性能可能被显著降低。

专利文献公开了几种方案。例如,标题为“methodandarrangementforenhancingthesecurityofcriticaldataagainstmanipulation”的标记为us5771348的美国专利公开了一种通过操纵指针、代码字和对代码字的有效性检查而处理关键寄存器数据的安全性的方法。该方案呈现出局限性。

因此,需要确保嵌入式系统的安全的方法和系统,其提供对网络攻击的增强的抵抗能力,继而提供增强的安全性。



技术实现要素:

公开了一种用于监测处理器的安全性的电路,其中,所述电路被配置为:访问被配置为存储由处理器执行的软件程序的执行上下文数据的存储器;从所述执行上下文数据确定一个或多个签名;以及将所述签名与预定义签名进行比较,以监测处理器的安全性。展开部分描述了:上下文数据可以包括控制流数据,签名可以包括散列值或者相似性签名,并且在可能独立的实施例中可以通过使用例如秘密密钥(例如,随机获得的,或者通过使用物理不可克隆函数获得的)来验证签名的完整性。此外,展开部分描述了针对处理器的各种控制和反作用(retroaction)以及各种防范措施。

有利地,本发明的实施例能够针对网络攻击对嵌入式系统的安全性进行保卫。

有利地,对与软件执行相关联的显著的和/或关键的和/或敏感的数据元素、连同被保存到存储器中的所需数据进行安全备份或保存。

有利地,可以使处理器与专用于安全性特征的额外硬件(例如,根据本发明的电路)耦合。所述额外硬件尤其允许软件将关键信息连同攻击者不能伪造的签名信息和/或完整性信息一起安全地备份到存储器中。

有利地,所述电路或额外硬件允许将关键数据安全地备份到不能被其它无特权或低完整性软件访问的专用存储器或存储器区域中。

有利地,本发明的实施例通过例如使cpu能够以更高的性能刚好及时地检测到破坏而实现了硬件启用的安全性特征。

有利地,不需要在缓冲器中增加元信息。在实施例中,仅确定一个签名(例如,处理器的寄存器的校验和值或散列值),并将其增加到存储器中。

有利地,本发明的实施例在无需增加显著的开销的情况下保护了关键数据的完整性。

有利地,本发明的实施例允许处理各种数据结构,由此呈现出大的保护用例覆盖范围。

有利地,本发明的一些实施例不暗示额外的计算能力资源。

有利地,本发明的实施例能够得益于专用硬件加速。专用硬件加速实际上允许嵌入式系统中的处理器卸载以及更高的功率效率。

有利地,本发明的实施例一般不需要修改处理器的硬件架构(修改处理器的硬件架构可能是复杂且高成本的)。

有利地,尤其是与已知方案相比,本发明的实施例并未减缓处理器的性能,并且尤其是不需要执行尤其在软件中处理的验证。

有利地,本发明的实施例可以采取硬件(例如,电路或扩展)和/或软件(例如,诸如陷阱处理程序的可执行软件指令)的形式。例如,在具体实施例中,sparc处理器可以与经修改的窗口溢出陷阱处理程序和/或窗口下溢陷阱处理程序相关联。除了将寄存器的内容保存或者复制到存储器中之外,窗口溢出陷阱处理程序可以调用专用软件的特定库来计算校验和。响应于下溢陷阱处理程序,可以执行一个或多个验证(在寄存器层级上)。

附图说明

现在将参考附图通过示例的方式描述本公开的实施例,在附图中,类似的附图标记表示类似的要素,并且在附图中:

图1示出了一些保护机制;

图2示出了根据本发明的安全系统的实施例;

图3示出了根据本发明的方法的步骤的示例;

图4示出了本发明的实施例的步骤的示例,其例示了不同系统部件之间的不同交互。

具体实施方式

图1示出了一些保护机制。

处理器的寄存器100或者中央处理单元(cpu)100与存储器120通信。被执行的软件程序与用于不同函数的不同框架相关联(例如,调用框架f2132的函数f1的框架131)。为了对这些框架(执行上下文数据)进行保护,使用所谓的“canary”来保护关键或者敏感数据,包括执行上下文数据。canary字是置于缓冲器和栈上的控制数据之间的用以监测缓冲器溢出133的已知值。在缓冲器溢出时,首先受到破坏的数据通常是canary,并且因此对canary数据的验证失败是溢出的警报,之后可以例如通过使受到破坏的数据无效而对此进行处理。在本示例中,恰好在将地址返回至栈之前增加随机canary(131,132),以检测溢出。如果canary被覆盖,则提出安全性异常。

软件程序通常使用过程来编写。在受到调用时,软件程序的过程产生执行上下文数据,例如,其包括输入参数、数据和控制流信息。任选地,过程可以产生结果和/或返回值。这种过程一般被称为“函数”。

任选地,过程或函数可以被关联至存储器中的数据对象。这种过程或函数有时可以被称为“方法”。

过程的上下文,即,执行上下文数据包括有关当前过程的执行的信息。上下文可以包括(非排他性列举)诸如返回地址、栈指针、框架指针、局部变量和缓冲器、输入变元和返回值的数据。

对该上下文的破坏可以使攻击者能够修改关键数据并取得对程序的执行流的控制。

本发明的实施例提供了确保一个或多个函数的执行的上下文的安全的方法和系统。

如文中所使用的,(软件)程序指定多个可执行且有序的指令(即,指令序列)。指令可以由一个或多个处理器或者处理器(多核处理器和/或众核处理器)的核来执行。软件程序可以包括多个“函数”(又称为“方法”,它们被相继、顺次或者按照所定义顺序被调用)。

函数(或方法)需要“控制流信息”或者“控制流数据”(例如,返回地址)和/或需要在调用/返回其它函数时要保存和恢复的数据(例如,栈指针、框架指针和寄存器备份值)。有利地,可以出于安全性目的而对所述控制流数据加以利用。

在实施例中,描述了一种监测处理器的安全性的电路,其中,电路被配置为:访问被配置为存储由处理器执行的软件程序的执行上下文数据的存储器;从所述执行上下文数据确定一个或多个签名;将所述签名与预定义签名进行比较,以监测处理器的安全性。

在实施例中,电路被配置为独立于处理器(在处理器的控制之外)访问存储器。

在实施例中,电路被配置为直接从处理器(在处理器的直接控制下)或者直接从处理器部件或子部件访问上下文数据。

在实施例中,电路被配置为在运行中(on-the-fly)访问上下文数据,即,当在处理器和存储器之间,和/或在处理器和mmu之间,和/或在处理器和高速缓存存储器之间,和/或在不同层级的高速缓存存储器之间,和/或在高速缓存存储器和存储器之间,和/或在多核系统中的不同处理器核之间,和/或在属于多核系统中的不同核的不同高速缓存之间发送(或者传送或传输)所述数据时,访问上下文数据。

在实施例中,描述了一种系统,其包括处理器、电路和存储器,其中,所述处理器和电路被配置为独立地访问用于存储由处理器执行的软件程序的执行上下文数据的存储器,并基于签名对所述执行上下文数据进行比较,以确定对所述处理器的攻击。

在实施例中,描述了一种系统,其包括通过存储器(单元)互连的处理器和电路,其中,处理器被配置为执行软件程序;其中,处理器被配置为将所述软件程序的执行上下文数据发送至电路;其中,处理器被配置为从执行上下文数据识别预定义执行上下文关键数据;其中,处理器被配置为将所识别的所述预定义执行上下文关键数据发送至电路以及存储器;其中,电路被配置为从执行软件程序的处理器接收执行上下文数据;其中,电路被配置为从所发送的所述预定义执行上下文关键数据确定签名;其中,电路被配置为将所述签名复制(例如,存储、归档)到存储器中;并且其中,处理器(或电路)被配置为从存储器检索所述签名,并将所述签名与一个或多个预定义签名进行比较。

在实施例中,根据本发明的“电路”是对处理器的硬件“扩展”。

在实施例中,电路和目标处理器是关于彼此设计的和/或是一起制造的,即,是同一制品的部分(在特定配置中是连接的部分)。在一些实施例中,电路可连接到或者释放到或者附接到或者链接到或者移动到目标处理器或者紧挨着目标处理器的位置。因而,可以使用电路作为附加或外部或补充硬件(用于安全性目的或测试目的)。在实施例中,电路和处理器的关联是可逆的。在实施例中,该关联是不可逆的(意味着如果试图拆卸实体,那么电路将被毁坏)。例如,物理连接可以使用粘合剂和/或胶粘剂和/或电连接和/或磁连接。因而,可以按照各种各样的方式静态或者动态地(例如,随着时间推移)重新布置全局系统的不同部分。布置可以实际发生在2d(平面)中,但也可以发生在3d中。处理器、电路和存储器单元的布置的拓扑结构可以例如优化安全性和/或性能,例如,使访问等待时间延迟最小化。

在实施例中,电路被例示为可编程逻辑器件中的“软核”。例如,这种可编程逻辑器件包括fpga和cpld。

在实施例中,电路和目标处理器两者被例示为可编程逻辑器件中的“软核”。

在实施例中,目标处理器是与可编程逻辑阵列一起制造的,电路在运行时被实施为可编程逻辑阵列中的软核。

在实施例中,电路是与可编程逻辑阵列一起制造的,目标处理器在运行时被实施为可编程逻辑阵列中的软核。

在实施例中,电路和处理器两者是与可编程序逻辑一起制造的,电路可被配置为连接至所制造的处理器或者连接至可编程逻辑阵列中的软核处理器。

作为对仅仅将关键数据从处理器内部寄存器复制到存储器(现有技术)的超越,根据本公开的系统使用了“中间”电路。在某种程度上,该电路起着“安全港湾”的作用。其对执行上下文数据进行复制,以使得如果执行上下文数据后来或者进一步地在处理器、高速缓存或存储器中受到损害和/或攻击和/或以其它方式被破坏,那么可以从电路检索出安全副本,并且随后可以将该安全副本用于分析和后续校正操作(如果需要的话)。换言之,执行上下文数据的“附加”或“额外”或“安全”副本可以充当进一步的安全性或者退路,以检测并确定对处理器执行的攻击,并采取适当的防范措施。

替代地,电路可以被设计或者布置为保存比上下文数据的实际量更少的量的数据。这种实施例可以尤其有利于节省存储空间、通信带宽和/或计算资源。例如,随后可以检测有限量的数据来检查实际上下文数据的完整性。在实施例中,有限量的数据可以对应于执行上下文数据的部分子集,或者使用(例如但不限于)校验和算法、密码mac或hmac算法、冗余代码、错误校正或检测代码、循环冗余代码和/或turbo代码从上下文数据导出的数据集。在一些实施例中,可以使用公共密钥密码产生上下文数据的数字签名。这种适用的公共密钥密码算法可以包括但不限于rsa、dsa、ecdsa、eigamal和mceliece。有利地,所选择的密码算法可以是“后量子”密码算法(即,未遭受量子计算机的有意义的攻击或密码分析,其被设计为免受这种量子攻击)。

在实施例中,根据本发明的电路能够充当“看门狗”或“守护进程”,其能够独立于处理器起作用。如果处理器在某一点上受到损害,那么电路能够由于执行上下文数据中的分歧而检测和/或确定攻击的存在。分歧是指原始执行上下文数据中的或者所述原始执行上下文数据的子集的签名中的差异。

在实施例中,“独立”的特性是相对的而非绝对的(在某种程度上,处理器和电路共享相同的电源或能源)。在实施例中,电路完全独立于处理器(例如,其可以是来自单独的电子设备的部分,没有共同的故障点;例如,电路可以由与处理器的能源不同的能源供电)。

根据本发明的“存储器”可以被称为“存储器单元”或“存储器电路”或“数据高速缓存”。其一般是有形电子设备电路,一般在空间中是集中式的(但替代地其也可以在空间中是分布式的)。在计算机架构中,“存储器分级体系”是用于讨论性能(尤其是针对响应时间)的概念。存储器寄存器是最快的,之后是存储器高速缓存(l1到l4),之后是随机存取存储器,之后是闪速存储器,并且之后是大容量储存器(例如,ssd硬盘驱动器)。根据本发明的“存储器”可以是存储器寄存器、存储器高速缓存、随机存取存储器、闪速存储器乃至硬盘驱动器中的一者或多者,但不限于次。

存储器(或存储器单元)的性质可以是多样的。存储器可以是易失性或者非易失性,或者甚至可以将对易失性和非易失性存储器单元的使用组合。易失性存储器可以使用ram、dram(例如,ddrsdram)sram、t-ram和z-ram中的一者或多者。使用易失性存储器一般呈现出提高的读/写性能的优点,其成本/覆盖面积低于非易失性可写存储器。非易失性存储器可以使用maskrom、prom、eprom、eeprom、nvram、闪速存储器固态储存器、nvsramferammrampram中的一者或多者。使用非易失性存储器一般呈现出在重新启动和/或电力循环时允许保持先前存储的信息的优点。在实施例中,一个或多个存储器单元可以使用3dxpoint、cbram、sonos、rram、racetrack存储器、nram、millipede存储器、fjgram。在实施例中,根据本发明,存储器(或高速缓存)在处理器和电路之间被共享:对执行上下文数据和/或关键执行上下文数据进行复制并将其存储到存储器中,并且进一步对所述数据进行比较。

在本公开的上下文中,一般不要求存储器是受信任的或者是可信任的。在一些实施例中,信任可能依赖于用于生成执行上下文数据的经认证的校验和的秘密密钥(避免了伪造校验和,并且存储器篡改将是可检测的)。在一些实施例中,存储器部分地或者完全地不能受信任。在这种实施例中,存储器可以包括进一步的防卫机制,和/或可以将其结构配置为提高鲁棒性。在实施例中,“存储器”包括多个存储器(电路或单元)。存储器可以是分层的(例如,ssd高速缓存)。可以使用划分。可以从物理和/或逻辑的角度使用隔离或区域化。可以按照阻止数据破坏的方式处理访问权限。例如,可以使用mmu(存储器管理单元)。在一些实施例中,可以使用沙箱机制,由此允许将不同过程和/或特权层级的存储器空间分开。

在实施例中,处理器和(验证)电路能够在物理上和/或逻辑上访问截然不同的存储器,以使得攻击者必须能够按照一致的方式对两个存储器进行修改才能获得成功的攻击。例如,可以使用两个物理上不同的存储器单元。尽管可以使用同一物理存储器单元,但是可以使用不同的逻辑地址。在实施例中,验证电路所使用的存储器具有额外的保护机制,例如,其用于故障检测、硬件探测和硬件修改。在这种实施例中,可以提高对签名数据的完整性的保护,由此增大了攻击者执行成功攻击的难度。

在实施例中,访问在存储器和处理器之间是双向的。在实施例中,访问在存储器和处理器之间是单向的。在实施例中,访问在存储器和电路之间是双向的。在实施例中,访问在存储器和电路之间是单向的。因而能够获得不同布置。例如,在实施例中,访问在处理器和存储器之间可以是单向的,而访问在电路和存储器之间可以是双向的(这确保了数据只能躲避处理器,而电路则能够充分地与存储器交互)。

应当强调,tryptic“处理器-存储器-电路”是很多可能的物理实施方式之一。尽管所述描述几乎只考虑了单实体(一个处理器、一个存储器、一个电路),但是可以通过很多不同方式考虑和布置多个这种电路。处理器实际上可以指定处理器的(例如,来自多核处理器或者众核处理器的)一个或多个核。具体而言,处理器在空间中可以是集中式的(cpu),但是作为替代在空间中也可以是分布式的(例如,群集、服务器场等)。类似地,存储器能够指定多个存储器电路,它们在空间中是集中式或分布式的。电路还可以对应于多个电路。在实施例中,tryptic(或者方案或组件)“处理器-存储器-电路”可以是虚拟化的(部分地或者整体上),从而与其它这种tryptic组件(例如,硬件虚拟化、可编程逻辑器件)共享物理资源。

可以在使用通用tryptic处理器-存储器-电路的不同组合的较低粒度层级上使用本发明的更高层级的描述。例如,根据本发明的系统可以包括多核处理器(即,多个核)、多个存储器单元以及访问存储器单元中的一者或多者的集中式电路。

具体而言,可以按照分形(fractal)方式(未表示出)重复tryptic“处理器-存储器-电路”。例如,在其中保存(并且随后恢复)关键安全参数的特定子集的实施例中,可以伴随第一主存储器使用第二存储器,并且可以使用第二电路来从存储在第二存储器中的数据计算并保存签名。接着,存储在所述第二存储器中的特定数据可以被保存至另一存储器单元中,等等。在实施例中,tryptic“处理器-存储器-电路”可以在另一个物理、虚拟或仿真tryptic“处理器-存储器-电路”顶上被虚拟化或者仿真。

可能物理实施方式的多样性进一步呈现了不同的机会(折中/妥协),以实施针对本发明的进一步发展。除其它发展之外,可以使用统计方法(例如,在降低硬件要求的同时对给定处理器核的破坏进行统计学处理)。

在实施例中,复制执行上下文数据。在实施例中,对执行上下文数据进行置换或移动(剪切/粘贴)。

现在将讨论时间方面。

可以通过各种方式执行对执行上下文数据的采集或备份。

在实施例中,所述方法是上下文驱动的。在确定上下文的变化时,计算执行上下文数据的签名,例如,校验和。例如,如果执行上下文数据被推送至栈,那么计算并保存校验和。如果上下文被从栈拉出,那么检查或者验证所述校验和。在实施例中,软件程序之间的上下文切换能够触发对执行上下文数据的采集或接收。在操作系统处理不同的软件程序时,执行上下文数据实际上可能突然(定量地)和/或显著(定性地)改变。

在实施例中,数据采集可能是时间驱动的(例如,可以使用时钟心跳)。例如,按照预定义的时间间隔(例如,固定的、周期性的、随机的、规律的持续时间)提取或采集执行上下文数据的“快照”。通过使用一个或多个独立的电路和/或一个或多个独立的存储器单元,能够按照适当方式处理执行上下文数据的备份或采集。处理器的时钟频率能够充当用于确定数据采集频率的基础。数据采集可以是规律的或者不规律的(例如,预定义时间间隔和/或预定义界限内的随机时间间隔)。

在实施例中,数据采集可以是事件驱动的。在实施例中,例如,数据采集可以取决于可访问数据的量(例如,在超过预定义阈值时,传输或复制执行上下文数据)。在包括sparc处理器的实施例中,例如,能够在每个寄存器窗口溢出之后计算签名或校验和。替代地或此外,可以在每个寄存器窗口下溢之后检查签名或校验和。在实施例中,在离开函数之前,可以在函数调用时计算一个或多个签名(或校验和)。替代地或此外,在进入(或者重新进入)函数之前,可以在函数调用或返回、硬件或软件中断、异常、系统调用或者多任务系统上的不同任务之间的上下文切换时检查签名或校验和。在实施例中,特定的预定义数据或数据签名的存在可以触发数据采集。在实施例中,数据采集触发的粒度可能涉及一个特定的可执行指令或者指令集。在实施例中,存储器中的特定数据结构包括但不限于堆和/或链接列表和/或双链接列表和/或栈和/或fifo和/或散列表等。例如,可以在项目创建、修改和去除时触发事件驱动的签名或校验和生成和/或验证。

在实施例中,可以通过前述各方面的组合(即,取决于上下文和/或时间和/或事件)触发执行上下文数据的复制。

现在将描述其它时间方面(对执行上下文数据、签名或其组合执行的比较的发生)。

篡改(攻击者实施篡改的才能或能力)取决于多个参数。例如,其以数据的位置为条件(例如,数据是物理存储在cpu内还是cpu外,例如,在外部储存器中)。其有时还取决于正在执行的代码的部分(一般与执行时间相关,但是该关系未必是确定性的,尤其是在现代化系统上)。在一些网络攻击中,攻击者可能尝试利用发生在代码的给定部分中的存储器破坏来篡改属于代码的另一部分的数据,使得代码的该另一部分将产生期望的恶意行为。

本发明的不同实施例能够避免或阻止这种攻击。

在实施例中,处理器首先经由电路访问存储器:如果后来处理器受到损害,那么电路能够确定不匹配并且可能确定攻击。

在实施例中,可有利地在数据能够被篡改之前计算签名(和/或校验和)。可以通过处理器特定的一般离线执行的或者在装置的个性化设置阶段期间执行的学习阶段来定义一组签名。也可以加载一些预定义签名(例如,理论的或者由其它系统和处理器确定的)。还可以动态地定义一些签名(可以添加反作用反馈,以使电路更加“智能”)。电路可以被配置为具有(安全的)i/o通信,使得能够接收来自其它控制系统(例如,来自云)的签名。

在实施例中,对签名进行渐进堆栈和/或累积和/或存储。通过以渐进方式计算签名,例如,将有利地避免或者至少阻止先前的攻击场景。对安全港湾的这种渐进式确立能够(例如)在数据从处理器被传输到存储器时发生。其也可以在代码部分(执行上下文数据“属于”该代码部分或者与其对应或者相关联)的出口处构建。

在实施例中,采集处理器的正常行为并安全地存储,以用于进一步参考。更一般而言,可以使用签名执行采集,但是也可以使用其它机制;安全存储可以使用诸如认证(例如,质询-响应)、物理硬化、使用分布式系统等机制;储存器可以使用永久性(例如,不可逆)储存器或者高速缓冲(例如,短暂)储存器。

在实施例中,执行上下文数据包括控制流数据。控制流数据一般包括诸如返回地址、输入参数和寄存器的备份数据的数据。

在实施例中,签名包括散列值。签名可以是校验和或散列值。例如,散列值可以是md5签名或者sha1签名。

在实施例中,签名是相似性签名。在实施例中,可以将一方面的处理器的原始执行上下文数据与另一方面的电路的原始执行上下文数据进行比较。有利地,这种比较能够被快速地处理。

在实施例中,可以比较执行上下文数据中的数据子集。可以通过应用逻辑规则或数学函数确定这种子集。有利地,这种具体比较可以得到有效率的处理(例如,可以识别数据的预定义模式)。

在实施例中,可以对执行上下文数据中的特定或选定数据进行比较。复杂的逻辑规则(例如,能够应用于原始执行上下文数据的链式逻辑规则)有利地能够允许对执行上下文数据执行深度分析。

在实施例中,可以确定执行上下文数据的特定数据的一个或多个签名,并进一步对其进行相互比较。有利地,可以以低等待时间执行这种比较,即,对这种比较进行有效率的处理(能够识别数据的预定义已知模式)。签名的比较可以是一对多、多对一或者一对一的。在实施例中,签名为校验和或循环冗余校验(crc)或散列值或等同物。换言之,检测固有的不变性(相同的形式)。

在实施例中,签名包括相似性的量度。借助于预定义量度(阈值或差距),能够将不同组的执行上下文数据确定为等价或者几乎等同的。有利地,这种比较对于微小变化能够是鲁棒的。在(用于容错的)实施例中,签名可以使用错误校正代码(ecc)。在实施例中,可以使用校验和和/或相似性签名的组合。

将进一步讨论对执行上下文数据内的关键参数的检测。在实施例中,可以在制造期间离线学习要在ecd中检测的关键参数(即只此一次),或者可以在一些时间点上学习所述关键参数,并将其重新注入到被认为是“预定义关键参数”的参数中。这种离线识别的关键参数可以包括但不限于函数调用上下文数据(例如,返回地址和/或栈和框架指针备份)以及堆元数据。函数调用规约和堆元数据是其构造预先已知的数据的示例。

在实施例中,可以在线,即,在一个或多个运行时期间学习要在ecd中检测的关键参数。可以经由i/o接口(例如,云计算、共享数据库等)(由人和/或机器)检测、过滤以及整合这些关键参数。换言之,关键参数的列表可以是动态的(自适应的或者反应性的),即,随着时间推移而演变,其取决于(例如)执行上下文和攻击场景。可以使用一个或多个逻辑规则(例如,布尔表达式、模糊逻辑等)处理要监测其存在(或不存在)的关键参数的列表。有利地,一个或多个逻辑规则(对应于更高抽象层级的一个或多个安全性策略)可以允许确定一个或多个关键参数和/或进一步选择其数据的子集。

在实施例中,电路还被配置为验证执行上下文数据和/或其一个或多个签名的完整性。

在实施例中,可以在使用(例如,对其重新使用)之前检查或者验证执行上下文数据(及其签名)的完整性。

在实施例中,电路被配置为使用秘密密钥来认证一个或多个签名。

在实施例中,秘密密钥是包括对称加密密钥的加密密钥,对称加密密钥用于利用所述对称密钥对散列值进行密码计算和/或签名。在其它实施例中,可以使用非对称加密。在实施例中,硬件校验和函数可以包括能够用于利用存储在硬件中的密钥对校验和进行密码计算的对称密码函数。这种对称密码函数的示例包括但不限于aes、3des。在任选的实施例中,硬件校验和函数可以包括能够用于利用存储在硬件中的密钥对校验和进行签名的非对称密码函数。这种散列函数的示例包括但不限于rsa、ecdsa。

在实施例中,优选在处理器的初始化期间随机地对秘密密钥进行初始化。

在实施例中,对于在系统上运行的每个过程、线程或任务而言,秘密密钥可以是不同的。

在实施例中,秘密密钥是使用物理不可克隆函数(puf)和/或质询-响应装置生成的。

此外,执行这种完整性验证的时刻或瞬间可以发生变化。在实施例中,在重新进入其所属的代码段之前,或者当其在处理器内被移动之前对完整性进行验证。在实施例中,周期性地执行验证。在实施例中,随机执行验证。在实施例中,与软件代码的执行(例如,当验证仍在发生时使用执行数据)并行地执行验证。后一实施例可以是在成本方面有效率的,但是其将略微降低安全性(具有一定等待时间的攻击的检测保持可接受的权衡)。在实施例中,可以顺次(即,在使用上下文数据之前)执行完整性验证,或者可以与上下文数据的使用并行地执行完整性验证(例如,在多处理器的另一核上执行或者由所述另一核执行,或者在专用校验和验证电路上执行)。前述实施例的组合也是可能的(可以在一段时间内并行执行验证,并且之后变为顺次执行验证,同时在后台执行独立的周期性心跳验证)。

这种完整性验证的触发机制可以是多样的(参见与执行上下文数据的复制有关的实施例,上下文相关的、时间相关的和/或事件相关的)。

在实施例中,在hmac模式中使用秘密密钥。

hmac是一种使用秘密密钥结合散列函数来计算输入消息的认证代码的密码方法。在实施例中,硬件校验和函数可以包括能够在hmac模式中与存储在硬件中的密钥一起使用的散列函数。这种散列函数的示例包括但不限于sha-2、sha-3和md5。

在实施例中,秘密密钥分布于硬件中。

在实施例中,秘密密钥是由真随机发生器生成的。真随机数发生器(tnrg)是一种从物理过程(例如,量子力学、量子随机数发生器)而非计算机程序生成随机数的装置。

在实施例中,秘密密钥是由伪随机数发生器(软件和/或硬件)生成的。可以在生成秘密密钥之前通过trng对伪随机数发生器进行初始化。

在一些实施例中,可以在cpu初始化期间随机地对hmac密钥和/或对称密码密钥和/或非对称密码秘密密钥进行初始化。例如,可以使用来自真随机数发生器的输出。

在实施例中,将秘密密钥存储到非易失性存储器上。在一些实施例中,可以将一个或多个秘密密钥存储到芯片上的非易失性存储器中。在一些实施例中,可以使用物理不可克隆函数(首字母缩写puf)生成一个或多个秘密密钥。

在实施例中,所存储的执行上下文数据的结构包括堆、链接列表、树、表格、散列表和图表中的一者或多者。有利地,可以由根据本发明的系统操纵复杂的数据结构,而不仅仅是寄存器的值。

在实施例中,被配置为对执行上下文数据的签名进行比较的子电路是dma控制器的部分和/或处理器的总线接口的部分。

系统的不同部分能够对签名和/或(原始)执行上下文数据进行比较。在实施例中,仅处理器(根据定义被提供有处理能力)对执行上下文数据和/或其签名进行比较。在实施例中,仅电路对数据和/或签名进行比较。从如果处理器恰巧在某一点上受到危害,因而不能执行关于完整性的比较(或者完全不能执行任何比较)的意义上来讲,后一实施例是有利的;具有用于处理比较的专用电路部分也能够提供提高的性能。在实施例中,电路和处理器两者都执行比较,例如,以实现提高的故障恢复能力。后一实施例是有利的,因为其可以提供冗余,这是诸如汽车或者航空应用等一些技术领域中的重要特征。在实施例中,在处理器中或由处理器、以及在电路中或由电路单独地(两次)执行校验和/签名计算,并且可以实施另一层级的比较。在实施例中,由多个专用电路或装置执行校验和/签名计算和/或验证。

在实施例中,可以将校验和比较机制直接集成到dma控制器中。有利地,可以在存储器传输(例如,将敏感数据从安全存储器传输到外部sdram存储器)期间执行校验和值比较和相关联的比较。

在任选的实施例中,可以将校验和计算和验证机制直接集成到处理器的总线接口中,以在必要时透明地执行生成和完整性测试。例如,可以通过内部专用寄存器和/或由处理器超级用户位和/或由映射到总线上的外部寄存器和/或由专用输入信号来配置对校验和生成/验证功能的激活和停用。例如,可以由另一处理器的核对专用输入信号加以控制。

在实施例中,软件程序是可执行指令、多条可执行指令、可执行指令的线程、多个线程、任务或者软件过程中的一者或多者。

本发明的用于处理比较的粒度能够在从一条可执行指令到独立软件应用的范围内(按照粒度的增大:一条可执行指令、多条可执行指令、可执行指令的线程、可执行指令的一个或多个线程、包括多个线程的操作系统过程、任务、独立应用或“app”或“软件程序”或“应用程序”)。

在实施例中,电路被配置为控制处理器。

根据本发明的电路可以具有被动职责,但是在一些实施例中其也可以承担主动职责。例如,电路可以例如基于对执行上下文数据或其签名执行的比较而在处理器上实行某种控制。电路的控制动作可以包括以下中的一者或多者:停止、恢复、重新启动或者重新开始处理器和/或在其上执行的软件过程中的一者或多者。

实际上,基于所述比较(执行上下文数据和/或签名匹配与否)的多种多样的校正和/或先发制人的动作都是可能的。

校正和/或先发制人的动作可以包括下述中的一者或多者:什么都不做,设置标志,修改应用于或用于控制处理器的一个或多个阈值,重置处理器的一个或多个部分(暂时或者非暂时地),对处理器的一个或多个部分停用(永久性地或者非永久性地),向处理器警报预见到无资格的攻击或者暂时有资格的攻击;切断一个或多个服务和/或端口、和/或对一个或多个过程进行沙箱处理,执行积极防御(例如,通过执行预定义的防御机制),例如通过清扫存储器单元而部分地删除数据(例如,本地机密),执行对存储器内容的全局删除(例如,如果反复发生攻击),登记或者记录突发事件,上载特定数据,对连接至包含处理器的系统的装置发出警报,重新协商用户会话,中止处理器的当前执行线程,恢复、触发包括计算机的系统的软和/或硬重新启动,断开电源,对处理器进行物理破坏(例如,通过例如自毁、包裹硬件接头、记录有关信息、进一步限制当前过程/线程/任务访问权限和特权、启用额外的监测特征、启用沙箱等,来保护数据)。

在实施例中,对签名或校验和进行比较。如果校验和匹配或对应,那么处理器可以继续其(正常)执行。如果校验和不匹配,那么处理器可以停止或者继续执行。替代地,处理器可以任选触发复位和/或重新启动操作。替代地,os可以在允许其它任务继续进行的同时终止受到破坏的任务。在终止受到破坏的任务的同时,os可以存储或者向专用服务、专用装置或者服务器发送用于后续分析的额外信息,其包括(例如)受到破坏的数据和预期签名、程序中的当前位置、处理器的寄存器的状态以及存储器的状态。替代地,os可以设置标志或寄存器,并使用虚设数据来终止任务,而不通知黑客已经检测到破坏。

在实施例中,可以如安全性策略(例如,体现在逻辑规则中)中所定义的触发定制动作。定制动作可以包括停止受到破坏的软件或过程、擦除机密数据、生成安全性日志入口、以及触发系统安全性审查功能。

在实施例中,处理器可以触发安全性处理程序,以在终止过程和/或尽管受到破坏也要继续执行之前记录和/或分析事件。

在实施例中,校验和比较可以由硬件校验和函数(块)执行。在该情况下,可以通过寄存器访问比较结果,并且不匹配可以任选地在硬件中触发处理器中的安全性异常(有利地提高了性能)。

在实施例中,电路被配置为在处理器中恢复执行上下文数据。

在实施例中,随后可以从存储器向处理器恢复(部分地或者整体上)关键安全性参数,例如,执行上下文数据。例如,这可能发生在两个应用之间的上下文切换时。

在实施例中,电路能够被按需停用。

在实施例中,当在执行上下文数据和/或其签名之间的比较中检测到不匹配时触发警报。警报对于装置而言可以是局部的或者全局的。例如,可以将警报传送到操作系统层级或者负责处理安全性事件的任何部件(软件或硬件)。在一些实施例中,警报可以对人类用户使用音频、视觉和/或触觉反馈(例如,振动、声音、显示等)。也可以将警报发送到另一过程、另一装置或者服务器。

现在将描述具体实施例。

图2示出了根据本发明的安全系统的一些方面。

与前面的附图相比,系统包括额外的电路200。在一方面中,电路200被配置为接收或者收集或者检索或者拦截或者采集出自处理器的寄存器的执行上下文数据。一般对数据进行复制。可以按照不同方式触发数据复制。

在实施例中,当在指令的执行栈中检测到call指令时,由电路200触发或者控制250从寄存器到存储器251的复制。在实施例中,当在指令的执行栈中检测到ret指令时,触发或者控制从存储器到寄存器252的复制。

在实施例(sparc环境)中,在检测到窗口溢出时由电路200触发或者控制250从寄存器到存储器251的复制。在实施例中,在检测到窗口下溢时,触发或者控制从存储器到寄存器252的复制。窗口溢出/下溢是sparccpu功能事件。

在根据本发明的电路200中,从所复制的执行上下文数据中确定一个或多个签名(或者其它凭证,例如指纹、盖印)。可以使用散列函数、对称密码函数和非对称密码函数的组合来计算签名或凭证。在实施例中,通过计算所复制的数据的散列值来计算凭证。在实施例中,所使用的散列函数属于sha-2系列。在另一实施例中,散列函数属于sha-3系列。在另一实施例中,散列函数是通过对诸如aes、tdes、present的块密码或者诸如trivium、grain的流密码进行链接而构建的。在另一实施例中,使用诸如块密码或者流密码的对称密码函数和秘密密钥或者使用散列函数和秘密密钥来计算所复制的数据的签名。有利地,攻击者不能在不知道秘密密钥的情况下伪造新的签名。这种方案的示例包括但不限于hmac、cmac和gmac。在另一实施例中,使用非对称密码函数和私钥对所复制的数据进行签名。非对称密码签名方案的示例包括但不限于rsa、dsa和ecdsa。所述一个或多个签名(例如,校验和等)被存储到存储器中(或者另一存储器单元中)。

随着时间推移,执行新的指令(例如,调用函数),并继续接收执行上下文数据。之后,相应地计算并存储新的签名。

在从存储器读回所复制的数据时,对签名进行比较213。如果签名不等同,那么触发警报230(向处理器和/或操作系统和/或软件程序等)。

比较周期的持续时间和/或发生可以是可配置的。妥协或者折中是不同的。例如,更细的粒度产生更好的反应性/安全性,但是与更粗的粒度相比具有更高的资源密集性。在实施例中,每一次从存储器读回所复制的数据时都对签名进行比较。在一些其它实施例中,可以使用其它心跳或者比较时间框架。在一些实施例中,可以执行比较,以作为可执行指令、调用、框架、线程或者操作系统过程中的一者或多者上的功能。

在实施例中,根据本发明的电路包括生成签名的第一硬件电路212和验证所生成的签名的第二电路213。在实施例中,这两个电路可以是同一电路,以减小总电路尺寸。在实施例中,可以通过硬件和/或软件实施签名(校验和)生成和/或验证。在实施例中,可以完全通过软件实施这些功能。

在另一实施例中,可以使用一个或多个秘密密钥211。为了避免攻击者生成有效签名或校验和,针对关键数据计算的校验和可以使用例如存储在硬件中的秘密值。

用于密钥的存储和检索的各种实施例是可能的。储存器可以分布在硬件中,并且可以使用puf等对储存器进行保护。可以使用多种多样的数学函数。可以应用各种加密机制。在实施例中,秘密值或者“密钥”是软件所不知道的。在实施例中,在cpu初始化期间对密钥进行随机初始化。在实施例中,可以使用消息认证代码(mac)。在密码中,消息认证代码(mac)是用于认证消息(以确认信息的可靠性和完整性)的一条信息。又被称为带密钥的(密码)散列函数的mac算法采取秘密密钥和所要认证的任意长度消息作为输入,并输出mac或标志。mac值通过允许验证器的实体(拥有秘密密钥)检测消息内容的任何变化而保护消息的数据完整性及其可靠性。mac算法可以是从诸如密码散列函数(就像hmac的情况一样)的其它密码原语构建的,或者可以是从块密码算法(omac、cbc-mac和pmac)构建的。诸如umac和vmac的一些快速mac算法是基于通用散列法构建的。因而,mac算法可以是一次性mac、cmac、基于散列的消息认证代码(hmac)、mmh-badgermac、poly1305-aes、umac、vmac等中的一者或多者。

图3示出了本发明的实施例的步骤的示例。

该图尤其强调了本发明的时间方面。

首先描述离线(或第一或学习或初始化)步骤。离线步骤是能够预先执行并产生被编码到硬件可访问电路中的预定义值的那些步骤。在步骤410,执行一个软件。之后在步骤420,确定与所述执行相关联的执行上下文数据。在步骤430可以执行任选的对所述原始执行上下文数据的选择:关键执行上下文数据。在实施例中,选择与安全性有关的数据(根据一个或多个预定义标准来评估相关性)。在实施例中,执行随机选择。在实施例中,选择与当前运行的过程或任务的子集有关的所复制的数据(可以根据一个或多个阈值来确定和量化关系的质量)。可以将该选择存储到存储器220中(或者多个存储器单元中)。在步骤440确定所述执行上下文数据和/或关键/选定执行上下文数据的一个或多个签名(例如,校验和、相似性签名等)。可以在纯硬件实施例中、在混合硬件/软件实施例中、或者在纯软件实施例中执行对所述签名的处理。可以将这一个或多个签名选择连同原始数据(任选的)存储到存储器220中(或者多个存储器单元中)。

也可以连续地在线执行这些离线步骤。只要处理器执行软件程序或指令,就可以相应地累积和处理执行上下文数据。

现在将描述在线步骤。在执行一个软件时,在步骤450接收或者收集执行上下文数据。在步骤460导出其一个或多个签名。在步骤470将所述一个或多个“在线”签名与“离线”(即先前存储的)签名进行比较。如果签名被确定为是等同的(或者在差距阈值之下是类似的),那么在步骤481继续软件程序的执行(即,不提出安全性异常)。如果确定签名是不同(或者不相似度超过了差距阈值),那么中断软件程序的执行(即,提出安全异常和/或采取防范措施)。防范措施可以是对软件程序的最后部分的伪执行,从而向攻击者模仿未检测出攻击。

图4从系统的角度示出了本发明的各种实施例。该图强调了一些具体的实施例,其中,所述处理器、存储器和电路承担着具体的示范性职责。

在步骤410,响应于软件程序的执行而接收或者确定第一执行上下文数据。

在步骤420,处理器(任选地选择并且)将来自处理器的内部寄存器的关键数据写入体现在图中的电路中的校验和生成硬件函数。获得(离线,第一)签名。在步骤440将签名存储到存储器中。

在步骤450(在向电路的复制之后,或者预先,或者同时,取决于实施例)处理器将相同的执行上下文数据从处理器的内部寄存器复制到存储器,存储器存储所述数据。

稍后,在步骤460,在接收到第二执行上下文数据时,处理器计算其另一(在线,第二)签名。

在步骤480,这触发了从存储器检索先前存储的对应于第二执行上下文数据的签名。

在步骤490,然后对第一和第二签名进行比较(例如在处理器中或由处理器,或者在电路中或由电路,或者在这两者中或由这两者)。

如果第一和第二签名不匹配,那么在步骤491触发i/o警报。

如果第一和第二签名匹配,那么在步骤492将执行上下文数据恢复至处理器内部寄存器,并且能够继续对软件程序的执行。

在实施例中,在使用关键数据之前执行对签名的比较(对任何破坏的及时检测,如果适用的话)。

在实施例中,在使用所述关键数据的同时执行验证(对任何破坏的运行中检测,如果适用的话)。

所公开的方法可以采取完全硬件实施例的形式、完全软件实施例的形式或者包含硬件元件和软件元件两者的实施例的形式。完全硬件实施例在性能和功耗方面是有利的。软件实施例包括但不限于固件、常驻软件、微代码等,并且在更新能力方面是有利的。本发明可以采取可从计算机可用或者计算机可读介质访问的计算机程序产品的形式,所述计算机程序产品提供由计算机或任何指令执行系统使用的或者与之结合使用的程序代码。计算机可用或者计算机可读可以是能够包含、存储、传送、传播或者运送由指令执行系统、设备或装置使用或者与之结合使用的程序的任何设备。所述介质可以是电子、磁、光、电磁、红外或半导体系统(或设备或装置)或传播介质。

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