CN107408068B - 处理器中的动态配置和外围设备访问 - Google Patents

处理器中的动态配置和外围设备访问 Download PDF

Info

Publication number
CN107408068B
CN107408068B CN201680011706.5A CN201680011706A CN107408068B CN 107408068 B CN107408068 B CN 107408068B CN 201680011706 A CN201680011706 A CN 201680011706A CN 107408068 B CN107408068 B CN 107408068B
Authority
CN
China
Prior art keywords
memory
access
executable
executable code
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680011706.5A
Other languages
English (en)
Other versions
CN107408068A (zh
Inventor
S·舒尔茨
P·科贝尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107408068A publication Critical patent/CN107408068A/zh
Application granted granted Critical
Publication of CN107408068B publication Critical patent/CN107408068B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

在各种实施方式中,一种系统包括存储器、处理器、以及执行感知存储器保护单元(EA‑MPU)。所述EA‑MPU被配置用于至少基于请求进行访问的主体可执行程序的身份、以及所请求进行访问的地址、以及标识哪些主体可执行程序将要被授权对若干存储器区域中的每个进行访问的权限信息来调节由处理器进行的存储器访问。在各种实施方式中,所述权限信息自身被存储在所述若干存储器区域之中。所述权限信息的各种配置可以被用来提供共享存储器区域以在两个或更多个独立可信软件模块之间进行通信、保护对可通过存储器映射的I/O(MMIO)进行访问的设备的访问、实现灵活的看门狗定时器、为软件更新提供安全性、提供动态测量信任根服务、和/或支持操作系统。

Description

处理器中的动态配置和外围设备访问
优先权声明
本申请要求2015年3月23日提交的美国专利申请序列号14/666,087、名称为“DYNAMIC CONFIGURATION AND PERIPHERAL ACCESS IN A PROCESSOR(处理器中的动态配置和外围设备访问)”的优先权的权益,所述美国专利申请全文通过引用结合在此。
技术领域
本公开总体上涉及计算机处理器,并且具体地,涉及嵌入式系统中的软件的安全性。
背景技术
在当前技术中,小型处理单元正变得越来越普遍。便携式电子、汽车设备、玩具、甚至家用电器都需要使用内部计算单元进行标准操作。这些设备中的计算机系统通常提供针对设备量身定制的一些专用功能。例如,恒温器中的微控制器可以被适配用于监控和调节家庭制热和制冷,并且还可以支持通信以报告状态或从房主接收指令。
部署在这种设备中的微控制器其他控制器电路可以被称为嵌入式系统。许多嵌入式系统被设计用于独立系统中的广泛部署,这可以给予低功耗和/或低成本制造的益处。许多嵌入式系统包括一些通信能力,以支持交互和/或升级。
嵌入式系统的不断扩大的使用增加了包括安全性特征的需要,从而可以有助于保护这些系统免受虚假、恶意、或其他不正确的操作。
附图说明
本公开的益处、特征、及优点将关于以下描述以及附图而变得更好理解。
图1示出了被配置用于支持执行可信任务的系统100的一个示例。
图2展示了权限表200的示例。
图3展示了可以被用于实现共享存储器或设备驱动器的权限表300的示例。
图4展示了N:M执行感知MPU已被配置用于建立具有不同存储器区域的可信任务的示例。
图5展示了N:M可配置性利用MMIO访问来从可信任务中构建设备驱动器的示例。
图6展示了N:M可配置性利用MMIO访问从被授予对定时器进行独占访问的可信任务中构建看门狗定时器的示例。
图7展示了允许可信任务对其他可信任务做出修改的权限表700的示例。
图8示出了软件元素之间的管理安排的示例。
图9示出了用于动态测量信任根(DRTM)服务的示例。
图10展示了允许操作系统对权限表做出有限修改的权限表1000的示例。
图11示出了由执行感知MPU进行保护的操作系统内核的示例。
图12展示了处理器核1200的一个示例。
图13是片上系统1300的一个示例的框图。
图14是用于调节对具有执行感知存储器保护的地址的访问的过程1400的一个示例的流程图。
具体实施方式
构思了各种方式来协助保护嵌入式系统和其他处理系统。在各种实施方式中,嵌入式系统可以被设计用于实现可信计算基础——可以提供安全性以确保任务的执行而没有不必要的干扰的一组硬件和软件部件。被设计和相信为实现可信计算基础所支持的安全机制的任务是可信任务。在各种实施方式中,这些任务或者在具有执行感知存储器保护的合适的硬件平台上实现它们的可执行代码可以被称为可信任务或可信程序。
图1示出了被配置用于支持执行可信任务的系统100的一个示例。在本实施方式中,系统100包括被耦合到执行感知存储器保护单元(MPU)120上的处理器110。MPU 120对所有存储器访问实施访问控制,包括常规存储器以及存储器映射的设备I/O(MMIO)。在本示例中,MPU 120包括内部区域保护寄存器(RPR)122,其可以被用于存储用于调节对资源(如存储器或MMIO映射的硬件部件的区域)的访问的权限或规则。就以下意义上来说,MPU 120是执行感知的:它可以基于请求存储器访问(访问请求的主体)的可执行程序的身份以及有待被访问的(多个)存储器地址(访问请求的对象)来调节存储器访问。在各种实施方式中,MPU考虑了在验证特定数据或代码访问时当前正在执行的指令的地址。在本示例中,系统100还包括物理不可克隆功能单元(PUF)131、可编程只读存储器(PROM)115、随机存取存储器(RAM)138、密码模块136(如密码加速器)、定时器134、以及输入/输出(I/O)接口132。在本示例中,将这些元件110、115、120、131、132、134、136、和138封装在片上系统(SoC)105中。可以对SoC架构进行配置从而使得内部元件之间的通信是安全的或可以抵抗窃听、篡改、或其他攻击。还将系统100示出为具有外围元件144和145以及外部动态RAM(DRAM)存储器142,这些都在SoC 105外部。外围设备144、145和外部DRAM 142通过I/O接口132与SoC元件进行通信。由于这些元件在SoC 105外部,程序员以及其他设计者可以对这些元件142、144、145以及所述SoC上的元件之间的通信做出安全性假设,这些安全性假设不同于对直接在SoC上的元件之间的通信做出的安全性假设。例如,设计者可以假设外部DRAM 142和I/O接口132之间的通信比RAM 138和MPU 120之间的通信更易受到攻击。
在图1的示例中,MPU 120作为针对与处理器110的通信的网守:所有在处理器110和其他元件之间的通信都经过MPU 120或以其他方式由MPU 120进行调节。在其他实施方式中,处理器110可以能够部分地或全部地与一个或多个其他片上部件进行通信。
系统100中可以包括各种软件元素。配置了安全加载器150以用于核实并将软件加载到RAM 138中。安全加载器150自身可以是可以用安全方式进行加载的软件部件。例如,可以将SoC 105配置用于在上电或重置后立即或很快从PROM 115中检索安全加载器150。反而,或此外,可以将SoC 105配置用于在其在处理器110上执行之前检查安全加载器150的哈希或其他指纹。在各种配置中,安全加载器105可以是软件和硬件的组合,具有依赖于SoC105中的安全硬件部件(如密码模块136)的指令。在各种实施方式中,安全加载器150仅在上电或重置操作后的初始化期间是活跃的。
在系统100的各种实施方式中,安全加载器150可以被配置用于允许或拒绝将软件部件加载到RAM 138中,和/或允许或拒绝初始化过程期间软件部件对各种硬件或软件资源的访问。对于允许或拒绝加载或访问的决定可以基于以下因素,如来源(例如,在各种实施方式中,可以执行从PROM 115加载的任何模块)、指纹(例如,在各种实施方式中,可以执行其哈希被列在PROM 115中的访问列表中的任何程序)、或证书(例如,可以执行用PROM 115中可接受的证书进行数字签名的任何程序)。
被认证以由安全加载器150进行执行的软件部件可以包括嵌入式操作系统(OS)160、依赖嵌入式OS 160的各种应用162、164、以及一个或多个可信程序170。可以将可信程序170配置用于独立于嵌入式OS 160进行操作。在所展示的示例中,可信程序170可以包括用于控制或响应外围元件(例如,生物识别传感器、打印机、麦克风、扬声器、节流阀、或其他I/O部件、传感器、致动器、或设备)的程序、用于各种I/O任务的程序、安全性程序、证实程序、各种计算模块、通信程序、通信支持协议、或其他程序、或其组合。
在各种实施方式中,安全加载器150被配置用于在初始化期间对MPU 120进行编程以保护各存储器区域不受到未授权访问。这些区域可以包括(a)MPU 120依赖的存储器区域以及(b)可信任务170依赖的存储器区域。在各种实施方式中,安全加载器150和MPU 120之间的这种交互可以支持测量的启动过程,而无需额外的专用硬件支持,或者具有来自诸如签名核实引擎(例如,在加密模块136中)的硬件加速器支持。
MPU 120可以包括内部寄存器(如RPR 122或其他存储器)来记录关于权限(包括特权或限制)的信息,这些权限调节对可以由处理器110进行访问的各存储器位置的访问。可以将这些调节规定存储在例如权限表或MPU 120所使用的其他数据结构中。
图2展示了权限表200的示例。权限表200可以在上电、重置、或其他初始化过程期间被编程为执行感知MPU(例如,图1的MPU 120)。可以配置安全加载器模块(例如,安全加载器150)用于查找和验证有待被存储在权限表200中的权限。只有这样,安全加载器才继续加载并执行非可信软件(例如,嵌入式操作系统160)。安全加载器可以配置硬件存储器保护和/或可以在将控制委派给实际运行时代码(如非可信OS)之前初始化用于远程证实和可信执行的信任链。在各种实施方式中,安全加载器在上电或重置操作之后被激活,并且在权限表200的初始化之后终止。
在各种实施方式中,权限表200中的信息被存储在MPU中的区域保护寄存器中(例如,RPR 122)。在图2的示例中,权限表200是片上存储器中的保持有针对各种代码和数据区域的保护权限的写保护表。所述表包括针对访问片上存储器的各区域的权限。在各种实施方式中,外部DRAM(例如,图1的存储器142)不是典型用于机密可信任务数据的,由于设计者对于内部片上存储器可以具有针对攻击抵抗的更高的置信度。外部DRAM或其他扩展的大容量存储器可以被用于支持更大的代码体,如非可信例程、或非可信OS或应用栈、或公共代码和仅需要完整性保护的数据。
权限表200包括支持执行感知存储器保护的权限。这些权限不仅基于有待被访问的存储器的身份(图2中的访问的对象),还基于请求访问的正在执行的软件或进程或线程的身份(图2中的访问请求的主体)。
例如,权限表200可以由执行感知MPU(例如,图1的MPU 120)使用。在处理器请求访问各存储器区域时,所述执行感知MPU可以针对不同的处理器特权水平调节读访问和/或写访问。对于代码执行权限,可以针对各种编程的访问控制规则检查由处理器的指令获取单元所生成的地址。对于数据读/写权限,可以检查由指令执行单元所生成的数据地址。除了这些对所请求的地址的检查,还可以配置MPU以将代码区域链接到数据区域,从而使得在请求代码区域的环境中对所请求的数据区域进行评价。除了验证来自指令执行单元的所请求的地址,还可以考虑正执行指令的请求地址。因此,在各种实施方式中,执行感知MPU不仅验证数据访问(对象、读/写/执行),而且还考虑诸如当前活跃的指令指针(curr_IP)的指示符作为执行访问的主体。在各种实施方式中,可以对执行感知MPU进行编程以基于各个执行代码区域自主实施细粒度访问控制。关于提供执行感知记忆保护的附加信息可在2013年7月29日提交的题为“执行感知记忆保护(Execution-Aware Memory Protection)”、而名为帕特里克·科泊尔(Patrick Koeberl)和史蒂芬·舒尔茨(Steffen Schulz)作为发明人的美国专利申请号13/952,849中获得;以及从帕特里克·科泊尔(Patrick Koeberl)、史蒂芬·舒尔茨(Steffen Schulz)、阿哈默德-雷扎·萨迪吉(Ahmad-Reza Sadeghi)、维贾伊·瓦拉达拉贾恩(Vijay Varadharajan)的“轻版信任:用于微型嵌入式设备的安全性架构(TrustLite:A Security Architecture for Tiny Embedded Devices)”,计算机协会会议记录,14年欧洲系统2014年4月13-16日,阿姆斯特丹,14页(2014)中获得。
在各种实施方式中,执行感知存储器保护可以实现低成本的软件模块的强隔离。低成本存储器保护的一些实施方式假设可信操作系统(OS)在运行时隔离任务。这种实施方式可能使OS成为单点故障。一些隔离系统仅限于可信模块的加载时配置,这可能会阻止运行时期间可信模块的动态启动和更新。
可以设置执行感知存储器保护系统以隔离多个基于软件/数据的可信模块(如可信任务),从而使得它们独立于OS或其他运行时服务而执行。在各种实施方式中,执行感知存储器保护单元MPU可以使用权限表200中的权限,从而使得对片上元件(例如,元件132、134、136、和/或138)和/或外部外围设备(例如,外围设备144和/或145)的访问被安全地限制到各种隔离的软件模块(如可信任务170)。
在图2的示例中,权限表200包括被安排在三列201、202、203中的权限数据,这三列对应于可以由处理器(例如,处理器110)执行的三个软件元素。在本图示中,可以被执行的、并且因此可以被期待为请求对存储器位置的访问的三个主体软件元素被指定为可信任务A(201)、可信任务B(202)、和操作系统(“OS”,203)。每列示出了对应的软件元素可获得的访问权限。
还用九行211、212、213、221、222、223、231、232、233对权限表200进行了描绘,每行对应于存储器的受保护部分的对象地址或MMIO设备端口。在行与列的每个交叉处,所述表存储了在主体软件元素(列)进行请求时的对象地址(行)可获得的访问权限的类型。
图2中的行211、212、213组成部分210,其指定访问保持有三个软件元素的可执行代码的PROM或闪存(例如,PROM 115)中的地址的权限。在本示例中,部分210中的行对应于权限表200中的列。行211包括对保持有可信任务A的代码的存储器的访问的权限;行212包括对保持有可信任务B的代码的存储器的访问的权限,而行213包括对保持有OS的代码的存储器的访问的权限。在本示例中,部分210具有主体软件元素与允许对保持有那些软件元素的代码的对象地址的访问之间的对角线关系。
例如,考虑列201和行211的交叉。这是对角线上元素:当(1)来自可信任务A的指令正由处理器执行(因此可信任务A是主体)并且使处理器请求对保持有可信任务A的代码的存储器的访问(因此可信任务A的代码是对象)时,其指示将对权限进行授权。在此情况下,列201和行211的交叉指示允许处理器访问所请求的存储器。权限表200显示,此访问既可以作为读权限、也可以作为执行权限使用,并且可用于进入保持有可信任务A的存储器(例如,用于可信任务A递归地调用自身)以及用于加载可信任务A的指令(例如,用于可信任务A检索指令以进行进一步处理)。
类似地,允许可信任务B进入和加载存储了组成可信任务B的指令的存储器位置(列202和行212的交叉)。并且允许OS进入和加载存储了组成OS的指令的存储器位置(列203和行213的交叉)。
相反,部分210的示例示出在非对角线表项中存在一些限制。考虑列201和行212的交叉。这是非对角线元素:当(1)可信任务A正由处理器执行(因此可信任务A是主体)并且使处理器请求对保持有可信任务B的代码的存储器的访问(因此可信任务B的代码是对象)时,其指示将对权限进行授权。在此情况下,列201和行212的交叉指示将允许处理器访问所请求的存储器,但是具有限制。此访问既可以作为读权限、也可以作为执行权限使用以进入可信任务B(例如,用于可信任务A将控制传递给可信任务B的新实例),并且可以作为读权限来使用以读取可信任务B的指令。然而,权限表200的示例示出,如果在执行可信任务A时,处理器将要请求来自可信任务B的指令的执行权限,处理器将会被拒绝执行权限。这个拒绝反映了安全性决定,即这样的请求可以表示虚假、恶意、或其他不正确的操作。
部分210中的其他条目进一步表示了这个安全性决定。本示例中的三个软件元素(列201、202、203)中的每个都被允许调用其他软件元素(行211、212、213)。但是这三个软件元素本身都不被允许执行来自其他软件元素的代码。在某种意义上,部分210中所示的安全性决定因此保护了三个软件元素中的每个不受其他两个的影响。
图2中示出了类似的保护,用于对由软件元素所使用的易失性存储器中的存储器位置的访问。行221、222、223组成部分220,其指定针对SRAM或DRAM模块(例如,RAM 138)中的地址的访问的权限。这个部分包括三行,这三行保持有用于访问保持有用于三个软件元素的数据和栈信息的存储器位置的权限。在本示例中,部分220中的行再次对应于权限表200中的列。行221包括对可信任务A所使用的存储器的访问的权限;行222包括对可信任务B所使用的存储器的访问的权限,而行223包括对OS所使用的存储器的访问的权限。在本示例中,部分220具有主体软件元素与允许对由那些软件元素所使用的对象地址的访问之间的对角线关系:每个软件元素都被允许读和写到被分配给那个软件元素的数据和栈位置,并且被拒绝对分配给其他软件元素的数据或栈位置的任何访问。
基于处理器寻求访问的地址来访问部分210和220中的行。权限表200中的每行都包括有待由那行进行保护的对象地址范围(列250)上的信息。
考虑处理器正执行可信任务A(主体软件元素)的示例情况。在执行过程中,处理器尝试对存储器位置进行读取,例如0x1A30(对象地址)。MPU首先查找权限表200中的与那个存储器位置相对应的行。在图2的示例中,列250表示行222保持有保护这个地址的权限信息。如以上所讨论,行222包括对可信任务B所使用的存储器的访问的权限。那一行的列201表示如果由正执行可信任务A的处理器进行请求,应当拒绝对此存储器的访问。因而,在本示例情况中,处理器将会被拒绝对读取存储器位置的访问。
图2还说明了用于调节对可以由软件元素所使用的资源的访问的保护。行231、232、233组成部分230,其指定针对除了存储器存储以外的资源的访问的权限。行231包括对存储器保护单元(例如,MPU 122)中的自身存储权限表200的寄存器的访问的权限。行232包括对定时器(例如,定时器134)进行访问的权限。行233表示部分230可以包括用于指示针对外围设备或其他资源(例如,元件131、132、136、142、144、145)的权限的附加行。
与上面所讨论的用于存储器范围的行一样,部分230中的行也由地址范围进行索引。通过使用对MPU、定时器、和其他资源的存储器映射的设备I/O(MMIO)的访问来协助此索引。
行231允许所有三个软件元素读取保持表200的MPU寄存器。在本示例中,三个软件元素都不被允许写入(或执行)MPU寄存器。此限制防止不正确的操作修订表200中的权限。
行232还允许所有三个软件元素读取定时器周期以及定时器的中断处理程序(例如,中断服务寄存器)。然而,仅允许操作系统(行232的列203)针对定时器写入这些参数。因此,行232已将定时器的控制分配给操作系统。
回到行231,可以理解可信任务A、可信任务B、操作系统都不被允许配置表200中的权限,因为这些软件元素都没有针对MPU寄存器的写访问。因此,权限表200需要与这些软件元素的执行(例如,之前)分开地被加载到寄存器中。例如,此加载可以作为只读存储器(ROM)部件硬连接到MPU中,或者可以在制造之后被配置为一次写入存储器部件,或者作为隔离的上电操作或重置操作的一部分被安装(例如,使用安全加载器150)。然而,在运行时期间,图2的示例中的三个软件元素中的任何元素都不可以对权限表200进行重新配置。
图3展示了可以被用于实现共享存储器或设备驱动器的权限表300的示例。如以上所讨论,可以在初始化过程期间将权限表编程为执行感知MPU。在图3的示例中,权限表300包括被安排(与图2中所呈现的示例类似)在三列301、302、303中的权限数据,对应于三个软件元素,被指定为可信任务A(301)、可信任务B(302)、和操作系统(“OS”,303)。每列示出了对应的软件元素可获得的访问权限。由地址范围对权限表300中的行进行索引,在列350中示出。权限表300包括三个部分310、320、330。
图3中的行311、312、313组成部分310,其指定访问保持有三个软件元素的可执行代码的PROM或闪存(例如,PROM 115)中的地址的权限。在本示例中,部分310具有主体软件元素与允许对保持有那些软件元素的代码的对象地址的访问之间的对角线关系。部分310中的主体和对象之间的这种1∶1关系规定,三个软件元素都不被允许直接执行来自其他软件元素的代码。如以上关于图2所讨论,这种安排实现了对三个软件元素中的每个提供一些免受其他两个影响的保护的安全性决定。
类似的保护由部分320中几乎对角线的安排(行321、322、323)所提供。部分320指定对由软件元素所使用的易失性存储器(例如,RAM 138)中的存储器位置的访问的权限。允许每个软件元素读取和写入分配给那个软件元素的数据和栈位置。这些软件元素中的两个——可信任务B和OS,被拒绝对分配给其他两个软件元素(列302和303)的数据或栈位置的任何访问,如按照图2的示例中的情况。
然而,在图3的示例中,权限表的部分320还包括非对角线权限。可信任务A已被授予读和写也由可信任务B所使用的存储器空间的权限,如可以在行322中所见。因此,存储器的这个部分是组合访问存储器空间,由可信任务A和可信任务B共享。这种安排与以上关于图2所讨论的情况形成对比。图3中的安排提供了可信任务A和可信任务B之间稍小的安全性隔离。但是这种安全性的降低在各种情况中可以是可接受的,诸如,例如,如果可信任务A和B共享共同来源历史或被接受具有相同的保证或可信赖性。
在各种情况中,图3中的安排的可能益处是可信任务A和B可以通过简单地读和写共享存储器空间中的进程间信息而互相进行通信。这个共享存储器空间还可以在以下方面提供安全性益处:凭借存储在权限表300中的权限来保护共享存储器不受其他进程(如本示例中的OS)的影响,这些进程由执行感知MPU(例如,图1的MPU 120)来实施。
在图3的示例中,可信任务A和B都与SRAM或DRAM模块中的数据区域(由单个地址范围所描述)之一相关联。在图2中,部分220呈现了软件元素和易失性存储器中的区域之间的一对一(1∶1)关系。然而,在图3中,部分320示出了易失性存储器区域之一具有2∶1的关系:在行322中两个软件元素共享存储器区域。
将理解的是可以对这种安排进行扩展以支持软件元素和受保护的存储器区域之间的多对多(N∶M)关系。各种可信任务可以各自与一个或多个地址空间(包括用于易失性存储器的地址空间、其他存储器、和用于其他设备的MMIO地址)相关联,并且可信任务的各种组合可以共享这些数据区域中的一个或多个。此外,各个数据区域可以对不同类型的存储器进行寻址,例如,ROM、闪存、光学、磁性、或其他类型、和/或在读和写访问上具有不同的语义。
行331、332、333、334组成权限表300的部分330,其指定针对除了存储器存储以外的资源的访问的权限。行331包括对存储器保护单元(例如,MPU 122)中的自身存储权限表300的寄存器的访问的权限。行332包括对定时器(例如,定时器134)进行访问的权限。行333包括对密码单元(例如,密码模块136)进行访问的权限。行334包括对物理不可克隆功能(例如,PUF 131)进行访问的权限。通过使用对MPU、定时器、密码单元、PUF、和其他资源的存储器映射的设备I/O(MMIO)的访问来协助此索引。
在本示例中,行331允许所有三个软件元素读取保持表300的MPU寄存器。在本示例中,三个软件元素都不被允许写入(或执行)MPU寄存器。此限制帮助防止不正确的操作修订表300中的权限。
行332允许所有三个软件元素读取定时器周期以及定时器的中断处理程序(例如,中断服务寄存器)。然而,仅允许可信任务A为定时器写入这些参数(行332的列301)。因此,行332已将定时器的控制分配给单个可信任务——可信任务A。在此意义下,可信任务A可以是或者可以包括用于定时器的安全驱动器模块。
类似地,行333已将密码单元的控制仅分配给可信任务B。因此,其他软件元素仅可以通过可信任务B对密码单元进行访问。在此意义下,可信任务B可以是或者可以包括用于密码单元的安全驱动器模块。
图4展示了N:M执行感知MPU已被配置用于建立具有不同存储器区域的可信任务的示例。在本示例中,框图400示出了通过存储在执行感知型MPU的各个区域保护寄存器中的权限,将权限授权给两个软件元素。框图400示出了由M+1个区域保护寄存器RPR#A0,A1,...,AM对可信任务A授予访问。在图的顶部,框410表示保持有可信任务A的可执行代码的存储器区域。区域保护寄存器#A0控制针对访问存储器区域410的权限。框410处的返回箭头表示当执行可信任务A时,RPR#A0允许处理器访问可信任务A的可执行代码。框412处的箭头表示当执行可信任务A时,RPR#A1允许处理器访问被分配给可信任务A的RAM的部分。指向框414的箭头表示当执行可信任务A时,RPR#A2允许处理器访问物理不可克隆功能(例如,图1的PUF131)的MMIO地址。从框410到框416的箭头表示当执行可信任务A时,RPR#AM允许处理器访问存储器的共享区域。
框图400还示出了由两个区域保护寄存器RPR#B0和B1对可信任务B授予访问。在图的底部,框420表示保持有可信任务B的可执行代码的存储器区域。区域保护寄存器#B0控制针对访问存储器区域420的权限。框420处的返回箭头表示当执行可信任务B时,RPR#B0允许处理器访问可信任务B的可执行代码。从框420到框416的箭头表示当执行可信任务B时,RPR#B1允许处理器访问可信任务A可用的存储器416的同一共享区域。(在各种实施方式中,区域保护寄存器#B1可以和RPR#AM是同一寄存器。)
因此,在图4的示例中,由区域保护寄存器启用的N:M访问包括对共享存储器416的2∶1访问。可信任务A和可信任务B各自具有对各种存储器地址的受保护的访问。这种访问包括对这两个可信任务可用的一个公共资源——共享存储器416的受保护的共享。如果本示例中的区域保护寄存器被配置用于保持有数据(如权限表300(图3)),则可以使用权限(如在图3的行322中所示的那些)来创建这个2∶1的关系。
存储器区域412可以包括例如用于存储如用于可信任务A的栈和变量的典型程序数据的RAM空间。存储器区域414可以包括例如安全存储器区域,如eFuses或物理不可克隆功能(PUF)。存储器区域416可以包括例如用于可信任务A和B的共享程序数据和参数,和/或用于这两个可信任务之间的进程间通信的存储器位置。
图5展示了其中N:M可配置性使用MMIO访问从可信任务来构建设备驱动器的示例。如果使用执行感知型MPU中的一个或多个附加RPR对可信任务提供对外围设备的MMIO区域的独占访问,可信任务可用作提供对外围设备的可信访问的设备驱动器。
框图500示出了通过执行感知MPU中的各种区域保护寄存器向可信任务设备驱动器510授予了访问。在图的顶部,框510表示保持有从设备驱动器的可执行代码的存储器区域。框510处的返回箭头表示MPU中的区域保护寄存器已被设置,使得MPU在执行设备驱动器时允许处理器访问设备驱动器的可执行代码。框512处的箭头表示当执行设备驱动器时,MPU允许处理器访问被分配给设备驱动器的RAM的部分。框514处的箭头表示当执行设备驱动器时,MPU允许处理器访问设备(如外围设备)中的寄存器的MMIO地址。外围设备可以是处理器或非处理器元件,如例如图1的元件131、132、134、136、144和/或145。
在本示例中,框510中的可信任务设备驱动器可以为外围设备提供独立于OS的访问限制。类似地,设备驱动器可以为外围设备提供硬件资源复用。并且,设备驱动器可以为与外围设备的通信提供数据保护。可以使用可信任务以此方式实现的设备驱动器的示例包括安全小型键盘驱动器、安全显示器驱动器、输入-输出驱动器、通信驱动器、及其他驱动器。在各种情况中,在两个或多个可信任务之间共享对外围设备的MMIO区域的访问可能是有用的。类似地,在某些情况中,对外围设备的MMIO区域进行分区可能是有用的,这样使得MMIO区域的某些部分可由一组一个或多个可信任务访问,并且其他部分可由不同的一组一个或多个可信任务。
图6展示了其中N:M可配置性使用MMIO访问从被授予对定时器的独占访问的可信任务来构建看门狗定时器的示例。可以配置执行感知MPU从而使得各种软件元素被给予对存储器中的各种数据结构的独占访问。在一个示例中,可以通过提供这种访问来实现看门狗定时器服务。
在各种情况中,看门狗定时器保护计算机或嵌入式系统免受死循环情况和其他软件错误的影响。看门狗定时器通常在硬件中实现,并且提供自从看门狗定时器重置后的倒计时以标记所经过的时间。可以对各种通用软件程序进行配置,从而使得当正确操作时,它们定期重新启动看门狗定时器并防止其超时。硬件或软件错误可能使程序进入死循环状况或其他不期望的状况。这个状况可以由看门狗定时器进行检测,然后看门狗定时器没有接收到所期望的重新启动。当看门狗实际上超时的时候,检测发生。在超时的时候,看门狗定时器可能通过硬件中断发起纠正行动。有待被在硬件中断上采取的行动可以是重置、重新启动、或其他纠正行动,并且可以由硬件中断描述符表(IDT)中的条目进行定义。
在图6的示例中,为可信任务提供对硬件定时器模块的MMIO区域中的寄存器以及描述如果和当定时器超时后会触发的硬件中断之后的操作的数据结构的独占访问。图6中的框图600示出了其中通过执行感知MPU中的各种区域保护寄存器向可信任务看门狗定时器610授予了访问的示例。已对MPU中的区域保护寄存器进行了设置,从而使得正在执行看门狗定时器的处理器具有对看门狗定时器的可执行代码(框610中)、对被分配给看门狗定时器的RAM(框612)、对定时器设备中的MMIO可访问寄存器(框614)、以及对保持有中断描述符表(IDT)的条目的存储器区域(框616)的访问。框616中的IDT条目可以是主存储器中的可编程数据结构。看门狗定时器610配置IDT条目以标识响应于超时硬件中断而应当由处理器使用的纠正行动。
看门狗定时器通常在硬件中被实现为专门服务。图6中所示的示例可以被用于灵活地控制通用定时器单元以提供看门狗服务的软件实现。可以在各种情况中实现这种实施方式而不用虚拟化或其他特殊处理器模式。在各种情况中,图6中所示的可信任务看门狗服务实施方式可以提供通过MPU的保护与其他软件模块隔离的看门狗服务。可以对所述服务进行配置从而使得其可以修订超时持续时间、启动定时器、停止定时器、以及选择响应于定时中断而应当采取的纠正行动。
由于MPU所提供的保护,这种看门狗定时器的实施方式可以能够提供硬件定时器模块(由框614访问)以期望的间隔进行触发的高保证。这种实施方式还将执行感知MPU保护应用到IDT条目,这可以帮助确保处理器调用对超时中断的合适响应。
图7展示了允许可信任务对其他可信任务做出修改的权限表700的示例。在本实例中,为执行感知MPU提供了一些灵活性以在运行时期间修改访问权限。
在权限表700的示例中,六列表示将权限存储在表中以供六个不同的软件元素进行访问:可信任务A-E以及操作系统。表的第一部分710指定访问保持有六个软件元素的可执行代码的PROM或闪存(例如,PROM 115)中的地址的权限。图7的这个部分表示表示允许哪些主体软件元素访问保持有那些软件元素的代码的对象地址。部分710具有主体软件元素与允许对其中存储有那些软件元素的可执行代码的对象地址的访问之间的很大的但不完全的对角线关系。所述本示例中的六个软件元素(可信任务A-E和OS的列)中的每一个都被允许调用其他软件元素(部分710中的可信任务A-E和OS的行)。与图3的示例相反,图7的示例还示出了部分710已经被修改的条件,从而使得可信任务A可以为另外两个软件元素:可信任务B和C写入或修订代码。
图7中示出了类似类型的权限,用于对由软件元素所使用的存储器位置的访问。部分720指定针对SRAM或DRAM模块(例如,RAM 138)中的地址的访问的权限。这个部分包括六行,这六行保持有用于访问保持有用于六个软件元素的数据和栈信息的存储器位置的权限。在本示例中,部分720具有主体软件元素与允许对由那些软件元素所使用的对象地址的访问之间的很大的但不完全的对角线关系。允许每个软件元素读取和写入分配给那个软件元素的数据和栈位置。并且大多数软件元素——可信任务B-E和操作系统——被拒绝访问分配给其他软件元素的数据或栈位置。然而,与图3的示例相反,图7的示例还示出了部分720已经被修改的条件,从而使得可信任务A可以读和写被分配给其他两个软件元素的数据位置。如从部分720的列1可以看出,可信任务A被允许读和写由可信任务B和C所使用的数据工作空间。
因此,在本示例中,已经调整了部分710和720中的权限,从而使得可信任务A可以在运行时期间对可信任务B的代码、可信任务C的代码、可信任务B所使用的数据、和/或可信任务C所使用的数据作出修改。因此,由可信任务B所使用的数据空间的软件元素访问的主体和对象之间存在2∶1的关系;可信任务A和B共享这个存储器空间。类似地,由可信任务C所使用的数据空间的软件元素访问的主体和对象之间存在2∶1的关系;可信任务A和C共享这个存储器空间。部分720中示出的这个共享可以协助可信任务A和B之间和可信任务A和C之间的安全进程间通信。在其他示例(未示出)中,两个或多个可信任务可以各自具有对它们自己的被分配的存储器区域的独占访问,同时共享对附加的分别的存储器区域的共同访问。
此外,在图7的示例中,可信任务有一些修改其他可信任务的访问权限的能力。图7中的第三部分730示出了所有六个软件元素都被允许读取保持有表700的MPU寄存器。这些软件元素中的大多数(六个中的五个)都被禁止写入MPU寄存器。这个限制有助于防止不正确的操作修订表700中的权限(如按照图2的示例中的情况)。
然而,部分730还包括允许软件元素之一——可信任务A来修改MPU寄存器的某些部分的权限。在本示例中,MPU寄存器被标记为六个分别的区域保护寄存器:RPR 1、RPR 2、RPR 3、RPR 4、RPR 5、和RPR 6。这六个寄存器分别对应于表7的部分710和720中的针对可信任务A-E和OS的权限行。
在图7的示例中,部分730的列1示出可信任务A可以修改调节对可信任务B(RPR 2)和可信任务C(RPR 3)的代码空间和工作存储器空间进行访问的权限。因此,可信任务A具有在运行时期间编辑权限表700的权限,以便修改授予对可信任务B和C的代码和工作存储器空间进行访问的权限。可信任务A可以使用这种编辑权限表700的部分的能力以临时地(或永久地)将部分710和/或720修订为以上所讨论的部分非对角线安排。
部分730还包括展示硬件部件和其他元件的访问权限的两个最后一行。例如,部分730中的权限将定时器的控制分配给操作系统。
在操作期间,处理器和/或执行感知MPU将基于处理器寻求访问的地址来参照部分710、720、和730中的行。权限表700中的每行都包括有待由那行进行保护的对象地址范围(未示出)上的信息。
图7的示例中所示的权限展示了可以被部署在具有定义了存储器区域和访问权限的寄存器(RPR)的执行感知MPU中的逻辑,并且它们本身经由MMIO受到访问控制。可以将这个属性用于部署可以在运行时期间配置或重新配置所有或部分区域保护寄存器的可信任务。由于权限表对其施加的限制,这种可信任务可以被认为是可靠的,而不必在特权CPU模式下执行。此类可信任务也可以与同一平台上的其他隔离的可信任务共存。这种共存受到可信任务有一些隔离的可信计算基础的观察的支持,它们可以使用分别的存储器的部分,并且可以使用由应用权限表700的MPU实施的分别的硬件部件。
图8示出了软件元素之间的管理安排的示例。可以使用能够进行运行时重新配置的MPU来实现这个管理安排。图8中的框图800展示了其中以上关于图7的部分730所讨论的可以用于支持由可信任务A所提供的软件更新服务(SWUPD)的调节规定的示例。所述软件更新服务可以使运行时软件更新能够被应用到其他可信任务(可信任务B和C),而不需要平台重新启动。
在框图800中,已经给予可信任务A(810)对安全ROM存储器区域812中的访问认证密钥或其他密码密钥、对工作存储器空间814、以及定义针对其他存储器空间的权限的区域保护寄存器816的访问。那些其他存储器空间是保持有两个其他软件元素、可信任务B(820)和可信任务C(830)的代码、连同那两个可信任务的工作空间822、832的存储器区域。
在本示例中,将对被用于保护这两个其他可信任务的权限设置(816)的写访问给予可信任务A。在此环境中,可以将可信任务B和C认为是被管理的可信任务。可信任务A可以实现网络协议以从远程方接收经认证和授权的更新。认证和安全通信可以由存储器区域812中的密钥进行支持。然后,可信任务A可以将更新应用到被管理的可信任务B和/或C。
例如,可信任务A可以与被管理的可信任务B和C进行通信以停止执行并保存其工作。这种通信可以例如使用以上关于图7的部分720所描述的存储器共享来发生。然后,可信任务A可以修改可信任务B和C的RPR 816以能够进行对可信任务B和C的代码的修改(例如,通过修改图7的部分710的最左列,从而使得可信任务A可以重写可信任务B和C的代码)。然后,可信任务A可以通过写入可信任务B和C的代码和数据区域进行期望的软件更新。最终,如果需要的话,可信任务A可以在部分710中重新应用对可执行代码以及部分720中的工作空间数据的对角线1∶1保护。
图9示出了用于动态测量信任根(DRTM)服务的示例。可以使用能够进行运行时重新配置的执行感知MPU来实现这个DRTM服务。在本示例中,图7中所呈现的调节规定可以被用于在运行时启动和停止某些服务,这样可以对其正确初始化和所提供的输入进行核实。
图9中的框图800展示了其中图7的部分730中呈现的可以用于支持由可信任务A进行的动态测量信任根(DRTM)检查的调节规定的示例。在框图900中,将对根签名或哈希或用于安全ROM存储器区域912中的信任管理的其他确认信息的访问给予可信任务A(910)。还可以将对工作存储器空间914、以及对定义针对其他存储器空间的权限的区域保护寄存器916的访问给予可信任务A 910。那些其他存储器空间是保持有两个其他软件元素、可信任务B(920)和可信任务C(930)的代码、连同那两个可信任务的工作空间922、932的存储器区域。
在本示例中,DRTM可信任务A(910)被配置用于进行可信任务B和C(920,930)的测量的启动。所述测量的启动确认可信任务B和C符合所期望的描述,如其代码的哈希和/或其配置参数、和/或其他签名和/或其他描述信息。所述确认可以由从安全存储器区域912获得的根信息进行支持。可以在允许可信任务B或C执行前对处理器进行此确认。在此环境中,可以将可信任务B和C认为是测量的可信任务。DRTM可信任务A可以被提供有关于可信任务B和C的元数据或其他描述信息,描述有待被授予那些可信任务的权限以及有待被分配的每个存储器区域的内容。DRTM可信任务A可以进一步实现测量结果设施和策略,描述要测量结果可信任务B和C的所提供的部件中的哪些以及测量结果应当如何进行。示例测量结果策略可以是使用密码哈希算法(或其他校验和类型或签名计算)测量结果所有元数据、代码区域和启动参数,生成如h(B)和/或h(C)的输出。一旦已经测量并确认了被管理的可信任务,并且其所请求的权限已经被分配并初始化,测量的可信任务的可用性可以在本地平台上宣布。例如,进程间通信(IPC)名称服务可以被用于宣布测量的可信任务,或者可以向本地OS内核通知测量的可信任务的存在。DRTM可信任务A还可以被配置用于使用远程证实协议将h(B)和/或h(C)上报给其他本地或远程实体。
各种安全性应用使用被限制为对单个代码和数据区域进行关联的CPU扩展。在各实施例中,执行感知MPU不需要CPU扩展并且不限制每个可信模块的代码和数据区域的数量。例如,DRTM服务可以实现可信任务在运行时的测量结果以及启动,而不需要附加CPU扩展。在系统的各种实施方式中,一些可信任务(例如,可信服务模块)可以在其他可信任务上操作。
一些安全性应用使用依靠IP的存储器访问控制来限制对DRTM证实密钥的访问。在各实施例中,执行感知MPU设计可以被用于同时将正在执行的若干可信任务进行实例化以提供DRTM或其他服务。
在一些安全性应用中,软件域或软件区域可以基于某种水平的硬件支持(如将加密数据传输到显卡缓冲器的能力)与外围设备进行安全通信。在各实施例中,可以基于一般(执行感知)MPU实现用于具有MMIO、安全外围设备访问、DRTM和其他平台服务的低端嵌入式设备执行感知MPU设计,不需要用于特定类型的证实、DRTM或安全I/O算法和协议的显式HW逻辑。各种这样的实施方式可以在芯片表面提供更小的足迹和/或更快的验证时间。
在各种实施方式中,片上系统可以最初支持多个可信任务(执行感知MPU区域)和I/O。然后可以使用可编程的执行感知MPU和/或运行时MPU RPR重新配置以在稍后以可编程可信任务的形式添加和/或更新安全性基础设施,如DRTM、证实协议、安全更新或安全音频/视频和定时器。
图10展示了允许操作系统对权限表做出有限修改的权限表1000的示例。与以上关于图7所描述的安排类似,权限表1000的示例包括六列。每一列表示存储在表中的用于由对应的软件元素进行访问的权限,软件元素包括可信任务A、可信任务B、可信任务C、任务D、任务E、以及操作系统(OS)。
表的第一部分1010指定对存储可执行代码的存储器地址的访问的权限。在本示例中,可执行程序被存储在保持有这六个软件元素的可执行代码的PROM或闪速存储器(例如,PROM 115)中。第二部分1020指定对存储可执行程序所使用的数据的存储器地址的访问的权限。在本示例中,这些数据被存储在SRAM或DRAM模块(例如,RAM 138)中。第三部分1030指定对其他资源的访问的权限。被标记为RPR 1-3的行保持有对分别由可信任务A-C所使用的存储器区域的访问的权限。被标记为RPR 4-5的行保持有对分别由任务D-E所使用的存储器区域的访问的权限。行RPR 6保持有对由OS所使用的存储器区域的访问的权限。
部分1030包括提供给可信任务A在运行时期间编辑权限表1000的部分的权限从而修改与四个其他软件元素相关的权限的设置1032。这些设置1032使可信任务A能够修改权限表中的设置一访问可信任务B-C、任务D、以及OS。例如,可信任务A可以改写针对可信任务A的权限设置1012的部分或全部以访问那四个其他软件元素的可执行存储器空间。类似地,可信任务A可以改写针对可信任务A的权限设置1022的部分或全部以访问用于那四个其他软件元素的工作存储器空间。因此,在本示例中,可信任务A可以修订权限表1000的部分,从而用于可信任务A对那四个其他软件元素进行运行时修改。
例如,可信任务A可以使用其特权(1032)来临时修改其他权限(1012,1022)以修改那四个其他软件元素中的代码,或具有对那些软件元素的工作空间区域的共享访问。因此,图10的示例可以被用在以下情况中:可信任务A需要临时协助软件元素之间的安全进程间通信,并且可以允许由那四个软件元素的可信任务A进行的运行时安装或控制或修改。本权限示例可以被用在各种情况中,从而使得可信任务A可以提供以上关于图4-6和8-9所讨论的共享存储器操作、设备驱动器应用、看门狗定时器应用、软件更新支持、和DRTM支持的实例。
进一步地,图10的示例允许OS反过来修改任务D和E。表1000中的设置1036使OS能够修改权限表中针对访问任务D的设置。部分1030还包括使OS能够修改权限表中针对访问任务E的设置1038。这两个设置允许OS修订四个其他设置:用于OS访问任务D的可执行存储器空间的权限1016;用于OS访问任务E的可执行存储器空间的权限1018;用于OS访问任务D的工作存储器空间的权限1026;以及用于OS访问任务E的工作存储器空间的权限1028。因此,在本示例中,OS可以修订权限表1000的部分,从而用于OS对任务D和/或任务E进行运行时修改。这种配置可以用于以下情况中:系统已被设计为接受多种操作系统,从而使得可以如可信任务A所需来部署合适的操作系统。在各种情况中,不同水平的信任可以归因于OS。在一些情况中,OS可以被识别为与可信任务A-C相一致的可信任务;在其他情况中,OS可以被认为具有较低水平的可信度。此外,在系统的各种实施方式中,对“可信任务”的可信度指定可以被应用于由合适的执行感知存储器保护进行支持软件元素,这些软件元素不依赖于操作系统和/或不受到操作系统的控制。类似地,依赖于或可由操作系统控制的软件元素可以被视为常规“任务”。相应地,在各种情况中,图10的示例中的任务D和E可以被系统认为具有较低水平的信任,因为这些任务可以由OS进行修改。
在图10的示例中,任务D直接受到可信任务A和OS的管理,如部分1030中的行RPR 4所示。相比之息,如部分1030中的行RPR 5所示,任务E直接受到仅OS的管理,这反过来直接受到可信任务A的管理(展示出两种水平的管理)。将理解的是管理的其他组合、以及其他数量水平的管理也可以使用如在本文中所描述的权限表来实现。
图11示出了由执行感知MPU进行保护的操作系统内核的示例。在框图1100中,操作系统1140的代码已经被配置成被管理的可信任务。另一个可信任务A(1110)通过对OS 1140提供软件更新和DRTM支持来管理OS 1140。可信任务A还对任务D提供监控服务,如扫描恶意软件的签名或监控异常行为(1120)。
可信任务A具有对安全ROM存储器区域1112中的认证密钥或其他密码密钥的访问的权限。可信任务A还具有对工作存储器空间1114、以及定义针对其他存储器空间的权限的区域保护寄存器1116的访问的权限。其他存储器空间是保持有任务D(1120)和OS(1140)的代码、连同那些任务的工作空间1124、1144的存储器区域。这些权限支持可信任务A向OS和向任务D提供软件更新和DRTM服务的能力。
在图11的示例中,OS以及可信任务A对任务D进行支持。Os还支持任务E。
可以将寄存器1116(RPR#4)中的权限与过程进行匹配以例如,使用环境切换和/或中断来典型地调用OS。可以将寄存器1146中的权限与过程进行匹配以由OS安装和/或更新软件。与OS 1140相关并由其所使用的权限可以被配置用于在运行时管理MPU的部分(图10-11中的RPRs#5,6)。OS可以用与在嵌入式系统中使用MPU的技术类似的方式来使用这个访问。例如,OS 1140可以被配置用于提高对不期望地操纵OS或任务存储器的软件错误的弹性,(2)向OS用户空间任务提供存储器保护,以及(3)在任务切换期间重新对可用RPR进行编程以比可用RPR容纳更多的OS任务。
为了避免不同可信任务对RPR使用的冲突,对RPR必需的写访问可以在设计时、平台初始化时进行定义,或者可信任务可以使用可信进程间通信来在运行时调解RPR访问。
在系统的各种实施方式中,可以将关键的RPR配置成为只读或以其他方式锁定关于对OS 1140的访问。因此,OS可以仅改变MPU寄存器的具体子集。在各种实施方式中,还可以使用锁定来阻止由其他软件元素进行的访问以及阻止由OS进行的访问。在其他实施方式中,OS可以被认为是具有对某些执行感知MPU区域的访问的可信软件模块。尽管可以将OS配置用于仅改变MPU寄存器的具体子集,如DRTM服务的多个其他实体还是可以与OS并行运行。类似地,两个或多个操作系统可以并行运行,其中每个访问其自身独有的软件元素、外围设备、和MPU区域。
将理解的是可以使用如上所描述的示例来实现多种配置、修改、和替代。例如,可以使用执行感知MPU的实施方式来构建复杂的可信任务,如设备驱动器和平台管理服务。可以由此类模块所提供的软件安全性服务的一些示例包括安全更新、动态测量信任根(DRTM)、存储器共享、以及将存储器区域委派给OS。
在各种实施方式中,图1的MPU 120可以被用于实施对MMIO地址空间的访问控制,允许对具有对外围设备的某些独占访问权利的可信任务的配置。此外,各种执行感知MPU自身就是外围设备,并且其配置可以反过来经受MPU进行的MMIO访问验证。因此,可以对系统或片上系统的各种实施方式进行配置,从而使得可以将可信任务部署有部分的MPU配置能力。各种可信任务可以提供多个水平的间接,允许一个可信软件模块来统治另一个可信软件模块的MPU寄存器访问,这反过来可以使用MPU寄存器来管理附加的可信任务。
通过此类可信任务,多种应用可以是可实现的,包括可能以其他方式需要显式硬件支持的应用。这些软件模块可以被配置用于例如为需要硬件设施来测量和启动此类软件的之前的系统提供DRTM应用(在运行时的隔离的软件元素的安全启动)。类似地,这些软件模块可以被用于启用其中安全设备驱动器与OS相隔离的低成本嵌入式系统。在各种应用中,半导体设备上的成本约束会将虚拟化或其他定制或设备专用保护措施排除在外,这可以用其他方式可从更有能力的平台中的硬件获得。如以上所描述的可信任务的使用可以在此类成本约束的应用中提供有帮助的保护。一些如看门狗定时器的安全平台服务典型地已经在硬件中实现;可信任务可以在执行感知MPU访问控制实施的顶部提供看门狗定时器的纯软件实施方式。
执行感知存储器保护可以允许计算机系统中的代码和数据存储器区域的关联和自动化的基于硬件的访问控制实施。一种实例化如用于嵌入式系统的执行感知MPU。各种任务或程序可以使用执行感知MP来以如下方式保护其代码和数据区域:仅被授权的代码可以访问对应的程序的数据存储器区域。由于许多嵌入式系统使用存储器映射的I/O用于与平台外围设备进行交互,这可以允许访问控制和将外围设备的数据信道作为设备的整体(数据)存储器空间的一部分,执行感知存储器保护方案还可以能够对外围设备的MMIO区域进行访问控制。
图12展示了处理器核1200的一个示例。在各种实施方式中,处理器核1200具有适合于低成本生产的架构。处理器核1200可以是用于各种类型的处理器或处理元件的核,诸如嵌入式处理器、微处理器、数字信号处理器(DSP)、网络处理器、或用于执行代码的其他电路设备。尽管图12展示了仅一个处理器核1200,处理元件可以替代性地包括多于一个处理器核。处理器核1200可以是单线程核,或者可以是多线程的,因为所述处理器核可以每个核包括一个以上硬件线程环境(或“逻辑处理器”)。
图12还展示了耦合至处理器核1200的存储器1270。存储器1270可以是各种各样的类型的存储器电路中的任何一种。存储器1270可以包括有待由处理器核1200执行的一个或多个指令代码1213。处理器核1200被配置用于遵循由代码1213所指示的指令的程序序列。每个指令进入处理器核的前端部分1210并且由核中的一个或多个解码器1220进行处理。解码器可以生成诸如预定格式的固定宽度微操作的微操作作为其输出,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端1210还包括寄存器重命名逻辑1225和调度逻辑1230,这些逻辑一般分配资源和对操作进行排队以执行。
处理器核1200包括被配置用于在处理器核1200内存储数据的一个或多个寄存器1240。寄存器1240可以包括一般寄存器、一个或多个栈指针和其他栈相关寄存器、一个或多个指令指针、和/或一个或多个易失性寄存器。在各种实施方式中,寄存器1240包括被配置用于支持对访问存储器地址和/或设备地址进行执行感知约束的寄存器。
处理器核1200包括具有一组执行单元1255-1、1255-2到1255-N的执行逻辑1250。处理器的某些版本可以包括专用于具体功能或功能组的多个执行单元。其他实施例可以仅包括一个执行单元或一个可执行特定功能的执行单元。执行逻辑1250执行由多个代码指令指定的操作。在完成由所述代码指令指定的操作的执行之后,处理器核中的后端逻辑1260引退代码1213的指令。在一个实施例中,处理器核1200允许指令的无序执行但要求指令的有序引退。后端逻辑1260中的引退逻辑1265可以采取本领域技术人员已知的多种形式(例如,重排序缓冲器等)。以此方式,在代码1213的执行过程中,至少在由解码器生成的输出、由寄存器重命名逻辑1225使用的表、以及任何由执行逻辑1250修改的寄存器方面,处理器核1200进行变换。
尽管图12未展示,但处理元件可以包括其他芯片内元件与处理器核1200。处理元件可以包括I/O控制逻辑、和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。
图13是片上系统1300的一个示例的框图。在各种实施方式中,片上系统(SoC)1300可以被设计为单一集成电路封装。在一些实施方式中,片上系统1300可以制造在单一半导体晶片衬底上。在多个不同示例中,片上系统1300可以使用多种不同SOC设计和制造方法来构造,以有效地创建小的计算系统。在其他单元中,片上系统1300可以包括多个处理单元1315、多个存储器单元1320、多个存储单元1325、多个图形处理单元1327、多个通信单元1350、和多个传感器控制器单元1330。应当指出的是,在其他实施方式中,片上系统1300中的所述不同设备和模块中的一者或多者可以制造在多个分开的半导体晶片衬底上。
此外,片上系统1300可以通过传感器控制器单元1330被耦合到传感器硬件1335上,如相机、麦克风、天线、扬声器、触摸屏、键盘、鼠标、位置传感器、近距离传感器、光传感器、加速度计、磁性传感器、压力传感器、温度传感器、生物特征安全性传感器等。
在一些实施例中,指令/软件代码可以存储在非易失性/易失性存储器的组合中,如存储单元1325和存储器单元1320。这些指令可以被配置用于由处理单元1315处理从而协助片上系统1300的至少某些功能。处理单元1315包括寄存器1340,所述寄存器可以被配置用于存储数据以供对于处理单元的快速可访问性。寄存器1340可以包括适合于保持有存储器访问保护调节规定的一个或多个寄存器。
在一些实施例中,片上系统1300可以被配置成在便携式设备(如移动电话、具有触摸屏的智能电话、平板电脑、膝上型计算机、混合设备、另一种通信设备等)中使用。在一些实施例中,片上系统1300可以被配置成在嵌入式设备(如用于家用电器、工业设备、玩具、医疗设备、汽车处理单元等中的微处理器)中使用。
图14是用于调节对具有执行感知存储器保护的地址的访问的过程1400的一个示例的流程图。过程通过接收访问指令在动作1410中开始。可以例如由处理器(如嵌入式处理器或其他处理器)生成所述访问指令。可以由存储器保护单元(MPU)接收所述指令。在各种实施方式中,由连同生成所述访问指令的处理器一起在半导体衬底上制造的执行感知MPU接收所述指令。在各种实施方式中,对处理器和MPU进行配置,从而使得MPU调节处理器对存储器位置和/或对存储器映射的IO(MMIO)位置的访问。在各种实施方式中,在硬件中对处理器和MPU进行配置,从而使得如果MPU拒绝了对处理器的那个访问,处理器不能够完成访问。所述访问指令可以包括例如处理器请求读、写、或执行一个或多个存储器位置的内容。所述访问指令可以包括或可以与有待被访问的存储器位置的一个或多个地址相关联。在动作1412中,过程1400将这个(这些)地址识别为访问请求的对象。所述访问指令可以包括或可以与可执行软件元素的标识符或指示符相关联,当由处理器执行时,所述可执行软件元素使处理器发出所述访问指令。在动作1414中,过程将这个可执行程序识别为访问请求的主体。
在动作1420中,过程进行查找以确定与主体软件元素和(多个)对象地址相关的权限设置。例如,查找可以基于主体软件元素和(多个)对象地址(查找的输入)来检索权限信息(查找的输出)。在各种实施方式中,输出是如R;RW;RWX;X;RX的指示或是否允许主体软件元素对(多个)对象地址具有只读;读和写;读、写和执行;只执行;或读/写/执行的其他组合的访问的其他指示符(或其二进制等价物)。
作为另一个示例,查找可以基于主体软件元素、(多个)对象地址、以及正被请求的访问的类型(例如,R、W、X)(查找的输入)来检索二进制指示符(例如,查找的允许/禁止输出)。在各种实施方式中,查找参照存储在存储器中的权限信息。存储器可以被配置有某种硬件实现的保护,如寄存器存储器、或MPU内的寄存器存储器。在各种实施方式中,存储器以查找表的形式存储权限信息。在各种实施方式中,存储器将权限信息存储在对应于对象地址范围或主体可执行程序或二者的寄存器中。
在动作1430中,基于查找做出决定。如果动作1420中的查找指示要授予在访问指令中的请求,则过程前进到动作1432,其中指令被执行。否则,如果动作1420中的查找指示拒绝在访问指令中的请求,则过程前进到动作1434,其中指令不被执行。如果访问请求被拒绝,过程1400可以进一步发起故障恢复操作或其他保护过程。
附加的注释和示例。
示例1包括一种用于管理计算设备中的进程的系统。所述系统包括存储器、处理器、和保护电路。所述存储器包括多个数据区域。所述处理器被配置用于执行多个可执行程序。所述保护电路被耦合到所述处理器及所述存储器上,并且被配置用于至少基于权限数据调节所述处理器进行的存储器访问。所述权限数据包括关于所述存储器中的所述数据区域中的一组的信息。所述权限数据还包括关于所述可执行程序中的一组的信息。所述权限数据还包括关于所述一组数据区域和所述一组可执行程序之间的关系的信息。
在所述权限数据中的是各种访问授权和各种访问拒绝。所述访问授权之一是用于由第一可执行程序对第一存储器区域进行访问。所述访问授权之一是用于由第二可执行程序对第二存储器区域进行访问。所述访问授权之一是用于由第一可执行程序对第二存储器区域进行访问。
示例2可以包括如示例1所述的系统,其中,所述保护电路包括执行感知存储器保护单元。
示例3可以包括如示例2所述的系统,其中,所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
示例4可以包括如示例1到3中任一项所述的系统,其中,所述处理器被配置用于执行操作系统,并且其中,所述第一和第二可执行程序被配置成不依赖所述操作系统而被执行。
示例5可以包括如示例1到4中任一项所述的系统,其中,所述权限数据拒绝由除了所述第一可执行程序以外的可执行程序对所述第一存储器区域进行访问。所述权限数据可以包括所述第二可执行程序对第三存储器区域的访问授权。所述权限数据还可以拒绝由除了所述第二可执行程序以外的可执行程序对所述第三存储器区域的访问。
示例6包括一种用于管理计算设备中的进程的系统。所述系统包括存储器、硬件设备、处理器、和保护电路。所述存储器包括多个数据区域。所述硬件设备可以由所述处理器通过存储器映射的I/O通信进行访问。所述处理器被配置用于执行多个可执行程序。所述保护电路被耦合到所述处理器及所述存储器上以及所述硬件设备上。所述保护电路被配置用于调节所述处理器对所述硬件设备访问以及对所述存储器的访问。由所述保护电路进行的调节至少基于权限数据。
所述权限数据包括关于所述存储器中的所述数据区域中的一组的信息。所述权限数据还包括关于所述可执行程序中的一组的信息。所述权限数据还包括关于所述一组数据区域和所述一组可执行程序之间的关系的信息。
所述权限数据进一步包括关于被分配给所述硬件设备的一个或多个存储器映射的地址的信息。所述权限数据还包括关于所述存储器映射的地址与所述一组可执行程序之间的关系的信息。
在所述权限数据中的是各种访问授权和各种访问拒绝。这些访问授权之一是用于对由所述可执行程序中的所述一组中的第一可执行程序独占地对分配给所述硬件设备的存储器映射的地址进行访问。所述访问拒绝之一是用于由除了所述第一可执行程序以外的可执行程序对所述硬件设备进行访问。
示例7可以包括如示例6所述的系统,所述硬件设备包括定时器电路。所述第一可执行程序被配置用于重置所述定时器电路。所述第一可执行程序被配置用于向除了所述第一可执行程序以外的所述可执行程序提供看门狗定时器服务。
示例8可以包括如示例6-7中任一项所述的系统。所述第一可执行程序被配置用于配置响应于所述定时器电路的超时状况而发起中断事件。
示例9可以包括如示例6-8中任一项所述的系统。所述保护电路包括执行感知存储器保护单元。
示例10可以包括如示例9所述的系统。所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
示例11可以包括如示例6-10中任一项所述的系统。所述处理器被配置用于执行操作系统。所述第一可执行程序被配置成不依赖所述操作系统而被执行。
示例12可以包括如示例6-11中任一项所述的系统。所述权限数据包括拒绝由所述可执行程序中的所述一组中除了所述第一可执行程序以外的所有可执行程序对被分配给所述硬件设备的所述存储器映射的地址进行访问。
示例13可以包括如示例6-12中任一项所述的系统。所述权限数据包括所述第一可执行程序对第一存储器区域的访问授权。所述权限数据包括第二可执行程序对第二存储器区域的访问授权。所述权限数据包括所述第一可执行程序对所述第二存储器区域的访问授权。
示例14可以包括如示例6-13中任一项所述的系统。所述权限数据包括所述第一可执行程序对第一存储器区域的访问授权。所述权限数据包括第二可执行程序对第二存储器区域的访问授权。所述权限数据包括所述第一可执行程序对所述第二存储器区域的访问授权。
示例15包括一种用于管理计算设备中的进程的系统。所述系统包括存储器、处理器、和保护电路。所述存储器包括第一组存储器位置。所述处理器被配置用于执行多个可执行程序。
所述保护电路被耦合到所述处理器及所述存储器上,并且包括第二组存储器位置。所述保护电路被配置用于在所述第二组存储器位置中存储权限数据。所述权限数据包括关于所述第一组和第二组存储器位置的信息。所述权限数据包括关于所述可执行程序中的一组的信息。所述权限数据包括关于(a)所述可执行程序中的所述一组与(b)所述第一组和第二组存储器位置之间的关系的信息。所述保护电路被配置用于至少基于所述第二组存储器位置中的所述权限数据调节所述处理器对所述第一组和第二组存储器位置的访问。
示例16可以包括如示例15所述的系统。所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权。所述第一可执行代码包括软件更新服务。所述第一目标区域存储针对访问第二可执行代码的权限。所述第一可执行代码被配置用于修订所述第二可执行代码。
示例17可以包括如示例16所述的系统。所述第一可执行代码被配置用于在修订所述第二可访问代码之前临时修订针对访问所述第二可执行代码的所述权限。
示例18可以包括如示例16-17中任一项所述的系统。所述第一可执行代码被配置用于基于针对所述第二可执行代码的更新来修订所述第二可执行代码。
示例19可以包括如示例18所述的系统。所述第一可执行代码被配置用于对针对所述第二可执行代码的所述更新进行认证。
示例20可以包括如示例19所述的系统。所述第一可执行代码被配置用于计算针对所述第二可执行代码的所述更新的至少一部分的签名。所述第一可执行代码被配置用于至少基于所述签名对针对所述第二可执行代码的所述更新进行认证。
示例21可以包括如示例19所述的系统。所述第一可执行代码被配置用于响应于对所述第二可执行代码的失败认证而禁用针对所述第二可执行代码的所述更新。
示例22可以包括如示例15-21中任一项所述的系统。所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权。所述第一目标区域存储针对访问第二目标区域的权限。所述第二目标区域存储第二可执行代码。所述权限数据包括所述第一可执行代码对所述存储器中的第三目标区域的写访问授权。所述第三目标区域存储针对访问第四目标区域的权限,并且其中,所述第四目标区域对执行所述第二可执行代码所使用的数据进行存储。所述第一可执行代码被配置用于计算所述第二可执行代码的测量结果。
示例23可以包括如示例22所述的系统。所述测量结果至少基于所述第二可执行代码的属性的密码校验和。
示例24可以包括如示例23所述的系统。所述属性可以包括所述第二可执行代码的配置参数。所述属性可以包括所述第二可执行代码的启动参数。所述属性可以包括所述第二可执行代码自身的至少一部分。
示例25可以包括如示例22-24中任一项所述的系统。所述第一可执行代码被配置用于将所述第二可执行代码的所述测量结果存储在安全位置中以供在所述第二可执行代码的验证中的后续使用。
示例26可以包括如示例15-25中任一项所述的系统。所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权。所述第一可执行代码被配置用于将操作系统安装到所述第一目标区域中。所述权限数据包括由所述操作系统对所述存储器中的第二存储器区域的写访问授权。所述操作系统被配置用于将OS管理的可执行代码安装到所述第二存储器区域中。
示例27可以包括如示例15-26中任一项所述的系统。所述保护电路包括执行感知存储器保护单元。
示例28可以包括如示例27所述的系统。所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
示例29可以包括如示例15-28中任一项所述的系统。所述处理器被配置用于执行操作系统。所述可执行程序中的所述一组中的至少一个可执行程序被配置成不依赖所述操作系统而被执行。
示例30可以包括如示例15-29中任一项所述的系统。所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权。所述第一目标区域存储针对访问第二可执行代码的权限。所述第一可执行代码被配置用于修订所述第二可执行代码。所述权限数据拒绝由除了所述第一可执行代码以外的可执行代码对所述第一目标区域的访问。
示例31可以包括如示例15-30中任一项所述的系统。所述权限数据包括由所述多个可执行程序中的第一可执行程序对第一存储器区域的访问授权。所述权限数据包括由所述多个可执行程序中的第二可执行程序对第二存储器区域的访问授权。所述权限数据包括所述第一可执行程序对所述第二存储器区域的访问授权。
示例32是一种用于管理计算设备中的进程的方法。所述方法包括:从处理器接收访问请求。所述方法包括:针对每个访问请求,确定使所述处理器发出所述访问请求的主体可执行程序,以及所述访问指向的对象地址。所述方法包括:至少基于权限数据调节所述访问请求。所述权限数据包括第一主体可执行程序对第一存储器区域的访问授权。所述权限数据包括第二主体可执行程序对第二存储器区域的访问授权。所述权限数据包括所述第一主体可执行程序对所述第二存储器区域的访问授权。
示例33可以包括如示例32所述的方法。对所述主体可执行程序的确定基于从所述处理器提取当前正在执行的代码信息。
示例34可以包括如示例32-33中任一项所述的方法。对所述主体可执行程序的确定由执行感知存储器保护单元进行。
示例35可以包括如示例34所述的方法。所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
示例36可以包括如示例32-35中任一项所述的方法。所述处理器被配置用于执行操作系统。多个主体可执行程序被配置成不依赖所述操作系统而被执行。
示例37可以包括如示例32-36中任一项所述的方法。所述权限数据拒绝由除了所述第一主体可执行程序以外的可执行程序对所述第一存储器区域进行访问。所述权限数据包括所述第二主体可执行程序对第三存储器区域的访问授权。所述权限数据拒绝由除了所述第二主体可执行程序以外的可执行程序对所述第三存储器区域的访问。
示例38可以包括如示例32-37中任一项所述的方法。所述权限数据授权所述第一主体可执行程序对定时器电路的存储器映射的IO地址的访问。所述定时器电路与所述处理器一起制造在半导体衬底上。所述权限数据拒绝除了所述第一主体可执行程序以外的可执行程序对所述定时器电路的存储器映射的IO地址的访问。所述第一主体可执行程序被配置用于重置所述定时器电路。所述第一主体可执行程序被配置用于向除了所述第一主体可执行程序以外的所述可执行程序提供看门狗定时器服务。
示例39可以包括如示例38所述的方法。所述第一主体可执行程序被配置用于配置响应于所述定时器电路的超时状况而发起中断事件。
示例40包括至少一种非瞬态机器可访问存储介质。指令存储在所述介质上。对所述指令进行配置,从而使得当在机器上被执行时,所述指令使机器接收来自处理器的访问请求。对所述指令进行配置,从而使得当在机器上被执行时,所述指令使所述机器针对每个访问请求,确定(a)使所述所述处理器发出所述访问请求的主体可执行程序,以及(b)所述访问所指向的对象地址。对所述指令进行配置,从而使得当在机器上被执行时,所述指令使所述机器至少基于权限数据调节所述访问请求。所述权限数据包括第一主体可执行程序对第一存储器区域的访问授权。所述权限数据包括第二主体可执行程序对第二存储器区域的访问授权。所述权限数据包括所述第一主体可执行程序对所述第二存储器区域的访问授权。
示例41可以包括如示例40所述的存储介质。对所述访问请求的调节由执行感知存储器保护单元进行。
示例42可以包括如示例41所述的存储介质。所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
示例43可以包括如示例40-42中任一项所述的存储介质。所述处理器被配置用于执行操作系统。所述第一和第二主体可执行程序被配置成不依赖所述操作系统而被执行。
示例44可以包括如示例40-43中任一项所述的存储介质。所述权限数据拒绝由除了所述第一主体可执行程序以外的可执行程序对所述第一存储器区域进行访问。所述权限数据包括所述第二主体可执行程序对第三存储器区域的访问授权。所述权限数据拒绝由除了所述第二主体可执行程序以外的可执行程序对所述第三存储器区域的访问。
前述描述呈现了各种系统和方法的一个或多个实施例。应当指出的是,这些和任何其他实施例是示例性的,并且旨在说明本发明而不是限制。尽管本发明广泛地适用于各种类型的科技和技术,但是本领域技术人员将认识到,本披露内容中不可能包括本发明的所有可能实施例和上下文。
进一步地,本领域技术人员将认识到以上所描述的动作、步骤、和其他操作的功能之间的界限仅是说明性的。若干操作的功能可以被组合成单个操作,和/或单个操作的功能可以被分散在附加操作中。此外,替代实施例可以包括特定操作的多个实例或可以消除一个或多个操作,并且在各种其他实施例中,可以更改操作的顺序。本领域技术人员应当理解,结合本文所披露的实施例来描述的说明性逻辑块、模块、电路和步骤中的一些可以实现为硬件、固件、软件或其组合。为了说明硬件、固件和软件的这种可互换性,以上已经总体上就其功能性而言描述了某些说明性部件、块、模块、电路、以及步骤。这种功能能否被实施为硬件或软件取决于强加于整体系统的具体应用程序和设计约束。本领域技术人员可以针对每一具体应用程序通过各种方式来实施所描述的功能,但是这种实施决定不应当被解释为使偏离本发明的精神或范围。
以上已进行描述的一些实施例可以提供某些益处和优点。这些益处或优点、以及可以它们出现或变得更加显著的任何元素或限制不应被解释为任何或所有权利要求的关键、必需或必要的特征。如本文所使用的,术语“包括”、“包含”或其任何其他变型旨在被解释为非排他地包含遵循所述术语的元素或限制。虽然前述说明参照了特定实施例,但应当理解的是,这些实施例是说明性的,并且本发明的范围不限于这些实施例。上述实施例的许多变型、修改、添加和改进是可能的。
硬件元件的示例可以包括:处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件的示例可以包括软件部件、应用程序、操作系统软件、固件、子例程、应用程序接口(API)等、或其任意组合。
一些系统或支持系统可以例如使用机器或有形计算机可读介质或制品来实现,所述机器或有形计算机可读介质或制品可以存储一个指令或一组指令并且如果指令由机器执行则可以使机器根据所述实施例执行方法和/或操作。在一些实施方式中,这些程序的一个或多个实例可以被执行在一个或多个分别的计算机系统或分别的处理器单元上,例如,在分布式系统、多处理器架构、多核架构中。因此,尽管已经将某些步骤描述为由某些设备、软件程序、进程、或实体执行,但是这不是必须如此并且多种替代性实施方式可以被本领域普通技术人员所理解。可以将指令存储在计算机可读介质上,如磁性介质(例如,硬盘、软盘、磁带)、半导体介质(例如,闪速存储器、RAM)、光介质(例如,CD、DVD)等,或其组合。系统的一个或多个方面可以包括存储在机器可读介质上的代表性指令,这些指令代表处理器内的各种逻辑,当被机器读取时所述指令使所述机器制作用于执行在此所描述的技术的逻辑。这些指令还可以被携带在传递对这些指令进行编码的信号的通信介质中。
本文所描述的各种动作涉及由电子计算设备执行的操作,这些操作操纵和/或将表示为计算系统的寄存器和/或存储器内的物理量(例如,电子)的数据变换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储、传输、或显示设备内的物理量的其他数据。

Claims (27)

1.一种用于管理计算设备中的进程的系统,所述系统包括:
存储器,所述存储器包括第一组存储器位置;
处理器,所述处理器被配置用于执行多个可执行程序;以及
保护电路,所述保护电路被耦合到所述处理器及所述存储器,其中:
所述保护电路包括第二组存储器位置;
所述保护电路被配置用于在所述第二组存储器位置中存储权限数据;
所述权限数据包括关于所述第一组和第二组存储器位置、关于所述可执行程序中的一组、以及关于以下二者之间的关系的信息:
所述可执行程序中的所述一组;与
所述第一组和第二组存储器位置;并且
所述保护电路被配置用于至少基于所述第二组存储器位置中的所述权限数据来调节所述处理器对所述第一组和第二组存储器位置的访问。
2.如权利要求1所述的系统,其中:
所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权;
所述第一可执行代码包括软件更新服务;
所述第一目标区域存储针对访问第二可执行代码的权限;以及
所述第一可执行代码被配置用于修订所述第二可执行代码。
3.如权利要求2所述的系统,其中,所述第一可执行代码被配置用于:
在修订所述第二可访问代码之前,临时修订针对访问所述第二可执行代码的所述权限。
4.如权利要求2所述的系统,其中,所述第一可执行代码被配置用于基于针对所述第二可执行代码的更新来修订所述第二可执行代码。
5.如权利要求4所述的系统,其中:
所述第一可执行代码被配置用于对针对所述第二可执行代码的所述更新进行认证。
6.如权利要求5所述的系统,其中:
所述第一可执行代码被配置用于计算针对所述第二可执行代码的所述更新的至少一部分的签名;以及
所述第一可执行代码被配置用于至少基于所述签名对针对所述第二可执行代码的所述更新进行认证。
7.如权利要求5所述的系统,其中:
所述第一可执行代码被配置用于响应于对所述第二可执行代码的失败认证而禁用针对所述第二可执行代码的所述更新。
8.如权利要求1所述的系统,其中:
所述权限数据包括第一可执行代码对以下各项的写访问授权:
所述存储器中的第一目标区域,其中,所述第一目标区域存储针对访问第二目标区域的权限,并且其中,所述第二目标区域存储第二可执行代码;
所述存储器中的第三目标区域,其中,所述第三目标区域存储针对访问第四目标区域的权限,并且其中,所述第四目标区域存储所述第二可执行代码的执行所使用的数据;
所述第一可执行代码被配置用于计算对所述第二可执行代码的测量。
9.如权利要求8所述的系统,其中:
所述测量至少基于所述第二可执行代码的属性的密码校验和。
10.如权利要求9所述的计算机系统,其中,所述属性包括以下各项中的一项或多项:
所述第二可执行代码的配置参数;
所述第二可执行代码的启动参数;或者
所述第二可执行代码的至少一部分。
11.如权利要求8所述的系统,其中:
所述第一可执行代码被配置用于将对所述第二可执行代码的所述测量存储在安全位置中以供在所述第二可执行代码的验证中的后续使用。
12.如权利要求1所述的系统,其中:
所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权;
所述第一可执行代码被配置用于将操作系统安装到所述第一目标区域中;
所述权限数据包括由所述操作系统对所述存储器中的第二存储器区域的写访问授权;以及
所述操作系统被配置用于将OS管理的可执行代码安装到所述第二存储器区域中。
13.如权利要求1所述的系统,其中,所述保护电路包括执行感知存储器保护单元。
14.如权利要求13所述的系统,其中,所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
15.如权利要求1所述的系统,其中:
所述处理器被配置用于执行操作系统;以及
所述可执行程序中的所述一组中的至少一个可执行程序被配置成不依赖所述操作系统而被执行。
16.如权利要求1所述的系统,其中:
所述权限数据包括第一可执行代码对所述存储器中的第一目标区域的写访问授权;
所述第一目标区域存储针对访问第二可执行代码的权限;
所述第一可执行代码被配置用于修订所述第二可执行代码;
所述权限数据拒绝由除所述第一可执行代码以外的可执行件对所述第一目标区域的访问。
17.如权利要求1所述的系统,其中:
所述权限数据包括所述多个可执行程序中的第一可执行程序对第一存储器区域的访问授权;
所述权限数据包括所述多个可执行程序中的第二可执行程序对第二存储器区域的访问授权;并且
所述权限数据包括所述第一可执行程序对所述第二存储器区域的访问授权。
18.一种管理计算设备中的进程的方法,所述方法包括:
从处理器接收访问请求;
针对每个访问请求,确定:
使所述处理器发出所述访问请求的主体可执行件,以及
所述访问所指向的对象地址;以及
至少基于权限数据调节所述访问请求,其中:
所述权限数据包括第一主体可执行程序对第一存储器区域的访问授权;
所述权限数据包括第二主体可执行程序对第二存储器区域的访问授权;并且
所述权限数据包括所述第一主体可执行程序对所述第二存储器区域的访问授权。
19.如权利要求18所述的方法,其中,对所述主体可执行件的确定是基于从所述处理器提取当前正在执行的代码信息。
20.如权利要求18所述的方法,其中,对所述主体可执行件的确定是由执行感知存储器保护单元来执行的。
21.如权利要求20所述的方法,其中,所述权限数据被存储在所述执行感知存储器保护单元中的寄存器中。
22.如权利要求18所述的方法,其中:
所述处理器被配置用于执行操作系统;以及
多个主体可执行件被配置成不依赖所述操作系统而被执行。
23.如权利要求18所述的方法,其中:
所述权限数据拒绝由除所述第一主体可执行程序以外的可执行程序对所述第一存储器区域的访问;
所述权限数据包括所述第二主体可执行程序对第三存储器区域的访问授权,以及
所述权限数据拒绝由除所述第二主体可执行程序以外的可执行件对所述第三存储器区域的访问。
24.如权利要求18所述的方法,其中:
所述权限数据授权所述第一主体可执行程序对定时器电路的存储器映射IO地址的访问;
所述定时器电路与所述处理器一起制造在半导体衬底上;
所述权限数据拒绝除所述第一主体可执行程序以外的可执行程序对所述定时器电路的存储器映射IO地址的访问;
所述第一主体可执行程序被配置用于重置所述定时器电路;以及
所述第一主体可执行程序被配置用于向除所述第一主体可执行程序以外的所述可执行程序提供看门狗定时器服务。
25.如权利要求24所述的方法,其中:
所述第一主体可执行程序被配置用于配置响应于所述定时器电路的超时状况而发起中断事件。
26.一种或多种其上存储有指令的计算机可读介质,所述指令当由计算机处理器执行时使所述处理器执行如权利要求18至25中任一项所述的方法。
27.一种用于管理计算设备中的进程的设备,包括用于执行如权利要求18至25中任一项所述的方法的装置。
CN201680011706.5A 2015-03-23 2016-02-23 处理器中的动态配置和外围设备访问 Active CN107408068B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/666,087 US9710404B2 (en) 2015-03-23 2015-03-23 Dynamic configuration and peripheral access in a processor
US14/666,087 2015-03-23
PCT/US2016/019185 WO2016153683A1 (en) 2015-03-23 2016-02-23 Dynamic configuration and peripheral access in a processor

Publications (2)

Publication Number Publication Date
CN107408068A CN107408068A (zh) 2017-11-28
CN107408068B true CN107408068B (zh) 2021-05-11

Family

ID=56974187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680011706.5A Active CN107408068B (zh) 2015-03-23 2016-02-23 处理器中的动态配置和外围设备访问

Country Status (4)

Country Link
US (2) US9710404B2 (zh)
EP (2) EP3839751A1 (zh)
CN (1) CN107408068B (zh)
WO (1) WO2016153683A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710404B2 (en) 2015-03-23 2017-07-18 Intel Corporation Dynamic configuration and peripheral access in a processor
WO2017019061A1 (en) * 2015-07-29 2017-02-02 Hewlett Packard Enterprise Development Lp Firewall to determine access to a portion of memory
CN108351829B (zh) * 2015-09-25 2022-06-28 英特尔公司 用于输入/输出计算资源控制的系统和方法
JP2017204170A (ja) * 2016-05-12 2017-11-16 キヤノン株式会社 画像処理装置及び画像処理方法
US11416421B2 (en) 2016-07-19 2022-08-16 Cypress Semiconductor Corporation Context-based protection system
US10146952B2 (en) * 2016-08-02 2018-12-04 Dell Products L.P. Systems and methods for dynamic root of trust measurement in management controller domain
US10824572B2 (en) 2016-09-09 2020-11-03 Cylance Inc. Memory space protection
US10341321B2 (en) 2016-10-17 2019-07-02 Mocana Corporation System and method for policy based adaptive application capability management and device attestation
DE102016222695A1 (de) * 2016-11-17 2018-05-17 Continental Teves Ag & Co. Ohg Verfahren zur automatischen und dynamischen Re-Konfiguration einer Speicherschutz-Einheit sowie ein Mikrocontroller mit einer Speicherschutz-Einheit
US10671547B2 (en) * 2016-12-19 2020-06-02 Intel Corporation Lightweight trusted tasks
US10496573B2 (en) 2017-03-31 2019-12-03 Intel Corporation Context-sensitive interrupts
US10884953B2 (en) * 2017-08-31 2021-01-05 Hewlett Packard Enterprise Development Lp Capability enforcement processors
US10809924B2 (en) * 2018-04-12 2020-10-20 Webroot Inc. Executable memory protection
US10942798B2 (en) * 2018-05-31 2021-03-09 Microsoft Technology Licensing, Llc Watchdog timer hierarchy
CN109033816B (zh) * 2018-06-15 2020-08-21 中国人民解放军国防科技大学 麒麟操作系统平台上的国产办公外设驱动管理方法及系统
US11151262B2 (en) * 2018-06-24 2021-10-19 Hex Five Security, Inc. Configuring, enforcing, and monitoring separation of trusted execution environments
GB201810533D0 (en) * 2018-06-27 2018-08-15 Nordic Semiconductor Asa Hardware protection of files in an intergrated-circuit device
US11595217B2 (en) 2018-12-06 2023-02-28 Digicert, Inc. System and method for zero touch provisioning of IoT devices
US11080085B2 (en) 2018-12-17 2021-08-03 International Business Machines Corporation Watchdog timer for a multi-stage computing environment
US11308203B2 (en) * 2019-01-11 2022-04-19 Microsoft Technology Licensing, Llc Side-channel protection
CN112749397A (zh) * 2019-10-29 2021-05-04 阿里巴巴集团控股有限公司 一种系统和方法
US11516028B2 (en) 2019-12-24 2022-11-29 CERA Licensing Limited Temperature sensing physical unclonable function (PUF) authentication system
GB201919297D0 (en) 2019-12-24 2020-02-05 Aronson Bill Temperature sensing physical unclonable function (puf) authenication system
US11334501B2 (en) * 2020-01-28 2022-05-17 Hewlett Packard Enterprise Development Lp Access permissions for memory regions
CN113868636A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 内核和任务隔离的方法和装置
TWI811633B (zh) * 2021-02-09 2023-08-11 新唐科技股份有限公司 電子裝置與其操作方法
FR3129502A1 (fr) * 2021-11-25 2023-05-26 STMicroelectronics (Alps) SAS Gestion d’un pare-feu de mémoire dans un système sur puce
US20220092196A1 (en) * 2021-12-08 2022-03-24 Intel Corporation Mechanism for secure library sharing
US20230418929A1 (en) * 2022-06-28 2023-12-28 Apple Inc. PC-Based Instruction Group Permissions
DE102022209628A1 (de) * 2022-09-14 2024-03-14 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Überprüfen von Daten in einer Recheneinheit
CN116451235B (zh) * 2023-03-27 2024-04-09 亿咖通(湖北)技术有限公司 内存保护方法、设备、存储介质及程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201655334U (zh) * 2009-05-25 2010-11-24 杭州士兰微电子股份有限公司 非易失性存储器保护系统
CN103383667A (zh) * 2012-05-01 2013-11-06 瑞萨电子株式会社 存储器保护电路、处理单元和存储器保护方法
US8949551B2 (en) * 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
JP2002132583A (ja) * 2000-10-20 2002-05-10 Sony Corp データ処理装置、データ記憶装置、およびデータ処理方法、並びにプログラム提供媒体
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
JP2004038569A (ja) 2002-07-03 2004-02-05 Toshiba Lsi System Support Kk 不揮発性メモリのデータ保護システム
US20050144408A1 (en) * 2003-12-24 2005-06-30 Kenji Ejima Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded
US7543126B2 (en) 2005-08-31 2009-06-02 International Business Machines Corporation Apparatus, system, and method for implementing protected virtual memory subcontexts
US8051263B2 (en) * 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
US8225105B2 (en) * 2007-08-13 2012-07-17 International Business Machines Corporation Method and apparatus for verifying integrity of computer system vital data components
JP5638760B2 (ja) * 2008-08-19 2014-12-10 ルネサスエレクトロニクス株式会社 半導体装置
NO335189B1 (no) * 2010-10-26 2014-10-20 Cupp Computing As Sikkert databehandlingssystem
US8639991B2 (en) * 2010-12-17 2014-01-28 Sap Ag Optimizing performance of an application
US9395993B2 (en) 2013-07-29 2016-07-19 Intel Corporation Execution-aware memory protection
US9710404B2 (en) 2015-03-23 2017-07-18 Intel Corporation Dynamic configuration and peripheral access in a processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201655334U (zh) * 2009-05-25 2010-11-24 杭州士兰微电子股份有限公司 非易失性存储器保护系统
US8949551B2 (en) * 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
CN103383667A (zh) * 2012-05-01 2013-11-06 瑞萨电子株式会社 存储器保护电路、处理单元和存储器保护方法

Also Published As

Publication number Publication date
EP3274846A4 (en) 2018-09-05
WO2016153683A1 (en) 2016-09-29
US9710404B2 (en) 2017-07-18
CN107408068A (zh) 2017-11-28
US20160283402A1 (en) 2016-09-29
EP3274846B1 (en) 2021-03-24
US10565132B2 (en) 2020-02-18
EP3839751A1 (en) 2021-06-23
EP3274846A1 (en) 2018-01-31
US20180157603A1 (en) 2018-06-07

Similar Documents

Publication Publication Date Title
CN107408068B (zh) 处理器中的动态配置和外围设备访问
US7444668B2 (en) Method and apparatus for determining access permission
US9389793B2 (en) Trusted execution and access protection for embedded memory
US11843705B2 (en) Dynamic certificate management as part of a distributed authentication system
JP6063941B2 (ja) システム管理要求のための仮想高特権モード
CN113254949B (zh) 控制设备、用于控制访问的系统及由控制器执行的方法
US20150381658A1 (en) Premises-aware security and policy orchestration
US11102002B2 (en) Trust domain isolation management in secured execution environments
JP5885851B2 (ja) 特権ドメインでの基本入出力システム(bios)機能の提供
US11354417B2 (en) Enhanced secure boot
US20210397700A1 (en) Method and apparatus for isolating sensitive untrusted program code on mobile device
JP2008524740A (ja) 装置のセキュリティを改良した集積回路
JP2005520231A (ja) 周辺素子へのアクセス保護を含むデータプロセッシングシステムとその方法
WO2018104711A1 (en) Memory protection logic
US20230129610A1 (en) Multiple physical request interfaces for security processors
US11188321B2 (en) Processing device and software execution control method
EP3462361B1 (en) Method for securing runtime execution flow
CN112749397A (zh) 一种系统和方法
JP7001670B2 (ja) コンテキストベースの保護システム
US11188640B1 (en) Platform firmware isolation
JP4335940B2 (ja) データ処理装置及びデータ処理装置における周辺装置保護方法
Arthur et al. Platform security technologies that use TPM 2.0
Tan et al. A system-level security approach for heterogeneous MPSoCs
WO2024123767A1 (en) On-demand and secure hardware license-based sku creation for asics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant