CN104424441B - 处理*** - Google Patents
处理*** Download PDFInfo
- Publication number
- CN104424441B CN104424441B CN201410412509.7A CN201410412509A CN104424441B CN 104424441 B CN104424441 B CN 104424441B CN 201410412509 A CN201410412509 A CN 201410412509A CN 104424441 B CN104424441 B CN 104424441B
- Authority
- CN
- China
- Prior art keywords
- key
- effective
- memory
- firmware
- firmware code
- 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.)
- Expired - Fee Related
Links
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/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/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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
公开了一种处理***以及控制处理***的处理单元对固件代码进行访问的方法。提出基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的。根据预定的验证算法来处理固件代码,以计算固件代码的验证值。解析所述验证值和有效密钥,以确定固件代码是否是可信任的。基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。
Description
技术领域
本发明涉及处理***,更具体地,涉及处理***的处理单元对处理***存储的固件的访问进行控制。
背景技术
安全性是诸如微控制器等处理***的重要考虑因素。例如,可能需要确保处理器仅执行由可执行程序代码(或等同的指令集,例如脚本)描述的特定任务。然而代码和/或代码的执行可能遭受攻击。攻击可以包括以下示例列表中的任何一个:
所存储的程序代码的未授权修改;
执行期间的代码修改;
代码转储(例如,出于逆向工程目的来读出代码);
存储器存取特权的未授权改变;
执行来自数据段的未授权代码。
典型地,固件(例如,基本输入/输出***(BIOS)代码或核心***软件代码)操作用于识别和初始化处理***或电子设备的硬件子***和组件。因此,第三方对固件的逆向工程可以提供对采用固件集成电路的***的硬件架构的指示。此外,固件上的成功攻击(如以上所列)可以使第三方能够改变处理***的操作,阻止处理***正确操作,和/或向组件或其他***/设备发送病毒。
已知使用基于硬件的安全性来保护固件,如,将固件存储在非易失性存储器(例如,只读存储器(ROM),使得无法在存储器内修改该固件。然而这可能没有提供足够的保护来防止第三方访问固件并解析固件以用于不期望的或未授权的用途。
已知在嵌入式设备上提供已知为“安全启动(Secure Boot)”的安全性特征,试图确保处理器仅执行由设备的发布者授权的固件。所述安全启动过程采用密钥来验证固件的完整性。使用验证算法来验证固件的完整性,所述验证算法执行固件上的功能并检查该功能相对于密钥的输出。如果验证算法验证了固件的完整性,则允许处理器执行该固件。
因此,安全启动构思尝试例如在固件中没有可利用缺陷的情况下相对于在重置之前发生的被动攻击或软件攻击提供保护。为了符合安全性模型,安全启动基于硬件中的信任根(root of trust)。
传统的安全启动构思具有以下缺点:
-固件验证密钥需要更大容量的一次可编程(OTP)存储器:使用验证密钥需要更大容量的OTP存储器和/或需要使用在低成本设备中甚至在软件中不常用的密码算法。例如,示例签名可以需要2048比特密钥来被看作在接下来的二三十年中是安全的。
-存在密钥泄密的风险:即使基本密码算法很强,密钥仍然会由于例如固件更新期间的不适当保护和/或错误操纵而被泄密。因此安全启动机制的鲁棒性依赖于用于保护密钥机密性的过程的鲁棒性。如果密钥被泄密,则可能无法阻止未授权的固件被执行。
发明内容
根据本发明的实施例,提供了一种控制处理***的处理单元对处理***的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;根据预定的验证算法来处理固件代码,以计算固件代码的验证值;解析所述验证值和有效密钥,以确定固件代码是否可信任;以及基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。
因此,提出了一种控制对处理***的固件代码的访问的构思。实施例可以采用多个密钥,所述多个密钥在片上***内提供嵌入式的安全固件执行。实施例因此可以限制或防止固件代码的执行。
在实施例中,如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。因此,可以检测到泄密密钥并采取预防措施以将泄密密钥呈现为无效。
可以采用多个密钥,使得在先前密钥被泄密或超期之后可以使用新密钥。相较于采用传统安全性构思(如,安全启动)的***,这可以允许实施例长时间保持功能性和安全性。
存储器的第二区域的有效性数据可以简单地包括针对每个密钥的指示该密钥是否有效的标志或比特值。此外,存储器的第二区域可以包括一次可编程存储器,使得一旦有效性数据被修改过(例如,指示密钥不是有效的)则该有效性数据就不能再被修改。这可以帮助防止有效性数据受到未授权修改。
在实施例中,可以确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。这样,实施例可以采用解决所有密钥都被泄密的情形的构思。寿命终止算法可以例如永久性禁用处理***,使得不能再使用该处理***。
在实施例中,存储器的第一区域可以包括非易失性存储器,存储器的第二区域可以包括OTP存储器。将OTP存储器用于存储器的第二区域可以使能仅一次修改有效性数据,以允许密钥有效性从有效变为无效,此后不再改变。因此,可以使密钥无效(假定在发布之后密钥全都被标记为有效),但是然后不能在解除操作(例如,使已标记为“无效”的密钥有效)。这可以帮助确保甚至在软件攻击的情况下密钥也保持无效。
处理***的可信任处理器可以包括ROM,使得使用基于硬件的安全性来保护所述ROM以防止被修改。
根据本发明的另一构思,提供了一种计算机程序产品,用于控制处理***的处理单元对处理***的存储器所存储的固件代码的访问。所述计算机程序产品可以包括计算机可读存储介质,所述计算机可读存储介质具有体现在其上的计算机可读程序代码,所述计算机可读程序代码配置为执行根据本发明实施例的方法的所有步骤。
根据本发明的另一方面,提供了根据独立权利要求11所述的一种处理***。
***可以适用于在确定固件代码不是可信任的情况下修改第二存储区域的数据使得密钥不再有效。
在实施例中,***可以适用于确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示第一存储区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,***可以执行预定的寿命终止算法。
处理***可以是微控制器、微处理器、微芯片或处理平台。因此,处理器可以是中央处理单元(CPU)或处理器核。
提出的实施例可以采用处理***中典型存在的组件(全部通过通信总线/桥接器来连接的处理器单元或CPU、存储器和***设备)。
附图说明
现在将参考附图仅通过示例来描述本发明的优选实施例,附图中:
图1是示出了采用传统安全启动过程的处理***的存储区的示意框图;
图2是示出了根据实施例的处理***的存储区的示意框图;
图3示出了根据实施例的使密钥无效的示例;
图4是根据实施例的方法的流程图;
图5是根据另一实施例的方法的流程图;以及
图6是根据本发明实施例的***的示意框图。
具体实施方式
本文中,对固件代码的引述应当被理解为意思是永久性存储区与其中存储的程序代码和数据的组合,所述程序代码和数据例如是处理***的BIOS代码或核心***软件代码,典型地被处理***的制造商或供应商设置在非易失性存储器中。固件代码与应用代码的区别在于应用代码典型地设计用于除了由固件代码提供的功能以外还实现更高级别的或补充的功能,应用代码典型地是易失性存储区上存储的引导处理器执行特定操作的机器可读指令集(同行采用计算机程序的形式)。因此,固件代码典型地永久性存储在硬件中(具体地,存储在非易失性存储器中),而应用代码典型地存储在易失性或可编程存储器中,因此能够被修改。
另外,固件代码由硬件实现方式继承,独立于其应用。固件代码支持两种不同类型的服务:低级别服务,包括通用接口控制处理和硬件提取层(注册控制、电力管理等);以及安全私有功能,包括启动序列、对于终端用户保护的服务(例如,访问限制)以及***监督。典型地对于终端用户保护这种代码(例如以防止未授权的修改)。
相反,应用代码专用于处理***的最终使用,独立于硬件实现方案。通过重新使用底层级别的功能(固件代码的一部分)可以开发任何应用代码。
在下一节讨论低成本嵌入式设备的情况,所述低成本嵌入式设备具有单个中央处理器(或CPU)、启动只读存储(ROM)区以及一次可编程(OTP)存储区。启动ROM是初始硬件信任根。启动ROM典型地包含在重置之后马上由处理器执行的引导程序(bootstrap)软件。由于启动程序软件存储于受保护以免被修改的ROM中,可以不需要验证启动程序软件。OTP存储器的作用类似于启动ROM(例如,提供硬件信任根),但是OTP存储器是可编程的(一次),因此制造商可以配置***的选项或参数。除了OTP,设备之间不再有任何区别,因此具有相同启动ROM的所有CPU可以仅启动同一个固件。OTP存储器的种类可以取决于实际安全性模型。典型地,OTP存储器仅支持一个反向的比特编程(例如,从1到0),并且通常在OTP存储器中存在附加OTP锁定标志,所述附加OTP锁定标志防止在OTP已被编程之后在OTP中进一步写入。任何软件或硬件装置都无法解除锁定。
片上解决方案(例如,与CPU在相同管芯上或者至少在相同封装内的ROM和OTP)可以比片下解决方案(例如,分离的离散组件)提供更好的保护,但是如果仅考虑软件攻击,这两种解决方案是相同的。
现在参考图1,首先提供了对启动ROM 10中编程的传统安全启动过程的高级别描述。这种传统的安全性方法依赖于:计算固件二进制代码20的“摘要(digest)”(或认证值),然后将该摘要与OTP 30中存储的参考密钥值相比较。为了提供显著的保护,摘要函数优选地是现有技术密码单向函数(例如,所谓的密码散列函数,如,SHA-1/2/3标准),使得:(ⅰ)找到给出完全相同的摘要值的两个二进制值是极为困难的;并且(ⅱ)给出摘要值以找到在散列之后给出相同值的二进制值是极为困难的。
相较于图1描述的传统安全启动过程,提出的构思可以提供相同的灵活性,但是还可以允许在密钥泄密的情况下反应。此外,相较于传统安全启动过程,提出的构思可以仅需要容量稍大的OTP存储器。此外,提出的构思可以保持固件更新过程简单,并且可以不需要附加的软件接口。
图2是示出了根据实施例的处理***的存储区的示意框图。
提出的解决密钥泄密的构思允许多个固件签名密钥。实施例可以允许这一点,同时最小化对OTP存储器的影响。
提出在启动序列中添加另一步骤。在第一步骤中,启动ROM加载启动加载器的代码和数据,其中经由OTP中存储的散列来保护启动加载器的完整性。在第二步骤中,启动加载器加载固件的代码和数据,其中经由签名来保护固件的完整性。这种两步方法得益于基于散列的安全启动的低硬件影响和最大安全保证,同时仍然允许由基于签名的安全启动提供的灵活性。
将启动序列分成两步可能不能解决密钥泄密问题。为了解决该问题,提出在启动加载器35中采用多个签名验证密钥。这允许在认为先前密钥被泄密或无效时发布以新密钥来签名的固件代码。所有签名验证密钥的完整性可以由OTP中的散列函数来保护,因为其覆盖了整个启动加载器35代码和数据。因此,可以既无法篡改密钥,也无法在设备/***发布之后改变可信任的密钥的集合。因此,对于一些实施例,***制造商可以必须仔细选择该***终身受用的密钥的数目。然而由于启动加载器35和密钥可以存储在常规非易失性(NV)存储器中,附加密钥的成本可以是可忽略的。
当密钥被泄密时,提供了一种告知启动加载器35不使用该密钥的方式。通过针对每个密钥分派有效性比特40来实现这一点。在使用密钥来验证固件签名之前,启动加载器35首先从OTP读取针对该密钥的有效性比特40,并且仅在该有效性比特40标识为有效的情况下使用该密钥。
通过在OTP中存储有效性比特,可以使密钥无效(假定在发布之后全都标记为有效),但是然后无法解除该操作(使已经标记为“无效”的密钥有效)。这种机制的简单性可以将OTP存储器使用中的开销减小至最小。
在实施例中,当启动加载器35利用密钥存储器中的给定密钥成功验证了固件20签名20a时,启动加载器35可以在执行该固件20之前将密钥存储器中的所有先前密钥都标记为无效。因此,制造商可以容易地通过发布以密钥存储器中的下一个密钥来签名的新固件(或相同固件)来远程地使密钥无效。
注意,由于可以不更新启动加载器35代码,优选地该代码尽可能简单以便减小找到可利用缺陷的机率。此外,为了防止拒绝服务(denial-of-service)攻击,优选地在执行固件20之前,启动加载器35锁定对OTP存储器的写入访问。这样,即使某恶意软件能够通过开发获得特权访问,该恶意软件也无法篡改有效性比特40。
在优选实施例中,在运行新固件之前更新先前密钥的有效性比特。在图3中示出了这一点,图3示出了根据实施例的使密钥无效的示例。本文中,修改OTP的验证数据,使得先前密钥(密钥1)的有效性比特改变成指示该密钥无效的值(例如,逻辑0)。这可以帮助确保甚至在软件攻击的情况下密钥也是无效的。
注意,现代固件更新过程通常包括恢复机制,所述恢复机制允许在新固件没有正确启动的情况下回到先前固件。通常的实现是在存储器中保存先前固件的拷贝,如果检测到问题则启动该拷贝(当然这需要CPU重置)。提出的密钥失效机制可以干扰该机制,因为启动加载器不会再接受启动先前固件。为了不降低密钥失效机制的鲁棒性,提出在使密钥无效时使用与设备中当前加载的固件相同的固件。这仅仅在于更新设备中的签名。如果固件也必须被更新,这应当分两阶段进行:首先使用下一个密钥来更新签名(保持相同的固件二进制值),然后更新签名和固件两者。
示例实施例的方法步骤可以概括为如下:
设置
i)产生新的启动加载器代码MBL
ii)产生n个私钥/公钥对的集合pairs{SKi,PKi}(i=1…n)
iii)在启动加载器代码和密钥存储器上计算摘要HBL=HASH(MBL|PK1|…|PKn)
iv)将摘要HBL写入设备OTP,将启动加载器代码和密钥存储器MBL|PK1|…|PKn写入设备NV存储器
v)以严格的访问控制将私钥{SKi}保存在安全位置
vi)保存当前活跃私钥的索引。令current=1。
密钥泄密
如果密钥SKj泄密则执行该过程,其中j≥current。
i)令current=j+1
ii)计算固件签名SFW=SIGNSK,current(MFW)
注意,重新使用与设备中当前加载的固件相同的固件。
iii)将签名SFW写入设备NV存储器
固件写入/更新
i)产生新固件MFW
ii)计算固件签名SFW=SIGNSK,current(MFW)。
iii)将固件MFW和签名SFW写入设备NV存储器
启动加载器启动
i)重置CPU,并开始执行位于启动ROM中的程序。
ii)CPU读取(未受保护的)非易失性存储器中存储的启动加载器二进制值MBL,并使用安全的现有技术密码散列函数在该固件二进制值上计算摘要H。
h=HASH(MFW)
iii)如果h与参考摘要值HBL相同,CPU执行启动加载器。否则,CPU完全暂停直到下一次重置。
多密钥固件启动
在图4的流程图中示出了该过程。
100)过程开始,检查密钥存储器是否为空。如果密钥存储器为空,则启动加载器立即加载并执行200固件而不用验证。这允许在部署过程中部署新固件。
102)如果密钥存储器不为空,CPU加载固件并检查固件是否被签名。如果固件没有被签名,则CPU完全暂停(例如,冻结)210直到下一次重置。
104)如果固件被签名,则选择下一个密钥。
106)通过读取OTP中存储的有效性数据(例如,针对所选密钥的相关有效性比特)来获取与所选密钥的有效性相关的信息。
108)基于读取的有效性数据,确定所选密钥是否有效。
110)如果确定密钥不是有效的,则检查是否存在更多密钥。如果不存在要选择的更多密钥,则CPU完全暂停(例如,冻结)210直到下一次重置。然而,如果存在更多密钥,则方法返回104以选择下一个密钥。因此,步骤104-110在密钥存储器中找到有效密钥PKi。
112)在找到有效密钥PKi之后,CPU从NV存储器读取固件签名SFW和固件二进制值,并尝试验证固件签名
{0,1}←VERIFYPK,i(MFW,SFW)
114)基于读取验证步骤112,确定是否验证了固件签名。如果没有验证固件签名,则过程返回步骤110以确定是否可以选择另一密钥并使用所述另一密钥来进行验证。如果验证了固件签名,则方法进行至步骤116。
116)CPU修改验证数据以将所有先前密钥的有效性比特设置为“无效”(仅当i>1时),然后执行200非易失性存储器中加载的固件。
处理寿命终止(Handling end-of-life)
从以上描述可以看出,在启动加载器中采用多个签名验证密钥通过使泄密的密钥无效并切换至另一密钥而解决了密钥泄密问题。然而仍然可能存在启动加载器中的所有密钥都泄密的问题。
无法改变预定的密钥集合,优选地可以采用在所有密钥都被泄密的情形下永久性禁用***的构思。这可以称作是对***寿命终止的处理。提出了用于处理寿命终止的两个构思:
第一寿命终止构思——寿命终止固件
以上参考图3和图4描述的实施例不适于使启动加载器密钥存储器中的最后一个密钥无效。因此,提出通过在发布处理***/设备之前采用永久性准备来解决寿命终止问题(而无需对标识启动加载器过程做任何改变)。更具体地,提出的构思为启动加载器密钥存储器中的最后一个密钥赋予特殊用途。因此,相应的私钥仅使用一次以签名特殊的寿命终止固件,然后被永久性破坏。对于这样的实施例,如果制造商想要远程终止***/设备,简单地将寿命终止固件与签名一起发送至***/设备。由于密钥不再可用,不存在密钥泄密的风险,并且没有办法用另一固件来更新设备。
注意,该方法需要更新固件和验证密钥两者,这典型地优选是要避免的。然而对于这样的实施例而言这是可接受的,因为目的是无论如何要终止***/设备。
例如,寿命终止固件可以显示警告消息,所述警告消息声明不再能够使用该设备并且用户必须联系设备卖主或制造商以便更换。固件还可以删除敏感数据、向发布者主机发送确认等等。
可以如下概括采用这种寿命终止构思的示例实施例的方法步骤(其中其他过程没有改变)。
设置——寿命终止
i)产生寿命终止私钥/公钥对{SKEOL,PKEOL}
ii)产生寿命终止固件MFW,EOL
iii)计算固件签名SFW,EOL=SignSK,EOL(MFW,EOL).
iv)破坏寿命终止私钥SKEOL
v)添加寿命终止公钥作为启动加载器密钥存储器中的最后一个密钥(这是在计算启动加载器散列之前进行的)。
vi)以严格的访问控制将寿命终止签名存储在安全位置。也存储寿命终止固件,但是不需要超出防止删除和修改以外的严格访问控制。
终止设备
i)将寿命终止固件MFW,EOL和签名SFW,EOL写入设备NV存储器。
可以优选地采取一些防范以避免拒绝服务攻击。
由于可以不加密寿命终止固件和签名,因此如果恶意用户能够访问终止的设备,则该恶意用户可以容易地读取所述寿命终止固件和签名。如果该用户进行管理以将该固件发送或写入在密钥存储器中具有相同寿命终止验证密钥的其他设备,则该用户可以不经发布者同意就终止这些设备。提出的解决该问题的构思是针对每个***/设备产生唯一的寿命终止密钥对和签名。每个***/设备然后可以具有其自己的寿命终止验证密钥的版本。在产生之后,将优选地以严格的访问控制将每个设备的寿命终止签名保存在安全位置。
注意,寿命终止固件可以对于所有***/设备而言是相同的。在这种情况下,每当制造商/发布者希望终止***/设备时,将会把一般寿命终止固件与对应于该具体***/设备的寿命终止签名一起发送/写入。
第二寿命终止构思——立即寿命终止
备选构思可以采用对参考图4描述的启动加载器过程的修改。如上述第一寿命终止构思一样,第二构思为密钥存储器中的最后一个密钥赋予特殊用途。然而在该第二构思中,当启动加载器使用密钥存储器中的最后一个密钥成功验证了新固件时,将会立即使密钥存储器中的所有密钥无效,然后进入无限冻结循环。因此从不执行新固件。
在图5的流程图中描述了这种修改后的启动加载器过程。将会看出,修改后的启动加载器过程与图4所示的启动加载器过程的区别仅在于在将先前密钥标记为无效的步骤116之后包括附加步骤(步骤118和120)。
更具体地,在修改验证数据以将所有先前密钥PK1...PKi-1的有效性比特设置为“无效”(仅当i>1时)的步骤116之后,执行步骤118,在步骤118中检查密钥是否是密钥存储器中的最后一个密钥。如果在步骤118确定该密钥不适密钥存储器中的最后一个密钥,则方法简单地进行至步骤200,在步骤200执行加载到非易失性存储器中的固件。
然而如果在步骤118确定密钥是密钥存储器中的最后一个密钥,则方法进行至步骤120,在步骤120,(通过合适地修改验证数据)使密钥存储器中的所有密钥无效。在使所有密钥无效之后,方法进行至步骤210,在步骤210CPU完全暂停(例如,冻结)。
现在参考图6,示出了根据本发明实施例的处理***的示意框图。***包括与通信总线204相连的处理器单元或CPU202。还与通信总线204相连的是易失性存储器单元、非易失性存储器单元208、***设备210和ROM单元212。
本文中,ROM单元212存储:用于启动/初始化***200的固件启动代码序列;在第三方应用执行期间要保护的安全固件代码;以及服务实现方式获得的制造商内部固件。
易失性存储器包括随机存取存储器(RAM)单元206a和一次可编程存储器206b,如闪存或EEPROM。RAM单元206a用于存储在启动代码执行或应用代码执行期间由CPU 202使用的数据。一次可编程存储器206b适于存储用于验证密钥有效性的散列函数和验证数据。一次可编程存储器206b还可以存储固件代码(如果没有位于ROM单元208中的话)。
非易失性存储器208适于存储处理***200的启动加载器代码、一个或多个密钥、固件代码以及文件***。因此将理解,与传统处理***不同,图6的***200适于采用与图2所示的存储区类似的存储区,其中在非易失性存储器中存储多个密钥,在一次可编程存储器中存储表示密钥有效性的验证数据。
实施例可以在用于在例如个人计算机或网络服务器等计算机的处理器上执行的计算机程序产品中实现,如果在计算机上执行所述计算机程序产品,所述计算机程序产品使计算机实现根据实施例的方法的步骤。由于将这些步骤实现为计算机程序产品仅需要本领域技术人员的惯用技术,为了简明起见以下将不再详细论述。
在实施例中,将计算机程序产品存储在计算机可读介质中。可以考虑任意合适的计算机可读介质,例如,CD-ROM、DVD、USB棒、存储卡、网络区域存储设备、互联网可访问数据仓库等等。
通过阅读附图、说明书和所附权利要求,实践要求保护的发明的本领域技术人员可以理解并实现所公开的实施例的其他变型。在权利要求中,词语“包括”不排除其他元件或步骤,“一种”不排除多个。单个处理器或其他单元可以实现权利要求中所列若干项功能。在互不相同的从属权利要求中阐述特定的措施并不表明不能有利地使用这些措施的组合。计算机程序可以存储/分布于合适的介质上,如,与其他硬件一起或作为其他硬件的一部分提供的光学存储介质或固态介质,但是也可以以其他形式分布,如,经由互联网或其他有线或无线通讯***。权利要求中的任何参考标记不应看作是对范围的限制。
Claims (13)
1.一种控制处理***的处理单元对处理***的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:
基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;
根据预定的验证算法来处理固件代码,以计算固件代码的验证值;
解析所述验证值和有效密钥,以确定固件代码是否可信任;以及
基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问,
其中,所述方法还包括以下步骤:
如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。
2.根据权利要求1所述的方法,其中,确定有效密钥的步骤包括:
标识存储器的第一区域中存储的第一密钥;
通过查阅存储器的第二区域的有效性数据来确定第一密钥是否有效;以及
如果确定第一密钥有效,则将第一密钥标识为有效密钥。
3.根据权利要求2所述的方法,其中,确定有效密钥的步骤包括:
如果确定第一密钥不是有效的,则标识存储器的第一区域中存储的第二密钥;
通过查阅存储器的第二区域的有效性数据来确定第二密钥是否有效;以及
如果确定第二密钥有效,则将第二密钥标识为有效密钥。
4.根据权利要求3所述的方法,还包括以下步骤:
如果确定第二密钥有效,则修改存储器的第二区域的数据以指示第一密钥不是有效的。
5.根据权利要求2、3或4所述的方法,其中,有效性数据包括指示密钥是否有效的标志或比特值。
6.根据权利要求1-4中任一项所述的方法,还包括:
确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效密钥;以及
如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。
7.根据权利要求1-4中任一项所述的方法,其中,存储器的第一区域包括非易失性存储器,存储器的第二区域包括一次可编程存储器。
8.根据权利要求1-4中任一项所述的方法,还包括以下在前步骤:
将来自可信任存储器的程序代码加载到存储器的第一区域;
根据预定的认证算法处理所述程序代码以确定程序代码是否可信任;以及
基于程序代码是否被确定为可信任,控制处理单元对程序代码的访问。
9.根据权利要求8所述的方法,其中,可信任存储器包括只读存储器。
10.一种计算机可读存储介质,用于控制处理***的处理单元对处理***的存储器所存储的固件代码的访问,所述计算机可读存储介质具有体现在其上的计算机可读程序,所述计算机可读程序配置为执行前述任一项权利要求的所有步骤。
11.一种处理***,包括:
处理单元;
存储器,适用于存储固件代码,所述存储器包括适用于存储一个或多个密钥的第一存储区域以及适用于存储指示密钥是否有效的有效性数据的第二存储区域;
密钥有效性单元,适用于基于第二存储区域的有效性数据来标识第一存储区域中存储的有效密钥;
验证单元,适用于根据预定的验证算法处理固件代码以计算固件代码的验证值;
认证单元,适用于解析验证值和有效密钥以确定固件代码是否可信任;以及
访问控制单元,适用于基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问,
其中,所述***适用于在确定固件代码不是可信任情况下修改第二存储区域的数据以指示密钥不再有效。
12.根据权利要求11所述的***,其中,密钥有效性单元适用于标识第一存储区域中存储的第一密钥,以通过查阅第二存储区域的有效性数据来确定第一密钥是否有效,以及如果确定第一密钥有效,则将第一密钥标识为有效密钥;并且
密钥有效性单元还适用于如果确定第一密钥不是有效的则标识第一存储区域中存储的第二密钥,通过查阅第二存储区域的有效性数据来确定第二密钥是否有效,以及如果确定第二密钥有效,则将第二密钥标识为有效密钥。
13.根据权利要求11或12所述的***,其中,所述***适用于确定有效密钥是否是寿命终止密钥,以及如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法,其中所述寿命终止密钥指示第一存储区域中不再存储有有效密钥。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13181243.0A EP2854066B1 (en) | 2013-08-21 | 2013-08-21 | System and method for firmware integrity verification using multiple keys and OTP memory |
EP13181243.0 | 2013-08-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104424441A CN104424441A (zh) | 2015-03-18 |
CN104424441B true CN104424441B (zh) | 2018-05-18 |
Family
ID=49035363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410412509.7A Expired - Fee Related CN104424441B (zh) | 2013-08-21 | 2014-08-20 | 处理*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150058979A1 (zh) |
EP (1) | EP2854066B1 (zh) |
CN (1) | CN104424441B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195831B1 (en) * | 2014-05-02 | 2015-11-24 | Google Inc. | Verified boot |
JP2016139322A (ja) * | 2015-01-28 | 2016-08-04 | 株式会社リコー | 画像処理装置及びそれを備えた電子黒板 |
EP3454245A1 (en) * | 2017-09-12 | 2019-03-13 | Gemalto Sa | A first communication device configured to communicate using a short range wireless interface with a second communication device for unlocking a boot sequence |
US20190108009A1 (en) * | 2017-10-05 | 2019-04-11 | Harman International Industries, Incorporated | Generating checksums on trusted storage devices for accelerated authentication |
JP6773000B2 (ja) * | 2017-10-26 | 2020-10-21 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置、改ざん検出方法 |
FR3077399A1 (fr) * | 2018-01-29 | 2019-08-02 | Psa Automobiles Sa | Dispositif et procede pour eviter l’obsolescence des calculateurs a logiciel telechargeable utilisant une memoire a duree de retention limitee |
US10984107B2 (en) * | 2018-04-24 | 2021-04-20 | Mellanox Technologies, Ltd. | Secure boot |
EP3803661A1 (en) * | 2018-05-30 | 2021-04-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and intrusion manager for handling intrusion of electronic equipment |
US11151255B2 (en) * | 2018-10-26 | 2021-10-19 | Dell Products L.P. | Method to securely allow a customer to install and boot their own firmware, without compromising secure boot |
CN111160879B (zh) * | 2018-11-07 | 2023-11-03 | 新明华区块链技术(深圳)有限公司 | 一种硬件钱包及其安全性提升方法和装置 |
KR102126931B1 (ko) * | 2018-11-07 | 2020-06-25 | 시큐리티플랫폼 주식회사 | 시큐어 부팅 장치 및 방법 |
CN109445874A (zh) * | 2018-11-15 | 2019-03-08 | 济南浪潮高新科技投资发展有限公司 | 一种基于嵌入式Linux***的带安全认证的多启动***及方法 |
KR102513435B1 (ko) * | 2019-06-10 | 2023-03-23 | 구글 엘엘씨 | 펌웨어의 보안 검증 |
WO2020262347A1 (ja) * | 2019-06-27 | 2020-12-30 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置、ファームウェアの改竄防止方法及び改竄防止プログラムを記憶したコンピューター読取可能な非一時的な記録媒体 |
JP7341784B2 (ja) * | 2019-08-09 | 2023-09-11 | キオクシア株式会社 | ストレージ装置 |
US11216597B2 (en) * | 2020-05-14 | 2022-01-04 | Nuvoton Technology Corporation | Security system and method for preventing rollback attacks on silicon device firmware |
CN113708920A (zh) * | 2020-05-22 | 2021-11-26 | 华为技术有限公司 | 一种基于冗余密码算法进行安全启动的方法及设备 |
EP3933630A1 (en) * | 2020-06-30 | 2022-01-05 | Nxp B.V. | Method and apparatus to adjust system security policies based on system state |
CN111783162B (zh) * | 2020-06-30 | 2024-06-18 | 联想(北京)有限公司 | 数据保护实现方法、装置及计算机设备 |
US11269637B2 (en) * | 2020-07-23 | 2022-03-08 | Hewlett Packard Enterprise Development Lp | Validating machine-readable instructions using an iterative validation process |
KR20220026079A (ko) | 2020-08-25 | 2022-03-04 | 삼성전자주식회사 | 스토리지 장치 |
US11797680B2 (en) * | 2020-08-28 | 2023-10-24 | Micron Technology, Inc. | Device with chain of trust |
US11741232B2 (en) | 2021-02-01 | 2023-08-29 | Mellanox Technologies, Ltd. | Secure in-service firmware update |
CN113486360B (zh) * | 2021-07-14 | 2022-11-11 | 上海瓶钵信息科技有限公司 | 基于risc-v的安全启动方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1380610A (zh) * | 2001-04-09 | 2002-11-20 | 凤凰技术有限公司 | 用于计算机装置验证的***和方法 |
CN101034428A (zh) * | 2007-04-05 | 2007-09-12 | 威盛电子股份有限公司 | 应用程序保护***及方法 |
CN101286340A (zh) * | 2007-04-11 | 2008-10-15 | 讯连科技股份有限公司 | 可安全执行被加密程序的方法与*** |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5844986A (en) * | 1996-09-30 | 1998-12-01 | Intel Corporation | Secure BIOS |
US6263431B1 (en) * | 1998-12-31 | 2001-07-17 | Intle Corporation | Operating system bootstrap security mechanism |
US7213152B1 (en) * | 2000-02-14 | 2007-05-01 | Intel Corporation | Modular bios update mechanism |
US7484105B2 (en) * | 2001-08-16 | 2009-01-27 | Lenovo (Singapore) Ptd. Ltd. | Flash update using a trusted platform module |
US8041957B2 (en) * | 2003-04-08 | 2011-10-18 | Qualcomm Incorporated | Associating software with hardware using cryptography |
US7017040B2 (en) * | 2003-12-04 | 2006-03-21 | Intel Corporation | BIOS update file |
US7334117B2 (en) * | 2004-08-04 | 2008-02-19 | National Instruments Corporation | Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device |
US20060143600A1 (en) * | 2004-12-29 | 2006-06-29 | Andrew Cottrell | Secure firmware update |
US20070162964A1 (en) * | 2006-01-12 | 2007-07-12 | Wang Liang-Yun | Embedded system insuring security and integrity, and method of increasing security thereof |
US7689817B2 (en) * | 2006-11-16 | 2010-03-30 | Intel Corporation | Methods and apparatus for defeating malware |
TWI345726B (en) * | 2007-09-03 | 2011-07-21 | Giga Byte Tech Co Ltd | Methods and systems for updating image file in a bios memory |
US20090172639A1 (en) * | 2007-12-27 | 2009-07-02 | Mahesh Natu | Firmware integrity verification |
DE102008021567B4 (de) * | 2008-04-30 | 2018-03-22 | Globalfoundries Inc. | Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel |
US8332931B1 (en) * | 2008-09-04 | 2012-12-11 | Marvell International Ltd. | Processing commands according to authorization |
US20100082955A1 (en) * | 2008-09-30 | 2010-04-01 | Jasmeet Chhabra | Verification of chipset firmware updates |
US8768843B2 (en) * | 2009-01-15 | 2014-07-01 | Igt | EGM authentication mechanism using multiple key pairs at the BIOS with PKI |
US8214653B1 (en) * | 2009-09-04 | 2012-07-03 | Amazon Technologies, Inc. | Secured firmware updates |
US8296579B2 (en) * | 2009-11-06 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | System and method for updating a basic input/output system (BIOS) |
WO2011075139A1 (en) * | 2009-12-18 | 2011-06-23 | Hewlett-Packard Development Company, L.P. | Methods and devices for updating firmware of a component using a firmware update application |
WO2011119985A2 (en) * | 2010-03-26 | 2011-09-29 | Maxlinear, Inc. | Firmware authentication and deciphering for secure tv receiver |
US9021246B2 (en) * | 2011-10-28 | 2015-04-28 | GM Global Technology Operations LLC | Method to replace bootloader public key |
US8904162B2 (en) * | 2012-08-01 | 2014-12-02 | Intel Corporation | Methods and apparatus for performing secure BIOS upgrade |
KR101373574B1 (ko) * | 2012-08-31 | 2014-03-12 | 고려대학교 산학협력단 | 무인증서 기반 서명을 이용한 디바이스의 펌웨어 관리 장치 및 방법 |
KR20150008546A (ko) * | 2013-07-15 | 2015-01-23 | 삼성전자주식회사 | 보안 다운로드 및 기능 실행방법 및 장치 |
-
2013
- 2013-08-21 EP EP13181243.0A patent/EP2854066B1/en active Active
-
2014
- 2014-07-30 US US14/447,402 patent/US20150058979A1/en not_active Abandoned
- 2014-08-20 CN CN201410412509.7A patent/CN104424441B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1380610A (zh) * | 2001-04-09 | 2002-11-20 | 凤凰技术有限公司 | 用于计算机装置验证的***和方法 |
CN101034428A (zh) * | 2007-04-05 | 2007-09-12 | 威盛电子股份有限公司 | 应用程序保护***及方法 |
CN101286340A (zh) * | 2007-04-11 | 2008-10-15 | 讯连科技股份有限公司 | 可安全执行被加密程序的方法与*** |
Also Published As
Publication number | Publication date |
---|---|
EP2854066A1 (en) | 2015-04-01 |
CN104424441A (zh) | 2015-03-18 |
EP2854066B1 (en) | 2018-02-28 |
US20150058979A1 (en) | 2015-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104424441B (zh) | 处理*** | |
US11947688B2 (en) | Secure computing system | |
TWI607376B (zh) | 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法 | |
US10162975B2 (en) | Secure computing system | |
RU2385483C2 (ru) | Система и способ использования гипервизора, чтобы управлять доступом к предоставляемой в аренду вычислительной машине | |
US7313705B2 (en) | Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory | |
CN103827881B (zh) | 用于设备操作***中的动态平台安全的方法和*** | |
US20090193211A1 (en) | Software authentication for computer systems | |
EP1612666A1 (en) | System and method for protected operating systems boot using state validation | |
CN101308538B (zh) | 检查固件完整性的方法和设备 | |
TWI494785B (zh) | 用以提供系統管理命令之系統與方法 | |
US20130055335A1 (en) | Security enhancement methods and systems | |
JP2008522298A (ja) | コンピュータに信頼可能な実行環境を構築する方法 | |
TW201500960A (zh) | 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術 | |
TW200404209A (en) | Protection against memory attacks following reset | |
US20200244469A1 (en) | Method for handling data in a secure container | |
US10181956B2 (en) | Key revocation | |
CN104751063A (zh) | 一种基于实模式技术的操作***可信引导方法 | |
US20160004859A1 (en) | Method and system for platform and user application security on a device | |
CN115934194A (zh) | 一种控制器启动方法、装置、电子设备及储存介质 | |
CN112613011B (zh) | U盘***认证方法、装置、电子设备及存储介质 | |
CN112204551A (zh) | 改进的计算装置 | |
US20060259789A1 (en) | State maintenance | |
JP6079151B2 (ja) | システム設定情報更新装置、システム設定情報更新システム、システム設定情報更新方法、及び、システム設定情報更新プログラム | |
CN117827229A (zh) | 一种防止设备固件版本回滚的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180518 Termination date: 20190820 |