NOP雪橇防御的制作方法

文档序号:23068015发布日期:2020-11-25 17:55阅读:104来源:国知局
NOP雪橇防御的制作方法



背景技术:

物联网(“iot”)通常是指能够通过网络进行通信的设备的系统。该设备可以包括日常用品,诸如烤面包机、咖啡机、恒温器系统、洗衣机、干衣机、灯、汽车等。网络通信可用于设备自动化、数据捕获、提供警报、设置个性化以及许多其他应用。

附图说明

提供本

技术实现要素:
以用简化形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

简要地说,所公开的技术通常涉及针对防止未授权代码。在该技术的一个示例中,检测到对存储器的受限区域的读请求。在一些示例中,读取请求与第一处理器相关联。在一些示例中,响应于检测到对存储器的受限区域的读请求,提供了响应于第一处理器的执行而导致异常的数据值。

在阅读和理解附图和描述之后,将理解所公开技术的其他方面和应用。

附图说明

参考以下附图描述了本公开的非限制性和非穷举性示例。在附图中,除非另外指明,否则贯穿各个附图,类似的附图标记表示类似的部分。这些附图不一定按比例绘制。

为了更好地理解本公开,将参考以下具体实施方式,该详细描述将结合附图进行阅读,在附图中:

图1是示出了在其中可以采用本技术的方面的合适环境的一个示例的框图;

图2是示出了根据所公开的技术的方面的合适的计算设备的一个示例的框图;

图3是示出了用于设备安全性的系统的示例的框图;

图4是示出了用于设备安全性的设备的示例的框图;以及

图5是示出了根据本公开的方面的用于针对设备安全性的过程的示例数据流的图。

具体实施方式

以下描述提供了特定的细节,以用于对技术的各种示例的透彻理解和实现针对技术的各种示例的描述。本领域技术人员将理解,可以在没有许多这些细节的情况下实践该技术。在某些情况下,没有示出或详细描述众所周知的结构和功能,以避免不必要地使技术示例的描述不清楚。意图是本公开中使用的术语以其最宽泛的合理方式来解释,即使其与该技术的某些示例的详细描述结合使用。尽管下面可能会强调某些术语,但旨在以任意受限方式解释的任意术语将在本具体实施方式部分中公开且明确地定义。在整个说明书和权利要求书中,除非上下文另外指出,否则以下术语至少采用本文明确关联的含义。下面标识的含义不一定限制这些术语,而仅提供这些术语的示意性示例。例如术语“基于”和“根据”中的每一个都不是排他的,并且等效于术语“至少部分地基于”,并且包括基于其他因素的选择,在此不做描述。作为另一示例,术语“经由”不是排他的,并且等效于术语“至少部分地经由”,并且包括通过附加因素的选择,其中一些可能在本文中未描述。“在...中”的含义包括“在...中”和“在...上”。在本文使用的短语“在一个实施例中”或“在一个示例中”不一定指相同的实施例或示例,尽管它可以。特定的文本数字标记的使用并不意味着存在值较小的数字标记。例如记载“从由第三foo和第四bar组成的组中选择的小部件”本身并不意味着存在至少三个foo,也不意味着至少存在四个bar元素。单数形式的引用仅是为了阅读的清楚,并且包括复数引用,除非特别地排除了复数引用。除非另外明确指出,否则术语“或”是包含性的“或”运算符。例如短语“a或b”表示“a、b或a和b”。如本文所使用的,术语“组件”和“系统”旨在涵盖硬件、软件或硬件和软件的各种组合。因此,例如系统或组件可以是过程、在计算设备执行进程、、计算设备或其一部分上。

简要地说,所公开的技术通常涉及针对未授权代码的保护。在该技术的一个示例中,检测到对存储器的受限区域的读请求。在一些示例中,读请求与第一处理器相关联。在一些示例中,响应于检测到对存储器的受限区域的读请求,提供了响应于第一处理器的执行而导致异常的数据值。在一些示例中,这导致防止执行雪橇(“sled”)(包括nop雪橇)。

处理器可能容易受到nop雪橇(也称为nop滑动和nop斜坡)攻击,例如一系列nop(无操作)指令的使用意味着每当程序分支到滑动上任意位置的存储器地址时,就将cpu的指令执行流“滑动”到其最终的所需目的地。本公开的一些示例提供针对未授权代码的保护。在一些示例中,响应于对存储器的受限区域做出的读请求,提供了数据值,该数据值响应于所执行的执行将在发出读取请求的处理器中导致异常,从而防止nop滑动或其他类型的执行滑动。

示意性设备/操作环境

图1是可以在其中实践技术各方面的环境100的图。如图所示,环境100包括经由网络130连接的计算设备110以及网络节点120。即使在图1中示出了环境100的特定组件,在其他示例中,环境100也可以包括附加的和/或不同的组件。例如在某些示例中,环境100还可以包括网络存储设备、维护管理器和/或其他合适的组件(未示出)。图1中所示的计算设备110可以在各种位置,包括本地、在云中等。例如计算机设备110可以在客户端侧、在服务器侧等。

如图1所示,网络130可以包括一个或多个网络节点120,这些节点互连多个计算设备110,并将计算设备110连接到外部网络140,例如因特网或企业内部网。例如网络节点120可以包括交换机、路由器、集线器、网络控制器或其他网络元件。在某些示例中,计算设备110可以被组织成机架、动作区域、组、集合或其他合适的分区。例如在所示的示例中,计算设备110被分组为三个分别标识为第一、第二和第三主机集合112a-112c的主机集合。在所示示例中,每个主机集合112a-112c分别可操作地耦合到对应的网络节点120a-120c,其通常被称为“机架顶部”或“tor”网络节点。tor网络节点120a-120c然后可以可操作地耦合到附加网络节点120,以形成分层的、平面的、网状的或其他合适类型的拓扑的计算机网络,该计算机网络允许计算设备110与外部网络140之间的通信。在其他示例中,多个主机集合112a-112c可以共享单个网络节点120。计算设备110实际上可以是任意类型的通用或专用计算设备。例如这些计算设备可以是诸如台式计算机、膝上型计算机、平板计算机、显示设备、照相机、打印机或智能手机的用户设备。但是,在数据中心环境中,这些计算设备可以是服务器设备,例如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机。此外,计算设备110可以被单独地配置为提供计算、存储和/或其他合适的计算服务。

在一些示例中,一个或多个计算设备110是iot设备,包括一部分或全部iot支持服务的设备,包括一部分或全部应用后端的设备等,如下面更详细讨论的。

示意性计算设备

图2是示出了其中可实践本技术的各方面的计算设备200的一个示例的图。计算设备200实际上可以是任意类型的通用或专用计算设备。例如计算设备200可以是诸如台式计算机、膝上型计算机、平板计算机、显示设备、照相机、打印机或智能电话的用户设备。同样地,计算设备200也可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机,例如计算设备200可以是图1的计算设备110或网络节点120的示例。计算设备200也可以是连接到网络以接收iot服务的iot设备。同样,计算机设备200可以是图3-5中示出或参考的任意设备的示例,如下面更详细地讨论的。如图2所示,计算设备200包括处理电路210、操作存储器220、存储器控制器230、数据存储存储器250、输入接口260、输出接口270和网络适配器280。计算设备的这些先前列出的每个组件200包括至少一个硬件元件。

计算设备200包括至少一个处理电路210,其被配置为执行指令,诸如用于实现本文描述的工作负载、过程或技术的指令。处理电路210可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任意其他电路。处理电路210是核的示例。前述指令以及其他数据(例如数据集合、元数据、操作系统指令等)可以在计算设备200的运行时间期间被存储在操作存储器220中。操作存储器220还可以包括多种数据存储设备/组件中的任意一种,诸如易失性存储器、半易失性存储器、随机存取存储器、静态存储器、高速缓存、缓冲区或用于存储运行时信息的其他介质。在一个示例中,当计算设备200断电时,操作存储器220不保留信息。相反,计算设备200可以被配置为作为引导或其他加载过程的一部分,将指令从非易失性数据存储组件(例如数据存储组件250)传递到操作存储器220。在一些示例中,可以采用其他形式的执行,诸如直接从数据存储组件250执行,例如现场执行(xip)。

操作存储器220可以包括第四代双倍数据速率(ddr4)存储器、第三代双倍数据速率(ddr3)存储器、其他动态随机存取存储器(dram)、高带宽存储器(hbm)、混合存储器立方体存储器、3d-堆叠存储器、静态随机存取存储器(sram)、磁阻随机存取存储器(mram)、伪随机随机存取存储器(psram)或其他存储器,并且此类存储器可以包括集成到dimm、simm、sodimm、已知合格晶片(kgd)或其他包装上的一个或多个存储器电路。可以根据通道、列(“rank”)和存储体(“bank”)来组织这样的操作存储模块或设备。例如操作存储器设备可以经由存储器控制器230在通道中耦合到处理电路210。计算设备200的一个示例可包括每个通道一个或两个dimm,其中每个通道一个或两个列。列内的操作存储器可以使用共享时钟、共享地址和命令总线进行操作。而且,操作存储设备可以被组织为几个存储体,其中存储体可以被认为是由行和列寻址的阵列。基于操作存储器的这种组织,操作存储器内的物理地址可以由通道、列、存储体、行和列的元组来引用。

尽管进行了上述讨论,但是操作存储器220特别地不包括或不涵盖通信介质、任意通信介质或任意信号本身。

存储器控制器230被配置为将处理电路210对接到操作存储器220。例如存储器控制器230可以被配置为在操作存储器220和处理电路210之间对接命令、地址和数据。存储器控制器230也可以被配置为从处理电路210或为处理电路210抽象化或以其他方式管理存储器管理的某些方面。尽管将存储器控制器230示为与处理电路210分离的单个存储器控制器,但在其他示例中,可以采用多个存储器控制器,一个或多个存储器控制器可以与操作存储器220等集成。此外,可以将一个或多个存储器控制器集成到处理电路210中。这些和其他变型是可能的。

在计算设备200中,数据存储存储器250、输入接口260、输出接口270和网络适配器280通过总线240被对接到处理电路210。尽管图2将总线240示为单个无源总线,但其他配置,诸如总线的集合、点对点链接的集合、输入/输出控制器、桥接器、其他接口电路或其任意集合也可以适当地用于将数据存储存储器250、输入接口260、输出接口270或网络适配器280对接到处理电路210。

在计算设备200中,数据存储存储器250用于长期非易失性数据存储。数据存储存储器250可以包括各种非易失性数据存储设备/组件中的任意一个,诸如非易失性存储器、磁盘、磁盘驱动器、硬盘驱动器、固态驱动器或可以用于信息的非易失性存储的任意其他介质。然而,数据存储存储器250具体地不包括或不涵盖通信介质、任意通信介质或任意信号本身。与操作存储器220相反,数据存储存储器250被计算设备200采用以用于非易失性长期数据存储,而不是用于运行时数据存储。

此外,计算设备200可以包括或耦合到任意类型的处理器可读介质,诸如处理器可读存储介质(例如操作存储器220和数据存储存储器250)和通信介质(例如通信信号和无线电波)。尽管术语“处理器可读存储介质”包括操作存储器220和数据存储存储器250,但在整个说明书和权利要求书中,无论是单数还是复数形式,术语“处理器可读存储介质”都在本文中被定义,使得术语“处理器可读存储介质”具体排除并且不涵盖通信介质、任意通信介质或任意信号本身。但是,术语“处理器可读存储介质”的确涵盖处理器高速缓存、随机存取存储器(ram)、寄存器存储器和/或类似物。

