闪存恢复模式的制作方法

文档序号:19734702发布日期:2020-01-18 04:20阅读:217来源:国知局
闪存恢复模式的制作方法



背景技术:

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



技术实现要素:

提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

简言之,所公开的技术总体上涉及数据安全性。在本技术的一个示例中,数据被存储在存储器中。存储器包括多个存储器库(bank),该多个存储器库包括第一存储器库和第二存储器库。数据的至少一部分在多个存储器库中的至少两个存储器库之中交错。在调试模式或恢复模式发生时,使对多个存储器库中的至少一个存储器库的访问被阻止。而且,从初始启动开始直到由安全性复合体进行的验证成功,使对多个存储器库中的至少一个存储器库的访问被阻止。由安全性复合体进行的验证包括安全性复合体对签名进行验证。

在本公开的一些示例中,设备包括内部或外部闪存存储器,该内部或外部闪存存储器包括两个或更多个闪存存储器库。被存储在闪存存储器中的数据可以包括安全部分,该安全部分包括在闪存存储器库之中交错的安全信息。设备可以提供恢复模式,该恢复模式允许闪存存储器被重新闪存,同时不允许所有闪存存储器库被访问。

在一些示例中,在调试模式或恢复模式期间,对所有闪存存储器库的访问被阻止,并且该阻止被硬件强制执行。这可以阻止回滚攻击能够访问闪存存储器的安全部分。在一些示例中,在初始启动时,对所有闪存存储器库的访问被阻止。例如,在一些示例中,在初始启动时,对闪存存储器库中的一个闪存存储器库的访问被允许,并且对闪存存储器库中的另一闪存存储器库的访问被阻止。在一些示例中,贯穿所有调试模式或恢复模式都维持该阻止。在一些示例中,在恢复模式期间,阻止访问闪存存储器库中的至少一个闪存存储器库被硬件强制执行。

在一些示例中,在“标准”启动期间,使用安全启动过程,其中rom初始化第一启动加载器,并且验证第一启动加载器被适当地签名。在一些示例中,在验证第一启动加载器被适当地签名之前,不加载第一启动加载器,并且对所有闪存存储器库的闪存访问被阻止。在不是进入调试模式、恢复模式等的启动的正常启动期间,在第一启动加载器的数字签名被验证之后,可以允许对所有闪存存储器库的访问。

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

附图说明

参考附图描述本公开的非限制性和非穷举性示例。在附图中,除非另有说明,否则贯穿各个附图,相同的附图标记指代相同的部件。这些附图不一定按比例绘制。

为了更好地理解本公开,将参考以下具体实施方式,该具体实施方式应当关联附图来阅读,在附图中:

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

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

图3是图示用于数据安全性的系统的示例的框图;

图4是图示图3的设备控制器的示例的框图;

图5是图示用于数据安全性的设备的示例的框图;以及

图6是图示根据本公开的各方面的用于数据安全性的过程的示例数据流的图。

具体实施方式

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

简言之,所公开的技术总体上涉及数据安全性。在本技术的一个示例中,数据被存储在存储器中。存储器包括多个存储器库,该多个存储器库包括第一存储器库和第二存储器库。数据的至少一部分在多个存储器库中的至少两个存储器库之中交错。在调试模式或恢复模式发生时,使对多个存储器库中的至少一个存储器库的访问被阻止。而且,从初始启动开始直到由安全性复合体进行的验证成功,使对多个存储器库中的至少一个存储器库的访问被阻止。由安全性复合体进行的验证包括安全性复合体对签名进行验证。

在本公开的一些示例中,设备包括内部或外部闪存存储器,该内部或外部闪存存储器包括两个或更多个闪存存储器库。被存储在闪存存储器中的数据可以包括安全部分,该安全部分包括在闪存存储器库之中交错的安全信息。设备可以提供恢复模式,该恢复模式允许闪存存储器被重新闪存,同时不允许所有闪存存储器库被访问。

在一些示例中,在调试模式或恢复模式期间,对所有闪存存储器库的访问被阻止,并且该阻止被硬件强制执行。这可以阻止回滚攻击能够访问闪存存储器的安全部分。在一些示例中,在初始启动时,对所有闪存存储器库的访问被阻止。例如,在一些示例中,在初始启动时,对闪存存储器库中的一个闪存存储器库的访问被允许,并且对闪存存储器库中的另一闪存存储器库的访问被阻止。在一些示例中,贯穿所有调试模式或恢复模式都维持该阻止。在一些示例中,在恢复模式期间,阻止访问闪存存储器库中的至少一个闪存存储器库被硬件强制执行。

