在可信执行环境容器中的动态固件模块加载器的制作方法

文档序号:13426428阅读:401来源:国知局
在可信执行环境容器中的动态固件模块加载器的制作方法



背景技术:

存在用于安全引导的各种机制。统一可扩展固件接口(uefi)规范定义了用于操作系统与平台固件之间的接口的模型。此接口使用包含平台相关信息的数据表,加上在操作系统加载器中可用的引导和运行时间服务调用。这些一起提供了用于引导操作系统运行预引导应用程序的标准环境。可以在互联网中在urlwww*uefi*org/home处找到更多关于uefi的信息,其中,句号被替换为星号以防止无意的超链接。可以使用uefi标准来辅助平台的安全引导。

当前,不同的原始设备制造商以及基本输入/输出系统(bios)供应商实现了uefi固件的不同变化。许多这些实现方式依赖于系统管理模式(smm)特征。

基于片上系统的系统使用访问受控资源和数据,所述资源和数据主要经由smm在带内代理(如uefi)的控制下而被管理。示例包括作为平台的访问受控数据要素并且需要被安全地管理的平台uefi变量、运动能量图像(mei)数量、介质访问控制(mac)地址以及各种设备校准数据。

附图说明

关于以下附图来描述一些实施例:

图1是针对一个实施例的系统架构;

图2是针对一个实施例跨系统级组件的操作流程;

图3是针对一个实施例的流程图;并且

图4是针对一个实施例的系统框图。

具体实施方式

一种动态固件模块加载器根据需要加载多个固件上下文或模块之一。可以在固件上下文中加载和卸载所述模块(被称为小应用程序)。动态应用程序加载器(dal)(可从英特尔公司获得)是动态固件模块加载器的一个示例。模块加载器可以使用硬件进程间通信(ipc)信道(如主机嵌入式控制器接口(heci))或软件进程间通信信道来与安全引擎(如管理引擎)进行通信。所述模块可以被设计用于实现基本输入/输出系统供应商或原始设备制造商所期望的特定特征而不在主机主处理器中使用系统管理模式。

定制uefi固件的供应商特定补丁工作暴露了安全漏洞。这可能会导致uefi供应商的设备召回并且将用户暴露给漏洞。此外,片上系统应用程序中的smm能力由于对附加栅极和/或逻辑与使能和/或验证工作的需要而增加了成本。smm还绕过了操作系统的安全性。此外,对uefi固件的不同供应商特定实现方式要求针对多种不同类型的固件存储设备的固件支持。这跨具有各种uefi固件定制的供应商的阵列产生了可维护性负担。

容器化指的是以下能力:将固件模块彼此隔离或分区,从而使得如果一个模块出现问题,其他模块并不会被影响。

根据一些实施例,uefi能力可以作为在可信执行环境内部容器化的隔离动态应用加载器小型应用程序来运行。在一些特定的实施例中,uefi能力可以包括变量管理和安全引导逻辑。如在此所使用的,可信执行环境或tee是在处理器中实现用于确保可以采用确保数据的机密性和完整性的方式来对敏感数据进行存储和加工的安全区域。管理引擎是tee的一个示例。

为了实现这种机制,每个供应商的uefi代码被迁移到在平台芯片组中的容器化tee环境以便减少来自恶意用户的攻击面。供应商特定易受攻击的代码被容器化并且隔离以便减少包括整个系统或用户敏感数据的风险。

在tee与处理器核之间的可扩展硬件进程间通信(ipc)信道接口可能不需要和/或依赖使用smm硬件。tee应用程序接口(api)可以为在此容器化环境内部运行的供应商特定模块提供通用的、一致性接口。

tee对平台引导介质上的uefi存储设备进行抽象化。这允许使用多种不同类型存储设备而不需要uefi固件具有多个存储设备驱动器。

在图1中,给出了uefi变量实现方式作为示例。uefi变量大量用于操作系统(诸如windows、android以及其他linux操作系统)中以用于存储在uefi固件与操作系统服务之间进行安全引导和恢复所需的共享敏感数据(如平台特定数据)。但是其他应用程序也可以使用同样的机制。

