配置、实施和监控可信执行环境的分离的制作方法

文档序号:24043417发布日期:2021-02-23 17:29阅读:131来源:国知局
配置、实施和监控可信执行环境的分离的制作方法
配置、实施和监控可信执行环境的分离
[0001]
相关申请的交叉引用
[0002]
本申请要求cesare garlati的标题为“methods and system for securing multiple execution domains in risc-v processors”的美国临时专利申请序列号62/689,205的权益和优先权,其全部内容通过引用明确地并入。本申请要求cesare garlati等人的标题为“methods and system for securing multiple execution domains in arm processors”的美国临时专利申请序列号62/796,967的权益和优先权,其全部内容通过引用明确地并入。本申请要求cesare garlati等人的标题为“methods and system for securing multiple execution domains in mips processors”的美国临时专利申请序列号62/796,991的权益和优先权,其全部内容通过引用明确地并入。本申请要求cesare garlati等人的标题为“methods and system for securing multiple execution domains in extended instruction set processors”的美国临时专利申请序列号62/801,091的权益和优先权,其全部内容通过引用明确地并入。
[0003]
背景
1.发明领域
[0004]
本发明大体上涉及配置计算机系统,且更具体地涉及配置、实施(enforcing)和监控可信执行环境的分离。
[0005]
2.相关技术
[0006]
许多当前的计算机系统环境(包括risc-v、arm和mips系统)在属于不同软件应用的数据、代码和外围设备之间缺乏分离。因此,这些计算机系统本质上是不安全的。例如,risc-v处理器提供内存管理单元(mmu)和虚拟内存功能。然而,即使这些机制也不够安全。mmu的功能通常由富操作系统(如linux)控制,该富操作系统过于复杂以至于无法被认为没有缺陷。至少一个平台经由专门的硬件(例如,单独的cpu和存储器)确实提供了物理资源分离。这种布置在某种程度上更安全,但是提供有限(例如,仅2个)执行模式(例如,安全和不安全)。因此,甚至这些布置也无法满足对于许多(例如,现代)应用的安全和安全性要求。
[0007]
附图简述
[0008]
关于以下描述和附图,将更好地理解本发明的具体特征、方面和优点,其中:
[0009]
图1图示了通用计算设备的简化示例框图。
[0010]
图2图示了便于生成定义多个分离的执行域(separated execution domain)的固件映像的示例计算机架构。
[0011]
图3图示了用于生成定义多个分离的执行域的固件映像的示例方法的流程图。
[0012]
图4a图示了便于形成和执行多域执行环境的示例计算机架构。
[0013]
图4b1至图4b3图示了便于在多域执行环境中同时执行多个可执行程序的图4a的示例计算机架构。
[0014]
图5图示了用于同时执行多个可执行程序的示例方法的流程图。
[0015]
图6图示了定义执行域的示例配置文件。
[0016]
图7图示了便于生成包括多个分离的执行域的加密签名的固件映像的计算机架构。
[0017]
图8图示了简化的示例多域执行环境。
[0018]
图9图示了示例api定义。
[0019]
详细描述
[0020]
本发明扩展到用于配置、实施和监控执行环境的分离的方法、系统和计算机程序产品,包括数据、程序和外围设备入口。一般来说,在无需更改现有应用源代码的情况下,可生成与多个分离的执行域的配置一致的固件映像。此外,在不使用共享存储器的情况下,通信可以跨分离的执行域被保护。
[0021]
因此,本发明的各方面向基本上无限数量的执行域提供了对数据、程序和外围设备的动态硬件强制分离。分离可以在没有内存管理单元(mmu)、虚拟内存功能或丰富的操作系统的情况下实现(尽管分离可以在存在这些和其他组件的情况下与其一起工作)。多个执行域可以同时执行,而无需针对安全和安全性的专用硬件组件。
[0022]
在某些方面,risc-v物理内存保护(pmp)利用了至少两个级别的特权执行。在其他方面,arm处理器或mips处理器内存保护技术(如内存保护单元(mpu))利用了至少两级的特权执行相结合。在一个方面,可验证软件层(例如,安全监控)以较高(可能最高)的特权级别(例如,m模式)执行。可验证软件层动态地切换处理器状态,以对以较低特权级别(例如,u模式或s模式)运行的执行域实施分离和安全策略。
[0023]
在另一个方面,可验证软件层提供基于消息的机制(例如,api定义900中的群组902),以允许执行域之间的域间通信,而不使用诸如缓冲区的内存共享数据结构。在又一方面,可验证软件层提供专有软件api实现(例如,系统调用、可执行代码、库等),其便于从较低特权模式(例如,api定义900中的群组905)安全执行选定的较高特权指令。专有软件api可以利用可信执行环境的特征,在不损害处理器安全模型的情况下,由每个单独的执行域以较低特权模式捕获和模仿较高特权模式指令。专有软件api可以实现开源api定义(例如,在pdf、word或power point文件中定义的)。在一个方面中,开源api定义是以c语言头文件的形式提供的。
[0024]
通常,配置系统可以为基本上无限数量的分离的执行域配置物理内存保护(pmp)范围、读/写/执行策略和运行时行为(包括指令隔离(instruction fencing))。配置系统可以包括用户界面,例如图形用户界面(gui)、命令行界面、集成开发环境(ide)插件或例如(基于超文本标记语言(hmtl))的网络浏览器界面。通过用户界面,用户可以输入定义多个分离的执行环境的配置,包括配置设置、创建配置文件等。
[0025]
无需改变现有的应用源代码,配置系统可以生成与定义的多个分离的执行环境一致的加密签名的固件映像。固件映像可以在(例如,嵌入式)处理器上被验证和加载,以初始化与所定义的多个分离的执行环境一致的处理器。固件的真实性和完整性可以使用加密技术进行验证,包括哈希算法、摘要(digests)和数字签名认证(dsa)。
[0026]
在运行时,处理器可以同时执行多个应用,每个应用运行在其自己的安全上下文(域)中,而无需额外的操作系统软件。基于裸机微内核的抢占式调度器(preemptive scheduler)可以以特定的(例如,规则的)间隔在安全上下文(例如,api定义900中的群组901中的ecall_yield())之间切换,并防止有故障的执行域包括其他执行域。在安全上下
文之间进行切换可以包括切换物理内存保护上下文和每个单独执行域的安全策略。切换可以在没有内存管理单元且没有虚拟内存或丰富的操作系统功能的情况下进行。然而,各方面可以与内存管理单元、虚拟内存或丰富的操作系统功能(如果存在)无缝互操作。
[0027]
实时中断和软件陷阱可以与多个分离的执行域(例如,api定义900中的群组903)的配置一致地被处理。为了促进系统安全和执行域分离,中断请求可以以与执行域配置一致的较低特权模式提供服务。较高特权的指令可以被透明地捕获,并在与多个分离的执行域的配置一致的较低特权模式下被模仿。
[0028]
可以在不中断其他计算活动的情况下处理加载、存储和执行访问故障。访问故障可以配置为:(1)被忽略,在这种情况下,程序计数器跳过故障指令,(2)产生指向其他执行域的内部消息,或者(3)强制重启故障执行域。
[0029]
在一个方面,pmp范围包括范围顶部(tor)、自然对齐的二次幂(napot)和4字节地址的混合,这些地址针对每个分离的(和安全)执行域的粒度和上下文切换速度进行了优化。用户模式寄存器和pmp配置寄存器可用于动态激活和实施范围内的执行环境的物理内存保护范围和访问策略。
[0030]
本发明的实施例可以包括或利用包括计算机硬件(例如一个或更多个处理器和系统存储器)的专用或通用计算机,如下面更详细讨论的。更具体地,本发明的各方面可以被设计用于嵌入式系统并在嵌入式系统上实现。本发明范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是可由通用计算机或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:计算机存储介质(设备)和传输介质。
[0031]
计算机存储介质(设备)包括ram、rom、eeprom、cd-rom、固态驱动器(ssd)(例如,基于ram)、闪速存储器、相变存储器(“pcm”)、其他类型的存储器、其他光盘存储器、磁盘存储器或其他磁存储设备,或者可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可以由通用或专用计算机访问的任何其他介质。
[0032]“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或更多个数据链路。当信息通过网络或另一个通信连接(硬接线的、无线的或硬接线和无线的组合)被传送或提供到计算机时,该计算机适当地将该连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置,并且可以由通用或专用计算机访问。以上的组合也应被包括在计算机可读介质的范围内。
[0033]
此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传输到计算机存储介质(设备)(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“nic”)内的ram中,然后最终被传送到计算机系统ram和/或计算机系统处的不易失性的计算机存储介质(设备)。ram还可以包括固态驱动器(ssd或基于pcix的实时存储器分层储存装置,如fusionio)。因此,应当理解,计算机存储介质(设备)可以包括在也(或者甚至主要)利用传输介质的计算机系统组件中。
[0034]
计算机可执行指令包括例如指令和数据,当在处理器处执行时,该指令和数据使得通用计算机、专用计算机或专用处理设备执行某个功能或一组功能。计算机可执行指令可以是例如二进制的、诸如汇编语言的中间格式指令,或者甚至是源代码。尽管已经用针对结构特征和/或方法动作的语言描述了主题,但是应理解,所附权利要求中定义的主题不一定限于上述描述特征或动作。相反,描述的特征和动作被公开为实现权利要求的示例形式。
[0035]
本领域技术人员将理解,本发明可以在具有多种类型的计算机系统配置的网络计算环境中实施,包括个人计算机、台式计算机、笔记本电脑、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、平板电脑、寻呼机、路由器、交换机、各种存储设备、嵌入式系统等。本发明也可以在分布式系统环境中实施,其中通过网络链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器储存设备中。
[0036]
还可在云计算环境中实现本发明的实施例。在本描述和以下权利要求中,“云计算”被定义为一种模型,用于实现对可配置计算资源(例如网络、服务器、存储装置、应用和服务)的共享池的无处不在的、方便的按需访问,这些资源可以经由虚拟化快速提供并以最小管理工作量或服务提供商交互来分发,然后相应地进行扩展。云模块可以由各种特性(例如按需自助式服务、广泛的网络接入、资源池化、快速弹性、可计量的服务等)、服务模型(例如软件即服务(saas)、平台即服务(paas)、基础设施即服务(iaas))和部署模型(例如私有云、社区云、公共云、混合云等)组成。关于本发明描述的模块和数据可以被包括在云模型中。
[0037]
此外,在适当的情况下,本文描述的功能可以在硬件、软件、固件、数字组件或模拟组件中的一个或更多个中执行。例如,一个或更多个专用集成电路(asic)可以被编程来执行本文描述的一个或更多个系统和过程。在下面的描述和权利要求中使用了某些术语来指代特定系统组件。如本领域技术人员将理解的,组件可以用不同的名称来指代。本文档并不意欲区分名称不同而非功能不同的组件。
[0038]
图1图示了计算设备100的示例框图。计算设备100可用于执行各种程序,例如本文所讨论的程序。计算设备100可以用作服务器、客户端或任何其他计算实体。计算设备100可以执行如本文所述的各种通信和数据传输功能,并且可以执行一个或更多个应用程序,例如本文所述的应用程序。计算设备100可以是各种各样的计算设备中的任何一种,例如移动电话或其他移动设备、台式计算机、笔记本计算机、服务器计算机、手持计算机、平板计算机等。
[0039]
计算设备100包括一个或更多个处理器102、一个或更多个存储器设备104、一个或更多个接口106、一个或更多个大容量储存设备108、一个或更多个输入/输出(i/o)设备110和显示设备130,所有这些都联接到总线112。处理器102包括执行存储在存储器设备104和/或大容量储存设备108中的指令的一个或更多个处理器或控制器。处理器102还可以包括各种类型的计算机储存介质,例如缓冲存储器。
[0040]
存储器设备104包括各种计算机储存介质,例如易失性存储器(例如,随机存取存储器(ram)114)和/或非易失性存储器(例如,只读存储器(rom)116)。存储器设备104还可以包括可重写rom,例如闪速存储器。
[0041]
大容量储存设备108包括各种计算机储存介质,例如磁带、磁盘、光盘、固态存储器(例如,闪速存储器)等。如图1所示,特定的大容量储存设备是硬盘驱动器124。在大容量储存设备108中还可以包括各种驱动器,以实现从各种计算机可读介质的读取和/或到各种计算机可读介质的写入。大容量储存设备108包括可移除介质126和/或不可移除介质。
[0042]
i/o设备110包括允许将数据和/或其他信息输入到计算设备100或从计算设备400取出数据和/或其他信息的各种设备。示例i/o设备110包括光标控制设备、键盘、小键盘、条形码扫描仪、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、照相机、镜头、ccd或其他图像捕捉设备等。
[0043]
显示设备130包括能够向计算设备100的一个或更多个用户显示信息的任何类型的设备。显示设备130的示例包括监视器、显示终端、视频投影设备等。
[0044]
接口106包括允许计算设备100与其他系统、设备或计算环境以及人类交互的各种接口。示例接口106可以包括任何数量的不同网络接口120,例如到个人局域网(pan)、局域网(lan)、广域网(wan)、无线网络(例如,近场通信(nfc)、蓝牙、wi-fi等网络)和互联网的接口。其他接口包括用户接口118和外围设备接口122。
[0045]
总线112允许处理器102、存储器设备104、接口106、大容量储存设备108以及i/o设备110彼此通信以及与耦合到总线112的其他设备或组件通信。总线112表示几种类型的总线结构中的一个或更多个,例如系统总线、pci总线、ieee 1394总线、usb总线等。
[0046]
一般来说,本发明的各方面可以使用各种指令集架构(isa)中的任何一种来实现,包括但不限于:risc-v、arm和mips。
[0047]
在本说明书和以下权利要求书中,“区域(zone)”在功能上等同于“执行域”。
[0048]
图2图示了便于生成定义多个分离的执行域的固件映像的示例计算机架构200。参考图2,计算机架构200包括映像导出模块(image derivation module)201。映像导出模块201以及其他组件可以通过网络(或作为网络的一部分)彼此连接,网络例如是pan、lan、wan且甚至是互联网。因此,映像导出模块201以及任何其他连接的计算机系统及其组件可以创建消息相关数据并通过网络交换消息相关数据(例如,近场通信(nfc)有效载荷、蓝牙数据包、互联网协议(ip)数据报以及利用ip数据报的其他更高层协议,诸如传输控制协议(tcp)、超文本传输协议(http)、简单邮件传输协议(smtp)等)。
[0049]
映像导出模块201被配置为访问一个或更多个可执行程序、安全监控可执行程序和安全策略。安全策略可以定义一个或更多个可执行程序中的每一个可访问的数据、闪速存储器范围、系统存储器范围和外围设备。所定义的闪速存储器范围和系统存储器范围可以对每个可执行程序不重叠。映像导出模块201可以从目标平台(tor/napot/4b)上可用的许多选项中自动选择更(或最)合适的pmp配置,以最大化pmp区的数量(每个区域的存储器映射资源)。例如,映像导出模块201可以确定tor何时优于napot等。
[0050]
映像导出模块201可以从一个或更多个可执行程序、安全监控可执行程序和安全策略导出映像文件。映像文件可以定义对应于一个或更多个可执行程序的一个或更多个执行域。每个执行域可以被定义为以特定的特权级别(低于安全执行监控)执行,并使用相应的非重叠闪速存储器范围和非重叠系统存储器范围。因为存储器范围是非重叠的,所以在一个执行域中执行的可执行程序影响在另一个执行域中执行的另一个可执行程序是非常不可能的(如果不是完全不可能的话)。每个执行域可以被配置为使用一个或更多个存储器
映射的外围设备。存储器范围和外围设备使用可以根据要安装映像文件的计算机系统(例如,嵌入式系统)处的资源配置来定义。外围设备可以在执行域之间共享,当根据特定的切换间隔将执行重点转移(切换)到该域时,不同的执行域使用该外围设备。
[0051]
处理器中固有的pmp寄存器的数量可以是有限的(例如,硬编码到特定的数量,例如,8)。然而,映像导出模块201还可以配置映像文件,使得在运行时按需存储在处理器中的策略在域上下文中被智能地改变(不仅仅是在域之间切换时)。在运行时改变域上下文内的策略可以被用来超过每个执行域的处理器有限数量的寄存器。
[0052]
映像导出模块201还可以执行许多交叉检查和验证以避免操作员错误,例如允许执行域使安全监控的文本和数据区重叠的策略。
[0053]
映像导出模块201还可以配置映像文件,使得在加载和执行映像文件时创建多个软件定时器(软定时器)。每个软定时器可以像处理器内置硬件定时器一样工作。每个执行域可以被分配其自己的软定时器(例如,api定义900中的群组904)。拥有多个定时器允许多个操作系统(os)在同一个物理处理器上并行运行。提供多个定时器而不需要额外的硬件或软件组件,从而最小化攻击面并最大化安全性。
[0054]
映像文件还可以定义对应于目标平台的安全监控配置(例如,根据架构参数)。相对于任何其他执行域,安全监控以更高的特权级别运行。安全监控还可以定义抢占式域切换时间间隔。在执行上下文没有被定期释放的情况下(例如,在api定义900的群组901中的ecall_yield()),例如,如果执行上下文的安全性受损,抢占式域切换可以强制实施执行域之间的转换。
[0055]
图3图示了用于生成定义多个分离的执行域的固件映像的示例方法300的流程图。方法300将参照计算机架构200中描述的组件和数据来描述。
[0056]
方法300包括访问第一可执行程序(301)。例如,映像导出模块201可以访问可执行程序211a。方法300包括访问第二可执行程序(302)。例如,映像导出模块201可以访问可执行程序211b。方法300包括访问安全监控可执行程序(303)。例如,映像导出模块201可以访问安全监控可执行程序212。在适当时,映像导出模块201还可以访问一个或更多个附加的可执行程序(例如,第三可执行程序、第四可执行程序等)。
[0057]
方法300包括访问定义第一安全上下文和第二安全上下文的安全策略,第一安全上下文定义第一程序文本段存储器(或“第一程序存储器”)地址范围和第一程序数据段存储器(或“第一数据存储器”)地址范围,第二安全上下文定义第二程序文本段存储器(或“第二程序存储器”)地址范围和第二程序数据段存储器(“第二数据存储器”)地址范围,第一程序文本段存储器地址范围不同于第二程序文本段存储器地址范围并且与第二程序文本段存储器地址范围不重叠,第一程序数据段存储器地址范围不同于第二程序数据段存储器地址范围并且与第二程序数据段存储器地址范围不重叠(304)。例如,映像导出模块201可以访问安全策略221。如所示,安全策略221定义了安全上下文222a、安全上下文222b等。
[0058]
程序文本段存储器或程序存储器可以包括闪存(flash)、rom或ram技术中的任一个。程序数据段存储器或数据存储器可以包括ram或ddr技术中的任一个。
[0059]
安全上下文222a定义闪存地址范围223a、系统地址范围224a和外围设备入口226a。闪存地址范围223a可以对应于待安装固件映像的计算机系统处的闪速存储器的范围。类似地,系统地址范围224a可以对应于待安装固件映像的计算机系统处的系统存储器
的范围。外围设备入口226a可以对应于待安装固件映像的(例如,嵌入式)计算机系统处的(例如,存储器映射的)外围设备。
[0060]
安全上下文222b定义闪存地址范围223b、系统地址范围224b和外围设备入口226b。闪存地址范围223b可以对应于待安装固件映像的计算机系统处的闪速存储器的另一范围。类似地,系统地址范围224b可以对应于待安装固件映像的计算机系统处的系统存储器的另一范围。外围设备入口226b可以对应于待安装固件映像的(例如,嵌入式)计算机系统处的(例如,基于存储器的)外围设备。
[0061]
闪存地址范围223a可以不同于闪存地址223b,并且与闪存地址223b不重叠。类似地,系统地址范围224a可以不同于系统地址224b并且与系统地址224b不重叠。
[0062]
在适当时,安全策略221可以定义一个或更多个附加上下文(例如,第三安全上下文、第四安全上下文等)。一个或更多个附加上下文中的每一个可以定义对应的闪速存储器地址范围、系统存储器地址范围和外围设备入口。附加闪速存储器地址范围可以彼此不同且不重叠,也可以与第一闪速存储器地址范围和第二闪速存储器地址范围不重叠。附加系统存储器地址范围可以彼此不同且不重叠,也可以与第一系统存储器地址范围和第二系统存储器地址范围不重叠。针对附加安全上下文定义的外围设备入口可以对应于待安装固件映像的(例如,嵌入式)计算机系统处的(例如,存储器映射的)外围设备。
[0063]
每个附加安全上下文可以对应于一个或更多个附加可执行程序之一。例如,分别地,第三安全上下文可以对应于第三可执行程序,第四安全上下文可以对应于第四可执行程序等等。
[0064]
方法300包括导出符合安全策略并且包括第一可执行程序、第二可执行程序和安全监控可执行程序的固件映像(305)。例如,映像导出模块201可以导出固件映像231以符合安全策略221。映像导出模块201可以对固件映像231进行加密签名。如所示,固件映像231包括可执行程序211a、可执行程序211b和安全监控可执行程序212。适当时,固件映像还可以包括一个或更多个附加可执行程序(例如,第三可执行程序、第四可执行程序等)。
[0065]
导出固件映像包括根据第一安全上下文配置第一执行域,包括将第一执行域限制为使用第一程序文本段存储器地址范围中的程序文本段存储器和使用第一程序数据段存储器地址范围中的程序数据段存储器(306)。导出固件映像包括将第一可执行程序配置为在第一执行域中运行(307)。例如,导出固件映像231可以包括导出域定义232a和将可执行程序211a配置为在由域定义232a形成的执行域中运行。域定义232a根据安全上下文222a定义可执行程序221a的执行域。域定义232a定义可执行程序211a以对应于特权233a的特权级别而执行,限于使用存储器限制234a内的存储器,并限于使用外围设备236a。映像导出模块201可以从闪存地址范围223a和系统地址范围224a导出存储器限制234a。映像导出模块可以从外围设备入口226a导出外围设备236a。
[0066]
导出固件映像包括根据第二安全上下文配置第二执行域,包括将第二执行域限制为使用第二程序文本段存储器地址范围中的程序文本段存储器和使用第二程序数据段存储器地址范围中的程序数据段存储器(308)。导出固件映像包括将第二可执行程序配置为在第二执行域中运行(309)。例如,导出固件映像231可以包括导出域定义232b和将可执行程序211b配置为在由域定义232b形成的执行域中运行。域定义232b根据安全上下文222b定义可执行程序221b的执行域。域定义232b定义可执行程序211b以对应于特权233b(其可以
与对应于特权233a的特权级别相同或不同)的特权级别而执行,限于使用存储器限制234b内的存储器,并限于使用外围设备236b。映像导出模块201可以从闪存地址范围223b和系统地址范围224b导出存储器限制234b。映像导出模块可以从外围设备入口226b导出外围设备236b。
[0067]
当适当时,导出固件映像可以包括导出每个附加可执行程序(例如,第三、第四等)的域定义,以及配置附加可执行程序以在由域定义形成的执行域中运行。每个附加域定义可以根据相应的附加安全上下文被定义用于可执行程序。例如,附加域定义可以定义附加可执行程序以特定的权限级别执行。特定的特权级别可以与对应于特权233a、233b的特权级别相同或不同,或者与对应于其他附加可执行程序的特定特权相同或不同。
[0068]
导出固件映像包括将安全监控可执行程序配置为以相对于第一执行域和第二执行域的更高特权级别运行,并且以特定间隔在第一执行域和第二执行域之间切换处理器资源(310)。例如,映像导出模块201可以导出安全监控237。安全监控237定义安全监控可执行程序212以对应于特权238的特权级别执行。对应于特权238的特权级别可以分别高于对应于特权233a和223b的特权级别。安全监控237定义处理器根据域切换间隔239在域定义232a、232b等中定义的执行域之间进行切换。域切换间隔239可以以相等间隔或可变间隔定义执行域之间的切换。
[0069]
在适当时,映像导出模块201可以定义安全监控可执行程序212以同样高于与一个或更多个附加可执行程序(例如,第三可执行程序、第四可执行程序等)相关联的特权级别的特权238来执行。安全监控237还可以定义处理器根据域切换间隔239在一个或更多个附加可执行程序的域定义中定义的执行域之间切换。
[0070]
转向图4a,图4a图示了便于形成和执行多域执行环境的示例计算机架构400。如所示,计算机架构400包括硬件401和软件407。类似于计算机架构200,硬件401和软件407以及其他组件(例如,映像导出模块201)可以通过网络(或作为网络的一部分)彼此连接,例如,pan、lan、wan以及甚至互联网。因此,硬件401和软件407以及任何其他连接的计算机系统及其组件可以创建消息相关数据并通过网络交换消息相关数据(例如,近场通信(nfc)有效载荷、蓝牙数据包、互联网协议(ip)数据报以及利用ip数据报的其他更高层协议,例如传输控制协议(tcp)、超文本传输协议(http)、简单邮件传输协议(smtp)等)。
[0071]
硬件401还包括处理器402、闪速存储器403、系统存储器404和外围设备406a-406c。处理器402可以处理映像231以在软件407中形成执行域411a和411b。处理器402可以使用加密方法来检查映像231的完整性和真实性,以防止对策略221和/或安全监控可执行程序212的不想要的改变。处理器402可以在执行域411a中加载可执行程序211a,并且可以在执行域411b中加载可执行程序211b。
[0072]
根据域定义232a,执行域411a限于使用闪速存储器403中的闪存地址范围223a、使用系统存储器404中的系统地址范围224a以及使用外围设备236a(包括外围设备406a和406b)。类似地,根据域定义232b,执行域411b限于使用闪速存储器403中的闪存地址范围223b、使用系统存储器404中的系统地址范围224b以及使用外围设备236b(包括外围设备406b和406c)。
[0073]
在适当时,处理器402可以加载图像231以在软件407中形成一个或更多个附加执行域(例如,第三执行域、第四执行域等)。处理器402可以将附加的对应可执行程序(例如,
第三可执行程序、第四可执行程序等)加载到一个或更多个附加执行域的每一个中。一个或更多个附加执行域可以被限于使用固件映像231中的相应域定义中定义的闪速存储器范围、系统存储器范围和外围设备。
[0074]
处理器402还可以在软件407中加载安全监控可执行程序212。通常,安全监控可执行程序412监控和控制执行域411a和411b(以及任何其他执行域)内的执行。安全监控可执行程序412还可以根据域切换间隔239在不同的执行域之间切换执行。
[0075]
图4b1至图4b3图示了便于在多域执行环境中同时执行多个可执行程序的计算机架构400。图5示出了用于同时执行多个可执行程序的示例方法500的流程图。方法500将针对计算机架构400的组件和数据进行描述。
[0076]
方法500包括将执行切换到第一执行域,其中第一可执行程序在第一安全上下文中运行,该第一执行域被限于使用第一闪速存储器地址范围中的闪速存储器,并且限于使用第一系统存储器地址范围中的系统存储器(501)。例如,在图4b1中,根据域切换间隔239,安全监控可执行程序212可以将执行切换到执行域411a。可执行程序211a根据(在域定义232a中定义的)上下文在执行域411a中运行,该执行域411a被限于使用闪存地址范围223a、系统地址范围224a和外围设备236a。
[0077]
方法500包括根据第一安全上下文执行第一可执行程序的指令,包括将指令限制为使用第一闪速存储器地址范围中的闪速存储器和使用第一系统存储器地址范围中的系统存储器(502)。例如,处理器402可以执行来自可执行程序211a的指令431。安全监控可执行程序212可以将指令431限制为使用闪存地址范围223a中的闪速存储器403、使用系统地址范围224a中的系统存储器404以及使用外围设备236a。
[0078]
方法500包括在特定时间间隔处,将执行切换到第二执行域,其中第二可执行程序在第二安全上下文中运行,该第二执行域被限于使用第二闪速存储器地址范围中的闪速存储器,并且被限于使用第二系统存储器地址范围中的系统存储器,第二闪速存储器地址范围不同于第一闪速存储器地址范围并且与第一闪速存储器地址范围不重叠,第二系统存储器地址范围不同于第一系统存储器地址范围并且与第一系统存储器地址范围不重叠(503);例如,在图4b2中,根据域切换间隔239,安全监控可执行程序212可以将执行切换到执行域411b。可执行程序211b根据(在域定义232b中定义的)上下文在执行域411b中运行,该执行域411b被限于使用闪存地址范围223b、系统地址范围224b和外围设备236b。
[0079]
方法500包括根据第二安全上下文执行第二可执行程序的另一指令,包括将另一指令限制为使用第二闪速存储器地址范围中的闪速存储器和使用第二系统存储器地址范围中的系统存储器(504)。例如,处理器402可以执行来自可执行程序211a的指令432。安全监控可执行程序可以将指令432限制为使用闪存地址范围223b中的闪速存储器403、使用系统地址范围224b中的系统存储器404以及使用外围设备236b。
[0080]
方法500包括在另一特定时间间隔处,将执行切换回第一执行域(505)。例如,在图4b3中,根据域切换间隔239,安全监控可执行程序212可以将执行切换回执行域411a。方法500包括根据第一安全上下文执行第一可执行程序的又一指令,包括将该又一指令限制为使用第一闪速存储器地址范围中的闪速存储器和使用第一系统存储器地址范围中的系统存储器(506);例如,处理器402可以执行来自可执行程序211a的指令433。安全监控可执行程序212可以将指令433限制为使用闪存地址范围223a中的闪速存储器403、使用系统地址
范围224a中的系统存储器404以及使用外围设备236a。
[0081]
因此,执行域411a和411b可以共享外围设备406b。当根据域切换间隔239将执行切换到域411a时,域411a可以使用外围设备406b。当根据域切换间隔239将执行切换到域411b时,域411b可以使用外围设备406b。
[0082]
在适当时,并且在根据切换间隔239的特定时间间隔处,安全监控可执行程序212还可以将执行切换到一个或更多个附加执行域(例如,第三执行域、第四执行域等)和/或在一个或更多个附加执行域之间切换。例如,在执行可执行程序211a的指令之后和执行可执行程序211b的指令之前,安全监控可执行程序212可以切换到一个或更多个附加执行域和/或在一个或更多个附加执行域之间切换。类似地,在执行可执行程序211b的指令之后和执行可执行程序211a的指令之前,安全监控可执行程序212可以切换到(例如不同的)一个或更多个附加执行域和/或在(例如不同的)一个或更多个附加执行域之间切换。处理器402可以在一个或更多个附加域的每一个中执行来自可执行程序(例如,第三可执行程序、第四可执行程序等)的指令。安全监控可执行程序212可以将来自一个或更多个执行域中的可执行程序的指令限制为使用定义的闪速存储器地址范围、系统存储器地址范围和外围设备。
[0083]
执行域211a和211b可以选择性地挂起(suspend)或转换到低功率模式以节省功率(例如,在api定义900的群组901中的ecall_wfi)。如果/当执行域211a和211b都被挂起时,处理器402可以经由risc-v中的特权指令“等待中断”(wfi)指令或其他架构(即,arm和mips)中的类似指令转换到低功率状态。处理器402可以在外部中断时恢复。
[0084]
如所述,可以在配置文件中定义一个或更多个执行域的配置。定义执行域的配置可以包括定义:存储器范围(例如,闪速存储器和/或ram)、存储器范围访问策略、存储器映射的外围设备、中断延迟、围栏指令(fenced instruction)激活等。存储器范围访问策略可以指示以下任意的组合:读取、写入、执行或无访问权限。存储器外围设备可以包括:通用异步接收发射机(uart)、脉宽调制器(pwm)、脉冲持续时间调制器(pdm)、实时时钟(rtc)、通用输入输出(gpio)设备、平台级中断控制器(plic)、以太网端口(xemaclite)、按钮(btn)等。
[0085]
图6图示了定义执行域611a、611b、611c、611d的示例配置文件600。
[0086]
时钟间隔621定义了10ms的抢占式调度器间隔。
[0087]
配置参数622、612a、613a、614a、616a和617a定义了执行域611a的配置。配置参数622定义了分别与执行域的中断请求(irq)16、17和18相关联的按钮0、1和2。一般来说,irq是一种发送到处理器的信号,它暂时停止正在运行的程序,并反而允许特殊程序(中断处理程序)运行。中断用于处理事件,如从调制解调器或网卡接收数据、按键、按钮、鼠标移动等。
[0088]
配置参数612a定义执行域611a具有对64k(千字节)的闪速存储器的访问权。64k闪速存储器的基址是0x20410000,执行域611a对64k闪速存储器具有读访问权和执行访问权。64k闪速存储器可用于存储在执行域611a中待运行的可执行程序的文本段。指令613a定义执行域611a具有对16k(千字节)的随机存取存储器(ram)的访问权。16k ram的基址是0x80000400,执行域611a对16k ram具有读访问权和写访问权。
[0089]
配置参数614a为pwm外围设备定义了256字节长的范围(0x代表十六进制,0x100在十进制计数中转换为256)。pwm的基址为0x10025000,执行域611a对pwm具有读访问权和写访问权。配置参数616a为gpio设备定义了256字节的长范围。gpio设备的基址是0x1001200,执行域611a对gpio设备具有读访问权和写访问权。配置参数617a定义了4mb范围的plic。
plic的基址是0x0c000000,执行域611a对plic具有读访问权和写访问权。
[0090]
配置参数612b、613b和614b定义了执行域611b的配置。配置参数612b定义执行域611b具有对256k(千字节)的闪速存储器的访问权。256k闪速存储器的基址是0x20420000,执行域611b对256k闪速存储器具有读访问权和执行访问权。256k闪速存储器可用于存储将在执行域611b中运行的可执行程序的文本段。配置参数613b定义了执行域611b具有对32k(千字节)的随机存取存储器(ram)的访问权。32k ram的基址是0x80005000,执行域611b对32k ram具有读访问权和写访问权。配置参数614b定义了8k以太网端口。以太网端口的基址是0x60000000,执行域611b对以太网端口具有读访问权和写访问权。
[0091]
配置参数612c和613c定义了执行域611c的配置。指令612c定义了执行域611c具有对64k(千字节)的闪速存储器的访问权。64k闪速存储器的基址是0x2046000,执行域611b对64k闪速存储器具有读访问权和执行访问权。64k闪速存储器可用于存储将在执行域611c中运行的可执行程序的文本段。配置参数613c定义了执行域611c具有对8k(千字节)的随机存取存储器(ram)的访问权。8k ram的基址是0x8000d000,执行域611c对8k ram具有读访问权和写访问权。
[0092]
配置参数612d、613d和614d定义了配置执行域611d。配置参数612d定义了执行域611d具有对64k(千字节)的闪速存储器的访问权。64k闪速存储器的基址是0x2047000,执行域611c对64k闪速存储器具有读访问权和执行访问权。64k闪速存储器可用于存储将在执行域611d中运行的可执行程序的文本段。配置参数613定义了执行域611d具有对4k(千字节)的随机存取存储器(ram)的访问权。4k ram的基址是0x8000f000,执行域611d对4k ram具有读访问权和写访问权。配置参数6114d定义了256字节范围的uart。uart的基址为0x1001300,执行域611d对uart具有读访问权和写访问权。
[0093]
配置还可以定义在执行域之间对存储器映射的外围设备的共享使用。当根据特定切换间隔将执行重点转移(切换)到执行域时,每个执行域可以使用存储器映射的外围设备。
[0094]
映像导出模块(例如201)或配置器(例如700)可以使用配置600来形成定义多个执行域的映像。可以在处理器处加载该映像,以便用所定义的多个执行域来配置处理器。
[0095]
图7图示了便于生成包括多个分离的执行域的加密签名固件映像的计算机架构700。通常,配置器701从配置包708创建签名的可加载固件映像731。签名的可加载固件映像731可以被加密签名。
[0096]
如所示,配置包708包括域可执行程序711a(例如,211a)、域可执行程序711b(例如,211b)、

