安全引擎方法、物联网设备、非暂时性计算机可读存储介质与流程

文档序号:17317655发布日期:2019-04-05 21:21阅读:143来源:国知局
安全引擎方法、物联网设备、非暂时性计算机可读存储介质与流程

本公开一般地涉及通常在嵌入式应用中所使用类型的微控制器。更具体地但非排他性地,本公开涉及一种被布置以用于在安全环境中的操作的微控制器。



背景技术:

微控制器是一类集成电路,其包含在同一集成电路封装中的微处理器和至少一些存储器。在一些情况下,由微处理器可访问的所有存储器都被包含在集成电路封装内。在其他情况下,存储器的第一部分被包含在集成电路封装中,并且存储器的第二部分在集成电路封装之外并且经由一个或多个数据路径(例如,总线)对微处理器可访问。

除了微处理器和存储器之外,微控制器通常还包括至少一个输入/输出(i/o)控制电路。i/o控制电路系统为微控制器提供用于与外界交互的架构。经由i/o控制电路系统,任何数目和任何类型的输入设备可以被电耦合到微控制器以提供用于由微处理器处理的数据。按照这些方面,i/o控制电路系统还可以被布置为将由微控制器所生成的数据传递到外界。

微控制器可以在零售设备、消费者设备、工业设备、医疗设备、车辆、以及几乎任何其他类别或技术领域的设备中找到。这些设备可以电池供电或由硬连线电源供电。采用微控制器的设备可以是便携式的、固定式的或其某种组合。没有任何限制,微控制器被用于从所有类型的传感器(例如,温度、时间、湿度、加速度、运动、开关、触发器等)取得数据,以及微控制器被用于向外界(例如,视觉、音频和触觉信号器、开关、触发器等)提供数据。

图1是示出常规微控制器架构10的框图。在微控制器10中,微处理器12被布置成用于与存储器14进行数据通信。存储器14包括物理存储器和控制电路系统,控制电路系统用以将信息传递到物理存储器以及从物理存储器传递到微控制器10的其他电路。可选地,存储器14还可以包括使用存储器型接口访问的其他电路。存储器14的物理存储器可以是易失性存储器或非易失性存储器。图1所图示的存储器14包括随机存取存储器(ram)14a、闪存14b、以及经由存储器型接口所耦合的可选的其他电路14c。每种类型的存储器、ram14a、闪存14b和可选的其他电路系统14c被定位于微控制器10的板上。如虚线所表示,每种类型的存储器也可以具有在微控制器10的集成电路封装外部的部分。

微控制器10的微处理器12和存储器14根据具有所确定的“宽度”的存储器空间来组织。“宽度”通常基于给定微处理器12可以并发地处理多少数据,并且按照这些方面,“宽度”通常由在微控制器10内移动数据的一个或多个总线上并发地传递的“位”的数目来镜像。

在图1的图示中,微控制器10具有32位宽的架构。考虑到物理存储器设备中的每个唯一地址通常被布置为存储单一字节的数据,32位宽的架构可以唯一地寻址4千兆字节(4gb)的数据。这种架构在图1中被图示为跨越整个4gb的可寻址空间的存储器映射16。换言之,使用十六进制表示法,存储器映射16的各个地址可以从0x0000-0000到0xffff-ffff(即,以十进制(基数10)表示的0到4,294,967,295)计数。

微控制器10的微处理器12可以寻址存储器映射16中的任何位、半字节、字节、半字、字、双字、四字等。如果系统工程师在32位存储器总线上定位设备(例如,存储器、pci总线、usb主机控制器等),并且如果设备具有其自己的单个或一组32位地址,则微处理器12将能够通过在32位存储器总线上放置表示设备地址的一组数据位来访问设备。在微控制器10中,存储器映射16中的每一个唯一地址由微处理器12可访问。

图1的微控制器10包括i/o电路系统18、管理电路20、中断处理电路系统22、直接存储器访问(dma)电路24、和可选的其他电路(未示出)。i/o电路系统18如本文所描述操作以从外界接收数据以及向外界提供数据。

管理电路系统20可以包括任何数目的逻辑模块。逻辑模块可以被布置为包括或以其他方式管理时钟、振荡器、定时器、功率模式、音频接口、模拟/数字特征(例如,模拟到数字控制器(adc);数字到模拟控制器(dac))、通信接口、调试接口等。

中断处理电路系统22被布置为处理由微处理器12对正常处理的计划和非计划的中断。中断可以与系统时钟同步或异步。计划中断的示例包括到期定时器、某些i/o控制电路输入(例如,按键、串行或并行输入数据等)。非计划中断的示例包括即将掉电中断(imminentlossofpowerinterrupts)、复位(resets)、错误陷阱(errortraps)、看门狗超时(watchdogtimeouts)等。

dma电路系统24操作以将数据从微控制器10中的一个位置复制到另一位置,而不使用微处理器12来执行复制。例如,在ram14a的一个区域中所存储的数据可以通过加载dma电路系统24的各种寄存器而被自动复制到ram14a的另一区域。除了利用适当的值来设置寄存器之外,复制操作自动发生而无需来自微控制器12的任何进一步干预。通常,dma电路系统24被用于复制大量数据。在另一示例中,其他电路系统14c包括通用串行总线主机控制器。在这个示例中,dma电路系统24可以被用于在另一电路系统24的usb主机控制器与ram14a之间复制批量数据。

“背景技术”部分中所讨论的所有主题不一定是现有技术,并且不应当仅仅因为其在“背景技术”部分中的讨论而被认为是现有技术。除此之外,除非明确地说明是现有技术,否则对在“背景技术”部分中讨论的或与这样的主题相关的现有技术中的任何问题的识别都不应当被视为现有技术。相反,“背景技术”部分中对任何主题的讨论应当被视为发明人对特定问题的方法的一部分,其本身也可能具有创造性。



技术实现要素:

本公开中描述的固件架构组合特定机制和策略以执行安全功能,同时保护通用微控制器中的秘密信息,诸如安全密钥。固件创新地结合了ip和所选择的功能以创建安全的工作区域。这允许在单个设备的不同存储区域中运行的独立应用之间共享执行安全操作(例如,密码操作、密钥处理和敏感数据的读取/写入)的一组功能。这样的独立应用的示例是安全固件更新应用、安全引导功能、安全固件更新/安装功能和独立用户应用。对安全操作的访问是通过将安全功能实施为“安全引擎”的一组应用编程接口(api)而进行的。

在第一实施例中,一种安全引擎方法包括在微控制器的内部存储器中提供安全环境。安全环境具有由微控制器的微处理器可执行的安全引擎程序指令。该方法还包括限制对安全环境的用户级访问以及识别微控制器的引导序列。在识别引导序列之后,该方法包括禁用可被配置为访问安全环境的存储器的微控制器的所有直接存储器访问控制器(dma),配置微控制器的至少一个存储器控制器以用于对安全环境的访问,防止微控制器的微处理器执行从安全环境之外取出的指令,以及仅准许执行从安全环境取出的指令。执行各种安全引擎程序指令以作为状态机,这包括:禁用中断,在中断被禁用之后执行至少一个安全操作,以及在执行至少一个安全操作之后启用中断。该方法还包括清除存储器,恢复在识别引导序列之后所禁用的、每个dma控制器的启用/禁用状态,以及执行用户级操作。

在第一实施例的一些情况下,由微控制器的微处理器可执行的安全引擎程序指令存储在非易失性存储器中。在第一实施例的这些或一些其他情况下,微控制器是嵌入式设备中的嵌入式微控制器,并且至少一个安全操作包括嵌入式设备的安全引导,并且在这些类型的实施例中的其他实施例中,至少一个安全操作包括对嵌入式设备的固件的更新。在第一实施例的一些其他情况下,至少一个安全操作包括签名验证功能,和/或执行至少一个安全操作的动作包括访问受保护的隐藏值。

在第一实施例的一些情况下,微控制器是嵌入式设备中的嵌入式微控制器,并且嵌入式设备是可穿戴设备;在这些或其他一些情况下,嵌入式设备是物联网设备。在一些情况下,在识别引导序列之后,启用防火墙以保护安全环境,并且执行各种安全引擎程序指令以作为状态机包括执行调用门函数以在安全环境内打开访问区域。在一些情况下,其中防火墙被实施,在执行至少一个安全操作之后,第二调用门函数关闭安全环境内的访问区域。