tee具有由其内部处理器21访问的其自身专用的、隔离的存储器20。这是因为tee处理器和其他外部处理器可能不能共享同一存储器。tee具有其自身隐式的并且只由tee自身的处理器进行操作的存储器。内部tee存储器不可由tee外部的实体访问。

tee10在平台引导介质或非易失性存储器(nvm)18上指定uefi固件所请求的非易失性存储器空间。tee是专用的、隔离的执行环境。tee固件利用用于主机操作系统(os)12的安全接口14来实现uefi变量封装器,并且在tee内部具有efi变量安全存储设备20、存储设备驱动器28和文件系统30。此存储设备标识自由空间,将变量映射到非易失性存储器18空间,使能容错写入服务,使能efi规范强制的验证/认证以及向保留的非易失性存储器区域20进行读取/写入,例如,用于如efi应用程序22所需的efi变量。

tee支持安全非易失存储文件系统30和非易失存储器数据服务。其在操作系统运行前直接接触存储设备硬件18,或在操作系统运行时依赖于操作系统12实体(例如,存储设备驱动器54和安全信道驱动器52)以用于代理存储器访问。tee可以支持efi规范以便找到遵循所写入的非易失性存储器数据的rsa20448/sha256/pkcs1.5签名验证的安全变量服务。所述平台具有与tee的进程间通信信道接口14,以用于使用ipc驱动器24将参数信息传送至tee。efi固件16仅仅是变量穿透(passthrough)。tee将内容从平台可见存储器18复制到在tee内的安全/隔离存储器20,并且在执行非易失性存储器事务前对数据执行认证/验证。

图2示出了跨以上所述的uefi变量存储设备示例的系统组件的操作序列。动态固件模块加载器33加载小应用程序或模块28、29、38、42、44和46。如在35处所指示的,uefi引导加载器34调用uefisetvariable/getvariable(设置变量/获得变量)。uefi应用程序36然后向tee10以发出进程间通信信道14以用于卸载uefi变量服务。然后,tee存储设备驱动器28处理下行进程间通信信道14。

teeefi变量处理程序38复制从平台可访问存储器18传送到tee的隔离安全存储器20的所有参数。参数验证器42交叉验证所有efi变量参数,并且确保efi变量可供当前执行上下文访问。

如果变量是“安全检查”类型的,则加密块44调用efi规范强制的安全检查。然后,tee调用其非易失存储文件系统块30以读取/写入efi变量blob。oem或bios供应商可以写入其期望的任何模块或小应用程序,以便提供包括使能使用不同存储技术在内的特定特征。模块可以在一种情况下使用回放保护存储器块(replyprotectionmemoryblock,rpmb)并且在另一种情况下使用串行并行接口nor存储器(serialparallelinterfacenormemory,spinor),通过针对在具体情形下的不同功能调用不同模块来实现。还可以使用其他存储设备类型。可以写入任何模块以支持所选存储设备类型中的期望功能,并且此模块在需要时实现此功能,并且像用于此存储设备的文件管理器一样运行。

接下来,非易失性存储文件系统管理器30推动(kick)容错非易失性存储管理器50以确保采用贯穿电源故障确保一致性的方式来持久保存数据。例如,模块可以确保其读出正确的当前值。默认值可以作为回退机制被存储在已知位置。然后,所更新的值可以被用于更新新的设置。如果更新失败,则可以使用回退机制。模块可以交替使用两个分区来写入所述数据,从而使得如果在一个分区中检测到损坏则可以读取备份分区。

os加载器加载os运行时间31并且调用exitbootservice(退出引导服务),这将控制从固件转移至操作系统。如果efi执行上下文仍在exitbootservice之前或spinor或多头存储设备可用,那么tee存储设备驱动器28直接更新非易失性存储器18。然而,如果efi执行上下文仍在exitbootservice之后,efi的存储设备是单头的并且uefi变量存储设备不是spinor,那么tee将上行进程间通信信道层46触发至安全tee驱动器52。驱动器52同tee一起工作以用于捕捉已签名数据blob,并且调用操作系统存储设备驱动器54服务以用于访问存储介质18。

然后,驱动器52经由下行进程间信道层29将访问结果提供回tee。最后,tee根据结果可用性更新efi应用程序36,并且efi返回。

图3示出的序列58可以用软件、固件和/或硬件实现。在软件和固件实施例中,所述序列可以通过存储在一个或多个非瞬态计算机可读介质(例如磁性、光学或半导体存储设备)中的计算机执行的指令来实现。

所述序列(如示例实施例)使得能够进行从引导加载器到uefi的变量访问。序列利用setvariable/getvariable开始于框60。然后,在框62处,如所指示的,利用所有参数调用进程间通信信道,并且然后流程等待响应。在框64中,efi变量处理程序38(图2)将命令和/或数据复制到efi的安全存储器20(图2)。

在框66中,执行数据验证。在框68中,依照efi规范执行签名验证。之后,在菱形70处的检查判定固件引导存储设备是否处于spinor模式。若是,则在框72处执行对spinor的容错写入和读取。若否,则在菱形74处的检查判定efi变量存储设备是否在回放保护存储器块(rpmb)上。若是,则利用rpmb密钥对数据blob进行签名(框76)。若否,则跳过此步骤。

然后,在菱形78中,检查判定exitbootservice状态是否为一。若否(即,固件非os在控制中),如框80所指示的,执行被适配用于所选存储器技术的容错写入和读出。若是,则继续在框82中发出上行ipc。然后,如在框84中所指示的,安全tee驱动器28(图2)处理进程间中断(iupcint),并且其从tee中读取已签名数据。在框86中,安全tee驱动器经由os存储设备驱动器执行存储设备读取/写入访问。接下来,在框88中,安全驱动器经由进程间通信信道将结果提供返回到tee。然后,在框90中,tee的控制器关于通信和完成通知uefi。然后,如框92所指示的,efiset/getvariable(设置/获得变量)调用返回。

uefi标准的标准安全引导协议可以利用与平台上的主机处理器分离的微控制器。微控制器可以具有主动管理技术(amt)能力(如,主动管理技术(iamt)能力),并且具有带外(oob)通信能力,下文中被称作带外(oob)微控制器,或也可互换地被称作管理引擎(me)控制或iamt。在urlwww.*intel*technology/manage/iamt/处描述了主动管理技术(iamt)。通过利用微控制器的oob能力,通常在公共互联网上,可以经由oob连接与认证的网站或可用的公告栏对证书和密钥进行比较。在引导期间,证书和密钥可以由oob微控制器验证。

根据环境的实施例,图4是展示了对实现tee有用的示例性带外微控制器(obb微控制器)的特征的框图。此系统拓扑的实施例具有添加的网络连接,例如,网络接口卡(nic)150。nic150可以被用于oob平台管理以及通信。在实施例中,oob微控制器支持可以使得能够管理系统而不会干扰系统的性能。

平台100包括处理器101。处理器101可以经由存储器控制器中枢103被连接至随机访问存储器105。处理器101可以为能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等。虽然图4仅示出了一个这样的处理器101,但是在平台100中可以存在一个或多个处理器,并且所述处理器中的一个或多个可以包括多个线程、多个核等。

处理器101可以经由输入/输出控制器中枢(ich)107进一步连接至i/o设备。ich可以经由低引脚数(lpc)总线102耦合至各种设备,诸如,超级i/o控制器(sio)、键盘控制器(kbc)、或可信平台模块(tpm)。例如,sio可以访问软盘驱动或工业标准架构(isa)设备(未示出)。在实施例中,ich107经由串行外围接口(spi)总线104耦合至非易失性存储器117。非易失性存储器117可以是闪存或静态随机存储器(sram)等。平台100上可以存在带外(oob)微控制器110。oob微控制器110可以经由总线112(通常,外设部件互连(pci)或pci快送(pcie)总线)连接至ich107。oob微控制器110还可以经由spi总线104与非易失性存贮器(nv存贮器)117耦合。nv存贮器117可以是闪存或静态随机存储器(sram)等。在很多现有系统中,nv存贮器是闪存。