计算设备200还包括输入接口260,其可以被配置为使计算设备200能够从用户或其他设备接收输入。另外,计算设备200包括输出接口270,其可以被配置为提供来自计算设备200的输出。在一个示例中,输出接口270包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置为绘制用于在单独的视觉显示设备(例如监测器、投影仪、虚拟计算客户端计算机等)上进行呈现的显示。在另一个示例中,输出接口270包括视觉显示设备,并且被配置为绘制和呈现用于观看的显示。在又一个示例中,输入接口260和/或输出接口270可以包括通用异步接收器/发送器(“uart”)、串行外围设备接口(“spi”)、集成电路间(“i2c”)、通用输入/输出(gpio)等。此外,输入接口260和/或输出接口270可以包括或对接到任意数量或类型的外围设备。

在所示的示例中,计算设备200被配置为经由网络适配器280与其他计算设备或实体进行通信。网络适配器280可包括有线网络适配器,例如以太网适配器、令牌环适配器或数字订户线路(dsl)适配器。网络适配器280还可包括无线网络适配器,例如wi-fi适配器、蓝牙适配器、zigbee适配器、长期演进(lte)适配器、sigfox、lora、电力线或5g适配器。

尽管示出了具有以特定布置配置的某些组件的计算设备200,但是这些组件和布置仅仅是其中可以采用该技术的计算设备的一个示例。在其他示例中,数据存储存储器250、输入接口260、输出接口270或网络适配器280可以直接耦合至处理电路210、或者经由输入/输出控制器、桥或其他接口电路来耦合至处理电路210。该技术的其他变化是可能的。

计算设备200的一些示例包括适于存储运行时数据的至少一个存储器(例如操作存储器220)和适于执行处理器可执行代码的至少一个处理器(例如处理单元210),该处理器可执行代码响应于执行,使计算设备200能够执行动作。

示意性系统

图3是示出用于设备安全性的系统(300)的示例的框图。系统300可以包括网络330以及都连接到网络330的iot支持服务351、iot设备341和342以及应用后端313。

术语“iot设备”是指旨在利用iot服务的设备。iot设备实际上可以包括连接到网络以使用iot服务的任意设备,包括用于遥测收集或任意其他目的。iot设备包括可以连接到网络以利用iot服务的任意设备。在各种示例中,iot设备可以与云、对等体或本地系统或两者的组合或对等体和本地系统和云进行通信,或以任意其他合适的方式进行通信。iot设备可以包括日常用品,诸如烤面包机、咖啡机、恒温器系统、洗衣机、烘干机、灯、汽车等。iot设备还可以包括例如“智能”建筑物中的各种设备,包括灯、温度传感器、湿度传感器、占用传感器等。iot设备的iot服务可用于设备自动化、数据捕获、提供警报、设置个性化以及许多其他应用。

术语“iot支持服务”是指设备、至少一个设备的一部分、或诸如分布式系统的多个设备,在一些示例中,iot设备在网络上连接至该设备以用于iot服务。在某些示例中,iot支持服务是iot中心(hub)。在某些示例中,排除了iot中心,并且iot设备直接或通过一个或多个中介与应用后端进行通信,而没有包括iot中心,并且应用后端中的软件组件作为iot支持服务进行操作。iot设备经由与iot支持服务的通信来接收iot服务。在某些示例中,iot支持服务可以嵌入设备内部或本地基础架构中。

应用后端313是指一个设备或多个设备,诸如分布式系统,其执行能够实现数据收集、存储和/或基于iot数据采取的动作的动作,包括用户访问和控制、数据分析、数据显示、数据存储控制、基于iot数据采取的自动动作等。应用后端313也可以是部署在公共或私有云中的一个或多个虚拟机。在一些示例中,由应用后端执行的至少一些动作可以由在应用后端313中运行的应用执行。

iot设备341和342和/或包括iot支持服务351和/或应用后端313的设备中的每一个可以包括图2的计算设备200的示例。术语“iot支持服务”不是仅限于一种特定类型的iot服务,但指的是iot设备在供应后通信用于至少一种iot解决方案或iot服务的设备。也就是说,在整个说明书和权利要求书中使用的术语“iot支持服务”对于任意iot解决方案都是通用的。术语iot支持服务仅指已供应的iot设备与其通信的iot解决方案/iot服务的一部分。在一些示例中,iot设备与一个或多个应用后端之间的通信是利用iot支持服务作为中介而发生的。说明书中的图3和图3的对应描述出于示例性目的示出了示例系统,其不限制本公开的范围。

iot设备341和342中的一个或多个可以包括设备控制器345,其可以操作以控制iot设备。每个设备控制器345可以包括多个执行环境。设备控制器345可以是多内核微控制器。在一些示例中,设备控制器345是具有多个核的集成电路,诸如至少一个中央处理单元(cpu)和至少一个微控制器(mcu)。

网络330可以包括一个或多个计算机网络,包括有线和/或无线网络,其中每个网络可以是例如无线网络、局域网(lan)、广域网(wan)、和/或全球网络,诸如因特网。在互连的lan集合上,包括基于不同架构和协议的lan,路由器充当lan之间的链路,从而使消息能够从一个发送到另一个。此外,lan内的通信链路通常包括双绞线或同轴电缆,而网络之间的通信链路可能利用模拟电话线,包括t1、t2、t3和t4的全部或部分专用数字线、综合业务数字网(isdn)、数字订户线(dsl)、包括卫星链路的无线链路、或本领域技术人员已知的其他通信链路。此外,远程计算机和其他相关的电子设备可以经由调制解调器和临时电话链路远程连接到lan或wan。网络330可以包括各种其他网络,诸如使用诸如6lowpan、zigbee等的本地网络协议的一个或多个网络。与其他iot设备相比,某些iot设备可以经由网络330中的不同网络连接到与用户设备。本质上,网络330包括信息可以在iot支持服务351、iot设备341和342以及应用后端313之间传播的任意通信方法。尽管每个设备或服务都显示为连接到网络330,但并没有表示每个设备都与所示的其他设备通信。在一些示例中,所示的某些设备/服务仅经由一个或多个中间设备与所示的某些其他设备/服务通信。而且,尽管网络330被示为一个网络,但是在一些示例中,网络330可以替代地包括可以彼此连接或可以不彼此连接的多个网络,其中示出的一些设备通过多个网络中的一个网络彼此通信,并且示出的其他设备与多个网络中的不同网络相互通信。

作为一个示例,iot设备341和342是旨在利用由iot支持服务351提供的iot服务的设备。

如本文所述,保护iot设备341和342的一些示例免于执行雪橇,包括nop雪橇。但是,在各种示例中,任意合适的计算设备,包括例如图1的计算设备110和/或图2的计算设备200中的一个或多个,可以包括针对本文所讨论的执行雪橇的保护。

系统300可以包括比图3所示更多或更少的设备,图3仅以示例的方式示出。

示意性设备

图4是示出设备控制器445的示例的框图。设备控制器445可以用作图3的设备控制器345的示例。设备控制器445可以包括安全性复合体451、cpu453、直接存储器访问(dma)块454、信任区(tz)dma块455、闪存456、无线电块457、安全静态随机存取存储器(sram)458、输入/输出(io)子系统481、io子系统482、主要高级可扩展接口(axi)总线463、辅助axi总线464、桥接器465和466、到每个外围设备的高级外围总线(apb)桥接器的axi467、接口471、通用io(gpio)472、模数转换器(adc)473、实时时钟(rtc)474和性能计数器475。io子系统481可以包括mcu461,并且io子系统482可以包括mcu462。在某些示例中,许多组件都具有防火墙,如图4所示。具体地,在一些示例中,io子系统481具有防火墙491,并且io子系统482具有防火墙492。

图4示出了设备控制器445的一个非限制性示例以及axi、ahb和apb的一种特定布局,以用于示例性目的。也可以采用设备控制器445的其他合适的布局和示例。

在一些示例中,设备控制器445使其中包括设备控制器445的设备能够作为诸如图3的iot设备341或342的iot设备进行操作。在一些示例中,设备控制器445是多核微控制器。在一些示例中,设备控制器445运行高级操作系统。在一些示例中,设备控制器445可以具有至少4mb的ram和至少4mb的闪存,并且可以是单个集成电路。在一些示例中,设备控制器445不仅提供网络连接,而且还提供各种其他功能,包括硬件和软件安全性、受监测的操作系统、密码功能、外围设备控制、遥测和/或类似功能。另外,设备控制器445可以包括用于允许以安全方式引导设备控制器445,允许安全地更新设备控制器445,确保适当的软件在设备控制器445上运行,允许设备控制器445作为iot设备正确运行等的技术。

在一些示例中,安全复合体451包括核安全复合体(csc),其是设备控制器445中的信任的硬件根。在一些示例中,核安全复合体直接连接到安全复合体451中的安全mcu。在一些示例中,安全复合体451中的安全mcu具有非常高的信任度,但是不如安全复合体451中的核安全复合体受信任。在一些示例中,安全复合体451在启动时启动整个系统。

在某些示例中,cpu453运行高级操作系统。在一些示例中,cpu453具有两个独立的执行环境:安全世界(secureworld)执行环境和普通世界(normalworld)执行环境。术语“安全世界”广泛用于指受信任的环境,并且不限于特定的安全特征。在某些示例中,cpu453的安全世界执行环境也是系统受信任计算基础的一部分。例如在一些示例中,cpu453的安全世界执行环境可以不受限制地访问重新编程的硬件保护机制,诸如在某些示例中为防火墙。然而,在一些示例中,cpu453的安全世界执行环境不能访问安全复合体451的核安全复合体的内部,并且依赖于安全复合体451的安全mcu以进行特定的对安全敏感的操作。在一些示例中,cpu453的安全世界和安全性复合体451是执行安全代码的设备445的安全世界,而设备控制器445的其余部分是不执行安全代码的设备445的普通世界。

无线电块457可以提供wi-fi通信。主要axi总线463和辅助axi464可以是连接所示组件的总线。在一些示例中,桥接器465、466和467桥接所示的组件。rtc块474可以用作实时时钟。在一些示例中,设备控制器345中的所有组件可以从rtc块474读取,但是并非所有组件都具有对rtc块474的写访问。设备控制器445可以包括各种形式的存储器,包括闪存和sram,诸如闪存456,以及安全sram458。

在一些示例中,io子系统481和io子系统482是用于通用i/o连接的i/o子系统。在一些示例中,在图4所示的示例中,io子系统481和io子系统482各自包括mcu-mcu461和mcu462。

dma块454可以用于管理cpu453的普通世界执行环境的数据移动。信任区(tz)dma块455可以用于管理cpu453的安全世界执行环境的数据移动。在一些示例中,每个io子系统也都有自己的dma模块/引擎。每个dma块/引擎可以被配置为支持核、外围设备、其他组件等之间的数据移动。

每个核可以具有双向邮箱以支持处理器间通信。性能计数器475可以被配置为对用于性能监控的读请求、写请求和数据类型请求进行计数。在一些示例中,性能计数器475还可被配置为测量从核到目标的延迟,诸如从mcu462到sram458。

在一些示例中,框459处的接口包括两个集成电路间声音(i2s)接口:一个用于音频输入,一个用于音频输出。在其他示例中,可以采用接口的其他配置,并且框459在各种示例中可以包括任意合适的接口。

在一些示例中,如下面更详细地解释的,设备控制器445的独立执行环境-例如其可以包括设备控制器445中的每个核,并且在某些情况下,一个核内的多个独立执行环境(例如cpu453中的安全世界操作环境和cpu453中的普通世界操作环境)--可以在信任层次结构中操作。在一些示例中,信任的层次结构可以起到将外围设备分配给特定核的作用。然而,本公开内容不限于此,并且在其他示例中,设备控制器445中不存在信任的层次结构,并且关于将哪些外围设备被分配给特定核的确定基于其他因素。