、域可执行程序711n。因此,实际上可以有任意数量的域可执行程序。配置包708还可以包括安全监控可执行程序712(例如212)和策略721(例如221或600)。策略721可以用平面ascii文本、可扩展标记语言(xml)或javascript对象表示法(json)格式编写。
[0097]
配置器701可以参考策略721来确定对应于域可执行程序711a(例如,211a)、域可执行程序711b(例如,211b)、

、和域可执行程序711n中的每一个的执行域的中断处理、围栏指令处理、存储器访问和外围设备入口。配置器701可以根据确定的中断处理、围栏指令处理、存储器访问和外围设备入口来配置执行域,并且在签名的可加载固件映像731中指示执行域配置。配置器701可以在签名的可加载固件映像731中包括安全监控可执行程序712,以强制实施每个执行域的确定的中断处理、围栏指令处理、存储器访问和外围设备入口。
[0098]
配置器701可以从目标平台(tor/napot/4b)上可用的许多选项中自动选择更(或最)合适的pmp配置,以最大化pmp区域的数量(每个区域的存储器映射的资源)。配置器701可以执行一个或更多个交叉检查和验证,以避免输入到配置包708中的操作员错误,例如允许811a、811b、

、811n之一与多域安全监控712重叠的策略。
[0099]
配置器701还可以配置签名的可加载固件映像731,使得在运行时按需加载到处理器802中的策略在一个或更多个执行域811a、811b、

