安全IoT设备更新的制作方法

文档序号:18302720发布日期:2019-07-31 10:23阅读:257来源:国知局
安全IoT设备更新的制作方法

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



技术实现要素:

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

简而言之,所公开的技术总体上涉及iot设备上的应用、固件和/或其他软件的更新。在该技术的一个示例中,至少一个处理器包括第一独立执行环境和第二独立执行环境。第一独立执行环境具有第二独立执行环境不具有的至少一个能力。从第一应用处理器的第二独立执行环境向该第一应用处理器的第一独立执行环境传送与请求的更新相关联的请求。第一独立执行环境验证请求的更新。从第一独立执行环境向第二独立执行环境传送与经验证的更新相关联的指令。对于与经验证的更新相关联的图像二进制文件,从第二独立执行环境向云服务发送图像请求。第一独立执行环境从云服务接收请求的图像二进制文件。第一独立执行环境将接收的图像二进制文件写入存储器,并且验证所写入的图像二进制文件。

在一些示例中,第一独立执行环境是安全世界,并且第二独立执行环境是普通世界。

在本公开的一些示例中,iot设备的更新(包括应用更新)通过将二进制文件写入闪存等来实现。iot设备包括应用处理器,该应用处理器包括至少两个独立执行环境,两个独立执行环境包括安全世界和普通世界。普通世界(nw)负责管理更新,包括通过网络与云服务的通信,但是nw与iot设备中的最安全环境相比不受信任。在允许访问闪存之前,sw监测请求并且验证请求。nw本身不能写入闪存;相反,sw可以在验证之后代表nw写入闪存。因此,虽然nw操作系统(os)负责管理更新,但是sw最终负责管理更新二进制文件。

在阅读和理解附图和说明书之后,将能够理解所公开的技术的其他方面和应用。

附图说明

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

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

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

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

图3是示出系统的示例的框图;

图4是示出图3的混合芯片的示例的框图;以及

图5a-图5c是示出了根据本公开的各方面的用于iot设备更新的过程的示例的逻辑流程图。

具体实施方式

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

简而言之,所公开的技术总体上涉及iot设备上的应用、固件和/或其他软件的更新。在该技术的一个示例中,至少一个处理器包括第一独立执行环境和第二独立执行环境。第一独立执行环境具有第二独立执行环境不具有的至少一个能力。从第一应用处理器的第二独立执行环境向该第一应用处理器的第一独立执行环境传送与请求的更新相关联的请求。第一独立执行环境验证请求的更新。从第一独立执行环境向第二独立执行环境传送与经验证的更新相关联的指令。对于与经验证的更新相关联的图像二进制文件,从第二独立执行环境向云服务发送图像请求。第一独立执行环境从云服务接收请求的图像二进制文件。第一独立执行环境将所接收的图像二进制文件写入存储器,并且验证所写入的图像二进制文件。

在一些示例中,第一独立执行环境是安全世界,并且第二独立执行环境是普通世界。

在本公开的一些示例中,iot设备的更新(包括应用更新)通过将二进制文件写入闪存等来实现。iot设备包括应用处理器,该应用处理器包括至少两个独立执行环境,两个独立执行环境包括安全世界和普通世界。普通世界(nw)负责管理更新,包括通过网络与云服务的通信,但是nw与iot设备中的最安全环境相比不受信任。在允许访问闪存之前,sw监测请求并且验证请求。nw本身不能写入闪存;相反,sw可以在验证之后代表nw写入闪存。因此,虽然nw操作系统(os)负责管理更新,但是sw最终负责管理更新二进制文件。

说明性设备/操作环境

图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可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任何其他电路。上述指令以及其他数据(例如,数据集、元数据、操作系统指令等)可以在计算设备200的运行时间期间存储在操作存储器220中。操作存储器220还可以包括多种数据存储设备/组件中的任何一种,诸如易失性存储器、半易失性存储器、随机存取存储器、静态存储器、高速缓存、缓冲器或用于存储运行时信息的其他介质。在一个示例中,当计算设备200断电时,操作存储器220不保留信息。相反,计算设备200可以被配置为将指令从非易失性数据存储组件(例如,数据存储组件250)传输到操作存储器220,作为引导或其他加载过程的一部分。

操作存储器220可以包括第四代双倍数据速率(ddr4)存储器、第三代双倍数据速率(ddr3)存储器、其他动态随机存取存储器(dram)、高带宽存储器(hbm)、混合存储器立方体存储器、3d堆叠存储器、静态随机存取存储器(sram)或其他存储器,并且这种存储器可以包括被集成到dimm、simm、sodimm或其他封装件上的一个或多个存储器电路。这样的操作存储器模块或设备可以根据通道、等级和库来组织。例如,操作存储器设备可以经由通道中的存储器控制器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还包括可以被配置为使得计算设备200能够从用户或从其他设备接收输入的输入接口260。另外,计算设备200包括可以输出接口270,其被配置为从计算设备200提供输出。在一个示例中,输出接口270包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置为渲染用于在单独的可视显示设备(诸如监测器、投影仪、虚拟计算客户端计算机等)上呈现的显示。在另一示例中,输出接口270包括可视显示设备,并且被配置为渲染和呈现用于观看的显示。在又一示例中,输入接口260和/或输出接口270可以包括通用异步接收器/发射器(“uart”)、串行外围接口(“spi”)、内部集成电路(“i2c”)、通用输入/输出(“gpio”)等。此外,输入接口260和/或输出接口270可以包括或接口到任何数目或类型的外围设备。

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

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

计算设备200的一些示例包括适配为存储运行时数据的至少一个存储器(例如,操作存储器220)以及适配为执行处理器可执行代码的至少一个处理器(例如,处理单元210),这些处理器可执行代码响应于执行而使得计算设备200能够执行动作,诸如例如在一些实例中图5a-图5c的过程的动作。

说明性系统

图3是示出用于iot数据控制的系统(300)的示例的框图。系统300可以包括网络330、iot支持服务351、iot设备341和342以及应用后端313,它们都连接到网络330。术语“iot设备”是指旨在利用iot服务的设备。iot设备实际上可以包括连接到云以使用iot服务的任何设备,包括用于遥测收集或任何其他目的。iot设备包括可以连接到网络以利用iot服务的任何设备。iot设备可以包括日常物品,诸如烤面包机、咖啡机、恒温器系统、洗衣机、干衣机、灯、汽车等。iot设备还可以包括例如“智能”建筑物中的各种设备,包括灯、温度传感器、湿度传感器、占用传感器等。iot设备的iot服务可以用于设备自动化、数据捕获、提供警报、设置个性化、iot设备更新以及很多其他应用。

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

术语“iot支持服务”是指诸如分布式系统等设备或多个设备,在一些示例中,iot设备在网络上连接到该设备以获取iot服务。在一些示例中,iot支持服务是iot中枢。在一些示例中,iot中枢被排除,并且iot设备直接或通过一个或多个中介(intermediary)与应用后端通信,而不包括iot中枢,并且应用后端中的软件组件作为iot支持服务进行操作。iot设备经由与iot支持服务的通信来接收iot服务。

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

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

作为一个示例,iot设备341和iot设备342是旨在利用由iot支持服务提供的iot服务的设备,在一些示例中,iot支持服务包括一个或多个iot支持服务,诸如iot支持服务351。应用后端313包括在向iot设备的用户提供设备门户时执行动作的设备或多个设备。

诸如iot设备341和iot设备342等iot设备的设备更新可以在不同时间发生。例如,可以更新iot设备上的应用、固件和/或其他软件。可以经由网络330将更新从iot支持服务(例如,iot中枢351或应用后端313等)传送到iot设备(例如,341和342)。在一些示例中,可以频繁地安装设备更新。

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

说明性混合芯片

图4是示出具有纵深防御架构的混合芯片445的示例的图。图4和说明书中的图4的相应描述示出了用于说明性目的的示例过程,其不限制本公开的范围。

在一些示例中,混合芯片445使得其中包括混合芯片445的设备能够作为iot设备进行操作,诸如图3的iot设备341或iot设备342。在一些示例中,混合芯片445可以具有至少4mb的ram和至少4mb的闪存。在一些示例中,混合芯片445不仅提供网络连接,还提供各种其他功能,包括硬件和软件安全性、受监测的操作系统、密码功能、外围控制、遥测等。另外,混合芯片445可以包括用于以下操作的技术:允许以安全方式引导设备,允许安全地更新设备,确保在设备上运行适当的软件,允许设备作为iot设备正确地运行,等等。

在一些示例中,混合芯片445如下布置。混合芯片445包括核心安全性复合体469、安全微控制器(mcu)460、通用cpu470、至少一个输入/输出(i/o)mcu480和核心490。安全mcu460可以包括安全mcu只读存储器(rom)461、安全mcu第一引导加载程序462和安全mcu运行时(rt)463。cpu470可以是应用处理器,包括安全世界(sw)rt471、以管理员模式操作的普通世界(nw)操作系统(os)472、nw用户模式服务473和nw用户模式应用474。每个i/omcu480可以包括mcu服务481和mcu应用482。核心490可以包括wi-fi固件491。在一些示例中,核心480是专用于无线通信的cpu或mcu。

在一些示例中,核心安全性复合体469是混合芯片469中的硬件信任根。在一些示例中,核心安全性复合体469直接连接到安全mcu460。在一些示例中,安全mcu460具有非常高的信任度,但是没有核心安全性复合体469那样可信。在这些示例中,安全mcu460控制需要非常高的信任度的一个或多个功能。在一个示例中,安全mcu460控制混合芯片454和/或iot设备的电力。

在一些示例中,cpu核的sw执行环境471也是系统的可信计算基础的一部分。例如,在一些示例中,swrt471具有对重新编程硬件保护机制的不受限制的访问,诸如在一些示例中的防火墙。然而,在一些示例中,swrt471不能访问核心安全性复合体469的内部,并且依赖于安全mcu460来进行其最安全敏感的操作。

cpu核心的nw执行环境可以被配置为具有对这样的存储器等片上资源的有限访问。在一些示例中,在该环境中运行的代码仍然必须满足某些(例如,相对较高的)安全性和质量标准,但是没有在安全mcu460上运行的代码或在cpu上的安全世界471中运行的代码那样可信。

在一些示例中,i/omcu核心480没有安全mcu460和cpu核心那样可信,并且因此,在一些示例中,cpu核心的安全世界环境负责将混合芯片445的防火墙配置为限制480i/omcu对片上资源的访问。

在一些示例中,核心490执行供应商提供的固件。核心490可以提供wi-fi功能和到因特网以及诸如iot服务等云服务的连接。在一些示例中,核心490可以经由蓝牙和/或其他连接技术提供通信。但是与i/omcu核心480一样,在一些示例中,cpu470负责配置防火墙以限制核心490对片上资源的访问。在一些示例中,核心490不具有对未加密的秘密的任何访问,并且不能够危及安全mcu核心460或cpu470核心的执行。

在一些示例中,每个独立执行环境由在被称为执行环境的“父级”的单独执行环境中执行的单个软件组件管理。在这样的示例中,一个例外可以是,硬件信任根(在该示例中为核心安全性复合体469)没有父级。在一个特定示例中,每个父级在至少与其管理的环境一样受信的环境中执行。在其他示例中,可以采用其他合适的安全手段。管理操作可以包括引导和恢复目标环境,监测和处理目标环境中的复位,以及配置目标环境的访问策略。在某些情况下,某些管理操作由除了父级以外的组件执行。例如,在某些示例中,cpu正常世界是管理i/omcu核心480的环境,但是从cpu安全世界471接收帮助以进行这一操作(例如,配置防火墙,以及编程i/omcu480的启动指令)。

例如,在一些示例中,安全mcurt473管理cpuswrt472,cpuswrt471中的组件管理nwos472,cpunwos中的组件管理nw用户模式473和nw用户模式474,并且nw用户模式服务473管理i/omcu核心480和核心490。

在一些示例中,不仅是由来自更可信执行环境的软件组件管理独立执行环境,而且不同功能被分配给不同的独立执行环境,其中更敏感的功能被分配给更可信的独立执行环境。在一个特定示例中,与分配给它的独立执行环境相比不受信任的独立执行环境被限制访问该功能。以这种方式,独立执行环境基于信任层次实现纵深防御。在其他示例中,可以采用其他合适的安全手段。

例如,在一些示例中,核心安全性复合体469位于层级的顶部并且被分配给秘密(例如,加密密钥),安全mcurt480在层级中是下一个并且被分配给控制功率,swrt471在层级中是下一个并且被分配给存储和写入对实时时钟(rtc)的访问,nwos472在层级中是下一个并且被分配给wi-fi,nw用户模式应用474在层级中是下一个并且被分配给应用,并且i/omcu480核心位于层级的底部并且被分配给外围设备。在其他示例中,功能以不同的方式被分配给独立执行环境。

在一些示例中,除了层级的底部(即,最不可信)级别之外的信任层级的每个级别对接受或拒绝来自较不可信级别的任何请求具有完全控制,例如,在实现对于他们处理的软件的支持方面,并且具有对来自不太可信级别的请求进行速率限制或审计并且验证来自较低级别的请求以确保请求正确和真实的能力。此外,如前所述,在一些示例中,除了顶部(即,最可信)级别之外的层级的每个级别具有负责管理较低(即,较不可信)级别的父级,包括监测较低级别的软件并且确保较低级别的软件正常运行。

在一些示例中,层级的层利用安全通信信道和防火墙。例如,在一些示例中,安全mcurt471具有两个消息队列,这些消息队列被配置为使得基于硬件,其中一个队列仅可以在sw中使用,并且一个队列可以从nw使用。在一个特定示例中,如果消息来自sw队列,则基于硬件,消息必须来自sw,并且因此比来自nw的消息更可信。在其他示例中,可以采用其他合适的安全手段。

另外,在一些示例中,除了层级的最高层之外,没有层级中的层是在没有层级的如下更高级别的情况下开始的:其已经验证了该层并且在验证了该层之后允许该层开始。此外,在这些示例中,层级的层具有例如在任何时间停止任何较低级别的层级的能力。因此,在这些示例中,混合芯片445具有层级的每个层如下的软件能力:在停止和启动以及运行层级的较低级别方面具有完全支配层级的较低(即,较不可信)的等级。

在一些示例中,核心安全性复合体469是硬件信任根和深度防御信任层级的最高最可信级别。在一些示例中,核心安全性复合体469包含密钥、秘密、加密引擎等。在一些示例中,核心安全性复合体469存储秘密,执行诸如密钥生成、加密、解密、散列、其他加密功能、其他安全相关功能等功能。在一些示例中,核心安全性复合体469能够检查存储在诸如电子熔丝、一次性可编程元件等单向可写存储器中的秘密值。

在一些示例中,当混合芯片445通电并且其电源管理单元(pmu)具有稳定电源时,它从复位释放核心安全性复合体469。在一些示例中,核心安全性复合体469是混合芯片445的可信计算基础的核心。在一些示例中,核心安全性复合体469驱动安全引导过程。在一个特定示例中,核心被限制执行代码,直到核心安全性复合体469使得其能够这样做。在其他示例中,可以采用其他合适的安全手段。

在一些示例中,安全mcu460不包含存储器管理单元(mmu),但是包含可以用于提供一些安全措施(诸如物理地址空间的控制可读性、可写性和部分的可执行性)的存储器保护单元(mpu)。mpu可以以这种方式使用,例如,以将堆栈和存储器映射闪存标记为无执行。

在一些示例中,安全mcurom461负责初始化足够的混合芯片445,使得存储在闪存中的第一软件可以在安全mcu460上安全地执行。

在一些示例中,在进入时,安全mcurom461上的rom代码等待安全mcu460已经完成初始化的指示,读取指示设备的安全状态的电子熔丝,将锁相环(pll)配置为设置期望的稳态、芯片频率,并且启用闪存的存储器映射(对于所有核心)。在一些示例中,尽管安全mcu核心460不直接从闪存执行代码,但它确实利用该机制来容易地将数据从闪存读取和复制到其sram。

在这些示例中,在完成该配置之后,rom代码负责加载和转移控制以保护mcu引导加载程序462,mcu引导加载程序462是安全mcu460的第一级引导加载程序。在一些示例中,安全mcu引导加载程序462在已知位置在加密和签名的闪存中找到。在这些示例中,rom代码验证代码,并且将其加载到安全mcu460的专用sram中。在一些示例中,安全mcu引导加载程序462包含在混合芯片445上执行的非rom代码的第一指令,并且是固定大小(例如,16k)的原始二进制文件。在一些示例中,安全mcu引导加载程序462负责加载,验证和转移对安全mcu运行时463的控制,设置设备的软件密钥存储,实现用于重新编程闪存的低级“恢复模式”(用于开发目的,并且还可能用于现场更新——适当地保护),应用更新/回滚,以及在安全mcu460中配置和踢出安全监视器(watchdog)定时器(直到安全mcu-rt463取得控制)。

与其之前的rom代码非常相似,在这些示例中,安全mcu引导加载程序462将安全mcu-rt代码定位在闪存中,验证代码,将代码加载到安全mcu460的私有sram中,以及转移对代码的控制。在一些示例中,一旦安全mcu引导加载程序462以这种方式转移了执行,安全mcu引导加载程序462将不会重新获取控制,并且在安全mcu引导加载程序462已经完成执行之后,安全mcu引导加载程序462将不会保持驻留在安全mcu460的sram中。

在一些示例中,安全mcu运行时463负责管理cpusw环境。在一些示例中,安全mcu还负责管理和控制电源域和其他关键组件,例如,为其他核正确地设置调试启用信号,对混合芯片445上的不同域上电或断电,重新配置和踢出自己的安全mcu460的监视器定时器(接管安全的mcu引导加载程序),配置cpu470的监视器定时器并且响应于其复位中断,并且唤醒已经断电但是接收到中断的核心(cpu470或i/omcu480)。在一些示例中,安全mcurt463负责监测cpu470的swrt471以确保swrt471正确地运行并且复位swrt471。

安全mcurt463与核心安全性复合体469交互以请求核心安全性复合体469执行与核心安全性复合体469相关联的任务。例如,安全mcurt463可以请求安全性复合体469提取密钥,或者请求该核心安全性复合体469对所提取的密钥进行某些操作,请求该核心安全性复合体469生成密码,请求由核心安全性复合体469加密某些内容并且将加密的版本返回到安全的mcurt463,等等。在一些示例中,安全mcurt463本质上用作核心安全性复合体469的操作系统。

cpu470可以被配置为使得cpu470上的安全世界具有信任区域,该信任区域创建私有独立执行环境,该私有独立执行环境受到混合芯片445的其余部分的硬件保护。安全世界可以具有运行时、安全世界运行时471。在一些示例中,cpu470上的安全世界(sw)环境是混合芯片445的可信计算基础的一部分,并且因此不执行第三方代码。例如,sw可以具有其自己的内核和用户模式进程。swrt471可以负责保护混合芯片445上的安全敏感硬件资源,安全地暴露对这些资源的有限访问,并且用作cpu的普通世界(nw)环境472-474的监视器。例如,在一些示例中,swrt471负责监测nwos472,确保nwos472正确运行,并且复位nwos472。cpu470上的普通世界(nw)环境可以托管nwos472、nw用户模式服务473和nw用户模式应用474。在一些示例中,swrt471负责从不能访问安全mcu463rt的层向安全mcu463rt转发请求。

在一些示例中,cpu核心470不包含rom代码;相反,cpu核心470包含8字节的易失性存储器,该存储器包含供它在复位时执行的(多个)第一指令。在这些示例中,在cpu470退出复位之前,8字节的易失性存储器由安全mcu460编程以包含到cpuswrt471的第一指令的分支,以从共享sram执行。在一些示例中,cpu470被配置为使得在安全世界rt471中执行的代码从被配置为普通世界472-474不可访问的sram范围执行。

在一些示例中,swrt471还负责在cpu470上引导普通世界472-474,将运行时服务暴露给在普通世界472-474中运行的软件,访问实时时钟(rtc)、i/omcu480管理api、n9490管理api,管理普通世界472-474无法访问(并且不需要由安全mcu460管理)的硅组件,在宏模式下与闪存控制器交互,编程cpusw471dma引擎,所有防火墙的配置,核心i/o映射的配置,处理指示防火墙违规的中断,使i/omcu480和n9490核心无法复位,为i/omcu480核心配置监视器定时器,以及配置实时时钟(rtc)。由于安全世界还包含多种硬件模式(即,管理员模式、用户模式),因此swrt471可以在内部跨越多种模式以进行附加纵深防御。

如所讨论的,在一些示例中,cpu470的sw环境是cpu470的受硬件保护的私有执行环境。除了sw环境之外,cpu470的其余软件环境是nw环境。在某些示例中,存在sw可以读取但nw不能读取的寄存器。nw环境可以包括管理员模式和用户模式。cpu470的nw环境的管理员模式可以包括nwos472。cpu470的nw环境的用户模式可以包括nw用户模式服务473和nw用户模式应用474。

在一些示例中,nwos472负责管理nw用户模式应用474的资源。在一些示例中,nwos472负责管理wi-fi,并且层级上在nwos472以下(即,不太可信)的层不能直接访问wi-fi,但只能经由nwos472间接访问wi-fi。

在一些示例中,在cpunw用户空间中,运行一组运行时服务473,这些服务负责:引导i/omcu核心480(在swrt471的帮助下),引导核心490(在swrt471的帮助下),将设备遥测发布到iot服务,将诊断信息发布到iot服务,从iot服务接收和应用软件更新,以及处理来自i/omcu480监视器定时器的复位中断。

在一些示例中,cpu设备api在内部利用nw用户模式运行时服务473,并且抽象地提供托管在cpu(在nw中)上的第三方应用代码,其具有对以下功能的访问:发布设备遥测,发布诊断信息,与i/omcu核心480通信,控制和向外围设备发出i/o,以及应用代码。在一些示例中,混合芯片445的产品制造商和其他客户可以编写第三方代码以在nw中的cpu核心上执行。在一些示例中,应用代码能够使用cpu设备api,并且可以与在i/omcu核心480上执行的i/o运行时协调。

在一些示例中,混合芯片445包含旨在供客户使用以感测和致动的两个“i/o”mcu核心480。在这些示例中的一些示例中,i/omcu核心480都不包含任何rom代码。相反,在这些示例中,每个i/omcu核心480包含在特定物理地址处映射的8字节的易失性存储器。当i/omcu480内核开始执行时,它可以从该地址获取其初始指令。在每个i/omcu核心480退出复位之前,可以由cpu470编程8字节的易失性存储器以包含从闪存到i/omcu加载程序xip的第一指令的分支。

在一些示例中,公司可以使用i/omcu核心480微控制器来包括其现有微控制器上的代码,这可以允许公司用混合芯片445替换其现有的微控制器功能。

在一些示例中,混合芯片445的wi-fi堆栈在由生产芯片的硅供应商编程的核心490上执行。

虽然图4示出了混合芯片445的特定示例,但是混合芯片445的很多其他示例是可能的。例如,独立执行环境的数目和类型可以在不同示例中变化。混合芯片445具有至少两个具有不同能力的通用核心,使得混合芯片445具有异构核心。在一个示例中,具有不同能力的至少两个通用核心可以至少是微控制器和cpu,而在其他示例中,使用具有不同能力的其他通用核心。这两个核心是通用的,因为任何合适的代码都可以在核心上运行。例如,微控制器和cpu是通用核心,而图形处理单元(gpu)不是通用核心;相反,gpu用于处理非常特定类型的计算,并且只能运行某些类型的执行。虽然混合芯片445中的两个核心都是通用的,并且每个核心可以运行任何合适的代码,但它们具有彼此不同的能力。尽管cpu和微控制器二者都是通用核心,但cpu比微控制器强大得多并且可以执行微控制器无法执行的指令。这只是具有不同能力的两个通用核心的一个示例。虽然本文中讨论了特定核心,诸如cpu和mcu,但是在其他示例中,可以采用其他通用核心,诸如任何通用cpu、微控制器等。而且,在各种示例中可以采用各种数目的核心。

此外,在各种示例中,可以将不同的功能分配给层级的不同级别。例如,在图4所示的混合芯片445的示例中,控制功率的功能被分配给层级的更可信级别,而不是管理存储的功能。然而,在其他示例中,管理存储的功能而不是控制功率的功能被分配给层级的更可信级别。

虽然已经详细讨论了混合芯片445的各种示例,但是在一些示例中,使用没有这种混合芯片的iot设备。例如,一些示例iot设备包括具有安全世界和普通世界的应用处理器,但是不包括任何微控制器,或者包括图4所示的一些但不是全部微控制器(例如,安全mcu460和/或i/omcu核心480)。在一些示例中,安全性复合体被包括在除了mcu之外的一种核心中。一些示例iot设备包括安全性复合体和mcu,但不包括cpu。在这些示例中的一些示例中,上面针对cpu讨论的一些功能是在mcu中完成的,并且sw和nw可以驻留在mcu中。其他示例可以包括两个核心,包括安全mcu以及作为cpu或另一cpu的第二核心,在这种情况下,安全mcu充当sw,并且第二核心用作nw。而且,虽然iot设备包括一些网络通信装置,但是iot设备的各种示例可以包括任何合适的网络通信手段,并且一些示例不包括图4所示的n9wifi核心490。

虽然图4和相应的讨论具体涉及sw和nw,但是更广泛地说,在其他示例中,存在两个独立执行环境,其中两个独立执行环境中的一个比另一个更可信。更可信的独立执行环境更安全,并且具有比不太可信的独立执行环境更多的功能。例如,更可信的独立执行环境可以访问不太可信的独立执行环境不能访问的资源。在上面和下面给出的讨论安全世界和普通世界的示例中,更广泛地,这些语句可以扩展为指代更可信的独立执行环境和不太可信的独立执行环境。

例如,在一些示例中,更可信的独立执行环境可以是安全mcu,诸如安全mcu460,并且不太可信的独立执行环境可以是cpu,例如cpu470。

用于iot设备的设备更新可能经常发生。例如,可以更新iot设备上的应用、固件和/或其他软件。更新可以由被称为图像或图像二进制文件的集合二进制文件组成。在一些示例中,每个图像二进制文件具有相关联的图像元数据。在一些示例中,图像元数据可以包括图像的名称、图像的版本、签名等。在一些示例中,图像元数据存储在云中,例如以使其可查询。

在一些示例中,图像元数据也嵌入到图像二进制文件本身中,以确保任何图像二进制文件是自描述的。这可以通过将元数据作为单独的文件上载来实现,其中服务将图像二进制文件和元数据一起重新打包。备选地,元数据可以预先打包在图像二进制文件内,并且由服务解包。

在一些示例中,使用硬件库存单元(sku)作为描述硬件更新策略并且允许其有效实现的过程的一部分。在一些示例中,硬件sku不是单个芯片或设备的唯一标识符。相反,在这些示例中,硬件sku唯一地标识出售设备的特定配置(颜色、型号、能力、国家等)。在一个示例中,每个iot设备的硬件sku包括设备sku和芯片sku。在一些示例中,可以存在两个以上的描述性sku,使得三种或更多种类型的sku提供三个或更多个级别的层级。芯片sku可以定义在iot设备内运行的特定类型的混合芯片以及混合芯片的能力。序列号、公钥或设备id可以用于唯一地标识芯片的单个实例。

设备sku可以用作描述使用混合芯片的设备类型的标识符。sku可能是产品制造商使用的标识其产品系列中的特定型号和配置的sku。每个设备sku可以具有描述与软件相关的特征的一组属性。此外,每个设备sku可以具有描述具有该设备sku的所有设备包含的唯一芯片sku的属性。这些属性也可以被定义并且存储在sku注册表中的iot服务解决方案中。这些属性还可以描述制造商用于区分模型的特征(即,清洗器与干燥器、棕褐色与不锈钢),还有组成设备的小的差异(所使用的电机的硬件sku、连接到4×4芯片的led面板的类型)。在一些示例中,有两个sku注册表;用于设备sku的一个注册表和用于芯片sku的另一注册表。

版本描述了可以使设备可用的二进制内容。在一些示例中,版本由至少四个不同的实体组成:一组图像二进制文件、单个sku、组件id和语义版本。在一些示例中,每个iot设备上安装有两个不同的版本。在一些示例中,组件id收集应用于单个组件的所有图像。

在一些示例中,直到版本被部署前,版本对设备不可用。在一些示例中,部署使用定义部署所针对的设备的属性的一组约束来捆绑一组版本。在一些示例中,在注册并且激活部署之后,当最终计算哪些版本旨在用于设备时,将其包括在查询中。

在一些示例中,为了开始更新过程,软件工程师从本地机器向与iot设备的iot支持服务相关联的iot更新服务注册和上载新图像二进制文件。在一些示例中,上传的图像二进制文件应当被签名,例如,因为仅在图像二进制文件被签名时才会验证图像二进制文件。在一些示例中,图像签名允许将每个图像二进制文件认证为由可信实体签名。

在一些示例中,软件工程师还可以定义围绕特定sku的新版本并且将其注册到iot更新服务。工程师还可以增加发布版本号,为下一版本的版本组成一组图像二进制文件,确认合成图像二进制文件满足每个图像的元数据提供的所有约束,并且接收对约束兼容的图像二进制文件的建议。对于任何给定版本,软件工程师可以能够使用查询工具查看当前使用、用作备份或可用的版本的设备集。此外,工程师可以能够查询特定设备组并且确定该组当前正在使用哪组部署和版本。

一旦定义了新版本,工程师就可以通过定义部署来在一组机器处瞄准该版本。工程师可以针对单个sku(跨版本),或针对依赖于最近更新的图像二进制文件的所有sku。在部署被激活之后,当iot设备接下来检查更新时,它可以可供iot设备使用。在正常情况下,iot设备可以做出对于服务的请求以发送它,该服务当前以某种常规节奏(例如,每周)具有这些版本。工程师也可以主动请求设备立即做出该请求而不是以常规节奏。

在一些示例中,当版本经由部署使得可用于一组iot设备时,它将不会同时对该组中的所有iot设备可用。相反,在这些示例中,每个版本都在滚动部署中可用。通过部署到目标iot设备的小的子集来开始滚动部署。在更新成功完成时,符合部署条件的iot设备数目也会增加。

用于更新iot设备的过程的示例在图5a-图5c中示出。

图5a-图5c是示出用于iot设备更新的过程(550)的示例的逻辑流程图。在一个示例中,过程550由iot设备执行。在各种示例中,过程550可以包括比所示出的更多或更少的步骤。图5a-图5c所示和本文中讨论的过程550的特定示例仅作为示例,在本公开的范围内具有很多变化。图5a-图5c所示的具体示例示出了更新应用的示例。诸如其中正在更新os映像的示例等其他示例可以与图5a-5c所示的特定示例不同。