在一些示例中,安全复合体451中的mcu具有非常高的信任度,但是不如安全复合体451中的核安全复合体受信任。在这些示例中,安全复合体451中的mcu控制与高信任度相关联的一个或多个功能。在一示例中,安全复合体451中的mcu控制设备控制器445和/或iot设备的功率。

在一些示例中,cpu453的安全世界执行环境也是系统的受信任的计算库的一部分。例如在某些示例中,cpu453的安全世界运行时(安全世界rt)具有不受约束的访问以重新编程硬件保护机制,诸如在某些示例中为防火墙。然而,在一些示例中,安全世界rt无法访问安全复合体451的核安全性复合体的内部,而是依赖于安全复合体451中的mcu以用于特定的安全敏感操作。

cpu453的普通世界执行环境可以被配置为具有对诸如存储器的片上资源的有限访问。在一些示例中,可以针对在该环境中运行的代码强制执行各种安全和质量标准(例如相对较高的标准),但是不如在安全复合体451中的mcu上运行的代码或在cpu453的安全世界中运行的代码受信任。

在一些示例中,mcu461和462不如安全复合体451中的mcu受信任,并且不如cpu453在受信任。在某些示例中,无线电模块457可以包括核,在某些示例中可以是mcu。无线电块457可以提供wi-fi功能和到互联网和诸如iot服务的云服务的连接。在一些示例中,无线电块457可以经由蓝牙、近场通信(nfc)、zigbee、长期演进(lte)和/或其他连接技术来提供通信。在一些示例中,无线电块457中的核不具有对未加密秘密的任意访问,并且不能够损害cpu453的执行。在一些示例中,无线电块457是cpu453的从属(slave)。通常,图4说明了哪些组件充当从组件,哪些组件充当主组件。

在一些示例中,每个独立执行环境由在单独的执行环境中执行的单个软件组件管理,该单独的执行环境被称为执行环境的“父母”。在这样的示例中,一个例外可以是信任的硬件根(在此示例中,安全复合体451的内核安全复合体)没有父母。在一个特定示例中,每个父母在与其所管理的环境至少一样受信任的环境中执行。在其他示例中,可以采用其他合适的安全手段。管理操作可以包括引导和恢复目标环境、监视和处理目标环境中的重置、以及配置目标环境的访问策略。在某些情况下,某些管理操作是由父母以外的组件执行的。例如在一些示例中,cpu普通世界是管理mcu461和462、但从cpu453的安全世界获得帮助来这样做的环境。

例如在一些示例中,安全复合体451的mcu管理cpu453的安全世界rt,cpu453中的安全世界rt中的组件管理cpu453的普通世界os,cpu453的普通世界os的组件管理cpu453的普通世界用户模式,并且cpu453的普通世界用户模式服务管理mcu461和462以及无线电块457中的核。

在一些示例中,不仅由来自更受信任的执行环境的软件组件管理独立的执行环境,而且将不同的功能分配给不同的独立执行环境,其中更敏感的功能分配给更受信任的独立执行环境。在一个特定示例中,不如其被分配给的独立执行环境受信任的独立执行环境被限制访问该功能。通过这种方式,在某些示例中,独立执行环境基于信任层次结构来实现了深度防御。

例如在一些示例中,安全复合体451的核安全复合体在层次结构的顶部,并且被分配给秘密(例如加密密钥),核安全性复合体451中的安全mcu是层次结构中的下一个并被分配用于控制功率,cpu453的安全世界rt是该层次结构中的下一个,并被分配给存储装置和对实时时钟(rtc)的写访问,cpu453的普通世界os是该层次结构中的下一个,并被分配给wi-fi,cpu453的普通世界用户模式应用是该层次结构中的下一个,并被分配给应用,并且mcu461和462在该层次结构的底部,并被分配给外围设备。在其他示例中,功能以不同的方式分配给独立的执行环境。

在一些示例中,例如在实现支持其处理的软件方面,信任层次结构的每个级别,除了该层次结构的最低(即,最不信任)级别之外,都具有对来自较低信任级别的请求进行接受或拒绝的控制,并具有对来自不太信任的级别的请求进行速率限制或审核的能力,并能够验证来自较低级别的请求,例如确保请求正确且真实。同样,如前所述,在一些示例中,除最高(即,最受信任)级别之外的每个层次结构级别都有一个父母,该父母负责管理较低(即,不那么受信任)级别,包括监测较低级别上的软件是否正确运行。

在以上给出的示例中,mcu461和462被分配给外围设备。在这些示例中,mcu461和462可以被称为iomcu。

在一些示例中,设备控制器445上的每个核,诸如安全复合体451中的mcu、cpu453、mcu461和mcu462,具有用于活动存储器的ram以及一个或多个存储器,其可以至少在设备445断电或重新启动之前保留信息。在一些示例中,核共享sram458和闪存456作为可以至少在设备445断电或重启之前维持信息的存储器,但是并非所有核都可以访问整个sram458和闪存456。在一些示例中,防火墙491防止io子系统481进行不正确的访问,包括对sram458和闪存456的不正确访问。类似地,在某些示例中,防火墙492防止由io子系统482的不正确的访问,包括对sram458和闪存456的不正确访问。

首先,在一些示例中,在正常操作期间,对于sram458的某些安全区域,sram458上的从防火墙允许访问到安全世界的安全区域,但是防止普通世界对安全区域的访问。类似地,在一些示例中,对于闪存456的某些安全区域,闪存456的从防火墙允许访问到安全世界的安全区域,但是防止由普通世界对安全区域的访问。

然而,在一些示例中,防火墙491和492并不仅基于尝试访问的源是否为安全世界来确定对特定区域的访问。例如sram458还可以具有与特定的普通世界源io子系统1相关联的存储器部分,其基于防火墙491和492的配置,可以由该io子系统1而不是io子系统2访问。类似地,闪存456还可以具有与特定的普通世界源io子系统481相关联的存储器的部分,其基于防火墙491和492的配置,可以由该io子系统1而不是io子系统2访问。

