掌桥专利:专业的专利平台
掌桥专利
首页

设备的安全引导辅助及相关系统、方法和设备

文献发布时间:2023-06-19 11:35:49


设备的安全引导辅助及相关系统、方法和设备

优先权声明

本申请要求于2018年11月13日提交的名称为“微控制器的安全引导辅助及相关系统、方法和设备(SECURE BOOT ASIST FOR MICROCONTROLLERS AND RELATED SYSTEMS,METHOD AND DEVICES)”的美国临时专利申请序列号62/760,636的提交日期的权益,并且要求于2019年3月26日提交的名称为“设备的安全引导辅助及相关系统、方法和设备(SECUREBOOT ASSIST FOR DEVICES,AND RELATED SYSTEMS,METHODS AND DEVICES)”的待审美国专利申请序列号16/364,391的提交日期的权益,这些专利申请各自的公开内容据此全部以引用方式并入本文。

技术领域

本公开总体涉及确保待在目标设备处执行的固件是安全的;并且更具体地,一些实施方案总体涉及使用目标设备外部的安全设备来确保用于验证目标设备处的固件的程序是安全的;并且还更具体地,一些实施方案总体涉及使用目标设备外部的安全设备来控制目标设备处的至少一些安全引导过程以确保待在目标设备处执行的固件是安全的。

背景技术

运行诸如微控制器单元(MCU)之类的设备的固件有时需要“现场”(即,在设备已离开工厂之后)更新,例如由于制造商发布固件的新版本以纠正错误(bug)或添加功能。由于可由固件自身修改闪速存储器,许多设备使用闪速存储器或其他非易失性存储器来存储固件。

附图说明

虽然本公开以特别指出并清楚地要求保护具体实施方案的权利要求书作为结尾,但当结合附图阅读时,通过以下描述可更容易地确定本公开范围内的实施方案的各种特征和优点,在附图中:

图1是根据本公开的一个或多个实施方案的计算系统的简化框图;

图2是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的系统的简化框图;

图3是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的示例性过程;

图4是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的系统的简化框图;

图5是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的示例性过程;

图6是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的系统的简化框图;

图7是根据本公开的一个或多个实施方案的用于确保MCU应用程序的真实性的示例性过程;

具体实施方式

在以下具体实施方式中,参考了形成本公开的一部分的附图,并且在附图中以举例的方式示出了可实施本公开的实施方案的特定示例。充分详细地描述了这些实施方案,以使本领域的普通技术人员能够实践本公开。然而,可利用其他实施方案,并且可在不脱离本公开的范围的情况下进行结构、材料和过程的变化。

本文所呈现的图示并不旨在为任何特定方法、系统、设备或结构的实际视图,而仅仅是用于描述本公开的实施方案的理想化表示。本文所呈现的附图未必按比例绘制。为了读者的方便,各附图中的类似结构或部件可保持相同或相似的编号;然而,编号的相似性并不意味着该结构或部件在尺寸、组成、配置或任何其他属性方面必须是相同的。

应当容易理解,如本文一般所述并且在附图中示出的实施方案的部件可被布置和设计成多种不同的配置。因此,对各种实施方案的以下描述并不旨在限制本公开的范围,而是仅代表各种实施方案。

以下描述可包括示例以帮助本领域的普通技术人员实践本发明所公开的实施方案。使用术语“示例性”、“举例”、“例如”、“例如(e.g.)”等意味着有关描述是解释性的,并且尽管本公开的范围旨在涵盖示例和法律等同物,但是使用此类术语并不旨在将实施方案或本公开的范围限制于指定的部件、步骤、特征、功能等。

因此,除非本文另有说明,否则所示出和描述的特定实施方式仅是示例,并且不应被解释为是实施本公开的唯一方式。元件、电路和功能可以框图形式示出,以便不以不必要的细节模糊本公开。相反,所示出和描述的特定实施方式仅为示例性的,并且不应理解为实施本公开的唯一方式,除非本文另外指明。另外,块定义和各个块之间逻辑的分区是特定实施方式的示例。对于本领域的普通技术人员将显而易见的是,本公开可通过许多其他分区解决方案来实践。在大多数情况下,已省略了关于定时考虑等的细节,其中此类细节不需要获得本公开的完全理解,并且在相关领域的普通技术人员的能力范围内。

本领域的普通技术人员将会理解,可使用多种不同技术和技法中的任何一者来表示信息和信号。例如,可在该整个说明书中参考的数据、指令、命令、信息、信号、比特和符号可由电压、电流、电磁波、磁场或粒子、光场或粒子或者它们的任何组合来表示。为了清晰地呈现和描述,一些附图可以将信号示出为单个信号。本领域的普通技术人员应当理解,信号可表示信号总线,其中总线可具有多种位宽度,并且本公开可在包括单个数据信号在内的任意数量的数据信号上实现。