在一些示例中,在“标准”启动期间,使用安全启动过程,其中rom初始化第一启动加载器,并且验证第一启动加载器被适当地签名。在一些示例中,在验证第一启动加载器被适当地签名之前,不加载第一启动加载器,并且对所有闪存存储器库的闪存访问被阻止。在不是进入调试模式、恢复模式等的启动的正常启动期间,在第一启动加载器的数字签名被验证之后,可以允许对所有闪存存储器库的访问。

说明性设备/操作环境

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

如图1中所示,网络130可以包括一个或多个网络节点120,网络节点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可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任何其他电路。处理电路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)和库来组织。例如,操作存储器设备可以经由通道中的存储器控制器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采用以用于非易失性长期数据存储,而不是用于运行时数据存储。在一些示例中,性能计数器475还可以被配置成测量从核到目标的延时,诸如从mcu462到sram458的延时。

而且,计算设备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能够执行动作。

说明性系统

在iot设备中包括的多核微控制器的上下文中使用本公开的一些示例,该多核微控制器作为用于iot设备的设备控制器操作。本公开的示例也可以在其他合适的上下文中使用。下面参考图4和图5讨论在iot设备中包括的多核微控制器的上下文中使用的本公开的特定示例,该多核微控制器作为用于iot设备的设备控制器操作。

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

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

术语“iot支持服务”是指一个设备、至少一个设备的一部分或诸如分布式系统等的多个设备,在一些示例中,iot设备在网络上连接到一个设备、至少一个设备的一部分或诸如分布式系统的多个设备以获取iot服务。在一些示例中,iot支持服务是iot集线器。在一些示例中,iot集线器被排除,并且iot设备直接地或通过一个或多个中间体(intermediary)与应用后端通信,而不包括iot集线器,并且应用后端中的软件组件作为iot支持服务进行操作。iot设备经由与iot支持服务的通信来接收iot服务。在一些示例中,iot支持服务可以被嵌入在设备内部,或嵌入在本地基础设施中。

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

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

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

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

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

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

说明性设备

图4是图示设备控制器445的示例的框图。设备控制器445可以被采用作为图3的设备控制器345的一个示例。设备控制器445可以包括安全性复合体451、cpu453、直接存储器访问(dma)块454、信任区(tz)dma块455、闪存456、无线电块457、安全静态随机存取存储器(sram)458、接口459、mcu461、mcu462、主高级可扩展接口(axi)总线463、辅助axi总线464、桥接器465和466、每个外围设备的axi到高级外围设备总线(apb)桥接器467、接口471、gpio472、模数转换器(adc)473、实时时钟(rtc)474和性能计数器475。

在一些示例中,设备控制器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具有两个独立的执行环境:安全世界执行环境和正常世界执行环境。术语“安全世界”广泛用于指代可信环境,并且不限于特定的安全性特征。在一些示例中,cpu453的安全世界执行环境也是系统的可信计算基(base)的一部分。例如,在一些示例中,cpu453的安全世界执行环境能够不受制约地访问以重新编程硬件保护机制,在一些示例中,硬件保护机制诸如防火墙。然而,在一些示例中,cpu453的安全世界执行环境不能访问安全性复合体451的核安全性复合体的内部,并且依赖于安全性复合体451的安全mcu来进行特定的安全性敏感操作。

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

在一些示例中,io子系统1461和io子系统2462是用于通用i/o连接性的i/o子系统。在一些示例中,io子系统1461和io子系统2462各自包括mcu。

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

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

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

在一些示例中,安全性复合体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的执行。

在一些示例中,每个独立的执行环境由单个软件组件管理,该单个软件组件在被称为执行环境的“父级”的单独的执行环境中执行。在这样的示例中,一个例外可能是硬件信任根(在本示例中为安全性复合体451的核安全性复合体)没有父级。在一个特定示例中,每个父级在至少与其管理的环境一样可信的环境中执行。在其他示例中,可以采用其他合适的安全性手段。管理操作可以包括启动和重新恢复目标环境、监测和处置目标环境中的重置以及配置针对目标环境的访问策略。在一些情况下,某些管理操作由父级以外的组件执行。例如,在一些示例中,cpu453的正常世界是管理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在层级的底部并且被分配给外围设备。在其他示例中,功能以不同的方式被分配给独立的执行环境。

在一些示例中,除了层级的底部级别(即,最不可信)之外,信任层级的每个级别都具有对接受或拒绝来自更小可信级别的、例如在实现对他们处置的软件的支持方面的请求的控制,并且具有对来自更小可信级别的请求进行等级限制或审核的能力,以及验证来自较低级别的请求例如以确保请求正确且真实的能力。而且,如之前所讨论的,在一些示例中,除了顶部(即,最可信)级别之外,层级的每个级别都具有父级,该父级负责管理较低(即,较不可信)级别,包括监测较低级别上的软件是否正确运行。