在第二实施例中,一种物联网(iot)设备包括微控制器,微控制器具有微处理器和被配置在微控制器内部的存储器。这里,内部存储器具有被配置在其中的安全环境,并且安全环境具有由微处理器可执行的安全环境配置指令和由微处理器可执行的安全引擎程序指令。在识别引导序列之后,微处理器经由安全环境配置指令被指示:禁用可被配置为访问安全环境的存储器的每个直接存储器访问(dma)控制器,以及配置至少一个存储器控制器以用于对安全的环境的访问。安全环境配置指令还指示微处理器防止微处理器执行从安全环境之外所取出的指令。经由安全引擎程序指令,微处理器被指示仅准许执行从安全环境所取出的指令。安全引擎程序指令还指示微处理器禁用中断,在中断被禁用之后执行至少一个安全操作,以及在执行至少一个安全操作之后启用中断。经由安全环境配置指令,微处理器被指示清除存储器,以及恢复在识别引导序列之后所禁用的、每个dma控制器的启用/禁用状态。

在第二实施例的一些情况下,iot设备被布置为可穿戴计算设备。并且在一些实施例中,iot设备包括通信接口和至少一个传感器。这里,至少一个传感器被布置为向微控制器提供传感器数据。在第二实施例的这些或其他情况下,至少一个安全操作是加密操作,或者至少一个安全操作是安全密钥操作。

在第三实施例中,一种非暂时性计算机可读存储介质具有所存储内容,所存储的内容将计算系统配置为实施一种安全引擎方法。安全引擎方法包括限制对在非暂时性计算机可读存储介质中所定义的安全环境的用户级访问并且检测引导序列。在检测引导序列之后,该方法包括禁用直接存储器访问(dma)控制器,配置至少一个存储器控制器以用于由安全引擎对安全环境的访问,以及防止执行从安全环境之外所取出的任何指令。该方法还包括执行安全引擎程序指令,其包括禁用中断,在中断被禁用之后执行至少一个安全操作,以及在执行至少一个安全操作之后启用中断。该方法还包括清除至少一些易失性存储器,重新启用所禁用的dma控制器,以及执行用户级操作。

在第三实施例的一些情况下,在检测到引导序列之后,该方法包括启用防火墙以保护安全环境。这里,执行至少一个安全操作包括执行调用门函数以打开安全环境内的访问区域。在这些实施例的一些中,在执行至少一个安全操作之后,该方法包括执行第二调用门函数以关闭安全环境内的访问区域。

在第三实施例的其他情况下,至少一个安全操作包括安全引导操作。并且在其他情况下,至少一个安全操作包括安全固件更新操作。

具有随后将很清楚的其他目的和优点的这些特征存在于构造和操作的细节中,如下文中参考形成其一部分的附图更全面地描述和要求保护的。

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

附图说明

参考以下附图描述了非限制性和非穷举性实施例,其中除非另有说明,否则相同标记在各个视图中指代相同部件。附图中元件的尺寸和相对位置不一定按比例绘制。例如,选择、放大和定位各种元件的形状以提高绘图的易读性。为了便于在附图中识别,选择了所绘制的元件的特定形状。在下文中参考附图描述一个或多个实施例,其中:

图1是示出常规微控制器架构的框图;

图2是示出被配置为实施安全环境的微控制器的框图;

图3图示了在存储器映射中所定义的位置处在存储器中所形成的安全环境的内容的一个示例性实施例;

图4是表示使用一个安全环境实施例的数据流程图;以及

图5是表示实施多个安全环境实施例的数据流程图。

具体实施方式

本发明人已经认识到,很多微控制器设计公司采用特定机制来降低黑客攻击的成功率。在许多情况下,这些特定机制包括被用于对抗盗版克隆攻击、未授权的数据复制攻击、以及错误地验证恶意程序指令或数据的攻击的“安全密钥”操作。采用安全密钥来防止恶意软件侵入微控制器的一个原因是,一些数据表明高达95%的微控制器攻击涉及由微控制器当前使用的软件。

然而,常规地部署的安全密钥操作具有缺点。例如,被用于解码或加密数据的安全密钥通常通过专用于安全性的附加微控制器来实施。虽然这种方法是有效的,但是附加的微控制器在财务上昂贵,资源昂贵并且成品电路板昂贵。也就是说,添加附加的计算和支持电路系统会提高部署有微控制器的每个终端产品的价格,附加的计算和支持电路系统占用已经拥挤的集成电路和已经拥挤的电路板上的空间,并且附加的计算和支持电路系统需要期望不可用的功率。

现在所呈现的本公开内容在其他常规的未受保护的存储器内建立安全环境,也被称为存储器保护单元(mpu)。在创建安全环境之后,安全密钥或任何其他秘密数据、秘密算法等可被上载到安全环境中。然后可以使用秘密数据。在使用完成之后,清除任何其他未受保护的存储器、寄存器等,并且在清除这些其他未受保护的资源之后,可以由微控制器以常规方式执行其他非安全应用软件。

本发明的一个非限制性实施例包括具有特定配置的微控制器。特定配置定义由微控制器的微处理器可访问的存储器地址空间内的安全环境。在安全环境中所存储的数据包括由微处理器可执行的软件指令。如果试图在未授权的情况下不正确地或以其他方式访问安全环境中的存储区域,则微处理器将停止操作,从而防止对安全环境的未授权访问。备选地,当安全环境软件指令被适当地执行时,则准许安全引导、安全固件更新或其他安全操作。

当安全环境软件指令被适当地执行时,指令禁用微控制器的某些功能,包括直接存储器访问(dma)电路系统的操作和某些通信接口(例如,通用串行总线(usb)、外围组件接口(pci)等)的操作。可以启用微处理器的其他特定保护,诸如防火墙。在执行用以准备微控制器的初始处理之后,安全环境软件指令作为安全状态机进行操作。

安全状态机进入受保护的工作区域环境,禁用中断,打开通过防火墙的部分或管道,并且准许安全操作。安全操作可以包括更新集成有微控制器的设备的固件,访问诸如安全密钥、银行数据、健康记录或其他秘密数据等私人信息。在安全操作完成之后,先前被打开的通过防火墙管道将被关闭,中断将被重新启用,并且退出受保护的工作区域。

现在已经完成的安全操作导致从安全状态机退出。然后清除存储器,恢复防火墙和其他先前所配置的保护(如果它们被实施和更改),并且编程返回到正常的用户模式操作。

在以下描述中,阐述了某些具体细节以便提供对各种所公开的实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有这些具体细节中的一个或多个的情况下或者利用其他方法、组件、材料等的情况下实践实施例。在其他情况下,未详细示出或描述与包括客户端和服务器计算系统的计算系统相关联的公知结构以及网络,以避免不必要地模糊对实施例的描述。

图2是示出被配置为实施安全环境130的微控制器100的框图。在一个或多个实施例中,微控制器100被形成为单一集成电路封装(即,集成电路)中的电子结构的集合。在一些实施例中,微控制器100的结构可以被形成在两个以上的集成电路封装中,以及在一些情况下,分立电子设备和其他电路系统被电耦合到微控制器100以支持各种微控制器功能。构成微控制器100的电子结构可以利用已知的硅制造工艺或其他半导体制造工艺形成。

在微控制器100中,根据存储器映射116,微处理器112被布置以用于与存储器114进行数据通信。每个结构、设备和存储器114的其他这样的装置(其包括诸如随机存取存储器(ram)114a等易失性存储器、诸如闪存114b等非易失性存储器、可选的其他存储器型电路系统114c、存储器保护逻辑114d、以及防火墙逻辑114e)可以根据其在存储器映射116中的相应指派来被寻址。微控制器100还包括输入/输出(i/o)电路系统118、管理功能电路系统120、中断电路系统122和直接存储器访问(dma)电路系统124。

在本公开中,如图2所示,本领域普通技术人员将从广义上理解微处理器112。本领域普通技术人员将认识到,术语“微处理器”在本文中用于简洁并且促进对本公开中的主题的高效理解,而不是仅表示具有特定和具体架构设计的单一设备。因此,如本文中使用的,“微处理器”意指独立地、协作地或者独立地和协作地二者操作的一个或多个微处理器。本文中所讨论的微处理器可以被形成为中央处理单元、图形处理单元、视频处理单元、数字信号处理器(dsp)或其他类型的专用处理单元中的任何一种或多种。并且,本文中所讨论的微处理器可以是微处理器、处理核、执行单元、控制器、微控制器、处理器、状态机、算术逻辑单元(alu)或被配置为执行经编程的软件指令的其他类似的电子控制电路系统装置。这些经编程的软件指令可以是高级软件指令、经编译的软件指令、汇编语言软件指令、机器代码软件指令、目标代码、重定位或可重定位代码、二进制代码、微代码等。经编程的软件指令可以驻留在内部或外部存储器114中,或者可以被硬编码为状态机或一组控制信号。根据本文中所引用的方法和设备,一个或多个实施例描述了在被执行时执行一个或多个方法动作的由处理器可执行的软件。因此,本公开的微处理器包括控制至少一个操作的任何电子设备、系统或其部件,并且这样的设备可以以硬件、固件或软件或其中的至少两个的某种组合来实施。与微处理器相关联的功能可以是集中的或分布式的,无论是本地还是远程。

存储器114包括物理存储器、经映射的或其他虚拟存储器、一个或多个存储器控制器、一个或多个存储器总线、以及所使用的其他电路系统以使得本公开中所描述的存储器装置可以在微处理器112、存储器114和微控制器100的某些其他电路之间协作地传递数据。被传递去往和来自某些其他电路的数据可选地包括使用存储器型接口所访问的电路以及生成或接收与存储器功能相关联的控制信号的电路。

存储器114的物理存储器可以是易失性存储器或非易失性存储器。图2所图示的存储器114包括随机存取存储器(ram)114a,随机存取存储器(ram)114a可以是静态ram(sram)、动态ram(dram)或某种其他类型的ram。易失性ram114a可以符合同步存储器访问协议,诸如sdram,并且另外地或备选地,易失性存储器可以遵从异步协议。易失性存储器可以被组织为物理上被定位于微处理器附近以减少数据传输时间并且预测性地重新使用数据的一种或多种类型的高速缓冲存储器。在一些情况下,由微处理器112所执行的程序指令被存储在ram114a中。存储器114还可以包括任何形式的可擦除可编程只读存储器(eprom),其在图2中所图示为闪存114b。在一些情况下,存储器114的物理存储器作为虚拟存储器被访问,并且虚拟存储器可以被映射到物理存储器、电子设备或某个其他结构。

在本公开中,存储器114可以以一种配置或另一种配置使用。存储器可以被配置为存储数据。备选地或另外地,存储器可以是非暂时性计算机可读介质(crm),其中crm被配置为存储由微处理器112可执行的指令。这些经编程的软件指令可以被单独地存储或作为文件中的指令组存储。文件可以包括功能、服务、库等。文件可以包括一个或多个计算机程序,或者可以是较大计算机程序的一部分。备选地或另外地,每个文件可以包括用于执行本公开中所描述的系统、方法和装置的计算功能的数据或其他计算支持材料。

为简洁起见,图2所图示的存储器114包括ram及其相关联的控制电路系统(ram114a)、闪存及其相关联的控制电路系统(闪存114b)、以及可以包括存储器、具有存储器型接口的设备、相关联的控制电路系统等的其他可选的存储器型电路系统114c。存储器114还可选地包括存储器保护逻辑114d和防火墙逻辑114e。ram114a和闪存114b中的每个被定位于微控制器100的板上。在被包括时,可选的其他存储器型电路系统114c也可以被定位于微控制器100的板上。可选的逻辑模块、存储器保护逻辑114d和防火墙逻辑114e包括被定位于微控制器100的板上的特殊的控制寄存器、比较器电路系统、控制电路等。如由存储器114的虚线所示,ram114a、闪存114b和可选的其他存储器型电路系统114c中的每个也可以具有在微控制器100的集成电路封装外部的部分。

图2的微控制器100包括用以从外界接收数据以及向外界提供数据的i/o电路系统118。i/o电路系统118可以包括专用i/o电路(dedicatedi/ocircuits)、专用i/o电路(specializedi/ocircuits)、通用i/o电路(gpio)、以及其他类型的i/o电路中的任何一种或多种。i/o电路系统118为微控制器118提供用以与外界交互的架构。被电耦合到微控制器100的任何数目和任何类型的输入设备可以经由i/o电路系统118向微处理器112提供数据。按照这些方面,i/o电路系统118也可配置为以任何期望的形式从微控制器100向外界传递数据。在一些情况下,i/o电路系统118被耦合到提供进入安全环境130的安全引擎过程(图4)的机会的其他电路系统。

管理功能电路系统120可以包括任何数目的逻辑模块。例如,管理功能电路系统120的逻辑模块之一管理复位功能。复位控制电路系统可以识别将微控制器复位到已知初始化状态的任何数目的事件。已知的初始化状态可以是硬引导状态、软引导状态、低功率状态、待机状态、从待机返回状态、看门狗超时状态、外部硬件复位状态、软件复位状态、防火墙保护状态或任何其他这样的复位事件。在特定复位时,微控制器100将具有被加载到一组已知的可配置寄存器中的一组已知值。对于本文中所讨论的任何一个或多个特定复位状态,这组已知值和对应的一组已知的可配置寄存器可以是不同的。在一些情况下,已知值是硬连线、硬编码、出厂设置、电路板设置(例如,跳线、引脚头等)、或者由程序员或微控制器100的用户无法更改。在其他情况下,一些或所有已知值可以在制造时,在首次使用时或在微控制器100被投入使用之后的任何其他时间设置。

在本文中所讨论的一些实施例中,当进入任何一种或多种类型的复位状态时,微控制器可以开始执行安全引擎过程(图4)。在一些实施例中,存在其他进入安全引擎过程的方式,诸如通过特定软件命令或序列。在这些或其他实施例中,每次复位控制功能被唤起时,管理功能电路系统120将提供进入安全环境130的安全引擎过程(图4)的机会。

管理功能电路系统120的另一逻辑模块是时钟和定时器控制模块。时钟和定时器控制模块包括用以控制通用定时器、专用时钟和定时器功能、基本定时器、低功率定时器、振荡器、独立看门狗电路、系统窗口看门狗电路、实时时钟、相对时间时钟、服务时钟和其他这样的时钟和定时器控制中的任何一种或多种的电路系统。

管理功能电路系统120可以包括功率控制模块。功率控制模块可以被布置为控制微控制器100的任何数目的功率模式,包括:低功率模式、全功率模式、睡眠模式、待机模式等。功率控制模块可以包括自动功率缩放电路(例如,动态电压缩放)、可控调节电路、掉电电路和其他相关功率控制电路。在一些情况下,功率控制模块被耦合到复位控制电路系统、时钟和定时器控制模块以及微控制器100的其他模块中的任何一个或多个。

在一些实施例中,管理功能电路系统120包括模拟/数字特征模块(例如,模拟到数字控制器(adc);数字到模拟控制器(dac);比较器电路系统)。在一些情况下,例如,adc电路系统包括执行逐次逼近转换的多位(例如,8、12、16、24等)adc。如果包括这样的电路系统,则dac电路可以具有对应的宽度或不同的宽度。模拟/数字特征可以具有一个或多个信道。在一些情况下,模拟/数字特征模块包括比较器电路系统。比较器电路系统可以被耦合到adc电路、dac电路、定时器电路、复位电路、输入/输出(i/o)电路以及任何数目的其他电路。在一些情况下,比较器被耦合到加密模块(例如,高级加密标准(aes)、数据加密标准(des)等)。加密模块可以包括专用硬件电路系统、隔离硬件电路系统、模糊硬件电路系统或其他类型的硬件电路系统。模拟/数字特征可以被耦合到功率控制模块、时钟和定时器控制模块以及微控制器100的其他模块。

通信模块被包括在管理功能电路系统120中。通信模块可以包括用以为微控制器100提供通信架构的任何数目的子模块、接口、媒体控制器等。例如,可以包括任何数目的通用异步接收器/发射器(uart)电路,并且备选地或另外地,可以包括任何数目的同步接收器/发射器电路、串行外围接口(spi)电路和内集成电路(i2c)电路。通信模块可以提供用于调试功能、用户功能、音频功能、有线功能、无线功能等的通信。

本文中所描述的任何数目的这些电路、模块、子模块和结构可以被包括在管理功能电路系统120中。任何其他这样的装置、甚至为了简洁而在本文中未描述的那些装置也可以被包括在管理功能电路系统120中。管理功能电路系统120的这些电路、模块、子模块和结构中的任何一个也可以被直接电连接或间接电耦合到复位控制功能,复位控制功能提供进入安全环境130的安全引擎过程(图4)的机会。

中断处理电路系统122被布置为处理由微处理器112用以正常处理的计划和非计划中断。中断可以与系统时钟同步或异步。计划中断的示例包括到期定时器、某些i/o控制电路输入(例如,按键、串行或并行输入数据等)。非计划中断的示例包括即将掉电中断、复位、错误陷阱、看门狗超时等。在一些情况下,一个或多个中断控制器彼此自主地操作,并且在其他情况下,一个或多个中断控制器彼此协作地操作。以这种方式,中断功能可以嵌套、优先化、专用或以其他方式实施。任何一个或多个中断控制器、各个中断或其组可以被布置以唤起复位控制功能的操作,复位控制功能提供进入安全环境130的安全引擎过程(图4)的机会。

dma电路系统124被配置为在外围设备和存储器以及在存储器与存储器之间提供高速数据传输。外围设备可以包括i/o电路系统118、管理功能电路系统120和其他存储器型电路系统(例如,usb主机控制器、pci设备等)中的任何一种或多种。存储器可以包括存储器114的任何结构。一旦被配置,dma电路系统124可以被用于通过直接存储器访问来快速移动数据而无需由微处理器112的任何进一步动作。dma电路系统可以提供任何数目的独立的、依赖的、协同的、嵌套或其他渠道。dma电路系统124可以被耦合到管理功能电路系统120、中断电路系统122、或提供进入安全环境130的安全引擎过程(图4)的机会的其他电路系统。