在开始框之后,过程前进到框551。在框551处,在一些示例中,iot设备上的应用处理器(例如,图4的应用处理器cpu470)上的nwos(例如,图4的nwos472)包括守护进程(daemon),该守护进程向云服务(例如,iot支持服务)发送关于iot设备是否存在当前可用的新设备更新的查询。该过程然后进行到框552。在框552处,iot设备上的nw守护进程可以从云服务接收与iot设备的更新有关的信息。在一些示例中,该信息包括iot设备应当在其上的版本的指示,并且包括与所指示的版本相关联的元数据(诸如语义版本)以及与所指示的版本中的每个图像二进制文件相关联的元数据,诸如id、版本等。在一些示例中,安全传输用于iot设备与云服务之间的通信。

然后,该过程前进到框553,其中将与请求的更新相关联的请求从nw传送到sw。例如,在一些示例中,nw做出与更新相关联的请求,并且将请求从nwos(例如,图4的nwos472)传递到swos(例如,图4的swrt471)。该过程然后进行到框554,其中验证请求的更新,例如因为swos可能不信任nwos。在框554处,在一些示例中,通过sw验证更新被正确签名,sw验证更新。在一些示例中,iot设备还通过将要安装以用于更新的图像二进制文件与已经安装在iot设备中的内容进行比较来确认是否应当下载新版本。在一些示例中,安全性复合体469验证更新而不是sw,或者与sw一起验证。

然后,该过程移动到框555。在框555处,将与经验证的更新相关联的指令从sw传送到nw。例如,在一些示例中,sw发送关于应当从云服务下载哪些图像二进制文件(以最终作为更新过程的一部分来安装)的nw指令。然后,该过程前进到框556。在框556处,对于与经验证的更新相关联的图像二进制文件,将图像请求从nw发送到云服务。例如,在一些示例中,对于sw指示的每个图像二进制文件,例如,在框555处,为了从云服务下载,nw守护进程向云服务发送下载图像二进制文件的相应请求。在一些示例中,云服务响应于对每个图像二进制文件的位置的请求而向nw守护进程发送每个下载的位置,然后nw守护进程向所指示的位置发送下载每个图像二进制文件的请求。

然后,该过程前进到框557。在框557处,sw从云服务接收请求的图像二进制文件。在一些示例中,iot设备上的ram不足以将图像二进制文件存储在存储器中,因此相反地每个图像二进制文件被流式传输到sw。在一些示例中,在云服务与iot设备之间使用安全传输。该过程然后进行到框558。在框558处,sw将所接收的图像二进制文件写入存储器。在一些示例中,sw将所接收的图像二进制文件写入闪存。

然后,该过程移动到框559。在框559处,验证所写入的图像二进制文件。例如,在一些示例中,sw通过针对每个图像二进制文件将图像二进制文件上的签名与在图像二进制文件的元数据中指示的相应签名进行比较来验证写入闪存中的每个图像二进制文件。以这种方式,在这些示例中,sw确认sw下载了sw指示应当下载的图像二进制文件。在一些示例中,安全性复合体469验证所写入的图像二进制文件而不是sw,或者与sw一起验证。

然后,该过程前进到框560。在框560处,在一些示例中,sw向nw守护进程指示下载已经完成(并且已经验证了所写入的图像二进制文件)。该过程然后进行到框561。在框561处,在一些示例中,nw守护进程确定何时切换到已更新版本,并且在所确定的时间,向sw指示切换(经验证的)已更新版本。该过程然后移动到框562。在框562处,在一些示例中,sw使下载的二进制图像集成为新的主要备份。然后,该过程前进到框563。在框563处,在一些示例中,sw向nw守护进程指示(经验证的)新的已更新版本的位置。

然后,该过程进行到框564。在框564处,在一些示例中,nw守护进程停止目标进程并且安装图像二进制文件。然后,该过程移动到框565。在框565处,nw完成更新过程。框565可以包括诸如重新启动、验证更新成功、向云服务通知更新成功的功能和/或其他合适的功能等功能。确切的完成更新过程可以基于例如正在更新的软件或固件的执行域而变化。然后该过程前进到返回框,其中恢复其他处理。

如上所述,图5a-图5c示出了用于更新应用的特定示例。诸如os等其他更新可以以类似的方式执行,除了在一些示例中,nw不参与该过程,或者被通知但是否则不涉及。在nw不参与更新的一些示例中,sw可以更新安全性复合体、swos和/或nwos,而nw或i/omcu不参与更新过程。

此外,如上所述,虽然图5a-5c给出了包括sw和nw世界的特定示例,但是更广泛地,该过程可以应用于更可信的独立执行环境和不太可信的独立执行环境。

结论

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

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