结合本文所公开的实施方案描述的各种示例性逻辑块、模块和电路可以用通用处理器、专用处理器、数字信号处理器(DSP)、集成电路(IC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立栅极或晶体管逻辑部件、分立硬件部件或设计成实施本文所描述的功能的其任何组合来实现或实施。通用处理器(在本文中也可称为主机处理器或仅称为主机)可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可实现为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器或任何其他此类配置。在通用计算机被配置为执行与本公开的实施方案相关的计算指令(例如,软件代码)时,包括处理器的通用计算机被认为是专用计算机。虽然代码可在本文中描述为被配置为使处理器能够执行某些功能或操作,但在一些情况下可省略处理器的描述,因为本发明人认为处理器的重复叙述可能使所公开的实施方案的细节变得模糊。例如,有时代码可被描述为执行所公开的实施方案的功能或操作或被配置为执行所公开的实施方案的功能或操作,而不具体地叙述所述功能或操作由执行该代码的处理器执行。

实施方案可根据被描绘为流程图、流程示意图、结构图或框图的过程来描述。虽然流程图可将操作动作描述为顺序过程,但是这些动作中的许多动作可在另一序列中、并行地或基本上同时地执行。此外,可重新安排动作的顺序。过程可以对应于方法、线程、函数、程序、子例程、子程序等。此外,本文所公开的方法可以在硬件、软件或两者中实现。如果在软件中实现,这些函数可作为一个或多个指令或代码存储或传输到计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质两者,该通信介质包括有利于将计算机程序从一个位置传递到另一个位置的任何介质。

除非明确说明此类限制,否则使用名称诸如“第一”、“第二”等对本文的元件的任何引用不限制那些元件的数量或顺序。相反,这些名称可在本文中用作在两个或更多个元件或元件的实例之间进行区分的便利方法。因此,提及第一元件和第二元件并不意味着在那里只能采用两个元件,或者第一元件必须以某种方式在第二元件之前。此外,除非另外指明,一组元件可包括一个或多个元件。

如本文所用,涉及给定参数、属性或条件的术语“基本上”是指并且包括在本领域的普通技术人员将会理解的给定参数、属性或条件满足小程度的方差的程度,诸如例如在可接受的制造公差内。以举例的方式,取决于基本上满足的具体参数、属性或条件,参数、属性或条件可至少满足90%、至少满足95%、或甚至至少满足99%。

如在本公开中使用的,术语“单元”、“模块”或“部件”可以是指被配置为执行单元、模块或部件的动作的特定硬件实现和/或可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上并且/或者由通用硬件执行的软件对象或软件例程。在一些实施方案中,本公开中描述的不同单元、部件、模块、引擎和服务可以实现为在计算系统上执行的对象或过程(例如,作为单独的线程)。虽然本公开中描述的系统和方法中的一些系统和方法通常被描述为在软件中实现(存储在通用硬件上并且/或者由通用硬件执行),但是特定硬件实施方式或软件和特定硬件实施方式的组合也是可能且可以预期的。

引导代码通常与设备的现场编程结合使用。引导代码是添加到操作代码(即,存储在闪速存储器中)的一小段(即,块)代码(如与应用程序代码相比),该操作代码例如在设备接通时或在设备执行复位时执行系统功能。在典型嵌入式系统(特别是使用闪速存储器的那些)中,引导代码可执行诸如检查闪速存储器的内容和系统初始化任务之类的任务。操作代码可负责将新固件移动到嵌入式系统并替换旧固件,并且可共用一些用于检查新固件图像的引导代码功能或可依赖于引导代码来检查新固件图像。

为了告诉设备准备接收新固件,通常使用硬件和/或软件条件。硬件条件的示例可为在设备的复位期间按下按钮,并且软件条件的示例可为在复位期间检测存储在设备上的有效应用程序的缺乏。如果检测到更新条件的引导代码(通常为系统启动时执行检查的引导代码),则安装应用程序或引导代码将尝试连接到主机(例如,个人计算机或编程工具,但不限于此)并且等待接收新固件的图像。一旦新固件移动到设备并替换旧固件,就可由设备执行新代码。

有时在设备的现场编程期间出现的一个问题是新固件可能不真实,例如,其可能由未被授权的第三方设计或提供,即不由被授权方诸如原始制造商或原始制造商所授权的第三方设计或提供。因此,可开发新固件以用于恶意用途,例如绕过安全保护或非法使用设备的关键功能,但不限于此。此外,新固件可能由被授权方提供,但旨在用于不同设备。

另一个问题是新固件的完整性可能受损。即,可从其原始形式修改(有时仅略微修改)新固件的数据。经修改的固件可能看起来仍为真的,但这些修改可能促成上述相同安全问题,即,安全保护的绕过或设备的关键功能的非法使用。此外,受损的固件可使固件暴露于外部世界并且使第三方能够对制造商的固件进行复制和/或逆向工程。

又一个问题是如果新固件的图像(分发给设备的固件的电子副本)暴露或可访问,则隐私可能受损。固件在传输至目标设备时可被第三方反编译或以其他方式分析,并且存储在固件中或关于固件的专有信息可被捕获。

引导代码是保持固件的安全性(即,真实性、完整性和/或隐私)的关键部分。固件安全性有时由通常被称为“安全引导序列”的操作序列中的引导代码来验证。例如,在典型安全引导序列中,引导代码是在处理器已被复位或加电之后执行的第一个代码,然后引导代码验证存储在程序存储器中的新固件的安全性,并且如果验证了新固件,则引导代码启动固件的加载和执行。

验证固件安全性通常涉及认证新应用程序代码的源并且确认固件的完整性。通常使用被授权方所特有的数字签名和/或消息认证码(MAC)的使用来认证固件的源,例如就数字签名而言,使用对应公钥进行认证,或就MAC而言,使用用于计算MAC的私钥进行认证。

为了确认完整性,通常在创建固件时使用散列函数来生成摘要(有时也称为“消息摘要”),该摘要对应于所创建的固件。用于创建摘要的散列函数被假定为与在制造目标设备时存储在目标设备上的散列函数相同。可例如使用公钥密码技术对该“第一”摘要进行加密以获得数字签名。该数字签名可与新固件一起分发以用于设备的现场编程。当设备接收到固件和第一数字签名时,其使用本地存储的散列函数来从所接收的固件计算第二摘要,该本地存储的散列函数应为用于创建第一摘要的相同散列函数。接收器对第二摘要进行加密以获得第二数字签名,并且将第二数字签名与第一数字签名进行比较以确定这些数字签名是否匹配。如果修改了,甚至略微修改了固件,则理论上(统计学上,冲突(即,在将相同散列函数与不同固件一起使用时获得相同摘要)的概率非常小)第二摘要将不匹配第一摘要,因此第一数字签名将不匹配第二数字签名。

在一些情况下,引导代码可使用与用于创建第一数字签名的私钥相对应的公钥来解密第一数字签名并恢复第一摘要。然后引导代码可创建如本文所述的第二摘要并且比较第一摘要和第二摘要以确定它们是否匹配。使用私钥密码技术生成的MAC代码有时用于代替或补充数字签名。值得注意的是,加密还用于隐含地验证目标设备,即验证其是真的或固件的预期目标设备。

固件安全的验证至少部分取决于建立负责认证、确认完整性和/或解密的初始程序(诸如引导代码)自身安全的“信任根”。用于建立初始信任根的常规技术是将引导代码存储在目标设备的只读存储器(ROM)中,并且对于安全引导过程而言,要么直接从ROM执行引导代码,要么将所存储的引导代码复制到程序存储器中,并且作为初始步骤,使用所存储的引导代码来验证所复制的引导代码的安全性。在任一情况下,ROM建立初始信任根。

安全引导能力越来越多地用于诸如MCU的设备,但许多现有设备没有引导ROM(即,其上存储有引导代码的ROM)来建立初始信任根并实现安全引导过程。一些设备诸如微处理器(MPU)实现位于处理器与存储器之间的单独芯片,但这种技术对于具有集成代码存储器(即,操作代码和引导代码的相同存储器)的设备不可行。此外,就MCU而言,改变每个MCU的掩模组以包括引导ROM在成本和时间方面将是难以承受和高昂的。

因此,本公开的发明人认识到需要辅助目标设备进行安全引导过程的系统、方法和设备。在一些实施方案中,此类系统、方法和设备可建立用于在目标设备处实现安全引导的信任根而无需用于建立信任根的引导ROM或其他硬件。此外,本公开的发明人认识到需要用于在初始没有安全引导能力或需更强信任根的目标设备中实现安全引导过程的系统、方法和设备。

本公开的一个或多个实施方案总体涉及使用安全外部设备(例如,芯片或微控制器,但不限于此)来验证主机设备的引导代码或向主机设备提供引导代码,以使得主机设备可执行安全引导过程。在一个或多个实施方案中,安全设备的硬件输出可操作性地耦接到主机设备的硬件输入,其中硬件输入是用于在主机设备处启动受限操作模式的唯一触发器,并且在受限模式期间,主机设备不能独立执行本地代码(例如,引导代码或操作代码,但不限于此)并且除了具有仅可由安全外部设备访问并控制的一组I/O端口的主机设备的接口之外,I/O端口被禁用。在一个或多个实施方案中,用于硬件输入和接口的连接可在物理上隔离,使得它们不可从外部访问,例如通过以下方式隔离:将安全设备与主机设备一起堆叠和/或封装在模块中,使得连接“隐藏”在安全设备与主机设备之间。这样,主机设备的硬件输入可被表征为安全设备与主机设备之间的“信任锚”。

图1示出了根据本公开的一个或多个实施方案的计算系统100的简化框图,该计算系统包括安全设备110和主机设备130。作为非限制性示例,计算系统100可以是以下部件,是以下部件的一部分,或包括以下部件:微控制器型嵌入式系统、用户型计算机、文件服务器、计算机服务器、笔记本电脑、平板电脑、手持式设备、移动设备、无线耳塞设备或耳机设备、有线耳塞或耳机设备、电器、汽车子系统或其他用于执行软件的计算机系统。计算机、计算系统和服务器可在本文中互换使用以指示用于实践本公开的实施方案的系统。计算系统100可被配置用于执行包含计算指令的软件程序,并且可包括一个或多个处理器、存储器、存储装置、用户界面元件、一个或多个通信元件以及它们的组合。

在一个或多个实施方案中,主机设备130可包括中央处理单元(CPU)140、闪存136(即,闪速存储器)、CPU接口134、RAM 146、输入/输出(I/O)端口132和外围设备148。闪存136可为例如程序存储器,并且可用于保持用于执行各种各样的任务(包括执行本公开的实施方案)的计算指令、数据结构和其他信息(本文统称为“固件”)。作为示例,固件可包括操作代码和引导代码。作为进一步的示例,操作代码可包括用于集成嵌入式系统、操作系统、操作系统加载器、单独安装的应用程序以及它们的组合的代码。闪存136是非易失性存储器的非限制性示例,但应当理解,任何非易失性存储器可用于代替闪速存储器,包括但不限于氮化硅基电荷俘获设备和电阻式存储器,而不超出本公开的范围。CPU 140可结合对数据执行计算和其他操作(包括执行本公开的实施方案)来使用RAM 146。

CPU 140可被配置为执行多种多样的软件诸如操作系统和/或应用程序,包括用于执行本公开的全部或部分实施方案的计算指令。CPU 140可以是单核或多核处理器,并且该一个或多个核可以是被配置和/或被编程为执行本公开中所述的一个或多个功能的专用(例如,DSP或ASIC,但不限于此)和通用的任何组合。在多核实施方案中,这些核可独立地和相互依赖地(包括但不限于以主从布置)操作。CPU 140包括控制单元142,该控制单元经由CPU接口134实现对CPU 140的控制。作为示例,控制单元142可用于控制CPU 140以读取和写入到闪存136和RAM 146,执行(全部或部分地)存储在闪存136和/或RAM 146处的软件,启用/禁用主机设备130的I/O端口132,检查CPU 140的内部状态或变量,和/或设定检查点、断点和监视点。此类功能可用于多种应用,包括但不限于测试/调试计算系统100,更新计算系统100,保护计算系统100免受不安全的代码的影响,以及更一般地执行本公开的实施方案。本文使用的任何描述词诸如“调试”、“测试”、“验证”或“认证”不旨在限制此类电路的普遍适用性。

在图1所示的示例中,CPU 140通过多个总线(在图1中标记为总线144)来与闪存136、RAM 146和I/O端口132通信。作为示例,总线144可包括各种总线,其执行地址总线、数据总线、外围总线、事件总线、测试总线和程序总线的一个或多个功能,但不限于此。

控制单元142结合在CPU 140内并且可由CPU接口134直接访问。CPU接口134通过总线144来与I/O端口132通信,并且经由I/O端口132来与外部设备(诸如安全设备110或主机计算机)通信。I/O端口132可包括在硬件和/或软件中实现的多种输入和输出端口。在各种实施方案中,I/O端口132可包括用于发送和接收消息和信号的通用和专用I/O端口(GPIO和SPIO)、用于与CPU接口134通信的软件端口、用于从计算系统100接收安全设备110的被断言的复位的端口以及其他端口。

外围设备148被配置为与CPU 140相结合和/或独立地执行多种外围支持功能,包括例如模拟输入和输出、串行输入/输出、定时器和阈值检测电路。尽管在图1中示出为不同模块,但是I/O端口132中的一个或多个端口可被实现为外围设备148,例如,GPIO可被实现为外围设备148。在一个或多个实施方案中,外围设备148可包括被配置为将CPU 140布置和/或保持于复位模式的外围设备,由此CPU 140不能开始“正常”操作。例如,在处于复位模式时,CPU 140不能将第一指令的存储器地址加载到程序计数器中,或作为另一个示例,不能在闪存136的存储器地址处获取第一指令。这种外围设备可响应于检测到计算系统100和/或CPU 140的通电或检测到像计算系统100的通电一样对待的条件(诸如例如由I/O端口132的硬件输入的断言引起的复位)而将CPU 140布置和/或保持于复位模式。

在一个或多个实施方案中,安全设备110包括可信序列电路112、密码(crypto)电路114、ROM 116和I/O端口118。可信序列电路112可一般地被配置为根据本公开的实施方案执行用于验证引导代码和/或固件的功能和其他操作。密码电路114可一般地被配置为根据本公开的实施方案使用所存储的公钥、私钥或密钥来执行非对称和/或密码操作,诸如签名验证、MAC生成/验证、散列摘要计算加密/解密或其他操作。更具体地,密码电路114可更一般地被配置为向安全设备110和/或计算系统100提供一个或多个公共和/或私有密码服务。在一个或多个实施方案中,密码电路114可为模拟电路、集成电路、软件或它们的组合。ROM116可存储用于执行本公开的一个或多个实施方案的数据和代码,包括例如引导代码的可信副本。

在图1所示的示例中,安全设备110的I/O端口118和主机设备130的I/O端口132通过双向连接122来操作性地耦接以促进消息和数据在这两个设备之间的传输,包括执行本公开的一个或多个实施方案。

图2示出了根据本公开的一个或多个实施方案的用于辅助计算系统的主机设备处的安全引导过程的示例性系统200的简化框图。在图2所示的实施方案中,由安全设备210存储并向MCU 230提供被配置为验证MCU应用程序234安全的程序。

在一个或多个实施方案中,MCU 230包括存储在程序存储器232中的本机引导代码236。在一个或多个实施方案中,本机引导代码236可不被配置为验证MCU应用程序234是安全的或可不被信任验证MCU应用程序234是安全的。安全设备210具有存储在永久性存储器216中的低级引导代码218引导代码,并且向MCU230提供低级引导代码218的副本220(即,低级引导代码218的图像)。在一个或多个实施方案中,低级引导代码218可为这样的程序,该程序在由处理器(诸如CPU 248)执行时被配置为验证固件是安全的,包括验证MCU应用程序234是安全的。按另一种方式表征,低级引导代码218可被配置为执行安全引导过程的至少一些操作,以及在该示例中,本机引导代码236不被配置为执行或本机引导代码236不被信任执行的操作。作为示例,低级引导代码218可被配置为验证本机引导代码236是安全的,验证MCU应用程序234是安全的,或验证本机引导代码236和MCU应用程序234均是安全的。

在一个或多个实施方案中,低级引导代码218可被配置为使处理器能够执行用于验证固件安全的操作,而且包括与执行这些操作相关的数据,包括但不限于摘要、散列函数和公共和/或私有加密密钥中的一者或多者。

在一个或多个实施方案中,可信序列电路214可一般地被配置为启动MCU230处的受限操作模式(例如,复位模式,但不限于此),将低级引导代码218的副本220发送到MCU230,并且启动MCU 230处的低级引导代码218的副本220的执行。在一个实施方案中,可信序列电路214可被配置为指示CPU 248在进入已知状态时启动低级引导代码218的副本220的执行,然后解除断言复位244,从而将MCU 230布置于这种已知状态,例如正常操作模式诸如正常引导或复位。在MCU 230进入复位启动的(即,通过解除断言复位244)已知状态时,在没有来自安全设备210的任何更多帮助的情况下,低级引导代码218的副本220尝试验证MCU应用程序234和/或本机引导代码236。

在另一个实施方案中,可信序列电路214可被配置为接收和处理验证结果246,所述验证结果从在MCU 230处执行的低级引导代码218的副本220接收并且由调试功能电路242作为消息222传输到可信序列电路214。可信序列电路214可被配置为响应于验证结果246而控制MCU 230处的启动的受限操作模式的退出。在一个或多个实施方案中,验证结果246可一般地指示固件的验证成功或失败。在一个或多个实施方案中,验证结果246可指示本机引导代码236和/或MCU应用程序234是否被验证为安全的。

在一些实施方案中,如果验证失败,则验证结果246可包括验证失败的原因的一些指示,诸如错误代码。

在一个或多个实施方案中,可信序列电路214可例如由图1的I/O端口118和I/O端口132操作性地耦接到MCU 230的复位244和调试功能电路242。复位244可为MCU 230的外围设备,使得当向复位244断言硬件输入时,复位244被配置为触发MCU 230处的硬件条件,从而引起MCU 230进入受限模式,例如本公开中描述的复位模式。当MCU 230处于受限模式时,CPU 248可能不能够执行以下的一个或多个操作:独立地启动本地软件的执行,通过一些输入和输出端口接收或发送数据,或对一些输入端口处接收到的信号作出响应。然而可经由调试功能电路242,例如由可信序列电路214使用调试功能电路242来指示CPU 248执行软件。

当MCU 230处于受限模式时,可信序列电路214可经由调试功能电路242来访问SRAM 238,更具体地代码空间240。此外,可信序列电路214可使用调试功能电路242来将低级引导代码218的副本220移动到代码空间240,可指示CPU248执行存储在代码空间240处的代码(即,低级引导代码218的副本220),并且接收验证结果246。

在一个或多个实施方案中,可信序列电路214可被配置为使用调试功能电路242来指示CPU 248执行本机引导代码236以执行一些系统初始化功能。更具体地,可信序列电路214可指示CPU 248执行与系统初始化相关的本机引导代码236的有限数量的功能。在一个实施方案中,在由MCU 230上的软件(例如,由本机引导代码236,但不限于此)执行的所有功能(如果有的话)都完成以使得低级引导代码218的副本220的完整性不受损之后,可信序列电路214可将低级引导代码218的副本220传输到MCU 230。

在一个或多个实施方案中,可信序列电路214可被配置为使用调试功能电路242来指示CPU 248执行与代码空间240相对应的地址空间处的代码(即,执行低级引导代码218的副本220)以便运行低级引导代码218的副本220并且验证MCU应用程序234。

在一个或多个实施方案中,调试功能电路242可为用于例如根据联合测试行动组(JTAG)标准来与CPU 248通信并控制该CPU的硬件和/或软件CPU接口和/或控制单元,或用于实现这种操作的专用硬件/软件CPU接口和/或控制单元。虽然本公开的各种实施方案可将调试功能电路示出和描述为“片上”,但本公开不限于片上实现,例如,本领域普通技术人员应当理解,也可使用CPU在片外仿真的内电路技术并且所公开的实施方案适用于此。

在图2所示的示例性系统200中,安全设备210包括用于对安全设备210和MCU 230之间的消息222进行加密和解密的密码单元212。不一定需要安全设备210和MCU 230之间的消息222的加密和解密,因此在示例性系统200的一些实施方案中,具体地设想了可省略密码单元212。

图3示出了根据本公开的一个或多个实施方案的用于安全引导辅助的过程300,其中安全设备302向由MCU 304表示的主机设备提供低级引导代码,该低级引导代码被配置为验证MCU 304主机设备的固件是否安全。在图3所设想的示例中,已经在MCU 304处接收到MCU应用程序并且将MCU应用程序加载到程序存储器中,因此虽然未参照图3描述用于连接到源以及下载MCU应用程序的步骤,但具体地设想了此类步骤并入到所公开的实施方案中。

在操作310中,安全设备302断言并保持MCU 304处的复位。在操作312中,MCU 304响应于安全设备302断言复位而进入复位模式,并且当复位被断言时,在操作312中,将MCU304保持于复位模式并且防止该MCU独自运行任何软件。在任选操作314中,例如使用用公钥密码技术生成的数字签名来认证MCU304的调试功能(例如,调试功能电路242,但不限于此)。在一个或多个实施方案中,认证调试功能可用于确认调试功能尚未被修改或安全设备302尚未耦接到非法的MCU。在调试功能主要是硬件和/或存储在非易失性存储器中的软件并且安全设备302不可与MCU 304分开的实施方案中,可省略认证调试功能的步骤。

在操作316中,从安全设备302的永久性存储器检索低级引导代码。在操作318中,使用MCU 304的调试功能来将所检索的低级引导代码(或其副本)发送到MCU 304。在操作320中,MCU 304接收所发送的低级引导代码,并且将低级引导代码存储在SRAM中。在操作322中,安全设备302使用MCU 304的调试功能来指示MCU 304执行存储在SRAM中的低级引导代码。在操作324中,由低级引导代码执行MCU应用程序234的至少一部分的尝试验证,并且在操作326中,经由MCU 304的调试功能将验证结果发送到安全设备302。在操作328中,安全设备302经由MCU 304的调试功能来接收验证结果。如果验证失败,则在操作330中,安全设备302继续断言复位直到检测到可信代码已安装在MCU 304处。在一个实施方案中,安全设备302可重复地重启MCU 304直到低级引导代码检测到MCU应用程序是安全的(例如,低级引导代码向安全设备302发送指示操作代码安全的验证结果)。如果验证成功,则在操作332中,安全设备302停止断言复位,并且在操作334中,MCU 304进入已知的操作状态,由此其可执行操作324的至少部分验证的MCU应用程序。

在一个或多个实施方案中,来自安全设备的低级引导代码可被配置为尝试验证MCU应用程序、本机引导代码或两者。在低级引导代码尝试验证本机引导代码安全的实施方案中,如果验证了本机引导代码,则可执行经验证的本机引导代码以验证其他固件是安全的,包括MCU应用程序。

根据实现,新MCU应用程序可覆写MCU处的本机引导代码或不覆写(即,本机引导代码可保留)。在任一情况下,在一个或多个实施方案中,当从可信设备加载的低级引导代码尝试验证MCU应用程序代码是安全的时,其可被配置为一起或单独地验证MCU应用程序代码和本机引导代码两者。例如,低级引导代码218可使用MCU应用程序234和本机引导代码236(图2)来创建用于验证安全性的数字签名。

一个或多个实施方案总体涉及用于安全引导辅助的系统和方法,其中本机程序生成固件的安全数据,并且安全设备处的电路将该安全数据与存储在安全设备处的可信安全数据进行比较以确定该固件是否安全并且可信。

图4示出了根据本公开的一个或多个实施方案的用于辅助计算系统的主机设备(在此处被实现为MCU 430)处的安全引导过程的示例性系统400的简化框图。在图4所示的实施方案中,MCU 430包括存储在程序存储器432处的本机引导代码438,并且本机引导代码438被配置为至少部分地基于MCU应用程序434来生成安全数据。安全数据可包括例如使用公钥/私钥加密技术生成的数字签名、使用散列函数生成的摘要以及MAC代码。值得注意的是,在图4所示的实施方案中,本机引导代码438不被配置为或此类功能不被信任确认安全数据的有效性和/或作出MCU应用程序434安全的最终决定。更具体地,在一个或多个实施方案中,本机引导代码438没有或不能访问存储在安全设备410的永久性存储器418处的可信摘要420。在图4所示的示例中,本机引导代码438被配置为从MCU应用程序434获得摘要446,从MCU应用程序签名436生成签名448,并且经由调试功能电路442将摘要446和签名448作为所发送的消息422发送到可信序列电路416,但是其不会验证摘要446或签名448是安全的。

在另选的实施方案中,可信序列电路416可被配置为从程序存储器432或另一个存储器(其在该处经由调试功能电路442以本机引导代码438存储)处的一个位置读取摘要446和签名448。换句话讲,在一些实施方案中,可以设想,本机引导代码438可被配置为将摘要446和/或签名448发送到安全设备410,并且在一些实施方案中,可以设想,可信序列电路416可被配置为使用调试功能电路442来从MCU 430检索摘要446和/或签名448。例如,可信序列电路416可使用调试功能电路442来将断点插入到本机引导代码438中,一旦计算了摘要446和/或签名448,就停止本机引导代码438的执行,并且检索所计算的值。

在一个或多个实施方案中,可信序列电路416可被配置为经由复位信号424来断言MCU 430的复位444(复位444被配置为引起MCU 430被布置于受限操作模式),并且使用调试功能电路442来指示CPU 440执行本机引导代码438并接收(或检索)摘要446和签名448。在一个或多个实施方案中,可信序列电路416可一般地被配置为使用摘要446和签名448中的一者或多者来验证MCU应用程序434是安全的。更具体地,可信序列电路416可被配置为结合密码单元414一起使用签名448来认证MCU应用程序434的源,并且使用可信摘要420来确认MCU应用程序434的完整性。

在一个或多个实施方案中,密码单元414可一般地被配置为使用公钥和/或私钥密码技术来验证签名448。在图4所示的示例性系统400中,安全设备410包括公钥412,并且密码单元414使用公钥412来解码签名448。可信序列电路416可响应于解码的签名448而验证MCU应用程序434的源的身份,并且确认MCU应用程序434与被授权方相关联。可信序列电路416可确认摘要446匹配可信摘要420之一,并且作为响应,确认MCU应用程序434的完整性。

图5示出了根据本公开的一个或多个实施方案的用于安全引导辅助的过程500,其中安全设备502执行主机设备的MCU 504实现处的引导代码所生成的摘要的验证。

在图5中设想的示例中,已经在MCU 504处接收到新MCU应用程序并且将新MCU应用程序加载到程序存储器中,因此虽然未详细描述用于连接到主机以及下载MCU应用程序的步骤,但具体地设想了包括此类步骤的实施方案。

在操作510中,安全设备502断言并保持MCU 504处的复位。在操作512中,MCU 504响应于安全设备502断言复位而进入复位模式,并且当复位被断言时,将MCU 504保持于复位模式并且防止该MCU独自运行任何软件。在任选操作514中,例如使用用公钥密码技术生成的数字签名来认证MCU 504的调试功能(例如,调试功能电路442,但不限于此)。与过程300(图3)一样,在一些实施方案中,可省略认证调试功能。在操作516中,安全设备502使用调试功能来指示MCU 504执行存储在MCU 504处的引导代码。在操作518中,引导代码从存储在MCU 504处的MCU应用程序生成摘要和签名。在一个或多个实施方案中,签名可以是与MCU应用程序包括在一起或由引导代码创建的MCU签名。在操作520中,MCU 504使用调试功能来将签名和摘要发送到安全设备502。

在操作522中,安全设备502经由MCU的调试功能来接收签名和摘要。在操作524中,安全设备502尝试认证所接收的签名。在操作526中,安全设备502尝试验证所接收的摘要。在一个实施方案中,安全设备502使用本地存储的(即,存储在安全设备502的永久性存储器中的)可信摘要来验证该摘要。在一个实施方案中,安全设备502仅在成功认证该签名之后才尝试验证该摘要。如果该签名不真实或该摘要未被验证,则在操作528中,安全设备502断言复位直到其检测到可信代码已安装在MCU 504处。如果该签名真实并且该摘要被验证,则在操作530中,安全设备502停止断言复位,并且在操作532中,MCU 504进入已知的操作状态,由此其可执行现已被验证的新MCU应用程序。

图6示出了根据本公开的一个或多个实施方案的用于辅助计算系统的主机设备(在此处被实现为MCU 630)处的安全引导过程的示例性系统600的简化框图。在图6所示的实施方案中,存储在MCU 630处的程序存储器632中的本机引导代码636被配置为验证MCU应用程序634是安全的,但是由于本机引导代码636可能以某种方式受损,因此安全设备610被配置为使用存储在安全设备610的永久性存储器616中的可信引导代码618来验证本机引导代码636是安全的。在一个或多个实施方案中,可信序列电路614被配置为断言至复位642的复位信号622,并且复位642被配置为通过将MCU 630布置于受限操作模式来作出响应,并且使用调试功能电路640(例如使用发送和接收消息620)来检索本机引导代码636的副本644。可信序列电路614被配置为确定引导代码636的所检索的副本644是否匹配可信引导代码618。如果本机引导代码636的所检索的副本644匹配可信引导代码618,则引导代码636被成功验证并且可信序列电路614确定引导代码636是安全的。

在图6所示的示例性系统600中,将可信引导代码618存储在安全设备610的永久性存储器616中,但作为可信引导代码618的补充或替代,可使用其他安全信息来验证本机引导代码636。在一个实施方案中,可将可信安全数据(诸如可信数字签名、可信摘要或可信MAC代码)存储在永久性存储器616处。

如本公开中所述,在一些情况下,可能存在调试功能电路(诸如调试功能电路640)受损的风险。如果受损,调试功能电路640可能在将本机引导代码636的副本644发送到安全设备610之前修改该副本以便掩盖本机引导代码636与可信引导代码618之间的差异。因此,在一个或多个实施方案中,可信序列电路614可结合密码单元612一起尝试例如使用各种公钥和/或私钥加密技术来认证调试功能电路640,并且仅响应于成功认证调试功能电路640才尝试验证本机引导代码636。作为示例,可信序列电路614可请求并接收(例如,使用消息620,但不限于此)来自调试功能电路640的签名,并且使用公钥来认证所接收的签名。

在成功验证本机引导代码636时,可信序列电路614可被配置为使用调试功能电路640来指示CPU 638在退出受限模式时执行引导代码636,然后停止断言复位642处的通电复位信号622。CPU 638在至复位642的复位信号622解除断言时执行本机引导代码636,并且本机引导代码636尝试验证MCU应用程序634是安全的。

图7示出了根据本公开的一个或多个实施方案的用于安全引导辅助的过程700,其中安全设备702执行主机设备(被实现为MCU 704)的引导代码的验证。

在所设想的示例中,已经在MCU 704处接收到新MCU应用程序并且将新MCU应用程序加载到程序存储器中,因此虽然未详细描述用于连接到新固件的源以及下载MCU应用程序的步骤,但具体地设想了这些步骤。

在操作710中,安全设备702断言并保持MCU 704处的复位。在操作712中,MCU 704响应于安全设备702断言复位而进入复位模式,并且当复位被断言时,将MCU 704保持于复位模式并且防止该MCU独自运行任何软件。在任选操作714中,例如使用用公钥密码技术生成的数字签名来认证MCU 704的调试功能。与过程300(图3)和过程500(图5)一样,在一些实施方案中,可省略认证调试功能。在操作716中,安全设备702使用调试功能来指示MCU 704将存储在MCU 704处的引导代码核的副本发送到安全设备702。在操作718中,MCU 704读取本机引导代码并且在操作720中经由调试功能将本机引导代码的副本发送到安全设备702。在操作722中,安全设备702经由调试功能接收引导代码的副本,并且响应于本机引导代码的副本和在本地存储于安全设备702处的可信引导代码而尝试验证MCU 704的本机引导代码。在一个或多个实施方案中,可使用任何合适的技术(包括但不限于逐位比较或使用散列)来比较引导代码的副本和可信引导代码。如果引导代码未被成功验证,则在操作724中,安全设备702继续将MCU704保持于复位直到其检测到可信引导代码已安装在MCU 704处。如果MCU的本机引导代码在操作722中被成功验证,则在操作726中,安全设备702指示MCU704在退出复位模式时执行本机引导代码,并且解除断言MCU 704处的复位。在操作728中,引导代码在退出复位模式时在MCU 704处执行并且尝试验证MCU应用程序是安全的。

在一个或多个实施方案中,计算系统可被配置为响应于多个操作模式来操作。第一模式可对应于参照图2和图3描述的实施方案,第二模式可对应于参照图4和图5描述的实施方案,并且第三模式可对应于参照图6和图7描述的实施方案。换句话讲,安全引导辅助系统可被配置为根据第一操作模式使用从安全设备提供的低级引导代码来执行安全引导辅助,根据第二操作模式使用由本机引导代码生成的可信摘要来执行安全引导辅助,并且根据第三操作模式使用经验证的本机引导代码来执行安全引导辅助。

这种系统可被配置为响应于所检测到的模式设置而根据第一操作模式、第二操作模式或第三操作模式操作。在一些实施方案中,系统的模式可至少部分地基于上下文,并且在考虑到特定上下文的情况下,更具体地基于因安全漏洞带来的潜在损害。换句话讲,更多受限的操作模式可用于高风险上下文,并且更少受限的操作模式可用于低风险上下文。

作为示例,医疗设备或自主车辆控制器中使用的引导辅助电路可被配置为如果固件正在被授权的服务位置处或使用机械车间或医疗提供者的办公室处的被授权的服务装备进行升级,则使用可信摘要来执行安全引导辅助。这种引导辅助电路可被配置为使用低级引导代码来执行安全引导辅助,并且如果固件正在除被授权的服务位置之外的位置处或使用未被授权的服务装备(例如使用不安全的个人计算机)进行升级,则需要调试功能电路的认证。

本公开的一个或多个实施方案涉及所设想的“安全”实现,其中计算系统(诸如图1的计算系统100)包括例如使用模块或系统级封装(SiP)布置来堆叠在主机设备上的安全设备。当被堆叠时,可信设备和主机设备可相对于彼此布置,使得主机设备的软件调试引脚和/或硬件复位引脚被隐藏,即可由安全设备访问但不可从模块的外部访问。

本领域的普通技术人员将认识到本公开中所述的各种实施方案的许多优点和益处。例如,一个或多个益处和优点可包括:MCU的引导代码和应用程序代码之间的强隔离;除了引导ROM自身中本来可用的之外没有软件攻击方法;在MCU能力的宽泛范围内的模块/SiP解决方案的加速可用性,而不需要各自的新掩模组和相关联的开发时间;利用现有安全引导能力提升MCU的安全引导能力,而不需要新掩模组和相关联的开发时间;添加在已经具有引导ROM的MCU处及时正确地验证非对称签名的能力。

本公开中任何将某物表征为“典型”、“常规”或“已知”不一定意味着它在现有技术中公开或在现有技术中理解所讨论的方面。其也不一定意味着在相关领域它是众所周知的、易于理解的或常规使用的。

虽然本文关于某些图示实施方案描述了本发明,但本领域的普通技术人员将认识到并理解本发明不受此限制。相反,在不脱离下文所要求保护的本发明的范围及其法律等同形式的情况下,可对图示实施方案和所述实施方案进行许多添加、删除和修改。此外,来自一个实施方案的特性可与另一个实施方案的特性组合,同时仍被包括在发明人所设想的本发明的范围内。

本公开的附加非限制性实施方案包括:

实施方案1:一种辅助设备执行安全引导过程的方法,该方法包括:将设备布置和保持于受限操作模式;使用用于控制该设备的中央处理单元(CPU)的接口来将程序发送到该设备;使用用于控制该CPU的该接口来启动该设备处的该程序的执行;以及响应于该程序的所启动的执行而尝试验证存储在该设备处的固件的安全性。

实施方案2:根据实施方案1所述的方法,其中将该程序发送到该设备包括将低级引导代码发送到该设备。

实施方案3:根据实施方案1和2所述的方法,其中将该设备布置和保持于该受限操作模式包括响应于检测到已在该设备处接收到新固件而禁用该设备处的代码的执行的独立启动。

实施方案4:根据实施方案1至3所述的方法,其中响应于该程序的所启动的执行而尝试验证存储在该设备处的该固件的安全性包括:对存储在该设备的程序存储器处的操作代码执行散列函数以获得安全数据;将所获得的安全数据与可信安全数据进行比较;以及响应于所获得的安全数据与该可信安全数据的该比较而尝试验证该操作代码是安全的。

实施方案5:根据实施方案1至4所述的方法,该方法还包括响应于检测到所获得的安全数据匹配该可信安全数据而验证该操作代码是安全的。

实施方案6:根据实施方案1至5所述的方法,该方法还包括响应于检测到所获得的安全数据不匹配该可信安全数据而确定该操作代码是不安全的。

实施方案7:根据实施方案1至6所述的方法,该方法还包括将该设备保持于该受限操作模式直到该程序检测到安全操作代码安装在该设备处。

实施方案8:根据实施方案1至7所述的方法,该方法还包括重启该设备直到该程序检测到安全操作代码安装在该设备处。

实施方案9:根据实施方案1至8所述的方法,其中使用用于控制该CPU的该接口来启动该设备处的该程序的执行包括:指示该设备在该设备退出该受限操作模式时执行该程序;以及使该设备从该受限操作模式释放。

实施方案10:根据实施方案1至9所述的方法,该方法还包括:响应于验证该固件是安全的而接收第一验证结果;以及响应于确定该固件是不安全的而接收第二验证结果。

实施方案11:根据实施方案1至10所述的方法,该方法还包括响应于接收到该第一验证结果:指示该设备在退出该受限操作模式时执行该固件;以及使该设备从该受限操作模式释放。

实施方案12:根据实施方案1至11所述的方法,该方法还包括响应于接收到该第二验证结果:将该设备保持于该受限操作模式直到检测到存储在该设备处的该固件的安全性被验证。

实施方案13:一种安全引导辅助系统,该安全引导辅助系统包括:第一设备,该第一设备包括:程序存储器,该程序存储器被配置为存储该第一设备的固件;处理器;和用于访问和控制该处理器的接口;操作性地耦接到该第一设备的第二设备,该第二设备包括:其上存储有程序的永久性存储器,该程序在由该第一设备的该处理器执行时被配置为使该处理器能够尝试验证存储在该第一设备的该程序存储器处的固件的安全性;和可信序列电路,该可信序列电路被配置为使用该接口来将该程序发送到该第一设备并且启动该第一设备处的该程序的执行,并且其中该可信序列电路被配置为将该第一设备保持于受限操作模式,同时尝试验证该第一设备的所存储的固件的安全性。

实施方案14:根据实施方案13所述的系统,其中该可信序列电路被配置为响应于检测到新固件存储在该第一设备处而断言该第一设备的硬件输入处的信号,并且进一步其中该第一设备被配置为在该硬件输入被断言的同时在该受限操作模式下操作。

实施方案15:根据实施方案13和14所述的系统,其中该可信序列电路被配置为控制该第一设备的该接口以防止该第一设备的至少一些功能。

实施方案16:根据实施方案13至15所述的系统,其中该第一设备的该处理器被配置为响应于该第一设备处于该受限操作模式而响应于该接口所提供的控制信号来执行。

实施方案17:根据实施方案13至16所述的系统,其中该第二设备的该可信序列电路被配置为响应于将该程序存储在该第一设备处:使用该接口来指示该第一设备在退出该受限操作模式时启动该程序的执行;以及使该第一设备从该受限操作模式释放。

实施方案18:根据实施方案13至17所述的系统,其中该固件包括操作代码,并且该程序在由该处理器执行时被配置为使该处理器能够:对存储在该第一设备的该程序存储器中的该操作代码进行散列操作以获得第一摘要;将该第一摘要与第二摘要进行比较;以及响应于该第一摘要和该第二摘要的该比较而尝试验证该操作代码是安全的。

实施方案19:根据实施方案13至18所述的系统,其中该程序在由该处理器执行时被配置为:响应于检测到该第一摘要匹配该第二摘要而确定该操作代码是安全的;以及响应于检测到该第一摘要不匹配该第二摘要而确定该操作代码是不安全的。

实施方案20:根据实施方案13至19所述的系统,其中该第二设备的该可信序列电路被配置为响应于将该程序安装在该第二设备处,使用该接口来指示该第一设备启动该程序的执行。

实施方案21:根据实施方案13至20所述的系统,其中该程序在由该处理器执行时被配置为:响应于验证该操作代码是安全的而提供第一验证结果;以及响应于确定该操作代码是不安全的而提供第二验证结果。

实施方案22:根据实施方案13至21所述的系统,其中该固件包括操作代码,并且该第二设备的该可信序列电路被配置为响应于接收到该第一验证结果:使用该接口来指示该第一设备在退出该受限操作模式时启动该操作代码的执行;以及使该第一设备从该受限操作模式释放。

实施方案23:根据实施方案13至22所述的系统,其中该第二设备的该可信序列电路被配置为响应于接收到该第二验证结果,将该第一设备保持于该受限操作模式直到检测到安全固件安装在该第一设备处。

实施方案24:根据实施方案13至23所述的系统,其中该固件包括以下一者或多者的代码:集成嵌入式系统、操作系统、操作系统加载器和单独安装的应用程序。

实施方案25:一种辅助设备执行安全引导过程的方法,该方法包括:将设备布置和保持于受限操作模式;使用用于控制该设备的中央处理单元(CPU)的接口来将存储在该设备的程序存储器处的代码复制到另一个设备;以及尝试验证所复制的代码是安全的。

实施方案26:根据实施方案25所述的方法,其中将该设备布置和保持于该受限操作模式包括禁用该设备处的代码的执行的独立启动。

实施方案27:根据实施方案25和26所述的方法,其中所述尝试验证所复制的代码是安全的包括:对所复制的代码执行散列函数以获得第一安全数据;以及响应于该第一安全数据而尝试验证所复制的代码是安全的。

实施方案28:根据实施方案25至27所述的方法,其中所述响应于该第一安全数据而尝试验证所复制的代码是安全的包括:将该第一安全数据与存储在另一设备处的第二安全数据进行比较;以及响应于该比较而尝试验证所复制的代码。

实施方案29:根据实施方案25至28所述的方法,其中响应于该第一安全数据而尝试验证所复制的代码是安全的包括尝试通过对该第一安全数据执行签名验证来验证所复制的代码。

实施方案30:根据实施方案25至29所述的方法,该方法还包括:验证所复制的代码是安全的;指示该设备在退出该受限操作模式时执行与所复制的代码相对应的代码;以及使该设备从该受限操作模式释放。

实施方案31:根据实施方案25至30所述的方法,该方法还包括:作为响应,确定所复制的代码是不安全的;以及将该设备保持于该受限操作模式直到验证安装在该设备处的代码是安全的。

实施方案32:根据实施方案25至31所述的方法,其中复制存储在该设备的该程序存储器处的代码包括复制存储在该设备的该程序存储器处的引导代码。

实施方案33:根据实施方案25至32所述的方法,其中复制存储在该设备的该程序存储器处的代码包括:复制存储在该设备的该程序存储器处的操作代码的一部分,其中该设备被配置为在该设备的引导时或在该设备的复位条件时执行该操作代码的所复制的部分。

实施方案34:一种安全引导辅助系统,该安全引导辅助系统包括:第一设备,该第一设备包括:程序存储器,该程序存储器被配置为存储该第一设备的固件的代码;处理器;和用于访问和控制该处理器的接口;操作性地耦接到该第一设备的第二设备,该第二设备包括:永久性存储器,其上存储有用于验证存储在该第一设备处的该代码的安全性的安全信息;和可信序列电路,该可信序列电路被配置为使用该调试功能电路来从该第一设备复制该代码并且使用该安全信息来尝试验证所复制的代码是安全的,其中该可信序列电路被配置为将该第一设备保持于受限操作模式,同时尝试验证所复制的代码是安全的。

实施方案35:根据实施方案34所述的系统,其中该可信序列电路被配置为响应于检测到新固件安装在该第一设备处而断言该第一设备的硬件输入,并且进一步其中该第一设备被配置为在该硬件输入被断言的同时在该受限操作模式下操作。

实施方案36:根据实施方案34和35所述的系统,其中该可信序列电路被配置为控制该第一设备的该接口以防止该第一设备的至少一些功能。

实施方案37:根据实施方案34至36所述的系统,其中该第一设备的该处理器被配置为响应于该第一设备处于该受限操作模式而响应于该接口所提供的控制信号来执行。

实施方案38:根据实施方案34至37所述的系统,其中该安全信息包括可信安全数据,并且该可信序列电路被配置为:对所复制的代码执行散列函数以获得第一安全数据;以及响应于所获得的安全数据和该可信安全数据而尝试验证所复制的代码是安全的。

实施方案39:根据实施方案34至38所述的系统,其中该安全信息包括可信代码,并且该第二设备的该可信序列电路被配置为:对所复制的代码执行散列函数以获得第一安全数据;对该可信代码执行该散列函数以获得第二安全数据;将该第一安全数据与该第二安全数据进行比较;以及响应于将该第一安全数据与该第二安全数据进行比较而尝试验证所复制的代码是安全的。

实施方案40:根据实施方案34至39所述的系统,其中该第二设备的该可信序列电路被配置为响应于验证所复制的代码是安全的:使用该接口来指示该第一设备在退出该受限操作模式时执行与所复制的代码相对应的代码;以及使该第一设备从该受限操作模式释放。

实施方案41:根据实施方案34至40所述的系统,其中该第二设备的该可信序列电路被配置为响应于确定所复制的代码是不安全的,将该第一设备保持于该受限操作模式直到检测到安全代码安装在该第一设备处。

实施方案42:根据实施方案34至41所述的系统,其中该安全信息包括可信代码,并且该第二设备的该可信序列电路被配置为将所复制的代码与该可信代码进行比较并且响应于该比较而尝试验证所复制的代码是安全的。

实施方案43:一种辅助设备执行安全引导过程的方法,该方法包括:将设备布置和保持于受限操作模式;使用用于控制该设备的中央处理单元(CPU)的接口来启动存储在该设备处的本机引导代码的执行;响应于启动该本机引导代码的执行而使用用于控制该设备的该CPU的该接口来接收安全数据,其中所接收的安全数据表示该设备的固件;以及响应于所接收的安全数据和存储在该设备外部的可信安全数据而尝试验证该设备的该固件是安全的。

实施方案44:根据实施方案43所述的方法,该方法还包括:对该设备的该固件的代码执行散列函数以获得该安全数据;以及将所获得的安全数据发送到另一个设备以便验证该设备的该固件是安全的。

实施方案45:根据实施方案43和44所述的方法,该方法还包括:响应于检测到所接收的安全数据匹配该可信安全数据而验证该设备的该固件是安全的;指示该设备在退出该受限操作模式时执行该本机引导代码;以及使该设备从该受限操作模式释放。

实施方案46:根据实施方案43至45所述的方法,该方法还包括:响应于检测到所接收的安全数据不匹配该可信安全数据而确定该固件是不安全的;以及将该设备保持于该受限操作模式直到检测到安全固件安装在该设备处。

实施方案47:一种安全引导辅助系统,该安全引导辅助系统包括:第一设备,该第一设备包括:程序存储器,该程序存储器被配置为存储该第一设备的代码;处理器;和用于访问和控制该处理器的接口;操作性地耦接到该第一设备的第二设备,该第二设备包括:永久性存储器,其上存储有用于验证存储在该第一设备处的代码的安全性的可信安全数据;和可信序列电路,该可信序列电路被配置为:使用该接口来启动存储在该第一设备处的本机引导代码的执行;响应于启动该本机引导代码的执行而使用用于控制该设备的该CPU的该接口来接收安全数据,其中所接收的安全数据表示该第一设备的固件;以及使用所接收的安全数据和该可信安全数据来尝试验证该设备的该固件是安全的,其中该可信序列电路被配置为将该第一设备保持于受限操作模式,同时尝试验证该固件是安全的。

实施方案48:根据实施方案47所述的系统,其中该可信序列电路被配置为响应于检测到新固件安装在该第一设备处而断言该第一设备的硬件输入,并且进一步其中该第一设备被配置为在该硬件输入被断言的同时在该受限操作模式下操作。

实施方案49:根据实施方案47和48所述的系统,其中该可信序列电路被配置为控制该第一设备的该接口以防止该第一设备的至少一些功能。

实施方案50:根据实施方案47至49所述的系统,其中该处理器被配置为响应于该第一设备处于该受限操作模式而响应于该接口所提供的控制信号来执行。

实施方案51:根据实施方案47至50所述的系统,其中该本机引导代码在由该处理器执行时被配置为:对该第一设备的该固件的代码执行散列函数以获得该安全数据;以及将所获得的安全数据发送到该第二设备以便验证该第一设备的该固件是安全的。

实施方案52:根据实施方案47至51所述的系统,其中该可信序列电路被配置为响应于验证该第一设备的该固件是安全的:指示该第一设备在退出该受限操作模式时执行该第一设备的操作代码;以及使该第一设备从该受限操作模式释放。

实施方案53:根据实施方案47至52所述的系统,其中该可信序列电路被配置为响应于确定该第一设备的该固件是不安全的,将该第一设备保持于该受限操作模式直到检测到安全固件安装在该第一设备处。

相关技术
  • 设备的安全引导辅助及相关系统、方法和设备
  • 用从储存设备加载的操作系统代码安全地引导主机设备的主机设备和方法
技术分类

06120112979184