微控制器100的微处理器112和存储器114根据具有所确定的“宽度”的存储空间来组织。“宽度”通常基于给定微处理器112可以并发地处理多少数据,并且按照这些方面,“宽度”通常由在微控制器100内移动数据或指令的一个或多个总线上并发地传递的数据或指令“位”的数目来镜像。在一些情况下,微控制器100被组织为具有8位、16位、32位、64位、128位或某个其他宽度的固定宽度。在其他情况下,微控制器100被组织为具有默认宽度(例如,8位、16位、32位、64位、128位或某个其他宽度),并且在这些情况下,操作微控制器100的宽度可以被配置为根据不同的宽度进行操作。

在图2的图示中,微控制器100具有32位宽的地址架构,但是本公开的发明主题不限于此。本文中所描述的发明方面可以适当地适于具有根据不同宽度而固定地或可配置地组织的其他微处理器的其他微控制器设备。

图2的存储器映射116被示出为具有跨越4千兆字节(4gb)的32位宽地址空间,其使用从0x0000-0000到0xffff-ffff(即,以十进制(基数10)表示的0到4,294,967,295)计数的十六进制符号可寻址。微控制器100的微处理器112可以寻址存储器映射116中的任何位、半字节、字节、半字、字、双字、四字等。如果微控制器100的设计者、或者如果在设备中实施微控制器100的系统工程师在32位存储器总线上定位设备(例如,存储器、pci总线、usb主机控制器等),并且如果设备具有其自己的单个或一组32位地址,则微处理器112将能够通过在32位存储器总线上放置表示设备地址的一组数据位来访问设备。与常规微控制器(例如,图1的微控制器10)不同,存储器映射116中的一些唯一地址不能被微处理器112完全访问。

图2的存储器映射116包括安全环境130。安全环境可以由微控制器100的制造商、集成有微控制器100的设备的原始设备制造商(oem)、或由微控制器100的终端用户(例如,程序员)来定义。在一些情况下,创建两个以上的安全环境130。可以在存储器114中连续地创建多个安全环境130。备选地或另外地,安全环境130可以彼此分离并且彼此不同。

安全环境130包括由微处理器112可执行的数据和安全环境软件指令。安全环境130负责在其他非安全的微控制器100中管理秘密操作(例如,对安全密钥的访问、加密算法、加密、解密、签名验证等)。在一些情况下,安全环境软件指令创建固件架构,这种架构结合特定机制和策略,以执行秘密功能,同时保护微控制器100中的秘密信息(例如,安全密钥、财务信息、健康信息等)。可以通过组合微控制器100的某些保护机制以创建安全工作区域来实现这些目的。以这种方式,可以在运行在单一设备的不同存储区域中的独立应用之间共享执行安全操作(例如,密码操作、安全密钥处理和敏感数据的读取/写入)的一组功能。这样的应用的一个非限制性示例是对微控制器100的安全固件更新,并且其他非限制性示例包括用户应用(例如,银行应用、支付应用、准许物理访问安全物理空间的人类识别应用)、物联网(iot)设备、可穿戴计算设备(例如,运动设备、医疗设备等)、工业设备、车载汽车设备等。在一些情况下,在保护秘密信息的同时执行安全(即,秘密)操作的所共享的这组功能由可以被称为“安全引擎”的安全引擎应用编程接口(api)来公开。

安全环境130的一个或多个参数可以是固定的或者由制造商或微控制器100在设计时以其他方式布置。另外地或备选地,安全环境130的一个或多个其他参数可以是固定的或者由将微控制器100集成在诸如嵌入式设备等特定设备中的原始设备制造商(oem)在实施时以其他方式布置。在这些或其他情况下,安全环境130的一个或多个其他参数可以是固定的或者由创建程序功能的程序员或者由oem所提供的嵌入式或其他设备在运行时以其他方式布置。这些参数可以被存储在微控制器100中,以由可选存储器保护逻辑114d和可选防火墙逻辑114e中的至少一个的控制电路系统使用。当这样被包括时,这些逻辑模块包括能够在特定时间实现对存储器保护和防火墙机制的配置访问(诸如与引导过程立即同时)的至少一些专用电路系统。

为了建立或以其他方式实施安全环境130,ram114a、闪存114b和其他可选存储器型电路系统114c的相关联的控制电路系统可以包括一个或多个存储器保护机制。备选地,一个或多个存储器保护机制可以被形成在单独且不同的存储器保护逻辑114d模块中。这样的机制可以被配置为保护存储器114的部分免受不希望的访问(即,读取、写入、执行或其任何组合),这可以包括秘密数据的窃取、代码窃取或其他恶意访问。

一种类型的存储器保护机制可以包括用以保护存储安全环境软件指令的存储器114的易失性或非易失性区域的专用硬件监测电路系统。这种专有代码读出保护(pcrop)机制监测存储器的一个或多个块(例如,页面、扇区等),并且如果尝试读取访问、写入访问、指令执行访问(例如,代码取出)或其他类型的访问,则pcrop机制阻止这样的访问。在这些情况下,微处理器112可以停止,可以进入有限功能的已知安全状态,或者可以执行其他操作。

在一些实施例中,在构建时识别要使用pcrop机制进行保护的代码。例如,可以断言标志或某个其他值以触发编译器工具集的特定操作。以这种方式,微控制器制造商或oem可以创建安全环境130的pcrop保护区域,但是用户应用可以不创建、改变或获取对pcrop保护区域的访问。一旦pcrop保护区域被建立,在一些实施例中,它们可以仅通过对存储器114的受保护区域或甚至整个存储器114的质量擦除来被清除。

被提供用以建立和维持安全环境130的另一种类型的存储器保护机制是读取保护(rdprot)机制,rdprot机制提供防止对存储器114的所指定安全区域的未授权读取的安全性。在一些情况下,微控制器100在特定寄存器中提供rdprot位字段,并且这个位字段在引导时被加载到只读寄存器中(例如,由管理功能电路系统120的复位控制电路系统所识别的事件)。

在至少一个实施例中,rdprot机制部署三个特定保护级,但也可考虑少于或多于三个保护级。在这样的实施例中,第一保护级是rdprot机制的有效禁用,并且如果没有其他保护被启用,则存储器114的所有部分都是可访问的。第一保护级可以通过将第一级保护值(例如,0xaa)加载到rdprot配置寄存器中来设置。这样的实施例中的第二保护级是限制对某些存储器(例如,安全环境软件指令、安全环境数据、某些备份寄存器、某些存储器配置控制寄存器等)的访问到存储器读取保护级。

第二保护级可以通过将第二级保护值(例如,0x55)加载到rdprot配置寄存器中来设置。第二保护级也可以在以下情况下自动设置:在调试器被连接到微控制器100时,在微处理器112的某些控制寄存器中所存储的数据不匹配时,在某些控制寄存器中的值被改变时,以及在其他情况下。在一些情况下,启用rdprot的第二保护级的违规只能通过重新启动微处理器112(例如,由管理功能电路系统120的复位控制电路系统所识别的事件)来复位。当进入第二级rdprot时(例如,图3中的“数据保护l2”),可以禁止对某些专有程序存储器和数据的所有访问。可以进一步防止微处理器112执行从存储器114的易失性部分(例如,ram114a)取出的任何安全环境软件指令。在一些情况下,在rdprot机制的第二保护级下所保护的特征的任何违规都会导致微处理器112的硬复位。

在一些实施例中,rdprot机制的第三保护级可以通过将第三级保护值(例如,0xcc)加载到rdprot配置寄存器中来设置。在一些情况下,也可以自动进入第三保护级。例如,当尝试在安全环境130内进行未授权操作时,可以设置第三保护级。当rdprot机制的第三保护级被启用时,可以仅可能从在闪存114b中所存储的编程的软件指令引导微处理器112,并且在这种情况下,某些调试特征(例如,单线通信)被禁用。在一些情况下,启用rdprot的第三保护级的违规只能通过重新启动微处理器112(例如,由管理功能电路系统120的复位控制电路系统所识别的事件)来复位,但在其他情况下,可以通过以其他方式退出rdprot机制的第三保护级。虽然启用了rdprot机制的第三保护级,但是安全环境130之外的一些或所有存储区域可以对用户应用是可访问的。

被提供用以建立和维持安全环境130的另一种类型的存储器保护机制是写入保护(wrprot)机制。wrprot逻辑提供防止对存储器114的所指定区域的未授权的写入和擦除操作的安全性。所指定区域可以在安全环境130之内或之外。在一些情况下,微控制器100在特定寄存器中提供wrprot位字段,并且这个位字段在引导时被加载到只读寄存器中(例如,由管理功能电路系统120的复位控制电路系统所识别的事件)。在其他情况下,wrprot机制以不同方式实施。

本文中所讨论的存储器保护机制(即,pcrop、rdprot、wrprot)可以被独立地、协作地或独立地和协作地操作。保护可以期望地相互作用,并且在很多情况下,保护被实施为安全链。也就是说,如果任何一个保护机制禁止访问存储器114的特定部分,则无论其他保护机制是准许还是禁止对象访问,访问都被禁止。

可选地,防火墙存储器保护机制也可以在微控制器100的控制电路系统中实施。在一些情况下,防火墙存储器保护机制可以被形成在分离且不同的防火墙逻辑114e模块中。备选地,如果可选防火墙逻辑被包括在微控制器100中,则防火墙保护机制可以被实施于:存储器114的电路中,管理功能电路系统120中,或微控制器100的某个其他位置中。

防火墙逻辑被布置为保护诸如ram114a等易失性存储器或诸如闪存114b等非易失性存储器中的软件代码或数据的所指定部分。防火墙逻辑可以保护易失性数据免受从受保护区域之外所取出的错误或恶意程序指令的影响。

防火墙可以以编程方式打开和以编程方式关闭。在防火墙被打开时,程序指令可以在受保护区域中读取或写入数据,并且在防火墙被打开时,程序指令可以从受保护区域中被取出。相反,当防火墙关闭时,进入受保护区域的任何访问请求可以生成复位条件,这立即停止所检测到的侵入。在至少一些实施例中,无论防火墙是被打开还是被关闭,对受保护区域的任何dma访问都将生成复位条件。

防火墙逻辑包括侦听电路,侦听电路可以被布置为监测微控制器100内的一个或多个地址总线上的通信量的专用的、可配置比较器。任何期望数目的防火墙比较器电路和相关联的参数配置逻辑可以被包括在微控制器100中。在一些情况下,每个防火墙比较器电路可以被配置为保护不同的部分(例如,段、块、页面、组等)或存储器114。可配置的比较器电路可以与存储防火墙逻辑的配置参数的一组防火墙寄存器相关联。在一些情况下,一个或多个防火墙控制寄存器定义由防火墙所保护的地址空间,启用和禁用防火墙,控制或以其他方式指导在防火墙的未授权的破坏时将采取的动作,并且定义其他防火墙参数。

本公开中所描述的类型的微控制器可以在零售设备、消费者设备、工业设备、医疗设备、车辆、和几乎任何其他类别或技术领域的设备中找到。这些设备可以是电池供电或由硬连线电源供电。采用微控制器的设备可以是便携式的、固定式的或其某种组合。没有任何限制,微控制器被用于从所有类型的传感器(例如,温度、时间、湿度、加速度、运动、开关、触发器等)取得数据,并且微控制器被用于向外界(例如,视觉、音频和触觉信号器、开关、触发器等)提供数据。

图3图示了在存储器114中在存储器映射116中所定义的位置处所形成的安全环境130的内容的一个示例性实施例。安全环境130在图2和图3中被图示为具有跨越单一连续范围的地址的外观,但是这是示例性的,并且在一些其他实施例中,安全环境130在一个区域的存储器中具有第一组地址的第一部分,以及在另外、不同的区域的存储器中具有(与第一组地址不同且不连续的)第二组地址的第二部分。

内部sram1存储器、和内部sram2存储器、和内部闪存在图3中表示。这里,内部闪存被图示为具有在安全环境130内和在安全环境130之外的部分。内部sram1在安全环境130内被完全地表示,并且内部sram2在安全环境130之外被完全地表示。这样的边界和表示是示例性的,并且可以预期其他边界。例如,一个或多个闪存、一个或多个内部sram存储器、以及其他存储器架构可以被包括在其他实施例中,并且在这些其他实施例中,安全环境130可以以任何期望的方式布置。

图3中的安全环境130具有在存储器114的不同部件中所存储的经编程的软件指令和数据。例如,安全引擎132的经编程的软件指令、可选的安全固件安装程序134、安全引导逻辑136、安全固件更新138、以及“读取密钥”功能140每个都被存储在存储器114的内部闪存114b中。某些共享信息142和一个或多个可选用户应用也可以被存储在存储器114的内部闪存114b中。

应当认识到,在图3的实施例中,边界线是例示性的而非限制性的。例如,在一些情况下,安全固件安装程序134与安全引导逻辑136集成。在其他情况下,根本不包括安全固件安装程序134。在这些或其他实施例中,检索和处理加密密钥的读取密钥功能140与安全引擎132集成。因此,任何数目的其他功能和功能逻辑可以被包括在安全环境130中。

在图3的实施例中,第一安全用户应用144被表示在安全环境130中。另外,在图3的实施例中,第二不安全用户应用146被表示在安全环境130之外,并且通过“第n”用户应用148的多个其他用户应用也被表示在安全环境130之外。在其他实施例中,多于或少于一个用户应用被形成在安全环境130内部,并且零个或任何数目的用户应用被形成在安全环境130之外。

另外,在图3的示例中,安全密钥150、受保护数据152和可选安全用户区域154被存储在存储器114的第一内部静态ram设备(例如,ram114a)中。以及可选地,代码堆栈156和未受保护区域158被存储在存储器114的第二内部静态ram设备(例如,ram114a)中。

安全引擎132由微处理器112可执行的多个安全环境软件指令构成。在一些情况下,安全引擎132的安全环境软件指令被存储在内部非易失性存储器(例如,闪存14b)中并且从内部非易失性存储器(例如,闪存14b)中取出。以这种方式,基于硬件的侦听设备无法访问地址或数据总线。另外,或者在一些备选情况下,不能更新安全引擎132。在这些情况下,安全引擎132有时由微控制器100的制造商使用例如安全固件安装程序134加载。在其他情况下,安全引擎132可以由oem加载。可以采用熔丝或其他配置机制来物理地、电气地、或以某种其他方式防止更新或以其他方式改变安全引擎132。在这些和类似的情况下,安全引擎132可以被用于更新另一第三方设备的固件或应用,但安全引擎132被禁止更新其自身。

如图3所示,安全引擎132是用于需要访问、读取、写入、使用、生成、或执行对秘密数据的其他操作的所有应用的进入安全环境130的导管。安全引擎132公开了应用编程接口(api)。api为独立应用和其他执行软件提供用以访问安全环境130内的安全功能、安全数据、或安全功能和安全数据的机制。

如图3中通过第一附图标记1a所示,可选的安全固件安装程序134逻辑在被包括时可以调用到安全引擎132。图3中示出了第二附图标记1b以表示安全引导逻辑136模块用以调用到安全引擎132的能力。第三附图标记1c和第四附图标记1d分别表示从第一安全用户应用144和第二不安全用户应用146调用到安全引擎132。

在调用到安全引擎132之后,安全引擎132调用读取密钥(readkeys)功能以获取对一个或多个安全密钥150的访问。可选地,读取密钥功能140可以与安全引擎132集成。在安全密钥数据使用之前、期间和之后,安全引擎132经由共享信息142模块与用户应用、其他固件等共享信息。

第一安全用户应用144在安全环境130内所保护其指令的一些部分,并且第二不安全用户应用146和第n用户应用148都不具有在安全环境内所保护的指令。图3中的表示不是限制性的,并且零个或任何数目的用户应用可以具有一些或所有指令以及在安全环境130内所保护的一些或所有数据。按照这些方面,零个或任何数目的用户应用可以具有一些或所有指令以及在安全环境130之外的一些或所有数据。另外,还按照这些方面,图3中示出为调用到安全引擎132的软件模块的编号和标记既不是限制性的也不是穷举性的。其他应用、功能等也可以访问安全环境130内的安全功能、数据、或功能和数据。

当不利用秘密功能或秘密数据进行操作时,图3的用户应用可以从存储器114的未受保护区域取出指令,并且可以从存储器114访问未受保护的数据。按照这些方面,当图3的用户应用利用秘密功能或数据进行操作时,这样的应用被布置为从存储器114的受保护区域访问受保护的功能和数据。

第一用户应用144可以访问安全用户区域154中的数据或指令,并且第一用户应用可以使用安全代码堆栈155来执行软件。当第一用户应用与秘密信息一起作用或者作用于秘密信息时,这些区域将使用防火墙或另一种禁止并发访问安全区域130内外的信息的存储器保护机制来被限制。

第二不安全用户应用146被布置为访问来自未受保护区域158的指令和数据并且使用未受保护的代码堆栈156。然而,当第二不安全用户应用146调用到安全引擎132以请求安全操作时,第二不安全用户应用146可以使数据传递通过共享信息区域142,但是对安全环境130外的指令或数据的任何访问将被暂停。以这种方式,第二不安全用户应用146可以具有在共享信息区域142中可用的秘密信息,但是第二不安全用户应用146不能将该信息复制到安全环境130之外。第二不安全用户应用146将仅在安全引擎已经清除并且删除或以其他方式重新保护秘密信息之后重新获取对存储器114的未受保护的区域的访问。