图5是图示设备500的示例的框图。设备500可以被采用作为图3的设备控制器345和/或图4的设备控制器445的示例。设备500可以包括存储器550和安全性复合体560。存储器550可以包括多个存储器库,其包括第一存储器库551和第二存储器库552。

设备500的一些示例可以是多核微处理器,其包括例如至少一个cpu和至少一个微控制器以及如前所述的具有多个库的闪存存储器。在一些示例中,多核处理器可以是具有多个核的集成电路。在一些示例中,多核处理器可以被用来提供经连接的设备的功能性。在一些示例中,设备500可以提供到经连接的设备的网络连接性,并且还可以提供各种其他功能,诸如硬件和软件安全性、受监测的操作系统、密码功能、外围控制、遥测等。此外,设备500可以包括用于以下的技术:允许以安全方式启动设备500、允许安全地更新设备、确保“适当”的软件在设备上运行、允许设备作为iot设备正确地工作等。安全性复合体560可以包括设备500的硬件信任根,作为由设备500提供的安全性功能的基础。

然而,本公开不限于此,并且也可以采用除多核处理器以外的设备500的示例作为设备500的示例,例如,在保护闪存存储器或其他类型的存储器的安全部分有用的各种示例中。

在一些示例中,存储器550存储数据,并且数据的至少一部分在多个存储器库中的至少两个存储器库之间交错。在一些示例中,安全性复合体560被配置成:在设备500中发生调试模式或恢复模式时,阻止对多个存储器库中的至少一个存储器库的访问,并且从初始启动开始直到由安全性复合体560进行的验证成功,阻止对多个存储器库中的至少一个存储器库的访问。由安全性复合体进行的验证可以包括安全性复合体560对签名进行验证。

本质上,在一些示例中,对多个存储器库中的至少一个存储器库的访问在每次通电时被阻止,以签名未被检查的任何模式启动设备500时被完全阻止,并且如果以签名被检查的模式启动设备500,则从通电直到签名被验证,对多个存储器库中的至少一个存储器库的访问被阻止。签名未被检查的模式可以包括例如调试模式和恢复模式。

在一些示例中,每次都阻止对相同的存储器库的访问,使得不可能通过多次启动来学习机密。

在一些示例中,存储器550是闪存存储器。在一些示例中,存储器550是外部nor闪存存储器,其包括闪存控制器和并行双四通道串行公共接口(qspi)nor闪存设备(在该示例中为两个存储器库),其中每个闪存存储器库是经由分开的通道访问的分开的集成电路。然而,本公开不限于此,并且可以采用任何合适的存储器配置和/或合适的存储器集。

在一些示例中,设备500具有恢复模式,恢复模式可以被用来对存储器550进行重新闪存。在一些示例中,设备500可以以恢复模式启动,在恢复模式中,加载未经签名的外部映像是可能的。在一些示例中,当设备500以恢复模式启动时,第二qpsi被禁用。

在一些示例中,设备500具有调试模式,在调试模式中,当调试引脚被断言为高时,可以启动设备500。在调试模式中,附接外部硬件调试器并且使设备500接受所附接的外部硬件调试器是可能的。利用这样的附接的外部调试器,从设备500中的第一指令rom改变cpu指令是可能的,并且不保证rom代码能够在设备500中执行、或rom代码在设备500中如预期地执行。在一些示例中,当设备500以调试模式启动时,第二qpsi被禁用。在一些示例中,当设备500以调试模式启动时,第二qpsi的禁用被硬件强制执行,例如,通过硬件元件或其他硬件特征的配置,对第二qpsi的访问被禁用、阻挡、或以其他方式被硬件阻止。在一些示例中,因为当设备500以调试模式启动时,第二qpsi的禁用被硬件强制执行,所以在这些示例中,恶意软件无法覆写访问阻止来允许访问和学习被存储在闪存存储器的安全部分中的机密。在一些示例中,对第二qpsi的访问被硬件阻止意味着:从被附接在调试模式中的调试器执行的代码不能更改第二qspi的禁用。

在一些示例中,在初始启动时,对多个存储器库中的至少一个存储器库的访问被阻止。例如,在一些示例中,在初始启动时,第二qpsi通道被禁用。在一些示例中,设备500在初始启动时根据rom代码操作。在一些示例中,在调试模式、恢复模式、测试模式等期间,对受约束的库的访问在任何时候都不被允许。在一些示例中,在正常启动期间,对受约束的库的访问在初始启动时不被允许,但是随后在验证之后被允许,验证包括对签名的验证,诸如,对第一启动加载器的数字签名的验证。在启用访问之前对签名的验证可以确保存储器550的安全部分中的安全数据仅可以由可信代码来访问。