、811n内部被智能地改变,以超过(例如,硬编码的)处理器802的pmp寄存器限制。配置器701还可以配置签名的可加载固件映像731,使得执行域811a、811b、

、811n中的每一个被分配其自己的软定时器。
[0100]
图8图示了示例多域执行环境800。如所示,硬件801包括处理器802、数据存储器804、程序存储器809和外围设备806a、806b、

、806n。处理器802可以加载签名的可加载固件映像731来实例化软件807。处理器802可以使用加密签名来检查签名的可加载固件映像731的完整性,以防止对策略721和/或对安全监控可执行程序712的不想要的更改。
[0101]
如所示,软件807包括执行域811a、811b、

、811n和多域安全监控712。每个执行域可以对应于配置包708中包括的域可执行程序。执行域811a可以对应于域可执行程序711a,执行域811b可以对应于域可执行程序711b,

,执行域811n可以对应于域可执行程序711n。
[0102]
多域安全监控713针对执行域811a、811b、

,811n实施策略721,例如,限制/控制对数据存储器804、程序存储器809和外围设备806a、806b...,806n的子集(例如,地址范围)的访问。多域安全监控712包括域间安全通信713(例如,由api定义900中的群组902促成)。域间安全通信713可以在不同执行域的上下文之间转换,以便于域间通信。
[0103]
执行域811a、811b,...,811n中的任一个可以选择性地挂起或转换到低功率模式以节省功率(例如,由api定义900中的群组901中的ecall_wfi()促成)。如果/当所有执行域811a、811b,...811n都被挂起,处理器802可以转换到低功率状态。处理器802可以在外部中断时恢复。
[0104]
图9图示了示例api定义900。api定义900可以在任何种类的api中实现,以便于本发明的各方面。如所示,api定义900定义了许多功能。表1描述了函数、它们的语法和使用示例。
[0105]
表1
[0106]
[0107]
[0108]
[0109][0110]
因此,在无需mmu、虚拟内存、操作系统或除物理内存保护单元(pmp)和两种不同的特权模式之外的其他硬件装置的情况下,本发明的各方面促进了基本上无限数量的分离执行域的形成。
[0111]
上述描述是为了说明和描述的目的而提出的。以上内容不旨在是详尽的或将本发明限于所公开的明确形式。鉴于上面的教导,很多修改和变化是可能的。此外,应该注意的是,任何或所有前述替代实施例可以以任何期望的组合使用,以形成本发明的附加混合实施例。
[0112]
此外,尽管已经描述和图示了本发明的具体实施例,但是本发明不限于如此描述和图示的部件的具体形式或布置。本发明的范围由所附权利要求书、在此和在不同申请中提交的任何未来权利要求书及其等同物来定义。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1