CN109564606B - 用于将安全协处理器用于固件保护的方法和装置 - Google Patents
用于将安全协处理器用于固件保护的方法和装置 Download PDFInfo
- Publication number
- CN109564606B CN109564606B CN201780049496.3A CN201780049496A CN109564606B CN 109564606 B CN109564606 B CN 109564606B CN 201780049496 A CN201780049496 A CN 201780049496A CN 109564606 B CN109564606 B CN 109564606B
- Authority
- CN
- China
- Prior art keywords
- firmware
- module
- host
- security
- security module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
数据处理系统(DPS)提供用于固件的保护。DPS包括(a)包括管理引擎的主机模块和(b)与主机模块通信的安全模块。安全模块包括安全协处理器和安全模块的秘密标识符。DPS还包括至少一个机器可访问介质,其包括主机固件和安全固件。在由管理引擎执行时,主机固件使得管理引擎能够基于安全模块的秘密标识符来确定安全模块是否与主机模块通信。在由安全协处理器执行时,安全固件使得安全协处理器能够(a)验证主机固件的完整性并且(b)响应于主机固件已失去完整性的确定而阻止主机模块用主机固件进行引导。描述并要求保护其他实施例。
Description
相关美国专利申请的交叉引用
本申请要求享有于2016年9月23日提交的题为“Methods and Apparatus to usea Security Coprocessor for Firmware Protection”的序列号为15/273,997的美国实用专利申请的优先权。
技术领域
概括而言,本公开内容涉及用于数据处理系统的安全性,并且具体而言,涉及将安全协处理器用于固件保护的方法和装置。
背景技术
嵌入式系统是数据处理系统,其驻留在较大的机械或电气实体内,并且包括分别用于执行一个或多个专用功能的一个或多个不同模块。另外,这些专用功能中的一个或多个功能可能需要满足实时计算(RTC)约束。例如,功能可能需要在毫秒或微秒的量级内响应。
许多不同种类的实体可以包括嵌入式系统。例如,嵌入式系统可以用在建筑物、机器人、载具等中。这样的载具可以包括但不限于传统的汽车和卡车、无人(“自主”)汽车和卡车、有人驾驶飞机、无人驾驶飞机(“无人机”)、航天器等。例如,载具可以包括嵌入式系统,其包括中央主机模块和各种辅助模块,例如引擎控制单元(ECU)、轮胎压力监测传感器(TPMS)等。另外,为了实现高级驾驶员辅助系统(ADAS),载具的嵌入式系统可以包括诸如照相机、视觉协处理器、机器学习模块等的模块。出于本公开内容的目的,可以将具有嵌入式系统的实体称为“智能实体”。
通常,嵌入式系统内的模块被预期或要求执行一个或多个特定功能。例如,用于智能载具的嵌入式系统可以包括被预期或要求控制引擎并向主机模块报告各种引擎性能度量的ECU。此外,在嵌入式系统被打开或激活时,系统内的一个或多个模块可能需要用软件来初始化,所述软件使得这些模块能够执行他们被要求的功能。换言之,模块可以使用软件来执行一个或多个功能。出于本公开内容的目的,模块使用的软件可以被称为“固件”。并且每个不同模块可以使用不同的固件。此外,模块可以仅在初始化过程期间使用其固件的一些部分,并且模块可以在嵌入式系统内执行模块的被预期或要求的功能期间在初始化之后使用其固件的其他部分。用于初始化的固件部分可以被称为“引导代码”。
此外,在一些情况下,可以期望的是改变或更新用于嵌入式系统内的一个或多个模块的固件。然而,嵌入式系统内的一个或多个模块的故障可能造成危险或灾难性的结果。因此,重要的是保护嵌入式系统免受未经授权的更新以及其他类型的篡改,例如一个或多个模块的未经授权的移除或替换。换言之,重要的是提供针对基于网络的攻击和针对物理攻击的保护。
本公开内容描述了用于提供嵌入式系统中的固件保护的方法和装置。具体而言,本公开内容描述了使用安全协处理器来提供固件保护的一个或多个嵌入式系统。
附图说明
图1是具有固件保护的嵌入式系统的示例性实施例的框图。
图2A和图2B呈现了用于保护嵌入式系统中的固件的示例性过程的流程图,其中,至少一些操作要由安全模块执行。
图3呈现了用于保护嵌入式系统中的固件的示例性过程的流程图,其中,至少一些操作要由主机模块执行。
具体实施方式
嵌入式系统面临的安全风险之一是驻留在系统中或流动通过系统的代码和其他数据可能被篡改的风险。例如,如果攻击者要修改嵌入式系统的一个或多个组件的固件,则攻击者可能有害地修改系统的执行流程。然而,可能需要或期望将授权的更新应用于一个或多个组件的固件。因此,重要的是在允许授权的更新的同时阻止未经授权的固件更新。
嵌入式系统面临的另一安全风险是系统的一个或多个组件的设计可能被有害地修改(例如,通过用受损组件替换原始组件)的风险。另一风险是数据可能被实时窃取。本文描述的实施例可以解决这些风险中的一个、一些或所有风险。
如以下更详细地描述的,根据本公开内容,嵌入式系统可以包括主机模块、安全模块和一个或多个辅助模块。安全模块可以强制实施安全策略并监测由主机模块使用的代码和其他数据的完整性。例如,安全模块可以在用于嵌入式系统的初始化过程中具有优先权,并且安全模块可以在允许引导过程完成之前验证用于安全模块的固件和用于主机模块的固件的完整性。如果完整性检查失败,则安全模块可以通过用后备副本(back copy)替换相关固件然后重置相关模块来中止引导。安全模块还可以监测辅助模块中的一个、一些或所有辅助模块上的固件和其他数据的完整性。
安全模块可以在引导序列期间接收事件,并且安全模块可以基于那些事件来确定是否存在需要纠正的安全性故障或安全故障。另外,安全模块20可以在引导之后的任何阶段处检查固件的完整性,例如响应于内部生成的心跳事件、响应于某些外部和可信的触发器、或者响应于来自其他源的请求。
安全模块还可以管理电力调节器或电力单元,在已经检测到入侵或一些其他不期望的行为时关闭一个或多个模块的系统电力。如果安全模块禁用另一模块(例如,通过终止该另一模块的电力),则可以将被禁用的模块称为已从网络中移除。而且,出于本公开内容的目的,像“模块”、“设备”和“组件”之类的术语可以可互换地使用。
另外,安全模块可以紧密耦合到主机模块,如以下更详细地描述的。
图1是具有固件保护的嵌入式系统10的示例性实施例的框图。在图1的实施例中,嵌入式系统10是数据处理系统,其包括主机模块40、安全模块20、嵌入式存储器30、电力单元60和各种辅助设备。其他实施例还可以包括不同数量和类型的模块,例如多个电力单元、附加的或更少的辅助设备等。
在图1的实施例中,辅助设备包括外部设备90和加速器94。外部设备可以包括但不限于相机、雷达单元、激光雷达单元、轮胎压力监测传感器、引擎控制单元(ECU)等。加速器可以包括但不限于视觉协处理器、机器学习协处理器等。辅助设备可以使用现场可编程门阵列(FPGA)、数字信号处理器(DSP)、专用集成电路(ASIC)和任何其他合适的技术来实现。
主机模块40、安全模块20和加速器94可以是单个集成电路内的不同设计块,或者是集成电路封装内的不同集成电路。主模块80表示这样的集成电路或集成电路封装。在其他实施例中,主机模块和安全模块可以驻留在不同的封装中。而且,在一个实施例中,主机模块被实现为片上系统(SoC)或系统级封装(SoP),并且安全模块被实现为FPGA。然而,在其他实施例中,可以使用其他技术来实现主机模块和安全模块。
如以下更详细地描述的,安全模块20包括安全协处理器22、静态随机存取存储器(SRAM)26和安全模块20的秘密标识符。图1描绘了在物理不可克隆功能单元(PUF)28内的作为安全模块标识符(SMID)29的秘密标识符。
如以下更详细地描述的,主机模块40包括主机处理器42、管理引擎44和主机模块40的秘密标识符49。图1描绘了作为PUF 48内的主机模块标识符(HMID)49的秘密标识符。管理引擎44可以被实现为融合安全和管理引擎(CSME)或任何其他合适的技术。
主模块80还包括用于使得模块能够与彼此通信的各种通信线路。在图1的实施例中,那些线路包括一组两条、三条或更多条冗余线路74,其由表决器54控制,所述表决器54阻止数据到达主机模块40,除非大多数冗余线路74同步携带相同的数据。在图1的实施例中,冗余线路74中的每条线路由单独的微处理器控制,并且表决器54监测那些线路中的所有线路以确保嵌入式系统10未被篡改。此外,如果表决器54检测到不匹配的数据,则表决器54可以使得相关模块中的一个或多个模块执行补救措施,例如运行自测例程以确定线路为什么不正常、执行重置等等。在其他实施例中,表决器可以驻留在不同的位置中。例如,表决器可以驻留在主机模块的管理引擎中,或者驻留在外部设备或加速器内的小的可信执行环境(TEE)内部。
嵌入式系统10还包括用于使得安全模块20和主机模块能够与外部设备90、电力单元60等通信的附加的通信线路。例如,通信线路92使得安全模块20和主机模块40能够与外部设备90通信,而通信线路96使得安全模块20和主机模块40能够与加速器94通信。而且,通信线路62使得安全模块20能够控制电力单元60将向哪些设备发送电力。因此,虚线64、66和68示出了安全模块20可以使得电力单元60分别终止主机模块40、加速器94和外部设备90的电力。另外地或替代地,模块可以无线通信。嵌入式系统10还可以被称为“嵌入式网络”。每个模块还可以包括一个或多个通信端口,其用于使得该模块能够与网络中的其他模块进行通信。
在嵌入式系统10上电或重置时,模块和设备中的一些或所有模块和设备可以执行初始化过程。例如,主机处理器42可以在主机固件52内执行引导代码,并且安全协处理器22可以在安全固件32内执行引导代码。然而,如以下更详细地描述的,在一个实施例中,安全模块20将主机模块40和一些或者所有其他设备保持在重置状态下,直到安全协处理器22完成其引导过程的部分或全部。替代地,安全模块20可以阻止一些或所有其他模块和设备从电力单元60接收电力,直到安全协处理器22完成其引导过程的部分或全部。
在图1的实施例中,主机固件52和安全固件32驻留在嵌入式存储器30中。然而,主机处理器42可以经由安全模块20获得主机固件52。例如,如以下更详细地描述的,在安全模块20允许主机模块40引导之前,安全模块20可以证实主机固件52。在安全模块20证实主机固件52之后,安全模块20可以允许主机模块40引导,然后主机模块40可以从对主机模块40而言看起来像闪速存储器的源(例如,嵌入式存储器30)中检索主机固件52。然而,安全模块20实际上可以充当该源。例如,安全模块20可以将经证实的主机固件52存储在SRAM 26中,并且安全模块20可以服务主机模块40指向嵌入式存储器的读取请求。因此,安全模块20可以充当用于主机模块40的虚拟闪速存储器。例如,安全模块20可以使用NVM 24来模拟用于主机模块40的安全闪存或串行外围接口(SPI)闪存。因此,在SRAM 26和SRAM 46中用虚线轮廓示出了主机固件52。
在替代实施例中,安全模块可以证实主机固件,然后在允许主机模块引导之前将主机固件复制到主机模块中的非易失性存储器(NVM)中。在另一替代实施例中,主模块可以包括与安全处理器和主处理器通信的双输入/输出(I/O)闪速存储器,并且主机固件可以驻留在该闪速存储器中。在安全模块证实主机固件之后,主机处理器可以从该闪速存储器获得经证实的主机固件。在其他实施例中,安全固件可以被存储在安全模块20的内部NVM中或外部一次性可编程(OTP)存储器中。
另外,在图1的实施例中,安全模块20包括NVM 24,并且主模块80的制造商已经在NVM 24中加载了安全策略和数据(SPD)25。SPD 25包括用于使得安全固件32能够验证安全固件32的完整性和主机固件52的完整性的数据。例如,SPD 25可以包括安全固件32的哈希、主机固件52的哈希、和HMID 49的副本。另外,SPD 25可以包括用于使得安全固件32能够验证辅助模块中的一个、一些或所有辅助模块的完整性的哈希值或其他数据。另外,NVM 24可以被实现为安全存储装置。并且在替代实施例中,安全模块20可以从NVM 24获得安全固件32。类似地,主机模块包括NVM 56,并且制造商可以用SPD 58来填充NVM 56。SPD可以包括例如SMID 29的副本。如以下指示的,主机处理器42可以随后使用SMID 29的该副本来确定经授权的安全模块是否仍连接到主机模块40。
在图1的实施例中,制造商已预先配置了安全模块20,其中,SMID 29由PUF 29产生。制造商还预先配置了主机模块40,其中,HMID 49由PUF 48生成的。在一个实施例中,SMID 29是存储在安全模块20中的唯一设备标识符,并且HMID 49是存储在主机模块40中的唯一设备标识符。PUF 29可以例如用安全模块20中的保险丝来实现,制造商使用所述保险丝来将给定的SMID烧制到安全模块20中。因此,SMID 29可以是不可改变的,但也不可被未授权的实体检测到。HMID 49可以以类似的方式来实现。
如以下更详细地描述的,安全模块20可以检查HMID 49以确保主机模块40尚未被禁用或用不同的硬件来替换,并且主机模块40可以检查SMID 29以确保安全模块20尚未被禁用或者用不同的硬件来替换。因此,SMID 29和HMID 49用于确保主机模块40和安全模块20之间的紧密耦合。
而且,在系统供应期间,安全模块20可以生成将用于在安全模块20与主机模块40之间建立安全通信的唯一主密钥。替代地,可以通过经过经认证的且安全的工具来生成这样的主密钥并将其插入或存储在安全模块20和主机模块40中。
在图1的实施例中,制造商还已经预先配置了具有安全固件32和主机固件52以及固件34的备份副本的嵌入式存储器30。那些备份副本还可以包括主机固件52和安全固件32的副本,以及用于一个、一些或所有辅助模块的固件的副本,所述辅助模块例如外部设备90和加速器94。此外,备份副本可以以加密形式存储,以使得只有安全模块20可以解密它们。
另外,在任何固件被更新到新版本时,安全协处理器22可以将旧版本的副本保存为备份副本34,并且安全协处理器22可以在SPD 25中保存旧版本的哈希值。这样的哈希值可以被称为备份哈希值。因此,安全模块20维护安全存储库和固件的版本控制。
图2A和图2B呈现了用于在嵌入式系统10中提供固件保护的示例性过程的流程图,其中,至少一些操作要由安全模块20执行。图2A的过程可以以嵌入式系统10被启动或加电开始。
如框110处示出的,在安全模块20首先接收电力时,安全协处理器22可以将安全固件32加载到SRAM 26中,如框110处示出的。另外,如框112处示出的,安全协处理器22可以将主处理器42和辅助模块中的一个、一些或所有辅助模块保持在重置状态下,如框112处示出的。然后,安全协处理器22可以检查安全固件32的完整性或有效性,如框120处示出的。例如,安全协处理器22可以对安全固件进行哈希运算,然后将结果与SPD 25中的对应数据进行比较。如果完整性检查失败,则安全协处理器22可以确定该失败是否应当被认为是致命错误,如框122处示出的。例如,如果安全协处理器22已经尝试引导至备份安全固件,并且该尝试不成功(例如,由于另一完整性检查失败),则安全协处理器22可以引发致命错误。如果致命错误被检测到或被引发,则安全协处理器22可以生成适当的错误消息(例如,通过使得警告灯照明),然后安全协处理器22可以终止引导过程,如框124和126处示出的。
然而,如果致命错误未被检测到或引发,则安全协处理器22可以用来自嵌入式存储器30的安全固件的备份副本34替换安全固件32,如框130处示出的。然后,安全协处理器22可以重置嵌入式系统10,如框132处示出的。因此,过程可以经由连接器A返回到框110,其中,然后安全协处理器22将其他模块保持在重置状态下,将安全固件(的备份副本)加载到SRAM 26中,并验证该固件,如以上描述的。安全协处理器22可以使用适当的备份哈希值来进行该确定。
如果安全固件通过完整性检查,则安全协处理器22可以检查主机固件52的完整性或有效性,如框140处示出的。如果完整性检查通过,则过程然后可以穿过连接器B到图2B。然而,如果主机固件52未通过完整性检查,则安全协处理器22可以确定该故障是否应当被认为是致命错误,如框142处示出的。例如,如果安全协处理器22已经用备份主机固件替换了主机固件52并且该备份固件未通过完整性检查,则安全协处理器22可以引发致命错误。如果致命错误被检测到或被引发,则安全协处理器22可以生成适当的错误消息(例如,通过使得警告灯照明),然后安全协处理器22可以终止引导过程,如框124和126处示出的。
然而,如果安全协处理器22确定完整性故障不是致命错误,则安全协处理器22可以用来自嵌入式存储器30的主机固件的备份副本34替换主机固件52,如框144处示出的。然后,安全协处理器22可以重置嵌入式系统10,如框146处示出的。因此,过程可以经由连接器A返回到框110,其中,然后安全协处理器22执行以上描述的相关操作并最终在框140处确定主机固件的备份副本是否有效。安全协处理器22可以使用适当的备份哈希值来进行该确定。
如以上指示的,如果完整性检查通过,则过程然后可以穿过连接器B到图2B。如框150处示出的,安全协处理器22然后可以清除用于主机模块40和用于辅助模块的重置信号。
如框152处示出的,安全协处理器22然后可以将包装的密钥复制到主机模块40。主机模块40可以随后将那些密钥用于会话管理并加密或解密附加的应用代码。如框154处示出的,安全协处理器22然后可以从主机模块40获得HMID 49。对HMID 49的请求可以被称为挑战。响应于该挑战,主机模块40可以使用来自安全模块20的密钥之一(或基于那些密钥之一的密钥)来在与安全模块20共享HMID 49之前加密HMID 49。如框160处示出的,安全性协处理器22然后可以确定HMID 49是否有效(在首先解密HMID 49之后,如果必要的话)。例如,安全模块20可以将HMID 49与安全地存储在SPD 25中的HIMD的副本进行比较。如果HMID 49无效(或者如果安全模块20无法从主机模块40获得HMID),则安全模块20可以生成错误消息并终止引导过程,如框162和164处示出的。另外地或替代地,安全模块20可以通过执行以下操作中的一个或多个操作来对主机模块40未与安全模块20通信的确定进行响应:使得主机模块20重置;使得主机模块20被从网络中移除;使得诊断被在主机模块20上执行;使得诊断被在安全模块40上执行;以及使得主机模块20被禁用。
如果HMID 49有效,则安全模块20可以检查用于辅助模块中的一个、一些或所有辅助模块的固件的完整性。例如,如框170和172处示出的,安全模块20可以循环通过检查用于每个辅助模块的固件以确定固件是否有效(例如,基于固件的预定的哈希值)的过程。如果该固件中的任何固件无效,则安全模块20可以确定致命错误是否应当被引发,如框180处示出的。例如,如果安全协处理器22已经用备份主机固件替换了辅助模块中的固件,并且该备份固件未通过完整性检查,安全协处理器22可以引发致命错误。如果致命错误被检测到或被引发,则安全协处理器22可以生成适当的错误消息,然后安全协处理器22可以终止引导过程,如框162和164处示出的。
如果错误不是致命的,则安全协处理器22可以用备份固件替换辅助模块中的固件,如框182处示出的。然后,过程可以返回到框172,其中,安全协处理器22检查备份固件,如以上指示的。
再次参考框170,一旦用于所有辅助模块的固件已被证实,由安全协处理器22管理的初始化过程就可以结束。然而,如以下指示的,主机模块40还可以执行初始化过程。辅助模块也可以完成初始化过程。
另外,如以上指示的,安全模块20可以在引导之后的任何阶段处检查固件映像中的一个、一些或所有固件映像的完整性,例如响应于内部生成的心跳事件等。
在一些实施例中,一个或多个辅助模块可能需要在嵌入式网络上非常快速地引导。例如,汽车或飞机中的一些微控制器单元(MCU)和一些传感器可能需要快速引导。因此,安全模块可以对那些辅助模块执行延迟的完整性检查。换言之,安全模块可以通过不将那些模块保持在重置状态下而是在检查它们固件的完整性之前允许它们引导来允许它们独立引导。然而,安全模块可以配置嵌入式系统以将这些模块置于不可信状态。例如,在模块处于不可信任状态下时,其可以以只读模式操作。换言之,在完整性检查成功完成之前,模块将只被允许对网络进行读取模式访问,以防止该模块感染其他模块。然而,一旦安全模块已完成引导,它就可以读取来自独立引导的辅助模块的固件,然后安全模块可以对该固件运行完整性检查。例如,安全模块可以计算哈希并将结果与哈希或签名进行比较。如果完整性良好,则安全模块可以将辅助模块切换成可信状态。例如,安全模块可以使得这些模块能够读取和写入。然而,如果这样的辅助模块的完整性不好,则安全模块可以用备份版本替换该辅助模块的固件并重置该辅助模块。
图3呈现了用于保护嵌入式系统10中的固件的示例性过程的流程图,其中,至少一些操作要由主机模块40执行。该过程可以在安全模块20释放用于主机模块40的重置信号时开始。如框210处示出的,主机处理器42然后可以加载主机固件52。如框212处示出的,主机处理器42然后可以执行主机固件52,其可以从安全协处理器22获得SMID 29。来自主机处理器42的对SMID 29的请求可以被称为挑战。响应于该挑战,安全模块20可以在与主机模块40共享SMID 29之前使用共享密钥之一(或基于那些密钥之一的密钥)来加密SMID 29。
如框220处示出的,主处理器42然后可以确定SMID 29是否有效。例如,主机处理器42可以将其从安全模块20接收的SIMD与先前作为SPD 58的部分存储在NVM 56中的经授权的安全模块的SIMD进行比较。如果SMID 29无效,则主机处理器42可以生成错误消息并终止引导过程,如框222和224处示出的。因此,SMID 29提供从主机模块40到安全模块20的反向耦合。如以下指示的,安全模块20可以使用管理引擎44来确保如果安全模块20被分离或受到攻击,则主机模块40在没有有效安全模块20的情况下将不工作。
然而,如果SMID 29有效,则主机处理器42然后可以对安全固件32执行完整性检查,如框230处示出的。因此,安全模块20可以执行安全模块20的反向完整性检查。如果安全固件32未通过完整性检查,则主机处理器42可以生成错误消息并终止引导过程,如框222和224处示出的。然而,如果安全固件32通过完整性检查,则安全模块20可以完成其引导过程并继续以或多或少的传统方式进行操作。
而且,在其他实施例中,图3的操作中的一个、一些或所有操作可以由管理引擎44而不是主处理器42执行。管理引擎44可以包括可信微处理器,并且如以上指示的,管理引擎44可以实现例如CSME。
因此,主机模块40中的管理引擎44可以紧密耦合到安全模块20,以确保如果攻击者将安全模块20和主机模块40分开,则主机模块40在没有安全模块20的情况下将不工作。如以上指示的,诸如PUF之类的技术是用于强制实施这样的紧密耦合的选择。
安全模块20还可以针对嵌入式系统10中的模块中的一些或所有模块管理固件更新。例如,安全模块20可以接收用于主机模块40(或任何其他模块)的固件的无线更新,并且然后安全模块20可以认证该新固件版本以确保它来自可信源等。安全模块20然后可以将新版本存储在嵌入式存储器30(或任何其他合适的位置)中,并且安全模块20可以将新版本的测量结果存储在SPD 25中。随后,在相关模块的下一重置期间,安全模块20可以将新固件复制到模块,以替换旧版本。因此,安全模块20在主机模块40、加速器94和外部设备90正在操作的同时提供后台更新,并且安全模块20可以在由安全模块20控制的设备或模块中的任何设备或模块的重置期间推送经认证的更新。替代地,安全模块20可以基于相关的安全或安全性策略来决定动态地重置从设备(slave device),而不是等待下一引导周期。汽车应用、航空应用和其他应用可能需要后台更新或动态更新。以上方法甚至可以用于更新安全固件32,从而改变安全模块20的安全状态。例如,安全模块20可以将更新应用于安全固件32,所述更新改变由安全模块20强制实施的安全策略中的一个或多个安全策略。
安全模块20还可以保卫嵌入式系统10免受程序错误的影响。例如,如果新固件版本使得主机模块40(或任何其他模块)锁定或停止,则安全模块20可以通过用先前版本替换新固件版本来响应。
在一个实施例中,安全模块和主机模块使用一个或多个反重放机制,包括但不限于单调计数器和新鲜值(nonce)。此外,如果安全模块检测到信任或安全的违反,则安全模块可以关闭辅助模块或主机模块。
在一个实施例中,主模块包括安全NVM,并且主模块使用该安全NVM来存储用于嵌入式系统中的模块中的一个、一些或所有模块的固件的黄金副本,以及安全设置、元数据以及任何其他合适的数据。如果嵌入式存储器发生故障,则嵌入式系统可以使用黄金副本中的一个或多个黄金副本来将模块中的一个或多个模块重置为出厂配置。并且为了保持安全,NVM可以是仅可通过手动访问或通过特殊的加密信号来访问的。
本教导可以用于在许多不同类型的嵌入式系统中获得优势。例如,用于载具的嵌入式系统可以包括低功率ECU和传感器(相机、雷达等),其不具有用于阻止攻击者操纵它们的固件的健壮的硬件保护。攻击者可能使用传感器(例如)作为集线器来攻击和传播恶意软件进一步到载具内部。然而,本教导可以允许安全模块在嵌入式系统完全引导之前检测任何恶意软件,并且根除恶意软件。
本公开内容解释了安全模块和主机模块可以检查固件的完整性。另外地或替代地,安全模块可以检查其他类型的数据,包括但不限于算法、自测代码、数据区域、训练集和图像。例如,汽车中的嵌入式系统可以保存图像,所述图像示出了在汽车关闭时汽车停放的位置。在汽车重新启动时,嵌入式系统10可以将当前环境与所保存的图像进行比较,以确保相机、视觉协处理器和其他模块正确地操作。
鉴于在本文中描述和示出的原理和示例性实施例,将认识到,可以在布置和细节上修改所示出的实施例而不脱离这样的原理。而且,即使本文使用诸如“实施例”、“一个实施例”、“另一实施例”等的表达,但这些短语通常意味着引用实施例可能性,并且不旨在将本发明限制于特定实施例。配置。如本文使用的,这些短语可以引用相同的实施例或不同的实施例,并且那些实施例可以组合成其他实施例。
本公开内容可以指代指令、功能、流程、数据结构、应用程序、软件、固件、微代码、配置设置和其他种类的数据。如以上描述的,在数据由机器或设备访问时,机器或设备可以通过执行任务、定义抽象数据类型或低级硬件上下文和/或执行其他操作来响应。例如,数据存储装置、随机存取存储器(RAM)和/或闪速存储器可以包括各种指令集,其在被执行时执行各种操作。这样的指令集通常可以被称为软件。另外,术语“程序”通常可以用于覆盖广泛的软件构造,包括应用、例程、模块、驱动程序、子程序、过程和其他类型的软件组件。可以使用任何合适的操作环境和编程语言(或操作环境和编程语言的组合)来实现本文描述的组件。
一些设备可以包括在一个或多个处理器上执行的软件。设备还可以包括存储装置和主存储器。软件和其他数据可以从存储装置复制到存储器中。然后,处理器可以从存储器中执行软件。
替代实施例还包括机器可访问介质,其编码用于执行本文描述的操作的指令或控制逻辑。这样的实施例还可以被称为程序产品。这样的机器可访问介质可以包括但不限于有形存储介质,例如磁盘、光盘、RAM、只读存储器(ROM)等,以及处理器、控制器和包括RAM、ROM和/或其他存储设施的其他组件。出于本公开内容的目的,术语“ROM”通常可以用于指代非易失性存储器设备,例如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速ROM、闪速存储器等。
还应当理解的是,本文描绘的硬件和软件组件表示合理自包含的功能元素,以使得每个组件可以基本上独立于其他组件地被设计、构造或更新。在替代实施例中,组件中的许多组件可以被实现为用于提供本文描述和示出的功能的硬件、软件或硬件和软件的组合。在一些实施例中,用于实现所描述的操作的控制逻辑中的一些或所有控制逻辑可以用硬件逻辑来实现(例如,作为集成电路芯片、可编程门阵列(PGA)、ASIC等的部分)。
在至少一个实施例中,用于所有相关组件的指令可以被存储在一个非暂时性机器可访问介质中。在至少一个其他实施例中,两个或更多个非暂时性机器可访问介质可以用于存储用于相关组件的指令。例如,用于一个组件的指令可以被存储在一个介质中,而用于另一组件的指令可以被存储在另一介质中。替代地,用于一个组件的指令的一部分可以被存储在一个介质中,并且用于该组件的指令的其余部分(以及用于其他组件的指令)可以被存储在一个或多个其他介质中。指令还可以用于分布式环境中,并且可以本地和/或远程存储以供单处理器或多处理器机器访问。类似地,以上在一个示例性实施例中被描述为驻留在特定设备上的应用和/或其他数据在其他实施例中可以驻留在一个或多个其他设备上。并且以上在一个示例性实施例中被描述为在一个特定设备上执行的计算操作在其他实施例中可以由一个或多个其他设备执行。
本教导可以用于在许多不同种类的数据处理系统中获得优势。示例性数据处理系统可以包括但不限于SoC、可穿戴设备、手持式设备、智能手机、电话、娱乐设备(例如,音频设备、视频设备、音频/视频设备,例如,电视和机顶盒)、载具处理系统、个人数字助理(PDA)、平板计算机、笔记本计算机、便携式计算机、个人计算机(PC)、工作站、服务器、客户端-服务器系统、分布式计算系统、超级计算机、高性能计算系统、计算集群、大型计算机、小型计算机和用于处理或发送信息的其他设备。因此,除非上下文另有明确指定或要求,否则对任何特定类型的数据处理系统(例如,PC)的引用也应当被理解为包含其他类型的数据处理系统。而且,除非另有明确指定,否则被描述为彼此耦合、彼此通信、彼此响应等的组件不需要彼此连续通信,并且不需要彼此直接耦合。同样地,在一个组件被描述为从另一组件接收数据或向另一组件发送数据时,该数据可以通过一个或多个中间组件被发送或接收(除非另有明确指定)。另外,数据处理系统的一些组件可以被实现为具有用于与总线通信的接口(例如,连接器)的适配器卡。替代地,可以使用诸如可编程或不可编程逻辑设备或阵列、ASIC、嵌入式计算机、智能卡等的组件来将设备或组件实现为嵌入式控制器。出于本公开内容的目的,术语“总线”包括可以由多于两个设备共享的通路,以及点对点通路。而且,出于本公开内容的目的,处理器还可以被称为处理单元、处理元素、中央处理单元(CPU)等。
而且,尽管已经关于以特定顺序执行的特定操作描述了一个或多个示例性过程,但是可以将许多修改应用于那些过程以得出本发明的许多替代实施例。例如,替代实施例可以包括:使用少于所有所公开的操作的过程、使用附加操作的过程、以及其中本文公开的个别操作被组合、细分、重新布置或以其他方式改变的过程。
鉴于可以从本文描述的示例性实施例容易地得出的各种各样有用的排列,该详细描述仅旨在是说明性的,而不应当被视为限制覆盖范围。
下面的示例涉及另外的实施例。
示例A1是一种具有用于固件的保护的数据处理系统。所述数据处理系统包括:(a)主机模块,其包括管理引擎;(b)安全模块,其与所述主机模块通信,其中,所述安全模块包括安全协处理器和所述安全模块的秘密标识符;以及(c)至少一个机器可访问介质,其响应于所述安全模块。所述机器可访问介质包括主机固件,其在由所述管理引擎被在所述主机模块上执行时,使得所述管理引擎能够基于所述安全模块的所述秘密标识符来确定所述安全模块是否与所述主机模块通信。所述机器可访问介质还包括安全固件,其在由所述安全协处理器在所述安全模块上执行时,使得所述安全协处理器能够(a)验证所述主机固件的完整性并且(b)响应于所述主机固件已失去完整性的确定而阻止所述主机模块用所述主机固件进行引导。
示例A2是根据示例A1的数据处理系统,其中,所述主机固件在被执行时使得所述管理引擎能够通过阻止所述主机模块成功引导来响应所述安全模块未与所述主机模块通信的确定。
示例A3是根据示例A1的数据处理系统,其中,所述主机固件在被执行时使得所述管理引擎能够(a)验证用于所述安全模块的所述安全固件的完整性并且(b)响应于所述安全固件已失去完整性的确定而阻止所述安全模块用所述安全固件进行引导。示例A3还可以包括示例A2的特征。
示例A4是根据示例A1的数据处理系统,其中,所述主机模块包括所述主机模块的秘密标识符并且所述安全模块包括具有批准的主机模块的秘密标识符的非易失性存储。所述安全固件在被执行时使得所述安全协处理器能够(a)从所述主机模块接收所述主机模块的所述秘密标识符并且(b)基于(i)来自所述主机模块的所述秘密标识符和(ii)来自所述安全模块中的所述非易失性存储的所述秘密标识符来确定所述批准的主机模块是否与所述安全模块通信。示例A4还可以包括示例A2和A3中的任何一个或多个示例的特征。
示例A5是根据示例A4的数据处理系统,其中,所述数据处理系统包括至少一条通信线路,其用于支持包括所述主机模块和所述安全模块的网络。所述安全固件在被执行时使得所述安全协处理器能够通过执行来自由以下操作组成的组的至少一个操作来响应所述批准的主机模块未与所述安全模块通信的确定:(a)使得所述主机模块重置;(b)使得所述主机模块被从所述网络中移除;(c)使得诊断被在所述主机模块上执行;(d)使得诊断被在所述安全模块上执行;(e)使得所述主机模块被禁用;以及(f)使得错误指示符被呈现。
示例A6是根据示例A1的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够(a)响应于所述主机固件已失去完整性的确定而自动用备份主机固件替换所述主机固件并且(b)在用所述备份主机固件替换所述主机固件后,使得所述主机模块用所述备份主机固件进行引导。示例A6还可以包括示例A2至A5中任何一个或多个示例的特征。
示例A7是根据示例A1的数据处理系统,还包括:至少一个外部设备,其与所述安全模块通信;以及设备固件,其用于所述外部设备。所述安全固件在被执行时使得所述安全模块能够检查用于所述外部设备的所述设备固件的完整性。示例A7还可以包括示例A2至A6中任何一个或多个示例的特征。
示例A8是根据示例A7的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够响应于用于所述外部设备的所述设备固件已失去完整性的确定而使得所述设备固件被用备份设备固件替换。
示例A9是根据示例A7的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够(a)允许所述外部设备在所述安全模块已验证所述设备固件的完整性之前进行引导以及(b)使得所述外部设备以只读模式执行,直到所述安全模块已验证所述设备固件的完整性。示例A9还可以包括示例A8的特征。
示例A10是根据示例A7的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够(a)接收用于所述外部设备的新设备固件;(b)认证所述新设备固件;以及(c)响应于成功认证所述新设备固件,使得用于所述外部设备的所述设备固件被用所述新设备固件替换。示例A10还可以包括示例A8至A9中任何一个或多个示例的特征。
示例A11是根据示例A1的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够(a)接收新安全固件;(b)认证所述新安全固件;以及(c)响应于成功认证所述新安全固件,用所述新安全固件替换所述安全固件。示例A11还可以包括示例A2至A10中的任何一个或多个示例的特征。
示例A12是根据示例A1的数据处理系统,所述至少一个机器可访问介质包括:所述安全模块中的非易失性存储器(NVM),以及所述安全模块外部的嵌入式存储器。而且,所述安全固件驻留在所述NVM中,并且所述主机固件驻留在所述嵌入式存储器中。示例A12还可以包括示例A2至A11中的任何一个或多个示例的特征。
示例A13是根据示例A1的数据处理系统,其中,所述主机模块包括片上系统(SoC)模块,并且所述安全协处理器包括现场可编程门阵列(FPGA)。示例A13还可以包括示例A2至A12中任何一个或多个示例的特征。
示例A14是根据示例A13的数据处理系统,还包括(a)单个集成电路,其包括所述主机模块和所述安全模块,以及(b)所述单个集成电路中的至少一条通信线路,其用于实现所述主机模块与所述安全模块之间的通信。
示例B1是用于保护嵌入式系统中的固件的装置。所述装置包括至少一个非暂时性机器可访问存储介质,其包括用于嵌入式系统的安全模块的安全固件和用于所述嵌入式系统的主机模块的主机固件。所述安全固件在被执行时使得所述安全模块能够(a)自动验证所述主机固件的完整性并且(b)响应于所述主机固件已失去完整性的确定而自动阻止所述主机模块用所述主机固件进行引导。所述主机固件在由所述主机模块执行时使得所述主机模块能够基于批准的安全模块的秘密标识符来自动确定所述批准的安全模块是否与所述主机模块通信。
示例B2是根据示例B1的装置,其中,所述主机固件在由所述主机模块执行时使得所述主机模块能够通过自动阻止所述主机模块成功引导来响应所述批准的安全模块未与所述主机模块通信的确定。
示例B3是根据示例B1的装置,其中,所述主机固件在由所述主机模块执行时使得所述主机模块能够(a)自动验证所述安全固件的完整性并且(b)响应于所述安全固件已失去完整性的确定而自动阻止所述安全模块用所述安全固件进行引导。示例B3还可以包括示例B2的特征。
示例B4是根据示例B1的装置,其中,所述安全固件在被执行时使得所述安全模块能够(a)从所述主机模块获得所述主机模块的秘密标识符,(b)从所述安全模块中的非易失性存储获得用于批准的主机模块的秘密标识符,并且(c)基于(i)来自所述主机模块的所述秘密标识符和(ii)来自所述安全模块中的所述非易失性存储的所述秘密标识符来确定所述批准的主机模块是否与所述安全模块通信。示例B4还可以包括示例B2至B3中任何一个或多个示例的特征。
示例B5是根据示例B1的装置,其中,所述安全固件在被执行时使得所述安全模块能够(a)响应于当前主机固件已失去完整性的确定而自动用备份主机固件替换所述主机固件并且(b)在用所述备份主机固件替换所述主机固件后,使得所述主机模块用所述备份主机固件进行引导。示例B5还可以包括示例B2至B4中任何一个或多个示例的特征。
示例B6是根据示例B1的装置,其中,所述安全固件在被执行时使得所述安全模块能够检查所述嵌入式系统中的用于外部设备的设备固件的完整性。示例B6还可以包括示例B2至B5中任何一个或多个示例的特征。
示例B7是根据示例B6的装置,其中,所述安全固件在被执行时使得所述安全模块能够响应于所述外部设备上的所述设备固件已失去完整性的确定而使得所述外部设备上的所述设备固件被用备份设备固件替换。
示例B8是根据示例B6的装置,其中,所述安全固件在被执行时使得所述安全模块能够(a)接收用于所述外部设备的新设备固件;(b)认证所述新设备固件;以及(c)响应于成功认证所述新设备固件,使得用于所述外部设备的所述设备固件被用所述新设备固件替换。示例B8还可以包括示例B7的特征。
示例B9是根据示例B6的装置,其中,所述安全固件在被执行时(a)允许所述外部设备在所述安全模块已验证所述设备固件的完整性之前进行引导以及(b)使得所述外部设备以只读模式执行,直到所述安全模块已验证用于所述外部设备的设备固件的完整性。示例B9还可以包括示例B7至B8中任何一个或多个示例的特征。
示例B10是根据示例B1的装置,其中,所述安全固件在被执行时使得所述安全模块能够(a)接收用于所述安全模块的新安全固件;(b)认证所述新安全固件;以及(c)响应于成功认证所述新安全固件,用所述新安全固件替换用于所述安全模块的所述安全固件。示例B10还可以包括示例B2至B9中任何一个或多个示例的特征。
示例B11是根据示例B1的装置,其中,所述至少一个机器可访问介质包括所述安全模块中的非易失性存储器(NVM),以及所述安全模块外部的嵌入式存储器。而且,所述安全固件驻留在所述NVM中,并且所述主机固件驻留在所述嵌入式存储器中。示例B11还可以包括示例B2至B10中的任何一个或多个示例的特征。
示例C1是一种用于保护嵌入式系统中的固件的方法。所述嵌入式系统包括安全模块和主机模块。所述方法包括:在用于所述安全模块的引导过程期间,(a)自动验证用于所述主机模块的主机固件的完整性并且(b)响应于所述主机固件已失去完整性的确定而自动阻止所述主机模块用所述主机固件进行引导。所述方法还包括:在用于所述主机模块的引导过程期间,基于批准的安全模块的秘密标识符来自动确定所述批准的安全模块是否与所述主机模块通信。
示例C2是根据示例C1的方法,还包括:响应于所述批准的安全模块未与所述主机模块通信的确定而自动阻止所述主机模块成功引导。
示例C3是根据示例C1的方法,还包括:在用于所述主机模块的所述引导过程期间,自动验证用于所述安全模块的所述安全固件的完整性。所述方法还包括:响应于所述安全固件已失去完整性的确定而自动阻止所述安全模块用所述安全固件进行引导。示例C3还可以包括示例C2的特征。
示例C4是根据示例C1的方法,还包括:(a)从所述主机模块获取所述主机模块的秘密标识符;(b)从所述安全模块中的非易失性存储获取批准的主机模块的秘密标识符;以及基于(i)来自所述主机模块的所述秘密标识符和(ii)来自所述安全模块中的所述非易失性存储的所述秘密标识符来确定所述批准的主机模块是否与所述安全模块通信。示例C4还可以包括示例C2至C3中任何一个或多个示例的特征。
示例C5是根据示例C1的方法,还包括:由所述安全模块通过执行来自由以下操作组成的组的至少一个操作来响应所述主机模块的问题:(a)使得所述主机模块重置,(b)使得诊断被在所述主机模块上执行,(c)使得诊断被在所述安全模块上执行,(d)使得所述主机模块被禁用,以及(e)使得错误指示符被呈现。示例C5还可以包括示例C2至C4中任何一个或多个示例的特征。
示例C6是根据示例C1的方法,还包括:(a)响应于由所述安全模块进行的所述主机固件已失去完整性的确定而自动用备份主机固件替换所述主机固件;以及(b)在用所述备份主机固件替换所述主机固件后,使得所述主机模块用所述备份主机固件进行引导。示例C6还可以包括示例C2至C5中任何一个或多个示例的特征。
示例C7是根据示例C1的方法,还包括:(a)在用于所述安全模块的所述引导过程期间,检查所述嵌入式系统中的用于外部设备的设备固件的完整性;以及(b)响应于所述外部设备上的所述设备固件已失去完整性的确定而自动使得所述外部设备上的所述设备固件被用备份设备固件替换。示例C7还可以包括示例C2至C6中的任何一个或多个示例的特征。
示例C8是根据示例C1的方法,还包括:(a)在所述安全模块处接收所述嵌入式系统中的用于外部设备的新设备固件;(b)认证所述新设备固件;以及(c)响应于成功认证所述新设备固件而使得用于所述外部设备的当前设备固件被用所述新设备固件替换。示例C8还可以包括示例C2至C7中任何一个或多个示例的特征。
示例D是至少一个机器可访问介质,包括用于保护嵌入式系统中的固件的计算机指令。所述计算机指令响应于在所述嵌入式系统中被执行而使得所述嵌入式系统能够执行根据示例C1至C8中任何示例的方法。
示例E是一种具有用于保护固件的技术的嵌入式系统。所述嵌入式系统包括:(a)处理元件,(b)至少一个机器可访问介质,其响应于所述处理元件,以及(c)计算机指令,其至少部分地存储在所述至少一个机器可访问介质中。所述计算机指令响应于被执行而使得所述嵌入式系统能够执行根据示例C1至C8中任何示例的方法。
示例F是一种具有用于保护固件的技术的嵌入式系统。所述嵌入式系统包括用于执行示例C1至C8中任何示例的方法的单元。
Claims (25)
1.一种具有用于固件的保护的数据处理系统,所述数据处理系统包括:
主机模块,其包括管理引擎;
安全模块,其与所述主机模块通信,其中,所述安全模块包括安全协处理器和所述安全模块的秘密标识符;
至少一个机器可访问介质,其响应于所述安全模块;
所述机器可访问介质中的主机固件,所述主机固件在由所述管理引擎在所述主机模块上执行时,使得所述管理引擎能够基于所述安全模块的所述秘密标识符来确定所述安全模块是否与所述主机模块通信;以及
所述机器可访问介质中的安全固件,所述安全固件在由所述安全协处理器在所述安全模块上执行时,使得所述安全协处理器能够(a)验证所述主机固件的完整性并且(b)响应于所述主机固件已失去完整性的确定而阻止所述主机模块用所述主机固件进行引导。
2.根据权利要求1所述的数据处理系统,其中,所述主机固件在被执行时,使得所述管理引擎能够通过阻止所述主机模块成功引导来对所述安全模块未与所述主机模块通信的确定进行响应。
3.根据权利要求1所述的数据处理系统,其中,所述主机固件在被执行时,使得所述管理引擎能够(a)验证用于所述安全模块的所述安全固件的完整性并且(b)响应于所述安全固件已失去完整性的确定而阻止所述安全模块用所述安全固件进行引导。
4.根据权利要求1所述的数据处理系统,其中:
所述主机模块包括所述主机模块的秘密标识符;
所述安全模块包括具有批准的主机模块的秘密标识符的非易失性存储;并且
所述安全固件在被执行时,使得所述安全协处理器能够(a)从所述主机模块接收所述主机模块的所述秘密标识符并且(b)基于(i)来自所述主机模块的所述秘密标识符和(ii)来自所述安全模块中的所述非易失性存储的所述秘密标识符来确定所述批准的主机模块是否与所述安全模块通信。
5.根据权利要求4所述的数据处理系统,其中:
所述数据处理系统包括至少一条通信线路,其用于支持包括所述主机模块和所述安全模块的网络;以及
所述安全固件在被执行时,使得所述安全协处理器能够通过执行来自由以下操作组成的组的至少一个操作来对所述批准的主机模块未与所述安全模块通信的确定进行响应:
使得所述主机模块重置;
使得所述主机模块被从所述网络中移除;
使得诊断被在所述主机模块上执行;
使得诊断被在所述安全模块上执行;
使得所述主机模块被禁用;以及
使得错误指示符被呈现。
6.根据权利要求1所述的数据处理系统,其中,所述安全固件在被执行时使得所述安全模块能够(a)响应于所述主机固件已失去完整性的确定而自动用备份主机固件替换所述主机固件并且(b)在用所述备份主机固件替换所述主机固件后,使得所述主机模块用所述备份主机固件进行引导。
7.根据权利要求1所述的数据处理系统,还包括:
与所述安全模块通信的至少一个外部设备;以及
用于所述外部设备的设备固件;并且
其中,所述安全固件在被执行时,使得所述安全模块能够检查用于所述外部设备的所述设备固件的完整性。
8.根据权利要求7所述的数据处理系统,其中,所述安全固件在被执行时,使得所述安全模块能够响应于用于所述外部设备的所述设备固件已失去完整性的确定而使得所述设备固件被用备份设备固件替换。
9.根据权利要求7所述的数据处理系统,其中,所述安全固件在被执行时,使得所述安全模块能够执行以下操作:
允许所述外部设备在所述安全模块已验证所述设备固件的完整性之前进行引导;以及
使得所述外部设备以只读模式执行,直到所述安全模块已验证所述设备固件的完整性。
10.根据权利要求7所述的数据处理系统,其中,所述安全固件在被执行时,使得所述安全模块能够执行以下操作:
接收用于所述外部设备的新设备固件;
认证所述新设备固件;以及
响应于成功认证所述新设备固件,使得用于所述外部设备的所述设备固件被用所述新设备固件替换。
11.根据权利要求1所述的数据处理系统,其中,所述安全固件在被执行时,使得所述安全模块能够执行以下操作:
接收新安全固件;
认证所述新安全固件;以及
响应于成功认证所述新安全固件,用所述新安全固件替换所述安全固件。
12.根据权利要求1所述的数据处理系统,其中:
所述至少一个机器可访问介质包括以下各项:
所述安全模块中的非易失性存储器(NVM);以及
所述安全模块外部的嵌入式存储器;
所述安全固件驻留在所述NVM中;并且
所述主机固件驻留在所述嵌入式存储器中。
13.根据权利要求11所述的数据处理系统,其中:
所述主机模块包括片上系统(SoC)模块;并且
所述安全协处理器包括现场可编程门阵列(FPGA)。
14.根据权利要求13所述的数据处理系统,还包括:
单个集成电路,其包括所述主机模块和所述安全模块;以及
所述单个集成电路中的至少一条通信线路,其用于实现所述主机模块与所述安全模块之间的通信。
15.一种用于保护嵌入式系统中的固件的方法,所述方法包括:
在包括安全模块和主机模块的嵌入式系统中,在用于所述安全模块的引导过程期间,(a)自动验证用于所述主机模块的主机固件的完整性并且(b)响应于所述主机固件已失去完整性的确定而自动阻止所述主机模块用所述主机固件进行引导;以及
在用于所述主机模块的引导过程期间,基于批准的安全模块的秘密标识符来自动确定所述批准的安全模块是否与所述主机模块通信。
16.根据权利要求15所述的方法,还包括:
响应于所述批准的安全模块未与所述主机模块通信的确定而自动阻止所述主机模块成功引导。
17.根据权利要求15所述的方法,还包括:
在用于所述主机模块的所述引导过程期间,自动验证用于所述安全模块的所述安全固件的完整性;以及
响应于所述安全固件已失去完整性的确定而自动阻止所述安全模块用所述安全固件进行引导。
18.根据权利要求15所述的方法,还包括:
从所述主机模块获取所述主机模块的秘密标识符;
从所述安全模块中的非易失性存储获取批准的主机模块的秘密标识符;以及
基于(i)来自所述主机模块的所述秘密标识符和(ii)来自所述安全模块中的所述非易失性存储的所述秘密标识符来确定所述批准的主机模块是否与所述安全模块通信。
19.根据权利要求15所述的方法,还包括:
由所述安全模块通过执行来自由以下操作组成的组的至少一个操作来对所述主机模块的问题进行响应:
使得所述主机模块重置;
使得诊断被在所述主机模块上执行;
使得诊断被在所述安全模块上执行;
使得所述主机模块被禁用;以及
使得错误指示符被呈现。
20.根据权利要求15所述的方法,还包括:
响应于由所述安全模块进行的对所述主机固件已失去完整性的确定而自动用备份主机固件替换所述主机固件;以及
在用所述备份主机固件替换所述主机固件后,使得所述主机模块用所述备份主机固件进行引导。
21.根据权利要求15所述的方法,还包括:
在用于所述安全模块的所述引导过程期间,检查所述嵌入式系统中的用于外部设备的设备固件的完整性;以及
响应于所述外部设备上的所述设备固件已失去完整性的确定而自动使得所述外部设备上的所述设备固件被用备份设备固件替换。
22.根据权利要求15所述的方法,还包括:
在所述安全模块处接收所述嵌入式系统中的用于外部设备的新设备固件;
认证所述新设备固件;以及
响应于成功认证所述新设备固件而使得用于所述外部设备的当前设备固件被用所述新设备固件替换。
23.至少一个机器可访问介质,包括用于保护嵌入式系统中的固件的计算机指令,其中,所述计算机指令响应于在所述嵌入式系统中被执行,使得所述嵌入式系统能够执行根据权利要求15至22中任一项所述的方法。
24.一种具有用于保护固件的技术的嵌入式系统,所述嵌入式系统包括:
处理元件;
至少一个机器可访问介质,其响应于所述处理元件;以及
计算机指令,其至少部分地存储在所述至少一个机器可访问介质中,其中,所述计算机指令响应于被执行,使得所述嵌入式系统能够执行根据权利要求15至22中任一项所述的方法。
25.一种具有用于保护固件的技术的嵌入式系统,所述嵌入式系统包括:
用于执行根据权利要求15至22中任一项所述的方法的单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/273,997 | 2016-09-23 | ||
US15/273,997 US10242197B2 (en) | 2016-09-23 | 2016-09-23 | Methods and apparatus to use a security coprocessor for firmware protection |
PCT/US2017/047390 WO2018057167A1 (en) | 2016-09-23 | 2017-08-17 | Methods and apparatus to use a security coprocessor for firmware protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109564606A CN109564606A (zh) | 2019-04-02 |
CN109564606B true CN109564606B (zh) | 2023-06-23 |
Family
ID=61686480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780049496.3A Active CN109564606B (zh) | 2016-09-23 | 2017-08-17 | 用于将安全协处理器用于固件保护的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10242197B2 (zh) |
CN (1) | CN109564606B (zh) |
DE (1) | DE112017004786T5 (zh) |
WO (1) | WO2018057167A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10374885B2 (en) | 2016-12-13 | 2019-08-06 | Amazon Technologies, Inc. | Reconfigurable server including a reconfigurable adapter device |
US10691803B2 (en) * | 2016-12-13 | 2020-06-23 | Amazon Technologies, Inc. | Secure execution environment on a server |
JP2018120422A (ja) * | 2017-01-25 | 2018-08-02 | ルネサスエレクトロニクス株式会社 | 車載通信システム、ドメインマスタ、及びファームウェア更新方法 |
US10740186B2 (en) * | 2017-05-15 | 2020-08-11 | The Boeing Company | High data integrity processing system |
US11032067B2 (en) | 2017-07-03 | 2021-06-08 | Stmicroelectronics S.R.L. | Hardware secure module, related processing system, integrated circuit, device and method |
US11108542B2 (en) * | 2017-07-07 | 2021-08-31 | Board Of Regents Of The Nevada System Of Higher Education, On Behalf Of The University Of Nevada, Reno | Multi-processor automotive electronic control unit |
DE102018205204A1 (de) * | 2018-04-06 | 2019-10-10 | Robert Bosch Gmbh | Verfahren zum Bereitstellen von Anwendungsdaten zumindest einer auf einem Steuergerät eines Fahrzeugs ausführbaren Anwendung, Verfahren zum Kalibrieren eines Steuergeräts, Steuergerät und Auswerteeinrichtung |
CN108768783B (zh) * | 2018-06-08 | 2021-10-22 | 郑州云海信息技术有限公司 | 一种循环测试网络连通性的方法及系统 |
CN110580420B (zh) * | 2018-06-11 | 2023-03-28 | 阿里巴巴集团控股有限公司 | 基于集成芯片的数据处理方法、计算机设备、存储介质 |
US11258772B2 (en) * | 2018-06-19 | 2022-02-22 | Cypress Semiconductor Corporation | Secured communication from within non-volatile memory device |
US11005662B2 (en) * | 2018-08-21 | 2021-05-11 | Ut-Battelle, Llc | Multimodal communication system |
US11106796B2 (en) * | 2018-11-07 | 2021-08-31 | Dell Products L.P. | Staging memory for accessory firmware update |
CN109656758B (zh) * | 2018-11-20 | 2022-02-22 | 中科曙光信息产业成都有限公司 | 用于异构双处理器系统芯片的调试方法及系统 |
KR20200076886A (ko) * | 2018-12-20 | 2020-06-30 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11829478B2 (en) * | 2019-01-08 | 2023-11-28 | Oracle International Corporation | Full server recovery architecture for cloud bare metal instances |
WO2020167283A1 (en) * | 2019-02-11 | 2020-08-20 | Hewlett-Packard Development Company, L.P. | Recovery from corruption |
US11977871B2 (en) * | 2019-04-15 | 2024-05-07 | Hewlett-Packard Development Company, L.P. | Image transfer |
EP3912068A4 (en) * | 2019-05-15 | 2022-08-10 | Hewlett-Packard Development Company, L.P. | UPDATE SIGNALS |
KR20210091585A (ko) * | 2020-01-14 | 2021-07-22 | 삼성전자주식회사 | 사용자 인증에 기반한 펌웨어 업데이트를 수행하는 전자 장치 및 이의 동작방법 |
JP7393226B2 (ja) * | 2020-01-29 | 2023-12-06 | キヤノン株式会社 | 情報処理装置とその起動方法 |
US11580225B2 (en) | 2020-01-29 | 2023-02-14 | Hewlett Packard Enterprise Development Lp | Determine whether to perform action on computing device based on analysis of endorsement information of a security co-processor |
US11314867B2 (en) * | 2020-03-26 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | Determinations of compromise of controller code images |
US11768611B2 (en) * | 2020-04-02 | 2023-09-26 | Axiado Corporation | Secure boot of a processing chip |
EP3937044A1 (en) * | 2020-07-06 | 2022-01-12 | Thales DIS France SA | Method for managing a biometric smart card |
CN112673656B (zh) * | 2020-08-13 | 2022-08-09 | 华为技术有限公司 | 车载网络安全通信方法、装置和设备 |
CN111950014A (zh) * | 2020-08-27 | 2020-11-17 | 英业达科技有限公司 | 服务器系统启动的安全度量方法、安全度量装置及服务器 |
US11487621B1 (en) * | 2021-04-29 | 2022-11-01 | Dell Products L.P. | Linking embedded controller with memory reference code and system bios shadowing |
US20220366087A1 (en) * | 2021-05-13 | 2022-11-17 | AO Kaspersky Lab | Systems and methods for verifying the integrity of a software installation image |
KR20220154879A (ko) * | 2021-05-14 | 2022-11-22 | 현대자동차주식회사 | 차량 제어 장치 및 방법 |
US11853428B2 (en) * | 2021-06-02 | 2023-12-26 | Microsoft Technology Licensing, Llc | Firmware policy enforcement via a security processor |
US11853429B2 (en) * | 2021-07-13 | 2023-12-26 | Microsoft Technology Licensing, Llc | Measured restart of microcontrollers |
US12074983B2 (en) * | 2021-11-09 | 2024-08-27 | Samsung Electronics Co., Ltd. | Trusted computing device and operating method thereof |
DE102021214195A1 (de) | 2021-12-13 | 2023-06-15 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Aufspielen eines Updates für ein Hardware Security Modul |
WO2024040509A1 (en) * | 2022-08-25 | 2024-02-29 | Intel Corporation | Implementation of device seamless update with pre-authorization policy in trusted execution environment |
US20240160749A1 (en) * | 2022-11-10 | 2024-05-16 | International Business Machines Corporation | Security and reliability of cloud-based systems by removing device firmware persistence |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104160403A (zh) * | 2012-09-04 | 2014-11-19 | 英特尔公司 | 使用单个可信平台模块测量平台部件 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937063A (en) * | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US9395968B1 (en) * | 2006-06-30 | 2016-07-19 | American Megatrends, Inc. | Uniquely identifying and validating computer system firmware |
JP2008141581A (ja) * | 2006-12-04 | 2008-06-19 | Fujitsu Ltd | 秘密情報アクセス認証システム及びその方法 |
US8364975B2 (en) * | 2006-12-29 | 2013-01-29 | Intel Corporation | Methods and apparatus for protecting data |
US20090327741A1 (en) * | 2008-06-30 | 2009-12-31 | Zimmer Vincent J | System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid) |
US8117435B2 (en) | 2008-06-30 | 2012-02-14 | Intel Corporation | Method and system for secured dynamic bios update |
CN102455950A (zh) * | 2010-10-28 | 2012-05-16 | 鸿富锦精密工业(深圳)有限公司 | 基板管理控制器的韧体恢复系统及方法 |
KR101859646B1 (ko) * | 2011-12-16 | 2018-05-18 | 삼성전자주식회사 | 보안 데이터를 보호하는 메모리 장치 및 보안 데이터를 이용한 데이터 보호 방법 |
US8832837B2 (en) | 2012-06-29 | 2014-09-09 | Mcafee Inc. | Preventing attacks on devices with multiple CPUs |
US9129114B2 (en) | 2012-12-03 | 2015-09-08 | Imation Corp. | Preboot environment with system security check |
CN104484200B (zh) | 2014-12-09 | 2018-05-25 | 小米科技有限责任公司 | 对固件进行升级的方法及装置 |
US9886264B2 (en) * | 2014-12-09 | 2018-02-06 | Xiaomi Inc. | Method and device for upgrading firmware |
-
2016
- 2016-09-23 US US15/273,997 patent/US10242197B2/en active Active
-
2017
- 2017-08-17 WO PCT/US2017/047390 patent/WO2018057167A1/en active Application Filing
- 2017-08-17 DE DE112017004786.2T patent/DE112017004786T5/de active Pending
- 2017-08-17 CN CN201780049496.3A patent/CN109564606B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104160403A (zh) * | 2012-09-04 | 2014-11-19 | 英特尔公司 | 使用单个可信平台模块测量平台部件 |
Non-Patent Citations (1)
Title |
---|
刘政林 ; 郭超 ; 霍文捷 ; .基于SHA-1引擎的嵌入式安全协处理器设计.华中科技大学学报(自然科学版).2011,(第08期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
WO2018057167A1 (en) | 2018-03-29 |
US10242197B2 (en) | 2019-03-26 |
DE112017004786T5 (de) | 2019-06-19 |
US20180089435A1 (en) | 2018-03-29 |
CN109564606A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564606B (zh) | 用于将安全协处理器用于固件保护的方法和装置 | |
US10839080B2 (en) | Hardware-enforced firmware security | |
CN108363347B (zh) | 用于电子控制单元的硬件安全 | |
US10353692B2 (en) | Method for updating a control unit for an automotive vehicle, control unit for an automotive vehicle, and computer program product | |
US11455397B2 (en) | Secure boot assist for devices, and related systems, methods and devices | |
US11030347B2 (en) | Protect computing device using hash based on power event | |
EP2989547B1 (en) | Repairing compromised system data in a non-volatile memory | |
CN107949847B (zh) | 车辆的电子控制单元 | |
US10803176B2 (en) | Bios security | |
US9928367B2 (en) | Runtime verification | |
CN105892348B (zh) | 用于运行控制设备的方法 | |
US11436324B2 (en) | Monitoring parameters of controllers for unauthorized modification | |
US20200233676A1 (en) | Bios management device, bios management system, bios management method, and bios management program-stored recording medium | |
EP3588354A1 (en) | Automatic verification method and system | |
WO2023179745A1 (zh) | 可信验证方法及装置 | |
US10289510B1 (en) | Intelligent platform management interface functional fuzzer | |
US12050691B2 (en) | Security processing device | |
CN112219186B (zh) | 用于将程序代码包安装到设备中的方法以及设备和机动车 | |
CN114692160A (zh) | 计算机安全可信启动的处理方法及装置 | |
WO2021071590A1 (en) | Secure installation of baseboard management controller firmware via a physical interface | |
CN113226858A (zh) | 信息处理装置 | |
US20230244789A1 (en) | Method for booting an electronic device | |
GB2592830A (en) | Electronic control units for vehicles | |
CN117874784A (zh) | 一种车辆加密系统和方法 |
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 |