在一些情况下,安全用户区域154和安全代码堆栈155的实施方式准许多个安全用户应用共存、并且串行地或并发地操作。例如,在一些情况下,安全环境架构被布置为由诸如oem和一个或多个用户等任何数目的各方可访问的平台。以这种方式,多个oem或用户应用可以被存储在安全环境130中,并且oem或用户应用可以对在安全环境130中所存储的数据安全地执行在安全环境130中所存储的功能。

当多个安全用户应用被布置在安全环境130中时,该环境可以被布置使得在任何给定时间只有单一安全用户应用可以访问安全功能和数据。在这些情况下,当一个安全应用在操作时,其他安全应用不准许操作。在完成之后,安全数据被重新保护,并且在安全操作期间所使用的存储器被清除。

在备选情况下,可以准许多个安全用户应用并发地操作。通过在不同的安全用户应用之间执行上下文切换,这样的并发操作是多任务的。每个多任务应用可以被授权访问安全密钥区域150、受保护数据152、安全用户区域154和安全代码堆栈155的被分配部分。如果安全用户应用之一被恶意侵入或包括在安全环境130中在其被分配区域之外尝试操作的软件错误或某个其他缺陷,则安全引擎132被布置为检测恶意或其他不正当活动。

图4是表示使用安全环境实施例130a的数据流程图。安全环境130a沿着图3的安全实施例130的线而被形成并执行。处理安全环境实施例130a一般地包括初始化、安全引擎处理和清除处理。在图4中,初始化阶段实施例包括在162到172的、用以准备安全引擎132的操作的安全环境配置处理。安全引擎处理阶段实施例包括sb/sfu状态机132a的操作、以及在176至188之间的处理(包括176和188)。另外,清除处理阶段实施例包括在190至199之间的进一步的安全环境配置处理(包括190和199)。

在图4中,当进入引导序列时,处理开始于162。引导序列可能是首次上电、重新上电、硬复位、软复位、陷阱(trap)、指定中断、未知或其他意外中断、存储器访问冲突或任何其他原因的结果。

在一些情况下,以受控方式进入162处的引导序列。例如,可以从安全固件安装程序134(图3)进入162处的引导序列。这个动作通常由微控制器100的制造商或由oem执行。在这些情况下,制造商或oem可以向存储器114加载将创建并且然后维护安全环境130的所有参数。在其他情况下,制造商或oem确定诸如安全引擎132等安全环境的某些部分将被更新。一旦安全引擎132被微控制器100的制造商或oem加载到非易失性存储器114(例如,闪存114b)中,预期但不要求安全引擎132将很少被更新。

在其他情况下,可控制地从安全引导逻辑136或安全固件更新逻辑138进入162处的引导序列。当部署微控制器100的终端设备的用户接通电源或对终端设备进行重启时,期望进入安全引导逻辑136。这个硬复位条件准许安全引导逻辑136可控制地初始化安全环境130。备选地,当在微控制器100或终端设备中检测到异常状况(例如,对受保护的存储器的未授权的访问、未知或意外中断、看门狗定时器超时等)时,也可以进入安全引导逻辑136。

可控制地从安全引导逻辑136或从诸如相应的第一用户应用144、第二用户应用146或第n用户应用148等软件应用进入安全固件更新逻辑138。还可以以不同方式进入安全固件更新逻辑138。在一些情况下,安全固件更新逻辑138被用于更新包括由微处理器112可执行的安全环境软件指令的安全功能。这些可以是加密、解密、混淆、去混淆、生成或操纵随机数等功能。在其他情况下,安全固件更新逻辑138由提供固件以用于在微控制器100上执行的oem或终端用户服务提供商访问。不受限制地,这样的固件可以被用于在终端设备上操作专有财务功能(例如,可以被用作专有系统内的支付设备的加密狗,收集、传播、生成或以其他方式存储私人医疗信息的可穿戴医疗设备等)。在这些类型的情况下,终端用户服务提供商能够利用安全环境中所提供的安全服务,而不会将他们自己的私人信息公开给oem、微控制器100的制造商、或者也可能在微控制器100上操作软件的其他终端用户服务提供商。

在162处的初始引导序列中执行初始化之后,处理进行到164,其中存储器准备用于访问或禁止。在164处,使用ram114a、闪存114b、以及其他可选的存储器型电路系统114c的相关联的控制电路系统来执行各种检查、启用、禁用、配置等。本文中所讨论的存储器保护机制(即,pcrop、rdprot、wrprot)可以被用于提供对安全环境130内的安全数据和安全功能的条件访问。也就是说,所选择的功能(例如,基于它们的存储器地址、基于经编程的参数等)可以被准许由微处理器112执行,而其他功能被禁止。另外,一些第一所选择的存储区域可以完全被禁止访问,而其他第二所选择的存储区域可访问被准许由微处理器112执行的一个或多个所选择的安全功能。在一些情况下,对存储器的访问可以仅用于读取;在一些情况下,对存储器的访问可以仅是写入;在一些情况下,对存储器的访问可以准许读取和写入。其他条件访问也可以在164的处理中配置。例如,用以执行安全功能或操纵安全数据的存储器访问可以基于进入162处的引导序列处理的机制、或者在162处的引导序列处理中采取的动作。例如,存储安全引擎132的存储区域可以仅在某些安全引导安装程序或安全固件更新条件下可写入。作为另一示例,存储安全密钥的第一存储区域可以授予对第一安全功能的读取和写入访问权限,但是可以仅授予对第二安全功能的读取访问权限。在一些情况下,164处的处理通过将第二级保护值加载到rdprot配置寄存器中,来在第二保护级部署rdprot机制。在这些实施例的至少一些中,内部非易失性存储器(例如,闪存114b)的一部分和内部易失性存储器(例如,ram114a)的一部分被分配第二级保护(即,“数据保护l2”)。

处理进行到166,在166处,禁用直接存储器访问(dma)控制器。可以被配置为在不使用微处理器112来执行传送的情况下自动地将数据传入或传出存储器114的各个区域的dma控制器被禁止操作。在一些情况下,dma控制器的这种禁用可以经由被加载到微控制器100的内部寄存器中的参数来实施。备选地或另外地,在一些情况下,dma控制器的这种禁用可以被实施在例如使用特定的基于开关的(例如,基于晶体管的)电路的硬件中。在dma控制器被禁用之后,处理进行到168。

在168处,启用、编程、验证或以其他方式布置各种存储器安全功能。例如,基于硬件的防篡改被配置为检测对存储器114的任何篡改、并且在一些情况下对存储器114的任何篡改加时间戳。在一些情况下,这样的检测还可以与存储器114的所选择的部分的有目的的损坏相结合,以防止恶意黑客在篡改事件发生时访问秘密数据。作为另一示例,可以启用、禁用或选择性地配置一个或多个调试访问端口(dap)功能以用于操作。在一些情况下,在安全环境130的某些所选择的操作期间不准许调试访问。在一些情况下,调试访问的配置部分地或专门地利用基于硬件的电路来实施。

在168的特定存储器安全功能被完成之后,170处的处理开始。170处的处理包括所定义的存储器保护区域(mpu)的启用。在一些情况下,170处的处理将微控制器100配置为禁用从非易失性存储器(例如,ram114a)所取出的指令的任何执行。在一些情况下,这种特征使用监测微控制器100的内部寻址架构的特定mpu电路来实施。基于存储器114的组织(例如,如存储器映射116中所例示的),硬件电路将检测向微处理器112的执行单元传递从非易失性存储器所取出的指令的尝试。在检测到这样的未授权事件时,硬件电路可以禁止这样的指令的传递或以其他方式发出正发生这样未授权访问的警告(例如,中断、陷阱等)。

170处的处理还可以被配置为禁止对除了被明确准许的存储器之外的所有其他存储器的访问。特定许可可以基于在存储器映射116中所定义的地址。特定许可可以具有任何期望级的粒度(页面、区段、块、字、字节等),任何期望级的粒度甚至可以由用户可配置。

可选地,如果防火墙保护逻辑被包括在微处理器100中,则在170的mpu保护处理已被执行之后,在172处的处理中启用防火墙。如在本公开中所描述的,防火墙逻辑被布置为使用特定侦听电路来保护易失性存储器或非易失性存储器中的所指定的经编程的软件指令或所指定的数据。在172处启用防火墙之后,禁止访问几乎所有存储器114。处理进行到132a,132a作为安全引导/安全固件更新(sb/sfu)状态机进行操作。

sb/sfu状态机132a在图4中被表示为具有安全引擎132外的第一部分和安全引擎132内的第二部分。在这些实施例中,状态机的一些部分仅从安全环境132内可访问,并且状态机的其他部分从安全环境132外可访问。可以预期其中sb/sfu状态机132a被完全包含在安全环境132内的其他实施例。

在132a处,从被物理地定位于微控制器100内部的非易失性存储器(例如,闪存114b)所取出由微处理器112执行的指令。也就是说,在微控制器100被布置为集成电路的情况下,由微处理器112可执行以实施sb/sfu状态机132a的安全环境软件指令从集成电路封装内的物理存储器结构取出。

当执行sb/sfu状态机132a的安全环境软件指令时,微控制器100的用户可以确信不准许对存储器114的其他访问。另外,如果尝试对存储器的现在受保护区域进行任何恶意或错误访问,则微控制器100将强制安全环境实施例130a的数据流重新进入162处的引导序列。微处理器112将不准许任何操作访问存储器114,直到162处的引导序列退出,并且安全环境实施例130a的数据流中的进一步处理被执行。

在132a处的sb/sfu状态机的安全引擎处理的操作由在162处的引导序列期间的处理所引导,并且处于在164至172处所执行的至少一些存储器访问调节。例如,如果在132a处的sb/sfu状态机中的处理在162处遵循错误条件或到引导序列的另一意外进入,则来自132a的处理可以可选地传递到190或在一些情况下传递到199。备选地,如果在132a处的sb/sfu状态机中的处理在162处遵循到引导序列的受控进入,则将授予对安全环境130的安全功能、安全数据、或安全功能和安全数据的某些访问。在这些情况下,处理进行到在176处进入受保护的工作区域的可选功能。

176处的受保护的工作区域表示一个或多个应用编程接口(api)。在一些情况下,第一级api被指向安全核心功能。第一级api仅被公开给安全引擎132和安全环境的其他内部安全功能。第二级api被指向内部安全核心功能和第三方或其他不安全的功能。例如,关于图3,第一级api功能包括公开安全固件安装程序134功能、安全引导逻辑136功能、安全固件更新逻辑138功能、和读取密钥功能140的一组例程、协议、指令、框架等。第一级api功能还可以包括安全环境的其他内部安全功能,诸如复制数据、分配安全空间、执行加密操作等的功能。同样,例如,关于图3,第二级api功能公开安全引擎132,公开对共享信息142的访问,以及公开包装程序用于对任何数目的安全功能的间接访问,诸如对安全密钥信息的请求、加密、解密、签名验证、读取或写入秘密数据、以及其他这样的功能。在一些情况下,其中实施用以在176处进入受保护的工作区域的快速处理时,公开第一级api、第二级api、或第一级和第二级api是快速公开。在其他情况下,其中未实施用以在176处进入受保护的工作区域的快速处理时,当微控制器100正操作时,准许或限制安全api的公开是持久的。

处理从132a处的sb/sfu状态机,通过在实施时176处的处理,传递到其中断被禁用的178。在一些情况下,禁用所有中断,并且由微处理器112可执行的安全环境软件指令的处理继续。在一些情况下,通过安全环境实施例130a的数据流强制重新进入162处的引导序列来处理关键中断(例如,陷阱、错误、软复位等)。硬复位(例如,重启、用户强制硬复位等)也将强制重新进入162处的引导序列。中断被禁用以防止微处理器112执行未根据所需要的安全环境软件指令明确排序的任何指令。

在178处中断被禁用之后,处理进行到180。在180处,如果实施防火墙,则调用门函数打开安全环境内的一个或多个访问区域。一旦通过防火墙的安全区域被打开,处理进行到182。

在182处,可以执行任何数目的安全功能。可以经由来自其他安全功能的第一级api调用来公开安全功能。可以经由来自用户应用的第二级api调用来公开至少一些安全功能。例如,不安全的用户应用可以请求安全密钥信息、加密服务、解密服务、签名验证、对被存储或待被存储在安全环境中的秘密数据的访问、以及其他这样的功能。图4图示了182处的处理,其包括将安全密钥复制到易失性ram中,使用所复制的密钥,并且执行安全处理;然而,应当认识到,可以在182处执行任何类型的安全功能处理,并且可以在182处执行任何秘密数据的授权使用。

在182处的安全处理(即,安全功能的执行和对安全数据的访问中的一个或两者)之后,处理可选地进行到184。如果在微控制器100中实施防火墙,则调用门函数关闭在180处被打开的安全环境内的一个或多个访问区域。在一些情况下,单一“调用门”功能采用参数来打开安全环境内的访问区域,关闭安全环境内的访问区域,或以其他方式管理安全环境的特定特性(例如,许可、标识符、大小、信号量、跟踪数据、状态数据等)。在其他情况下,防火墙的功能被分布在两个以上的调用门函数(例如,“opencallgate()函数、closecallgate()函数、managecallgate()函数等)之间。

在180至184处的处理包括当如虚线172a所示实施防火墙时在防火墙保护下发生的处理。这样的处理备选地或另外地处于在162到176处实施的微处理器112和存储器114的处理限制。以这种方式,可以期望地准许或限制被布置在所选择的安全环境中的非安全微控制器的资源,其中确信未授权的用户无法使用受限资源。

在关闭防火墙(如果存在)或者在182处的安全处理之后,在178处禁用的中断在186处被重新启用。另外,如果安全处理api的公开被表达在176处,则在176处所授予的公开在188处被重新限制。

处理在132a处返回到sb/sfu状态机,并且如果安全处理任务被完成,则处理可选地进行到190或199。

当确定到安全环境130a的进入不合适时,处理从132a处的sba/sfu状态机下落到199。另外地或备选地,如果已经确定在安全环境130a内进行了不正当的动作(例如,在176至188之间),处理从132a处的sb/sfu状态机下落到199。在这些或其他情况下,当嵌入式控制器中的活动被确定为不正确、恶意、或其他可疑时,处理下落到199。

在199处,嵌入式控制器在一些情况下可以进入永久或暂时停滞状态。在停滞状态下,诸如内部sram、通用寄存器、专用寄存器、外围控制寄存器、或其他存储器逻辑等某些存储器可以以另一种有目的的方式被隔离、捕获、询问或处理。可以采取这些和其他动作来帮助标识恶意攻击、软件错误、或用于其他原因。在停滞是暂时的或控制器根本没有停滞的情况下,处理将进行到162处的引导序列。

在190处,开始从安全环境130a的平稳退出过程。处理已经从132a处的sba/sfu状态机前进,并且未检测到可疑活动。在190处,可以清除由安全处理所使用的非易失性存储器的区域。在一些情况下,清除非易失性存储器的区域包括将所选择的初始化值(例如,零)编程到待被清除的区域中。在一些情况下,清除所有非易失性存储器。在其他情况下,诸如随机数等混淆数据可以被加载到非易失性存储器的所确定区域中。另外,在其他情况下,安全环境的存储器(其不可自由访问)根本不被清除。如果防火墙逻辑被实施在微控制器100中,则190处的处理可选地进行到192,并且在192处,如果防火墙逻辑已被特别配置以用于安全引擎132的使用,则防火墙逻辑从在172处设置的状态被恢复到其先前状态。备选地,或者在开始190处的防火墙逻辑处理之后,处理进行到194。在194处,在170处所执行的被定义的存储器保护区域(mpu)的任何启用被反转。在194处,在使用安全环境130的安全功能之前,微处理器112的状态和存储器114的未受保护区域被有效地恢复到先前的状态。

处理从192进行通过196,在196处,取出用户应用或另一功能的指令。如在常规编程中,196处的处理可以被实施为从被执行的子例程返回。

图5是表示多个安全环境实施例500的实施方式的数据流程图。终端设备502包括本公开中所描述的类型的微控制器100以及至少一个传感器设备504和通信接口506。终端设备502被布置为经由网络508进行通信。

与终端设备502一起,多个用户510a、510b、510c、510n其每个分别地与至少一个终端设备502a、502b、502c、502n相关联。终端设备的通信接口准许终端设备经由网络508与诸如第一计算服务器512、第二计算服务器514、第三计算服务器524、和其他计算服务器(未示出)等其他计算设备进行通信。

以非限制性的、非排他性的方式,图5中的方向箭头图示了计算设备与网络508之间的通信耦合。设备之间的其他通信和通信耦合也可以被布置或以其他方式包括、并且未示出,以便简化图示。图5的通信可以包括基于电信(例如,蜂窝)协议、卫星协议、电缆服务协议、以太网协议、通用串行总线(usb)协议、蓝牙协议、wifi协议、近场通信(nfc)协议、射频识别器(rfid)协议、以及任何其他类型的有线和无线数据通信协议中的任何一种或多种的通信。

网络508可以是诸如因特网等的广域网(wan)、局域网(lan)、个人网(pan)、对等网络、或某种其他类型的网络。网络508的各种部分和协议可以协作以提供图5的任何计算设备(例如,终端设备502、计算服务器512等)之间的无缝通信。网络508的各种部分和协议可以包括(但不限于)由本公开中所描述的任何计算设备所采用的任何协议。

包括终端设备502和终端设备502a至502n的本公开的终端设备可以是其中在非安全微控制器中所期望形成的安全环境的任何类型的终端设备。非详尽地,在示例性和非限制性列表中,本公开的终端设备可以是移动计算设备,诸如可穿戴计算设备(例如,健身设备、个人安全设备、个人识别设备等)、汽车计算设备、无人机、机器人、支付设备、健康或其他医疗设备等;固定计算设备,诸如信用卡机、销售点(pos)终端、公用事业仪表(例如,水、电等)、工业设备、家用和商用电器、加热、通风、以及空调(hvac)设备、智能插头设备、智能电力设备等;以及任何其他类型的计算设备,其中诸如安全环境130等环境被期望地形成在诸如微控制器100等非安全计算设备中的。

在图5所图示的一个安全通信实施例中,计划对诸如支付设备等安全移动设备进行固件更新。支付设备可以被布置为终端设备502。在这个第一实施例中的通信接口506可以遵循电信协议,并且传感器504可以是运动传感器、光传感器、通信检测传感器、功率级传感器、或任何其他类型的传感器中的任何一种。在本公开的第一实施例的一些情况下,传感器504甚至可以不被实施。

在这个安全通信实施例中,用以更新安全移动支付终端设备502中的固件的过程可以由以下设备启动:由终端设备502、由计算服务器512、或由某个其他源。在这种情况下,计算服务器512与可信源514协作,可信源514可以是与计算服务器512相关或不相关的经认证的第三方可信源。与安全数据源516(例如,安全数据库、安全数据计算设备等)协同工作,可信源514在安全包装程序520内准备已更新的安全固件518。安全包装程序可以与本公开中所描述的类型的安全计算数据和功能协作地形成。例如,发送设备可以使用已知的、共享的、可导出的、或对应于接收设备的安全密钥的安全密钥来加密数据。由于其对应的安全密钥,接收设备可以解密和验证所接收的数据。在一个或多个数据包、数据流或其他构成中,安全包装程序520内的已更新的安全固件518被传送到安全移动支付终端设备502。

当在安全移动支付终端设备502的通信接口506处接收已更新的固件时,在162(图4)处的引导序列开始并且如结合本文中图4所描述的那样继续。安全包装程序520的接收和识别导致进入安全引擎132的处理。安全引擎132的安全功能被布置为处理已更新的安全固件518并且将已更新的固件518适当地存储在存储器114的安全区域中(图2)。在成功更新其固件之后,安全移动支付终端设备502将形成安全确认522并且将安全确认522传送回可信源514。

图5中所图示的一个黑客检测实施例中,控制恶意计算服务器524的黑客期望入侵智能功率表网络。智能功率表网络可以是与多个用户510n相关联的那些设备502n。与智能功率表相关联的传感器可以是与诸如流量传感器、防篡改传感器、光传感器、运动传感器等电力仪表相关联的任何类型的传感器。在这种情况下,黑客可以使用恶意计算服务器524来发送有效载荷526。有效载荷可以包括错误数据、恶意计算功能、或一些其他恶意信息。任何构形的错误包装程序528封装恶意有效载荷526。错误包装程序528可以是由黑客的第一尝试、第二尝试、第一百尝试、第一百万尝试、或任何其他尝试。由于在每个智能功率表终端设备502n的微控制器100中所创建的安全环境130,恶意有效载荷526不能被黑客递送、安装、执行、或以其他方式由黑客成功部署。当检测到恶意错误包装程序528时,162处的引导序列(图4)将开始以受控方式锁定微控制器100的计算资源。如果没有适当的认证,恶意有效载荷526将没有任何机会访问、执行、或以其他方式与安全环境的任何安全数据进行交互。

在一些情况下,由于未能操作、执行等,智能功率表终端设备502n可以准备并且将不确认(nack)消息递送回源计算设备(即,恶意计算服务器524)。在一些情况下,nack消息被报告给计算服务器512、可信源514计算服务器、或某个其他计算服务器以发出关于黑客企图的警报。

本文中认识到,术语“安全密钥(securitykeys)”、“安全密钥(securekeys)”、“加密密钥(cryptographickeys)”、“解密密钥”和“加密密钥(encryptionkeys)”等中的每个在特定上下文中具有不同的含义。因为特定的“密钥”或其类型对于本文中所描述的发明主题不是直接必要的,所以如上下文允许的情况下,其所有语法形式的术语“安全密钥(securekey)”与任何特定安全密钥类型的任何特定安全密钥可互换地使用。

如在本公开中所使用的,术语“模块”可以是指可操作以执行一个或多个软件或固件程序、组合逻辑电路系统、或提供关于模块所描述的功能的其他合适组件(硬件、软件、或硬件和软件)的电子电路、处理器和存储器。

图3和图4是图示可以由微控制器100的实施例所使用的过程或功能的数据流程图。在这方面,每个所描述的过程可以表示包括用于实施(一个或多个)所指定的逻辑功能的一个或多个可执行指令的代码的模块、片段或部分。还应注意,在一些实施方式中,除了其中明确陈述顺序之外,过程中所提到的功能可以以不同的顺序发生,可以包括附加功能,可以并发地发生,和/或可以省略。

图5图示了各种计算服务器设备,诸如计算机服务器512和可信源计算服务器514。这些计算服务器设备包括在诸如一个或多个中央处理单元(cpu)、易失性和非易失性存储器、符合各种标准和协议的串行和并行输入/输出(i/o)电路系统、有线和/或无线网络电路系统(例如,通信收发器)等常规计算服务器装置中找到的操作硬件。

如本领域技术人员已知的,计算服务器具有一个或多个存储器,并且每个存储器包括用于读取和写入的易失性和非易失性计算机可读介质的任何组合。易失性计算机可读介质包括例如随机存取存储器(ram)。非易失性计算机可读介质包括例如只读存储器(rom)、诸如硬盘等磁介质、光盘驱动器、闪存设备、cd-rom等。在一些情况下,特定存储器被虚拟地或物理地分离成单独的区域,诸如第一存储器、第二存储器、第三存储器等。在这些情况下,可以理解,存储器的不同分区可以处在不同的设备中,或者被实施在单一存储器中。

计算服务器还包括在诸如操作系统等常规计算服务器中找到的操作软件、用以指导通过i/o电路系统的操作的软件驱动器、网络电路系统、以及其他外围组件电路系统。此外,计算服务器包括操作应用软件,诸如用于与其他计算设备通信的网络软件、用于构建和维护数据库的数据库软件、以及用于在各种cpu之间分配通信和/或操作工作负载的任务管理软件。在一些情况下,本公开中所描述的计算服务器是具有本文所列出的硬件和软件的单一硬件机,并且在其他情况下,计算服务器是在服务器群中一起工作的硬件和软件机的联网集合以执行本公开中所描述的至少一些功能。

当如本文所描述的布置时,本公开中所描述的每个计算设备可以从通用和非特定计算设备变换为包括针对具体和特定目的而配置的硬件和软件的组合设备。

在前面的描述中,阐述了某些具体细节以提供对各种公开的实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有这些具体细节中的一个或多个具体细节的情况下,或者利用其他方法、组件、材料等来实践该实施例。在其他情况下,与包括客户端和服务器计算系统以及网络的电子和计算系统相关联的公知结构未示出或未被详细描述,以避免对实施例描述的不必要模糊。

除非上下文另有要求,否则在整个说明书和所附的权利要求中,词语“包括(comprise)”及其变体(诸如,“包括(comprises)”和“包括(comprising)”)应当以开放的包括性的意义来解释,例如,“包括但不仅限于”。

贯穿本说明书对“一个实施例”或“实施例”及其变体的引用意指结合该实施例所描述的特定特征、结构或特性被包括在至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,特定特征、结构、或特性可以在一个或多个实施例中以任何合适的方式组合。

如在本说明书和所附权利要求中所使用的,除非内容和上下文另有明确说明,否则单数形式“一个(a)”、“一个(an)”和“该(the)”包括复数指示物。还应当注意,除非内容和上下文明确规定了包容性或排他性(视情况而定),否则连词术语“和”和“或”一般地以最广泛的意义上使用以包括“和/或”。另外,“和”和“或”的组成(在本文中被称为“和/或”时)旨在涵盖包括所有相关联项目或想法的实施例以及包括少于所有的相关联的项目或想法的一个或多个其他备选实施例。

本文中所提供的本公开的标题和“摘要”仅为了方便而不是限制或解释实施例的范围或含义。

可以组合上文所描述的各种实施例以提另外的实施例。如果必要,可以修改实施例的各方面以采用各种专利、申请和出版物的概念来提供另外的实施例。

根据以上详细描述,可以对实施例进行这些和其他改变。一般地,在所附权利要求中,所使用的术语不应当被解释为将权利要求限制于说明书和权利要求中所公开的特定实施例,而是应当被解释为包括所有可能的实施例以及这样的权利要求所享有的等同物的全部范围。因此,权利要求不受本公开的限制。

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