例如在一些示例中,iomcu461和iomcu462各自都在sram458上具有一部分存储器,并且每个都在闪存456上具有一部分存储器。在一些示例中,用于iomcu461的sram458的一部分应该可以访问iomcu461,但不能访问iomcu462。相似地,在某些示例中,经由防火墙492,iomcu462的闪存456的一部分应该可以访问iomcu462,但是不能访问iomcu461。

如下面更详细地讨论的,防火墙491还可以选择性地阻止对特定区域的特定类型的访问,诸如读访问、写访问和/或执行访问。

在正常操作期间,在一些示例中,存储器保护单元(mpu)防止io子系统481和io子系统482进行不正确的通信。但是,在某些示例中,mpu是在普通世界中运行的软件,并且不受信任,并且恶意代码有可能停止mpu防止不正确通信。

在一些示例中,防火墙491是防止由不是安全代码的代码配置的主硬件防火墙,其中防火墙491防止与io子系统481的不正当通信。在某些示例中,术语“主防火墙”是指例如io子系统481是主设备,而外围设备、sram458和闪存456是从设备的事实。在一些示例中,外围设备、sram458以及闪存456处的防火墙是从防火墙,而io子系统481处的防火墙是主防火墙。

类似地,在一些示例中,防火墙492是主硬件防火墙,其被防止由作为非安全代码的代码配置,其中防火墙492防止来自io子系统481的不当通信。在某些示例中,在正常运行期间,防火墙491允许io子系统481访问sram458的某些部分、闪存456的某些部分以及某些外围设备,但防止任意其他通信离开io子系统481。类似地,在某些示例中,在正常操作期间,防火墙492允许io子系统482访问sram458的某些部分、闪存456的某些部分、以及某些外围设备,但防止任意其他通信离开io子系统482。

在一些示例中,防火墙491是主硬件防火墙,其有效地将io子系统481与设备控制器445的其余部分进行硬件隔离,并且防止了硬件防火墙491未特别允许的通信离开io子系统481,并且作为非安全代码的来自io子系统481外部的源的代码被防止配置防火墙491。在一些示例中,防火墙492可以提供与io子系统482类似的硬件隔离。

在一些示例中,在正常操作期间,对于从io子系统481访问sram458的请求,防火墙491有选择地允许io子系统481访问sram458的特定窗口,该特定窗口在防火墙491中被配置为允许的,以及其中sram458的该窗口用作sram458的部分,其是用于mcu461的存储器。在一些示例中,在防火墙491中被配置为允许的sram458的窗口是sram458中的特定地址范围。类似地,在一些示例中,在正常操作期间,对于从io子系统482访问sram458的请求,防火墙492有选择地允许io子系统482访问在防火墙492中配置为允许的特定地址范围,并且其中该特定地址范围充当sram456的一部分,其是用于mcu462的存储器。在一些示例中,针对io子系统482的在防火墙492中被配置为允许的sram456地址范围与针对io子系统481的在防火墙491中被配置为允许的sram456地址范围是分离的并且不重叠。在一些示例中,针对io子系统482的在防火墙492中被配置为允许的sram456地址范围的至少一部分与针对io子系统481的在防火墙491中被配置为允许的sram456地址范围的至少部分地不重叠。

类似地,在一些示例中,在正常操作期间,对于从io子系统481访问闪存456的请求,防火墙491有选择地允许io子系统481访问在防火墙491中被配置为允许的特定地址范围,并且其中该特定地址的范围充当闪存456的一部分,其是用于mcu461的存储器。类似地,在一些示例中,在正常操作期间,对于从io子系统482访问sram458的请求,防火墙492选择性地允许io子系统482访问在防火墙492中被配置为允许的特定地址范围,并且该特定地址范围充当闪存458的一部分,其是mcu462的存储器。

在一些示例中,防火墙491和492是动态可配置的硬件防火墙。在一些示例中,防火墙491和防火墙492是可配置的,并且可以在每次启动设备控制器445时再次被配置。在一些示例中,在设备控制器445启动时,防火墙491拒绝去往和来自io子系统481的所有通信,直到防火墙491被适当地配置,并且防火墙492拒绝去往和来自io子系统482的所有通信,直到防火墙492被适当地配置。在一些示例中,防火墙491和492可以由安全代码配置,并且防止由作为不是安全代码的代码被配置。

防火墙491的配置可以包括例如关于针对请求io子系统481访问哪个地址范围以访问sram458和/或闪存456的配置,以及关于io子系统481访问哪些外围设备的配置。类似地,防火墙492的配置可以包括例如关于针对请求io子系统482访问哪个地址范围以访问sram458和/或闪存456的配置,以及关于io子系统482访问哪些外围设备的配置。

防火墙491和492可以各自包括粘性锁定位。对于防火墙491和防火墙492,可以设置粘性锁定位,使得防火墙的配置被固定,直到设备控制器445被重新启动为止。如本文所使用的“粘性”位是指具有两个值的位,并且一旦该位被设置,就防止其被改变直到设备445重启。对于防火墙491和防火墙492,可以配置防火墙,使得在设置粘性锁定位时防止防火墙被更改。也就是说,在某些示例中,一旦设置了粘性锁定位,对防火墙的进一步写可能会被忽略或以其他方式无效。在一些示例中,防火墙491是动态可重新配置的,直到其粘性锁定位被设置,并且防火墙492是动态可重新配置的,直到其粘性锁定位被设置。

在正常操作期间,在已经配置了防火墙并且已经设置了粘性锁定位之后,然后可以按照配置来使用防火墙。在配置之后,在一些示例中,当io子系统481请求访问sram458时,防火墙491选择性地授予访问。在一些示例中,防火墙491确定被配置用于由io子系统481访问sram458的地址范围,并且基于请求的地址是否包括在该地址范围中来确定是否授予访问。在某些示例中,如果是这样,则该请求被授权,如果没有,则该请求被拒绝。