oob微控制器110可以被比作“微型”处理器。像全能力处理器一样,oob微控制器具有可操作地耦合至高速缓存存储器115的处理器单元111、以及ram存储器和rom存储器113。oob微控制器可以具有内置网络接口150以及到电源的独立连接125,以便即使在带内处理器101不活动、或完全引导的情况下也使得能够引导带外通信。

在实施例中,处理器具有在nv存贮器117中的基本输入输出系统(bios)119。在其他实施例中,处理器从远程设备(未示出)引导并且引导向量(指针)驻留在nv存贮器117的bios部分119中。oob微控制器110可以访问nv存贮器117的所有内容,包括bios部分119以及非易失性存储器的受保护部分121。在一些实施例中,可以利用主动管理技术(iamt)来保护存储器的受保护部分121。

oob微控制器可以耦合至平台以用于启动smbus命令。还可以在pcie总线上激活oob微控制器。集成设备电子器件(ide)总线可以连接至pcie总线上。在实施例中,spi104是用于ich107与闪存117进行通信的串行接口。oob微控制器还可以经由spi总线与闪存进行通信。在一些实施例中,oob微控制器可能不访问spi总线或其他总线之一。

nv存储器121的只对oob微控制器可用的部分可以被用于安全地存储不可由bios、固件或操作系统访问的证书、密钥和签名。nic150可以用于访问互联网、公告栏或其他远程系统以用于验证存储在nv存储器121中的密钥和证书。在不使用带外通信的情况下,在引导时间不可能使用系统固件进行撤销和验证,因为在对主机处理器的驱动程序进行初始化之前不存在网络连接。oob微控制器可以在平台上引导主机处理器101期间早期访问远程系统,以用于验证待用于完全引导平台的驱动器和加载器。远程系统可以标识特定证书为过期或撤销。在没有于引导之前撤销证书的能力的情况下,平台易受伪造加载器等的攻击。oob微控制器可以从远程系统标识所撤销的证书(例如,在证书撤销列表(crl)上),并且在nv存储设备121中相应的对其进行标记。因此,在引导时,所撤销的证书将不会错误地对伪造或过期模块进行认证。

在一些实施例中,oob微控制器是管理引擎(me)控制器。me控制器(也被简单称为管理引擎(me))可以被集成到平台中。在一些实施例中,me可以执行其他管理功能(也被称为iamt能力)。然而,这种功能不是实践本发明的实施例所需要的,如在此所描述的。出于此讨论的目的,术语me和iamt控制器指的是物理控制器并且并不指平台的能力。me通常可以通过内部数据路径或系统总线(smbus)或pci访问器来访问芯片组寄存器。

以下条款和/或示例涉及进一步的实施例:

一个示例实施例可以是一种计算机实现的方法,所述方法包括:提供用于根据需要从可信执行环境内容器化的存储设备中加载和卸载模块的动态固件模块加载器;以及经由进程间通信信道而非使用系统管理模式来访问环境。所述方法还可以包括:对平台引导介质上的存储设备进行抽象化,从而在系统管理模式下允许不同类型的存储设备而不使用多个存储设备驱动器。所述方法还包括:在所述可信执行环境内提供安全存储设备。所述方法还包括:使得所述可信执行环境能够将内容从平台可见存储器复制到所述可信执行环境内的安全存储器。所述方法还包括:验证传送到所述安全存储器的数据并且确保数据可供当前执行上下文访问。所述方法还包括:贯穿电源故障或重新引导而确保数据被持久存储在所述环境中。所述方法还包括:判定何时将控制从固件转移至操作系统。所述方法还包括:在控制被转移至所述操作系统前,使用可信执行环境存储设备驱动器来直接更新平台可见存储器。所述方法还包括:在将控制转移至所述操作系统后,将上行进程间通信信道触发至安全可信执行环境驱动器,所述安全可信执行环境驱动器调用操作系统存储设备驱动器以用于访问平台可见存储设备。所述方法还包括:使用模块以用于提供将在容器化环境中运行的存储设备和访问驱动器能力。

另一示例实施例可以是一种或多种非瞬态计算机可读介质,存储有指令,所述指令由处理器执行以用于执行包括以下各项的序列:在可信执行环境内提供容器化的存储设备;提供动态固件模块加载器以用于根据需要从所述存储设备加载和卸载模块;并且经由进程间通信信道而非使用系统管理模式来访问环境。所述介质可以进一步存储所述序列,所述序列包括:对平台引导介质上的存储设备进行抽象化,从而在系统管理模式下允许不同类型的存储设备而不使用多个存储设备驱动器。所述介质可以进一步存储所述序列,所述序列包括:在所述可信执行环境内提供安全存储设备。所述介质可以进一步存储所述序列,所述序列包括:使得所述可信执行环境将内容从平台可见存储器复制到所述可信执行环境内的安全存储器。所述介质可以进一步存储所述序列,所述序列包括:验证传送到所述安全存储器的数据并且确保数据可供当前执行上下文访问。所述介质可以进一步存储所述序列,所述序列包括:贯穿电源故障或重新引导而确保数据被持久存储在所述环境中。所述介质可以进一步存储所述序列,所述序列包括:判定何时将控制从固件转移至操作系统。所述介质可以进一步存储所述序列,所述序列包括:在控制被转移至所述操作系统前,使用可信执行环境存储设备驱动器来直接更新平台可见存储器。所述介质可以进一步存储所述序列,所述序列包括:在将控制转移至所述操作系统后,将上行进程间通信信道触发至安全可信执行环境驱动器,所述安全可信执行环境驱动器调用操作系统存储设备驱动器以用于访问平台可见存储设备。

在另一示例实施例中,可以是一种装置,所述装置包括:在可信执行环境内的安全存储设备;以及硬件处理器,所述硬件处理器用于实现所述可信执行环境,并且用于提供动态固件模块加载器以用于根据需要从存储设备来加载和卸载模块,并且用于经由进程间通信信道而非使用系统管理模式来访问环境。所述装置可以包括所述处理器,所述处理器用于对平台引导介质上的存储设备进行抽象化,从而在系统管理模式下允许不同类型的存储设备而不使用多个存储设备驱动器。所述装置可以包括所述处理器,所述处理器用于使得所述可信执行环境能够将内容从平台可见存储器复制到所述可信执行环境内的所述安全存储器。所述装置可以包括所述处理器,所述处理器用于验证传送到所述安全存储器的数据并且确保数据可供当前执行上下文访问。所述装置可以包括所述处理器,所述处理器用于贯穿电源故障或重新引导而确保数据被持久存储在所述环境中。所述装置可以包括所述处理器,所述处理器用于判定何时将控制从固件转移至操作系统。所述装置可以包括所述处理器,所述处理器用于:在控制被转移至所述操作系统前,使用可信执行环境存储设备驱动器来直接更新平台可见存储器。所述装置可以包括:在将控制转移至所述操作系统后,所述处理器用于将上行进程间通信信道触发至安全可信执行环境驱动器,所述安全可信执行环境驱动器调用操作系统存储设备驱动器以用于访问平台可见存储设备。

本说明书中通篇提到“一个实施例”或“实施例”表示结合所述实施例所述的具体特征、结构或特性包含在本公开所包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定都表示同一个实施例。此外,除了所示的特定实施例以外,可以以其他适当的形式来实现所述特定特征、结构或特性,并且所有这样的形式都可以涵盖在本申请的权利要求内。

尽管已经描述了有限数量的实施例,但是本领域技术人员将由此意识到许多的修改和变化。随附权利要求意图覆盖所有的这种修改和变型,将其视为落入本公开的真实精神和范围内。

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