在正常启动期间,可以以从安全性复合体开始的安全方式启动处理器,该安全性复合体包括设备500的硬件信任根。在一些示例中,从rom读取第一启动加载器,并且可以由安全性复合体560使用公共密钥来验证第一启动加载器已经被恰当地数字签名。在一些示例中,验证第一启动加载器的签名是在硬件中执行的密码操作。在一些示例中,直到且除非第一启动加载器的数字签名被验证,否则第一启动加载器不被加载,并且对所有闪存存储器库的访问被阻止。在一些示例中,在第一启动加载器的签名被验证之后,加载第一启动加载器,并且允许对所有闪存存储器库的访问。在一些示例中,还可以要求在仅验证第一启动加载器已被签名之外的进一步验证,以授权对所有闪存存储器库的访问。这可以被用来帮助阻止例如加载带有漏洞(vulnerability)的有效较旧代码。

在调试或恢复模式期间阻止对存储器550的安全部分中的安全数据的访问可以阻止被称为回滚攻击的一类攻击。例如,回滚攻击可以加载软件的较早版本,诸如os的版本,以利用软件的较早版本中的安全性漏洞。

在一些示例中,设备500允许将恢复模式用于恢复,但是不允许恢复所有存储器库。在一些示例中,以这种方式,可以重写固件部分,但不重写所有闪存存储器。不同的恢复方法可以被用来恢复存储器550的其余部分。在一些示例中,硬件被用来阻止对受约束的存储器库的访问,使得软件不可能以允许访问的方式来覆写访问保护。

在一些示例中,用以允许访问存储器库的验证可以如下进行。安全性复合体560可以读入不受约束的存储器库中的一个存储器库的一部分,在一些示例中,一个存储器库诸如第一存储器库。在一些示例中,闪存存储器的该部分可以是16kb、52kb等。然后,安全性复合体560中的硬件块可以将不受约束的闪存存储器库的加载部分与特定的硬件引线(fuse)进行比较,其中除非加载部分与引线匹配,否则验证不成功。在一些示例中,硬件密钥也可以被用来验证该代码是可信代码。通过安全性复合体560中的硬件块将闪存存储器的不受约束的部分中的一部分与硬件引线进行比较可以被用来阻止加载先前有效的、但现在是具有漏洞的较旧代码。引线可以被烧断,这同时改变相对于该硬件引线要被检查的、闪存存储器的对应的不受约束的部分与被更新的引线匹配,以阻止这样的较旧代码随后被验证和访问被存储在闪存存储器的安全部分中的机密。

设备500可以进一步操作,使得即使在“正常”启动期间,在已经启用对闪存存储器的所有存储器库的访问之后,仅安全代码能够访问闪存存储器的、包括闪存存储器的安全部分的部分,该安全部分可能包括机密。例如,在一些示例中,在已经启用对闪存存储器的所有存储器库的访问之后,保护闪存存储器的防火墙仅允许安全代码访问闪存存储器的某些部分,包括具有机密的部分。

说明性过程

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

图6是图示用于过程(670)的示例数据流的图。

在所图示的示例中,首先发生步骤671。在步骤671处,在一些示例中,数据被存储在存储器中。该存储器可以包括多个存储器库,多个存储器库包括第一存储器库和第二存储器库。数据的至少一部分可以在多个存储器库中的至少两个存储器库之中交错。

如所示的,在一些示例中,接下来发生步骤672。在步骤672处,在一些示例中,设备被启动,并且对多个存储器库中的至少一个存储器库的访问被阻止。

如所示的,在一些示例中,接下来发生判定步骤673。在判定框673处,对设备是否以调试模式、恢复模式等来启动进行确定。如果是,则过程移动到步骤674。在步骤674处,在一些示例中,对多个存储器库中的至少一个存储器库的访问继续被阻止。然后,该过程可以前进至返回框,在返回框处,重新恢复其他处理。

如果相反,在判定步骤673处,确定为否,并且设备没有以调试模式、恢复模式等启动,则过程移动到步骤675。

在步骤675处,对多个存储器库中的至少一个存储器库的访问被阻止。如所示的,在一些示例中,接下来发生判定框676。在判定框676处,对由安全性复合体进行的验证是否成功进行确定。由安全性复合体进行的验证可以包括安全性复合体验证签名。如果验证不成功,则过程移动到框674。如果相反,验证成功,则过程进行到步骤677。在步骤677处,在一些示例中,对多个存储器库的访问被授权。

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

结论

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

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