类似地,在配置后的一些示例中,当io子系统481请求访问闪存456时,防火墙491有选择地授予访问。在一些示例中,防火墙491确定被配置用于由io子系统481访问闪存456的地址范围,并且基于请求的地址是否被包括在该地址范围中来确定是否授予访问。在某些示例中,如果是这样,则该请求被授予,如果没有,则该请求被拒绝。

类似地,在配置之后,在一些示例中,当io子系统481请求与外围设备通信时,防火墙491有选择地授予访问。在一些示例中,防火墙491基于该配置来确定哪些外围设备io子系统481可以访问,并且根据该配置来确定io子系统481正在请求与之通信的外围设备是否是io子系统481所允许的外围设备之一。在某些示例中,如果是这样,则该请求被授权,如果没有,则该请求被拒绝。

类似地,在配置之后,在一些示例中,当io子系统482请求访问sram458时,防火墙492有选择地授予访问。在一些示例中,防火墙492确定被配置用于由io子系统482访问sram458的地址范围,并且基于请求的地址是否被包括在该地址范围中来确定是否授予访问。在某些示例中,如果是这样,则该请求被授予,如果没有,则该请求被拒绝。

类似地,在配置之后,在一些示例中,当io子系统482请求访问闪存456时,防火墙492有选择地授予访问。在一些示例中,防火墙491确定被配置用于由io子系统482访问闪存456的地址范围,并且基于请求的地址是否被包括在该地址范围中来确定是否授予访问。在某些示例中,如果是这样,则该请求被授予,如果没有,则该请求被拒绝。

类似地,在配置之后,在一些示例中,当io子系统482请求与外围设备通信时,防火墙492有选择地授予访问。在一些示例中,防火墙492基于该配置来确定io子系统481可以访问哪些外围设备,并且根据该配置来确定io子系统481正在请求与之通信的外围设备是否是io子系统481所允许的外围设备之一。在某些示例中,如果是这样,则该请求被授予,如果没有,则该请求被拒绝。

防火墙491和492的配置也可以包括访问类型。例如如先前所讨论的,防火墙491可以相对于地址范围过滤来自io子系统481的访问请求的类型,但是也可以配置针对某些地址范围的特定的某些访问类型。例如防火墙491可以防止所有执行或对特定地址的执行。作为另一个示例,防火墙491可以普遍地防止或防止对特定地址进行代码提取,但是对于某些地址范围,可以允许数据读和数据写,而不允许io子系统481从这些地址提取代码。在一些示例中,可以关于io子系统481以类似的方式配置防火墙492。

防火墙491可以以上面讨论的特定方式配置。在一些示例中,配置各种访问的防火墙491和492的配置在设备重启时不存留,诸如对特定范围的存储器和/或特定外围设备的访问。而是,在这些示例中,当设备重新引导时,防火墙491和492阻止所有访问,而无论防火墙的先前配置如何,并且不允许再次访问,直到在引导之后再次进行配置为止。

尽管本文结合特定子系统防火墙讨论了特定子系统,但是本公开不限于此,并且其他合适的子系统可以与子系统的相应主子系统防火墙一起使用。例如虽然在其中讨论了io子系统,但在其他示例中,这些子系统不是io子系统。

在一些示例中,不使用粘性锁定位,而是防火墙在整个操作中都代之以是动态的并且可重新配置。例如在一些示例中,sram458可以使用缓冲器,然后释放缓冲器,使得子系统应当可用的地址范围可以随着时间动态地变化。在这些示例中,安全代码可能能够随时间重新配置子系统防火墙,诸如防火墙491和492,以反映地址范围,这些地址范围现在分别反映了io子系统481和io子系统482可用的存储器。

在一些示例中,使用了针对执行滑动的防御,包括nop(无操作)滑动。

nop滑动(或nop雪橇)是一系列nop(无操作)指令,旨在每当程序分支到滑动上任意地方的存储器地址时,就将cpu的程序计数器“滑动”到其最终的期望目的地。nop指令不执行任意操作,但是程序计数器前进到下一个地址。nop滑动可以用作攻击,以意想不到的方式访问存储器区域。

作为nop滑动攻击的示例,可能存在三个连续的存储器区域a、b和c,其中b是存储器的受限区域。以下情况可能会发生:程序计数器到达a的末尾并应分支,但不正确的没有分支(例如由移除分支的攻击导致),并且程序计数器通向b。在这个示例中,b是存储器的受限区域,因此无法读取。典型地,响应于对区域b中的地址的读请求,所有零被返回,其通常将被处理器解释为响应于处理器的执行的nop操作。可以使用nop滑动攻击来滑过区域b来访问c。在此示例中,区域c不是受限制的区域存储器,但是正以意外方式对其进行访问,从而导致安全漏洞。例如攻击者可能随后在区域c中编写代码并执行攻击者向区域c中编写的代码。

nop滑动是执行滑动的特定示例。执行滑动类似于nop滑动,但是任意操作都可以用于滑动通过受限的存储器区域,而不仅仅是nop操作。对存储器受限区域的读请求是指不允许访问该存储器区域的读请求。例如由于存储器区域受防火墙保护,因此可能不允许读访问,或者可能以其他某种方式不允许读访问。

在一些示例中,如下防止执行滑动。在一些示例中,响应于对存储器的受限区域做出读请求,数据值被返回,该数据值将由与该请求相关联的处理器解释为故障值。也就是说,在这些示例中,数据值如果由处理器作为指令执行,将导致异常。因此,在这些示例中,响应于处理器将数据值作为指令执行,将导致异常,cpu将不会继续执行,然后执行将陷入异常处理程序中。

在一些示例中,读请求包括指示将执行所请求的数据的处理器的主id。在这些示例中,请求可以是直接请求,其中请求的数据直接被发送到处理器以执行,或者可以是间接请求,在间接请求中存储数据值以供处理器在以后执行,但是在每种情况下数据值由主id指示的处理器执行。在这些示例中,数据值是将在由主id指示的处理器中导致异常的数据值。

在一些示例中,在仅包括一个cpu的环境中,数据值是响应于cpu所执行的数据值而在cpu中导致异常的数据值。在一些示例中,在具有多于一个cpu的环境中,如果存在将导致该环境中的所有cpu发生异常一个或多个数据值(除其他外,由于环境中的cpu的指令集合重叠,可能会发生这种情况),则可以使用会响应于环境中任意cpu执行将导致异常的数据值。

在一些示例中,在具有多于一个cpu的其他环境中,存在一个查找表,对于给定的输入cpu,该查找表可用于查找数据值,该数据值将响应处理器的执行而生成异常。在一些示例中,响应于对存储器的受限区域做出的读请求,基于读请求的主id来确定cpu,并且使用查找表,其中由主id将cpu确定为输入,以确定响应于读取请求要提供的数据值。在一些示例中,响应于来自存储器的受限区域的读请求而提供的数据值可以由防火墙提供,该防火墙限制对存储器的受限区域的访问。

在一些示例中,不仅存储器的受限制区域被保护免于执行滑动,而且无效的其他地址也可以以类似的方式受到保护。无效的其他地址的示例可以包括存储器的未映射区域中的地址,例如地址映射的某些部分中在其背后没有任意活动控制寄存器的地址。其他无效地址的示例还可以包括已映射和允许但未完全填充或未完全消耗的存储器区域中的地址--即,已映射和允许的区域的未使用部分。在一些示例中,如果从无效的地址进行读请求,则提供将由对应的cpu解释为故障的数据值。在一些示例中,数据值由结构上的虚拟从设备(dummyslave)提供。

受限存储器的一个示例是由图4的设备控制器445中的防火墙491和492保护的存储器。在一些示例中,如果在防火墙491或防火墙492防止访问的设备控制器445中做出读取请求,则提供响应于设备控制器445的任意处理器的执行将在执行的处理器中导致异常的数据值。

在某些示例中,在设备控制器445中,如果从设备从未启用的主设备接收到事务,或者如果i/o设备被配置为安全世界设备,但该事务是普通世界,则如果事务是read操作,该read操作将返回可编程控制器寄存器(cr)值;选择此值将导致正在执行的任意核导致异常,并且写将被丢弃。另外,在一些示例中,响应于这种事务的发生,错误寄存器被设置为指示哪个主id正在请求事务。在某些示例中,还向安全性复合体生成错误中断。

在一些示例中,可以在没有正确许可的事务上在设备控制器445中的任意防火墙和所有防火墙处完成此行为。在这些示例中,这是带内总线错误信号的补充。在某些示例中,对于无效地址,虚拟从设备也可以具有这种行为。

尽管本文中的特定示例讨论了提供了数据值,该数据值使处理器响应于该数据值的执行而导致异常,但是在各种示例中也可以使用其他类型的数据模式。例如在一些示例中,代替返回导致异常的数据值,对读取请求的响应可以是对返回的数据进行编程,以使分支到进一步记录问题的检测的代码。在某些示例中,代替返回导致异常的数据值,对读取请求的响应可能是对返回的数据进行编程,从而导致到自身的分支,从而导致无限循环。通常,返回的数据值通常可用于防止nop雪橇的执行。

尽管图4示出了可以以所描述的方式被保护免受执行雪橇影响的系统的特定示例,但是所描述的保护可以用于发生从存储器读取的任意合适的系统中,该存储器可能遭受执行滑动攻击。

示意性处理

为了清楚起见,根据由系统的特定设备或组件以特定顺序执行的操作来描述本文描述的处理。然而,应注意,其他过程不限于所陈述的序列、设备或组件。例如某些动作可以以不同的顺序并行地执行、被省略、或者可以由附加的动作或特征来补充,无论本文是否描述了这样的顺序、并行性、动作或特征。同样,可以将本公开中描述的任意技术结合到所描述的过程或其他过程中,而不管该技术是否结合过程进行了具体描述。不管本文中是否描述了这样的设备、组件或系统,所公开的过程还可以在其他设备、组件或系统上或由其他设备、组件或系统执行。这些过程也可以以多种方式体现。例如它们可以体现在制品上,例如作为在处理器可读存储介质中存储的或作为计算机实现的过程来执行的处理器可读指令。作为替代示例,这些过程可以被编码为处理器可执行指令,并经由通信介质发送。

图5是示出用于过程(580)的示例数据流的图。

在所示的示例中,步骤581首先发生。在一些示例中,在步骤581,检测到对存储器的受限区域的读请求。在一些示例中,读取请求与第一处理器相关联。如图所示,在一些示例中,步骤582接下来发生。在步骤582,在一些示例中,响应于检测到对存储器的受限区域的读请求,提供了响应于由第一处理器的执行而导致异常的数据值。

尽管本文特定示例已经讨论了提供数据值,该数据值使处理器响应于该数据值的执行而导致异常,但是在各种示例中也可以使用其他类型的数据模式。例如在一些示例中,在步骤582,代替返回导致异常的数据值,对读请求的响应可以是对返回的数据进行编程以使得分支到将进一步记录问题的检测的代码。在一些示例中,在步骤582,代替返回导致异常的数据值,对读取请求的响应可以是对返回的数据进行编程以使其分支到自身,从而导致无限循环。

然后,该过程可以进行到返回框,在该处可以恢复其他处理。

结论

尽管以上具体实施方式描述了该技术的某些示例,并且描述了预期的最佳模式,但是无论以上在文本中出现的多么详细,都可以以多种方式来实践该技术。细节可以在实现中变化,同时仍被本文描述的技术所涵盖。如上所述,当描述技术的某些特征或方面时使用的特定术语不应被认为暗示该术语在本文中被重新定义为限于与该术语相关联的任意特定的特征、特征或方面。通常,除非具体实施方式中明确定义了这些术语,否则不应将以下权利要求中使用的术语解释为将本技术限制于本文公开的特定示例。因此,该技术的实际范围不仅涵盖所公开的示例,而且还包括实践或实施该技术的所有等效方式。

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